ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDM1YzJmODQuLjg1ZjY3MTUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtODMsMyArODMsOSBAQAogCiAjIHBrZy1jb25maWcgZmlsZQogbGlibmRuLWNwcC1kZXYucGMKKworIyB3YWYgYnVpbGQgc3lzdGVtCisud2FmLTEqCisubG9jayoKK2J1aWxkLworLndhZi10b29scy8qLnB5YwpkaWZmIC0tZ2l0IGEvLnRyYXZpcy55bWwgYi8udHJhdmlzLnltbAppbmRleCBlOWZkNjZlLi5iMTg3ZWM0IDEwMDY0NAotLS0gYS8udHJhdmlzLnltbAorKysgYi8udHJhdmlzLnltbApAQCAtOCwxNiArOCwxNCBAQAogYmVmb3JlX2luc3RhbGw6CiAgIC0gdHJhdmlzX3JldHJ5IHN1ZG8gYWRkLWFwdC1yZXBvc2l0b3J5IC15IHBwYTpuYW1lZC1kYXRhL3BwYQogICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgdXBkYXRlIC1xcQotICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgaW5zdGFsbCAtcXEgYXV0b3Rvb2xzLWRldgogICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgaW5zdGFsbCAtcXEgbmRueC1kZXYKICAgLSB0cmF2aXNfcmV0cnkgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXFxIGxpYmJvb3N0LWFsbC1kZXYKICAgLSB0cmF2aXNfcmV0cnkgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXFxIGxpYmNyeXB0bysrLWRldgogICAtIHRyYXZpc19yZXRyeSBzdWRvIGFwdC1nZXQgaW5zdGFsbCAtcXEgbGlic3FsaXRlMy1kZXYKIHNjcmlwdDoKLSAgLSBhdXRvcmVjb25mIC1mIC0taW5zdGFsbAotICAtIC4vY29uZmlndXJlIC0td2l0aC10ZXN0cwotICAtIG1ha2UKLSAgLSBzdWRvIG1ha2UgaW5zdGFsbAorICAtIC4vd2FmIGNvbmZpZ3VyZSAtLXdpdGgtdGVzdHMKKyAgLSAuL3dhZiAtajEKKyAgLSBzdWRvIC4vd2FmIGluc3RhbGwKICAgLSBzdWRvIGxkY29uZmlnCiAgIC0gIwogICAtICMgU29tZSB0ZXN0cyBub3cgcmVxdWlyZSBkYWVtb24gdG8gcnVuIChhbmQgZGFlbW9uIG5lZWRzIHRoZSBsaWJyYXJ5IHRvIGJlIGNvbXBpbGVkKQpAQCAtMzIsNCArMzAsNCBAQAogICAtIG5kbmQtdGx2LXN0YXJ0CiAgIC0gc2xlZXAgMQogICAtICMKLSAgLSAuL3Rlc3RzX2Jvb3N0L3VuaXQtdGVzdHMgLWwgYWxsCisgIC0gLi9idWlsZC90ZXN0cy91bml0LXRlc3RzIC1sIGFsbApkaWZmIC0tZ2l0IGEvLndhZi10b29scy9ib29zdC5weSBiLy53YWYtdG9vbHMvYm9vc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxNGI1YgotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvYm9vc3QucHkKQEAgLTAsMCArMSwzNzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogdXRmLTgKKyMKKyMgcGFydGlhbGx5IGJhc2VkIG9uIGJvb3N0LnB5IHdyaXR0ZW4gYnkgR2Vybm90IFZvcm1heXIKKyMgd3JpdHRlbiBieSBSdWVkaWdlciBTb25kZXJmZWxkIDxydWVkaWdlckBjLXBsdXNwbHVzLmRlPiwgMjAwOAorIyBtb2RpZmllZCBieSBCam9lcm4gTWljaGFlbHNlbiwgMjAwOAorIyBtb2RpZmllZCBieSBMdWNhIEZvc3NhdGksIDIwMDgKKyMgcmV3cml0dGVuIGZvciB3YWYgMS41LjEsIFRob21hcyBOYWd5LCAyMDA4CisjIHJld3JpdHRlbiBmb3Igd2FmIDEuNi4yLCBTeWx2YWluIFJvdXF1ZXR0ZSwgMjAxMQorCisnJycKKworVGhpcyBpcyBhbiBleHRyYSB0b29sLCBub3QgYnVuZGxlZCB3aXRoIHRoZSBkZWZhdWx0IHdhZiBiaW5hcnkuCitUbyBhZGQgdGhlIGJvb3N0IHRvb2wgdG8gdGhlIHdhZiBmaWxlOgorJCAuL3dhZi1saWdodCAtLXRvb2xzPWNvbXBhdDE1LGJvb3N0CisJb3IsIGlmIHlvdSBoYXZlIHdhZiA+PSAxLjYuMgorJCAuL3dhZiB1cGRhdGUgLS1maWxlcz1ib29zdAorCitXaGVuIHVzaW5nIHRoaXMgdG9vbCwgdGhlIHdzY3JpcHQgd2lsbCBsb29rIGxpa2U6CisKKwlkZWYgb3B0aW9ucyhvcHQpOgorCQlvcHQubG9hZCgnY29tcGlsZXJfY3h4IGJvb3N0JykKKworCWRlZiBjb25maWd1cmUoY29uZik6CisJCWNvbmYubG9hZCgnY29tcGlsZXJfY3h4IGJvb3N0JykKKwkJY29uZi5jaGVja19ib29zdChsaWI9J3N5c3RlbSBmaWxlc3lzdGVtJykKKworCWRlZiBidWlsZChibGQpOgorCQlibGQoc291cmNlPSdtYWluLmNwcCcsIHRhcmdldD0nYXBwJywgdXNlPSdCT09TVCcpCisKK09wdGlvbnMgYXJlIGdlbmVyYXRlZCwgaW4gb3JkZXIgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgYm9vc3QgaW5jbHVkZXMvbGlicmFyaWVzLgorVGhlIGBjaGVja19ib29zdGAgY29uZmlndXJhdGlvbiBmdW5jdGlvbiBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgdXNlZCBib29zdCBsaWJyYXJpZXMuCitJdCBjYW4gYWxzbyBwcm92aWRlIGRlZmF1bHQgYXJndW1lbnRzIHRvIHRoZSAtLWJvb3N0LXN0YXRpYyBhbmQgLS1ib29zdC1tdCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLgorRXZlcnl0aGluZyB3aWxsIGJlIHBhY2thZ2VkIHRvZ2V0aGVyIGluIGEgQk9PU1QgY29tcG9uZW50IHRoYXQgeW91IGNhbiB1c2UuCisKK1doZW4gdXNpbmcgTVNWQywgYSBsb3Qgb2YgY29tcGlsYXRpb24gZmxhZ3MgbmVlZCB0byBtYXRjaCB5b3VyIEJPT1NUIGJ1aWxkIGNvbmZpZ3VyYXRpb246CisgLSB5b3UgbWF5IGhhdmUgdG8gYWRkIC9FSHNjIHRvIHlvdXIgQ1hYRkxBR1Mgb3IgZGVmaW5lIGJvb3N0Ojp0aHJvd19leGNlcHRpb24gaWYgQk9PU1RfTk9fRVhDRVBUSU9OUyBpcyBkZWZpbmVkLgorICAgRXJyb3JzOiBDNDUzMAorIC0gYm9vc3QgbGlicmFyaWVzIHdpbGwgdHJ5IHRvIGJlIHNtYXJ0IGFuZCB1c2UgdGhlIChwcmV0dHkgYnV0IG9mdGVuIG5vdCB1c2VmdWwpIGF1dG8tbGlua2luZyBmZWF0dXJlIG9mIE1TVkMKKyAgIFNvIGJlZm9yZSBjYWxsaW5nIGBjb25mLmNoZWNrX2Jvb3N0YCB5b3UgbWlnaHQgd2FudCB0byBkaXNhYmxpbmcgYnkgYWRkaW5nOgorICAgCWNvbmYuZW52LkRFRklORVNfQk9PU1QgKz0gWydCT09TVF9BTExfTk9fTElCJ10KKyAgIEVycm9yczogCisgLSBib29zdCBtaWdodCBhbHNvIGJlIGNvbXBpbGVkIHdpdGggL01ULCB3aGljaCBsaW5rcyB0aGUgcnVudGltZSBzdGF0aWNhbGx5LgorICAgSWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCByZWRlZmluZWQgc3ltYm9scywgCisJCXNlbGYuZW52WydERUZJTkVTXyVzJyAlIHZhcl0gKz0gWydCT09TVF9BTExfTk9fTElCJ10KKwkJc2VsZi5lbnZbJ0NYWEZMQUdTXyVzJyAlIHZhcl0gKz0gWycvTUQnLCAnL0VIc2MnXQorUGFzc2luZyBgLS1ib29zdC1saW5rYWdlX2F1dG9kZXRlY3RgIG1pZ2h0IGhlbHAgZW5zdXJpbmcgaGF2aW5nIGEgY29ycmVjdCBsaW5rYWdlIGluIHNvbWUgYmFzaWMgY2FzZXMuCisKKycnJworCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2Zyb20gd2FmbGliIGltcG9ydCBVdGlscywgTG9ncywgRXJyb3JzCitmcm9tIHdhZmxpYi5Db25maWd1cmUgaW1wb3J0IGNvbmYKKworQk9PU1RfTElCUyA9IFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInLCAnL29wdC9sb2NhbC9saWInLCAnL3N3L2xpYicsICcvbGliJywgJy91c3IvbGliL3g4Nl82NC1saW51eC1nbnUnLCAnL3Vzci9saWIvaTM4Ni1saW51eC1nbnUnLCAnL3Vzci9sb2NhbC9uZG4vbGliJ10KK0JPT1NUX0lOQ0xVREVTID0gWycvdXNyL2luY2x1ZGUnLCAnL3Vzci9sb2NhbC9pbmNsdWRlJywgJy9vcHQvbG9jYWwvaW5jbHVkZScsICcvc3cvaW5jbHVkZScsICcvdXNyL2xvY2FsL25kbi9pbmNsdWRlJ10KK0JPT1NUX1ZFUlNJT05fRklMRSA9ICdib29zdC92ZXJzaW9uLmhwcCcKK0JPT1NUX1ZFUlNJT05fQ09ERSA9ICcnJworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPGJvb3N0L3ZlcnNpb24uaHBwPgoraW50IG1haW4oKSB7IHN0ZDo6Y291dCA8PCBCT09TVF9MSUJfVkVSU0lPTiA8PCBzdGQ6OmVuZGw7IH0KKycnJworCisjIHRvb2xzZXRzIGZyb20ge2Jvb3N0X2Rpcn0vdG9vbHMvYnVpbGQvdjIvdG9vbHMvY29tbW9uLmphbQorUExBVEZPUk0gPSBVdGlscy51bnZlcnNpb25lZF9zeXNfcGxhdGZvcm0oKQorZGV0ZWN0X2ludGVsID0gbGFtYmRhIGVudjogKFBMQVRGT1JNID09ICd3aW4zMicpIGFuZCAnaXcnIG9yICdpbCcKK2RldGVjdF9jbGFuZyA9IGxhbWJkYSBlbnY6IChQTEFURk9STSA9PSAnZGFyd2luJykgYW5kICdjbGFuZy1kYXJ3aW4nIG9yICdjbGFuZycKK2RldGVjdF9taW5ndyA9IGxhbWJkYSBlbnY6IChyZS5zZWFyY2goJ01pbkdXJywgZW52LkNYWFswXSkpIGFuZCAnbWd3JyBvciAnZ2NjJworQk9PU1RfVE9PTFNFVFMgPSB7CisJJ2JvcmxhbmQnOiAgJ2JjYicsCisJJ2NsYW5nJzoJZGV0ZWN0X2NsYW5nLAorCSdjb21vJzoJICdjb21vJywKKwknY3cnOgkgICAnY3cnLAorCSdkYXJ3aW4nOiAgICd4Z2NjJywKKwknZWRnJzoJICAnZWRnJywKKwknZysrJzoJICBkZXRlY3RfbWluZ3csCisJJ2djYyc6CSAgZGV0ZWN0X21pbmd3LAorCSdpY3BjJzoJIGRldGVjdF9pbnRlbCwKKwknaW50ZWwnOglkZXRlY3RfaW50ZWwsCisJJ2tjYyc6CSAgJ2tjYycsCisJJ2t5bGl4JzoJJ2JjaycsCisJJ21pcHNwcm8nOiAgJ21wJywKKwknbWluZ3cnOgknbWd3JywKKwknbXN2Yyc6CSAndmMnLAorCSdxY2MnOgkgICdxY2MnLAorCSdzdW4nOgkgICdzdycsCisJJ3N1bmMrKyc6ICAgJ3N3JywKKwkndHJ1NjRjeHgnOiAndHJ1JywKKwkndmFjcHAnOgkneGxjJworfQorCisKK2RlZiBvcHRpb25zKG9wdCk6CisgICAgICAgIG9wdCA9IG9wdC5hZGRfb3B0aW9uX2dyb3VwKCdCb29zdCBPcHRpb25zJykKKyAgICAKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1pbmNsdWRlcycsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfaW5jbHVkZXMnLAorCQkJCSAgIGhlbHA9JycncGF0aCB0byB0aGUgYm9vc3QgaW5jbHVkZXMgcm9vdCAofmJvb3N0IHJvb3QpCisJCQkJICAgZS5nLiAvcGF0aC90by9ib29zdF8xXzQ3XzAnJycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtbGlicycsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfbGlicycsCisJCQkJICAgaGVscD0nJydwYXRoIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGJvb3N0IGxpYnMgYXJlCisJCQkJICAgZS5nLiAvcGF0aC90by9ib29zdF8xXzQ3XzAvc3RhZ2UvbGliJycnKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LXN0YXRpYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisJCQkJICAgZGVmYXVsdD1GYWxzZSwgZGVzdD0nYm9vc3Rfc3RhdGljJywKKwkJCQkgICBoZWxwPSdsaW5rIHdpdGggc3RhdGljIGJvb3N0IGxpYnJhcmllcyAoLmxpYi8uYSknKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LW10JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKwkJCQkgICBkZWZhdWx0PUZhbHNlLCBkZXN0PSdib29zdF9tdCcsCisJCQkJICAgaGVscD0nc2VsZWN0IG11bHRpLXRocmVhZGVkIGxpYnJhcmllcycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtYWJpJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfYWJpJywKKwkJCQkgICBoZWxwPScnJ3NlbGVjdCBsaWJyYXJpZXMgd2l0aCB0YWdzIChkZ3N5cCwgZCBmb3IgZGVidWcpLAorCQkJCSAgIHNlZSBkb2MgQm9vc3QsIEdldHRpbmcgU3RhcnRlZCwgY2hhcHRlciA2LjEnJycpCisJb3B0LmFkZF9vcHRpb24oJy0tYm9vc3QtbGlua2FnZV9hdXRvZGV0ZWN0JywgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nYm9vc3RfbGlua2FnZV9hdXRvZGV0ZWN0JywKKwkJCQkgICBoZWxwPSJhdXRvLWRldGVjdCBib29zdCBsaW5rYWdlIG9wdGlvbnMgKGRvbid0IGdldCB1c2VkIHRvIGl0IC8gbWlnaHQgYnJlYWsgb3RoZXIgc3R1ZmYpIikKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC10b29sc2V0JywgdHlwZT0nc3RyaW5nJywKKwkJCQkgICBkZWZhdWx0PScnLCBkZXN0PSdib29zdF90b29sc2V0JywKKwkJCQkgICBoZWxwPSdmb3JjZSBhIHRvb2xzZXQgZS5nLiBtc3ZjLCB2YzkwLCBcCisJCQkJCQlnY2MsIG1pbmd3LCBtZ3c0NSAoZGVmYXVsdDogYXV0byknKQorCXB5X3ZlcnNpb24gPSAnJWQlZCcgJSAoc3lzLnZlcnNpb25faW5mb1swXSwgc3lzLnZlcnNpb25faW5mb1sxXSkKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1weXRob24nLCB0eXBlPSdzdHJpbmcnLAorCQkJCSAgIGRlZmF1bHQ9cHlfdmVyc2lvbiwgZGVzdD0nYm9vc3RfcHl0aG9uJywKKwkJCQkgICBoZWxwPSdzZWxlY3QgdGhlIGxpYiBweXRob24gd2l0aCB0aGlzIHZlcnNpb24gXAorCQkJCQkJKGRlZmF1bHQ6ICVzKScgJSBweV92ZXJzaW9uKQorCisKK0Bjb25mCitkZWYgX19ib29zdF9nZXRfdmVyc2lvbl9maWxlKHNlbGYsIGQpOgorCWRub2RlID0gc2VsZi5yb290LmZpbmRfZGlyKGQpCisJaWYgZG5vZGU6CisJCXJldHVybiBkbm9kZS5maW5kX25vZGUoQk9PU1RfVkVSU0lPTl9GSUxFKQorCXJldHVybiBOb25lCisKK0Bjb25mCitkZWYgYm9vc3RfZ2V0X3ZlcnNpb24oc2VsZiwgZCk6CisJIiIic2lsZW50bHkgcmV0cmlldmUgdGhlIGJvb3N0IHZlcnNpb24gbnVtYmVyIiIiCisJbm9kZSA9IHNlbGYuX19ib29zdF9nZXRfdmVyc2lvbl9maWxlKGQpCisJaWYgbm9kZToKKwkJdHJ5OgorCQkJdHh0ID0gbm9kZS5yZWFkKCkKKwkJZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKToKKwkJCUxvZ3MuZXJyb3IoIkNvdWxkIG5vdCByZWFkIHRoZSBmaWxlICVyIiAlIG5vZGUuYWJzcGF0aCgpKQorCQllbHNlOgorCQkJcmVfYnV0ID0gcmUuY29tcGlsZSgnXiNkZWZpbmVcXHMrQk9PU1RfTElCX1ZFUlNJT05cXHMrIiguKikiJywgcmUuTSkKKwkJCW0gPSByZV9idXQuc2VhcmNoKHR4dCkKKwkJCWlmIG06CisJCQkJcmV0dXJuIG0uZ3JvdXAoMSkKKwlyZXR1cm4gc2VsZi5jaGVja19jeHgoZnJhZ21lbnQ9Qk9PU1RfVkVSU0lPTl9DT0RFLCBpbmNsdWRlcz1bZF0sIGV4ZWN1dGU9VHJ1ZSwgZGVmaW5lX3JldD1UcnVlKQorCitAY29uZgorZGVmIGJvb3N0X2dldF9pbmNsdWRlcyhzZWxmLCAqaywgKiprdyk6CisJaW5jbHVkZXMgPSBrIGFuZCBrWzBdIG9yIGt3LmdldCgnaW5jbHVkZXMnLCBOb25lKQorCWlmIGluY2x1ZGVzIGFuZCBzZWxmLl9fYm9vc3RfZ2V0X3ZlcnNpb25fZmlsZShpbmNsdWRlcyk6CisJCXJldHVybiBpbmNsdWRlcworCWZvciBkIGluIFV0aWxzLnRvX2xpc3Qoc2VsZi5lbnZpcm9uLmdldCgnSU5DTFVERScsICcnKSkgKyBCT09TVF9JTkNMVURFUzoKKwkJaWYgc2VsZi5fX2Jvb3N0X2dldF92ZXJzaW9uX2ZpbGUoZCk6CisJCQlyZXR1cm4gZAorCWlmIGluY2x1ZGVzOgorCQlzZWxmLmVuZF9tc2coJ2hlYWRlcnMgbm90IGZvdW5kIGluICVzJyAlIGluY2x1ZGVzKQorCQlzZWxmLmZhdGFsKCdUaGUgY29uZmlndXJhdGlvbiBmYWlsZWQnKQorCWVsc2U6CisJCXNlbGYuZW5kX21zZygnaGVhZGVycyBub3QgZm91bmQsIHBsZWFzZSBwcm92aWRlIGEgLS1ib29zdC1pbmNsdWRlcyBhcmd1bWVudCAoc2VlIGhlbHApJykKKwkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKworCitAY29uZgorZGVmIGJvb3N0X2dldF90b29sc2V0KHNlbGYsIGNjKToKKwl0b29sc2V0ID0gY2MKKwlpZiBub3QgY2M6CisJCWJ1aWxkX3BsYXRmb3JtID0gVXRpbHMudW52ZXJzaW9uZWRfc3lzX3BsYXRmb3JtKCkKKwkJaWYgYnVpbGRfcGxhdGZvcm0gaW4gQk9PU1RfVE9PTFNFVFM6CisJCQljYyA9IGJ1aWxkX3BsYXRmb3JtCisJCWVsc2U6CisJCQljYyA9IHNlbGYuZW52LkNYWF9OQU1FCisJaWYgY2MgaW4gQk9PU1RfVE9PTFNFVFM6CisJCXRvb2xzZXQgPSBCT09TVF9UT09MU0VUU1tjY10KKwlyZXR1cm4gaXNpbnN0YW5jZSh0b29sc2V0LCBzdHIpIGFuZCB0b29sc2V0IG9yIHRvb2xzZXQoc2VsZi5lbnYpCisKKworQGNvbmYKK2RlZiBfX2Jvb3N0X2dldF9saWJzX3BhdGgoc2VsZiwgKmssICoqa3cpOgorCScnJyByZXR1cm4gdGhlIGxpYiBwYXRoIGFuZCBhbGwgdGhlIGZpbGVzIGluIGl0ICcnJworCWlmICdmaWxlcycgaW4ga3c6CisJCXJldHVybiBzZWxmLnJvb3QuZmluZF9kaXIoJy4nKSwgVXRpbHMudG9fbGlzdChrd1snZmlsZXMnXSkKKwlsaWJzID0gayBhbmQga1swXSBvciBrdy5nZXQoJ2xpYnMnLCBOb25lKQorCWlmIGxpYnM6CisJCXBhdGggPSBzZWxmLnJvb3QuZmluZF9kaXIobGlicykKKwkJZmlsZXMgPSBwYXRoLmFudF9nbG9iKCcqYm9vc3RfKicpCisJaWYgbm90IGxpYnMgb3Igbm90IGZpbGVzOgorCQlmb3IgZCBpbiBVdGlscy50b19saXN0KHNlbGYuZW52aXJvbi5nZXQoJ0xJQicsIFtdKSkgKyBCT09TVF9MSUJTOgorCQkJcGF0aCA9IHNlbGYucm9vdC5maW5kX2RpcihkKQorCQkJaWYgcGF0aDoKKwkJCQlmaWxlcyA9IHBhdGguYW50X2dsb2IoJypib29zdF8qJykKKwkJCQlpZiBmaWxlczoKKwkJCQkJYnJlYWsKKwkJCXBhdGggPSBzZWxmLnJvb3QuZmluZF9kaXIoZCArICc2NCcpCisJCQlpZiBwYXRoOgorCQkJCWZpbGVzID0gcGF0aC5hbnRfZ2xvYignKmJvb3N0XyonKQorCQkJCWlmIGZpbGVzOgorCQkJCQlicmVhaworCWlmIG5vdCBwYXRoOgorCQlpZiBsaWJzOgorCQkJc2VsZi5lbmRfbXNnKCdsaWJzIG5vdCBmb3VuZCBpbiAlcycgJSBsaWJzKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygnbGlicyBub3QgZm91bmQsIHBsZWFzZSBwcm92aWRlIGEgLS1ib29zdC1saWJzIGFyZ3VtZW50IChzZWUgaGVscCknKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKworCXNlbGYudG9fbG9nKCdGb3VuZCB0aGUgYm9vc3QgcGF0aCBpbiAlciB3aXRoIHRoZSBsaWJyYXJpZXM6JyAlIHBhdGgpCisJZm9yIHggaW4gZmlsZXM6CisJCXNlbGYudG9fbG9nKCcgICAgJXInICUgeCkKKwlyZXR1cm4gcGF0aCwgZmlsZXMKKworQGNvbmYKK2RlZiBib29zdF9nZXRfbGlicyhzZWxmLCAqaywgKiprdyk6CisJJycnCisJcmV0dXJuIHRoZSBsaWIgcGF0aCBhbmQgdGhlIHJlcXVpcmVkIGxpYnMKKwlhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMKKwknJycKKwlwYXRoLCBmaWxlcyA9IHNlbGYuX19ib29zdF9nZXRfbGlic19wYXRoKCoqa3cpCisJdCA9IFtdCisJaWYga3cuZ2V0KCdtdCcsIEZhbHNlKToKKwkJdC5hcHBlbmQoJ210JykKKwlpZiBrdy5nZXQoJ2FiaScsIE5vbmUpOgorCQl0LmFwcGVuZChrd1snYWJpJ10pCisJdGFncyA9IHQgYW5kICcoLSVzKSsnICUgJy0nLmpvaW4odCkgb3IgJycKKwl0b29sc2V0ID0gc2VsZi5ib29zdF9nZXRfdG9vbHNldChrdy5nZXQoJ3Rvb2xzZXQnLCAnJykpCisJdG9vbHNldF9wYXQgPSAnKC0lc1swLTldezAsM30pKycgJSB0b29sc2V0CisJdmVyc2lvbiA9ICcoLSVzKSsnICUgc2VsZi5lbnYuQk9PU1RfVkVSU0lPTgorCisJZGVmIGZpbmRfbGliKHJlX2xpYiwgZmlsZXMpOgorCQlmb3IgZmlsZSBpbiBmaWxlczoKKwkJCWlmIHJlX2xpYi5zZWFyY2goZmlsZS5uYW1lKToKKwkJCQlzZWxmLnRvX2xvZygnRm91bmQgYm9vc3QgbGliICVzJyAlIGZpbGUpCisJCQkJcmV0dXJuIGZpbGUKKwkJcmV0dXJuIE5vbmUKKworCWRlZiBmb3JtYXRfbGliX25hbWUobmFtZSk6CisJCWlmIG5hbWUuc3RhcnRzd2l0aCgnbGliJykgYW5kIHNlbGYuZW52LkNDX05BTUUgIT0gJ21zdmMnOgorCQkJbmFtZSA9IG5hbWVbMzpdCisJCXJldHVybiBuYW1lWzpuYW1lLnJmaW5kKCcuJyldCisKKwlsaWJzID0gW10KKwlmb3IgbGliIGluIFV0aWxzLnRvX2xpc3QoayBhbmQga1swXSBvciBrdy5nZXQoJ2xpYicsIE5vbmUpKToKKwkJcHkgPSAobGliID09ICdweXRob24nKSBhbmQgJygtcHklcykrJyAlIGt3WydweXRob24nXSBvciAnJworCQkjIFRyeWluZyBsaWJyYXJpZXMsIGZyb20gbW9zdCBzdHJpY3QgbWF0Y2ggdG8gbGVhc3Qgb25lCisJCWZvciBwYXR0ZXJuIGluIFsnYm9vc3RfJXMlcyVzJXMlcycgJSAobGliLCB0b29sc2V0X3BhdCwgdGFncywgcHksIHZlcnNpb24pLAorCQkJCQkJJ2Jvb3N0XyVzJXMlcyVzJyAlIChsaWIsIHRhZ3MsIHB5LCB2ZXJzaW9uKSwKKwkJCQkJCSdib29zdF8lcyVzJXMnICUgKGxpYiwgdGFncywgdmVyc2lvbiksCisJCQkJCQkjIEdpdmUgdXAgdHJ5aW5nIHRvIGZpbmQgdGhlIHJpZ2h0IHZlcnNpb24KKwkJCQkJCSdib29zdF8lcyVzJXMlcycgJSAobGliLCB0b29sc2V0X3BhdCwgdGFncywgcHkpLAorCQkJCQkJJ2Jvb3N0XyVzJXMlcycgJSAobGliLCB0YWdzLCBweSksCisJCQkJCQknYm9vc3RfJXMlcycgJSAobGliLCB0YWdzKV06CisJCQlzZWxmLnRvX2xvZygnVHJ5aW5nIHBhdHRlcm4gJXMnICUgcGF0dGVybikKKwkJCWZpbGUgPSBmaW5kX2xpYihyZS5jb21waWxlKHBhdHRlcm4pLCBmaWxlcykKKwkJCWlmIGZpbGU6CisJCQkJbGlicy5hcHBlbmQoZm9ybWF0X2xpYl9uYW1lKGZpbGUubmFtZSkpCisJCQkJYnJlYWsKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygnbGliICVzIG5vdCBmb3VuZCBpbiAlcycgJSAobGliLCBwYXRoLmFic3BhdGgoKSkpCisJCQlzZWxmLmZhdGFsKCdUaGUgY29uZmlndXJhdGlvbiBmYWlsZWQnKQorCisJcmV0dXJuIHBhdGguYWJzcGF0aCgpLCBsaWJzCisKKworQGNvbmYKK2RlZiBjaGVja19ib29zdChzZWxmLCAqaywgKiprdyk6CisJIiIiCisJSW5pdGlhbGl6ZSBib29zdCBsaWJyYXJpZXMgdG8gYmUgdXNlZC4KKworCUtleXdvcmRzOiB5b3UgY2FuIHBhc3MgdGhlIHNhbWUgcGFyYW1ldGVycyBhcyB3aXRoIHRoZSBjb21tYW5kIGxpbmUgKHdpdGhvdXQgIi0tYm9vc3QtIikuCisJTm90ZSB0aGF0IHRoZSBjb21tYW5kIGxpbmUgaGFzIHRoZSBwcmlvcml0eSwgYW5kIHNob3VsZCBwcmVmZXJhYmx5IGJlIHVzZWQuCisJIiIiCisJaWYgbm90IHNlbGYuZW52WydDWFgnXToKKwkJc2VsZi5mYXRhbCgnbG9hZCBhIGMrKyBjb21waWxlciBmaXJzdCwgY29uZi5sb2FkKCJjb21waWxlcl9jeHgiKScpCisKKwlwYXJhbXMgPSB7J2xpYic6IGsgYW5kIGtbMF0gb3Iga3cuZ2V0KCdsaWInLCBOb25lKX0KKwlmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLm9wdGlvbnMuX19kaWN0X18uaXRlbXMoKToKKwkJaWYgbm90IGtleS5zdGFydHN3aXRoKCdib29zdF8nKToKKwkJCWNvbnRpbnVlCisJCWtleSA9IGtleVtsZW4oJ2Jvb3N0XycpOl0KKwkJcGFyYW1zW2tleV0gPSB2YWx1ZSBhbmQgdmFsdWUgb3Iga3cuZ2V0KGtleSwgJycpCisKKwl2YXIgPSBrdy5nZXQoJ3VzZWxpYl9zdG9yZScsICdCT09TVCcpCisKKwlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYm9vc3QgaW5jbHVkZXMnKQorCXNlbGYuZW52WydJTkNMVURFU18lcycgJSB2YXJdID0gaW5jID0gc2VsZi5ib29zdF9nZXRfaW5jbHVkZXMoKipwYXJhbXMpCisJc2VsZi5lbnYuQk9PU1RfVkVSU0lPTiA9IHNlbGYuYm9vc3RfZ2V0X3ZlcnNpb24oaW5jKQorCXNlbGYuZW5kX21zZyhzZWxmLmVudi5CT09TVF9WRVJTSU9OKQorCWlmIExvZ3MudmVyYm9zZToKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCAnCXBhdGggOiAlcycgJSBzZWxmLmVudlsnSU5DTFVERVNfJXMnICUgdmFyXSkKKworCWlmIG5vdCBwYXJhbXNbJ2xpYiddOgorCQlyZXR1cm4KKwlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYm9vc3QgbGlicycpCisJc3VmZml4ID0gcGFyYW1zLmdldCgnc3RhdGljJywgTm9uZSkgYW5kICdTVCcgb3IgJycKKwlwYXRoLCBsaWJzID0gc2VsZi5ib29zdF9nZXRfbGlicygqKnBhcmFtcykKKwlzZWxmLmVudlsnJXNMSUJQQVRIXyVzJyAlIChzdWZmaXgsIHZhcildID0gW3BhdGhdCisJc2VsZi5lbnZbJyVzTElCXyVzJyAlIChzdWZmaXgsIHZhcildID0gbGlicworCXNlbGYuZW5kX21zZygnb2snKQorCWlmIExvZ3MudmVyYm9zZToKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCAnCXBhdGggOiAlcycgJSBwYXRoKQorCQlMb2dzLnBwcmludCgnQ1lBTicsICcJbGlicyA6ICVzJyAlIGxpYnMpCisKKworCWRlZiB0cnlfbGluaygpOgorCQlpZiAnc3lzdGVtJyBpbiBwYXJhbXNbJ2xpYiddOgorCQkJc2VsZi5jaGVja19jeHgoCisJCQkgZnJhZ21lbnQ9IlxuIi5qb2luKFsKKwkJCSAgJyNpbmNsdWRlIDxib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+JywKKwkJCSAgJ2ludCBtYWluKCkgeyBib29zdDo6c3lzdGVtOjplcnJvcl9jb2RlIGM7IH0nLAorCQkJIF0pLAorCQkJIHVzZT12YXIsCisJCQkgZXhlY3V0ZT1GYWxzZSwKKwkJCSkKKwkJaWYgJ3RocmVhZCcgaW4gcGFyYW1zWydsaWInXToKKwkJCXNlbGYuY2hlY2tfY3h4KAorCQkJIGZyYWdtZW50PSJcbiIuam9pbihbCisJCQkgICcjaW5jbHVkZSA8Ym9vc3QvdGhyZWFkLmhwcD4nLAorCQkJICAnaW50IG1haW4oKSB7IGJvb3N0Ojp0aHJlYWQgdDsgfScsCisJCQkgXSksCisJCQkgdXNlPXZhciwKKwkJCSBleGVjdXRlPUZhbHNlLAorCQkJKQorCisJaWYgcGFyYW1zLmdldCgnbGlua2FnZV9hdXRvZGV0ZWN0JywgRmFsc2UpOgorCQlzZWxmLnN0YXJ0X21zZygiQXR0ZW1wdGluZyB0byBkZXRlY3QgYm9vc3QgbGlua2FnZSBmbGFncyIpCisJCXRvb2xzZXQgPSBzZWxmLmJvb3N0X2dldF90b29sc2V0KGt3LmdldCgndG9vbHNldCcsICcnKSkKKwkJaWYgdG9vbHNldCBpbiBbJ3ZjJ106CisJCQkjIGRpc2FibGUgYXV0by1saW5raW5nIGZlYXR1cmUsIGNhdXNpbmcgZXJyb3IgTE5LMTE4MQorCQkJIyBiZWNhdXNlIHRoZSBjb2RlIHdhbnRzIHRvIGJlIGxpbmtlZCBhZ2FpbnN0CisJCQlzZWxmLmVudlsnREVGSU5FU18lcycgJSB2YXJdICs9IFsnQk9PU1RfQUxMX05PX0xJQiddCisKKwkJCSMgaWYgbm8gZGxscyBhcmUgcHJlc2VudCwgd2UgZ3Vlc3MgdGhlIC5saWIgZmlsZXMgYXJlIG5vdCBzdHVicworCQkJaGFzX2RsbHMgPSBGYWxzZQorCQkJZm9yIHggaW4gVXRpbHMubGlzdGRpcihwYXRoKToKKwkJCQlpZiB4LmVuZHN3aXRoKHNlbGYuZW52LmN4eHNobGliX1BBVFRFUk4gJSAnJyk6CisJCQkJCWhhc19kbGxzID0gVHJ1ZQorCQkJCQlicmVhaworCQkJaWYgbm90IGhhc19kbGxzOgorCQkJCXNlbGYuZW52WydTVExJQlBBVEhfJXMnICUgdmFyXSA9IFtwYXRoXQorCQkJCXNlbGYuZW52WydTVExJQl8lcycgJSB2YXJdID0gbGlicworCQkJCWRlbCBzZWxmLmVudlsnTElCXyVzJyAlIHZhcl0KKwkJCQlkZWwgc2VsZi5lbnZbJ0xJQlBBVEhfJXMnICUgdmFyXQorCisJCQkjIHdlIGF0dGVtcHQgdG8gcGxheSB3aXRoIHNvbWUga25vd24tdG8td29yayBDWFhGTEFHUyBjb21iaW5hdGlvbnMKKwkJCWZvciBjeHhmbGFncyBpbiAoWycvTUQnLCAnL0VIc2MnXSwgW10pOgorCQkJCXNlbGYuZW52LnN0YXNoKCkKKwkJCQlzZWxmLmVudlsiQ1hYRkxBR1NfJXMiICUgdmFyXSArPSBjeHhmbGFncworCQkJCXRyeToKKwkJCQkJdHJ5X2xpbmsoKQorCQkJCQlzZWxmLmVuZF9tc2coIm9rOiB3aW5uaW5nIGN4eGZsYWdzIGNvbWJpbmF0aW9uOiAlcyIgJSAoc2VsZi5lbnZbIkNYWEZMQUdTXyVzIiAlIHZhcl0pKQorCQkJCQllID0gTm9uZQorCQkJCQlicmVhaworCQkJCWV4Y2VwdCBFcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yIGFzIGV4YzoKKwkJCQkJc2VsZi5lbnYucmV2ZXJ0KCkKKwkJCQkJZSA9IGV4YworCisJCQlpZiBlIGlzIG5vdCBOb25lOgorCQkJCXNlbGYuZW5kX21zZygiQ291bGQgbm90IGF1dG8tZGV0ZWN0IGJvb3N0IGxpbmtpbmcgZmxhZ3MgY29tYmluYXRpb24sIHlvdSBtYXkgcmVwb3J0IGl0IHRvIGJvb3N0LnB5IGF1dGhvciIsIGV4PWUpCisJCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJZWxzZToKKwkJCXNlbGYuZW5kX21zZygiQm9vc3QgbGlua2FnZSBmbGFncyBhdXRvLWRldGVjdGlvbiBub3QgaW1wbGVtZW50ZWQgKG5lZWRlZCA/KSBmb3IgdGhpcyB0b29sY2hhaW4iKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwllbHNlOgorCQlzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgZm9yIGJvb3N0IGxpbmthZ2UnKQorCQl0cnk6CisJCQl0cnlfbGluaygpCisJCWV4Y2VwdCBFcnJvcnMuQ29uZmlndXJhdGlvbkVycm9yIGFzIGU6CisJCQlzZWxmLmVuZF9tc2coIkNvdWxkIG5vdCBsaW5rIGFnYWluc3QgYm9vc3QgbGlicmFyaWVzIHVzaW5nIHN1cHBsaWVkIG9wdGlvbnMiKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwkJc2VsZi5lbmRfbXNnKCdvaycpCisKZGlmZiAtLWdpdCBhLy53YWYtdG9vbHMvY3J5cHRvcHAucHkgYi8ud2FmLXRvb2xzL2NyeXB0b3BwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNTMyNmIKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL2NyeXB0b3BwLnB5CkBAIC0wLDAgKzEsNzcgQEAKKyMhIC91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IHV0Zi04CisKKycnJworCitXaGVuIHVzaW5nIHRoaXMgdG9vbCwgdGhlIHdzY3JpcHQgd2lsbCBsb29rIGxpa2U6CisKKwlkZWYgb3B0aW9ucyhvcHQpOgorCSAgICAgICAgb3B0LnRvb2xfb3B0aW9ucygnY3J5cHRvcHAnLCB0b29sZGlyPVsid2FmLXRvb2xzIl0pCisKKwlkZWYgY29uZmlndXJlKGNvbmYpOgorCQljb25mLmxvYWQoJ2NvbXBpbGVyX2N4eCBjcnlwdG9wcCcpCisKKwlkZWYgYnVpbGQoYmxkKToKKwkJYmxkKHNvdXJjZT0nbWFpbi5jcHAnLCB0YXJnZXQ9J2FwcCcsIHVzZT0nQ1JZUFRPUFAnKQorCitPcHRpb25zIGFyZSBnZW5lcmF0ZWQsIGluIG9yZGVyIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIGNyeXB0b3BwIGluY2x1ZGVzL2xpYnJhcmllcy4KKworCisnJycKK2ltcG9ydCBzeXMKK2ltcG9ydCByZQorZnJvbSB3YWZsaWIgaW1wb3J0IFV0aWxzLExvZ3MsRXJyb3JzCitmcm9tIHdhZmxpYi5Db25maWd1cmUgaW1wb3J0IGNvbmYKK0NSWVBUT1BQX0RJUj1bJy91c3InLCcvdXNyL2xvY2FsJywnL29wdC9sb2NhbCcsJy9zdyddCitDUllQVE9QUF9WRVJTSU9OX0ZJTEU9J2NvbmZpZy5oJworQ1JZUFRPUFBfVkVSU0lPTl9DT0RFPScnJworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPGNyeXB0b3BwL2NvbmZpZy5oPgoraW50IG1haW4oKSB7IHN0ZDo6Y291dCA8PCBDUllQVE9QUF9WRVJTSU9OOyB9CisnJycKKworZGVmIG9wdGlvbnMob3B0KToKKwlvcHQuYWRkX29wdGlvbignLS1jcnlwdG9wcCcsdHlwZT0nc3RyaW5nJyxkZWZhdWx0PScnLGRlc3Q9J2NyeXB0b3BwX2RpcicsaGVscD0nJydwYXRoIHRvIHdoZXJlIGNyeXB0b3BwIGlzIGluc3RhbGxlZCwgZS5nLiAvb3B0L2xvY2FsJycnKQorQGNvbmYKK2RlZiBfX2NyeXB0b3BwX2dldF92ZXJzaW9uX2ZpbGUoc2VsZixkaXIpOgorCXRyeToKKwkJcmV0dXJuIHNlbGYucm9vdC5maW5kX2RpcihkaXIpLmZpbmRfbm9kZSgnJXMvJXMnICUgKCdpbmNsdWRlL2NyeXB0b3BwJywgQ1JZUFRPUFBfVkVSU0lPTl9GSUxFKSkKKwlleGNlcHQ6CisJCXJldHVybiBOb25lCitAY29uZgorZGVmIGNyeXB0b3BwX2dldF92ZXJzaW9uKHNlbGYsZGlyKToKKwl2YWw9c2VsZi5jaGVja19jeHgoZnJhZ21lbnQ9Q1JZUFRPUFBfVkVSU0lPTl9DT0RFLGluY2x1ZGVzPVsnJXMvJXMnICUgKGRpciwgJ2luY2x1ZGUnKV0sIGV4ZWN1dGU9VHJ1ZSwgZGVmaW5lX3JldCA9IFRydWUsIG1hbmRhdG9yeT1UcnVlKQorCXJldHVybiB2YWwKK0Bjb25mCitkZWYgY3J5cHRvcHBfZ2V0X3Jvb3Qoc2VsZiwqaywqKmt3KToKKwlyb290PWsgYW5kIGtbMF1vciBrdy5nZXQoJ3BhdGgnLE5vbmUpCisJIyBMb2dzLnBwcmludCAoJ1JFRCcsICcgICAlcycgJXJvb3QpCisJaWYgcm9vdCBhbmQgc2VsZi5fX2NyeXB0b3BwX2dldF92ZXJzaW9uX2ZpbGUocm9vdCk6CisJCXJldHVybiByb290CisJZm9yIGRpciBpbiBDUllQVE9QUF9ESVI6CisJCWlmIHNlbGYuX19jcnlwdG9wcF9nZXRfdmVyc2lvbl9maWxlKGRpcik6CisJCQlyZXR1cm4gZGlyCisJaWYgcm9vdDoKKwkJc2VsZi5mYXRhbCgnQ3J5cHRvUFAgbm90IGZvdW5kIGluICVzJyVyb290KQorCWVsc2U6CisJCXNlbGYuZmF0YWwoJ0NyeXB0b1BQIG5vdCBmb3VuZCwgcGxlYXNlIHByb3ZpZGUgYSAtLWNyeXB0b3BwIGFyZ3VtZW50IChzZWUgaGVscCknKQorQGNvbmYKK2RlZiBjaGVja19jcnlwdG9wcChzZWxmLCprLCoqa3cpOgorCWlmIG5vdCBzZWxmLmVudlsnQ1hYJ106CisJCXNlbGYuZmF0YWwoJ2xvYWQgYSBjKysgY29tcGlsZXIgZmlyc3QsIGNvbmYubG9hZCgiY29tcGlsZXJfY3h4IiknKQorCisJdmFyPWt3LmdldCgndXNlbGliX3N0b3JlJywnQ1JZUFRPUFAnKQorCXNlbGYuc3RhcnRfbXNnKCdDaGVja2luZyBDcnlwdG8rKyBsaWInKQorCXJvb3QgPSBzZWxmLmNyeXB0b3BwX2dldF9yb290KCprLCoqa3cpCisJc2VsZi5lbnYuQ1JZUFRPUFBfVkVSU0lPTj1zZWxmLmNyeXB0b3BwX2dldF92ZXJzaW9uKHJvb3QpCisKKwlzZWxmLmVudlsnSU5DTFVERVNfJXMnJXZhcl09ICclcy8lcycgJSAocm9vdCwgImluY2x1ZGUiKQorCXNlbGYuZW52WydMSUJfJXMnJXZhcl0gPSAiY3J5cHRvcHAiCisJc2VsZi5lbnZbJ0xJQlBBVEhfJXMnJXZhcl0gPSAnJXMvJXMnICUgKHJvb3QsICJsaWIiKQorCisJc2VsZi5lbmRfbXNnKHNlbGYuZW52LkNSWVBUT1BQX1ZFUlNJT04pCisJaWYgTG9ncy52ZXJib3NlOgorCQlMb2dzLnBwcmludCgnQ1lBTicsJwlDUllQVE9QUCBpbmNsdWRlIDogJXMnJXNlbGYuZW52WydJTkNMVURFU18lcycldmFyXSkKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCcJQ1JZUFRPUFAgbGliICAgICA6ICVzJyVzZWxmLmVudlsnTElCXyVzJyV2YXJdKQorCQlMb2dzLnBwcmludCgnQ1lBTicsJwlDUllQVE9QUCBsaWJwYXRoIDogJXMnJXNlbGYuZW52WydMSUJQQVRIXyVzJyV2YXJdKQorCmRpZmYgLS1naXQgYS8ud2FmLXRvb2xzL2RveHlnZW4ucHkgYi8ud2FmLXRvb2xzL2RveHlnZW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcwMTRlZQotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvZG94eWdlbi5weQpAQCAtMCwwICsxLDE4NCBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogVVRGLTgKKyMgVGhvbWFzIE5hZ3kgMjAwOC0yMDEwIChpdGEpCisKKyIiIgorCitEb3h5Z2VuIHN1cHBvcnQKKworVmFyaWFibGVzIHBhc3NlZCB0byBibGQoKToKKyogZG94eWZpbGUgLS0gdGhlIERveHlmaWxlIHRvIHVzZQorCitwb3J0ZWQgZnJvbSB3YWYgMS41IChpbmNvbXBsZXRlKQorIiIiCisKK2Zyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaGNhc2UKK2ltcG9ydCBvcywgb3MucGF0aCwgcmUsIHN0YXQKK2Zyb20gd2FmbGliIGltcG9ydCBUYXNrLCBVdGlscywgTm9kZSwgTG9ncworZnJvbSB3YWZsaWIuVGFza0dlbiBpbXBvcnQgZmVhdHVyZQorCitET1hZX1NUUiA9ICcke0RPWFlHRU59IC0gJworRE9YWV9GTVRTID0gJ2h0bWwgbGF0ZXggbWFuIHJmdCB4bWwnLnNwbGl0KCkKK0RPWFlfRklMRV9QQVRURVJOUyA9ICcqLicgKyAnICouJy5qb2luKCcnJworYyBjYyBjeHggY3BwIGMrKyBqYXZhIGlpIGl4eCBpcHAgaSsrIGlubCBoIGhoIGh4eCBocHAgaCsrIGlkbCBvZGwgY3MgcGhwIHBocDMKK2luYyBtIG1tIHB5IGY5MGMgY2MgY3h4IGNwcCBjKysgamF2YSBpaSBpeHggaXBwIGkrKyBpbmwgaCBoaCBoeHgKKycnJy5zcGxpdCgpKQorCityZV9ybCA9IHJlLmNvbXBpbGUoJ1xcXFxccipcbicsIHJlLk1VTFRJTElORSkKK3JlX25sID0gcmUuY29tcGlsZSgnXHIqXG4nLCByZS5NKQorZGVmIHBhcnNlX2RveHkodHh0KToKKwl0YmwgPSB7fQorCXR4dCAgID0gcmVfcmwuc3ViKCcnLCB0eHQpCisJbGluZXMgPSByZV9ubC5zcGxpdCh0eHQpCisJZm9yIHggaW4gbGluZXM6CisJCXggPSB4LnN0cmlwKCkKKwkJaWYgbm90IHggb3IgeC5zdGFydHN3aXRoKCcjJykgb3IgeC5maW5kKCc9JykgPCAwOgorCQkJY29udGludWUKKwkJaWYgeC5maW5kKCcrPScpID49IDA6CisJCQl0bXAgPSB4LnNwbGl0KCcrPScpCisJCQlrZXkgPSB0bXBbMF0uc3RyaXAoKQorCQkJaWYga2V5IGluIHRibDoKKwkJCQl0Ymxba2V5XSArPSAnICcgKyAnKz0nLmpvaW4odG1wWzE6XSkuc3RyaXAoKQorCQkJZWxzZToKKwkJCQl0Ymxba2V5XSA9ICcrPScuam9pbih0bXBbMTpdKS5zdHJpcCgpCisJCWVsc2U6CisJCQl0bXAgPSB4LnNwbGl0KCc9JykKKwkJCXRibFt0bXBbMF0uc3RyaXAoKV0gPSAnPScuam9pbih0bXBbMTpdKS5zdHJpcCgpCisJcmV0dXJuIHRibAorCitjbGFzcyBkb3h5Z2VuKFRhc2suVGFzayk6CisJdmFycyAgPSBbJ0RPWFlHRU4nLCAnRE9YWUZMQUdTJ10KKwljb2xvciA9ICdCTFVFJworCisJZGVmIHJ1bm5hYmxlX3N0YXR1cyhzZWxmKToKKwkJJycnCisJCXNlbGYucGFycyBhcmUgcG9wdWxhdGVkIGluIHJ1bm5hYmxlX3N0YXR1cyAtIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBiZWluZworCQlydW4gKmJlZm9yZSogYm90aCBzZWxmLnBhcnMgImNvbnN1bWVycyIgLSBzY2FuKCkgYW5kIHJ1bigpCisKKwkJc2V0IG91dHB1dF9kaXIgKG5vZGUpIGZvciB0aGUgb3V0cHV0CisJCScnJworCisJCWZvciB4IGluIHNlbGYucnVuX2FmdGVyOgorCQkJaWYgbm90IHguaGFzcnVuOgorCQkJCXJldHVybiBUYXNrLkFTS19MQVRFUgorCisJCWlmIG5vdCBnZXRhdHRyKHNlbGYsICdwYXJzJywgTm9uZSk6CisJCQl0eHQgPSBzZWxmLmlucHV0c1swXS5yZWFkKCkKKwkJCXNlbGYucGFycyA9IHBhcnNlX2RveHkodHh0KQorCQkJaWYgbm90IHNlbGYucGFycy5nZXQoJ09VVFBVVF9ESVJFQ1RPUlknKToKKwkJCQlzZWxmLnBhcnNbJ09VVFBVVF9ESVJFQ1RPUlknXSA9IHNlbGYuaW5wdXRzWzBdLnBhcmVudC5nZXRfYmxkKCkuYWJzcGF0aCgpCisKKwkJCXNlbGYuZG94eV9pbnB1dHMgPSBnZXRhdHRyKHNlbGYsICdkb3h5X2lucHV0cycsIFtdKQorCQkJaWYgbm90IHNlbGYucGFycy5nZXQoJ0lOUFVUJyk6CisJCQkJc2VsZi5kb3h5X2lucHV0cy5hcHBlbmQoc2VsZi5pbnB1dHNbMF0ucGFyZW50KQorCQkJZWxzZToKKwkJCQlmb3IgaSBpbiBzZWxmLnBhcnMuZ2V0KCdJTlBVVCcpLnNwbGl0KCk6CisJCQkJCWlmIG9zLnBhdGguaXNhYnMoaSk6CisJCQkJCQlub2RlID0gc2VsZi5nZW5lcmF0b3IuYmxkLnJvb3QuZmluZF9ub2RlKGkpCisJCQkJCWVsc2U6CisJCQkJCQlub2RlID0gc2VsZi5nZW5lcmF0b3IucGF0aC5maW5kX25vZGUoaSkKKwkJCQkJaWYgbm90IG5vZGU6CisJCQkJCQlzZWxmLmdlbmVyYXRvci5ibGQuZmF0YWwoJ0NvdWxkIG5vdCBmaW5kIHRoZSBkb3h5Z2VuIGlucHV0ICVyJyAlIGkpCisJCQkJCXNlbGYuZG94eV9pbnB1dHMuYXBwZW5kKG5vZGUpCisKKwkJaWYgbm90IGdldGF0dHIoc2VsZiwgJ291dHB1dF9kaXInLCBOb25lKToKKwkJCWJsZCA9IHNlbGYuZ2VuZXJhdG9yLmJsZAorCQkJIyBGaXJzdCB0cnkgdG8gZmluZCBhbiBhYnNvbHV0ZSBwYXRoLCB0aGVuIGZpbmQgb3IgZGVjbGFyZSBhIHJlbGF0aXZlIHBhdGgKKwkJCXNlbGYub3V0cHV0X2RpciA9IGJsZC5yb290LmZpbmRfZGlyKHNlbGYucGFyc1snT1VUUFVUX0RJUkVDVE9SWSddKQorCQkJaWYgbm90IHNlbGYub3V0cHV0X2RpcjoKKwkJCQlzZWxmLm91dHB1dF9kaXIgPSBibGQucGF0aC5maW5kX29yX2RlY2xhcmUoc2VsZi5wYXJzWydPVVRQVVRfRElSRUNUT1JZJ10pCisKKwkJc2VsZi5zaWduYXR1cmUoKQorCQlyZXR1cm4gVGFzay5UYXNrLnJ1bm5hYmxlX3N0YXR1cyhzZWxmKQorCisJZGVmIHNjYW4oc2VsZik6CisJCWlmIHNlbGYucGFycy5nZXQoJ1JFQ1VSU0lWRScpID09ICdZRVMnOgorCQkJTG9ncy53YXJuKCJEb3h5Z2VuIFJFQ1VSU0lWRSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKQorCisJCWV4Y2x1ZGVfcGF0dGVybnMgPSBzZWxmLnBhcnMuZ2V0KCdFWENMVURFX1BBVFRFUk5TJywgJycpLnNwbGl0KCkKKwkJZmlsZV9wYXR0ZXJucyA9IHNlbGYucGFycy5nZXQoJ0ZJTEVfUEFUVEVSTlMnLCAnJykuc3BsaXQoKQorCQlpZiBub3QgZmlsZV9wYXR0ZXJuczoKKwkJCWZpbGVfcGF0dGVybnMgPSBET1hZX0ZJTEVfUEFUVEVSTlMKKworCQlub2RlcyA9IFtdCisJCW5hbWVzID0gW10KKwkJZm9yIG5vZGUgaW4gc2VsZi5kb3h5X2lucHV0czoKKwkJCWlmIG9zLnBhdGguaXNkaXIobm9kZS5hYnNwYXRoKCkpOgorCQkJCWZvciBtIGluIG5vZGUuYW50X2dsb2IoZmlsZV9wYXR0ZXJucyk6CisJCQkJCW5vZGVzLmFwcGVuZChtKQorCQkJZWxzZToKKwkJCQlub2Rlcy5hcHBlbmQobm9kZSkKKwkJcmV0dXJuIChub2RlcywgbmFtZXMpCisKKwlkZWYgcnVuKHNlbGYpOgorCQlkY3QgPSBzZWxmLnBhcnMuY29weSgpCisJCSMgVE9ETyB3aWxsIGJyZWFrIGlmIHBhdGhzIGhhdmUgc3BhY2VzCisJCWRjdFsnSU5QVVQnXSA9ICcgJy5qb2luKFt4LmFic3BhdGgoKSBmb3IgeCBpbiBzZWxmLmRveHlfaW5wdXRzXSkKKwkJY29kZSA9ICdcbicuam9pbihbJyVzID0gJXMnICUgKHgsIGRjdFt4XSkgZm9yIHggaW4gc2VsZi5wYXJzXSkKKwkJY29kZSA9IGNvZGUuZW5jb2RlKCkgIyBmb3IgcHl0aG9uIDMKKwkJI2ZtdCA9IERPWFlfU1RSICUgKHNlbGYuaW5wdXRzWzBdLnBhcmVudC5hYnNwYXRoKCkpCisJCWNtZCA9IFV0aWxzLnN1YnN0X3ZhcnMoRE9YWV9TVFIsIHNlbGYuZW52KQorCQllbnYgPSBzZWxmLmVudi5lbnYgb3IgTm9uZQorCQlwcm9jID0gVXRpbHMuc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZGluPVV0aWxzLnN1YnByb2Nlc3MuUElQRSwgZW52PWVudiwgY3dkPXNlbGYuZ2VuZXJhdG9yLmJsZC5wYXRoLmdldF9ibGQoKS5hYnNwYXRoKCkpCisJCXByb2MuY29tbXVuaWNhdGUoY29kZSkKKwkJcmV0dXJuIHByb2MucmV0dXJuY29kZQorCisJZGVmIHBvc3RfcnVuKHNlbGYpOgorCQlub2RlcyA9IHNlbGYub3V0cHV0X2Rpci5hbnRfZ2xvYignKiovKicsIHF1aWV0PVRydWUpCisJCWZvciB4IGluIG5vZGVzOgorCQkJeC5zaWcgPSBVdGlscy5oX2ZpbGUoeC5hYnNwYXRoKCkpCisJCXNlbGYub3V0cHV0cyArPSBub2RlcworCQlyZXR1cm4gVGFzay5UYXNrLnBvc3RfcnVuKHNlbGYpCisKK2NsYXNzIHRhcihUYXNrLlRhc2spOgorCSJxdWljayB0YXIgY3JlYXRpb24iCisJcnVuX3N0ciA9ICcke1RBUn0gJHtUQVJPUFRTfSAke1RHVH0gJHtTUkN9JworCWNvbG9yICAgPSAnUkVEJworCWFmdGVyICAgPSBbJ2RveHlnZW4nXQorCWRlZiBydW5uYWJsZV9zdGF0dXMoc2VsZik6CisJCWZvciB4IGluIGdldGF0dHIoc2VsZiwgJ2lucHV0X3Rhc2tzJywgW10pOgorCQkJaWYgbm90IHguaGFzcnVuOgorCQkJCXJldHVybiBUYXNrLkFTS19MQVRFUgorCisJCWlmIG5vdCBnZXRhdHRyKHNlbGYsICd0YXJfZG9uZV9hZGRpbmcnLCBOb25lKToKKwkJCSMgZXhlY3V0ZSB0aGlzIG9ubHkgb25jZQorCQkJc2VsZi50YXJfZG9uZV9hZGRpbmcgPSBUcnVlCisJCQlmb3IgeCBpbiBnZXRhdHRyKHNlbGYsICdpbnB1dF90YXNrcycsIFtdKToKKwkJCQlzZWxmLnNldF9pbnB1dHMoeC5vdXRwdXRzKQorCQkJaWYgbm90IHNlbGYuaW5wdXRzOgorCQkJCXJldHVybiBUYXNrLlNLSVBfTUUKKwkJcmV0dXJuIFRhc2suVGFzay5ydW5uYWJsZV9zdGF0dXMoc2VsZikKKworCWRlZiBfX3N0cl9fKHNlbGYpOgorCQl0Z3Rfc3RyID0gJyAnLmpvaW4oW2EubmljZV9wYXRoKHNlbGYuZW52KSBmb3IgYSBpbiBzZWxmLm91dHB1dHNdKQorCQlyZXR1cm4gJyVzOiAlc1xuJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgdGd0X3N0cikKKworQGZlYXR1cmUoJ2RveHlnZW4nKQorZGVmIHByb2Nlc3NfZG94eShzZWxmKToKKwlpZiBub3QgZ2V0YXR0cihzZWxmLCAnZG94eWZpbGUnLCBOb25lKToKKwkJc2VsZi5nZW5lcmF0b3IuYmxkLmZhdGFsKCdubyBkb3h5ZmlsZT8/JykKKworCW5vZGUgPSBzZWxmLmRveHlmaWxlCisJaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgTm9kZS5Ob2RlKToKKwkJbm9kZSA9IHNlbGYucGF0aC5maW5kX3Jlc291cmNlKG5vZGUpCisJaWYgbm90IG5vZGU6CisJCXJhaXNlIFZhbHVlRXJyb3IoJ2RveHlnZW4gZmlsZSBub3QgZm91bmQnKQorCisJIyB0aGUgdGFzayBpbnN0YW5jZQorCWRzayA9IHNlbGYuY3JlYXRlX3Rhc2soJ2RveHlnZW4nLCBub2RlKQorCisJaWYgZ2V0YXR0cihzZWxmLCAnZG94eV90YXInLCBOb25lKToKKwkJdHNrID0gc2VsZi5jcmVhdGVfdGFzaygndGFyJykKKwkJdHNrLmlucHV0X3Rhc2tzID0gW2Rza10KKwkJdHNrLnNldF9vdXRwdXRzKHNlbGYucGF0aC5maW5kX29yX2RlY2xhcmUoc2VsZi5kb3h5X3RhcikpCisJCWlmIHNlbGYuZG94eV90YXIuZW5kc3dpdGgoJ2J6MicpOgorCQkJdHNrLmVudlsnVEFST1BUUyddID0gWydjamYnXQorCQllbGlmIHNlbGYuZG94eV90YXIuZW5kc3dpdGgoJ2d6Jyk6CisJCQl0c2suZW52WydUQVJPUFRTJ10gPSBbJ2N6ZiddCisJCWVsc2U6CisJCQl0c2suZW52WydUQVJPUFRTJ10gPSBbJ2NmJ10KKworZGVmIGNvbmZpZ3VyZShjb25mKToKKwljb25mLmZpbmRfcHJvZ3JhbSgnZG94eWdlbicsIHZhcj0nRE9YWUdFTicpCisJY29uZi5maW5kX3Byb2dyYW0oJ3RhcicsIHZhcj0nVEFSJykKKwpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9vcGVuc3NsLnB5IGIvLndhZi10b29scy9vcGVuc3NsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNTk5YTkKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL29wZW5zc2wucHkKQEAgLTAsMCArMSw1OSBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogdXRmLTgKKworJycnCisKK1doZW4gdXNpbmcgdGhpcyB0b29sLCB0aGUgd3NjcmlwdCB3aWxsIGxvb2sgbGlrZToKKworCWRlZiBvcHRpb25zKG9wdCk6CisJICAgICAgICBvcHQudG9vbF9vcHRpb25zKCdvcGVuc3NsJykKKworCWRlZiBjb25maWd1cmUoY29uZik6CisJCWNvbmYubG9hZCgnY29tcGlsZXJfYyBvcGVuc3NsJykKKworICAgICAgICAgICAgICAgIGNvbmYuY2hlY2tfb3BlbnNzbCgpCisKKwlkZWYgYnVpbGQoYmxkKToKKwkJYmxkKHNvdXJjZT0nbWFpbi5jcHAnLCB0YXJnZXQ9J2FwcCcsIHVzZT0nT1BFTlNTTCcpCisKKycnJworCitmcm9tIHdhZmxpYiBpbXBvcnQgT3B0aW9ucworZnJvbSB3YWZsaWIuQ29uZmlndXJlIGltcG9ydCBjb25mCisKK0Bjb25mCitkZWYgY2hlY2tfb3BlbnNzbChzZWxmLCprLCoqa3cpOgorICAgICAgICByb290ID0gayBhbmQga1swXSBvciBrdy5nZXQoJ3BhdGgnLE5vbmUpIG9yIE9wdGlvbnMub3B0aW9ucy53aXRoX29wZW5zc2wKKyAgICAgICAgbWFuZGF0b3J5ID0ga3cuZ2V0KCdtYW5kYXRvcnknLCBUcnVlKQorICAgICAgICB2YXIgPSBrdy5nZXQoJ3ZhcicsICdPUEVOU1NMJykKKworICAgICAgICBDT0RFID0gIiIiCisjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKwkodm9pZClhcmdjOworICAgICAgICBwcmludGYgKCIlcyIsIGFyZ3ZbMF0pOworCisJcmV0dXJuIDA7Cit9CisiIiIKKyAgICAgICAgaWYgcm9vdDoKKyAgICAgICAgICAgICAgICBsaWJjcnlwdG8gPSBzZWxmLmNoZWNrX2NjIChsaWI9Wydzc2wnLCAnY3J5cHRvJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9J29wZW5zc2wvY3J5cHRvLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9uYW1lPSdIQVZFXyVzJyAlIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9dmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSA9IG1hbmRhdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmxhZ3M9Ii1JJXMvaW5jbHVkZSIgJSByb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtmbGFncz0iLUwlcy9saWIiICUgcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlID0gVHJ1ZSwgZnJhZ21lbnQgPSBDT0RFLCBkZWZpbmVfcmV0ID0gVHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaWJjcnlwdG8gPSBzZWxmLmNoZWNrX2NjIChsaWI9Wydzc2wnLCAnY3J5cHRvJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9J29wZW5zc2wvY3J5cHRvLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9uYW1lPSdIQVZFXyVzJyAlIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9dmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSA9IG1hbmRhdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlID0gVHJ1ZSwgZnJhZ21lbnQgPSBDT0RFLCBkZWZpbmVfcmV0ID0gVHJ1ZSkKKworZGVmIG9wdGlvbnMob3B0KToKKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1vcGVuc3NsJyx0eXBlPSdzdHJpbmcnLGRlZmF1bHQ9JycsZGVzdD0nd2l0aF9vcGVuc3NsJyxoZWxwPScnJ1BhdGggdG8gT3BlblNTTCcnJykKZGlmZiAtLWdpdCBhLy53YWYtdG9vbHMvc3BoaW54X2J1aWxkLnB5IGIvLndhZi10b29scy9zcGhpbnhfYnVpbGQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExNTVkMQotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvc3BoaW54X2J1aWxkLnB5CkBAIC0wLDAgKzEsMTA4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IHV0Zi04CisjIEhhbnMtTWFydGluIHZvbiBHYXVkZWNrZXIsIDIwMTIKKworIiIiCitDcmVhdGUgU3BoaW54IGRvY3VtZW50YXRpb24uIEN1cnJlbnRseSBvbmx5IExhVGVYIGFuZCBIVE1MIGFyZSBzdXBwb3J0ZWQuCisKK1RoZSBzb3VyY2UgZmlsZSAqKm11c3QqKiBiZSB0aGUgY29uZi5weSBmaWxlIHVzZWQgYnkgU3BoaW54LiBFdmVyeXRoaW5nCitlbHNlIGhhcyBkZWZhdWx0cywgcGFzc2luZyBpbiB0aGUgcGFyYW1ldGVycyBpcyBvcHRpb25hbC4KKworVXNhZ2UgZm9yIGdldHRpbmcgYm90aCBodG1sIGFuZCBwZGYgZG9jczoKKworICAgIGN0eChmZWF0dXJlcz0nc3BoaW54Jywgc291cmNlPSdkb2NzL2NvbmYucHknKQorICAgIGN0eChmZWF0dXJlcz0nc3BoaW54Jywgc291cmNlPSdkb2NzL2NvbmYucHknLCBidWlsZGVybmFtZT0nbGF0ZXgnKQorCitPcHRpb25hbCBwYXJhbWV0ZXJzIGFuZCB0aGVpciBkZWZhdWx0czoKKworICAgICogYnVpbGRlcm5hbWU6IGh0bWwKKyAgICAqIHNyY2RpcjogY29uZmRpciAodGhlIGRpcmVjdG9yeSB3aGVyZSBjb25mLnB5IGxpdmVzKQorICAgICogb3V0ZGlyOiBjb25mZGlyL2J1aWxkZXJuYW1lIChpbiB0aGUgYnVpbGQgZGlyZWN0b3J5IHRyZWUpCisgICAgKiBkb2N0cmVlZGlyOiBvdXRkaXIvLmRvY3RyZWVzCisgICAgKiB0eXBlOiBwZGZsYXRleCAob25seSBhcHBsaWVzIHRvICdsYXRleCcgYnVpbGRlcikKKworIiIiCisKKworaW1wb3J0IG9zCitmcm9tIHdhZmxpYiBpbXBvcnQgVGFzaywgVGFza0dlbiwgRXJyb3JzLCBMb2dzCisKK2NsYXNzIFJ1blNwaGlueEJ1aWxkKFRhc2suVGFzayk6CisJZGVmIHNjYW4oc2VsZik6CisJCSIiIlVzZSBTcGhpbngnIGludGVybmFsIGVudmlyb25tZW50IHRvIGZpbmQgdGhlIGRlcGVuZGVuY2llcy4iIiIKKwkJcyA9IHNlbGYuc3BoaW54X2luc3RhbmNlCisJCW1zZywgZHVtbXksIGl0ZXJhdG9yID0gcy5lbnYudXBkYXRlKHMuY29uZmlnLCBzLnNyY2Rpciwgcy5kb2N0cmVlZGlyLCBzKQorCQlzLmluZm8obXNnKQorCQlkZXBfbm9kZXMgPSBbXQorCQlmb3IgZG9jbmFtZSBpbiBzLmJ1aWxkZXIuc3RhdHVzX2l0ZXJhdG9yKGl0ZXJhdG9yLCAicmVhZGluZyBzb3VyY2VzLi4uICIpOgorCQkJZmlsZW5hbWUgPSBkb2NuYW1lICsgcy5jb25maWcuc291cmNlX3N1ZmZpeAorCQkJZGVwX25vZGVzLmFwcGVuZChzZWxmLnNyY2Rpci5maW5kX25vZGUoZmlsZW5hbWUpKQorCQlmb3IgZGVwIGluIHMuZW52LmRlcGVuZGVuY2llcy52YWx1ZXMoKToKKwkJCSMgTmVlZCB0aGUgJ3N0cicgY2FsbCBiZWNhdXNlIFNwaGlueCBtaWdodCByZXR1cm4gVW5pY29kZSBzdHJpbmdzLgorCQkJW2RlcF9ub2Rlcy5hcHBlbmQoc2VsZi5zcmNkaXIuZmluZF9ub2RlKHN0cihkKSkpIGZvciBkIGluIGRlcF0KKwkJcmV0dXJuIChkZXBfbm9kZXMsIFtdKQorCisJZGVmIHJ1bihzZWxmKToKKwkJIiIiUnVuIHRoZSBTcGhpbnggYnVpbGQuIiIiCisJCXNlbGYuc3BoaW54X2luc3RhbmNlLmJ1aWxkKGZvcmNlX2FsbD1GYWxzZSwgZmlsZW5hbWVzPU5vbmUpCisJCXJldHVybiBOb25lCisKKwlkZWYgcG9zdF9ydW4oc2VsZik6CisJCSIiIkFkZCBldmVyeXRoaW5nIGZvdW5kIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRyZWUgYXMgYW4gb3V0cHV0LgorCQlOb3QgZWxlZ2FudCwgYnV0IHByYWdtYXRpYy4iIiIKKwkJZm9yIG4gaW4gc2VsZi5vdXRkaXIuYW50X2dsb2IoIioqIiwgcXVpZXQ9VHJ1ZSwgcmVtb3ZlPUZhbHNlKToKKwkJCWlmIG4gbm90IGluIHNlbGYub3V0cHV0czogc2VsZi5zZXRfb3V0cHV0cyhuKQorCQlzdXBlcihSdW5TcGhpbnhCdWlsZCwgc2VsZikucG9zdF9ydW4oKQorCisKK2RlZiBfZ2V0X21haW5fdGFyZ2V0cyh0Zywgcyk6CisJIiIiUmV0dXJuIHNvbWUgZWFzeSB0YXJnZXRzIGtub3duIGZyb20gdGhlIFNwaGlueCBidWlsZCBlbnZpcm9ubWVudCAqKnMuZW52KiouIiIiCisJb3V0X2RpciA9IHRnLmJsZC5yb290LmZpbmRfbm9kZShzLm91dGRpcikKKwl0Z3Rfbm9kZXMgPSBbXQorCWlmIHMuYnVpbGRlci5uYW1lID09ICJsYXRleCI6CisJCWZvciB0Z3RfaW5mbyBpbiBzLmVudi5jb25maWcubGF0ZXhfZG9jdW1lbnRzOgorCQkJdGd0X25vZGVzLmFwcGVuZChvdXRfZGlyLmZpbmRfb3JfZGVjbGFyZSh0Z3RfaW5mb1sxXSkpCisJZWxpZiBzLmJ1aWxkZXIubmFtZSA9PSAiaHRtbCI6CisJCXN1ZmZpeCA9IGdldGF0dHIocy5lbnYuY29uZmlnLCAiaHRtbF9maWxlX3N1ZmZpeCIsICIuaHRtbCIpCisJCXRndF9uYW1lID0gcy5lbnYuY29uZmlnLm1hc3Rlcl9kb2MgKyBzdWZmaXgKKwkJdGd0X25vZGVzLmFwcGVuZChvdXRfZGlyLmZpbmRfb3JfZGVjbGFyZSh0Z3RfbmFtZSkpCisJZWxzZToKKwkJcmFpc2UgRXJyb3JzLldhZkVycm9yKCJTcGhpbnggYnVpbGRlciBub3QgaW1wbGVtZW50ZWQ6ICVzIiAlIHMuYnVpbGRlci5uYW1lKQorCXJldHVybiB0Z3Rfbm9kZXMKKworCitAVGFza0dlbi5mZWF0dXJlKCJzcGhpbngiKQorQFRhc2tHZW4uYmVmb3JlX21ldGhvZCgicHJvY2Vzc19zb3VyY2UiKQorZGVmIGFwcGx5X3NwaGlueCh0Zyk6CisJIiIiU2V0IHVwIHRoZSB0YXNrIGdlbmVyYXRvciB3aXRoIGEgU3BoaW54IGluc3RhbmNlIGFuZCBjcmVhdGUgYSB0YXNrLiIiIgorCisgICAgICAgIGZyb20gc3BoaW54LmFwcGxpY2F0aW9uIGltcG9ydCBTcGhpbngKKworCSMgUHV0IHRvZ2V0aGVyIHRoZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIGRlZmF1bHRzIGFuZCB0ZyBhdHRyaWJ1dGVzLgorCWNvbmYgPSB0Zy5wYXRoLmZpbmRfbm9kZSh0Zy5zb3VyY2UpCisJY29uZmRpciA9IGNvbmYucGFyZW50LmFic3BhdGgoKQorCWJ1aWxkZXJuYW1lID0gZ2V0YXR0cih0ZywgImJ1aWxkZXJuYW1lIiwgImh0bWwiKQorCXNyY2RpciA9IGdldGF0dHIodGcsICJzcmNkaXIiLCBjb25mZGlyKQorCW91dGRpciA9IHRnLnBhdGguZmluZF9vcl9kZWNsYXJlIChnZXRhdHRyKHRnLCAib3V0ZGlyIiwgb3MucGF0aC5qb2luKGNvbmYucGFyZW50LmdldF9ibGQoKS5hYnNwYXRoKCksIGJ1aWxkZXJuYW1lKSkpLmFic3BhdGggKCkKKyAgICAgICAgCisJZG9jdHJlZWRpciA9IGdldGF0dHIodGcsICJkb2N0cmVlZGlyIiwgb3MucGF0aC5qb2luKG91dGRpciwgIi5kb2N0cmVlcyIpKQorCisJIyBTZXQgdXAgdGhlIFNwaGlueCBpbnN0YW5jZS4KKwlzID0gU3BoaW54IChzcmNkaXIsIGNvbmZkaXIsIG91dGRpciwgZG9jdHJlZWRpciwgYnVpbGRlcm5hbWUsIHN0YXR1cz1Ob25lKQorCisJIyBHZXQgdGhlIG1haW4gdGFyZ2V0cyBvZiB0aGUgU3BoaW54IGJ1aWxkLgorCXRndF9ub2RlcyA9IF9nZXRfbWFpbl90YXJnZXRzKHRnLCBzKQorCisJIyBDcmVhdGUgdGhlIHRhc2sgYW5kIHNldCB0aGUgcmVxdWlyZWQgYXR0cmlidXRlcy4gIAorCXRhc2sgPSB0Zy5jcmVhdGVfdGFzaygiUnVuU3BoaW54QnVpbGQiLCBzcmM9Y29uZiwgdGd0PXRndF9ub2RlcykKKwl0YXNrLnNyY2RpciA9IHRnLmJsZC5yb290LmZpbmRfbm9kZShzLnNyY2RpcikKKwl0YXNrLm91dGRpciA9IHRnLmJsZC5yb290LmZpbmRfbm9kZShzLm91dGRpcikKKwl0YXNrLnNwaGlueF9pbnN0YW5jZSA9IHMKKworCSMgQnVpbGQgcGRmIGlmIHdlIGhhdmUgdGhlIExhVGVYIGJ1aWxkZXIsIGFsbG93IGZvciBidWlsZGluZyB3aXRoIHhlbGF0ZXguCisJaWYgcy5idWlsZGVyLm5hbWUgPT0gImxhdGV4IjoKKwkJY29tcGlsZV90eXBlID0gZ2V0YXR0cih0ZywgInR5cGUiLCAicGRmbGF0ZXgiKQorCQl0Zy5ibGQoZmVhdHVyZXM9InRleCIsIHR5cGU9Y29tcGlsZV90eXBlLCBzb3VyY2U9dGd0X25vZGVzLCBuYW1lPSJzcGhpbnhfcGRmIiwgcHJvbXB0PTApCisKKwkjIEJ5cGFzcyB0aGUgZXhlY3V0aW9uIG9mIHByb2Nlc3Nfc291cmNlIGJ5IHNldHRpbmcgdGhlIHNvdXJjZSB0byBhbiBlbXB0eSBsaXN0CisJdGcuc291cmNlID0gW10KZGlmZiAtLWdpdCBhL0lOU1RBTEwgYi9JTlNUQUxMCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2FmNjViLi4wMDAwMDAwCi0tLSBhL0lOU1RBTEwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotTkROLUNQUDogIEEgTmFtZWQgRGF0YSBOZXR3b3JraW5nIGNsaWVudCBsaWJyYXJ5IGZvciBDKysgYW5kIEMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUHJlcmVxdWlzaXRlcwotLS0tLS0tLS0tLS0tLQotKFRoZXNlIGFyZSBwcmVyZXF1aXNpdGVzIHRvIGJ1aWxkIE5ETi1DUFAuICBUbyBkbyBkZXZlbG9wbWVudCBvZiBORE4tQ1BQIGNvZGUgYW5kIHVwZGF0ZSB0aGUgYnVpbGQgc3lzdGVtLCAKLSBzZWUgRGV2ZWxvcG1lbnQgUHJlcmVxdWlzaXRlcy4pCi0KLVJlcXVpcmVkOiAKLQotKiBsaWJjcnlwdG8KLSogbGlic3FsaXRlMyAKLSogbGliY3J5cHRvKysKLQotT3B0aW9uYWw6IAotCi0qIGJvb3N0IGxpYnJhcmllcyAoaGlnaGx5IHJlY29tbWVuZGVkKQotKiBPU1ggU2VjdXJpdHkgZnJhbWV3b3JrIChmb3Iga2V5IHN0b3JhZ2UpCi0KLUZvbGxvd2luZyBhcmUgdGhlIGRldGFpbGVkIHN0ZXBzIGZvciBlYWNoIHBsYXRmb3JtIHRvIGluc3RhbGwgdGhlIHByZXJlcXVpc2l0ZXMuCi0KLSogTWFjIE9TIFggMTAuNy4zLCBNYWMgT1MgWCAxMC44LjQKLUluc3RhbGwgWGNvZGUuCi1JbiBYY29kZSBQcmVmZXJlbmNlcyA+IERvd25sb2FkcywgaW5zdGFsbCAiQ29tbWFuZCBMaW5lIFRvb2xzIi4KLQotKiBNYWMgT1MgWCAxMC45Ci1JbnN0YWxsIFhjb2RlLiAgKFhjb2RlIG9uIE9TIFggMTAuOSBzZWVtcyB0byBhbHJlYWR5IGhhdmUgdGhlIENvbW1hbmQgTGluZSBUb29scy4pCi0KLUlmIHVzaW5nIG1hY3BvcnRzLCBkZXBlbmRlbmNpZXMgY2FuIGJlIGluc3RhbGxlZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotCi0gICAgc3VkbyBwb3J0IGluc3RhbGwgYm9vc3Qgc3FsaXRlMyBsaWJjcnlwdG9wcAotCi0qIFVidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpLCBVYnVudHUgMTMuMDQgKDY0IGJpdCkKLUluIGEgdGVybWluYWwsIGVudGVyOgotCi0gICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgYnVpbGQtZXNzZW50aWFsCi0gICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGliYm9vc3QtYWxsLWRldiBsaWJzc2wtZGV2IGxpYnNxbGl0ZTMtZGV2IGxpYmNyeXB0bysrLWRldgotCi0qIFdpbmRvd3MgQ3lnd2luCi1DeWd3aW4gaXMgdGVzdGVkIG9uIFdpbmRvd3MgNyA2NC1iaXQgd2l0aCB0aGUgIkRldmVsIiBwYWNrYWdlcyBzZWxlY3RlZCB0byBpbnN0YWxsIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlCi1jeWd3aW4gaW5zdGFsbGVyLiAgVGhpcyBpbmNsdWRlcyBsaWJjcnlwdG8gYW5kIGxpYnNxbGl0ZTMuCi0KLUJ1aWxkCi0tLS0tLQotKFRoZXNlIGFyZSBpbnN0cnVjdGlvbnMgdG8gYnVpbGQgTkROLUNQUC4gVG8gZG8gZGV2ZWxvcG1lbnQgb2YgTkROLUNQUCBjb2RlIGFuZCB1cGRhdGUgdGhlIGJ1aWxkIHN5c3RlbSwgc2VlIERldmVsb3BtZW50LikKLQotVG8gYnVpbGQgaW4gYSB0ZXJtaW5hbCwgY2hhbmdlIGRpcmVjdG9yeSB0byB0aGUgTkROLUNQUCByb290LiAgRW50ZXI6Ci0KLSAgICAuL2NvbmZpZ3VyZQotICAgIG1ha2UKLSAgICBtYWtlIGluc3RhbGwKLQotVG8gbWFrZSBkb2N1bWVudGF0aW9uLCBlbnRlcjoKLQotICAgIG1ha2UgZG94eWdlbi1kb2MKLQotRmlsZXMKLS0tLS0tCi0KLVRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZyBsaWJyYXJpZXM6Ci0KLS5saWJzL2xpYm5kbi1jLmE6IFRoZSBjb3JlIEMgY29kZSBmb3IgZW5jb2RpbmcgYW5kIGNvbW11bmljYXRpb24uCi0ubGlicy9saWJuZG4tY3BwLmE6IFRoZSBDKysgbGlicmFyeSBBUEkuICAoSWYgbGlua2luZyB0byBsaWJuZG4tY3BwLCBkb24ndCBsaW5rIHRvIGxpYm5kbi1jIHNpbmNlIGl0IGlzIGluY2x1ZGVkLikKLQotVGhpcyBtYWtlcyB0aGUgZm9sbG93aW5nIHRlc3QgZmlsZXM6Ci0KLWJpbi90ZXN0LWdldC1hc3luYzogQ29ubmVjdCB0byBvbmUgb2YgdGhlIE5ETiB0ZXN0YmVkIGh1YnMsIGV4cHJlc3MgYW4gaW50ZXJlc3QgYW5kIGRpc3BsYXkgdGhlIHJlY2VpdmVkIGRhdGEuCi1iaW4vdGVzdC1wdWJsaXNoLWFzeW5jOiBDb25uZWN0IHRvIHRoZSBsb2NhbCBORE4gaHViLCBhY2NlcHQgaW50ZXJlc3RzIHdpdGggcHJlZml4IC90ZXN0ZWNobyBhbmQgZWNobyBiYWNrIGEgZGF0YSBwYWNrZXQuCi1iaW4vdGVzdC1lbmNvZGUtZGVjb2RlLWludGVyZXN0OiBFbmNvZGUgYW5kIGRlY29kZSBhbiBpbnRlcmVzdCwgdGVzdGluZyBpbnRlcmVzdCBzZWxlY3RvcnMgYW5kIHRoZSBuYW1lIFVSSS4KLWJpbi90ZXN0LWVuY29kZS1kZWNvZGUtZGF0YTogRW5jb2RlIGFuZCBkZWNvZGUgYSBkYXRhIHBhY2tldCwgaW5jbHVkaW5nIHNpZ25pbmcgdGhlIGRhdGEgcGFja2V0LgotYmluL3Rlc3QtZW5jb2RlLWRlY29kZS1mb3J3YXJkaW5nLWVudHJ5OiBFbmNvZGUgYW5kIGRlY29kZSBhIGRhdGEgcGFja2V0LCBpbmNsdWRpbmcgc2lnbmluZyB0aGUgZGF0YSBwYWNrZXQuCi0KLVJ1bm5pbmcgbWFrZSBkb3h5Z2VuLWRvYyBwdXRzIGNvZGUgZG9jdW1lbnRhdGlvbiBpbjoKLWRvYy9odG1sCi0KLVN1cHBvcnRlZCBwbGF0Zm9ybXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTkROLUNQUCBpcyB0ZXN0ZWQgb24gdGhlIGZvbGxvd2luZyBwbGF0Zm9ybXM6Ci1VYnVudHUgMTIuMDQgKDY0IGJpdCBhbmQgMzIgYml0KSAoZ2NjIDQuNi4zKQotVWJ1bnR1IDEzLjA0ICg2NCBiaXQpIChnY2MgNC43LjMpCi1NYWMgT1MgWCAxMC44LjQgKGNsYW5nIDQuMikKLU1hYyBPUyBYIDEwLjguNCAoZ2NjIDQuMikKLQotRGV2ZWxvcG1lbnQgUHJlcmVxdWlzaXRlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlc2Ugc3RlcHMgYXJlIG9ubHkgbmVlZGVkIHRvIGRvIGRldmVsb3BtZW50IG9mIE5ETi1DUFAgY29kZSBhbmQgdXBkYXRlIHRoZSBidWlsZCBzeXN0ZW0uCi1GaXJzdCBmb2xsb3cgdGhlIFByZXJlcXVpc2l0ZXMgYWJvdmUgZm9yIHlvdXIgcGxhdGZvcm1zLgotCi0qIE1hYyBPUyBYIDEwLjcuMywgTWFjIE9TIFggMTAuOC40LCBNYWMgT1MgWCAxMC45Ci1JbnN0YWxsIE1hY1BvcnRzIGZyb20gaHR0cDovL3d3dy5tYWNwb3J0cy5vcmcvaW5zdGFsbC5waHAKLUluIGEgdGVybWluYWwsIGVudGVyOgotc3VkbyBwb3J0IGluc3RhbGwgYXV0b21ha2UKLXN1ZG8gcG9ydCBpbnN0YWxsIGF1dG9jb25mCi1zdWRvIHBvcnQgaW5zdGFsbCBsaWJ0b29sCi1zdWRvIHBvcnQgaW5zdGFsbCBkb3h5Z2VuCi0KLSogVWJ1bnR1IDEyLjA0ICg2NCBiaXQgYW5kIDMyIGJpdCksIFVidW50dSAxMy4wNCAoNjQgYml0KQotSW4gYSB0ZXJtaW5hbCwgZW50ZXI6Ci1zdWRvIGFwdC1nZXQgaW5zdGFsbCBhdXRvbWFrZQotc3VkbyBhcHQtZ2V0IGluc3RhbGwgbGlidG9vbAotc3VkbyBhcHQtZ2V0IGluc3RhbGwgZG94eWdlbgotCi1EZXZlbG9wbWVudAotLS0tLS0tLS0tLS0KLUZvbGxvdyBEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzIGFib3ZlIGZvciB5b3VyIHBsYXRmb3JtLgotTm93IHlvdSBjYW4gYWRkIHNvdXJjZSBjb2RlIGZpbGVzIGFuZCB1cGRhdGUgTWFrZWZpbGUuYW0uICAKLUFmdGVyIHVwZGF0aW5nLCBjaGFuZ2UgZGlyZWN0b3J5IHRvIHRoZSBORE4tQ1BQIHJvb3QgYW5kIGVudGVyIHRoZSBmb2xsb3dpbmcgdG8gYnVpbGQgdGhlIE1ha2VmaWxlOgotLi9hdXRvZ2VuLnNoCmRpZmYgLS1naXQgYS9JTlNUQUxMLm1kIGIvSU5TVEFMTC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTY5MGE2Ci0tLSAvZGV2L251bGwKKysrIGIvSU5TVEFMTC5tZApAQCAtMCwwICsxLDExNyBAQAorTkROLUNQUC1kZXY6ICBBIGRldiB2ZXJzaW9uIG9mIE5hbWVkIERhdGEgTmV0d29ya2luZyBjbGllbnQgbGlicmFyeSBmb3IgQysrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUHJlcmVxdWlzaXRlcworLS0tLS0tLS0tLS0tLQorCisoVGhlc2UgYXJlIHByZXJlcXVpc2l0ZXMgdG8gYnVpbGQgTkROLUNQUC4gIFRvIGRvIGRldmVsb3BtZW50IG9mIE5ETi1DUFAgY29kZSBhbmQgdXBkYXRlIHRoZSBidWlsZCBzeXN0ZW0sIAorIHNlZSBEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzLikKKworUmVxdWlyZWQ6IAorCisqIGxpYmNyeXB0bworKiBsaWJzcWxpdGUzIAorKiBsaWJjcnlwdG8rKworKiBib29zdCBsaWJyYXJpZXMKKyogT1NYIFNlY3VyaXR5IGZyYW1ld29yayAob24gT1NYIHBsYXRmb3JtIG9ubHkpCisKK0ZvbGxvd2luZyBhcmUgdGhlIGRldGFpbGVkIHN0ZXBzIGZvciBlYWNoIHBsYXRmb3JtIHRvIGluc3RhbGwgdGhlIHByZXJlcXVpc2l0ZXMuCisKKyogTWFjIE9TIFggMTAuNy4zLCBNYWMgT1MgWCAxMC44LjQKKworICAgIEluc3RhbGwgWGNvZGUuCisgICAgSW4gWGNvZGUgUHJlZmVyZW5jZXMgPiBEb3dubG9hZHMsIGluc3RhbGwgIkNvbW1hbmQgTGluZSBUb29scyIuCisKKyogTWFjIE9TIFggMTAuOQorCisgICAgSW5zdGFsbCBYY29kZS4gIChYY29kZSBvbiBPUyBYIDEwLjkgc2VlbXMgdG8gYWxyZWFkeSBoYXZlIHRoZSBDb21tYW5kIExpbmUgVG9vbHMuKQorCisgICAgSWYgdXNpbmcgbWFjcG9ydHMsIGRlcGVuZGVuY2llcyBjYW4gYmUgaW5zdGFsbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisKKyAgICAgICAgc3VkbyBwb3J0IGluc3RhbGwgYm9vc3Qgc3FsaXRlMyBsaWJjcnlwdG9wcAorCisqIFVidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpLCBVYnVudHUgMTMuMDQgKDY0IGJpdCkKKworICAgIEluIGEgdGVybWluYWwsIGVudGVyOgorCisgICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGJ1aWxkLWVzc2VudGlhbAorICAgICAgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJib29zdC1hbGwtZGV2IGxpYnNzbC1kZXYgbGlic3FsaXRlMy1kZXYgbGliY3J5cHRvKystZGV2CisKKyogV2luZG93cyBDeWd3aW4KKworICAgIEN5Z3dpbiBpcyB0ZXN0ZWQgb24gV2luZG93cyA3IDY0LWJpdCB3aXRoIHRoZSAiRGV2ZWwiIHBhY2thZ2VzIHNlbGVjdGVkIHRvIGluc3RhbGwgYXQgdGhlIHRvcCBsZXZlbCBvZiB0aGUKKyAgICBjeWd3aW4gaW5zdGFsbGVyLiAgVGhpcyBpbmNsdWRlcyBsaWJjcnlwdG8gYW5kIGxpYnNxbGl0ZTMuCisKK0J1aWxkCistLS0tLQorCisoVGhlc2UgYXJlIGluc3RydWN0aW9ucyB0byBidWlsZCBORE4tQ1BQLiBUbyBkbyBkZXZlbG9wbWVudCBvZiBORE4tQ1BQIGNvZGUgYW5kIHVwZGF0ZSB0aGUgYnVpbGQgc3lzdGVtLCBzZWUgRGV2ZWxvcG1lbnQuKQorCitUbyBidWlsZCBpbiBhIHRlcm1pbmFsLCBjaGFuZ2UgZGlyZWN0b3J5IHRvIHRoZSBORE4tQ1BQIHJvb3QuICBFbnRlcjoKKworICAgIC4vd2FmIGNvbmZpZ3VyZQorICAgIC4vd2FmCisgICAgc3VkbyAuL3dhZiBpbnN0YWxsCisKK1RoaXMgbWFrZXMgYW5kIGluc3RhbGxzIHRoZSBmb2xsb3dpbmcgaXRlbXM6CisKKyogYGA8TElCUEFUSD4vbGlibmRuLWNwcC1kZXYuKmBgOiBzdGF0aWMgYW5kIGR5bmFtaWMgTkROIEMrKyBsaWJyYXJpZXMKKyogYGA8TElCUEFUSD4vcGtnY29uZmlnL2xpYm5kbi1jcHAtZGV2LnBjYGA6IHBrZ2NvbmZpZyBmaWxlIHN0b3JpbmcgYWxsIG5lY2Nlc3NhcnkgZmxhZ3MKKyAgdG8gYnVpbGQgYWdhaW5zdCB0aGUgbGlicmFyeS4gIEZvciBleGFtcGxlLCBpZiBwa2djb25maWcgb3IgcGtnY29uZiBwYWNrYWdlIGlzCisgIGluc3RhbGxlZCBhbmQgUEtHX0NPTkZJR19QQVRIIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHkgKG9yIGBgPExJQlBBVEg+L3BrZ2NvbmZpZ2BgIGlzIGEKKyAgZGVmYXVsdCBwYXRoKSwgYGBwa2djb25maWcgLS1saWJzIC0tY2xmbGFncyBsaWJuZG4tY3BwLWRldmBgIHdpbGwgcmV0dXJuIGFsbCBuZWNlc3NhcnkKKyAgY29tcGlsZSBhbmQgbGluayBmbGFncyBmb3IgdGhlIGxpYnJhcnkuCisqIGBgPEJJTlBBVEg+L3RsdmR1bXBgYDogYSBzaW1wbGUgdG9vbCB0byBkdW1wIGNvbnRlbnRzIG9mIFRMVi1mb3JtYXR0ZWQgZGF0YQorKiBgYDxCSU5QQVRIPi9uZG5jYXRjaHVua3MzYGA6IGEgc2ltcGxpZmllZCBlcXVpdmFsZW50IHRvIG5kbmNhdGNodW5rczIgaW4gTkROeCBwYWNrYWdlCisqIGBgPEJJTlBBVEg+L25kbnB1dGNodW5rczNgYDogYSBzaW1wbGlmaWVkIGVxdWl2YWxlbnQgdG8gbmRucHV0Y2h1bmtzMiBpbiBORE54IHBhY2thZ2UKKworSWYgY29uZmlndXJlZCB3aXRoIHRlc3RzOiBgYC4vd2FmIGNvbmZpZ3VyZSAtLXdpdGgtdGVzdHNgYCksIHRoZSBhYm92ZSBjb21tYW5kcyB3aWxsCithbHNvIHByb2R1Y2U6CisKKyogYGBidWlsZC90ZXN0cy91bml0LXRlc3RzYGA6IEEgdG9vbCB0byBydW4gdW5pdCB0ZXN0cyBmb3IgdGhlIGxpYnJhcnkKKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCitUbyBtYWtlIGRvY3VtZW50YXRpb24sIGVudGVyOgorCisgICAgLi93YWYgZG94eWdlbgorCitUaGlzIHdpbGwgcHJvZHVjZSBkb3h5Z2VuIEFQSSBjb2RlIGRvY3VtZW50YXRpb24gaW46CisKKyogYnVpbGQvZG9jL2h0bWwKKworU3VwcG9ydGVkIHBsYXRmb3JtcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisodG8gYmUgY29uZmlybWVkKQorCitORE4tQ1BQIGlzIHRlc3RlZCBvbiB0aGUgZm9sbG93aW5nIHBsYXRmb3JtczoKK1VidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpIChnY2MgNC42LjMpCitVYnVudHUgMTMuMDQgKDY0IGJpdCkgKGdjYyA0LjcuMykKK01hYyBPUyBYIDEwLjguNCAoY2xhbmcgNC4yKQorTWFjIE9TIFggMTAuOC40IChnY2MgNC4yKQorCitEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIHN0ZXBzIGFyZSBvbmx5IG5lZWRlZCB0byBkbyBkZXZlbG9wbWVudCBvZiBORE4tQ1BQIGNvZGUgYW5kIHVwZGF0ZSB0aGUgYnVpbGQgc3lzdGVtLgorRmlyc3QgZm9sbG93IHRoZSBQcmVyZXF1aXNpdGVzIGFib3ZlIGZvciB5b3VyIHBsYXRmb3Jtcy4KKworKiBNYWMgT1MgWCAxMC43LjMsIE1hYyBPUyBYIDEwLjguNCwgTWFjIE9TIFggMTAuOQorCisgICAgSW5zdGFsbCBNYWNQb3J0cyBmcm9tIGh0dHA6Ly93d3cubWFjcG9ydHMub3JnL2luc3RhbGwucGhwCisgICAgSW4gYSB0ZXJtaW5hbCwgZW50ZXI6CisKKyAgICAgICAgc3VkbyBwb3J0IGluc3RhbGwgZG94eWdlbgorCisqIFVidW50dSAxMi4wNCAoNjQgYml0IGFuZCAzMiBiaXQpLCBVYnVudHUgMTMuMDQgKDY0IGJpdCkKKworICAgIEluIGEgdGVybWluYWwsIGVudGVyOgorCisgICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGRveHlnZW4KKworRGV2ZWxvcG1lbnQKKy0tLS0tLS0tLS0tCisKK0ZvbGxvdyBEZXZlbG9wbWVudCBQcmVyZXF1aXNpdGVzIGFib3ZlIGZvciB5b3VyIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNkMmE5Yi4uMDAwMDAwMAotLS0gYS9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1pbmNsdWRlIGFtaW5jbHVkZS5hbQotCi0jIyBQbGFjZSBnZW5lcmF0ZWQgb2JqZWN0IGZpbGVzICgubykgaW50byB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlaXIgc291cmNlCi0jIyBmaWxlcywgaW4gb3JkZXIgdG8gYXZvaWQgY29sbGlzaW9ucyB3aGVuIG5vbi1yZWN1cnNpdmUgbWFrZSBpcyB1c2VkLgotQVVUT01BS0VfT1BUSU9OUyA9IHN1YmRpci1vYmplY3RzCi0KLSMjIEFkZGl0aW9uYWwgZmxhZ3MgdG8gcGFzcyB0byBhY2xvY2FsIHdoZW4gaXQgaXMgaW52b2tlZCBhdXRvbWF0aWNhbGx5IGF0Ci0jIyBtYWtlIHRpbWUuIFRoZSAke0FDTE9DQUxfRkxBR1N9IHZhcmlhYmxlIGlzIHBpY2tlZCB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudAotIyMgdG8gcHJvdmlkZSBhIHdheSBmb3IgdGhlIHVzZXIgdG8gc3VwcGx5IGFkZGl0aW9uYWwgYXJndW1lbnRzLgotQUNMT0NBTF9BTUZMQUdTID0gJHtBQ0xPQ0FMX0ZMQUdTfSAtSSBtNAotCi1saWJfTFRMSUJSQVJJRVMgPSBsaWJuZG4tY3BwLWRldi5sYQotCi0jICJtYWtlIGluc3RhbGwiIHdpbGwgYWxzbyBpbnN0YWxsIHRoZSBpbmNsdWRlIGhlYWRlcnMuCi1TVUJESVJTID0gaW5jbHVkZSAuIHRvb2xzIGV4YW1wbGVzCi0KLWlmIENPTVBJTEVfVEVTVFMKLSAgU1VCRElSUyArPSB0ZXN0cwotaWYgSEFWRV9CT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLCi0gIFNVQkRJUlMgKz0gdGVzdHNfYm9vc3QKLWVuZGlmCi1lbmRpZgotCi0jIEp1c3QgdGhlIEMgY29kZS4KLSMjIFRvIHJlZ2VuZXJhdGU6Ci0jIyBmb3IgaSBpbiBgZmluZCBzcmMvYyAtbmFtZSAnKi5jJyAtb3IgLW5hbWUgJyouaCdgOyBkbyBlY2hvICIgICRpIFxcIjsgZG9uZQotIyMKLSMjIE5vdGUgdGhhdCBwdWJsaWMgaGVhZGVyIGZpbGVzIGRvIG5vdCBuZWVkIHRvIGJlIGluY2x1ZGVkIGhlcmUgKGhhbmRsZWQgYnkgaW5jbHVkZS9NYWtlZmlsZS5hbSkKLWxpYm5kbl9jX2xhX1NPVVJDRVMgPSBcCi0gIHNyYy9jL2RhdGEuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGF0YS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuYyBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGVjb2Rlci5oIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbGVtZW50LXJlYWRlci5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbGVtZW50LXJlYWRlci5oIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmMgXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZm9yd2FyZGluZy1lbnRyeS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmMgXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWtleS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1rZXkuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtbmFtZS5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1uYW1lLmggXAotICBzcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5jIFwKLSAgc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuYyBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaCBcCi0gIHNyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwuaCBcCi0gIHNyYy9jL2Vycm9ycy5jIFwKLSAgc3JjL2MvZXJyb3JzLmggXAotICBzcmMvYy9mb3J3YXJkaW5nLWVudHJ5LmggXAotICBzcmMvYy9mb3J3YXJkaW5nLWZsYWdzLmMgXAotICBzcmMvYy9pbnRlcmVzdC5jIFwKLSAgc3JjL2MvaW50ZXJlc3QuaCBcCi0gIHNyYy9jL2tleS1sb2NhdG9yLmggXAotICBzcmMvYy9uYW1lLmMgXAotICBzcmMvYy9uYW1lLmggXAotICBzcmMvYy9wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCBcCi0gIHNyYy9jL3RyYW5zcG9ydC9zb2NrZXQtdHJhbnNwb3J0LmMgXAotICBzcmMvYy90cmFuc3BvcnQvc29ja2V0LXRyYW5zcG9ydC5oIFwKLSAgc3JjL2MvdHJhbnNwb3J0L3RjcC10cmFuc3BvcnQuaCBcCi0gIHNyYy9jL3RyYW5zcG9ydC91ZHAtdHJhbnNwb3J0LmggXAotICBzcmMvYy91dGlsL2Jsb2IuaCBcCi0gIHNyYy9jL3V0aWwvY3J5cHRvLmMgXAotICBzcmMvYy91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuYyBcCi0gIHNyYy9jL3V0aWwvZHluYW1pYy11aW50OC1hcnJheS5oIFwKLSAgc3JjL2MvdXRpbC9uZG5fbWVtb3J5LmMgXAotICBzcmMvYy91dGlsL25kbl9tZW1vcnkuaCBcCi0gIHNyYy9jL3V0aWwvbmRuX3JlYWxsb2MuYyBcCi0gIHNyYy9jL3V0aWwvbmRuX3JlYWxsb2MuaCBcCi0gIHNyYy9jL3V0aWwvdGltZS5jIFwKLSAgc3JjL2MvdXRpbC90aW1lLmgKLQotbGlibmRuX2NfbGFfTElCQUREICA9IEBPUEVOU1NMX0xJQlNACi1saWJuZG5fY19sYV9MREZMQUdTID0gQE9QRU5TU0xfTERGTEFHU0AKLWxpYm5kbl9jX2xhX0NGTEFHUyAgPSBAT1BFTlNTTF9JTkNMVURFU0AKLQotIyBDKysgY29kZSBhbmQgYWxzbyB0aGUgQyBjb2RlLgotIyMgVG8gcmVnZW5lcmF0ZToKLSMjIGZvciBpIGluIGBmaW5kIHNyYyAtbmFtZSAnKi5jcHAnIC1vciAtbmFtZSAnKi5ocHAnIC1vciAtbmFtZSAnKi5oJyAtYW5kIC1ub3QgLXBhdGggJ3NyYy9jLyonYDsgZG8gZWNobyAiICAkaSBcXCI7IGRvbmUKLWxpYm5kbl9jcHBfZGV2X2xhX1NPVVJDRVMgPSAkKGxpYm5kbl9jX2xhX1NPVVJDRVMpIFwKLSAgc3JjL2NvbW1vbi5jcHAgXAotICBzcmMvZGF0YS5jcHAgXAotICBzcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmhwcCBcCi0gIHNyYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaHBwIFwKLSAgc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaHBwIFwKLSAgc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtd2lyZS1mb3JtYXQuY3BwIFwKLSAgc3JjL2VuY29kaW5nL2Jsb2NrLmNwcCBcCi0gIHNyYy9lbmNvZGluZy9jcnlwdG9wcC9hc25fZXh0LmNwcCBcCi0gIHNyYy9lbmNvZGluZy9jcnlwdG9wcC9hc25fZXh0LmhwcCBcCi0gIHNyYy9lbmNvZGluZy9lbGVtZW50LWxpc3RlbmVyLmNwcCBcCi0gIHNyYy9lbmNvZGluZy9vaWQuY3BwIFwKLSAgc3JjL2VuY29kaW5nL3dpcmUtZm9ybWF0LmNwcCBcCi0gIHNyYy9leGNsdWRlLmNwcCBcCi0gIHNyYy9mYWNlLmNwcCBcCi0gIHNyYy9pbnRlcmVzdC5jcHAgXAotICBzcmMvbmFtZS5jcHAgXAotICBzcmMvbm9kZS5jcHAgXAotICBzcmMvc2VjdXJpdHkvY2VydGlmaWNhdGUtZXh0ZW5zaW9uLmNwcCBcCi0gIHNyYy9zZWN1cml0eS9jZXJ0aWZpY2F0ZS1zdWJqZWN0LWRlc2NyaXB0aW9uLmNwcCBcCi0gIHNyYy9zZWN1cml0eS9jZXJ0aWZpY2F0ZS5jcHAgXAotICBzcmMvc2VjdXJpdHkvaWRlbnRpdHktY2VydGlmaWNhdGUuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3B1YmxpYy1rZXkuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy1wdWJsaWMtaW5mby1zcWxpdGUzLmNwcCBcCi0gIHNyYy9zZWN1cml0eS9zZWMtdHBtLWZpbGUuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy1wdWJsaWMtaW5mby1tZW1vcnkuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy10cG0tbWVtb3J5LmNwcCBcCi0gIHNyYy9zZWN1cml0eS92ZXJpZmllci5jcHAgXAotICBzcmMvc2VjdXJpdHkvc2VjLXBvbGljeS1uby12ZXJpZnkuY3BwIFwKLSAgc3JjL3NlY3VyaXR5L3NlYy1wb2xpY3ktc2VsZi12ZXJpZnkuY3BwIFwKLSAgc3JjL3RyYW5zcG9ydC90Y3AtdHJhbnNwb3J0LmNwcCBcCi0gIHNyYy90cmFuc3BvcnQvdW5peC10cmFuc3BvcnQuY3BwIFwKLSAgc3JjL3V0aWwvYmxvYi1zdHJlYW0uaHBwIFwKLSAgc3JjL3V0aWwvYmxvYi5jcHAgXAotICBzcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmNwcCBcCi0gIHNyYy91dGlsL2NoYW5nZWQtZXZlbnQuaHBwIFwKLSAgc3JjL3V0aWwvZHluYW1pYy11aW50OC12ZWN0b3IuY3BwIFwKLSAgc3JjL3V0aWwvZHluYW1pYy11aW50OC12ZWN0b3IuaHBwIFwKLSAgc3JjL3V0aWwvbG9nZ2luZy5jcHAgXAotICBzcmMvdXRpbC9sb2dnaW5nLmhwcCBcCi0gIHNyYy91dGlsL25kbmQtaWQtZmV0Y2hlci5ocHAgXAotICBzcmMvdXRpbC9zdHJpbmctaGVscGVyLmhwcCBcCi0gIHNyYy91dGlsL3RpbWUuaHBwCi0KLWlmIEhBVkVfT1NYX1NFQ1VSSVRZCi0gIGxpYm5kbl9jcHBfZGV2X2xhX1NPVVJDRVMgKz0gc3JjL3NlY3VyaXR5L3NlYy10cG0tb3N4LmNwcAotZWxzZQotICBFWFRSQV9ESVNUID0gc3JjL3NlY3VyaXR5L3NlYy10cG0tb3N4LmNwcAotZW5kaWYKLQotbGlibmRuX2NwcF9kZXZfbGFfTElCQUREICA9IEBPUEVOU1NMX0xJQlNAICAgICBAQ1JZUFRPUFBfTElCU0AgICAgIEBPU1hfU0VDVVJJVFlfTElCU0AgIEBCT09TVF9TWVNURU1fTElCQCBAQk9PU1RfRklMRVNZU1RFTV9MSUJACi1saWJuZG5fY3BwX2Rldl9sYV9MREZMQUdTID0gQE9QRU5TU0xfTERGTEFHU0AgIEBDUllQVE9QUF9MREZMQUdTQCAgQFNRTElURTNfTERGTEFHU0AgICAgQEJPT1NUX0xERkxBR1NACi1saWJuZG5fY3BwX2Rldl9sYV9DRkxBR1MgID0gQE9QRU5TU0xfSU5DTFVERVNAIEBDUllQVE9QUF9JTkNMVURFU0AgQFNRTElURTNfQ0ZMQUdTQCAgICAgQEJPT1NUX0NQUEZMQUdTQAotCi1kaXN0X25vaW5zdF9TQ1JJUFRTID0gYXV0b2dlbi5zaAotCi1wa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCi1wa2djb25maWdfREFUQSA9IGxpYm5kbi1jcHAtZGV2LnBjCmRpZmYgLS1naXQgYS9hbWluY2x1ZGUuYW0gYi9hbWluY2x1ZGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZjY1MTUuLjAwMDAwMDAKLS0tIGEvYW1pbmNsdWRlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X3Byb2dfZG94eWdlbi5odG1sCi0KLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgRm9ybWF0LWluZGVwZW5kZW50IERveHlnZW4gcnVsZXMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLQotaWYgRFhfQ09ORF9kb2MKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgUnVsZXMgc3BlY2lmaWMgZm9yIEhUTUwgb3V0cHV0LiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX2h0bWwKLQotRFhfQ0xFQU5fSFRNTCA9IEBEWF9ET0NESVJAL2h0bWwKLQotZW5kaWYgRFhfQ09ORF9odG1sCi0KLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgUnVsZXMgc3BlY2lmaWMgZm9yIENITSBvdXRwdXQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLQotaWYgRFhfQ09ORF9jaG0KLQotRFhfQ0xFQU5fQ0hNID0gQERYX0RPQ0RJUkAvY2htCi0KLWlmIERYX0NPTkRfY2hpCi0KLURYX0NMRUFOX0NISSA9IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5jaGkKLQotZW5kaWYgRFhfQ09ORF9jaGkKLQotZW5kaWYgRFhfQ09ORF9jaG0KLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgTUFOIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX21hbgotCi1EWF9DTEVBTl9NQU4gPSBARFhfRE9DRElSQC9tYW4KLQotZW5kaWYgRFhfQ09ORF9tYW4KLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgUlRGIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3J0ZgotCi1EWF9DTEVBTl9SVEYgPSBARFhfRE9DRElSQC9ydGYKLQotZW5kaWYgRFhfQ09ORF9ydGYKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgWE1MIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3htbAotCi1EWF9DTEVBTl9YTUwgPSBARFhfRE9DRElSQC94bWwKLQotZW5kaWYgRFhfQ09ORF94bWwKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIFJ1bGVzIHNwZWNpZmljIGZvciBQUyBvdXRwdXQuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3BzCi0KLURYX0NMRUFOX1BTID0gQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnBzCi0KLURYX1BTX0dPQUwgPSBkb3h5Z2VuLXBzCi0KLWRveHlnZW4tcHM6IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wcwotCi1ARFhfRE9DRElSQC9AUEFDS0FHRUAucHM6IEBEWF9ET0NESVJAL0BQQUNLQUdFQC50YWcKLQljZCBARFhfRE9DRElSQC9sYXRleDsgXAotCXJtIC1mICouYXV4ICoudG9jICouaWR4ICouaW5kICouaWxnICoubG9nICoub3V0OyBcCi0JJChEWF9MQVRFWCkgcmVmbWFuLnRleDsgXAotCSQoTUFLRUlOREVYX1BBVEgpIHJlZm1hbi5pZHg7IFwKLQkkKERYX0xBVEVYKSByZWZtYW4udGV4OyBcCi0JY291bnRkb3duPTU7IFwKLQl3aGlsZSAkKERYX0VHUkVQKSAnUmVydW4gKExhVGVYfHRvIGdldCBjcm9zcy1yZWZlcmVuY2VzIHJpZ2h0KScgXAotCSAgICAgICAgICAgICAgICAgIHJlZm1hbi5sb2cgPiAvZGV2L251bGwgMj4mMSBcCi0JICAgJiYgdGVzdCAkJGNvdW50ZG93biAtZ3QgMDsgZG8gXAotCSAgICAkKERYX0xBVEVYKSByZWZtYW4udGV4OyBcCi0JICAgIGNvdW50ZG93bj1gZXhwciAkJGNvdW50ZG93biAtIDFgOyBcCi0JZG9uZTsgXAotCSQoRFhfRFZJUFMpIC1vIC4uL0BQQUNLQUdFQC5wcyByZWZtYW4uZHZpCi0KLWVuZGlmIERYX0NPTkRfcHMKLQotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgUERGIG91dHB1dC4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotCi1pZiBEWF9DT05EX3BkZgotCi1EWF9DTEVBTl9QREYgPSBARFhfRE9DRElSQC9AUEFDS0FHRUAucGRmCi0KLURYX1BERl9HT0FMID0gZG94eWdlbi1wZGYKLQotZG94eWdlbi1wZGY6IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wZGYKLQotQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnBkZjogQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnRhZwotCWNkIEBEWF9ET0NESVJAL2xhdGV4OyBcCi0Jcm0gLWYgKi5hdXggKi50b2MgKi5pZHggKi5pbmQgKi5pbGcgKi5sb2cgKi5vdXQ7IFwKLQkkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0JJChEWF9NQUtFSU5ERVgpIHJlZm1hbi5pZHg7IFwKLQkkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0JY291bnRkb3duPTU7IFwKLQl3aGlsZSAkKERYX0VHUkVQKSAnUmVydW4gKExhVGVYfHRvIGdldCBjcm9zcy1yZWZlcmVuY2VzIHJpZ2h0KScgXAotCSAgICAgICAgICAgICAgICAgIHJlZm1hbi5sb2cgPiAvZGV2L251bGwgMj4mMSBcCi0JICAgJiYgdGVzdCAkJGNvdW50ZG93biAtZ3QgMDsgZG8gXAotCSAgICAkKERYX1BERkxBVEVYKSByZWZtYW4udGV4OyBcCi0JICAgIGNvdW50ZG93bj1gZXhwciAkJGNvdW50ZG93biAtIDFgOyBcCi0JZG9uZTsgXAotCW12IHJlZm1hbi5wZGYgLi4vQFBBQ0tBR0VALnBkZgotCi1lbmRpZiBEWF9DT05EX3BkZgotCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jIyBSdWxlcyBzcGVjaWZpYyBmb3IgTGFUZVggKHNoYXJlZCBmb3IgUFMgYW5kIFBERikuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0KLWlmIERYX0NPTkRfbGF0ZXgKLQotRFhfQ0xFQU5fTEFURVggPSBARFhfRE9DRElSQC9sYXRleAotCi1lbmRpZiBEWF9DT05EX2xhdGV4Ci0KLS5QSE9OWTogZG94eWdlbi1ydW4gZG94eWdlbi1kb2MgJChEWF9QU19HT0FMKSAkKERYX1BERl9HT0FMKQotCi0uSU5URVJNRURJQVRFOiBkb3h5Z2VuLXJ1biAkKERYX1BTX0dPQUwpICQoRFhfUERGX0dPQUwpCi0KLWRveHlnZW4tcnVuOiBARFhfRE9DRElSQC9AUEFDS0FHRUAudGFnCi0KLWRveHlnZW4tZG9jOiBkb3h5Z2VuLXJ1biAkKERYX1BTX0dPQUwpICQoRFhfUERGX0dPQUwpCi0KLUBEWF9ET0NESVJAL0BQQUNLQUdFQC50YWc6ICQoRFhfQ09ORklHKSAkKHBrZ2luY2x1ZGVfSEVBREVSUykKLQlybSAtcmYgQERYX0RPQ0RJUkAKLQkkKERYX0VOVikgJChEWF9ET1hZR0VOKSAkKHNyY2RpcikvJChEWF9DT05GSUcpCi0KLURYX0NMRUFORklMRVMgPSBcCi0gICAgQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnRhZyBcCi0gICAgLXIgXAotICAgICQoRFhfQ0xFQU5fSFRNTCkgXAotICAgICQoRFhfQ0xFQU5fQ0hNKSBcCi0gICAgJChEWF9DTEVBTl9DSEkpIFwKLSAgICAkKERYX0NMRUFOX01BTikgXAotICAgICQoRFhfQ0xFQU5fUlRGKSBcCi0gICAgJChEWF9DTEVBTl9YTUwpIFwKLSAgICAkKERYX0NMRUFOX1BTKSBcCi0gICAgJChEWF9DTEVBTl9QREYpIFwKLSAgICAkKERYX0NMRUFOX0xBVEVYKQotCi1lbmRpZiBEWF9DT05EX2RvYwpkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDJlOTk1NGIuLjAwMDAwMDAKLS0tIGEvYXV0b2dlbi5zaAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyEvYmluL3NoIC1lCi0KLXRlc3QgLW4gIiRzcmNkaXIiIHx8IHNyY2Rpcj1gZGlybmFtZSAiJDAiYAotdGVzdCAtbiAiJHNyY2RpciIgfHwgc3JjZGlyPS4KLWF1dG9yZWNvbmYgLS1mb3JjZSAtLWluc3RhbGwgLS12ZXJib3NlICIkc3JjZGlyIgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTM4MDM5Li4wMDAwMDAwCi0tLSBhL2NvbmZpZ3VyZS5hYworKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi0jIFRvIGJ1aWxkIHVzaW5nIGF1dG90b29scywgc2VlIHRoZSBEZXZlbG9wbWVudCBzZWN0aW9uIG9mIHRoZSBmaWxlIElOU1RBTEwuCi0KLUFDX1BSRVJFUShbMi41OV0pCi1BQ19JTklUKFtuZG4tY3BwLWRldl0sIFswLjIuMV0sIFtuZG4tbGliQGxpc3RzLmNzLnVjbGEuZWR1XSwgW25kbi1jcHAtZGV2XSwgW2h0dHBzOi8vZ2l0aHViLmNvbS9uYW1lZC1kYXRhL25kbi1jcHBdKQotQU1fSU5JVF9BVVRPTUFLRShbMS4xMCAtV2FsbCBuby1kZWZpbmUgZm9yZWlnbl0pCi0KLUFDX0NPTkZJR19NQUNST19ESVIoW200XSkKLUFDX0NPTkZJR19TUkNESVIoW2NvbmZpZ3VyZS5hY10pCi0jIENyZWF0ZSBjb25maWcuaCB3aXRob3V0IHByZWZpeGVzLiAgUHV0IGl0IGluIHRoZSBpbmNsdWRlIGRpcmVjdG9yeSBzbyBDRkxBR1Mgd2lsbCBoYXZlIC1JLi9pbmNsdWRlIC4KLUFDX0NPTkZJR19IRUFERVJTKGluY2x1ZGUvY29uZmlnLmgpCi0jIEFkZCBwcmVmaXhlcyBhbmQgb3V0cHV0IHRvIGEgdW5pcXVlIGZpbGUgbmFtZSB3aGljaCB3aWxsIGdvIGludG8gdGhlIG5kbi1jcHAgaW5jbHVkZSBpbnN0YWxsIGRpcmVjdG9yeS4KLUFYX1BSRUZJWF9DT05GSUdfSChpbmNsdWRlL25kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmgsIG5kbi1jcHApCi1BTV9NQUlOVEFJTkVSX01PREUKLUFNX1BST0dfQVIKLUFDX1BST0dfTElCVE9PTAotTFRfUFJFUkVRKFsyLjJdKQotTFRfSU5JVCgpCi1BQ19QUk9HX0NYWAotQU1fUFJPR19DQ19DX08KLUFDX1BST0dfT0JKQ1hYCi1BQ19MQU5HKFtDKytdKQotCi0jIFNwZWNpYWwgY2FzZS4KLWNhc2UgIiRob3N0IiBpbgotICAqLWRhcndpbiogfCAqLW1hY29zMTAqKQotICAgICBpZiB0ZXN0IC1kIC9vcHQvbG9jYWwgOyB0aGVuCi0gICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1JL29wdC9sb2NhbC9pbmNsdWRlIgotICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLUkvb3B0L2xvY2FsL2luY2x1ZGUiCi0gICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS9vcHQvbG9jYWwvaW5jbHVkZSIKLSAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtTC9vcHQvbG9jYWwvbGliIgotICAgICBlbGlmIHRlc3QgLWQgL3N3IDsgdGhlbgotICAgICAgIENGTEFHUz0iJENGTEFHUyAtSS9zdy9pbmNsdWRlIgotICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLUkvc3cvaW5jbHVkZSIKLSAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3N3L2luY2x1ZGUiCi0gICAgICAgTERGTEFHUz0iJExERkxBR1MgLUwvc3cvbGliIgotICAgICBmaQotICA7OwotZXNhYwotCi1BQ19UWVBFX1NJWkVfVAotQUNfVFlQRV9JTlQ4X1QKLUFDX1RZUEVfSU5UMTZfVAotQUNfVFlQRV9JTlQzMl9UCi1BQ19UWVBFX0lOVDY0X1QKLUFDX1RZUEVfVUlOVDhfVAotQUNfVFlQRV9VSU5UMTZfVAotQUNfVFlQRV9VSU5UMzJfVAotQUNfVFlQRV9VSU5UNjRfVAotQUNfQ0hFQ0tfRlVOQ1MoW21lbWNtcF0gW21lbWNweV0gW21lbXNldF0pCi1BQ19DSEVDS19GVU5DUyhbc3RyY2hyXSwgOiwgQUNfTVNHX0VSUk9SKFsqKiogc3RyY2hyIG5vdCBmb3VuZC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DSEVDS19GVU5DUyhbc3NjYW5mXSwgOiwgQUNfTVNHX0VSUk9SKFsqKiogc3NjYW5mIG5vdCBmb3VuZC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DSEVDS19IRUFERVJTKFt0aW1lLmhdLCA6LCBBQ19NU0dfRVJST1IoWyoqKiB0aW1lLmggbm90IGZvdW5kLiBDaGVjayAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy5dKSkKLUFDX0NIRUNLX0hFQURFUlMoW3N5cy90aW1lLmhdLCA6LCBBQ19NU0dfRVJST1IoWyoqKiBzeXMvdGltZS5oIG5vdCBmb3VuZC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DSEVDS19GVU5DUyhbZ2V0dGltZW9mZGF5XSwgOiwgQUNfTVNHX0VSUk9SKFsqKiogZ2V0dGltZW9mZGF5IG5vdCBmb3VuZC4gcHJvY2Vzc0V2ZW50cyByZXF1aXJlcyBpdC4gQ2hlY2sgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuXSkpCi1BQ19DX0lOTElORQotCi0jIFVubGVzcyAtLXdpdGgtYysrMTEgc3BlY2lmaWVkLCBkbyBub3QgZW5hYmxlIEMrKzExIGZlYXR1cmVzCi1BWF9DWFhfQ09NUElMRV9TVERDWFhfMTEoLCBvcHRpb25hbCkKLQotQUNfQVJHX1dJVEgoW3N5c3RlbS1ib29zdF0sCi0gIEFTX0hFTFBfU1RSSU5HKAotICAgICAgWy0td2l0aG91dC1zeXN0ZW0tYm9vc3RdLAotICAgICAgW2RvIG5vdCBhdHRlbXB0IHRvIHVzZSBzeXN0ZW0taW5zdGFsbGVkIGJvb3N0IGxpYnJhcmllcyBhbmQgdXNlIHRoZSBidW5kbGVkIHZlcnNpb24gKG5kbmJvb3N0KSB3aGVuIG5lY2Vzc2FyeS5dCi0gICksCi0gIFsKLSAgd2FudF9zeXN0ZW1fYm9vc3Q9InllcyIKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotICAgICAgd2FudF9zeXN0ZW1fYm9vc3Q9Im5vIgotICBmaQotICBdLAotICBbd2FudF9zeXN0ZW1fYm9vc3Q9InllcyJdCi0pCi0KLUFYX0JPT1NUX0JBU0UoWzEuNDIuMF0sCi0gIFsKLSAgICBpZiB0ZXN0ICIkd2FudF9zeXN0ZW1fYm9vc3QiID09ICJ5ZXMiIDsgdGhlbgotICAgICAgQUNfREVGSU5FKFVTRV9TWVNURU1fQk9PU1QsWzFdLFt1c2Ugc3lzdGVtLWluc3RhbGxlZCBib29zdCBsaWJyYXJpZXNdKQotICAgICAgQU1fQ09ORElUSU9OQUwoVVNFX1NZU1RFTV9CT09TVCwgdHJ1ZSkKLSAgICBlbHNlCi0gICAgICBBTV9DT05ESVRJT05BTChVU0VfU1lTVEVNX0JPT1NULCBmYWxzZSkKLSAgICBmaQotICBdLAotICBbQU1fQ09ORElUSU9OQUwoVVNFX1NZU1RFTV9CT09TVCwgZmFsc2UpXQotKQotQVhfQk9PU1RfQVNJTwotCi1BQ19BUkdfV0lUSChbdGVzdHNdLAotICBBU19IRUxQX1NUUklORygKLSAgICAgIFstLXdpdGgtdGVzdHNdLAotICAgICAgW0VuYWJsZSBjb21waWxhdGlvbiBvZiBsaWJyYXJ5IHRlc3RzIChkaXNhYmxlZCBieSBkZWZhdWx0KS5dCi0gICksCi0gIFsKLSAgICB3YW50X3Rlc3RzPSJ5ZXMiCi0gICAgQU1fQ09ORElUSU9OQUwoQ09NUElMRV9URVNUUywgdHJ1ZSkKLSAgXSwKLSAgWwotICAgIHdhbnRfdGVzdHM9Im5vIgotICAgIEFNX0NPTkRJVElPTkFMKENPTVBJTEVfVEVTVFMsIGZhbHNlKQotICBdCi0pCi0KLSMgQHRvZG86IFRoZXNlIGNoZWNrcyBhcmUgbm90IHJlYWxseSBvcHRpb25hbAotQVhfQk9PU1RfU1lTVEVNCi1BWF9CT09TVF9GSUxFU1lTVEVNCi1BWF9CT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLCi1BTV9DT05ESVRJT05BTChIQVZFX0JPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUkssIFt0ZXN0ICJ4JGF4X2N2X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsiID0gInh5ZXMiXSkKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ210aW1lIHN1cHBvcnRdKQotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgKLSAgICBbWyNpbmNsdWRlIDx0aW1lLmg+XV0KLSAgICBbWyNpbmNsdWRlIDxzeXMvdGltZS5oPl1dCi0gICAgW1tzdHJ1Y3QgdGltZXZhbCB0djtdXQotICAgIFtbaW50IHJlc3VsdDEgPSBnZXR0aW1lb2ZkYXkoJnR2LCAwKTtdXQotICAgIFtbdGltZV90IHRpbWUxID0gdGltZSgwKTtdXQotICAgIFtbc3RydWN0IHRtKiB0bTEgPSBnbXRpbWUoJnRpbWUxKTtdXQotICAgIFtbdGltZV90IHRpbWUyID0gdGltZWdtKHRtMSk7XV0pCi1dLCBbCi0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfR01USU1FX1NVUFBPUlRdLCAxLCBbMSBpZiBoYXZlIHN5cy90aW1lIGdtdGltZSBzdXBwb3J0IGluY2x1ZGluZyB0aW1lZ20uXSkKLV0sIFsKLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKFtIQVZFX0dNVElNRV9TVVBQT1JUXSwgMCwgWzEgaWYgaGF2ZSBzeXMvdGltZSBnbXRpbWUgc3VwcG9ydCBpbmNsdWRpbmcgdGltZWdtLl0pCi1dKQotCi0jIFJlcXVpcmUgb3BlbnNzbCAobGliY3J5cHRvKS4KLUFYX0NIRUNLX09QRU5TU0woW10sIFtBQ19NU0dfRkFJTFVSRShbY2FuJ3QgZmluZCBvcGVuc3NsIGNyeXB0byBsaWJdKV0pCi0KLUFYX0xJQl9DUllQVE9QUChbXSwgW0FDX01TR19GQUlMVVJFKFtjYW4ndCBmaW5kIGNyeXB0bysrIGxpYnJhcnldKV0pCi0KLSMgQ29uZGl0aW9uYWxseSB1c2UgbGlic3FsaXRlMy4gIEFYX0xJQl9TUUxJVEUzIGRlZmluZXMgSEFWRV9TUUxJVEUzIGluIGNvbmZkZWZzLmggLgotQVhfTElCX1NRTElURTMoKQotaWYgZ3JlcCAtcSAiI2RlZmluZSBIQVZFX1NRTElURTMiIGNvbmZkZWZzLmggOyB0aGVuCi0gIEFDX0NIRUNLX0xJQihbc3FsaXRlM10sIFtzcWxpdGUzX29wZW5dLCBbIF0sICMgc3BhY2UgbmVjZXNzYXIgdG8gcHJldmVudCB1cGRhdGluZyBMSUJTCi0gICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUoW2hhdmUgc3FsaXRlMiBoZWFkZXJzIGJ1dCBubyBsaWJzcWxpdGUzXSldKQotZWxzZQotICBBQ19NU0dfRVJST1IoTWlzc2luZyByZXF1aXJlZCBsaWJzcWxpdGUzIGxpYnJhcnkpCi1maQotCi0KLSMgQ29uZGl0aW9uYWxseSB1c2UgdGhlIE9TWCBTZWN1cml0eSBmcmFtZXdvcmsgLgotQUNfTVNHX0NIRUNLSU5HKFtmb3IgT1NYIFNlY3VyaXR5IGZyYW1ld29ya10pCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKAotICAgIFtbI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+XV0KLSAgICBbWyNpbmNsdWRlIDxTZWN1cml0eS9TZWN1cml0eS5oPl1dCi0gICAgW1sjaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVTZXJ2aWNlcy5oPl1dCi0gICAgW1t2b2lkIHRlc3QoKSB7IFNlY0tleWNoYWluUmVmIHg7IH1dXSkKLV0sIFsKLSAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9PU1hfU0VDVVJJVFldLCAxLCBbMSBpZiBoYXZlIHRoZSBPU1ggZnJhbWV3b3JrLl0pCi0gICAgQU1fQ09ORElUSU9OQUwoSEFWRV9PU1hfU0VDVVJJVFksIHRydWUpCi0KLSAgICBPU1hfU0VDVVJJVFlfTElCUz0iLWZyYW1ld29yayBTZWN1cml0eSIKLSAgICBBQ19TVUJTVChbT1NYX1NFQ1VSSVRZX0xJQlNdKQotXSwgWwotICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBBTV9DT05ESVRJT05BTChIQVZFX09TWF9TRUNVUklUWSwgZmFsc2UpCi1dKQotCi1EWF9IVE1MX0ZFQVRVUkUoT04pCi1EWF9DSE1fRkVBVFVSRShPRkYpCi1EWF9DSElfRkVBVFVSRShPRkYpCi1EWF9NQU5fRkVBVFVSRShPRkYpCi1EWF9SVEZfRkVBVFVSRShPRkYpCi1EWF9YTUxfRkVBVFVSRShPRkYpCi1EWF9QREZfRkVBVFVSRShPRkYpCi1EWF9QU19GRUFUVVJFKE9GRikKLURYX0lOSVRfRE9YWUdFTihbJFBBQ0tBR0VfTkFNRV0sW0RveHlmaWxlXSkKLQotQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZQotICAgICAgICAgICAgICAgICBpbmNsdWRlL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIGV4YW1wbGVzL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIHRvb2xzL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIHRlc3RzL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIHRlc3RzX2Jvb3N0L01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIGxpYm5kbi1jcHAtZGV2LnBjXSkKLUFDX09VVFBVVApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvTWFrZWZpbGUuYW0gYi9leGFtcGxlcy9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIxYTg2Ny4uMDAwMDAwMAotLS0gYS9leGFtcGxlcy9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi1MREFERCA9IC4uL2xpYm5kbi1jcHAtZGV2LmxhIEBCT09TVF9TWVNURU1fTElCQAotCi1ub2luc3RfUFJPR1JBTVM9Y29uc3VtZXIgcHJvZHVjZXIKLQotY29uc3VtZXJfU09VUkNFUyA9IGNvbnN1bWVyLmNwcAotcHJvZHVjZXJfU09VUkNFUyA9IHByb2R1Y2VyLmNwcApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvd3NjcmlwdCBiL2V4YW1wbGVzL3dzY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNmODU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2V4YW1wbGVzL3dzY3JpcHQKQEAgLTAsMCArMSwxMiBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorCit0b3AgPSAnLi4nCisKK2RlZiBidWlsZChibGQpOgorICAgIGZvciBhcHAgaW4gYmxkLnBhdGguYW50X2dsb2IoJyouY3BwJyk6CisgICAgICAgIGJsZChmZWF0dXJlcz1bJ2N4eCcsICdjeHhwcm9ncmFtJ10sCisgICAgICAgICAgICB0YXJnZXQgPSAnJXMnICUgKHN0cihhcHAuY2hhbmdlX2V4dCgnJywnLmNwcCcpKSksCisgICAgICAgICAgICBzb3VyY2UgPSBhcHAsCisgICAgICAgICAgICB1c2UgPSAnbmRuLWNwcC1kZXYnLAorICAgICAgICAgICAgaW5zdGFsbF9wcmVmaXggPSBOb25lLAorICAgICAgICAgICAgKSAgICAgICAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL01ha2VmaWxlLmFtIGIvaW5jbHVkZS9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwOWVhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMTk3ICswLDAgQEAKLSMgIm1ha2UgaW5zdGFsbCIgd2lsbCBpbnN0YWxsIHRoZXNlIGluIHRoZSBpbnN0YWxsIGluY2x1ZGUgZGlyZWN0b3J5LCBmb3IgZXhhbXBsZQotIyAvdXNyL2xvY2FsL25kbi1jcHAtZGV2L25hbWUuaHBwLgotIyBUaGVzZSBmaWxlcyBhcmUgaW5jbHVkZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHdpdGgsIGZvciBleGFtcGxlCi0jICNpbmNsdWRlIDxuZG4tY3BwLWRldi9uYW1wLmhwcD4KLSMgSW50ZXJuYWwgaW5jbHVkZSBoZWFkZXJzIGFyZSBub3QgcHV0IGluIHRoaXMgcHVibGljIGluc3RhbGwgZGlyZWN0b3J5LgotCi0jIFB1YmxpYyBDIGhlYWRlcnMuCi1uZG5fY3BwX2NfaGVhZGVycyA9IFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi8qLmgpIFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi9jLyouKikgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L2MvZW5jb2RpbmcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuLWNwcC1kZXYvYy91dGlsLyouKikKLQotIyBQdWJsaWMgQysrIGhlYWRlcnMuCi0jIFVzZSBuZG4tY3BwLWRldi8qLmhwcCBpbnN0ZWFkIG9mICouKiB0byBub3Qgb3ZlcndyaXRlICouaCBmcm9tIGFib3ZlLgotbmRuX2NwcF9jcHBfaGVhZGVycyA9IFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi8qLmhwcCkgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L2VuY29kaW5nLyouKikgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L3NlY3VyaXR5LyouKikgXAotICAkKHdpbGRjYXJkIG5kbi1jcHAtZGV2L3RyYW5zcG9ydC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG4tY3BwLWRldi91dGlsLyouKikKLQotbmRuYm9vc3RfaGVhZGVycyA9IFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC91dGlsaXR5LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3V0aWxpdHkvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3VuaXRzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3VuaXRzL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC91bm9yZGVyZWQvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9yYW5nZS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9yYW5nZS9hbGdvcml0aG0vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmFuZ2UvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3JhbmdlL2RldGFpbC92YzYvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3Qvc21hcnRfcHRyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW50cnVzaXZlLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZW9mLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3R5cGVvZi9kbWMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZW9mL21zdmMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uZmlnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2NvbmZpZy9ub190cjEvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uZmlnL2FiaS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdGVzdC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L3V0aWxzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L291dHB1dC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90ZXN0L2ltcGwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdGVzdC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbWF0aC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21hdGgvdG9vbHMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbWF0aC9wb2xpY2llcy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9iaW5kLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2l0ZXJhdG9yLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL3ZlY3Rvci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9tcGwvbGltaXRzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9saXN0LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21wbC9saXN0L2F1eF8vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmVnZXgvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmVnZXgvY29uZmlnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3JlZ2V4L3Y0LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZmlsZXN5c3RlbS8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9maWxlc3lzdGVtL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pb3N0cmVhbXMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvaW50ZWdlci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9vcHRpb25hbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9udW1lcmljLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9yYW5kb20vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcmFuZG9tL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9zeXN0ZW0vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29udGFpbmVyLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uYWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcGVuZGluZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pby8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9pby9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZXhjZXB0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9lZGcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL21zdmMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2VkZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvbXN2Yy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5LyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbXBhcmlzb24vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2RtYy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L21vdmUvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbW92ZS9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvYWxnb3JpdGhtLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZV90cmFpdHMvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHVwbGUvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvdHVwbGUvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2RldGFpbC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9jY19sb29wLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy8qLiopIFwKLSAgJCh3aWxkY2FyZCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2NvbmNlcHQvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvKi4qKSBcCi0gICQod2lsZGNhcmQgbmRuYm9vc3QvbGFtYmRhLyouKikgXAotICAkKHdpbGRjYXJkIG5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvKi4qKQotCi1ub2Jhc2VfaW5jbHVkZV9IRUFERVJTID0gJChuZG5fY3BwX2NfaGVhZGVycykgJChuZG5fY3BwX2NwcF9oZWFkZXJzKQotCi1pZiAhIFVTRV9TWVNURU1fQk9PU1QKLSAgbm9iYXNlX2luY2x1ZGVfSEVBREVSUyArPSAkKG5kbmJvb3N0X2hlYWRlcnMpCi1lbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2NvbW1vbi5oIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2NvbW1vbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmVkY2VmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9jb21tb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9DT01NT05fSAotI2RlZmluZSBORE5fQ09NTU9OX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0vLyBUT0RPOiBJcyBzdGRkZWYuaCBwb3J0YWJsZT8KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEEgdGltZSBpbnRlcnZhbCByZXByZXNlbnRlZCBhcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4KLSAqLwotdHlwZWRlZiBpbnQ2NF90IG5kbl9NaWxsaXNlY29uZHM7Ci0gICAKLS8qKgotICogVGhlIGNhbGVuZGFyIHRpbWUgcmVwcmVzZW50ZWQgYXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMS8xLzE5NzAuCi0gKi8KLXR5cGVkZWYgaW50NjRfdCBuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9kYXRhLXR5cGVzLmggYi9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZGF0YS10eXBlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Njg3ODZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9kYXRhLXR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fREFUQV9UWVBFU19ICi0jZGVmaW5lIE5ETl9EQVRBX1RZUEVTX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIGVudW0gewotICBuZG5fQ29udGVudFR5cGVfREFUQSA9IDAsCi0gIG5kbl9Db250ZW50VHlwZV9FTkNSID0gMSwKLSAgbmRuX0NvbnRlbnRUeXBlX0dPTkUgPSAyLAotICBuZG5fQ29udGVudFR5cGVfS0VZID0gIDMsCi0gIG5kbl9Db250ZW50VHlwZV9MSU5LID0gNCwKLSAgbmRuX0NvbnRlbnRUeXBlX05BQ0sgPSA1Ci19IG5kbl9Db250ZW50VHlwZTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5oIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY4OGE4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0VMRU1FTlRfTElTVEVORVJfSAotI2RlZmluZSBORE5fRUxFTUVOVF9MSVNURU5FUl9ICi0KLSNpbmNsdWRlICIuLi9jb21tb24uaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiogQW4gbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QgaG9sZHMgYSBmdW5jdGlvbiBwb2ludGVyIG9uUmVjZWl2ZWRFbGVtZW50LiAgWW91IGNhbiBleHRlbmQgdGhpcyBzdHJ1Y3Qgd2l0aCBkYXRhIHRoYXQKLSAqIHdpbGwgYmUgcGFzc2VkIHRvIG9uUmVjZWl2ZWRFbGVtZW50LgotICovCi1zdHJ1Y3QgbmRuX0VsZW1lbnRMaXN0ZW5lciB7Ci0gIHZvaWQgKCpvblJlY2VpdmVkRWxlbWVudCkoc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKnNlbGYsIHVpbnQ4X3QgKmVsZW1lbnQsIHNpemVfdCBlbGVtZW50TGVuZ3RoKTsgLyoqPCBzZWUgbmRuX0VsZW1lbnRMaXN0ZW5lcl9pbml0aWFsaXplICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QgdG8gdXNlIHRoZSBvblJlY2VpdmVkRWxlbWVudCBmdW5jdGlvbiBwb2ludGVyLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QKLSAqIEBwYXJhbSBvblJlY2VpdmVkRWxlbWVudCBwb2ludGVyIHRvIGEgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4gYW4gZW50aXJlIGJpbmFyeSBYTUwgZWxlbWVudCBpcyByZWNlaXZlZC4KLSAqIHNlbGYgaXMgdGhlIHBvaW50ZXIgdG8gdGhpcyBuZG5fRWxlbWVudExpc3RlbmVyIHN0cnVjdC4gIFNlZSBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlcl9vblJlY2VpdmVkRGF0YS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9FbGVtZW50TGlzdGVuZXJfaW5pdGlhbGl6ZQotICAoc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKnNlbGYsIHZvaWQgKCpvblJlY2VpdmVkRWxlbWVudCkoc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKnNlbGYsIHVpbnQ4X3QgKmVsZW1lbnQsIHNpemVfdCBlbGVtZW50TGVuZ3RoKSkKLXsKLSAgc2VsZi0+b25SZWNlaXZlZEVsZW1lbnQgPSBvblJlY2VpdmVkRWxlbWVudDsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZm9yd2FyZGluZy1mbGFncy5oIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2ZvcndhcmRpbmctZmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYzYmYwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvZm9yd2FyZGluZy1mbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0ZPUldBUkRJTkdfRkxBR1NfSAotI2RlZmluZSBORE5fRk9SV0FSRElOR19GTEFHU19ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBBbiBuZG5fRm9yd2FyZGluZ0ZsYWdzIG9iamVjdCBob2xkcyB0aGUgZmxhZ3Mgd2hpY2ggc3BlY2lmeSBob3cgdGhlIGZvcndhcmRpbmcgZGFlbW9uIHNob3VsZCBmb3J3YXJkIGFuIGludGVyZXN0IGZvcgotICogYSByZWdpc3RlcmVkIHByZWZpeC4gIFdlIHVzZSBhIHNlcGFyYXRlIEZvcndhcmRpbmdGbGFncyBvYmplY3QgdG8gcmV0YWluIGZ1dHVyZSBjb21wYXRpYmlsaXR5IGlmIHRoZSBkYWVtb24gZm9yd2FyZGluZwotICogYml0cyBhcmUgY2hhbmdlZCwgYW1lbmRlZCBvciBkZXByZWNhdGVkLgotICovCi1zdHJ1Y3QgbmRuX0ZvcndhcmRpbmdGbGFncyB7Ci0gIGludCBhY3RpdmU7IC8qKjwgMSBpZiB0aGUgZmxhZyBpcyBzZXQsIDAgaWYgY2xlYXJlZC4gKi8KLSAgaW50IGNoaWxkSW5oZXJpdDsKLSAgaW50IGFkdmVydGlzZTsKLSAgaW50IGxhc3Q7Ci0gIGludCBjYXB0dXJlOwotICBpbnQgbG9jYWw7Ci0gIGludCB0YXA7Ci0gIGludCBjYXB0dXJlT2s7ICAKLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fRm9yd2FyZGluZ0ZsYWdzIHN0cnVjdCB3aXRoIHRoZSBkZWZhdWx0IHdpdGggImFjdGl2ZSIgYW5kICJjaGlsZEluaGVyaXQiIHNldCBhbmQgYWxsIG90aGVyIGZsYWdzIGNsZWFyZWQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9Gb3J3YXJkaW5nRmxhZ3Mgc3RydWN0LgotICovCi12b2lkIG5kbl9Gb3J3YXJkaW5nRmxhZ3NfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdGbGFncyAqc2VsZik7Ci0KLS8qKgotICogR2V0IGFuIGludGVnZXIgd2l0aCB0aGUgYml0cyBzZXQgYWNjb3JkaW5nIHRvIHRoZSBmbGFncyBhcyB1c2VkIGJ5IHRoZSBGb3J3YXJkaW5nRW50cnkgbWVzc2FnZS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX0ZvcndhcmRpbmdGbGFncyBzdHJ1Y3QuCi0gKiBAcmV0dXJuIEFuIGludGVnZXIgd2l0aCB0aGUgYml0cyBzZXQuCi0gKi8KLWludCBuZG5fRm9yd2FyZGluZ0ZsYWdzX2dldEZvcndhcmRpbmdFbnRyeUZsYWdzKHN0cnVjdCBuZG5fRm9yd2FyZGluZ0ZsYWdzICpzZWxmKTsKLQotLyoqCi0gKiBTZXQgdGhlIGZsYWdzIGFjY29yZGluZyB0byB0aGUgYml0cyBpbiBmb3J3YXJkaW5nRW50cnlGbGFncyBhcyB1c2VkIGJ5IHRoZSBGb3J3YXJkaW5nRW50cnkgbWVzc2FnZS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX0ZvcndhcmRpbmdGbGFncyBzdHJ1Y3QuCi0gKiBAcGFyYW0gZmxhZ3MgQW4gaW50ZWdlciB3aXRoIHRoZSBiaXRzIHNldC4KLSAqLwotdm9pZCBuZG5fRm9yd2FyZGluZ0ZsYWdzX3NldEZvcndhcmRpbmdFbnRyeUZsYWdzKHN0cnVjdCBuZG5fRm9yd2FyZGluZ0ZsYWdzICpzZWxmLCBpbnQgZm9yd2FyZGluZ0VudHJ5RmxhZ3MpOwotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi9jL2ludGVyZXN0LXR5cGVzLmggYi9pbmNsdWRlL25kbi1jcHAtZGV2L2MvaW50ZXJlc3QtdHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ2NGUxNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvaW50ZXJlc3QtdHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9JTlRFUkVTVF9UWVBFU19ICi0jZGVmaW5lIE5ETl9JTlRFUkVTVF9UWVBFU19ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBlbnVtIHsKLSAgbmRuX0V4Y2x1ZGVfQ09NUE9ORU5UID0gMCwKLSAgbmRuX0V4Y2x1ZGVfQU5ZID0gMSAgCi19IG5kbl9FeGNsdWRlVHlwZTsKLQotZW51bSB7Ci0gIG5kbl9JbnRlcmVzdF9DSElMRF9TRUxFQ1RPUl9MRUZUID0gMCwKLSAgbmRuX0ludGVyZXN0X0NISUxEX1NFTEVDVE9SX1JJR0hUID0gMSwKLQotICBuZG5fSW50ZXJlc3RfQU5TV0VSX05PX0NPTlRFTlRfU1RPUkUgPSAwLAotICBuZG5fSW50ZXJlc3RfQU5TV0VSX0NPTlRFTlRfU1RPUkUgPSAxLAotICBuZG5fSW50ZXJlc3RfQU5TV0VSX0dFTkVSQVRFRCA9IDIsCi0gIG5kbl9JbnRlcmVzdF9BTlNXRVJfU1RBTEUgPSA0LCAgICAvLyBTdGFsZSBhbnN3ZXIgT0sKLSAgbmRuX0ludGVyZXN0X01BUktfU1RBTEUgPSAxNiwgICAgICAvLyBNdXN0IGhhdmUgc2NvcGUgMC4gIE1pY2hhZWwgY2FsbHMgdGhpcyBhICJoYWNrIgotCi0gIG5kbl9JbnRlcmVzdF9ERUZBVUxUX0FOU1dFUl9PUklHSU5fS0lORCA9IG5kbl9JbnRlcmVzdF9BTlNXRVJfQ09OVEVOVF9TVE9SRSB8IG5kbl9JbnRlcmVzdF9BTlNXRVJfR0VORVJBVEVECi19OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9rZXktdHlwZXMuaCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy9rZXktdHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyYWVlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2Mva2V5LXR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fS0VZX1RZUEVTX0gKLSNkZWZpbmUgTkROX0tFWV9UWVBFU19ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBlbnVtIHsKLSAgbmRuX0tleUxvY2F0b3JUeXBlX0tFWSA9IDEsCi0gIG5kbl9LZXlMb2NhdG9yVHlwZV9DRVJUSUZJQ0FURSA9IDIsCi0gIG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FID0gMwotfSBuZG5fS2V5TG9jYXRvclR5cGU7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gIG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfUFVCTElDX0tFWV9ESUdFU1QgPSAxLAotICBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0NFUlRJRklDQVRFX0RJR0VTVCA9IDIsCi0gIG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfSVNTVUVSX0tFWV9ESUdFU1QgPSAzLAotICBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9DRVJUSUZJQ0FURV9ESUdFU1QgPSA0Ci19IG5kbl9LZXlOYW1lVHlwZTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2MvdXRpbC9jcnlwdG8uaCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy91dGlsL2NyeXB0by5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2Q0N2ViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvYy91dGlsL2NyeXB0by5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0NSWVBUT19ICi0jZGVmaW5lIE5ETl9DUllQVE9fSAotCi0jaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3JzYS5oPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBDb21wdXRlIHRoZSBzaGEtMjU2IGRpZ2VzdCBvZiBkYXRhLgotICogQHBhcmFtIGRhdGEgUG9pbnRlciB0byB0aGUgaW5wdXQgYnl0ZSBhcnJheS4KLSAqIEBwYXJhbSBkYXRhTGVuZ3RoIFRoZSBsZW5ndGggb2YgZGF0YS4KLSAqIEBwYXJhbSBkaWdlc3QgQSBwb2ludGVyIHRvIGEgYnVmZmVyIG9mIHNpemUgU0hBMjU2X0RJR0VTVF9MRU5HVEggdG8gcmVjZWl2ZSB0aGUgZGF0YS4KLSAqLwotdm9pZCBuZG5fZGlnZXN0U2hhMjU2KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1aW50OF90ICpkaWdlc3QpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvY29tbW9uLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvY29tbW9uLmhwcAppbmRleCA1ZWZkM2EwLi45NTc3MmI2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L2NvbW1vbi5ocHAKKysrIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9jb21tb24uaHBwCkBAIC04LDkgKzgsMTIgQEAKICNpZm5kZWYgTkROX0NPTU1PTl9IUFAKICNkZWZpbmUgTkROX0NPTU1PTl9IUFAKIAorI2luY2x1ZGUgPG5kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisvLyBUT0RPOiBJcyBzdGRkZWYuaCBwb3J0YWJsZT8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKwogI2luY2x1ZGUgPHZlY3Rvcj4KLS8vIGNvbW1vbi5oIGluY2x1ZGUgbmRuLWNwcC1jb25maWcuaC4KLSNpbmNsdWRlICJjL2NvbW1vbi5oIgogCiAjaWYgTkROX0NQUF9IQVZFX0NYWDExCiAKQEAgLTE4LDkgKzIxLDYgQEAKICNlcnJvciAiTkROLUNQUC1ERVYgbGlicmFyeSBpcyBjb25maWd1cmVkIGFuZCBjb21waWxlZCBpbiBDKysxMSBtb2RlLCBidXQgdGhlIGN1cnJlbnQgY29tcGlsZXIgaXMgbm90IEMrKzExIGVuYWJsZWQiCiAjZW5kaWYKIAotLy8gRGVwZW5kaW5nIG9uIHdoZXJlIC4vY29uZmlndXJlIGZvdW5kIHNoYXJlZF9wdHIsIGRlZmluZSB0aGUgcHRyX2xpYiBuYW1lc3BhY2UuCi0vLyBXZSBhbHdheXMgdXNlIG5kbjo6cHRyX2xpYi4KLS8vICNpZiBORE5fQ1BQX0hBVkVfU1REX1NIQVJFRF9QVFIKICNpbmNsdWRlIDxtZW1vcnk+CiBuYW1lc3BhY2UgbmRuIHsgbmFtZXNwYWNlIHB0cl9saWIgPSBzdGQ7IH0KIApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiBuYW1lc3BhY2UgbmRuIHsgbmFtZXNwYWNlIGZ1bmNfbGliID0gc3RkOyB9CiAKLSNlbGlmIE5ETl9DUFBfVVNFX1NZU1RFTV9CT09TVAorI2Vsc2UKIAogLy8gI2lmIE5ETl9DUFBfSEFWRV9CT09TVF9TSEFSRURfUFRSCiAjaW5jbHVkZSA8Ym9vc3Qvc2hhcmVkX3B0ci5ocHA+CkBAIC00MSwzNyArNDEsNiBAQAogI2luY2x1ZGUgPGJvb3N0L2JpbmQuaHBwPgogbmFtZXNwYWNlIG5kbiB7IG5hbWVzcGFjZSBmdW5jX2xpYiA9IGJvb3N0OyB9CiAKLSNlbHNlIC8vIHVzZSBlbWJlZGRlZCBib29zdCBoZWFkZXJzCi0vKiBVc2UgdGhlIGJvb3N0IGhlYWRlciBmaWxlcyBpbiB0aGlzIGRpc3RyaWJ1dGlvbiB0aGF0IHdlcmUgZXh0cmFjdGVkIHdpdGg6Ci1jZCA8Qk9PU1QgREVWRUxPUE1FTlQgRElSRUNUT1JZIFdJVEggYm9vc3QgU1VCRElSRUNUT1JZPgotZGlzdC9iaW4vYmNwIC0tbmFtZXNwYWNlPW5kbmJvb3N0IHNoYXJlZF9wdHIgbWFrZV9zaGFyZWQgd2Vha19wdHIgZnVuY3Rpb24gYmluZCBhbnkgaW9zdHJlYW1zIDxORE4tQ1BQLURFViBST09UPi9pbmNsdWRlCi1jZCA8TkROLUNQUC1ERVYgUk9PVD4vaW5jbHVkZQotcm0gLXJmIGJvb3N0LmNzcyBib29zdC5wbmcgSmFtcm9vdCBsaWJzCi1tdiBib29zdCBuZG5ib29zdAotY2QgbmRuYm9vc3QKLSMgUmVwbGFjZSB3aGVuIGluY2x1ZGluZyBmaWxlcy4KLSh1bnNldCBMQU5HOyBmaW5kIC4gLXR5cGUgZiAtZXhlYyBzZWQgLWkgJycgJ3MvXDxib29zdFwvL1w8bmRuYm9vc3RcLy9nJyB7fSArKQotKHVuc2V0IExBTkc7IGZpbmQgLiAtdHlwZSBmIC1leGVjIHNlZCAtaSAnJyAncy9cImJvb3N0XC8vXCJuZG5ib29zdFwvL2cnIHt9ICspCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzLyBib29zdFwvLyBuZG5ib29zdFwvL2cnIHt9ICspCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzLyhib29zdFwvLyhuZG5ib29zdFwvL2cnIHt9ICspCi0jIFJlcGxhY2UgbWFjcm8gZGVmaW5pdGlvbnMuCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzL0JPT1NUXy9ORE5CT09TVF8vZycge30gKykKLSMgUmVwbGFjZSBoZWFkZXIgaW5jbHVkZSBndWFyZHMgd2hpY2ggZG9uJ3Qgc3RhcnQgd2l0aCBCT09TVF8gLiAgVGhpcyBtYXkgcmVzdWx0IGluIHNvbWUgd2l0aCBORE5CT09TVCB0d2ljZSwgYnV0IHRoYXQgaXMgT0suCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzL19EV0EvX05ETkJPT1NUX0RXQS9nJyB7fSArKQotKHVuc2V0IExBTkc7IGZpbmQgLiAtdHlwZSBmIC1leGVjIHNlZCAtaSAnJyAncy8gVVVJRF8vIE5ETkJPT1NUX1VVSURfL2cnIHt9ICspCi0odW5zZXQgTEFORzsgZmluZCAuIC10eXBlIGYgLWV4ZWMgc2VkIC1pICcnICdzLyBGSUxFX2Jvb3N0LyBGSUxFX25kbmJvb3N0L2cnIHt9ICspCi0jIFJlcGxhY2UgdGhlIG1wbF8gYmFycmllciBuYW1lc3BhY2UuICBUaGlzIHNob3VsZCBvbmx5IGNoYW5nZSBmaWxlIGFkbF9iYXJyaWVyLmhwcC4KLSh1bnNldCBMQU5HOyBmaW5kIC4gLXR5cGUgZiAtZXhlYyBzZWQgLWkgJycgJ3MvIG1wbF8vIG5kbmJvb3N0X21wbF8vZycge30gKykKLSAqLwotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21ha2Vfc2hhcmVkLmhwcD4KLW5hbWVzcGFjZSBuZG4geyBuYW1lc3BhY2UgcHRyX2xpYiA9IG5kbmJvb3N0OyB9Ci0KLS8vIFVzZSB0aGUgYm9vc3QgaGVhZGVyIGZpbGVzIGluIHRoaXMgZGlzdHJpYnV0aW9uIHRoYXQgd2VyZSBleHRyYWN0ZWQgYXMgYWJvdmU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQuaHBwPgotbmFtZXNwYWNlIG5kbiB7IG5hbWVzcGFjZSBmdW5jX2xpYiA9IG5kbmJvb3N0OyB9Ci0KICNlbmRpZgogCiBuYW1lc3BhY2UgbmRuIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvYmluYXJ5LXhtbC13aXJlLWZvcm1hdC5ocHAgYi9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL2JpbmFyeS14bWwtd2lyZS1mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjRmMGFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvYmluYXJ5LXhtbC13aXJlLWZvcm1hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MV0lSRUZPUk1BVF9IUFAKLSNkZWZpbmUgTkROX0JJTkFSWVhNTFdJUkVGT1JNQVRfSFBQCi0KLSNpbmNsdWRlICJ3aXJlLWZvcm1hdC5ocHAiCi0KLW5hbWVzcGFjZSBuZG4gewotCi0vKioKLSAqIEEgQmluYXJ5WG1sV2lyZUZvcm1hdCBleHRlbmRzIFdpcmVGb3JtYXQgdG8gb3ZlcnJpZGUgaXRzIHZpcnR1YWwgbWV0aG9kcyB0byBpbXBsZW1lbnQgZW5jb2RpbmcgYW5kIGRlY29kaW5nCi0gKiB1c2luZyBiaW5hcnkgWE1MLgotICovCi1jbGFzcyBCaW5hcnlYbWxXaXJlRm9ybWF0IDogcHVibGljIFdpcmVGb3JtYXQgewotcHVibGljOgotICAvKioKLSAgICogRW5jb2RlIGludGVyZXN0IGluIGJpbmFyeSBYTUwgYW5kIHJldHVybiB0aGUgZW5jb2RpbmcuCi0gICAqIEBwYXJhbSBpbnRlcmVzdCBUaGUgSW50ZXJlc3Qgb2JqZWN0IHRvIGVuY29kZS4KLSAgICogQHJldHVybiBBIEJsb2IgY29udGFpbmluZyB0aGUgZW5jb2RpbmcuCi0gICAqLyAgCi0gIHZpcnR1YWwgQmxvYiAKLSAgZW5jb2RlSW50ZXJlc3QoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0KTsKLSAgICAKLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhbiBpbnRlcmVzdCBpbiBiaW5hcnkgWE1MIGFuZCBzZXQgdGhlIGZpZWxkcyBvZiB0aGUgaW50ZXJlc3Qgb2JqZWN0LgotICAgKiBAcGFyYW0gaW50ZXJlc3QgVGhlIEludGVyZXN0IG9iamVjdCB3aG9zZSBmaWVsZHMgYXJlIHVwZGF0ZWQuCi0gICAqIEBwYXJhbSBpbnB1dCBBIHBvaW50ZXIgdG8gdGhlIGlucHV0IGJ1ZmZlciB0byBkZWNvZGUuCi0gICAqIEBwYXJhbSBpbnB1dExlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGlucHV0LgotICAgKi8KLSAgdmlydHVhbCB2b2lkIAotICBkZWNvZGVJbnRlcmVzdChJbnRlcmVzdCYgaW50ZXJlc3QsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgpOwotCi0gIC8qKgotICAgKiBFbmNvZGUgZGF0YSB3aXRoIGJpbmFyeSBYTUwgYW5kIHJldHVybiB0aGUgZW5jb2RpbmcuCi0gICAqIEBwYXJhbSBkYXRhIFRoZSBEYXRhIG9iamVjdCB0byBlbmNvZGUuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBlbmNvZGluZyBpbiBvcmRlciB0byBzaWduLCB5b3UgY2FuIGNhbGwgZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBlbmNvZGluZyBpbiBvcmRlciB0byBzaWduLCB5b3UgY2FuIGNhbGwgZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHJldHVybiBBIEJsb2IgY29udGFpbmluZyB0aGUgZW5jb2RpbmcuCi0gICAqLwotICB2aXJ0dWFsIEJsb2IgCi0gIGVuY29kZURhdGEKLSAgICAoY29uc3QgRGF0YSYgZGF0YSwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCk7Ci0gIAotICAvKioKLSAgICogRGVjb2RlIGlucHV0IGFzIGEgZGF0YSBwYWNrZXQgaW4gYmluYXJ5IFhNTCBhbmQgc2V0IHRoZSBmaWVsZHMgaW4gdGhlIGRhdGEgb2JqZWN0LgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3Qgd2hvc2UgZmllbGRzIGFyZSB1cGRhdGVkLgotICAgKiBAcGFyYW0gaW5wdXQgQSBwb2ludGVyIHRvIHRoZSBpbnB1dCBidWZmZXIgdG8gZGVjb2RlLgotICAgKiBAcGFyYW0gaW5wdXRMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiBpbnB1dC4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgaW5wdXQgYnVmZmVyIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBkZWNvZGluZyBpbiBvcmRlciB0byB2ZXJpZnksIHlvdSBjYW4gY2FsbCAKLSAgICogZGVjb2RlRGF0YShEYXRhJiBkYXRhLCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGlucHV0IGJ1ZmZlciBvZiB0aGUgZW5kIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZGVjb2RpbmcgaW4gb3JkZXIgdG8gdmVyaWZ5LCB5b3UgY2FuIGNhbGwgCi0gICAqIGRlY29kZURhdGEoRGF0YSYgZGF0YSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqLyAgCi0gIHZpcnR1YWwgdm9pZCAKLSAgZGVjb2RlRGF0YQotICAgIChEYXRhJiBkYXRhLCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KTsKLQotICAvKioKLSAgICogRW5jb2RlIGZvcndhcmRpbmdFbnRyeSBpbiBiaW5hcnkgWE1MIGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLiAKLSAgICogQHBhcmFtIGZvcndhcmRpbmdFbnRyeSBUaGUgRm9yd2FyZGluZ0VudHJ5IG9iamVjdCB0byBlbmNvZGUuCi0gICAqIEByZXR1cm4gQSBCbG9iIGNvbnRhaW5pbmcgdGhlIGVuY29kaW5nLgotICAgKi8KLSAgdmlydHVhbCBCbG9iIAotICBlbmNvZGVGb3J3YXJkaW5nRW50cnkoY29uc3QgRm9yd2FyZGluZ0VudHJ5JiBmb3J3YXJkaW5nRW50cnkpOwotICAKLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhIGZvcndhcmRpbmcgZW50cnkgaW4gYmluYXJ5IFhNTCBhbmQgc2V0IHRoZSBmaWVsZHMgb2YgdGhlIGZvcndhcmRpbmdFbnRyeSBvYmplY3QuIAotICAgKiBAcGFyYW0gZm9yd2FyZGluZ0VudHJ5IFRoZSBGb3J3YXJkaW5nRW50cnkgb2JqZWN0IHdob3NlIGZpZWxkcyBhcmUgdXBkYXRlZC4KLSAgICogQHBhcmFtIGlucHV0IEEgcG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVyIHRvIGRlY29kZS4KLSAgICogQHBhcmFtIGlucHV0TGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuCi0gICAqLwotICB2aXJ0dWFsIHZvaWQgCi0gIGRlY29kZUZvcndhcmRpbmdFbnRyeShGb3J3YXJkaW5nRW50cnkmIGZvcndhcmRpbmdFbnRyeSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCk7Ci19OwotICAKLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5ocHAgYi9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDEzMzEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fRUxFTUVOVF9MSVNURU5FUl9IUFAKLSNkZWZpbmUgTkROX0VMRU1FTlRfTElTVEVORVJfSFBQCi0KLSNpbmNsdWRlICIuLi9jL2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuaCIKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLS8qKgotICogQW4gRWxlbWVudExpc3RlbmVyIGV4dGVuZHMgYW4gbmRuX0VsZW1lbnRMaXN0ZW5lciBzdHJ1Y3QgdG8gcHJvdmVkIGFuIGFic3RyYWN0IHZpcnR1YWwgb25SZWNlaXZlZEVsZW1lbnQgZnVuY3Rpb24gd2hpY2ggd3JhcHMKLSAqIHRoZSBvblJlY2VpdmVkRWxlbWVudCB1c2VkIGJ5IHRoZSBuZG5fRWxlbWVudExpc3RlbmVyIHN0cnVjdC4gIFlvdSBtdXN0IGV4dGVuZCB0aGlzIGNsYXNzIHRvIG92ZXJyaWRlIG9uUmVjZWl2ZWRFbGVtZW50LgotICovCi1jbGFzcyBFbGVtZW50TGlzdGVuZXIgOiBwdWJsaWMgbmRuX0VsZW1lbnRMaXN0ZW5lciB7Ci1wdWJsaWM6Ci0gIEVsZW1lbnRMaXN0ZW5lcigpIAotICB7Ci0gICAgbmRuX0VsZW1lbnRMaXN0ZW5lcl9pbml0aWFsaXplKHRoaXMsIHN0YXRpY09uUmVjZWl2ZWRFbGVtZW50KTsKLSAgfQotICAKLSAgLyoqCi0gICAqIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gZW50aXJlIGJpbmFyeSBYTUwgZWxlbWVudCBpcyByZWNlaXZlZC4gIFlvdSBtdXN0IGV4dGVuZCB0aGlzIGNsYXNzIHRvIG92ZXJyaWRlIHRoaXMgbWV0aG9kLgotICAgKiBAcGFyYW0gZWxlbWVudCBwb2ludGVyIHRvIHRoZSBiaW5hcnkgWE1MIGVsZW1lbnQuICBUaGlzIGJ1ZmZlciBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIGNhbGwuICBJZiB5b3UgbmVlZCB0aGUgZGF0YQotICAgKiBsYXRlciwgeW91IG11c3QgY29weS4KLSAgICogQHBhcmFtIGVsZW1lbnRMZW5ndGggbGVuZ3RoIG9mIGVsZW1lbnQKLSAgICovCi0gIHZpcnR1YWwgdm9pZCAKLSAgb25SZWNlaXZlZEVsZW1lbnQoY29uc3QgdWludDhfdCAqZWxlbWVudCwgc2l6ZV90IGVsZW1lbnRMZW5ndGgpID0gMDsKLSAgCi1wcml2YXRlOgotICAvKioKLSAgICogQ2FsbCB0aGUgdmlydHVhbCBtZXRob2Qgb25SZWNlaXZlZEVsZW1lbnQuIFRoaXMgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBiYXNlIG5kbl9FbGVtZW50TGlzdGVuZXIgc3RydWN0LgotICAgKiBAcGFyYW0gc2VsZgotICAgKiBAcGFyYW0gZWxlbWVudAotICAgKiBAcGFyYW0gZWxlbWVudExlbmd0aAotICAgKi8KLSAgc3RhdGljIHZvaWQgCi0gIHN0YXRpY09uUmVjZWl2ZWRFbGVtZW50KHN0cnVjdCBuZG5fRWxlbWVudExpc3RlbmVyICpzZWxmLCB1aW50OF90ICplbGVtZW50LCBzaXplX3QgZWxlbWVudExlbmd0aCk7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy9lbmRpYW4uaCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvZW5kaWFuLmhwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy9lbmRpYW4uaApyZW5hbWUgdG8gaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy9lbmRpYW4uaHBwCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL3Rsdi5ocHAgYi9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL3Rsdi5ocHAKaW5kZXggM2Q0MjQwMi4uNTExZDBmNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZG4tY3BwLWRldi9lbmNvZGluZy90bHYuaHBwCisrKyBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2RpbmcvdGx2LmhwcApAQCAtMTMsNyArMTMsNyBAQAogI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlICJidWZmZXIuaHBwIgotI2luY2x1ZGUgImVuZGlhbi5oIgorI2luY2x1ZGUgImVuZGlhbi5ocHAiCiAKIG5hbWVzcGFjZSBuZG4gewogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L2VuY29kaW5nL3dpcmUtZm9ybWF0LmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTQwY2QxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9XSVJFRk9STUFUX0hQUAotI2RlZmluZSBORE5fV0lSRUZPUk1BVF9IUFAKLQotI2luY2x1ZGUgIi4uL2NvbW1vbi5ocHAiCi0jaW5jbHVkZSAiLi4vdXRpbC9ibG9iLmhwcCIKLQotbmFtZXNwYWNlIG5kbiB7Ci0gIAotY2xhc3MgSW50ZXJlc3Q7Ci1jbGFzcyBEYXRhOwotY2xhc3MgRm9yd2FyZGluZ0VudHJ5OwotICAKLWNsYXNzIFdpcmVGb3JtYXQgewotcHVibGljOgotICAvKioKLSAgICogRW5jb2RlIGludGVyZXN0IGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLiAgWW91ciBkZXJpdmVkIGNsYXNzIHNob3VsZCBvdmVycmlkZS4KLSAgICogQHBhcmFtIGludGVyZXN0IFRoZSBJbnRlcmVzdCBvYmplY3QgdG8gZW5jb2RlLgotICAgKiBAcmV0dXJuIEEgQmxvYiBjb250YWluaW5nIHRoZSBlbmNvZGluZy4KLSAgICogQHRocm93IGxvZ2ljX2Vycm9yIGZvciB1bmltcGxlbWVudGVkIGlmIHRoZSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IG92ZXJyaWRlLgotICAgKi8KLSAgdmlydHVhbCBCbG9iIAotICBlbmNvZGVJbnRlcmVzdChjb25zdCBJbnRlcmVzdCYgaW50ZXJlc3QpOwotICAKLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhbiBpbnRlcmVzdCBhbmQgc2V0IHRoZSBmaWVsZHMgb2YgdGhlIGludGVyZXN0IG9iamVjdC4gIFlvdXIgZGVyaXZlZCBjbGFzcyBzaG91bGQgb3ZlcnJpZGUuCi0gICAqIEBwYXJhbSBpbnRlcmVzdCBUaGUgSW50ZXJlc3Qgb2JqZWN0IHdob3NlIGZpZWxkcyBhcmUgdXBkYXRlZC4KLSAgICogQHBhcmFtIGlucHV0IEEgcG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVyIHRvIGRlY29kZS4KLSAgICogQHBhcmFtIGlucHV0TGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuCi0gICAqIEB0aHJvdyBsb2dpY19lcnJvciBmb3IgdW5pbXBsZW1lbnRlZCBpZiB0aGUgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBvdmVycmlkZS4KLSAgICovCi0gIHZpcnR1YWwgdm9pZCAKLSAgZGVjb2RlSW50ZXJlc3QoSW50ZXJlc3QmIGludGVyZXN0LCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKTsKLQotICAvKioKLSAgICogRW5jb2RlIGRhdGEgYW5kIHJldHVybiB0aGUgZW5jb2RpbmcuICBZb3VyIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIG92ZXJyaWRlLgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3QgdG8gZW5jb2RlLgotICAgKiBAcGFyYW0gc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBlbmNvZGluZyBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZW5jb2RpbmcgaW4gb3JkZXIgdG8gc2lnbiwgeW91IGNhbiBjYWxsIGVuY29kZURhdGEoY29uc3QgRGF0YSYgZGF0YSkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBlbmNvZGluZyBvZiB0aGUgZW5kIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZW5jb2RpbmcgaW4gb3JkZXIgdG8gc2lnbiwgeW91IGNhbiBjYWxsIGVuY29kZURhdGEoY29uc3QgRGF0YSYgZGF0YSkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqIEByZXR1cm4gQSBCbG9iIGNvbnRhaW5pbmcgdGhlIGVuY29kaW5nLgotICAgKiBAdGhyb3cgbG9naWNfZXJyb3IgZm9yIHVuaW1wbGVtZW50ZWQgaWYgdGhlIGRlcml2ZWQgY2xhc3MgZG9lcyBub3Qgb3ZlcnJpZGUuCi0gICAqLwotICB2aXJ0dWFsIEJsb2IgCi0gIGVuY29kZURhdGEKLSAgICAoY29uc3QgRGF0YSYgZGF0YSwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCk7Ci0KLSAgLyoqCi0gICAqIEVuY29kZSBkYXRhIGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3QgdG8gZW5jb2RlLgotICAgKiBAcmV0dXJuIEEgQmxvYiBjb250YWluaW5nIHRoZSBlbmNvZGluZy4KLSAgICogQHRocm93IGxvZ2ljX2Vycm9yIGZvciB1bmltcGxlbWVudGVkIGlmIHRoZSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IG92ZXJyaWRlLgotICAgKi8KLSAgQmxvYiAKLSAgZW5jb2RlRGF0YShjb25zdCBEYXRhJiBkYXRhKQotICB7Ci0gICAgc2l6ZV90IGR1bW15QmVnaW5PZmZzZXQsIGR1bW15RW5kT2Zmc2V0OwotICAgIHJldHVybiBlbmNvZGVEYXRhKGRhdGEsICZkdW1teUJlZ2luT2Zmc2V0LCAmZHVtbXlFbmRPZmZzZXQpOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29kZSBpbnB1dCBhcyBhIGRhdGEgcGFja2V0IGFuZCBzZXQgdGhlIGZpZWxkcyBpbiB0aGUgZGF0YSBvYmplY3QuICBZb3VyIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIG92ZXJyaWRlLgotICAgKiBAcGFyYW0gZGF0YSBUaGUgRGF0YSBvYmplY3Qgd2hvc2UgZmllbGRzIGFyZSB1cGRhdGVkLgotICAgKiBAcGFyYW0gaW5wdXQgQSBwb2ludGVyIHRvIHRoZSBpbnB1dCBidWZmZXIgdG8gZGVjb2RlLgotICAgKiBAcGFyYW0gaW5wdXRMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiBpbnB1dC4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgaW5wdXQgYnVmZmVyIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKiBJZiB5b3UgYXJlIG5vdCBkZWNvZGluZyBpbiBvcmRlciB0byB2ZXJpZnksIHlvdSBjYW4gY2FsbCAKLSAgICogZGVjb2RlRGF0YShEYXRhJiBkYXRhLCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKSB0byBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAgICogQHBhcmFtIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGlucHV0IGJ1ZmZlciBvZiB0aGUgZW5kIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAgICogSWYgeW91IGFyZSBub3QgZGVjb2RpbmcgaW4gb3JkZXIgdG8gdmVyaWZ5LCB5b3UgY2FuIGNhbGwgCi0gICAqIGRlY29kZURhdGEoRGF0YSYgZGF0YSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgdG8gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gICAqIEB0aHJvdyBsb2dpY19lcnJvciBmb3IgdW5pbXBsZW1lbnRlZCBpZiB0aGUgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBvdmVycmlkZS4KLSAgICovICAKLSAgdmlydHVhbCB2b2lkIAotICBkZWNvZGVEYXRhCi0gICAgKERhdGEmIGRhdGEsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQpOwotCi0gIHZvaWQgCi0gIGRlY29kZURhdGEoRGF0YSYgZGF0YSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkKLSAgewotICAgIHNpemVfdCBkdW1teUJlZ2luT2Zmc2V0LCBkdW1teUVuZE9mZnNldDsKLSAgICBkZWNvZGVEYXRhKGRhdGEsIGlucHV0LCBpbnB1dExlbmd0aCwgJmR1bW15QmVnaW5PZmZzZXQsICZkdW1teUVuZE9mZnNldCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBFbmNvZGUgZm9yd2FyZGluZ0VudHJ5IGFuZCByZXR1cm4gdGhlIGVuY29kaW5nLiAgWW91ciBkZXJpdmVkIGNsYXNzIHNob3VsZCBvdmVycmlkZS4KLSAgICogQHBhcmFtIGZvcndhcmRpbmdFbnRyeSBUaGUgRm9yd2FyZGluZ0VudHJ5IG9iamVjdCB0byBlbmNvZGUuCi0gICAqIEByZXR1cm4gQSBCbG9iIGNvbnRhaW5pbmcgdGhlIGVuY29kaW5nLgotICAgKiBAdGhyb3cgbG9naWNfZXJyb3IgZm9yIHVuaW1wbGVtZW50ZWQgaWYgdGhlIGRlcml2ZWQgY2xhc3MgZG9lcyBub3Qgb3ZlcnJpZGUuCi0gICAqLwotICB2aXJ0dWFsIEJsb2IgCi0gIGVuY29kZUZvcndhcmRpbmdFbnRyeShjb25zdCBGb3J3YXJkaW5nRW50cnkmIGZvcndhcmRpbmdFbnRyeSk7Ci0gIAotICAvKioKLSAgICogRGVjb2RlIGlucHV0IGFzIGEgZm9yd2FyZGluZyBlbnRyeSBhbmQgc2V0IHRoZSBmaWVsZHMgb2YgdGhlIGZvcndhcmRpbmdFbnRyeSBvYmplY3QuICBZb3VyIGRlcml2ZWQgY2xhc3Mgc2hvdWxkIG92ZXJyaWRlLgotICAgKiBAcGFyYW0gZm9yd2FyZGluZ0VudHJ5IFRoZSBGb3J3YXJkaW5nRW50cnkgb2JqZWN0IHdob3NlIGZpZWxkcyBhcmUgdXBkYXRlZC4KLSAgICogQHBhcmFtIGlucHV0IEEgcG9pbnRlciB0byB0aGUgaW5wdXQgYnVmZmVyIHRvIGRlY29kZS4KLSAgICogQHBhcmFtIGlucHV0TGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuCi0gICAqIEB0aHJvdyBsb2dpY19lcnJvciBmb3IgdW5pbXBsZW1lbnRlZCBpZiB0aGUgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBvdmVycmlkZS4KLSAgICovCi0gIHZpcnR1YWwgdm9pZCAKLSAgZGVjb2RlRm9yd2FyZGluZ0VudHJ5KEZvcndhcmRpbmdFbnRyeSYgZm9yd2FyZGluZ0VudHJ5LCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKTsKLQotICAvKioKLSAgICogU2V0IHRoZSBzdGF0aWMgZGVmYXVsdCBXaXJlRm9ybWF0IHVzZWQgYnkgZGVmYXVsdCBlbmNvZGluZyBhbmQgZGVjb2RpbmcgbWV0aG9kcy4KLSAgICogQHBhcmFtIHdpcmVGb3JtYXQgQSBQb2ludGVyIHRvIGFuIG9iamVjdCBvZiBhIHN1YmNsYXNzIG9mIFdpcmVGb3JtYXQuICBUaGlzIGRvZXMgbm90IG1ha2UgYSBjb3B5IGFuZAotICAgKiB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgdGhlIG9iamVjdCByZW1haW5zIGFsbG9jYXRlZC4KLSAgICovCi0gIHN0YXRpYyB2b2lkIAotICBzZXREZWZhdWx0V2lyZUZvcm1hdChXaXJlRm9ybWF0ICp3aXJlRm9ybWF0KSAKLSAgewotICAgIGRlZmF1bHRXaXJlRm9ybWF0XyA9IHdpcmVGb3JtYXQ7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGRlZmF1bHQgV2lyZUZvcm1hdCB1c2VkIGJ5IGRlZmF1bHQgZW5jb2RpbmcgYW5kIGRlY29kaW5nIG1ldGhvZHMgd2hpY2ggd2FzIHNldCB3aXRoCi0gICAqIHNldERlZmF1bHRXaXJlRm9ybWF0LgotICAgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgV2lyZUZvcm1hdCBvYmplY3QuCi0gICAqLwotICBzdGF0aWMgV2lyZUZvcm1hdCoKLSAgZ2V0RGVmYXVsdFdpcmVGb3JtYXQoKTsKLSAgCi1wcml2YXRlOgotICAvKioKLSAgICogVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBvbmx5IG9uZSBvZiB0aGUgc3ViY2xhc3NlcyBvZiBXaXJlRm9ybWF0IHRvIHJldHVybiBhIG5ldyBvYmplY3QgdXNlZAotICAgKiBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGRlZmF1bHQgV2lyZUZvcm1hdC4gIElmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IGluY2x1ZGUgdGhhdCBjbGFzcywgdGhlbiB0aGUgYXBwbGljYXRpb24KLSAgICogbmVlZHMgdG8gaW5jbHVkZSBhbm90aGVyIHN1YmNsYXNzIHdoaWNoIGRlZmluZXMgV2lyZUZvcm1hdDo6bmV3SW5pdGlhbERlZmF1bHRXaXJlRm9ybWF0LgotICAgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCwgd2hpY2ggaXMgaGVsZCBieSBhIHNoYXJlZF9wdHIgYW5kIGZyZWVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGV4aXRzLgotICAgKi8KLSAgc3RhdGljIFdpcmVGb3JtYXQqCi0gIG5ld0luaXRpYWxEZWZhdWx0V2lyZUZvcm1hdCgpOwotICAKLSAgc3RhdGljIFdpcmVGb3JtYXQgKmRlZmF1bHRXaXJlRm9ybWF0XzsKLX07Ci0KLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvc2VjdXJpdHkvc2VjdXJpdHktZXhjZXB0aW9uLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvc2VjdXJpdHkvc2VjdXJpdHktZXhjZXB0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmMWQ2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L3NlY3VyaXR5L3NlY3VyaXR5LWV4Y2VwdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaUBjcy51Y2xhLmVkdT4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9TRUNVUklUWV9FWENFUFRJT05fSFBQCi0jZGVmaW5lIE5ETl9TRUNVUklUWV9FWENFUFRJT05fSFBQCi0KLSNpbmNsdWRlIDxleGNlcHRpb24+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi1uYW1lc3BhY2UgbmRuIHsKLQotY2xhc3MgU2VjdXJpdHlFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24gewotcHVibGljOgotICBTZWN1cml0eUV4Y2VwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgZXJyb3JNZXNzYWdlKSB0aHJvdygpOwotICAgIAotICB2aXJ0dWFsIH5TZWN1cml0eUV4Y2VwdGlvbigpIHRocm93KCk7Ci0gICAgCi0gIHN0ZDo6c3RyaW5nIE1zZygpIHsgcmV0dXJuIGVycm9yTWVzc2FnZV87IH0KLQotICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGVycm9yTWVzc2FnZV8uY19zdHIoKTsgfQotICAgIAotcHJpdmF0ZToKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXJyb3JNZXNzYWdlXzsKLX07Ci0KLWNsYXNzIFVucmVjb2duaXplZEtleUZvcm1hdEV4Y2VwdGlvbiA6IHB1YmxpYyBTZWN1cml0eUV4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gIFVucmVjb2duaXplZEtleUZvcm1hdEV4Y2VwdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgZXJyb3JNZXNzYWdlKQotICA6IFNlY3VyaXR5RXhjZXB0aW9uKGVycm9yTWVzc2FnZSkKLSAgewotICB9Ci19OwotCi1jbGFzcyBVbnJlY29nbml6ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24gOiBwdWJsaWMgU2VjdXJpdHlFeGNlcHRpb24gewotcHVibGljOgotICBVbnJlY29nbml6ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yTWVzc2FnZSkKLSAgOiBTZWN1cml0eUV4Y2VwdGlvbihlcnJvck1lc3NhZ2UpCi0gIHsKLSAgfQotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvc2VjdXJpdHkvc2hhMjU2LXdpdGgtcnNhLWhhbmRsZXIuaHBwIGIvaW5jbHVkZS9uZG4tY3BwLWRldi9zZWN1cml0eS9zaGEyNTYtd2l0aC1yc2EtaGFuZGxlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MjdmMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG4tY3BwLWRldi9zZWN1cml0eS9zaGEyNTYtd2l0aC1yc2EtaGFuZGxlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaUBjcy51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9TSEEyNTZfUlNBX0hBTkRMRVJfSFBQCi0jZGVmaW5lIE5ETl9TSEEyNTZfUlNBX0hBTkRMRVJfSFBQCi0KLSNpbmNsdWRlICIuLi8uLi9kYXRhLmhwcCIKLSNpbmNsdWRlICIuLi9jZXJ0aWZpY2F0ZS9wdWJsaWMta2V5LmhwcCIKLQotbmFtZXNwYWNlIG5kbnsKLQotY2xhc3MgU2hhMjU2V2l0aFJzYUhhbmRsZXIgewotcHVibGljOgotICBTaGEyNTZXaXRoUnNhSGFuZGxlcigpIHt9Ci0KLSAgdmlydHVhbAotICB+U2hhMjU2V2l0aFJzYUhhbmRsZXIoKSB7fQotCi0gLyoqCi0gICogVmVyaWZ5IHRoZSBzaWduYXR1cmUgb24gdGhlIGRhdGEgcGFja2V0IHVzaW5nIHRoZSBnaXZlbiBwdWJsaWMga2V5LiBJZiB0aGVyZSBpcyBubyBkYXRhLmdldERlZmF1bHRXaXJlRW5jb2RpbmcoKSwKLSAgKiB0aGlzIGNhbGxzIGRhdGEud2lyZUVuY29kZSgpIHRvIHNldCBpdC4KLSAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBwYWNrZXQgd2l0aCB0aGUgc2lnbmVkIHBvcnRpb24gYW5kIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5LiBUaGUgZGF0YSBwYWNrZXQgbXVzdCBoYXZlIGEKLSAgKiBTaGEyNTZXaXRoUnNhU2lnbmF0dXJlLgotICAqIEBwYXJhbSBwdWJsaWNLZXkgVGhlIHB1YmxpYyBrZXkgdXNlZCB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZS4KLSAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNpZ25hdHVyZSB2ZXJpZmllcywgZmFsc2UgaWYgbm90LgotICAqIEB0aHJvdyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBkYXRhIGRvZXMgbm90IGhhdmUgYSBTaGEyNTZXaXRoUnNhU2lnbmF0dXJlLgotICAqLwotICBzdGF0aWMgYm9vbAotICB2ZXJpZnlTaWduYXR1cmUoY29uc3QgRGF0YSYgZGF0YSwgY29uc3QgUHVibGljS2V5JiBwdWJsaWNLZXkpOwotCi19OwotCi19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9ibG9iLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9ibG9iLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRlN2EwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbi1jcHAtZGV2L3V0aWwvYmxvYi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JMT0JfSFBQCi0jZGVmaW5lIE5ETl9CTE9CX0hQUAotCi0jaW5jbHVkZSAiLi4vY29tbW9uLmhwcCIKLQotc3RydWN0IG5kbl9CbG9iOwotCi1uYW1lc3BhY2UgbmRuIHsKLQotLyoqCi0gKiBBIEJsb2IgaG9sZHMgYSBwb2ludGVyIHRvIGFuIGltbXV0YWJsZSBieXRlIGFycmF5IGltcGxlbWVudGVkIGFzIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+LiAgCi0gKiBUaGlzIGlzIGxpa2UgYSBKYXZhU2NyaXB0IHN0cmluZyB3aGljaCBpcyBhIHBvaW50ZXIgdG8gYW4gaW1tdXRhYmxlIHN0cmluZy4gIAotICogSXQgaXMgT0sgdG8gcGFzcyBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZyBiZWNhdXNlIHRoZSBuZXcgb3duZXIgY2FuJ3QgY2hhbmdlIHRoZSBieXRlcwotICogb2YgdGhlIHN0cmluZy4gIEhvd2V2ZXIsIGxpa2UgYSBKYXZhU2NyaXB0IHN0cmluZywgaXQgaXMgcG9zc2libGUgdG8gY2hhbmdlIHRoZSBwb2ludGVyLCBhbmQgc28gdGhpcyBkb2VzIGFsbG93Ci0gKiB0aGUgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCB0byBjaGFuZ2UgdGhlIHBvaW50ZXIuICBBbHNvIHJlbWVtYmVyIHRoYXQgdGhlIHBvaW50ZXIgY2FuIGJlIG51bGwuCi0gKiAoTm90ZSB0aGF0IHdlIGNvdWxkIGhhdmUgbWFkZSBCbG9iIGRlcml2ZSBkaXJlY3RseSBmcm9tIHZlY3Rvcjx1aW50OF90PiBhbmQgdGhlbiBleHBsaWNpdGx5IHVzZQotICogYSBwb2ludGVyIHRvIGl0IGxpa2UgQmxvYiwgYnV0IHRoaXMgZG9lcyBub3QgZW5mb3JjZSBpbW11dGFiaWxpdHkgYmVjYXVzZSB3ZSBjYW4ndCBkZWNsYXJlCi0gKiBCbG9iIGFzIGRlcml2ZWQgZnJvbSBjb25zdCB2ZWN0b3I8dWludDhfdD4uKQotICovCi1jbGFzcyBCbG9iIDogcHVibGljIHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gPiB7Ci1wdWJsaWM6Ci0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgQmxvYiB3aXRoIGEgbnVsbCBwb2ludGVyLgotICAgKi8KLSAgQmxvYigpCi0gIHsgIAotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgZ2l2ZW4gYXJyYXkuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHBvaW50ZXIgdG8gdGhlIGJ5dGUgYXJyYXkgd2hpY2ggaXMgY29waWVkLgotICAgKiBAcGFyYW0gdmFsdWVMZW5ndGggVGhlIGxlbmd0aCBvZiB2YWx1ZS4KLSAgICovCi0gIEJsb2IoY29uc3QgdWludDhfdCogdmFsdWUsIHNpemVfdCB2YWx1ZUxlbmd0aCkKLSAgOiBwdHJfbGliOjpzaGFyZWRfcHRyPGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4obmV3IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHZhbHVlLCB2YWx1ZSArIHZhbHVlTGVuZ3RoKSkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgYXJyYXkgaW4gdGhlIGdpdmVuIHZlY3Rvci4KLSAgICogSWYgeW91IHdhbnQgdG8gdHJhbnNmZXIgdGhlIGFycmF5IHdpdGhvdXQgY29weWluZywgdGhlIHRoZSB2ZWN0b3IgaGFzIHRvIHN0YXJ0IGFzIGEgCi0gICAqIHB0cl9saWI6OnNoYXJlZF9wdHI8c3RkOjp2ZWN0b3I8dWludDhfdD4gPiBhbmQgeW91IGNhbiB1c2UgdGhlIEJsb2IgY29uc3RydWN0b3Igd2l0aCB0aGlzIHR5cGUuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHJlZmVyZW5jZSB0byBhIHZlY3RvciB3aGljaCBpcyBjb3BpZWQuCi0gICAqLwotICBCbG9iKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ICZ2YWx1ZSkKLSAgOiBwdHJfbGliOjpzaGFyZWRfcHRyPGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4obmV3IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KHZhbHVlKSkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgYXJyYXkgaW4gdGhlIGdpdmVuIEJsb2Igc3RydWN0LgotICAgKiBAcGFyYW0gYmxvYlN0cnVjdCBUaGUgQyBuZG5fQmxvYiBzdHJ1Y3QgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlci4KLSAgICovCi0gIEJsb2IoY29uc3Qgc3RydWN0IG5kbl9CbG9iJiBibG9iU3RydWN0KTsKLSAgCi0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgQmxvYiB0byBwb2ludCB0byBhbiBleGlzdGluZyBieXRlIGFycmF5LiAgSU1QT1JUQU5UOiBBZnRlciBjYWxsaW5nIHRoaXMgY29uc3RydWN0b3IsCi0gICAqIGlmIHlvdSBrZWVwIGEgcG9pbnRlciB0byB0aGUgYXJyYXkgdGhlbiB5b3UgbXVzdCB0cmVhdCB0aGUgYXJyYXkgYXMgaW1tdXRhYmxlIGFuZCBwcm9taXNlIG5vdCB0byBjaGFuZ2UgaXQuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHBvaW50ZXIgdG8gYSB2ZWN0b3Igd2l0aCB0aGUgYnl0ZSBhcnJheS4gIFRoaXMgdGFrZXMgYW5vdGhlciByZWZlcmVuY2UgYW5kIGRvZXMgbm90IGNvcHkgdGhlIGJ5dGVzLgotICAgKi8KLSAgQmxvYihjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4gJnZhbHVlKQotICA6IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gPigoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiA+ICYpdmFsdWUpCi0gIHsKLSAgfQotICBCbG9iKGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gPiAmdmFsdWUpCi0gIDogcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiA+KHZhbHVlKQotICB7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgaW1tdXRhYmxlIGJ5dGUgYXJyYXkuCi0gICAqLwotICBzaXplX3QgCi0gIHNpemUoKSBjb25zdAotICB7Ci0gICAgaWYgKCp0aGlzKQotICAgICAgcmV0dXJuICgqdGhpcyktPnNpemUoKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gMDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gYSBjb25zdCBwb2ludGVyIHRvIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBpbW11dGFibGUgYnl0ZSBhcnJheSwgb3IgMCBpZiB0aGUgcG9pbnRlciBpcyBudWxsLgotICAgKi8KLSAgY29uc3QgdWludDhfdCogCi0gIGJ1ZigpIGNvbnN0Ci0gIHsKLSAgICBpZiAoKnRoaXMpCi0gICAgICByZXR1cm4gJigqdGhpcyktPmZyb250KCk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBTZXQgdGhlIGJsb2JTdHJ1Y3QgdG8gcG9pbnQgdG8gdGhpcyBCbG9iJ3MgYnl0ZSBhcnJheSwgd2l0aG91dCBjb3B5aW5nIGFueSBtZW1vcnkuCi0gICAqIFdBUk5JTkc6IFRoZSByZXN1bHRpbmcgcG9pbnRlciBpbiBibG9iU3RydWN0IGlzIGludmFsaWQgYWZ0ZXIgYSBmdXJ0aGVyIHVzZSBvZiB0aGlzIG9iamVjdCB3aGljaCBjb3VsZCByZWFsbG9jYXRlIG1lbW9yeS4KLSAgICogQHBhcmFtIGJsb2JTdHJ1Y3QgVGhlIEMgbmRuX0Jsb2Igc3RydWN0IHRvIHJlY2VpdmUgdGhlIHBvaW50ZXIuCi0gICAqLwotICB2b2lkIAotICBnZXQoc3RydWN0IG5kbl9CbG9iJiBibG9iU3RydWN0KSBjb25zdDsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbi1jcHAtZGV2L3V0aWwvY3J5cHRvLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9jcnlwdG8uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDhhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25kbi1jcHAtZGV2L3V0aWwvY3J5cHRvLmhwcApAQCAtMCwwICsxLDI3IEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+CisgKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCisgKi8KKworI2lmbmRlZiBORE5fVVRJTF9DUllQVE9fSFBQCisjZGVmaW5lIE5ETl9VVElMX0NSWVBUT19IUFAKKworI2luY2x1ZGUgIm5kbi1jcHAtZGV2L2NvbW1vbi5ocHAiCisKKyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisKK25hbWVzcGFjZSBuZG4geworCisvKioKKyAqIENvbXB1dGUgdGhlIHNoYS0yNTYgZGlnZXN0IG9mIGRhdGEuCisgKiBAcGFyYW0gZGF0YSBQb2ludGVyIHRvIHRoZSBpbnB1dCBieXRlIGFycmF5LgorICogQHBhcmFtIGRhdGFMZW5ndGggVGhlIGxlbmd0aCBvZiBkYXRhLgorICogQHBhcmFtIGRpZ2VzdCBBIHBvaW50ZXIgdG8gYSBidWZmZXIgb2Ygc2l6ZSBTSEEyNTZfRElHRVNUX0xFTkdUSCB0byByZWNlaXZlIHRoZSBkYXRhLgorICovCit2b2lkIG5kbl9kaWdlc3RTaGEyNTYoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHVpbnQ4X3QgKmRpZ2VzdCk7CisKK30gLy8gbmFtZXNwYWNlIG5kbgorCisjZW5kaWYgLy8gTkROX1VUSUxfQ1JZUFRPX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG4tY3BwLWRldi91dGlsL3NpZ25lZC1ibG9iLmhwcCBiL2luY2x1ZGUvbmRuLWNwcC1kZXYvdXRpbC9zaWduZWQtYmxvYi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZDJkMjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG4tY3BwLWRldi91dGlsL3NpZ25lZC1ibG9iLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBaaGVua2FpIFpodSA8emhlbmthaUBjcy51Y2xhLmVkdT4KLSAqIEBhdXRob3I6IEFsZXhhbmRlciBBZmFuYXN5ZXYgPGFsZXhhbmRlci5hZmFuYXN5ZXZAdWNsYS5lZHU+Ci0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fU0lHTkVEX0JMT0JfSFBQCi0jZGVmaW5lIE5ETl9TSUdORURfQkxPQl9IUFAKLQotI2luY2x1ZGUgImJsb2IuaHBwIgotCi1uYW1lc3BhY2UgbmRuIHsKLQotLyoqCi0gKiBBIFNpZ25lZEJsb2IgZXh0ZW5kcyBCbG9iIHRvIGtlZXAgdGhlIG9mZnNldHMgb2YgYSBzaWduZWQgcG9ydGlvbiAoZS5nLiwgdGhlIGJ5dGVzIG9mIERhdGEgcGFja2V0KS4KLSAqLwotY2xhc3MgU2lnbmVkQmxvYiA6IHB1YmxpYyBCbG9iIHsKLXB1YmxpYzoKLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBTaWduZWRCbG9iIHdpdGggYSBudWxsIHBvaW50ZXIuCi0gICAqLwotICBTaWduZWRCbG9iKCkKLSAgOiBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfKDApLCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0XygwKQotICB7ICAKLSAgfQotICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBTaWduZWRCbG9iIHdpdGggYW4gaW1tdXRhYmxlIGNvcHkgb2YgdGhlIGdpdmVuIGFycmF5LgotICAgKiBAcGFyYW0gdmFsdWUgQSBwb2ludGVyIHRvIHRoZSBieXRlIGFycmF5IHdoaWNoIGlzIGNvcGllZC4KLSAgICogQHBhcmFtIHZhbHVlTGVuZ3RoIFRoZSBsZW5ndGggb2YgdmFsdWUuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgVGhlIG9mZnNldCBpbiB0aGUgZW5jb2Rpbmcgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKi8KLSAgU2lnbmVkQmxvYgotICAgIChjb25zdCB1aW50OF90KiB2YWx1ZSwgc2l6ZV90IHZhbHVlTGVuZ3RoLCBzaXplX3Qgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3Qgc2lnbmVkUG9ydGlvbkVuZE9mZnNldCkKLSAgOiBCbG9iKHZhbHVlLCB2YWx1ZUxlbmd0aCksIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldF8oc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0KSwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldF8oc2lnbmVkUG9ydGlvbkVuZE9mZnNldCkKLSAgewotICB9Ci0gIAotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IFNpZ25lZEJsb2Igd2l0aCBhbiBpbW11dGFibGUgY29weSBvZiB0aGUgYXJyYXkgaW4gdGhlIGdpdmVuIHZlY3Rvci4KLSAgICogSWYgeW91IHdhbnQgdG8gdHJhbnNmZXIgdGhlIGFycmF5IHdpdGhvdXQgY29weWluZywgdGhlIHRoZSB2ZWN0b3IgaGFzIHRvIHN0YXJ0IGFzIGEgCi0gICAqIHB0cl9saWI6OnNoYXJlZF9wdHI8c3RkOjp2ZWN0b3I8dWludDhfdD4gPiBhbmQgeW91IGNhbiB1c2UgdGhlIFNpZ25lZEJsb2IgY29uc3RydWN0b3Igd2l0aCB0aGlzIHR5cGUuCi0gICAqIEBwYXJhbSB2YWx1ZSBBIHJlZmVyZW5jZSB0byBhIHZlY3RvciB3aGljaCBpcyBjb3BpZWQuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgVGhlIG9mZnNldCBpbiB0aGUgZW5jb2Rpbmcgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKi8KLSAgU2lnbmVkQmxvYgotICAgIChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiAmdmFsdWUsIHNpemVfdCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KQotICA6IEJsb2IodmFsdWUpLCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfKHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCksIHNpZ25lZFBvcnRpb25FbmRPZmZzZXRfKHNpZ25lZFBvcnRpb25FbmRPZmZzZXQpCi0gIHsKLSAgfQotICAKLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyBTaWduZWRCbG9iIHRvIHBvaW50IHRvIGFuIGV4aXN0aW5nIGJ5dGUgYXJyYXkuICBJTVBPUlRBTlQ6IEFmdGVyIGNhbGxpbmcgdGhpcyBjb25zdHJ1Y3RvciwKLSAgICogaWYgeW91IGtlZXAgYSBwb2ludGVyIHRvIHRoZSBhcnJheSB0aGVuIHlvdSBtdXN0IHRyZWF0IHRoZSBhcnJheSBhcyBpbW11dGFibGUgYW5kIHByb21pc2Ugbm90IHRvIGNoYW5nZSBpdC4KLSAgICogQHBhcmFtIHZhbHVlIEEgcG9pbnRlciB0byBhIHZlY3RvciB3aXRoIHRoZSBieXRlIGFycmF5LiAgVGhpcyB0YWtlcyBhbm90aGVyIHJlZmVyZW5jZSBhbmQgZG9lcyBub3QgY29weSB0aGUgYnl0ZXMuCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgVGhlIG9mZnNldCBpbiB0aGUgYXJyYXkgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFRoZSBvZmZzZXQgaW4gdGhlIGFycmF5IG9mIHRoZSBlbmQgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICAgKi8KLSAgU2lnbmVkQmxvYgotICAgIChjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4gJnZhbHVlLCAKLSAgICAgc2l6ZV90IHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90IHNpZ25lZFBvcnRpb25FbmRPZmZzZXQpCi0gIDogQmxvYih2YWx1ZSksIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldF8oc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0KSwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldF8oc2lnbmVkUG9ydGlvbkVuZE9mZnNldCkKLSAgewotICB9Ci0gIFNpZ25lZEJsb2IKLSAgICAoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiA+ICZ2YWx1ZSwgCi0gICAgIHNpemVfdCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0KQotICA6IEJsb2IodmFsdWUpLCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfKHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCksIHNpZ25lZFBvcnRpb25FbmRPZmZzZXRfKHNpZ25lZFBvcnRpb25FbmRPZmZzZXQpCi0gIHsKLSAgfQotICAgIAotICAvKioKLSAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHNpZ25lZCBwb3J0aW9uIG9mIHRoZSBpbW11dGFibGUgYnl0ZSBhcnJheSwgb3IgMCBvZiB0aGUgcG9pbnRlciB0byB0aGUgYXJyYXkgaXMgbnVsbC4KLSAgICovCi0gIHNpemVfdCAKLSAgc2lnbmVkU2l6ZSgpIGNvbnN0Ci0gIHsKLSAgICBpZiAoKnRoaXMpCi0gICAgICByZXR1cm4gc2lnbmVkUG9ydGlvbkVuZE9mZnNldF8gLSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXRfOwotICAgIGVsc2UKLSAgICAgIHJldHVybiAwOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybiBhIGNvbnN0IHBvaW50ZXIgdG8gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHNpZ25lZCBwb3J0aW9uIG9mIHRoZSBpbW11dGFibGUgYnl0ZSBhcnJheSwgb3IgMCBpZiB0aGUgCi0gICAqIHBvaW50ZXIgdG8gdGhlIGFycmF5IGlzIG51bGwuCi0gICAqLwotICBjb25zdCB1aW50OF90KgotICBzaWduZWRCdWYoKSBjb25zdAotICB7Ci0gICAgaWYgKCp0aGlzKQotICAgICAgcmV0dXJuICYoKnRoaXMpLT5mcm9udCgpICsgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0XzsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gMDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgYXJyYXkgb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqLyAgCi0gIHNpemVfdCAKLSAgZ2V0U2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0XzsgfQotCi0gIC8qKgotICAgKiBSZXR1cm4gdGhlIG9mZnNldCBpbiB0aGUgYXJyYXkgb2YgdGhlIGVuZCBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAqLyAgCi0gIHNpemVfdCAKLSAgZ2V0U2lnbmVkUG9ydGlvbkVuZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHNpZ25lZFBvcnRpb25FbmRPZmZzZXRfOyB9Ci0gIAotcHJpdmF0ZToKLSAgc2l6ZV90IHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldF87Ci0gIHNpemVfdCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0XzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29tcGFyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29tcGFyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZWJjMjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbXBhcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGNvbXBhcmUuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDYuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0NPTVBBUkVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19DT01QQVJFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPGxvY2FsZT4KLQotLyohIFxmaWxlCi0gICAgRGVmaW5lcyBlbGVtZW50IGNvbXBhcmlzb24gcHJlZGljYXRlcy4gTWFueSBhbGdvcml0aG1zIGluIHRoaXMgbGlicmFyeSBjYW4KLSAgICB0YWtlIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgd2l0aCBhIHByZWRpY2F0ZSB1c2VkIHRvIGNvbXBhcmUgZWxlbWVudHMuCi0gICAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSwgZm9yIGluc3RhbmNlLCB0byBoYXZlIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbnMKLSAgICBvZiB0aGUgYWxnb3JpdGhtcy4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLSAgICAgICAgLy8gIGlzX2VxdWFsIGZ1bmN0b3IgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgaXNfZXF1YWwgZnVuY3RvcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIFN0YW5kYXJkIFNUTCBlcXVhbF90byBvbmx5IGhhbmRsZSBjb21wYXJpc29uIGJldHdlZW4gYXJndW1lbnRzCi0gICAgICAgICAgICBvZiB0aGUgc2FtZSB0eXBlLiBUaGlzIGlzIGEgbGVzcyByZXN0cmljdGl2ZSB2ZXJzaW9uIHdoaWNoIHdyYXBzIG9wZXJhdG9yID09LgotICAgICAgICAqLwotICAgICAgICBzdHJ1Y3QgaXNfZXF1YWwKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIEZ1bmN0aW9uIG9wZXJhdG9yCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBDb21wYXJlIHR3byBvcGVyYW5kcyBmb3IgZXF1YWxpdHkKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KLSAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yKCkoIGNvbnN0IFQxJiBBcmcxLCBjb25zdCBUMiYgQXJnMiApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFyZzE9PUFyZzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy8hIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbiBvZiBpc19lcXVhbAotICAgICAgICAvKiEKLSAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBwcmVkaWNhdGUuIENvbXBhcmlzb24gaXMgZG9uZSB1c2luZwotICAgICAgICAgICAgc3BlY2lmaWVkIGxvY2FsZXMuCi0gICAgICAgICovCi0gICAgICAgIHN0cnVjdCBpc19pZXF1YWwKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBccGFyYW0gTG9jIGxvY2FsZXMgdXNlZCBmb3IgY29tcGFyaXNvbgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlzX2llcXVhbCggY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkgOgotICAgICAgICAgICAgICAgIG1fTG9jKCBMb2MgKSB7fQotCi0gICAgICAgICAgICAvLyEgRnVuY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzLiBDYXNlIGlzIGlnbm9yZWQuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDU2MCkgJiYgKF9fQk9STEFORENfXyA8PSAweDU2NCkgJiYgIWRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyKEFyZzEpPT1zdGQ6OnRvdXBwZXIoQXJnMik7Ci0gICAgICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dG91cHBlcjxUMT4oQXJnMSxtX0xvYyk9PXN0ZDo6dG91cHBlcjxUMj4oQXJnMixtX0xvYyk7Ci0gICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIG1fTG9jOwotICAgICAgICB9OwotCi0gICAgICAgIC8vICBpc19sZXNzIGZ1bmN0b3IgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgaXNfbGVzcyBmdW5jdG9yCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29udmVuaWVudCB2ZXJzaW9uIG9mIHN0YW5kYXJkIHN0ZDo6bGVzcy4gT3BlcmF0aW9uIGlzIHRlbXBsYXRlZCwgdGhlcmVmb3JlIGl0IGlzIAotICAgICAgICAgICAgbm90IHJlcXVpcmVkIHRvIHNwZWNpZnkgdGhlIGV4YWN0IHR5cGVzIHVwb24gdGhlIGNvbnN0cnVjdGlvbgotICAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IGlzX2xlc3MKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIEZ1bmN0b3Igb3BlcmF0aW9uCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyA+IG9wZXJhdG9yCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPgotICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IoKSggY29uc3QgVDEmIEFyZzEsIGNvbnN0IFQyJiBBcmcyICkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnMTxBcmcyOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbiBvZiBpc19sZXNzCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHByZWRpY2F0ZS4gQ29tcGFyaXNvbiBpcyBkb25lIHVzaW5nCi0gICAgICAgICAgICBzcGVjaWZpZWQgbG9jYWxlcy4KLSAgICAgICAgKi8KLSAgICAgICAgc3RydWN0IGlzX2lsZXNzCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvcgotICAgICAgICAgICAgLyohCi0gICAgICAgICAgICAgICAgXHBhcmFtIExvYyBsb2NhbGVzIHVzZWQgZm9yIGNvbXBhcmlzb24KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBpc19pbGVzcyggY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkgOgotICAgICAgICAgICAgICAgIG1fTG9jKCBMb2MgKSB7fQotCi0gICAgICAgICAgICAvLyEgRnVuY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzLiBDYXNlIGlzIGlnbm9yZWQuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDU2MCkgJiYgKF9fQk9STEFORENfXyA8PSAweDU2NCkgJiYgIWRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyKEFyZzEpPHN0ZDo6dG91cHBlcihBcmcyKTsKLSAgICAgICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyPFQxPihBcmcxLG1fTG9jKTxzdGQ6OnRvdXBwZXI8VDI+KEFyZzIsbV9Mb2MpOwotICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGQ6OmxvY2FsZSBtX0xvYzsKLSAgICAgICAgfTsKLQotICAgICAgICAvLyAgaXNfbm90X2dyZWF0ZXIgZnVuY3RvciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBpc19ub3RfZ3JlYXRlciBmdW5jdG9yCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29udmVuaWVudCB2ZXJzaW9uIG9mIHN0YW5kYXJkIHN0ZDo6bm90X2dyZWF0ZXJfdG8uIE9wZXJhdGlvbiBpcyB0ZW1wbGF0ZWQsIHRoZXJlZm9yZSBpdCBpcyAKLSAgICAgICAgICAgIG5vdCByZXF1aXJlZCB0byBzcGVjaWZ5IHRoZSBleGFjdCB0eXBlcyB1cG9uIHRoZSBjb25zdHJ1Y3Rpb24KLSAgICAgICAgICovCi0gICAgICAgIHN0cnVjdCBpc19ub3RfZ3JlYXRlcgotICAgICAgICB7Ci0gICAgICAgICAgICAvLyEgRnVuY3RvciBvcGVyYXRpb24KLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nID4gb3BlcmF0b3IKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBBcmcxPD1BcmcyOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIGNhc2UgaW5zZW5zaXRpdmUgdmVyc2lvbiBvZiBpc19ub3RfZ3JlYXRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBwcmVkaWNhdGUuIENvbXBhcmlzb24gaXMgZG9uZSB1c2luZwotICAgICAgICAgICAgc3BlY2lmaWVkIGxvY2FsZXMuCi0gICAgICAgICovCi0gICAgICAgIHN0cnVjdCBpc19ub3RfaWdyZWF0ZXIKLSAgICAgICAgewotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAvKiEKLSAgICAgICAgICAgICAgICBccGFyYW0gTG9jIGxvY2FsZXMgdXNlZCBmb3IgY29tcGFyaXNvbgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlzX25vdF9pZ3JlYXRlciggY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkgOgotICAgICAgICAgICAgICAgIG1fTG9jKCBMb2MgKSB7fQotCi0gICAgICAgICAgICAvLyEgRnVuY3Rpb24gb3BlcmF0b3IKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzLiBDYXNlIGlzIGlnbm9yZWQuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcigpKCBjb25zdCBUMSYgQXJnMSwgY29uc3QgVDImIEFyZzIgKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDU2MCkgJiYgKF9fQk9STEFORENfXyA8PSAweDU2NCkgJiYgIWRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0b3VwcGVyKEFyZzEpPD1zdGQ6OnRvdXBwZXIoQXJnMik7Ci0gICAgICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dG91cHBlcjxUMT4oQXJnMSxtX0xvYyk8PXN0ZDo6dG91cHBlcjxUMj4oQXJnMixtX0xvYyk7Ci0gICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIG1fTG9jOwotICAgICAgICB9OwotCi0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLQotICAgIC8vIHB1bGwgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6aXNfZXF1YWw7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19pZXF1YWw7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19sZXNzOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXNfaWxlc3M7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppc19ub3RfZ3JlYXRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06OmlzX25vdF9pZ3JlYXRlcjsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19DT01QQVJFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmNlcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmNlcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjY5OGQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25jZXB0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGNvbmNlcHQuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfQ09OQ0VQVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0NPTkNFUFRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0X2NoZWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0KLS8qISBcZmlsZSAKLSAgICBEZWZpbmVzIGNvbmNlcHRzIHVzZWQgaW4gc3RyaW5nX2FsZ28gbGlicmFyeQotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotICAgICAgICAvLyEgRmluZGVyIGNvbmNlcHQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWZpbmVzIHRoZSBGaW5kZXIgY29uY2VwdC4gRmluZGVyIGlzIGEgZnVuY3RvciB3aGljaCBzZWxlY3RzCi0gICAgICAgICAgICBhbiBhcmJpdHJhcnkgcGFydCBvZiBhIHN0cmluZy4gU2VhcmNoIGlzIHBlcmZvcm1lZCBvbgotICAgICAgICAgICAgdGhlIHJhbmdlIHNwZWNpZmllZCBieSBzdGFydGluZyBhbmQgZW5kaW5nIGl0ZXJhdG9ycy4KLQotICAgICAgICAgICAgUmVzdWx0IG9mIHRoZSBmaW5kIG9wZXJhdGlvbiBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGl0ZXJhdG9yX3JhbmdlLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaW5kZXJULCB0eXBlbmFtZSBJdGVyYXRvclQ+Ci0gICAgICAgIHN0cnVjdCBGaW5kZXJDb25jZXB0Ci0gICAgICAgIHsKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiByYW5nZTsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdm9pZCBjb25zdHJhaW50cygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgcj0oKnBGKShpLGkpOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgcmFuZ2UgcjsKLSAgICAgICAgICAgIEl0ZXJhdG9yVCBpOwotICAgICAgICAgICAgRmluZGVyVCogcEY7ICAgIAotICAgICAgICB9OyAvLyBGaW5kZXJfY29uY2VwdAotCi0gICAgICAgIAotICAgICAgICAvLyEgRm9ybWF0dGVyIGNvbmNlcHQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWZpbmVzIHRoZSBGb3JtYXR0ZXIgY29uY2VwdC4gRm9ybWF0dGVyIGlzIGEgZnVuY3Rvciwgd2hpY2gKLSAgICAgICAgICAgIHRha2VzIGEgcmVzdWx0IGZyb20gYSBmaW5kZXIgb3BlcmF0aW9uIGFuZCB0cmFuc2Zvcm1zIGl0Ci0gICAgICAgICAgICBpbiBhIHNwZWNpZmljIHdheS4KLQotICAgICAgICAgICAgUmVzdWx0IG11c3QgYmUgYSBjb250YWluZXIgc3VwcG9ydGVkIGJ5IGNvbnRhaW5lcl90cmFpdHMsIAotICAgICAgICAgICAgb3IgYSByZWZlcmVuY2UgdG8gaXQuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZvcm1hdHRlclQsIHR5cGVuYW1lIEZpbmRlclQsIHR5cGVuYW1lIEl0ZXJhdG9yVD4KLSAgICAgICAgc3RydWN0IEZvcm1hdHRlckNvbmNlcHQKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cmFpbnRzKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpiZWdpbigoKnBGbykoICgqcEYpKGksaSkgKSk7Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZW5kKCgqcEZvKSggKCpwRikoaSxpKSApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEl0ZXJhdG9yVCBpOwotICAgICAgICAgICAgRmluZGVyVCogcEY7Ci0gICAgICAgICAgICBGb3JtYXR0ZXJUICpwRm87Ci0gICAgICAgIH07IC8vIEZvcm1hdHRlckNvbmNlcHQ7Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0NPTkNFUFRfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjU5YzFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgY29uZmlnLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0NPTkZJR19IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0NPTkZJR19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfU1RSSU5HX0RFRFVDRURfVFlQRU5BTUUKLSMgICBlcnJvciAibWFjcm8gYWxyZWFkeSBkZWZpbmVkISIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0KLS8vIE1ldHJvd2Vya3Mgd29ya2Fyb3VuZAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSAvLyA4LngKLSNwcmFnbWEgcGFyc2VfZnVuY190ZW1wbCBvZmYKLSNlbmRpZgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19DT05GSUdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uc3RhbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25zdGFudHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWZlMTU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25zdGFudHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgY29uc3RhbnRzLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0NPTlNUQU5UU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0NPTlNUQU5UU19IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotICAgIC8vISBUb2tlbiBjb21wcmVzc2lvbiBtb2RlIAotICAgIC8qIQotICAgICAgICBTcGVjaWZpZXMgdG9rZW4gY29tcHJlc3Npb24gbW9kZSBmb3IgdGhlIHRva2VuX2ZpbmRlci4KLSAgICAqLwotICAgIGVudW0gdG9rZW5fY29tcHJlc3NfbW9kZV90eXBlCi0gICAgewotICAgICAgICB0b2tlbl9jb21wcmVzc19vbiwgICAgLy8hPCBDb21wcmVzcyBhZGphY2VudCB0b2tlbnMKLSAgICAgICAgdG9rZW5fY29tcHJlc3Nfb2ZmICAvLyE8IERvIG5vdCBjb21wcmVzcyBhZGphY2VudCB0b2tlbnMKLSAgICB9OwotICAgIAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCB0aGUgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6dG9rZW5fY29tcHJlc3Nfb247Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjp0b2tlbl9jb21wcmVzc19vZmY7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0NPTlNUQU5UU19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU5ZTQwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kX2Zvcm1hdC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8gCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X3N0b3JlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9yZXBsYWNlX3N0b3JhZ2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gZmluZF9mb3JtYXRfY29weSAoaXRlcmF0b3IgdmFyaWFudCkgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgZmluZF9mb3JtYXRfY29weV9pbXBsMigKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgICAgIGNvbnN0IElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0UmVzdWx0VCYgRm9ybWF0UmVzdWx0ICkKLSAgICAgICAgICAgIHsgICAgICAgCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCA+IHN0b3JlX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc3RvcmUgZm9yIHRoZSBmaW5kIHJlc3VsdAotICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgTSggRmluZFJlc3VsdCwgRm9ybWF0UmVzdWx0LCBGb3JtYXR0ZXIgKTsKLQotICAgICAgICAgICAgICAgIGlmICggIU0gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2ggbm90IGZvdW5kIC0gcmV0dXJuIG9yaWdpbmFsIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgT3V0cHV0ID0gc3RkOjpjb3B5KCA6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmJlZ2luKE0pLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICAvLyBGb3JtYXQgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICAvLyBDb3B5IGZvcm1hdHRlZCByZXN1bHQKLSAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIDo6bmRuYm9vc3Q6OmJlZ2luKE0uZm9ybWF0X3Jlc3VsdCgpKSwgOjpuZG5ib29zdDo6ZW5kKE0uZm9ybWF0X3Jlc3VsdCgpKSwgT3V0cHV0ICk7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIE0uZW5kKCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCksIE91dHB1dCApOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGZpbmRfZm9ybWF0X2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgICAgIGNvbnN0IElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQgKQotICAgICAgICAgICAgeyAgIAotICAgICAgICAgICAgICAgIGlmKCA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6Y2hlY2tfZmluZF9yZXN1bHQoSW5wdXQsIEZpbmRSZXN1bHQpICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfZm9ybWF0X2NvcHlfaW1wbDIoIAotICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyKEZpbmRSZXN1bHQpICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAKLS8vIGZpbmRfZm9ybWF0X2NvcHkgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsIAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2NvcHlfaW1wbDIoCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXRSZXN1bHRUJiBGb3JtYXRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCA+IHN0b3JlX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDcmVhdGUgc3RvcmUgZm9yIHRoZSBmaW5kIHJlc3VsdAotICAgICAgICAgICAgICAgIHN0b3JlX3R5cGUgTSggRmluZFJlc3VsdCwgRm9ybWF0UmVzdWx0LCBGb3JtYXR0ZXIgKTsKLQotICAgICAgICAgICAgICAgIGlmICggIU0gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTWF0Y2ggbm90IGZvdW5kIC0gcmV0dXJuIG9yaWdpbmFsIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnB1dFQoIElucHV0ICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgSW5wdXRUIE91dHB1dDsKLSAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIE91dHB1dCwgOjpuZG5ib29zdDo6ZW5kKE91dHB1dCksIDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgTS5iZWdpbigpICk7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSBmb3JtYXR0ZWQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIE91dHB1dCwgOjpuZG5ib29zdDo6ZW5kKE91dHB1dCksIE0uZm9ybWF0X3Jlc3VsdCgpICk7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggT3V0cHV0LCA6Om5kbmJvb3N0OjplbmQoT3V0cHV0KSwgTS5lbmQoKSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSApOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBjb25zdCBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6Y2hlY2tfZmluZF9yZXN1bHQoSW5wdXQsIEZpbmRSZXN1bHQpICkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfZm9ybWF0X2NvcHlfaW1wbDIoCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIoRmluZFJlc3VsdCkgKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5wdXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gLy8gcmVwbGFjZSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0X2ltcGwyKCAKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIGNvbnN0IEZpbmRSZXN1bHRUJiBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdFJlc3VsdFQmIEZvcm1hdFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGZpbmRfZm9ybWF0X3N0b3JlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRSZXN1bHRUID4gc3RvcmVfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzdG9yZSBmb3IgdGhlIGZpbmQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgc3RvcmVfdHlwZSBNKCBGaW5kUmVzdWx0LCBGb3JtYXRSZXN1bHQsIEZvcm1hdHRlciApOwotCi0gICAgICAgICAgICAgICAgaWYgKCAhTSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBTZWFyY2ggbm90IGZvdW5kIC0gcmV0dXJuIG9yaWdpbmFsIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIG1hdGNoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OnJlcGxhY2UoIElucHV0LCBNLmJlZ2luKCksIE0uZW5kKCksIE0uZm9ybWF0X3Jlc3VsdCgpICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0X2ltcGwoIAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2Zvcm1hdF9pbXBsMigKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlcihGaW5kUmVzdWx0KSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfYWxsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfYWxsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJkMDc2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X2FsbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzMgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgZmluZF9mb3JtYXRfYWxsLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0FMTF9ERVRBSUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9BTExfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXRfc3RvcmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3JlcGxhY2Vfc3RvcmFnZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBmaW5kX2Zvcm1hdF9hbGxfY29weSAoaXRlcmF0b3IgdmFyaWFudCkgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwyKAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXRSZXN1bHRUJiBGb3JtYXRSZXN1bHQgKQotICAgICAgICAgICAgeyAgICAgICAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSBpbnB1dF9pdGVyYXRvcl90eXBlOyAKLQotICAgICAgICAgICAgICAgIHR5cGVkZWYgZmluZF9mb3JtYXRfc3RvcmU8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRSZXN1bHRUID4gc3RvcmVfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBzdG9yZSBmb3IgdGhlIGZpbmQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgc3RvcmVfdHlwZSBNKCBGaW5kUmVzdWx0LCBGb3JtYXRSZXN1bHQsIEZvcm1hdHRlciApOwotCi0gICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBsYXN0IG1hdGNoCi0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBMYXN0TWF0Y2g9OjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpOwotCi0gICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBtYXRjaGVzCi0gICAgICAgICAgICAgICAgd2hpbGUoIE0gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIExhc3RNYXRjaCwgTS5iZWdpbigpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBmb3JtYXR0ZWQgcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgIE91dHB1dCA9IHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oTS5mb3JtYXRfcmVzdWx0KCkpLCA6Om5kbmJvb3N0OjplbmQoTS5mb3JtYXRfcmVzdWx0KCkpLCBPdXRwdXQgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZWVkIHRvIHRoZSBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIExhc3RNYXRjaD1NLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICBNPUZpbmRlciggTGFzdE1hdGNoLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICBPdXRwdXQgPSBzdGQ6OmNvcHkoIExhc3RNYXRjaCwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSwgT3V0cHV0ICk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIElucHV0VCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBmaW5kX2Zvcm1hdF9hbGxfY29weV9pbXBsKAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCApCi0gICAgICAgICAgICB7ICAgCi0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF9mb3JtYXRfYWxsX2NvcHlfaW1wbDIoIAotICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBGaW5kUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyKEZpbmRSZXN1bHQpICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29weSggOjpuZG5ib29zdDo6YmVnaW4oSW5wdXQpLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpLCBPdXRwdXQgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAvLyBmaW5kX2Zvcm1hdF9hbGxfY29weSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZFJlc3VsdFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwyKAotICAgICAgICAgICAgICAgIGNvbnN0IElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRmluZFJlc3VsdFQmIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0UmVzdWx0VCYgRm9ybWF0UmVzdWx0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxJbnB1dFQ+Ojp0eXBlIGlucHV0X2l0ZXJhdG9yX3R5cGU7IAotCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFJlc3VsdFQgPiBzdG9yZV90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN0b3JlIGZvciB0aGUgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICBzdG9yZV90eXBlIE0oIEZpbmRSZXN1bHQsIEZvcm1hdFJlc3VsdCwgRm9ybWF0dGVyICk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIGxhc3QgbWF0Y2gKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIExhc3RNYXRjaD06Om5kbmJvb3N0OjpiZWdpbihJbnB1dCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBPdXRwdXQgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAgSW5wdXRUIE91dHB1dDsKLQotICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwgbWF0Y2hlcwotICAgICAgICAgICAgICAgIHdoaWxlKCBNICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjppbnNlcnQoIE91dHB1dCwgOjpuZG5ib29zdDo6ZW5kKE91dHB1dCksIExhc3RNYXRjaCwgTS5iZWdpbigpICk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgZm9ybWF0dGVkIHJlc3VsdAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggT3V0cHV0LCA6Om5kbmJvb3N0OjplbmQoT3V0cHV0KSwgTS5mb3JtYXRfcmVzdWx0KCkgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZWVkIHRvIHRoZSBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIExhc3RNYXRjaD1NLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICBNPUZpbmRlciggTGFzdE1hdGNoLCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBPdXRwdXQsIDo6bmRuYm9vc3Q6OmVuZChPdXRwdXQpLCBMYXN0TWF0Y2gsIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBPdXRwdXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsIAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGaW5kUmVzdWx0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgSW5wdXRUIGZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgY29uc3QgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICBjb25zdCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmNoZWNrX2ZpbmRfcmVzdWx0KElucHV0LCBGaW5kUmVzdWx0KSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfY29weV9pbXBsMigKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlcihGaW5kUmVzdWx0KSApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBJbnB1dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAvLyBmaW5kX2Zvcm1hdF9hbGwgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdFJlc3VsdFQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgZmluZF9mb3JtYXRfYWxsX2ltcGwyKCAKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRSZXN1bHRUIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgRm9ybWF0UmVzdWx0VCBGb3JtYXRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlX2l0ZXJhdG9yPElucHV0VD46OnR5cGUgaW5wdXRfaXRlcmF0b3JfdHlwZTsgCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBmaW5kX2Zvcm1hdF9zdG9yZTwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFJlc3VsdFQgPiBzdG9yZV90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHN0b3JlIGZvciB0aGUgZmluZCByZXN1bHQKLSAgICAgICAgICAgICAgICBzdG9yZV90eXBlIE0oIEZpbmRSZXN1bHQsIEZvcm1hdFJlc3VsdCwgRm9ybWF0dGVyICk7Ci0gICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSW5zdGFudGlhdGUgcmVwbGFjZW1lbnQgc3RvcmFnZQotICAgICAgICAgICAgICAgIHN0ZDo6ZGVxdWU8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV92YWx1ZTxJbnB1dFQ+Ojp0eXBlPiBTdG9yYWdlOwotCi0gICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSByZXBsYWNlbWVudCBpdGVyYXRvcnMKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEluc2VydEl0PTo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KTsKLSAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIFNlYXJjaEl0PTo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB3aGlsZSggTSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgIEluc2VydEl0PXByb2Nlc3Nfc2VnbWVudCggCi0gICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRJdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaEl0LAotICAgICAgICAgICAgICAgICAgICAgICAgTS5iZWdpbigpICk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAvLyBBZGp1c3Qgc2VhcmNoIGl0ZXJhdG9yCi0gICAgICAgICAgICAgICAgICAgIFNlYXJjaEl0PU0uZW5kKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ29weSBmb3JtYXR0ZWQgcmVwbGFjZSB0byB0aGUgc3RvcmFnZQotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6Y29weV90b19zdG9yYWdlKCBTdG9yYWdlLCBNLmZvcm1hdF9yZXN1bHQoKSApOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgcmFuZ2UgZm9yIGEgbmV4dCBtYXRjaAotICAgICAgICAgICAgICAgICAgICBNPUZpbmRlciggU2VhcmNoSXQsIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBwcm9jZXNzIHRoZSBsYXN0IHNlZ21lbnQKLSAgICAgICAgICAgICAgICBJbnNlcnRJdD06Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6cHJvY2Vzc19zZWdtZW50KCAKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIEluc2VydEl0LAotICAgICAgICAgICAgICAgICAgICBTZWFyY2hJdCwKLSAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZW5kKElucHV0KSApOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICggU3RvcmFnZS5lbXB0eSgpICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRydW5jYXRlIGlucHV0Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjplcmFzZSggSW5wdXQsIEluc2VydEl0LCA6Om5kbmJvb3N0OjplbmQoSW5wdXQpICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgcmVtYWluaW5nIGRhdGEgdG8gdGhlIGVuZCBvZiBpbnB1dAotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBJbnB1dCwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSwgU3RvcmFnZS5iZWdpbigpLCBTdG9yYWdlLmVuZCgpICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0X2FsbF9pbXBsKCAKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRSZXN1bHRUIEZpbmRSZXN1bHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpjaGVja19maW5kX3Jlc3VsdChJbnB1dCwgRmluZFJlc3VsdCkgKSB7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfaW1wbDIoCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXIoRmluZFJlc3VsdCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9BTExfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kX2Zvcm1hdF9zdG9yZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X3N0b3JlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODljMTM3Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X3N0b3JlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZpbmRfZm9ybWF0X3N0b3JlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX1NUT1JFX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX1NUT1JFX0RFVEFJTF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAgdGVtcG9yYXJ5IGZvcm1hdCBhbmQgZmluZCByZXN1bHQgc3RvcmFnZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTIpIC8vYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jZW5kaWYKLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0UmVzdWx0VCA+Ci0gICAgICAgICAgICBjbGFzcyBmaW5kX2Zvcm1hdF9zdG9yZSA6IAotICAgICAgICAgICAgICAgIHB1YmxpYyBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgewotICAgICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgICAgIC8vIHR5cGVkZWZzCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiBiYXNlX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3JtYXR0ZXJUICBmb3JtYXR0ZXJfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcm1hdFJlc3VsdFQgZm9ybWF0X3Jlc3VsdF90eXBlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIGZpbmRfZm9ybWF0X3N0b3JlKCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VfdHlwZSYgRmluZFJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdF9yZXN1bHRfdHlwZSYgRm9ybWF0UmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyX3R5cGUmIEZvcm1hdHRlciApIDoKLSAgICAgICAgICAgICAgICAgICAgYmFzZV90eXBlKEZpbmRSZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICBtX0Zvcm1hdFJlc3VsdChGb3JtYXRSZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICBtX0Zvcm1hdHRlcihGb3JtYXR0ZXIpIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBBc3NpZ25tZW50Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZpbmRSZXN1bHRUID4KLSAgICAgICAgICAgICAgICBmaW5kX2Zvcm1hdF9zdG9yZSYgb3BlcmF0b3I9KCBGaW5kUmVzdWx0VCBGaW5kUmVzdWx0ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+OjpvcGVyYXRvcj0oRmluZFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmKCAhdGhpcy0+ZW1wdHkoKSApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fRm9ybWF0UmVzdWx0PW1fRm9ybWF0dGVyKEZpbmRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gUmV0cmlldmUgZm9ybWF0IHJlc3VsdAotICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdF9yZXN1bHRfdHlwZSYgZm9ybWF0X3Jlc3VsdCgpCi0gICAgICAgICAgICAgICAgeyAgIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9Gb3JtYXRSZXN1bHQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGZvcm1hdF9yZXN1bHRfdHlwZSBtX0Zvcm1hdFJlc3VsdDsKLSAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXJfdHlwZSYgbV9Gb3JtYXR0ZXI7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEZpbmRSZXN1bHRUPgotICAgICAgICAgICAgYm9vbCBjaGVja19maW5kX3Jlc3VsdChJbnB1dFQmLCBGaW5kUmVzdWx0VCYgRmluZFJlc3VsdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8SW5wdXRUPjo6dHlwZSBpbnB1dF9pdGVyYXRvcl90eXBlOyAKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxpbnB1dF9pdGVyYXRvcl90eXBlPiBSZXN1bHRSYW5nZShGaW5kUmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIVJlc3VsdFJhbmdlLmVtcHR5KCk7Ci0gICAgICAgICAgICB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfU1RPUkVfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9maW5kZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDQ2ZTkyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0NiArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwNi4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklOREVSX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX0ZJTkRFUl9ERVRBSUxfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25zdGFudHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotCi0vLyAgZmluZCBmaXJzdCBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZmluZCBhIHN1YnNlcXVlbmNlIGluIHRoZSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBSZXR1cm5zIGEgcGFpciA8YmVnaW4sZW5kPiBtYXJraW5nIHRoZSBzdWJzZXF1ZW5jZSBpbiB0aGUgc2VxdWVuY2UuCi0gICAgICAgICAgICAgICAgSWYgdGhlIGZpbmQgZmFpbHMsIGZ1bmN0b3IgcmV0dXJucyA8RW5kLEVuZD4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWFyY2hJdGVyYXRvclQsdHlwZW5hbWUgUHJlZGljYXRlVD4KLSAgICAgICAgICAgIHN0cnVjdCBmaXJzdF9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBTZWFyY2hJdGVyYXRvclQgc2VhcmNoX2l0ZXJhdG9yX3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VhcmNoVCA+Ci0gICAgICAgICAgICAgICAgZmlyc3RfZmluZGVyRiggY29uc3QgU2VhcmNoVCYgU2VhcmNoLCBQcmVkaWNhdGVUIENvbXAgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKDo6bmRuYm9vc3Q6OmJlZ2luKFNlYXJjaCksIDo6bmRuYm9vc3Q6OmVuZChTZWFyY2gpKSwgbV9Db21wKENvbXApIHt9Ci0gICAgICAgICAgICAgICAgZmlyc3RfZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pdGVyYXRvcl90eXBlIFNlYXJjaEJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoRW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVCBDb21wICkgOgotICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaChTZWFyY2hCZWdpbiwgU2VhcmNoRW5kKSwgbV9Db21wKENvbXApIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBPdXRlciBsb29wCi0gICAgICAgICAgICAgICAgICAgIGZvcihpbnB1dF9pdGVyYXRvcl90eXBlIE91dGVySXQ9QmVnaW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBPdXRlckl0IT1FbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK091dGVySXQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjawotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIG5kbmJvb3N0OjplbXB0eShtX1NlYXJjaCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJbm5lckl0PU91dGVySXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTdWJzdHJJdD1tX1NlYXJjaC5iZWdpbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yKDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbm5lckl0IT1FbmQgJiYgU3Vic3RySXQhPW1fU2VhcmNoLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrSW5uZXJJdCwrK1N1YnN0ckl0KQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhKCBtX0NvbXAoKklubmVySXQsKlN1YnN0ckl0KSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YnN0cmluZyBtYXRjaGluZyBzdWNjZWVkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggU3Vic3RySXQ9PW1fU2VhcmNoLmVuZCgpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIE91dGVySXQsIElubmVySXQgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8c2VhcmNoX2l0ZXJhdG9yX3R5cGU+IG1fU2VhcmNoOwotICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgbV9Db21wOwotICAgICAgICAgICAgfTsKLQotLy8gIGZpbmQgbGFzdCBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZmluZCB0aGUgbGFzdCBtYXRjaCBhIHN1YnNlcXVlbmNlIGluIHRoZSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBSZXR1cm5zIGEgcGFpciA8YmVnaW4sZW5kPiBtYXJraW5nIHRoZSBzdWJzZXF1ZW5jZSBpbiB0aGUgc2VxdWVuY2UuCi0gICAgICAgICAgICAgICAgSWYgdGhlIGZpbmQgZmFpbHMsIHJldHVybnMgPEVuZCxFbmQ+Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VhcmNoSXRlcmF0b3JULCB0eXBlbmFtZSBQcmVkaWNhdGVUPgotICAgICAgICAgICAgc3RydWN0IGxhc3RfZmluZGVyRgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgU2VhcmNoSXRlcmF0b3JUIHNlYXJjaF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgZmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQ+IGZpcnN0X2ZpbmRlcl90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlYXJjaFQgPgotICAgICAgICAgICAgICAgIGxhc3RfZmluZGVyRiggY29uc3QgU2VhcmNoVCYgU2VhcmNoLCBQcmVkaWNhdGVUIENvbXAgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKDo6bmRuYm9vc3Q6OmJlZ2luKFNlYXJjaCksIDo6bmRuYm9vc3Q6OmVuZChTZWFyY2gpKSwgbV9Db21wKENvbXApIHt9Ci0gICAgICAgICAgICAgICAgbGFzdF9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSBTZWFyY2hFbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIENvbXAgKSA6Ci0gICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoKFNlYXJjaEJlZ2luLCBTZWFyY2hFbmQpLCBtX0NvbXAoQ29tcCkge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYoIG5kbmJvb3N0OjplbXB0eShtX1NlYXJjaCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBFbmQsIEVuZCApOwotCi0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OgotICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvclQ+OjppdGVyYXRvcl9jYXRlZ29yeSBjYXRlZ29yeTsKLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmluZGl0KCBCZWdpbiwgRW5kLCBjYXRlZ29yeSgpICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIC8vIGZvcndhcmQgaXRlcmF0b3IKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBmaW5kaXQoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIGZpcnN0X2ZpbmRlcl90eXBlIGZpcnN0X2ZpbmRlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fU2VhcmNoLmJlZ2luKCksIG1fU2VhcmNoLmVuZCgpLCBtX0NvbXAgKTsKLQotICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSBNPWZpcnN0X2ZpbmRlciggQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgICAgICAgICByZXN1bHRfdHlwZSBMYXN0PU07Ci0KLSAgICAgICAgICAgICAgICAgICAgd2hpbGUoIE0gKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMYXN0PU07Ci0gICAgICAgICAgICAgICAgICAgICAgICBNPWZpcnN0X2ZpbmRlciggOjpuZG5ib29zdDo6ZW5kKE0pLCBFbmQgKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMYXN0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3IKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBmaW5kaXQoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIE91dGVyIGxvb3AKLSAgICAgICAgICAgICAgICAgICAgZm9yKGlucHV0X2l0ZXJhdG9yX3R5cGUgT3V0ZXJJdD1FbmQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBPdXRlckl0IT1CZWdpbjsgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIE91dGVySXQyPS0tT3V0ZXJJdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJbm5lckl0PU91dGVySXQyOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU3Vic3RySXQ9bV9TZWFyY2guYmVnaW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcig7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5uZXJJdCE9RW5kICYmIFN1YnN0ckl0IT1tX1NlYXJjaC5lbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK0lubmVySXQsKytTdWJzdHJJdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggISggbV9Db21wKCpJbm5lckl0LCpTdWJzdHJJdCkgKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWJzdHJpbmcgbWF0Y2hpbmcgc3VjY2VlZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiggU3Vic3RySXQ9PW1fU2VhcmNoLmVuZCgpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIE91dGVySXQyLCBJbm5lckl0ICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZCwgRW5kICk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPHNlYXJjaF9pdGVyYXRvcl90eXBlPiBtX1NlYXJjaDsKLSAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIG1fQ29tcDsKLSAgICAgICAgICAgIH07Ci0KLS8vICBmaW5kIG4tdGggZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGZpbmQgdGhlIG4tdGggbWF0Y2ggb2YgYSBzdWJzZXF1ZW5jZSBpbiB0aGUgc2VxdWVuY2UgKCBmdW5jdG9yICkKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgUmV0dXJucyBhIHBhaXIgPGJlZ2luLGVuZD4gbWFya2luZyB0aGUgc3Vic2VxdWVuY2UgaW4gdGhlIHNlcXVlbmNlLgotICAgICAgICAgICAgICAgIElmIHRoZSBmaW5kIGZhaWxzLCByZXR1cm5zIDxFbmQsRW5kPgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlYXJjaEl0ZXJhdG9yVCwgdHlwZW5hbWUgUHJlZGljYXRlVD4KLSAgICAgICAgICAgIHN0cnVjdCBudGhfZmluZGVyRgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgU2VhcmNoSXRlcmF0b3JUIHNlYXJjaF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgZmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQ+IGZpcnN0X2ZpbmRlcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgbGFzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaXRlcmF0b3JfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVD4gbGFzdF9maW5kZXJfdHlwZTsKLQotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZWFyY2hUID4KLSAgICAgICAgICAgICAgICBudGhfZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlYXJjaFQmIFNlYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUIENvbXApIDoKLSAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2goOjpuZG5ib29zdDo6YmVnaW4oU2VhcmNoKSwgOjpuZG5ib29zdDo6ZW5kKFNlYXJjaCkpLAotICAgICAgICAgICAgICAgICAgICBtX050aChOdGgpLAotICAgICAgICAgICAgICAgICAgICBtX0NvbXAoQ29tcCkge30KLSAgICAgICAgICAgICAgICBudGhfZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pdGVyYXRvcl90eXBlIFNlYXJjaEJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2l0ZXJhdG9yX3R5cGUgU2VhcmNoRW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgQ29tcCkgOgotICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaChTZWFyY2hCZWdpbiwgU2VhcmNoRW5kKSwKLSAgICAgICAgICAgICAgICAgICAgbV9OdGgoTnRoKSwKLSAgICAgICAgICAgICAgICAgICAgbV9Db21wKENvbXApIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZihtX050aD49MCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRfZm9yd2FyZChCZWdpbiwgRW5kLCBtX050aCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmluZF9iYWNrd2FyZChCZWdpbiwgRW5kLCAtbV9OdGgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgLy8gSW1wbGVtZW50YXRpb24gaGVscGVycwotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIGZpbmRfZm9yd2FyZCgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBOKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU2FuaXR5IGNoZWNrCi0gICAgICAgICAgICAgICAgICAgIGlmKCBuZG5ib29zdDo6ZW1wdHkobV9TZWFyY2gpICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggRW5kLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0ZSBmaW5kIGZ1bmN0b3IKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RfZmluZGVyX3R5cGUgZmlyc3RfZmluZGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgbV9TZWFyY2guYmVnaW4oKSwgbV9TZWFyY2guZW5kKCksIG1fQ29tcCApOwotCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlIE0oIEJlZ2luLCBCZWdpbiApOwotCi0gICAgICAgICAgICAgICAgICAgIGZvciggdW5zaWduZWQgaW50IG49MDsgbjw9TjsgKytuICkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluZCBuZXh0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICBNPWZpcnN0X2ZpbmRlciggOjpuZG5ib29zdDo6ZW5kKE0pLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhTSApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3Vic2VxdWVuY2Ugbm90IGZvdW5kLCByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBNOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIGZpbmRfYmFja3dhcmQoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTikgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjawotICAgICAgICAgICAgICAgICAgICBpZiggbmRuYm9vc3Q6OmVtcHR5KG1fU2VhcmNoKSApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZCwgRW5kICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gSW5zdGFudGlhdGUgZmluZCBmdW5jdG9yCi0gICAgICAgICAgICAgICAgICAgIGxhc3RfZmluZGVyX3R5cGUgbGFzdF9maW5kZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX1NlYXJjaC5iZWdpbigpLCBtX1NlYXJjaC5lbmQoKSwgbV9Db21wICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUgTSggRW5kLCBFbmQgKTsKLQotICAgICAgICAgICAgICAgICAgICBmb3IoIHVuc2lnbmVkIGludCBuPTE7IG48PU47ICsrbiApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgbmV4dCBtYXRjaAotICAgICAgICAgICAgICAgICAgICAgICAgTT1sYXN0X2ZpbmRlciggQmVnaW4sIDo6bmRuYm9vc3Q6OmJlZ2luKE0pICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIU0gKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1YnNlcXVlbmNlIG5vdCBmb3VuZCwgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTTsKLSAgICAgICAgICAgICAgICB9Ci0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxzZWFyY2hfaXRlcmF0b3JfdHlwZT4gbV9TZWFyY2g7Ci0gICAgICAgICAgICAgICAgaW50IG1fTnRoOwotICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgbV9Db21wOwotICAgICAgICAgICAgfTsKLQotLy8gIGZpbmQgaGVhZC90YWlsIGltcGxlbWVudGF0aW9uIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF9oZWFkX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiwKLSAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIEZvcndhcmRJdGVyYXRvclQgaW5wdXRfaXRlcmF0b3JfdHlwZTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJdD1CZWdpbjsKLSAgICAgICAgICAgICAgICBmb3IoCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBJbmRleD0wOwotICAgICAgICAgICAgICAgICAgICBJbmRleDxOICYmIEl0IT1FbmQ7ICsrSW5kZXgsKytJdCApIHt9OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBCZWdpbiwgSXQgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICBmaW5kX2hlYWRfaW1wbCgKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kLAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBOLAotICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgRm9yd2FyZEl0ZXJhdG9yVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIChFbmQ8PUJlZ2luKSB8fCAoIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oRW5kLUJlZ2luKSA8IE4gKSApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggQmVnaW4sIEVuZCApOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKEJlZ2luLEJlZ2luK04pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBGaW5kIGhlYWQgaW1wbGVtZW50YXRpb24KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfaGVhZF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OgotICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yVD46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdGVnb3J5OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2hlYWRfaW1wbCggQmVnaW4sIEVuZCwgTiwgY2F0ZWdvcnkoKSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfdGFpbF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4sCi0gICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBJbmRleD0wOwotICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgSXQ9QmVnaW47Ci0gICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdHlwZSBJdDI9QmVnaW47Ci0KLSAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIEl0MiBieSBOIGluY3JlbWVudHMKLSAgICAgICAgICAgICAgICBmb3IoIEluZGV4PTA7IEluZGV4PE4gJiYgSXQyIT1FbmQ7ICsrSW5kZXgsKytJdDIgKSB7fTsKLQotICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UgSXQsIEl0MiB0byB0aGUgZW5kCi0gICAgICAgICAgICAgICAgZm9yKDsgSXQyIT1FbmQ7ICsrSXQsKytJdDIgKSB7fTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggSXQsIEl0MiApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfdGFpbF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4sCi0gICAgICAgICAgICAgICAgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3R5cGUgSXQ9RW5kOwotICAgICAgICAgICAgICAgIGZvcigKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IEluZGV4PTA7Ci0gICAgICAgICAgICAgICAgICAgIEluZGV4PE4gJiYgSXQhPUJlZ2luOyArK0luZGV4LC0tSXQgKSB7fTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggSXQsIEVuZCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgICAgIGZpbmRfdGFpbF9pbXBsKAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQsCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IE4sCi0gICAgICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3JUIGlucHV0X2l0ZXJhdG9yX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgIGlmICggKEVuZDw9QmVnaW4pIHx8ICggc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihFbmQtQmVnaW4pIDwgTiApICkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKCBCZWdpbiwgRW5kICk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZC1OLCBFbmQgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgZmluZF90YWlsX2ltcGwoCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCwKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgTiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3JUPjo6aXRlcmF0b3JfY2F0ZWdvcnkgY2F0ZWdvcnk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfdGFpbF9pbXBsKCBCZWdpbiwgRW5kLCBOLCBjYXRlZ29yeSgpICk7Ci0gICAgICAgICAgICB9Ci0KLQotCi0vLyAgZmluZCBoZWFkIGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0KLSAgICAgICAgICAgIC8vIGZpbmQgYSBoZWFkIGluIHRoZSBzZXF1ZW5jZSAoIGZ1bmN0b3IgKQotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBUaGlzIGZ1bmN0b3IgZmluZCBhIGhlYWQgb2YgdGhlIHNwZWNpZmllZCByYW5nZS4gRm9yCi0gICAgICAgICAgICAgICAgYSBzcGVjaWZpZWQgTiwgdGhlIGhlYWQgaXMgYSBzdWJzZXF1ZW5jZSBvZiBOIHN0YXJ0aW5nCi0gICAgICAgICAgICAgICAgZWxlbWVudHMgb2YgdGhlIHJhbmdlLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHN0cnVjdCBoZWFkX2ZpbmRlckYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICBoZWFkX2ZpbmRlckYoIGludCBOICkgOiBtX04oTikge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPgotICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgQmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKG1fTj49MCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZGV0YWlsOjpmaW5kX2hlYWRfaW1wbCggQmVnaW4sIEVuZCwgbV9OICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiBSZXM9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfdGFpbF9pbXBsKCBCZWdpbiwgRW5kLCAtbV9OICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjptYWtlX2l0ZXJhdG9yX3JhbmdlKEJlZ2luLCBSZXMuYmVnaW4oKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgaW50IG1fTjsKLSAgICAgICAgICAgIH07Ci0KLS8vICBmaW5kIHRhaWwgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLQotICAgICAgICAgICAgLy8gZmluZCBhIHRhaWwgaW4gdGhlIHNlcXVlbmNlICggZnVuY3RvciApCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFRoaXMgZnVuY3RvciBmaW5kIGEgdGFpbCBvZiB0aGUgc3BlY2lmaWVkIHJhbmdlLiBGb3IKLSAgICAgICAgICAgICAgICBhIHNwZWNpZmllZCBOLCB0aGUgaGVhZCBpcyBhIHN1YnNlcXVlbmNlIG9mIE4gc3RhcnRpbmcKLSAgICAgICAgICAgICAgICBlbGVtZW50cyBvZiB0aGUgcmFuZ2UuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgc3RydWN0IHRhaWxfZmluZGVyRgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIHRhaWxfZmluZGVyRiggaW50IE4gKSA6IG1fTihOKSB7fQotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYobV9OPj0wKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6OmZpbmRfdGFpbF9pbXBsKCBCZWdpbiwgRW5kLCBtX04gKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+IFJlcz0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6ZmluZF9oZWFkX2ltcGwoIEJlZ2luLCBFbmQsIC1tX04gKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1ha2VfaXRlcmF0b3JfcmFuZ2UoUmVzLmVuZCgpLCBFbmQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGludCBtX047Ci0gICAgICAgICAgICB9OwotCi0vLyAgZmluZCB0b2tlbiBmdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gZmluZCBhIHRva2VuIGluIGEgc2VxdWVuY2UgKCBmdW5jdG9yICkKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgVGhpcyBmaW5kIGZ1bmN0b3IgZmluZHMgYSB0b2tlbiBzcGVjaWZpZWQgYmUgYSBwcmVkaWNhdGUKLSAgICAgICAgICAgICAgICBpbiBhIHNlcXVlbmNlLiBJdCBpcyBlcXVpdmFsZW50IG9mIHN0ZDo6ZmluZCBhbGdvcml0aG0sCi0gICAgICAgICAgICAgICAgd2l0aCBhbiBleGNlcHRpb24gdGhhdCBpdCByZXR1cm4gcmFuZ2UgaW5zdGVhZCBvZiBhIHNpbmdsZQotICAgICAgICAgICAgICAgIGl0ZXJhdG9yLgotCi0gICAgICAgICAgICAgICAgSWYgYkNvbXByZXNzIGlzIHNldCB0byB0cnVlLCBhZGphY2VudCBtYXRjaGluZyB0b2tlbnMgYXJlCi0gICAgICAgICAgICAgICAgY29uY2F0ZW5hdGVkIGludG8gb25lIG1hdGNoLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkaWNhdGVUID4KLSAgICAgICAgICAgIHN0cnVjdCB0b2tlbl9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgdG9rZW5fZmluZGVyRigKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVCBQcmVkLAotICAgICAgICAgICAgICAgICAgICB0b2tlbl9jb21wcmVzc19tb2RlX3R5cGUgZUNvbXByZXNzPXRva2VuX2NvbXByZXNzX29mZiApIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fUHJlZChQcmVkKSwgbV9lQ29tcHJlc3MoZUNvbXByZXNzKSB7fQotCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZvcndhcmRJdGVyYXRvclQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiByZXN1bHRfdHlwZTsKLQotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEl0PXN0ZDo6ZmluZF9pZiggQmVnaW4sIEVuZCwgbV9QcmVkICk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYoIEl0PT1FbmQgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoIEVuZCwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEl0Mj1JdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIG1fZUNvbXByZXNzPT10b2tlbl9jb21wcmVzc19vbiApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluZCBmaXJzdCBub24tbWF0Y2hpbmcgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoIEl0MiE9RW5kICYmIG1fUHJlZCgqSXQyKSApICsrSXQyOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UgYnkgb25lIHBvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytJdDI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRfdHlwZSggSXQsIEl0MiApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQgbV9QcmVkOwotICAgICAgICAgICAgICAgIHRva2VuX2NvbXByZXNzX21vZGVfdHlwZSBtX2VDb21wcmVzczsKLSAgICAgICAgICAgIH07Ci0KLS8vICBmaW5kIHJhbmdlIGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBmaW5kIGEgcmFuZ2UgaW4gdGhlIHNlcXVlbmNlICggZnVuY3RvciApCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFRoaXMgZnVuY3RvciBhY3R1YWxseSBkb2VzIG5vdCBwZXJmb3JtIGFueSBmaW5kIG9wZXJhdGlvbi4KLSAgICAgICAgICAgICAgICBJdCBhbHdheXMgcmV0dXJucyBnaXZlbiBpdGVyYXRvciByYW5nZSBhcyBhIHJlc3VsdC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IxVD4KLSAgICAgICAgICAgIHN0cnVjdCByYW5nZV9maW5kZXJGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBGb3J3YXJkSXRlcmF0b3IxVCBpbnB1dF9pdGVyYXRvcl90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8aW5wdXRfaXRlcmF0b3JfdHlwZT4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb25zdHJ1Y3Rpb24KLSAgICAgICAgICAgICAgICByYW5nZV9maW5kZXJGKAotICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90eXBlIEVuZCApIDogbV9SYW5nZShCZWdpbiwgRW5kKSB7fQotCi0gICAgICAgICAgICAgICAgcmFuZ2VfZmluZGVyRihjb25zdCBpdGVyYXRvcl9yYW5nZTxpbnB1dF9pdGVyYXRvcl90eXBlPiYgUmFuZ2UpIDoKLSAgICAgICAgICAgICAgICAgICAgbV9SYW5nZShSYW5nZSkge30KLQotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IyVCA+Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rm9yd2FyZEl0ZXJhdG9yMlQ+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMlQsCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjJUICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORCggX19NV0VSS1NfXywgPD0gMHgzMDAzICkgCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTxjb25zdCBGb3J3YXJkSXRlcmF0b3IyVD4odGhpcy0+bV9SYW5nZSk7Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3IyVD4obV9SYW5nZS5iZWdpbigpLCBtX1JhbmdlLmVuZCgpKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX1JhbmdlOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPGlucHV0X2l0ZXJhdG9yX3R5cGU+IG1fUmFuZ2U7Ci0gICAgICAgICAgICB9OwotCi0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GSU5ERVJfREVUQUlMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9mb3JtYXR0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGU1ZGVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmb3JtYXR0ZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfREVUQUlMX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRk9STUFUVEVSX0RFVEFJTF9IUFAKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3V0aWwuaHBwPgotCi0vLyAgZ2VuZXJpYyByZXBsYWNlIGZ1bmN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLSAgICAgICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICBjb25zdCBmb3JtYXQgZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gY29uc3RhbnQgZm9ybWF0IGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgICAgIHN0cnVjdCBjb25zdF9mb3JtYXRGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUgZm9ybWF0X2l0ZXJhdG9yOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8Zm9ybWF0X2l0ZXJhdG9yPiByZXN1bHRfdHlwZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgICAgIC8vIENvbnN0cnVjdGlvbgotICAgICAgICAgICAgICAgIGNvbnN0X2Zvcm1hdEYoY29uc3QgUmFuZ2VUJiBGb3JtYXQpIDoKLSAgICAgICAgICAgICAgICAgICAgbV9Gb3JtYXQoOjpuZG5ib29zdDo6YmVnaW4oRm9ybWF0KSwgOjpuZG5ib29zdDo6ZW5kKEZvcm1hdCkpIHt9Ci0KLSAgICAgICAgICAgICAgICAvLyBPcGVyYXRpb24KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICAgICAgICAgIHJlc3VsdF90eXBlJiBvcGVyYXRvcigpKGNvbnN0IFJhbmdlMlQmKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fRm9ybWF0OwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRfdHlwZSYgb3BlcmF0b3IoKShjb25zdCBSYW5nZTJUJikgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtX0Zvcm1hdDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3R5cGUgbV9Gb3JtYXQ7Ci0gICAgICAgICAgICB9OwotCi0vLyAgaWRlbnRpdHkgZm9ybWF0IGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGlkZW50aXR5IGZvcm1hdCBmdW5jdG9yCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWRlbnRpdHlfZm9ybWF0RgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBSYW5nZTJUID4KLSAgICAgICAgICAgICAgICBjb25zdCBSYW5nZVQmIG9wZXJhdG9yKCkoY29uc3QgUmFuZ2UyVCYgUmVwbGFjZSkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBSYW5nZVQoOjpuZG5ib29zdDo6YmVnaW4oUmVwbGFjZSksIDo6bmRuYm9vc3Q6OmVuZChSZXBsYWNlKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotLy8gIGVtcHR5IGZvcm1hdCBmdW5jdG9yICggdXNlZCBieSBlcmFzZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgICAgIAotICAgICAgICAgICAgLy8gZW1wdHkgZm9ybWF0IGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDaGFyVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgZW1wdHlfZm9ybWF0RgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBSZXBsYWNlVCA+Ci0gICAgICAgICAgICAgICAgZW1wdHlfY29udGFpbmVyPENoYXJUPiBvcGVyYXRvcigpKGNvbnN0IFJlcGxhY2VUJikgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eV9jb250YWluZXI8Q2hhclQ+KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotLy8gIGRpc3NlY3QgZm9ybWF0IGZ1bmN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIGRpc3NlY3QgZm9ybWF0IGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbmRlclQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgZGlzc2VjdF9mb3JtYXRGCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW9uCi0gICAgICAgICAgICAgICAgZGlzc2VjdF9mb3JtYXRGKEZpbmRlclQgRmluZGVyKSA6Ci0gICAgICAgICAgICAgICAgICBtX0ZpbmRlcihGaW5kZXIpIHt9Ci0KLSAgICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICAgICAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCAKLSAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICAgIG9wZXJhdG9yKCkoY29uc3QgUmFuZ2VUJiBSZXBsYWNlKSBjb25zdAotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX0ZpbmRlcig6Om5kbmJvb3N0OjpiZWdpbihSZXBsYWNlKSwgOjpuZG5ib29zdDo6ZW5kKFJlcGxhY2UpKTsKLSAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICAgICBGaW5kZXJUIG1fRmluZGVyOwotICAgICAgICAgICAgfTsKLQotCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfRk9STUFUVEVSX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvcmVwbGFjZV9zdG9yYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvcmVwbGFjZV9zdG9yYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc0ZDg1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3JlcGxhY2Vfc3RvcmFnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgcmVwbGFjZV9zdG9yYWdlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX1JFUExBQ0VfU1RPUkFHRV9ERVRBSUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19SRVBMQUNFX1NUT1JBR0VfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9zZXF1ZW5jZV90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3NlcXVlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLSAgICAgICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICBzdG9yYWdlIGhhbmRsaW5nIHJvdXRpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFN0b3JhZ2VULCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQgPgotICAgICAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBtb3ZlX2Zyb21fc3RvcmFnZSgKLSAgICAgICAgICAgICAgICBTdG9yYWdlVCYgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgRGVzdEJlZ2luLAotICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBEZXN0RW5kICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0SXQ9RGVzdEJlZ2luOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHdoaWxlKCAhU3RvcmFnZS5lbXB0eSgpICYmIE91dHB1dEl0IT1EZXN0RW5kICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpPdXRwdXRJdD1TdG9yYWdlLmZyb250KCk7Ci0gICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UucG9wX2Zyb250KCk7Ci0gICAgICAgICAgICAgICAgICAgICsrT3V0cHV0SXQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIE91dHB1dEl0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU3RvcmFnZVQsIHR5cGVuYW1lIFdoYXRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGNvcHlfdG9fc3RvcmFnZSgKLSAgICAgICAgICAgICAgICBTdG9yYWdlVCYgU3RvcmFnZSwKLSAgICAgICAgICAgICAgICBjb25zdCBXaGF0VCYgV2hhdCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU3RvcmFnZS5pbnNlcnQoIFN0b3JhZ2UuZW5kKCksIDo6bmRuYm9vc3Q6OmJlZ2luKFdoYXQpLCA6Om5kbmJvb3N0OjplbmQoV2hhdCkgKTsKLSAgICAgICAgICAgIH0KLQotCi0vLyAgcHJvY2VzcyBzZWdtZW50IHJvdXRpbmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgYm9vbCBIYXNTdGFibGVJdGVyYXRvcnMgPgotICAgICAgICAgICAgc3RydWN0IHByb2Nlc3Nfc2VnbWVudF9oZWxwZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBPcHRpbWl6ZWQgdmVyc2lvbiBvZiBwcm9jZXNzX3NlZ21lbnQgZm9yIGdlbmVyaWMgc2VxdWVuY2UKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFN0b3JhZ2VULAotICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVQmIFN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgLypJbnB1dCovLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEluc2VydEl0LAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBTZWdtZW50RW5kICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENvcHkgZGF0YSBmcm9tIHRoZSBzdG9yYWdlIHVudGlsIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBJdD06Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6bW92ZV9mcm9tX3N0b3JhZ2UoIFN0b3JhZ2UsIEluc2VydEl0LCBTZWdtZW50QmVnaW4gKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyAzIGNhc2VzIGFyZSBwb3NzaWJsZSA6Ci0gICAgICAgICAgICAgICAgICAgIC8vICAgYSkgU3RvcmFnZSBpcyBlbXB0eSwgSXQ9PVNlZ21lbnRCZWdpbgotICAgICAgICAgICAgICAgICAgICAvLyAgIGIpIFN0b3JhZ2UgaXMgZW1wdHksIEl0IT1TZWdtZW50QmVnaW4KLSAgICAgICAgICAgICAgICAgICAgLy8gICBjKSBTdG9yYWdlIGlzIG5vdCBlbXB0eQotCi0gICAgICAgICAgICAgICAgICAgIGlmKCBTdG9yYWdlLmVtcHR5KCkgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiggSXQ9PVNlZ21lbnRCZWdpbiApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSBhKSBldmVyeXRoaW5nIGlzIGdyYW5kLCBqdXN0IHJldHVybiBlbmQgb2Ygc2VnbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZWdtZW50RW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc2UgYikgbW92ZSB0aGUgc2VnbWVudCBiYWNrd2FyZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpjb3B5KCBTZWdtZW50QmVnaW4sIFNlZ21lbnRFbmQsIEl0ICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIGMpIC0+IHNoaWZ0IHRoZSBzZWdtZW50IHRvIHRoZSBsZWZ0IGFuZCBrZWVwIHRoZSBvdmVybGFwIGluIHRoZSBzdG9yYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSggSXQhPVNlZ21lbnRFbmQgKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0b3JlIHZhbHVlIGludG8gc3RvcmFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2UucHVzaF9iYWNrKCAqSXQgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHRvcCBmcm9tIHRoZSBzdG9yYWdlIGFuZCBwdXQgaXQgaGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpJdD1TdG9yYWdlLmZyb250KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS5wb3BfZnJvbnQoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK0l0OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSXQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHJvY2Vzc19zZWdtZW50X2hlbHBlcjwgdHJ1ZSA+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gT3B0aW1pemVkIHZlcnNpb24gb2YgcHJvY2Vzc19zZWdtZW50IGZvciBsaXN0LWxpa2Ugc2VxdWVuY2UKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFN0b3JhZ2VULAotICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBJbnB1dFQsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgb3BlcmF0b3IoKSgKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZVQmIFN0b3JhZ2UsCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgSW5zZXJ0SXQsCi0gICAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgU2VnbWVudEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRFbmQgKQotCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIHJlcGxhY2UgdG8gZG8gdGhlIGpvYgotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6cmVwbGFjZSggSW5wdXQsIEluc2VydEl0LCBTZWdtZW50QmVnaW4sIFN0b3JhZ2UgKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gRW1wdHkgdGhlIHN0b3JhZ2UKLSAgICAgICAgICAgICAgICAgICAgU3RvcmFnZS5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgICAvLyBJdGVyYXRvcnMgd2VyZSBub3QgY2hhbmdlZCwgc2ltcGx5IHJldHVybiB0aGUgZW5kIG9mIHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlZ21lbnRFbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLy8gUHJvY2VzcyBvbmUgc2VnbWVudCBpbiB0aGUgcmVwbGFjZV9hbGwgYWxnb3JpdGhtCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgU3RvcmFnZVQsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRULAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgaW5saW5lIEZvcndhcmRJdGVyYXRvclQgcHJvY2Vzc19zZWdtZW50KAotICAgICAgICAgICAgICAgIFN0b3JhZ2VUJiBTdG9yYWdlLAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBJbnNlcnRJdCwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIFNlZ21lbnRFbmQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19zZWdtZW50X2hlbHBlcjwgCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXNfc3RhYmxlX2l0ZXJhdG9yczxJbnB1dFQ+Ojp2YWx1ZT4oKSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZSwgSW5wdXQsIEluc2VydEl0LCBTZWdtZW50QmVnaW4sIFNlZ21lbnRFbmQgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfUkVQTEFDRV9TVE9SQUdFX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9zZXF1ZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNjdmMjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2RldGFpbC9zZXF1ZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgc2VxdWVuY2UuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfREVUQUlMX1NFUVVFTkNFX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfREVUQUlMX1NFUVVFTkNFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9naWNhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0gICAgICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAgaW5zZXJ0IGhlbHBlcnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvclQgPgotICAgICAgICAgICAgaW5saW5lIHZvaWQgaW5zZXJ0KAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgQXQsCi0gICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5wdXQuaW5zZXJ0KCBBdCwgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBJbnNlcnRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIGluc2VydCgKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEF0LAotICAgICAgICAgICAgICAgIGNvbnN0IEluc2VydFQmIEluc2VydCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpkZXRhaWw6Omluc2VydCggSW5wdXQsIEF0LCA6Om5kbmJvb3N0OjpiZWdpbihJbnNlcnQpLCA6Om5kbmJvb3N0OjplbmQoSW5zZXJ0KSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAKLS8vICBlcmFzZSBoZWxwZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgICAgIC8vIEVyYXNlIGEgcmFuZ2UgaW4gdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIFJldHVybnMgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGVyYXNlIHN1YnJhbmdlCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCA+Ci0gICAgICAgICAgICBpbmxpbmUgdHlwZW5hbWUgSW5wdXRUOjppdGVyYXRvciBlcmFzZSgKLSAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgVG8gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBJbnB1dC5lcmFzZSggRnJvbSwgVG8gKTsKLSAgICAgICAgICAgIH0KLQotLy8gIHJlcGxhY2UgaGVscGVyIGltcGxlbWVudGF0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAgICAgLy8gT3B0aW1pemVkIHZlcnNpb24gb2YgcmVwbGFjZSBmb3IgZ2VuZXJpYyBzZXF1ZW5jZSBjb250YWluZXJzCi0gICAgICAgICAgICAvLyBBc3N1bXB0aW9uOiBpbnNlcnQgYW5kIGVyYXNlIGFyZSBleHBlbnNpdmUKLSAgICAgICAgICAgIHRlbXBsYXRlPCBib29sIEhhc0NvbnN0VGltZU9wZXJhdGlvbnMgPgotICAgICAgICAgICAgc3RydWN0IHJlcGxhY2VfY29uc3RfdGltZV9oZWxwZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IGRhdGEgdG8gdGhlIGNvbnRhaW5lciAoIGFzIG11Y2ggYXMgcG9zc2libGUgKQotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEluc2VydEl0PUJlZ2luOwotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBJbnB1dEl0PUZyb207Ci0gICAgICAgICAgICAgICAgICAgIGZvcig7IEluc2VydEl0IT1FbmQgJiYgSW5wdXRJdCE9VG87IEluc2VydEl0KyssIElucHV0SXQrKyApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICpJbnB1dEl0PSpJbnNlcnRJdDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICggSW5zZXJ0SXQhPUVuZCApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2Ugc2VxdWVuY2UgaXMgbG9uZ2VyLCBpbnNlcnQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0Lmluc2VydCggSW5wdXRJdCwgSW5zZXJ0SXQsIEVuZCApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBJbnB1dEl0IT1UbyApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBzZXF1ZW5jZSBpcyBzaG9ydGVyLCBlcmFzZSB0aGUgcmVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LmVyYXNlKCBJbnB1dEl0LCBUbyApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICAgICAgc3RydWN0IHJlcGxhY2VfY29uc3RfdGltZV9oZWxwZXI8IHRydWUgPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIENvbnN0LXRpbWUgZXJhc2UgYW5kIGluc2VydCBtZXRob2RzIC0+IHVzZSB0aGVtCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBGcm9tLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBUbywKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSAKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEF0PUlucHV0LmVyYXNlKCBGcm9tLCBUbyApOwotICAgICAgICAgICAgICAgICAgICBpZiAoIEJlZ2luIT1FbmQgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZighSW5wdXQuZW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dC5pbnNlcnQoIEF0LCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQuaW5zZXJ0KCBJbnB1dC5iZWdpbigpLCBCZWdpbiwgRW5kICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAvLyBObyBuYXRpdmUgcmVwbGFjZSBtZXRob2QKLSAgICAgICAgICAgIHRlbXBsYXRlPCBib29sIEhhc05hdGl2ZSA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmVwbGFjZV9uYXRpdmVfaGVscGVyCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKAotICAgICAgICAgICAgICAgICAgICBJbnB1dFQmIElucHV0LAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBGcm9tLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBUbywKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBFbmQgKSAKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VfY29uc3RfdGltZV9oZWxwZXI8IAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YW5kXzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29uc3RfdGltZV9pbnNlcnQ8SW5wdXRUPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfY29uc3RfdGltZV9lcmFzZTxJbnB1dFQ+ID46OnZhbHVlID4oKSgKLSAgICAgICAgICAgICAgICAgICAgICAgIElucHV0LCBGcm9tLCBUbywgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vIENvbnRhaW5lciBoYXMgbmF0aXZlIHJlcGxhY2UgbWV0aG9kCi0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmVwbGFjZV9uYXRpdmVfaGVscGVyPCB0cnVlID4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3JUID4KLSAgICAgICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIEZyb20sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEVuZCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBJbnB1dC5yZXBsYWNlKCBGcm9tLCBUbywgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLS8vICByZXBsYWNlIGhlbHBlciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIElucHV0VCwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgICAgICBpbmxpbmUgdm9pZCByZXBsYWNlKAotICAgICAgICAgICAgICAgIElucHV0VCYgSW5wdXQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIElucHV0VDo6aXRlcmF0b3IgRnJvbSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBUbywKLSAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3JUIEJlZ2luLAotICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXBsYWNlX25hdGl2ZV9oZWxwZXI8IGhhc19uYXRpdmVfcmVwbGFjZTxJbnB1dFQ+Ojp2YWx1ZSA+KCkoCi0gICAgICAgICAgICAgICAgICAgIElucHV0LCBGcm9tLCBUbywgQmVnaW4sIEVuZCApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSW5wdXRULCB0eXBlbmFtZSBJbnNlcnRUID4KLSAgICAgICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2UoCi0gICAgICAgICAgICAgICAgSW5wdXRUJiBJbnB1dCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgSW5wdXRUOjppdGVyYXRvciBGcm9tLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSBJbnB1dFQ6Oml0ZXJhdG9yIFRvLAotICAgICAgICAgICAgICAgIGNvbnN0IEluc2VydFQmIEluc2VydCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoRnJvbSE9VG8pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6cmVwbGFjZSggSW5wdXQsIEZyb20sIFRvLCA6Om5kbmJvb3N0OjpiZWdpbihJbnNlcnQpLCA6Om5kbmJvb3N0OjplbmQoSW5zZXJ0KSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmRldGFpbDo6aW5zZXJ0KCBJbnB1dCwgRnJvbSwgOjpuZG5ib29zdDo6YmVnaW4oSW5zZXJ0KSwgOjpuZG5ib29zdDo6ZW5kKEluc2VydCkgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0RFVEFJTF9TRVFVRU5DRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvdXRpbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL3V0aWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODM4OTNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvdXRpbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgdXRpbC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19VVElMX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1VUSUxfREVUQUlMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gIGVtcHR5IGNvbnRhaW5lciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyAgZW1wdHlfY29udGFpbmVyIAotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYWx3YXlzIGVtcHR5IGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBjb250YWluaW5nIGVsZW1lbnRzIG9mIHR5cGUgQ2hhclQuCi0KLSAgICAgICAgICAgICAgICBJdCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGEgY29uc3QgdmVyc2lvbiBvbmx5Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIENoYXJUID4KLSAgICAgICAgICAgIHN0cnVjdCBlbXB0eV9jb250YWluZXIgCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBlbXB0eV9jb250YWluZXI8Q2hhclQ+IHR5cGU7ICAgICAgICAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIENoYXJUIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiByZWZlcmVuY2U7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlKiBpdGVyYXRvcjsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gT3BlcmF0aW9ucwotICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0X2l0ZXJhdG9yPigwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KDApOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgCi0vLyAgYm91bmRlZCBjb3B5IGFsZ29yaXRobSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBCb3VuZGVkIHZlcnNpb24gb2YgdGhlIHN0ZDo6Y29weSBhbGdvcml0aG0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0b3JULCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQ+Ci0gICAgICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGJvdW5kZWRfY29weSgKLSAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yVCBGaXJzdCwgCi0gICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvclQgTGFzdCwgCi0gICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIERlc3RGaXJzdCwKLSAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgRGVzdExhc3QgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3JUIElucHV0SXQ9Rmlyc3Q7Ci0gICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dEl0PURlc3RGaXJzdDsKLSAgICAgICAgICAgICAgICBmb3IoOyBJbnB1dEl0IT1MYXN0ICYmIE91dHB1dEl0IT1EZXN0TGFzdDsgSW5wdXRJdCsrLCBPdXRwdXRJdCsrICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpPdXRwdXRJdD0qSW5wdXRJdDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gT3V0cHV0SXQ7Ci0gICAgICAgICAgICB9Ci0KLS8vICBpdGVyYXRvciByYW5nZSB1dGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgICAgICAvLyBjb3B5IHJhbmdlIGZ1bmN0b3IKLSAgICAgICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBTZXFULCAKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvclQ9TkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIFNlcVQ6OmNvbnN0X2l0ZXJhdG9yID4KLSAgICAgICAgICAgIHN0cnVjdCBjb3B5X2l0ZXJhdG9yX3JhbmdlRiA6IAotICAgICAgICAgICAgICAgIHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+LCBTZXFUID4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTZXFUIG9wZXJhdG9yKCkoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIFJhbmdlICkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb3B5X3JhbmdlPFNlcVQ+KFJhbmdlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19VVElMX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kX2Zvcm1hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZF9mb3JtYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjdkZDNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9maW5kX2Zvcm1hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgZmluZF9mb3JtYXQuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwMy4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklORF9GT1JNQVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GSU5EX0ZPUk1BVF9IUFAKLQotI2luY2x1ZGUgPGRlcXVlPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvY29uY2VwdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZF9mb3JtYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2ZpbmRfZm9ybWF0X2FsbC5ocHA+Ci0KLS8qISBcZmlsZQotICAgIERlZmluZXMgZ2VuZXJpYyByZXBsYWNlIGFsZ29yaXRobXMuIEVhY2ggYWxnb3JpdGhtIHJlcGxhY2VzCi0gICAgcGFydChzKSBvZiB0aGUgaW5wdXQuIFRoZSBwYXJ0IHRvIGJlIHJlcGxhY2VkIGlzIGxvb2tlZCB1cCB1c2luZyBhIEZpbmRlciBvYmplY3QuCi0gICAgUmVzdWx0IG9mIGZpbmRpbmcgaXMgdGhlbiB1c2VkIGJ5IGEgRm9ybWF0dGVyIG9iamVjdCB0byBnZW5lcmF0ZSB0aGUgcmVwbGFjZW1lbnQuCi0qLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBhbGdvcml0aG0gewotCi0vLyBnZW5lcmljIHJlcGxhY2UgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgR2VuZXJpYyByZXBsYWNlIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFVzZSB0aGUgRmluZGVyIHRvIHNlYXJjaCBmb3IgYSBzdWJzdHJpbmcuIFVzZSB0aGUgRm9ybWF0dGVyIHRvIGZvcm1hdAotICAgICAgICAgICAgdGhpcyBzdWJzdHJpbmcgYW5kIHJlcGxhY2UgaXQgaW4gdGhlIGlucHV0LgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc2VxdWVuY2UKLSAgICAgICAgICAgIFxwYXJhbSBGaW5kZXIgQSBGaW5kZXIgb2JqZWN0IHVzZWQgdG8gc2VhcmNoIGZvciBhIG1hdGNoIHRvIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0dGVyIEEgRm9ybWF0dGVyIG9iamVjdCB1c2VkIHRvIGZvcm1hdCBhIG1hdGNoCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZVQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyICkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29uY2VwdCBjaGVjawotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZpbmRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZvcm1hdHRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPiBsaXRfaW5wdXQoOjpuZG5ib29zdDo6YXNfbGl0ZXJhbChJbnB1dCkpOwotCi0gICAgICAgICAgICByZXR1cm4gZGV0YWlsOjpmaW5kX2Zvcm1hdF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIGxpdF9pbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKCA6Om5kbmJvb3N0OjpiZWdpbihsaXRfaW5wdXQpLCA6Om5kbmJvb3N0OjplbmQobGl0X2lucHV0KSApICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgR2VuZXJpYyByZXBsYWNlIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICB0eXBlbmFtZSBTZXF1ZW5jZVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyICkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29uY2VwdCBjaGVjawotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZpbmRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIEZvcm1hdHRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmZpbmRfZm9ybWF0X2NvcHlfaW1wbCgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIEdlbmVyaWMgcmVwbGFjZSBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBVc2UgdGhlIEZpbmRlciB0byBzZWFyY2ggZm9yIGEgc3Vic3RyaW5nLiBVc2UgdGhlIEZvcm1hdHRlciB0byBmb3JtYXQKLSAgICAgICAgICAgIHRoaXMgc3Vic3RyaW5nIGFuZCByZXBsYWNlIGl0IGluIHRoZSBpbnB1dC4gVGhlIGlucHV0IGlzIG1vZGlmaWVkIGluLXBsYWNlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc2VxdWVuY2UKLSAgICAgICAgICAgIFxwYXJhbSBGaW5kZXIgQSBGaW5kZXIgb2JqZWN0IHVzZWQgdG8gc2VhcmNoIGZvciBhIG1hdGNoIHRvIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0dGVyIEEgRm9ybWF0dGVyIG9iamVjdCB1c2VkIHRvIGZvcm1hdCBhIG1hdGNoCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2VULAotICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBGaW5kZXJUIEZpbmRlciwKLSAgICAgICAgICAgIEZvcm1hdHRlclQgRm9ybWF0dGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb25jZXB0IGNoZWNrCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRmluZGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoIAotICAgICAgICAgICAgICAgIEZvcm1hdHRlckNvbmNlcHQ8Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlclQsCi0gICAgICAgICAgICAgICAgICAgIEZpbmRlclQsTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0KLSAgICAgICAgICAgIGRldGFpbDo6ZmluZF9mb3JtYXRfaW1wbCgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKDo6bmRuYm9vc3Q6OmJlZ2luKElucHV0KSwgOjpuZG5ib29zdDo6ZW5kKElucHV0KSkpOwotICAgICAgICB9Ci0KLQotLy8gIGZpbmRfZm9ybWF0X2FsbCBnZW5lcmljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBHZW5lcmljIHJlcGxhY2UgYWxsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFVzZSB0aGUgRmluZGVyIHRvIHNlYXJjaCBmb3IgYSBzdWJzdHJpbmcuIFVzZSB0aGUgRm9ybWF0dGVyIHRvIGZvcm1hdAotICAgICAgICAgICAgdGhpcyBzdWJzdHJpbmcgYW5kIHJlcGxhY2UgaXQgaW4gdGhlIGlucHV0LiBSZXBlYXQgdGhpcyBmb3IgYWxsIG1hdGNoaW5nCi0gICAgICAgICAgICBzdWJzdHJpbmdzLgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzZXF1ZW5jZQotICAgICAgICAgICAgXHBhcmFtIEZpbmRlciBBIEZpbmRlciBvYmplY3QgdXNlZCB0byBzZWFyY2ggZm9yIGEgbWF0Y2ggdG8gYmUgcmVwbGFjZWQKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXR0ZXIgQSBGb3JtYXR0ZXIgb2JqZWN0IHVzZWQgdG8gZm9ybWF0IGEgbWF0Y2gKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgCi0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZVQsCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBmaW5kX2Zvcm1hdF9hbGxfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIElucHV0LAotICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ29uY2VwdCBjaGVjawotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKCAKLSAgICAgICAgICAgICAgICBGaW5kZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCggCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLQotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+IGxpdF9pbnB1dCg6Om5kbmJvb3N0Ojphc19saXRlcmFsKElucHV0KSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmZpbmRfZm9ybWF0X2FsbF9jb3B5X2ltcGwoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIGxpdF9pbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRlcig6Om5kbmJvb3N0OjpiZWdpbihsaXRfaW5wdXQpLCA6Om5kbmJvb3N0OjplbmQobGl0X2lucHV0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIEdlbmVyaWMgcmVwbGFjZSBhbGwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFNlcXVlbmNlVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBGaW5kZXJULAotICAgICAgICAgICAgdHlwZW5hbWUgRm9ybWF0dGVyVCA+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgZmluZF9mb3JtYXRfYWxsX2NvcHkoCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgRmluZGVyVCBGaW5kZXIsCi0gICAgICAgICAgICBGb3JtYXR0ZXJUIEZvcm1hdHRlciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIENvbmNlcHQgY2hlY2sKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBGaW5kZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXJDb25jZXB0PAotICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJULAotICAgICAgICAgICAgICAgICAgICBGaW5kZXJULE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPgotICAgICAgICAgICAgICAgICkpOwotCi0gICAgICAgICAgICByZXR1cm4gZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfY29weV9pbXBsKAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIEZpbmRlciwKLSAgICAgICAgICAgICAgICBGb3JtYXR0ZXIsCi0gICAgICAgICAgICAgICAgRmluZGVyKCA6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkgKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIEdlbmVyaWMgcmVwbGFjZSBhbGwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgVXNlIHRoZSBGaW5kZXIgdG8gc2VhcmNoIGZvciBhIHN1YnN0cmluZy4gVXNlIHRoZSBGb3JtYXR0ZXIgdG8gZm9ybWF0Ci0gICAgICAgICAgICB0aGlzIHN1YnN0cmluZyBhbmQgcmVwbGFjZSBpdCBpbiB0aGUgaW5wdXQuIFJlcGVhdCB0aGlzIGZvciBhbGwgbWF0Y2hpbmcKLSAgICAgICAgICAgIHN1YnN0cmluZ3MuVGhlIGlucHV0IGlzIG1vZGlmaWVkIGluLXBsYWNlLgotCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc2VxdWVuY2UKLSAgICAgICAgICAgIFxwYXJhbSBGaW5kZXIgQSBGaW5kZXIgb2JqZWN0IHVzZWQgdG8gc2VhcmNoIGZvciBhIG1hdGNoIHRvIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0dGVyIEEgRm9ybWF0dGVyIG9iamVjdCB1c2VkIHRvIGZvcm1hdCBhIG1hdGNoCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2VULAotICAgICAgICAgICAgdHlwZW5hbWUgRmluZGVyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIEZvcm1hdHRlclQgPgotICAgICAgICBpbmxpbmUgdm9pZCBmaW5kX2Zvcm1hdF9hbGwoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIEZpbmRlclQgRmluZGVyLAotICAgICAgICAgICAgRm9ybWF0dGVyVCBGb3JtYXR0ZXIgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDb25jZXB0IGNoZWNrCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRmluZGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFNlcXVlbmNlVD46OnR5cGU+Ci0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyQ29uY2VwdDwKLSAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVCwKLSAgICAgICAgICAgICAgICAgICAgRmluZGVyVCxORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4KLSAgICAgICAgICAgICAgICApKTsKLQotICAgICAgICAgICAgZGV0YWlsOjpmaW5kX2Zvcm1hdF9hbGxfaW1wbCgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICBGaW5kZXIsCi0gICAgICAgICAgICAgICAgRm9ybWF0dGVyLAotICAgICAgICAgICAgICAgIEZpbmRlcig6Om5kbmJvb3N0OjpiZWdpbihJbnB1dCksIDo6bmRuYm9vc3Q6OmVuZChJbnB1dCkpKTsKLQotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLQotICAgIC8vIHB1bGwgdGhlIG5hbWVzIHRvIHRoZSBib29zdCBuYW1lc3BhY2UKLSAgICB1c2luZyBhbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpmaW5kX2Zvcm1hdDsKLSAgICB1c2luZyBhbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX0ZJTkRfRk9STUFUX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2ZpbmRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJjNjRkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi0vLyAgQm9vc3Qgc3RyaW5nX2FsZ28gbGlicmFyeSBmaW5kZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwNi4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfRklOREVSX0hQUAotI2RlZmluZSBORE5CT09TVF9TVFJJTkdfRklOREVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9kZXRhaWwvZmluZGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbXBhcmUuaHBwPgotCi0vKiEgXGZpbGUKLSAgICBEZWZpbmVzIEZpbmRlciBnZW5lcmF0b3JzLiBGaW5kZXIgb2JqZWN0IGlzIGEgZnVuY3RvciB3aGljaCBpcyBhYmxlIHRvIAotICAgIGZpbmQgYSBzdWJzdHJpbmcgbWF0Y2hpbmcgYSBzcGVjaWZpYyBjcml0ZXJpYSBpbiB0aGUgaW5wdXQuCi0gICAgRmluZGVycyBhcmUgdXNlZCBhcyBhIHBsdWdnYWJsZSBjb21wb25lbnRzIGZvciByZXBsYWNlLCBmaW5kIAotICAgIGFuZCBzcGxpdCBmYWNpbGl0aWVzLiBUaGlzIGhlYWRlciBjb250YWlucyBnZW5lcmF0b3IgZnVuY3Rpb25zIAotICAgIGZvciBmaW5kZXJzIHByb3ZpZGVkIGluIHRoaXMgbGlicmFyeS4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLS8vICBGaW5kZXIgZ2VuZXJhdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgLy8hICJGaXJzdCIgZmluZGVyIAotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCB0aGUgXGMgZmlyc3RfZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgZmlyc3QKLSAgICAgICAgICAgIG9jY3VycmVuY2Ugb2YgdGhlIHN0cmluZyBpbiBhIGdpdmVuIGlucHV0LgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBnaXZlbiBhcyBhbiBcYyBpdGVyYXRvcl9yYW5nZSBkZWxpbWl0aW5nIHRoZSBtYXRjaC4KLQotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IuCi0gICAgICAgICAgICBccGFyYW0gQ29tcCBBbiBlbGVtZW50IGNvbXBhcmlzb24gcHJlZGljYXRlCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyBmaXJzdF9maW5kZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6Zmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgaXNfZXF1YWw+Ci0gICAgICAgIGZpcnN0X2ZpbmRlciggY29uc3QgUmFuZ2VUJiBTZWFyY2ggKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpmaXJzdF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfZXF1YWw+KCA6Om5kbmJvb3N0Ojphc19saXRlcmFsKFNlYXJjaCksIGlzX2VxdWFsKCkgKSA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgIkZpcnN0IiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VULHR5cGVuYW1lIFByZWRpY2F0ZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OmZpcnN0X2ZpbmRlckY8Ci0gICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgIFByZWRpY2F0ZVQ+Ci0gICAgICAgIGZpcnN0X2ZpbmRlciggCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIFNlYXJjaCwgUHJlZGljYXRlVCBDb21wICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIAotICAgICAgICAgICAgICAgIGRldGFpbDo6Zmlyc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlVD4oIDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoU2VhcmNoKSwgQ29tcCApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJMYXN0IiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgdGhlIFxjIGxhc3RfZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgbGFzdAotICAgICAgICAgICAgb2NjdXJyZW5jZSBvZiB0aGUgc3RyaW5nIGluIGEgZ2l2ZW4gaW5wdXQuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvci4KLSAgICAgICAgICAgIFxwYXJhbSBDb21wIEFuIGVsZW1lbnQgY29tcGFyaXNvbiBwcmVkaWNhdGUKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGxhc3RfZmluZGVyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6Omxhc3RfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgaXNfZXF1YWw+Ci0gICAgICAgIGxhc3RfZmluZGVyKCBjb25zdCBSYW5nZVQmIFNlYXJjaCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6Omxhc3RfZmluZGVyRjwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfZXF1YWw+KCA6Om5kbmJvb3N0Ojphc19saXRlcmFsKFNlYXJjaCksIGlzX2VxdWFsKCkgKTsKLSAgICAgICAgfQotICAgICAgICAvLyEgIkxhc3QiIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQsIHR5cGVuYW1lIFByZWRpY2F0ZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6Omxhc3RfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgUHJlZGljYXRlVD4KLSAgICAgICAgbGFzdF9maW5kZXIoIGNvbnN0IFJhbmdlVCYgU2VhcmNoLCBQcmVkaWNhdGVUIENvbXAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpsYXN0X2ZpbmRlckY8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZVQ+KCA6Om5kbmJvb3N0Ojphc19saXRlcmFsKFNlYXJjaCksIENvbXAgKSA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgIk50aCIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyBudGhfZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgbi10aCAoemVyby1pbmRleGVkKQotICAgICAgICAgICAgb2NjdXJyZW5jZSBvZiB0aGUgc3RyaW5nIGluIGEgZ2l2ZW4gaW5wdXQuCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvci4KLSAgICAgICAgICAgIFxwYXJhbSBOdGggQW4gaW5kZXggb2YgdGhlIG1hdGNoIHRvIGJlIGZpbmQKLSAgICAgICAgICAgIFxwYXJhbSBDb21wIEFuIGVsZW1lbnQgY29tcGFyaXNvbiBwcmVkaWNhdGUKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIG50aF9maW5kZXIgb2JqZWN0Ci0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6bnRoX2ZpbmRlckY8Ci0gICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZSwKLSAgICAgICAgICAgIGlzX2VxdWFsPgotICAgICAgICBudGhfZmluZGVyKCAKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlVCYgU2VhcmNoLCAKLSAgICAgICAgICAgIGludCBOdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6Om50aF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICBpc19lcXVhbD4oIDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoU2VhcmNoKSwgTnRoLCBpc19lcXVhbCgpICkgOwotICAgICAgICB9Ci0gICAgICAgIC8vISAiTnRoIiBmaW5kZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VULCB0eXBlbmFtZSBQcmVkaWNhdGVUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjpudGhfZmluZGVyRjwKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgUHJlZGljYXRlVD4KLSAgICAgICAgbnRoX2ZpbmRlciggCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIFNlYXJjaCwgCi0gICAgICAgICAgICBpbnQgTnRoLCAKLSAgICAgICAgICAgIFByZWRpY2F0ZVQgQ29tcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAKLSAgICAgICAgICAgICAgICBkZXRhaWw6Om50aF9maW5kZXJGPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVUPiggOjpuZG5ib29zdDo6YXNfbGl0ZXJhbChTZWFyY2gpLCBOdGgsIENvbXAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISAiSGVhZCIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyBoZWFkX2ZpbmRlci4gVGhlIGZpbmRlciByZXR1cm5zIGEgaGVhZCBvZiBhIGdpdmVuCi0gICAgICAgICAgICBpbnB1dC4gVGhlIGhlYWQgaXMgYSBwcmVmaXggb2YgYSBzdHJpbmcgdXAgdG8gbiBlbGVtZW50cyBpbgotICAgICAgICAgICAgc2l6ZS4gSWYgYW4gaW5wdXQgaGFzIGxlc3MgdGhlbiBuIGVsZW1lbnRzLCB3aG9sZSBpbnB1dCBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgYSBoZWFkLgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBnaXZlbiBhcyBhbiBcYyBpdGVyYXRvcl9yYW5nZSBkZWxpbWl0aW5nIHRoZSBtYXRjaC4KLQotICAgICAgICAgICAgXHBhcmFtIE4gVGhlIHNpemUgb2YgdGhlIGhlYWQKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGhlYWRfZmluZGVyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICBpbmxpbmUgZGV0YWlsOjpoZWFkX2ZpbmRlckYKLSAgICAgICAgaGVhZF9maW5kZXIoIGludCBOICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6aGVhZF9maW5kZXJGKE4pOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyEgIlRhaWwiIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCB0aGUgXGMgdGFpbF9maW5kZXIuIFRoZSBmaW5kZXIgcmV0dXJucyBhIHRhaWwgb2YgYSBnaXZlbgotICAgICAgICAgICAgaW5wdXQuIFRoZSB0YWlsIGlzIGEgc3VmZml4IG9mIGEgc3RyaW5nIHVwIHRvIG4gZWxlbWVudHMgaW4KLSAgICAgICAgICAgIHNpemUuIElmIGFuIGlucHV0IGhhcyBsZXNzIHRoZW4gbiBlbGVtZW50cywgd2hvbGUgaW5wdXQgaXMgCi0gICAgICAgICAgICBjb25zaWRlcmVkIGEgaGVhZC4KLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgZ2l2ZW4gYXMgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZGVsaW1pdGluZyB0aGUgbWF0Y2guCi0KLSAgICAgICAgICAgIFxwYXJhbSBOIFRoZSBzaXplIG9mIHRoZSBoZWFkCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyB0YWlsX2ZpbmRlciBvYmplY3QKLSAgICAgICAgKi8KLSAgICAgICAgaW5saW5lIGRldGFpbDo6dGFpbF9maW5kZXJGCi0gICAgICAgIHRhaWxfZmluZGVyKCBpbnQgTiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OnRhaWxfZmluZGVyRihOKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISAiVG9rZW4iIGZpbmRlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCB0aGUgXGMgdG9rZW5fZmluZGVyLiBUaGUgZmluZGVyIHNlYXJjaGVzIGZvciBhIHRva2VuIAotICAgICAgICAgICAgc3BlY2lmaWVkIGJ5IGEgcHJlZGljYXRlLiBJdCBpcyBzaW1pbGFyIHRvIHN0ZDo6ZmluZF9pZiAKLSAgICAgICAgICAgIGFsZ29yaXRobSwgd2l0aCBhbiBleGNlcHRpb24gdGhhdCBpdCByZXR1cm4gYSByYW5nZSBvZgotICAgICAgICAgICAgaW5zdGVhZCBvZiBhIHNpbmdsZSBpdGVyYXRvci4KLQotICAgICAgICAgICAgSWYgImNvbXByZXNzIHRva2VuIG1vZGUiIGlzIGVuYWJsZWQsIGFkamFjZW50IG1hdGNoaW5nIHRva2VucyBhcmUgCi0gICAgICAgICAgICBjb25jYXRlbmF0ZWQgaW50byBvbmUgbWF0Y2guIFRodXMgdGhlIGZpbmRlciBjYW4gYmUgdXNlZCB0byAKLSAgICAgICAgICAgIHNlYXJjaCBmb3IgY29udGludW91cyBzZWdtZW50cyBvZiBjaGFyYWN0ZXJzIHNhdGlzZnlpbmcgdGhlIAotICAgICAgICAgICAgZ2l2ZW4gcHJlZGljYXRlLgotCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGdpdmVuIGFzIGFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRpbmcgdGhlIG1hdGNoLgotCi0gICAgICAgICAgICBccGFyYW0gUHJlZCBBbiBlbGVtZW50IHNlbGVjdGlvbiBwcmVkaWNhdGUKLSAgICAgICAgICAgIFxwYXJhbSBlQ29tcHJlc3MgQ29tcHJlc3MgZmxhZwotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgdG9rZW5fZmluZGVyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZGljYXRlVCA+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OnRva2VuX2ZpbmRlckY8UHJlZGljYXRlVD4KLSAgICAgICAgdG9rZW5fZmluZGVyKCAKLSAgICAgICAgICAgIFByZWRpY2F0ZVQgUHJlZCwgCi0gICAgICAgICAgICB0b2tlbl9jb21wcmVzc19tb2RlX3R5cGUgZUNvbXByZXNzPXRva2VuX2NvbXByZXNzX29mZiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OnRva2VuX2ZpbmRlckY8UHJlZGljYXRlVD4oIFByZWQsIGVDb21wcmVzcyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJSYW5nZSIgZmluZGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IHRoZSBcYyByYW5nZV9maW5kZXIuIFRoZSBmaW5kZXIgZG9lcyBub3QgcGVyZm9ybSAKLSAgICAgICAgICAgIGFueSBvcGVyYXRpb24uIEl0IHNpbXBseSByZXR1cm5zIHRoZSBnaXZlbiByYW5nZSBmb3IgCi0gICAgICAgICAgICBhbnkgaW5wdXQuIAotCi0gICAgICAgICAgICBccGFyYW0gQmVnaW4gQmVnaW5uaW5nIG9mIHRoZSByYW5nZQotICAgICAgICAgICAgXHBhcmFtIEVuZCBFbmQgb2YgdGhlIHJhbmdlCi0gICAgICAgICAgICBccGFyYW0gUmFuZ2UgVGhlIHJhbmdlLgotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgcmFuZ2VfZmluZ2VyIG9iamVjdAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OnJhbmdlX2ZpbmRlckY8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgcmFuZ2VfZmluZGVyKAotICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yVCBCZWdpbiwKLSAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvclQgRW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6cmFuZ2VfZmluZGVyRjxGb3J3YXJkSXRlcmF0b3JUPiggQmVnaW4sIEVuZCApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hICJSYW5nZSIgZmluZGVyCi0gICAgICAgIC8qISAgICAgICAKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yVCA+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OnJhbmdlX2ZpbmRlckY8Rm9yd2FyZEl0ZXJhdG9yVD4KLSAgICAgICAgcmFuZ2VfZmluZGVyKCBpdGVyYXRvcl9yYW5nZTxGb3J3YXJkSXRlcmF0b3JUPiBSYW5nZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OnJhbmdlX2ZpbmRlckY8Rm9yd2FyZEl0ZXJhdG9yVD4oIFJhbmdlICk7Ci0gICAgICAgIH0KLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCB0aGUgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6Zmlyc3RfZmluZGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6bGFzdF9maW5kZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpudGhfZmluZGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aGVhZF9maW5kZXI7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjp0YWlsX2ZpbmRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06OnRva2VuX2ZpbmRlcjsKLSAgICB1c2luZyBhbGdvcml0aG06OnJhbmdlX2ZpbmRlcjsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NUUklOR19GSU5ERVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDZkMjY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IGZvcm1hdHRlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgUGF2b2wgRHJvYmEgMjAwMi0yMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0jaWZuZGVmIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NUUklOR19GT1JNQVRURVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZGV0YWlsL2Zvcm1hdHRlci5ocHA+Ci0KLS8qISBcZmlsZQotICAgIERlZmluZXMgRm9ybWF0dGVyIGdlbmVyYXRvcnMuIEZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igd2hpY2ggZm9ybWF0cwotICAgIGEgc3RyaW5nIGFjY29yZGluZyB0byBnaXZlbiBwYXJhbWV0ZXJzLiBBIEZvcm1hdHRlciB3b3JrcwotICAgIGluIGNvbmp1bmN0aW9uIHdpdGggYSBGaW5kZXIuIEEgRmluZGVyIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLSAgICBmb3IgYSBzcGVjaWZpYyBGb3JtYXR0ZXIuIEFuIGV4YW1wbGUgb2Ygc3VjaCBhIGNvb3BlcmF0aW9uIGlzIHJlZ2V4X2ZpbmRlcgotICAgIGFuZCByZWdleF9mb3JtYXR0ZXIuCi0KLSAgICBGb3JtYXR0ZXJzIGFyZSB1c2VkIGFzIHBsdWdnYWJsZSBjb21wb25lbnRzIGZvciByZXBsYWNlIGZhY2lsaXRpZXMuIAotICAgIFRoaXMgaGVhZGVyIGNvbnRhaW5zIGdlbmVyYXRvciBmdW5jdGlvbnMgZm9yIHRoZSBGb3JtYXR0ZXJzIHByb3ZpZGVkIGluIHRoaXMgbGlicmFyeS4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLS8vIGdlbmVyaWMgZm9ybWF0dGVycyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgQ29uc3RhbnQgZm9ybWF0dGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0cyBhIFxjIGNvbnN0X2Zvcm1hdHRlci4gQ29uc3QgZm9ybWF0dGVyIGFsd2F5cyByZXR1cm5zCi0gICAgICAgICAgICB0aGUgc2FtZSB2YWx1ZSwgcmVnYXJkbGVzcyBvZiB0aGUgcGFyYW1ldGVyLgotCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgcHJlZGVmaW5lZCB2YWx1ZSB1c2VkIGFzIGEgcmVzdWx0IGZvciBmb3JtYXR0aW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIGluc3RhbmNlIG9mIHRoZSBcYyBjb25zdF9mb3JtYXR0ZXIgb2JqZWN0LgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBkZXRhaWw6OmNvbnN0X2Zvcm1hdEY8Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2VUPjo6dHlwZT4gPgotICAgICAgICBjb25zdF9mb3JtYXR0ZXIoY29uc3QgUmFuZ2VUJiBGb3JtYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmNvbnN0X2Zvcm1hdEY8Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSByYW5nZV9jb25zdF9pdGVyYXRvcjxSYW5nZVQ+Ojp0eXBlPiA+KDo6bmRuYm9vc3Q6OmFzX2xpdGVyYWwoRm9ybWF0KSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgSWRlbnRpdHkgZm9ybWF0dGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0cyBhbiBcYyBpZGVudGl0eV9mb3JtYXR0ZXIuIElkZW50aXR5IGZvcm1hdHRlciBhbHdheXMgcmV0dXJucwotICAgICAgICAgICAgdGhlIHBhcmFtZXRlci4KLQotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgaWRlbnRpdHlfZm9ybWF0dGVyIG9iamVjdC4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjppZGVudGl0eV9mb3JtYXRGPAotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+ID4KLSAgICAgICAgaWRlbnRpdHlfZm9ybWF0dGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGRldGFpbDo6aWRlbnRpdHlfZm9ybWF0RjwKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl9yYW5nZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPFJhbmdlVD46OnR5cGU+ID4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBFbXB0eSBmb3JtYXR0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3RzIGFuIFxjIGVtcHR5X2Zvcm1hdHRlci4gRW1wdHkgZm9ybWF0dGVyIGFsd2F5cyByZXR1cm5zIGFuIGVtcHR5Ci0gICAgICAgICAgICBzZXF1ZW5jZS4gCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBjb250YWluZXIgdXNlZCB0byBzZWxlY3QgYSBjb3JyZWN0IHZhbHVlX3R5cGUgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyBlbXB0eV9jb250YWluZXI8Pi4KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gaW5zdGFuY2Ugb2YgdGhlIFxjIGVtcHR5X2Zvcm1hdHRlciBvYmplY3QuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIGRldGFpbDo6ZW1wdHlfZm9ybWF0RjwgCi0gICAgICAgICAgICBORE5CT09TVF9TVFJJTkdfVFlQRU5BTUUgcmFuZ2VfdmFsdWU8UmFuZ2VUPjo6dHlwZT4KLSAgICAgICAgZW1wdHlfZm9ybWF0dGVyKGNvbnN0IFJhbmdlVCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmVtcHR5X2Zvcm1hdEY8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIHJhbmdlX3ZhbHVlPFJhbmdlVD46OnR5cGU+KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgRW1wdHkgZm9ybWF0dGVyCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0cyBhIFxjIGRpc3NlY3RfZm9ybWF0dGVyLiBEaXNzZWN0IGZvcm1hdHRlciB1c2VzIGEgc3BlY2lmaWVkIGZpbmRlcgotICAgICAgICAgICAgdG8gZXh0cmFjdCBhIHBvcnRpb24gb2YgdGhlIGZvcm1hdHRlZCBzZXF1ZW5jZS4gVGhlIGZpcnN0IGZpbmRlcidzIG1hdGNoIGlzIHJldHVybmVkIAotICAgICAgICAgICAgYXMgYSByZXN1bHQKLQotICAgICAgICAgICAgXHBhcmFtIEZpbmRlciBhIGZpbmRlciB1c2VkIHRvIHNlbGVjdCBhIHBvcnRpb24gb2YgdGhlIGZvcm1hdHRlZCBzZXF1ZW5jZQotICAgICAgICAgICAgXHJldHVybiBBbiBpbnN0YW5jZSBvZiB0aGUgXGMgZGlzc2VjdF9mb3JtYXR0ZXIgb2JqZWN0LgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaW5kZXJUPgotICAgICAgICBpbmxpbmUgZGV0YWlsOjpkaXNzZWN0X2Zvcm1hdEY8IEZpbmRlclQgPgotICAgICAgICBkaXNzZWN0X2Zvcm1hdHRlcihjb25zdCBGaW5kZXJUJiBGaW5kZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmRpc3NlY3RfZm9ybWF0RjxGaW5kZXJUPihGaW5kZXIpOwotICAgICAgICB9Ci0KLQotICAgIH0gLy8gbmFtZXNwYWNlIGFsZ29yaXRobQotCi0gICAgLy8gcHVsbCB0aGUgbmFtZXMgdG8gdGhlIGJvb3N0IG5hbWVzcGFjZQotICAgIHVzaW5nIGFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aWRlbnRpdHlfZm9ybWF0dGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6ZW1wdHlfZm9ybWF0dGVyOwotICAgIHVzaW5nIGFsZ29yaXRobTo6ZGlzc2VjdF9mb3JtYXR0ZXI7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9GT1JNQVRURVJfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvcmVwbGFjZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvcmVwbGFjZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMTVlNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3JlcGxhY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTI4ICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IHJlcGxhY2UuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IFBhdm9sIERyb2JhIDIwMDItMjAwNi4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLQotI2lmbmRlZiBORE5CT09TVF9TVFJJTkdfUkVQTEFDRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1JFUExBQ0VfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbnN0X2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZF9mb3JtYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvZmluZGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9jb21wYXJlLmhwcD4KLQotLyohIFxmaWxlCi0gICAgRGVmaW5lcyB2YXJpb3VzIHJlcGxhY2UgYWxnb3JpdGhtcy4gRWFjaCBhbGdvcml0aG0gcmVwbGFjZXMKLSAgICBwYXJ0KHMpIG9mIHRoZSBpbnB1dCBhY2NvcmRpbmcgdG8gc2V0IG9mIHNlYXJjaGluZyBhbmQgcmVwbGFjZSBjcml0ZXJpYS4KLSovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGFsZ29yaXRobSB7Ci0KLS8vICByZXBsYWNlX3JhbmdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSByYW5nZSBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBnaXZlbiByYW5nZSBpbiB0aGUgaW5wdXQgc3RyaW5nLgotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2hSYW5nZSBBIHJhbmdlIGluIHRoZSBpbnB1dCB0byBiZSBzdWJzdGl0dXRlZAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQKLQotICAgICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfcmFuZ2VfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfY29uc3RfaXRlcmF0b3I8UmFuZ2UxVD46OnR5cGU+JiBTZWFyY2hSYW5nZSwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpyYW5nZV9maW5kZXIoU2VhcmNoUmFuZ2UpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgcmFuZ2UgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2VUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfcmFuZ2VfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RSSU5HX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjxTZXF1ZW5jZVQ+Ojp0eXBlPiYgU2VhcmNoUmFuZ2UsCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnJhbmdlX2ZpbmRlcihTZWFyY2hSYW5nZSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSByYW5nZSBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBnaXZlbiByYW5nZSBpbiB0aGUgaW5wdXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaFJhbmdlIEEgcmFuZ2UgaW4gdGhlIGlucHV0IHRvIGJlIHN1YnN0aXR1dGVkCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfcmFuZ2UoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUUklOR19UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VfaXRlcmF0b3I8U2VxdWVuY2VUPjo6dHlwZT4mIFNlYXJjaFJhbmdlLAotICAgICAgICAgICAgY29uc3QgUmFuZ2VUJiBGb3JtYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpyYW5nZV9maW5kZXIoU2VhcmNoUmFuZ2UpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkpOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX2ZpcnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBmaXJzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN1YnN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotICAgICAgICAgICAgCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfZmlyc3RfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfZmlyc3RfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBmaXJzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICByZXBsYWNlIHRoZSBmaXJzdCBtYXRjaCBvZiB0aGUgc2VhcmNoIHN1YnN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBUaGUgaW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV9maXJzdCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX2ZpcnN0ICggY2FzZSBpbnNlbnNpdGl2ZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIFJlcGxhY2UgZmlyc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgZmlyc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdWJzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dAotCi0gICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlM1Q+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgaXJlcGxhY2VfZmlyc3RfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGZpcnN0IGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMlQsIHR5cGVuYW1lIFJhbmdlMVQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgaXJlcGxhY2VfZmlyc3RfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgZmlyc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgZmlyc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdWJzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBMb2MgQSBsb2NhbGUgdXNlZCBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgaXJlcGxhY2VfZmlyc3QoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotLy8gIHJlcGxhY2VfbGFzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIFJlcGxhY2UgbGFzdCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBsYXN0IG1hdGNoIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgICAgICAgICAgICAKLQotICAgICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCByZXBsYWNlX2xhc3RfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bGFzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgcmVwbGFjZV9sYXN0X2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bGFzdF9maW5kZXIoU2VhcmNoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGxhc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIHZvaWQgcmVwbGFjZV9sYXN0KCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpsYXN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV9sYXN0ICggY2FzZSBpbnNlbnNpdGl2ZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBsYXN0IGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGxhc3QgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgIAotCi0gICAgICAgICAgICBcbm90ZSBUaGUgc2Vjb25kIHZhcmlhbnQgb2YgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyB0aGUgc3Ryb25nIGV4Y2VwdGlvbi1zYWZldHkgZ3VhcmFudGVlCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBpcmVwbGFjZV9sYXN0X2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTNUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Omxhc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGxhc3QgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCBpcmVwbGFjZV9sYXN0X2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6bG9jYWxlJiBMb2M9c3RkOjpsb2NhbGUoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6bGFzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgbGFzdCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBsYXN0IG1hdGNoIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuVGhlIGlucHV0IHNlcXVlbmNlIGlzIG1vZGlmaWVkIGluLXBsYWNlLgotICAgICAgICAgICAgU2VhcmNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAgICAgXHJldHVybiBBIHJlZmVyZW5jZSB0byB0aGUgbW9kaWZpZWQgaW5wdXQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCBpcmVwbGFjZV9sYXN0KCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpsYXN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotLy8gIHJlcGxhY2VfbnRoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbiBOdGggKHplcm8taW5kZXhlZCkgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLQotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gTnRoIEFuIGluZGV4IG9mIHRoZSBtYXRjaCB0byBiZSByZXBsYWNlZC4gVGhlIGluZGV4IGlzIDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgRm9yIG5lZ2F0aXZlIE4sIG1hdGNoZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0Ci0KLSAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIHJlcGxhY2VfbnRoX2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBTZWFyY2gsCi0gICAgICAgICAgICBpbnQgTnRoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpudGhfZmluZGVyKFNlYXJjaCwgTnRoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgXG92ZXJsb2FkCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlcXVlbmNlVCwgdHlwZW5hbWUgUmFuZ2UxVCwgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCByZXBsYWNlX250aF9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBpbnQgTnRoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpudGhfZmluZGVyKFNlYXJjaCwgTnRoKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbiBOdGggKHplcm8taW5kZXhlZCkgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIE50aCBBbiBpbmRleCBvZiB0aGUgbWF0Y2ggdG8gYmUgcmVwbGFjZWQuIFRoZSBpbmRleCBpcyAwLWJhc2VkLgotICAgICAgICAgICAgICAgIEZvciBuZWdhdGl2ZSBOLCBtYXRjaGVzIGFyZSBjb3VudGVkIGZyb20gdGhlIGVuZCBvZiBzdHJpbmcuCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCByZXBsYWNlX250aCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgaW50IE50aCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV9udGggKCBjYXNlIGluc2Vuc2l0aXZlICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgICAgICAKLSAgICAgICAgLy8hIFJlcGxhY2UgbnRoIGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgYW4gTnRoICh6ZXJvLWluZGV4ZWQpIG1hdGNoIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIE91dHB1dCBBbiBvdXRwdXQgaXRlcmF0b3IgdG8gd2hpY2ggdGhlIHJlc3VsdCB3aWxsIGJlIGNvcGllZAotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gTnRoIEFuIGluZGV4IG9mIHRoZSBtYXRjaCB0byBiZSByZXBsYWNlZC4gVGhlIGluZGV4IGlzIDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgRm9yIG5lZ2F0aXZlIE4sIG1hdGNoZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgICAgICAgICAgICAKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPAotICAgICAgICAgICAgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3JULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UxVCwgCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTJULAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UzVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCBpcmVwbGFjZV9udGhfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTNUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgsIGlzX2llcXVhbChMb2MpICksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgbnRoIGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgaXJlcGxhY2VfbnRoX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06Om50aF9maW5kZXIoU2VhcmNoLCBOdGgsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBudGggYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbiBOdGggKHplcm8taW5kZXhlZCkgbWF0Y2ggb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gSW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0gICAgICAgICAgICBTZWFyY2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIFNlYXJjaCBBIHN1YnN0cmluZyB0byBiZSBzZWFyY2hlZCBmb3IgCi0gICAgICAgICAgICBccGFyYW0gTnRoIEFuIGluZGV4IG9mIHRoZSBtYXRjaCB0byBiZSByZXBsYWNlZC4gVGhlIGluZGV4IGlzIDAtYmFzZWQuCi0gICAgICAgICAgICAgICAgRm9yIG5lZ2F0aXZlIE4sIG1hdGNoZXMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgZW5kIG9mIHN0cmluZy4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgdm9pZCBpcmVwbGFjZV9udGgoIAotICAgICAgICAgICAgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGludCBOdGgsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwgCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpudGhfZmluZGVyKFNlYXJjaCwgTnRoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLS8vICByZXBsYWNlX2FsbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIFJlcGxhY2UgYWxsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0LiBJdCBpcyByZXR1cm5lZCBhcyBhIHNlcXVlbmNlIAotICAgICAgICAgICAgb3IgY29waWVkIHRvIHRoZSBvdXRwdXQgaXRlcmF0b3IuCi0KLSAgICAgICAgICAgIFxwYXJhbSBPdXRwdXQgQW4gb3V0cHV0IGl0ZXJhdG9yIHRvIHdoaWNoIHRoZSByZXN1bHQgd2lsbCBiZSBjb3BpZWQKLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEFuIG91dHB1dCBpdGVyYXRvciBwb2ludGluZyBqdXN0IGFmdGVyIHRoZSBsYXN0IGluc2VydGVkIGNoYXJhY3RlciBvcgotICAgICAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0IAotCi0gICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlM1Q+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgcmVwbGFjZV9hbGxfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlM1QmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbF9jb3B5KAotICAgICAgICAgICAgICAgIE91dHB1dCwKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGFsbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIHJlcGxhY2VfYWxsX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIFNlYXJjaCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGFsbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgc2VhcmNoIHN0cmluZyBpbiB0aGUgaW5wdXQgCi0gICAgICAgICAgICB3aXRoIHRoZSBmb3JtYXQgc3RyaW5nLiBUaGUgaW5wdXQgc2VxdWVuY2UgaXMgbW9kaWZpZWQgaW4tcGxhY2UuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccmV0dXJuIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RpZmllZCBpbnB1dAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfYWxsKCAKLSAgICAgICAgICAgIFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2FsbCggCi0gICAgICAgICAgICAgICAgSW5wdXQsIAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0gICAgICAgIAotLy8gIHJlcGxhY2VfYWxsICggY2FzZSBpbnNlbnNpdGl2ZSApIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBhbGwgYWxnb3JpdGhtICggY2FzZSBpbnNlbnNpdGl2ZSApCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHNlYXJjaCBzdHJpbmcgaW4gdGhlIGlucHV0IAotICAgICAgICAgICAgd2l0aCB0aGUgZm9ybWF0IHN0cmluZy4gCi0gICAgICAgICAgICBUaGUgcmVzdWx0IGlzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQuIEl0IGlzIHJldHVybmVkIGFzIGEgc2VxdWVuY2UgCi0gICAgICAgICAgICBvciBjb3BpZWQgdG8gdGhlIG91dHB1dCBpdGVyYXRvci4KLSAgICAgICAgICAgIFNlYXJjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gU2VhcmNoIEEgc3Vic3RyaW5nIHRvIGJlIHNlYXJjaGVkIGZvciAKLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIExvYyBBIGxvY2FsZSB1c2VkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KLSAgICAgICAgICAgIFxyZXR1cm4gQW4gb3V0cHV0IGl0ZXJhdG9yIHBvaW50aW5nIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgaW5zZXJ0ZWQgY2hhcmFjdGVyIG9yCi0gICAgICAgICAgICAgICAgICAgIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgaW5wdXQgCi0KLSAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTNUPgotICAgICAgICBpbmxpbmUgT3V0cHV0SXRlcmF0b3JUIGlyZXBsYWNlX2FsbF9jb3B5KAotICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3JUIE91dHB1dCwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UzVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfYWxsX2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Zmlyc3RfZmluZGVyKFNlYXJjaCwgaXNfaWVxdWFsKExvYykpLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIGFsbCBhbGdvcml0aG0gKCBjYXNlIGluc2Vuc2l0aXZlICkKLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZTFULCB0eXBlbmFtZSBSYW5nZTJUPgotICAgICAgICBpbmxpbmUgU2VxdWVuY2VUIGlyZXBsYWNlX2FsbF9jb3B5KCAKLSAgICAgICAgICAgIGNvbnN0IFNlcXVlbmNlVCYgSW5wdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBTZWFyY2gsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTJUJiBGb3JtYXQsCi0gICAgICAgICAgICBjb25zdCBzdGQ6OmxvY2FsZSYgTG9jPXN0ZDo6bG9jYWxlKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9hbGxfY29weSggCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaXJzdF9maW5kZXIoU2VhcmNoLCBpc19pZXF1YWwoTG9jKSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgYWxsIGFsZ29yaXRobSAoIGNhc2UgaW5zZW5zaXRpdmUgKQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBzZWFyY2ggc3RyaW5nIGluIHRoZSBpbnB1dCAKLSAgICAgICAgICAgIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcuVGhlIGlucHV0IHNlcXVlbmNlIGlzIG1vZGlmaWVkIGluLXBsYWNlLgotICAgICAgICAgICAgU2VhcmNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCi0KLSAgICAgICAgICAgIFxwYXJhbSBJbnB1dCBBbiBpbnB1dCBzdHJpbmcKLSAgICAgICAgICAgIFxwYXJhbSBTZWFyY2ggQSBzdWJzdHJpbmcgdG8gYmUgc2VhcmNoZWQgZm9yIAotICAgICAgICAgICAgXHBhcmFtIEZvcm1hdCBBIHN1YnN0aXR1dGUgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTG9jIEEgbG9jYWxlIHVzZWQgZm9yIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlMVQsIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGlyZXBsYWNlX2FsbCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgU2VhcmNoLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0LAotICAgICAgICAgICAgY29uc3Qgc3RkOjpsb2NhbGUmIExvYz1zdGQ6OmxvY2FsZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9hbGwoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpcnN0X2ZpbmRlcihTZWFyY2gsIGlzX2llcXVhbChMb2MpKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0vLyAgcmVwbGFjZV9oZWFkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSBoZWFkIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIGhlYWQgb2YgdGhlIGlucHV0IHdpdGggdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIGhlYWQgaXMgYSBwcmVmaXggb2YgYSBzdHJpbmcgb2YgZ2l2ZW4gc2l6ZS4gCi0gICAgICAgICAgICBJZiB0aGUgc2VxdWVuY2UgaXMgc2hvcnRlciB0aGVuIHJlcXVpcmVkLCB3aG9sZSBzdHJpbmcgaWYgCi0gICAgICAgICAgICBjb25zaWRlcmVkIHRvIGJlIHRoZSBoZWFkLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotICAgICAgICAgICAgCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTiBMZW5ndGggb2YgdGhlIGhlYWQuCi0gICAgICAgICAgICAgICAgRm9yIE4+PTAsIGF0IG1vc3QgTiBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIE48MCwgc2l6ZShJbnB1dCktfE58IGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIGlucHV0ICAKLQotICAgICAgICAgICAgXG5vdGUgVGhlIHNlY29uZCB2YXJpYW50IG9mIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlIHN0cm9uZyBleGNlcHRpb24tc2FmZXR5IGd1YXJhbnRlZQotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMVQsIAotICAgICAgICAgICAgdHlwZW5hbWUgUmFuZ2UyVD4KLSAgICAgICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yVCByZXBsYWNlX2hlYWRfY29weSgKLSAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yVCBPdXRwdXQsCi0gICAgICAgICAgICBjb25zdCBSYW5nZTFUJiBJbnB1dCwKLSAgICAgICAgICAgIGludCBOLAotICAgICAgICAgICAgY29uc3QgUmFuZ2UyVCYgRm9ybWF0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXRfY29weSgKLSAgICAgICAgICAgICAgICBPdXRwdXQsCi0gICAgICAgICAgICAgICAgSW5wdXQsCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpoZWFkX2ZpbmRlcihOKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmNvbnN0X2Zvcm1hdHRlcihGb3JtYXQpICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyEgUmVwbGFjZSBoZWFkIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFxvdmVybG9hZAotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZXF1ZW5jZVQsIHR5cGVuYW1lIFJhbmdlVD4KLSAgICAgICAgaW5saW5lIFNlcXVlbmNlVCByZXBsYWNlX2hlYWRfY29weSggCi0gICAgICAgICAgICBjb25zdCBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoIAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6aGVhZF9maW5kZXIoTiksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgaGVhZCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBSZXBsYWNlIHRoZSBoZWFkIG9mIHRoZSBpbnB1dCB3aXRoIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLiAKLSAgICAgICAgICAgIFRoZSBoZWFkIGlzIGEgcHJlZml4IG9mIGEgc3RyaW5nIG9mIGdpdmVuIHNpemUuIAotICAgICAgICAgICAgSWYgdGhlIHNlcXVlbmNlIGlzIHNob3J0ZXIgdGhlbiByZXF1aXJlZCwgdGhlIHdob2xlIHN0cmluZyBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgdGhlIGhlYWQuIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIE4gTGVuZ3RoIG9mIHRoZSBoZWFkLgotICAgICAgICAgICAgICAgIEZvciBOPj0wLCBhdCBtb3N0IE4gY2hhcmFjdGVycyBhcmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgICAgIEZvciBOPDAsIHNpemUoSW5wdXQpLXxOfCBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfaGVhZCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OmhlYWRfZmluZGVyKE4pLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0vLyAgcmVwbGFjZV90YWlsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLyEgUmVwbGFjZSB0YWlsIGFsZ29yaXRobQotICAgICAgICAvKiEKLSAgICAgICAgICAgIFJlcGxhY2UgdGhlIHRhaWwgb2YgdGhlIGlucHV0IHdpdGggdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuIAotICAgICAgICAgICAgVGhlIHRhaWwgaXMgYSBzdWZmaXggb2YgYSBzdHJpbmcgb2YgZ2l2ZW4gc2l6ZS4gCi0gICAgICAgICAgICBJZiB0aGUgc2VxdWVuY2UgaXMgc2hvcnRlciB0aGVuIHJlcXVpcmVkLCB3aG9sZSBzdHJpbmcgaXMgCi0gICAgICAgICAgICBjb25zaWRlcmVkIHRvIGJlIHRoZSB0YWlsLiAKLSAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dC4gSXQgaXMgcmV0dXJuZWQgYXMgYSBzZXF1ZW5jZSAKLSAgICAgICAgICAgIG9yIGNvcGllZCB0byB0aGUgb3V0cHV0IGl0ZXJhdG9yLgotCi0gICAgICAgICAgICBccGFyYW0gT3V0cHV0IEFuIG91dHB1dCBpdGVyYXRvciB0byB3aGljaCB0aGUgcmVzdWx0IHdpbGwgYmUgY29waWVkCi0gICAgICAgICAgICBccGFyYW0gSW5wdXQgQW4gaW5wdXQgc3RyaW5nCi0gICAgICAgICAgICBccGFyYW0gTiBMZW5ndGggb2YgdGhlIHRhaWwuCi0gICAgICAgICAgICAgICAgRm9yIE4+PTAsIGF0IG1vc3QgTiBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIE48MCwgc2l6ZShJbnB1dCktfE58IGNoYXJhY3RlcnMgYXJlIGV4dHJhY3RlZC4KLSAgICAgICAgICAgIFxwYXJhbSBGb3JtYXQgQSBzdWJzdGl0dXRlIHN0cmluZwotICAgICAgICAgICAgXHJldHVybiBBbiBvdXRwdXQgaXRlcmF0b3IgcG9pbnRpbmcganVzdCBhZnRlciB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICAgICAgICAgYSBtb2RpZmllZCBjb3B5IG9mIHRoZSBpbnB1dCAgIAotCi0gICAgICAgICAgICAgIFxub3RlIFRoZSBzZWNvbmQgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBzdHJvbmcgZXhjZXB0aW9uLXNhZmV0eSBndWFyYW50ZWUKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvclQsCi0gICAgICAgICAgICB0eXBlbmFtZSBSYW5nZTFULCAKLSAgICAgICAgICAgIHR5cGVuYW1lIFJhbmdlMlQ+Ci0gICAgICAgIGlubGluZSBPdXRwdXRJdGVyYXRvclQgcmVwbGFjZV90YWlsX2NvcHkoCi0gICAgICAgICAgICBPdXRwdXRJdGVyYXRvclQgT3V0cHV0LAotICAgICAgICAgICAgY29uc3QgUmFuZ2UxVCYgSW5wdXQsCi0gICAgICAgICAgICBpbnQgTiwKLSAgICAgICAgICAgIGNvbnN0IFJhbmdlMlQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjphbGdvcml0aG06OmZpbmRfZm9ybWF0X2NvcHkoCi0gICAgICAgICAgICAgICAgT3V0cHV0LAotICAgICAgICAgICAgICAgIElucHV0LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6dGFpbF9maW5kZXIoTiksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpjb25zdF9mb3JtYXR0ZXIoRm9ybWF0KSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8hIFJlcGxhY2UgdGFpbCBhbGdvcml0aG0KLSAgICAgICAgLyohCi0gICAgICAgICAgICBcb3ZlcmxvYWQKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSBTZXF1ZW5jZVQgcmVwbGFjZV90YWlsX2NvcHkoIAotICAgICAgICAgICAgY29uc3QgU2VxdWVuY2VUJiBJbnB1dCwKLSAgICAgICAgICAgIGludCBOLAotICAgICAgICAgICAgY29uc3QgUmFuZ2VUJiBGb3JtYXQgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6YWxnb3JpdGhtOjpmaW5kX2Zvcm1hdF9jb3B5KCAKLSAgICAgICAgICAgICAgICBJbnB1dCwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnRhaWxfZmluZGVyKE4pLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vISBSZXBsYWNlIHRhaWwgYWxnb3JpdGhtCi0gICAgICAgIC8qIQotICAgICAgICAgICAgUmVwbGFjZSB0aGUgdGFpbCBvZiB0aGUgaW5wdXQgd2l0aCB0aGUgZ2l2ZW4gZm9ybWF0IHNlcXVlbmNlLiAKLSAgICAgICAgICAgIFRoZSB0YWlsIGlzIGEgc3VmZml4IG9mIGEgc3RyaW5nIG9mIGdpdmVuIHNpemUuIAotICAgICAgICAgICAgSWYgdGhlIHNlcXVlbmNlIGlzIHNob3J0ZXIgdGhlbiByZXF1aXJlZCwgdGhlIHdob2xlIHN0cmluZyBpcyAKLSAgICAgICAgICAgIGNvbnNpZGVyZWQgdG8gYmUgdGhlIHRhaWwuIFRoZSBpbnB1dCBzZXF1ZW5jZSBpcyBtb2RpZmllZCBpbi1wbGFjZS4KLQotICAgICAgICAgICAgXHBhcmFtIElucHV0IEFuIGlucHV0IHN0cmluZwotICAgICAgICAgICAgXHBhcmFtIE4gTGVuZ3RoIG9mIHRoZSB0YWlsLgotICAgICAgICAgICAgICAgIEZvciBOPj0wLCBhdCBtb3N0IE4gY2hhcmFjdGVycyBhcmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgICAgIEZvciBOPDAsIHNpemUoSW5wdXQpLXxOfCBjaGFyYWN0ZXJzIGFyZSBleHRyYWN0ZWQuCi0gICAgICAgICAgICBccGFyYW0gRm9ybWF0IEEgc3Vic3RpdHV0ZSBzdHJpbmcKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxdWVuY2VULCB0eXBlbmFtZSBSYW5nZVQ+Ci0gICAgICAgIGlubGluZSB2b2lkIHJlcGxhY2VfdGFpbCggCi0gICAgICAgICAgICBTZXF1ZW5jZVQmIElucHV0LAotICAgICAgICAgICAgaW50IE4sCi0gICAgICAgICAgICBjb25zdCBSYW5nZVQmIEZvcm1hdCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6ZmluZF9mb3JtYXQoIAotICAgICAgICAgICAgICAgIElucHV0LCAKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjphbGdvcml0aG06OnRhaWxfZmluZGVyKE4pLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsZ29yaXRobTo6Y29uc3RfZm9ybWF0dGVyKEZvcm1hdCkgKTsKLSAgICAgICAgfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi0KLSAgICAvLyBwdWxsIG5hbWVzIHRvIHRoZSBib29zdCBuYW1lc3BhY2UKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfcmFuZ2VfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfcmFuZ2U7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2ZpcnN0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2ZpcnN0OwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXJlcGxhY2VfZmlyc3RfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX2ZpcnN0OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9sYXN0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2xhc3Q7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9sYXN0X2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9sYXN0OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9udGhfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfbnRoOwotICAgIHVzaW5nIGFsZ29yaXRobTo6aXJlcGxhY2VfbnRoX2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9udGg7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX2FsbF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9hbGw7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjppcmVwbGFjZV9hbGxfY29weTsKLSAgICB1c2luZyBhbGdvcml0aG06OmlyZXBsYWNlX2FsbDsKLSAgICB1c2luZyBhbGdvcml0aG06OnJlcGxhY2VfaGVhZF9jb3B5OwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV9oZWFkOwotICAgIHVzaW5nIGFsZ29yaXRobTo6cmVwbGFjZV90YWlsX2NvcHk7Ci0gICAgdXNpbmcgYWxnb3JpdGhtOjpyZXBsYWNlX3RhaWw7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVQTEFDRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9zZXF1ZW5jZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMzdmYTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3NlcXVlbmNlX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLy8gIEJvb3N0IHN0cmluZ19hbGdvIGxpYnJhcnkgc2VxdWVuY2VfdHJhaXRzLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX1NFUVVFTkNFX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1NFUVVFTkNFX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcveWVzX25vX3R5cGUuaHBwPgotCi0vKiEgXGZpbGUKLSAgICBUcmFpdHMgZGVmaW5lZCBpbiB0aGlzIGhlYWRlciBhcmUgdXNlZCBieSB2YXJpb3VzIGFsZ29yaXRobXMgdG8gYWNoaWV2ZQotICAgIGJldHRlciBwZXJmb3JtYW5jZSBmb3Igc3BlY2lmaWMgY29udGFpbmVycy4KLSAgICBUcmFpdHMgcHJvdmlkZSBmYWlsLXNhZmUgZGVmYXVsdHMuIElmIGEgY29udGFpbmVyIHN1cHBvcnRzIHNvbWUgb2YgdGhlc2UKLSAgICBmZWF0dXJlcywgaXQgaXMgcG9zc2libGUgdG8gc3BlY2lhbGl6ZSB0aGUgc3BlY2lmaWMgdHJhaXQgZm9yIHRoaXMgY29udGFpbmVyLgotICAgIEZvciBsYWNraW5nIGNvbXBpbGVycywgaXQgaXMgcG9zc2libGUgb2YgZGVmaW5lIGFuIG92ZXJyaWRlIGZvciBhIHNwZWNpZmljIHRlc3RlcgotICAgIGZ1bmN0aW9uLgotCi0gICAgRHVlIHRvIGEgbGFuZ3VhZ2UgcmVzdHJpY3Rpb24sIGl0IGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUgdG8gZGVmaW5lIHNwZWNpYWxpemF0aW9ucyBmb3IKLSAgICBzdGwgY29udGFpbmVycyB3aXRob3V0IGluY2x1ZGluZyB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIuIFRvIGRlY3JlYXNlIHRoZSBvdmVyaGVhZAotICAgIG5lZWRlZCBieSB0aGlzIGluY2x1c2lvbiwgdXNlciBjYW4gc2VsZWN0aXZlbHkgaW5jbHVkZSBhIHNwZWNpYWxpemF0aW9uCi0gICAgaGVhZGVyIGZvciBhIHNwZWNpZmljIGNvbnRhaW5lci4gVGhleSBhcmUgbG9jYXRlZCBpbiBuZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3N0bAotICAgIGRpcmVjdG9yeS4gQWx0ZXJuYXRpdmVseSBzaGUgY2FuIGluY2x1ZGUgbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy9zdGRfY29sbGVjdGlvbl90cmFpdHMuaHBwCi0gICAgaGVhZGVyIHdoaWNoIGNvbnRhaW5zIHNwZWNpYWxpemF0aW9ucyBmb3IgYWxsIHN0bCBjb250YWluZXJzLgotKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotLy8gIHNlcXVlbmNlIHRyYWl0cyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0gICAgICAgIC8vISBOYXRpdmUgcmVwbGFjZSB0ZXN0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWNsYXJlIGFuIG92ZXJyaWRlIG9mIHRoaXMgdGVzdGVyIGZ1bmN0aW9uIHdpdGggcmV0dXJuCi0gICAgICAgICAgICB0eXBlIG5kbmJvb3N0OjpzdHJpbmdfYWxnbzo6eWVzX3R5cGUgZm9yIGEgc2VxdWVuY2Ugd2l0aCB0aGlzIHByb3BlcnR5LgotCi0gICAgICAgICAgICBccmV0dXJuIHllc190eXBlIGlmIHRoZSBjb250YWluZXIgaGFzIGJhc2ljX3N0cmluZyBsaWtlIG5hdGl2ZSByZXBsYWNlCi0gICAgICAgICAgICBtZXRob2QuCi0gICAgICAgICovCi0gICAgICAgIG5vX3R5cGUgaGFzX25hdGl2ZV9yZXBsYWNlX3Rlc3RlciguLi4pOwotCi0gICAgICAgIC8vISBTdGFibGUgaXRlcmF0b3JzIHRlc3RlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlY2xhcmUgYW4gb3ZlcnJpZGUgb2YgdGhpcyB0ZXN0ZXIgZnVuY3Rpb24gd2l0aCByZXR1cm4KLSAgICAgICAgICAgIHR5cGUgbmRuYm9vc3Q6OnN0cmluZ19hbGdvOjp5ZXNfdHlwZSBmb3IgYSBzZXF1ZW5jZSB3aXRoIHRoaXMgcHJvcGVydHkuCi0KLSAgICAgICAgICAgIFxyZXR1cm4geWVzX3R5cGUgaWYgdGhlIHNlcXVlbmNlJ3MgaW5zZXJ0L3JlcGxhY2UvZXJhc2UgbWV0aG9kcyBkbyBub3QgaW52YWxpZGF0ZQotICAgICAgICAgICAgZXhpc3RpbmcgaXRlcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICBub190eXBlIGhhc19zdGFibGVfaXRlcmF0b3JzX3Rlc3RlciguLi4pOwotCi0gICAgICAgIC8vISBjb25zdCB0aW1lIGluc2VydCB0ZXN0ZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBEZWNsYXJlIGFuIG92ZXJyaWRlIG9mIHRoaXMgdGVzdGVyIGZ1bmN0aW9uIHdpdGggcmV0dXJuCi0gICAgICAgICAgICB0eXBlIG5kbmJvb3N0OjpzdHJpbmdfYWxnbzo6eWVzX3R5cGUgZm9yIGEgc2VxdWVuY2Ugd2l0aCB0aGlzIHByb3BlcnR5LgotCi0gICAgICAgICAgICBccmV0dXJuIHllc190eXBlIGlmIHRoZSBzZXF1ZW5jZSdzIGluc2VydCBtZXRob2QgaXMgd29ya2luZyBpbiBjb25zdGFudCB0aW1lCi0gICAgICAgICovCi0gICAgICAgIG5vX3R5cGUgaGFzX2NvbnN0X3RpbWVfaW5zZXJ0X3Rlc3RlciguLi4pOwotCi0gICAgICAgIC8vISBjb25zdCB0aW1lIGVyYXNlIHRlc3RlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIERlY2xhcmUgYW4gb3ZlcnJpZGUgb2YgdGhpcyB0ZXN0ZXIgZnVuY3Rpb24gd2l0aCByZXR1cm4KLSAgICAgICAgICAgIHR5cGUgbmRuYm9vc3Q6OnN0cmluZ19hbGdvOjp5ZXNfdHlwZSBmb3IgYSBzZXF1ZW5jZSB3aXRoIHRoaXMgcHJvcGVydHkuCi0KLSAgICAgICAgICAgIFxyZXR1cm4geWVzX3R5cGUgaWYgdGhlIHNlcXVlbmNlJ3MgZXJhc2UgbWV0aG9kIGlzIHdvcmtpbmcgaW4gY29uc3RhbnQgdGltZQotICAgICAgICAqLwotICAgICAgICBub190eXBlIGhhc19jb25zdF90aW1lX2VyYXNlX3Rlc3RlciguLi4pOwotCi0jZW5kaWYgLy9ORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgLy8hIE5hdGl2ZSByZXBsYWNlIHRyYWl0Ci0gICAgICAgIC8qIQotICAgICAgICAgICAgVGhpcyB0cmFpdCBzcGVjaWZpZXMgdGhhdCB0aGUgc2VxdWVuY2UgaGFzIFxjIHN0ZDo6c3RyaW5nIGxpa2UgcmVwbGFjZSBtZXRob2QKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBjbGFzcyBoYXNfbmF0aXZlX3JlcGxhY2UKLSAgICAgICAgewotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT0oCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGhhc19uYXRpdmVfcmVwbGFjZV90ZXN0ZXIodCkpPT1zaXplb2YoeWVzX3R5cGUpICkgKTsKLSNlbHNlICAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIHB1YmxpYzoKLSMgICAgaWYgTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSAgICAgICAgICAgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Ci0jICAgIGVsc2UKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT1mYWxzZSk7Ci0jICAgIGVuZGlmIC8vIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fSUJNQ1BQX18sIDw9IDYwMCApCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfbmF0aXZlX3JlcGxhY2U8VD46OnZhbHVlPiB0eXBlOwotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIFN0YWJsZSBpdGVyYXRvcnMgdHJhaXQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBUaGlzIHRyYWl0IHNwZWNpZmllcyB0aGF0IHRoZSBzZXF1ZW5jZSBoYXMgc3RhYmxlIGl0ZXJhdG9ycy4gSXQgbWVhbnMKLSAgICAgICAgICAgIHRoYXQgb3BlcmF0aW9ucyBsaWtlIGluc2VydC9lcmFzZS9yZXBsYWNlIGRvIG5vdCBpbnZhbGlkYXRlIGl0ZXJhdG9ycy4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBjbGFzcyBoYXNfc3RhYmxlX2l0ZXJhdG9ycwotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT0oCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGhhc19zdGFibGVfaXRlcmF0b3JzX3Rlc3Rlcih0KSk9PXNpemVvZih5ZXNfdHlwZSkgKSApOwotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHVibGljOgotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLSMgICAgZWxzZQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPWZhbHNlKTsKLSMgICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfc3RhYmxlX2l0ZXJhdG9yczxUPjo6dmFsdWU+IHR5cGU7Ci0gICAgICAgIH07Ci0KLQotICAgICAgICAvLyEgQ29uc3QgdGltZSBpbnNlcnQgdHJhaXQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBUaGlzIHRyYWl0IHNwZWNpZmllcyB0aGF0IHRoZSBzZXF1ZW5jZSdzIGluc2VydCBtZXRob2QgaGFzCi0gICAgICAgICAgICBjb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgY2xhc3MgaGFzX2NvbnN0X3RpbWVfaW5zZXJ0Ci0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPSgKLSAgICAgICAgICAgICAgICBzaXplb2YoaGFzX2NvbnN0X3RpbWVfaW5zZXJ0X3Rlc3Rlcih0KSk9PXNpemVvZih5ZXNfdHlwZSkgKSApOwotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHVibGljOgotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLSMgICAgZWxzZQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPWZhbHNlKTsKLSMgICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfY29uc3RfdGltZV9pbnNlcnQ8VD46OnZhbHVlPiB0eXBlOwotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8hIENvbnN0IHRpbWUgZXJhc2UgdHJhaXQKLSAgICAgICAgLyohCi0gICAgICAgICAgICBUaGlzIHRyYWl0IHNwZWNpZmllcyB0aGF0IHRoZSBzZXF1ZW5jZSdzIGVyYXNlIG1ldGhvZCBoYXMKLSAgICAgICAgICAgIGNvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICBjbGFzcyBoYXNfY29uc3RfdGltZV9lcmFzZQotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgc3RhdGljIFQqIHQ7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZT0oCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGhhc19jb25zdF90aW1lX2VyYXNlX3Rlc3Rlcih0KSk9PXNpemVvZih5ZXNfdHlwZSkgKSApOwotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgcHVibGljOgotIyAgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0lCTUNQUF9fLCA8PSA2MDAgKQotICAgICAgICAgICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLSMgICAgZWxzZQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlPWZhbHNlKTsKLSMgICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORCggX19JQk1DUFBfXywgPD0gNjAwICkKLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSAgICAgICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzxoYXNfY29uc3RfdGltZV9lcmFzZTxUPjo6dmFsdWU+IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBhbGdvcml0aG0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9TVFJJTkdfU0VRVUVOQ0VfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3llc19ub190eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxnb3JpdGhtL3N0cmluZy95ZXNfbm9fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZjFkOGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbGdvcml0aG0vc3RyaW5nL3llc19ub190eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vICBCb29zdCBzdHJpbmdfYWxnbyBsaWJyYXJ5IHllc19ub190eXBlLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBQYXZvbCBEcm9iYSAyMDAyLTIwMDMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RSSU5HX1lFU19OT19UWVBFX0RFVEFJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HX1lFU19OT19UWVBFX0RFVEFJTF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgYWxnb3JpdGhtIHsKLQotICAgICAgICAvLyB0YWtlbiBmcm9tIGJvb3N0IG1haWxpbmctbGlzdAotICAgICAgICAvLyB3aGVuIHllc19ub190eXBlIHdpbGwgYmVjb21lIG9mZmljaWFsbHkKLSAgICAgICAgLy8gYSBwYXJ0IG9mIGJvb3N0IGRpc3RyaWJ1dGlvbiwgdGhpcyBoZWFkZXIKLSAgICAgICAgLy8gd2lsbCBiZSBkZXByZWNhdGVkCi0gICAgICAgIHRlbXBsYXRlPGludCBJPiBzdHJ1Y3Qgc2l6ZV9kZXNjcmlwdG9yIAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIgKCYgdHlwZSlbSV07Ci0gICAgICAgIH07IAotCi0gICAgICAgIHR5cGVkZWYgc2l6ZV9kZXNjcmlwdG9yPDE+Ojp0eXBlIHllc190eXBlOwotICAgICAgICB0eXBlZGVmIHNpemVfZGVzY3JpcHRvcjwyPjo6dHlwZSBub190eXBlOwotCi0gICAgfSAvLyBuYW1lc3BhY2UgYWxnb3JpdGhtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfU1RSSU5HX1lFU19OT19UWVBFX0RFVEFJTF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYWxpZ25lZF9zdG9yYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYWxpZ25lZF9zdG9yYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc2MTMyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FsaWduZWRfc3RvcmFnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gYm9vc3QgYWxpZ25lZF9zdG9yYWdlLmhwcCBoZWFkZXIgZmlsZQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMwotLy8gRXJpYyBGcmllZG1hbiwgSXRheSBNYW1hbgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9BTElHTkVEX1NUT1JBR0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0FMSUdORURfU1RPUkFHRV9IUFAKLQotI2luY2x1ZGUgPGNzdGRkZWY+IC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsgbmFtZXNwYWNlIGFsaWduZWRfc3RvcmFnZSB7Ci0KLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgIHN0ZDo6c2l6ZV90Ci0gICAgLCBhbGlnbm1lbnRfb2ZfbWF4X2FsaWduID0gOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPG1heF9hbGlnbj46OnZhbHVlCi0gICAgKTsKLQotLy8KLS8vIFRvIGJlIFRSMSBjb25mb3JtaW5nIHRoaXMgbXVzdCBiZSBhIFBPRCB0eXBlOgotLy8KLXRlbXBsYXRlIDwKLSAgICAgIHN0ZDo6c2l6ZV90IHNpemVfCi0gICAgLCBzdGQ6OnNpemVfdCBhbGlnbm1lbnRfCi0+Ci1zdHJ1Y3QgYWxpZ25lZF9zdG9yYWdlX2ltcAotewotICAgIHVuaW9uIGRhdGFfdAotICAgIHsKLSAgICAgICAgY2hhciBidWZbc2l6ZV9dOwotCi0gICAgICAgIHR5cGVuYW1lIG1wbDo6ZXZhbF9pZl9jPAotICAgICAgICAgICAgICBhbGlnbm1lbnRfID09IHN0ZDo6c2l6ZV90KC0xKQotICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGRldGFpbDo6bWF4X2FsaWduPgotICAgICAgICAgICAgLCB0eXBlX3dpdGhfYWxpZ25tZW50PGFsaWdubWVudF8+Ci0gICAgICAgICAgICA+Ojp0eXBlIGFsaWduXzsKLSAgICB9IGRhdGFfOwotICAgIHZvaWQqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PGFsaWduZWRfc3RvcmFnZV9pbXAqPih0aGlzKTsgfQotfTsKLQotdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IGFsaWdubWVudF8gPgotc3RydWN0IGFsaWduZWRfc3RvcmFnZV9pbXA8MHUsYWxpZ25tZW50Xz4KLXsKLSAgICAvKiBpbnRlbnRpb25hbGx5IGVtcHR5ICovCi0gICAgdm9pZCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBkZXRhaWw6OmFsaWduZWRfc3RvcmFnZQotCi10ZW1wbGF0ZSA8Ci0gICAgICBzdGQ6OnNpemVfdCBzaXplXwotICAgICwgc3RkOjpzaXplX3QgYWxpZ25tZW50XyA9IHN0ZDo6c2l6ZV90KC0xKQotPgotY2xhc3MgYWxpZ25lZF9zdG9yYWdlIDogCi0jaWZuZGVmIF9fQk9STEFORENfXwotICAgcHJpdmF0ZSAKLSNlbHNlCi0gICBwdWJsaWMKLSNlbmRpZgotICAgZGV0YWlsOjphbGlnbmVkX3N0b3JhZ2U6OmFsaWduZWRfc3RvcmFnZV9pbXA8c2l6ZV8sIGFsaWdubWVudF8+IAotewotIAotcHVibGljOiAvLyBjb25zdGFudHMKLQotICAgIHR5cGVkZWYgZGV0YWlsOjphbGlnbmVkX3N0b3JhZ2U6OmFsaWduZWRfc3RvcmFnZV9pbXA8c2l6ZV8sIGFsaWdubWVudF8+IHR5cGU7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgc3RkOjpzaXplX3QKLSAgICAgICAgLCBzaXplID0gc2l6ZV8KLSAgICAgICAgKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgc3RkOjpzaXplX3QKLSAgICAgICAgLCBhbGlnbm1lbnQgPSAoCi0gICAgICAgICAgICAgIGFsaWdubWVudF8gPT0gc3RkOjpzaXplX3QoLTEpCi0gICAgICAgICAgICA/IDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25lZF9zdG9yYWdlOjphbGlnbm1lbnRfb2ZfbWF4X2FsaWduCi0gICAgICAgICAgICA6IGFsaWdubWVudF8KLSAgICAgICAgICAgICkKLSAgICAgICAgKTsKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmXAotICAgIChfX0dOVUNfXyA+ICAzKSB8fFwKLSAgICAoX19HTlVDX18gPT0gMyAmJiAoX19HTlVDX01JTk9SX18gPiAgMiB8fFwKLSAgICAgICAgICAgICAgICAgICAgICAoX19HTlVDX01JTk9SX18gPT0gMiAmJiBfX0dOVUNfUEFUQ0hMRVZFTF9fID49MykpKQotCi1wcml2YXRlOiAvLyBub25jb3B5YWJsZQotCi0gICAgYWxpZ25lZF9zdG9yYWdlKGNvbnN0IGFsaWduZWRfc3RvcmFnZSYpOwotICAgIGFsaWduZWRfc3RvcmFnZSYgb3BlcmF0b3I9KGNvbnN0IGFsaWduZWRfc3RvcmFnZSYpOwotCi0jZWxzZSAvLyBnY2MgbGVzcyB0aGFuIDMuMi4zCi0KLXB1YmxpYzogLy8gX3Nob3VsZF8gYmUgbm9uY29weWFibGUsIGJ1dCBHQ0MgY29tcGlsZXIgZW1pdHMgZXJyb3IKLQotICAgIGFsaWduZWRfc3RvcmFnZShjb25zdCBhbGlnbmVkX3N0b3JhZ2UmKTsKLSAgICBhbGlnbmVkX3N0b3JhZ2UmIG9wZXJhdG9yPShjb25zdCBhbGlnbmVkX3N0b3JhZ2UmKTsKLQotI2VuZGlmIC8vIGdjYyA8IDMuMi4zIHdvcmthcm91bmQKLQotcHVibGljOiAvLyBzdHJ1Y3RvcnMKLQotICAgIGFsaWduZWRfc3RvcmFnZSgpCi0gICAgewotICAgIH0KLQotICAgIH5hbGlnbmVkX3N0b3JhZ2UoKQotICAgIHsKLSAgICB9Ci0KLXB1YmxpYzogLy8gYWNjZXNzb3JzCi0KLSAgICB2b2lkKiBhZGRyZXNzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlKj4odGhpcyktPmFkZHJlc3MoKTsKLSAgICB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB0eXBlKj4odGhpcyktPmFkZHJlc3MoKTsKLSAgICB9Ci0KLSNlbHNlIC8vIE1TVkM2Ci0KLSAgICBjb25zdCB2b2lkKiBhZGRyZXNzKCkgY29uc3Q7Ci0KLSNlbmRpZiAvLyBNU1ZDNiB3b3JrYXJvdW5kCi0KLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLQotLy8gTVNWQzYgc2VlbXMgbm90IHRvIGxpa2UgaW5saW5lIGZ1bmN0aW9ucyB3aXRoIGNvbnN0IHZvaWQqIHJldHVybnMsIHNvIHdlCi0vLyBkZWNsYXJlIHRoZSBmb2xsb3dpbmcgaGVyZToKLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IFMsIHN0ZDo6c2l6ZV90IEE+Ci1jb25zdCB2b2lkKiBhbGlnbmVkX3N0b3JhZ2U8UyxBPjo6YWRkcmVzcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8IGFsaWduZWRfc3RvcmFnZTxTLEE+KiA+KHRoaXMpLT5hZGRyZXNzKCk7Ci19Ci0KLSNlbmRpZiAvLyBNU1ZDNiB3b3JrYXJvdW5kCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8KLS8vIE1ha2Ugc3VyZSB0aGF0IGlzX3BvZCByZWNvZ25pc2VzIGFsaWduZWRfc3RvcmFnZTw+Ojp0eXBlCi0vLyBhcyBhIFBPRCAoTm90ZSB0aGF0IGFsaWduZWRfc3RvcmFnZTw+IGl0c2VsZiBpcyBub3QgYSBQT0QpOgotLy8KLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBzaXplXywgc3RkOjpzaXplX3QgYWxpZ25tZW50Xz4KLXN0cnVjdCBpc19wb2Q8bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25lZF9zdG9yYWdlOjphbGlnbmVkX3N0b3JhZ2VfaW1wPHNpemVfLGFsaWdubWVudF8+ID4KLSAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRSh0cnVlKQoteyAKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKHRydWUpCi19OyAKLSNlbmRpZgotCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHAiCi0KLSNlbmRpZiAvLyBORE5CT09TVF9BTElHTkVEX1NUT1JBR0VfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2FueS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FueS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZWZiNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9hbnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEyICswLDAgQEAKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2FueSBmb3IgRG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9BTllfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQU5ZX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyB3aGF0OiAgdmFyaWFudCB0eXBlIG5kbmJvb3N0OjphbnkKLS8vIHdobzogICBjb250cmlidXRlZCBieSBLZXZsaW4gSGVubmV5LAotLy8gICAgICAgIHdpdGggZmVhdHVyZXMgY29udHJpYnV0ZWQgYW5kIGJ1Z3MgZm91bmQgYnkKLS8vICAgICAgICBBbnRvbnkgUG9sdWtoaW4sIEVkIEJyZXksIE1hcmsgUm9kZ2VycywgCi0vLyAgICAgICAgUGV0ZXIgRGltb3YsIGFuZCBKYW1lcyBDdXJyYW4KLS8vIHdoZW46ICBKdWx5IDIwMDEsIEFwbHJpbCAyMDEzCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLS8vIFNlZSBuZG5ib29zdC9weXRob24vdHlwZV9pZC5ocHAKLS8vIFRPRE86IGFkZCBORE5CT09TVF9UWVBFSURfQ09NUEFSRV9CWV9OQU1FIHRvIGNvbmZpZy5ocHAKLSMgaWYgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDMpIFwKLSB8fCBkZWZpbmVkKF9BSVgpIFwKLSB8fCAoICAgZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfX2hvc3RfbWlwcykpIFwKLSB8fCAoZGVmaW5lZChfX2hwdXgpICYmIGRlZmluZWQoX19IUF9hQ0MpKSBcCi0gfHwgKGRlZmluZWQobGludXgpICYmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgZGVmaW5lZChfX0lDQykpCi0jICBkZWZpbmUgTkROQk9PU1RfQVVYX0FOWV9UWVBFX0lEX05BTUUKLSNpbmNsdWRlIDxjc3RyaW5nPgotIyBlbmRpZiAKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgY2xhc3MgYW55Ci0gICAgewotICAgIHB1YmxpYzogLy8gc3RydWN0b3JzCi0KLSAgICAgICAgYW55KCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICA6IGNvbnRlbnQoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBhbnkoY29uc3QgVmFsdWVUeXBlICYgdmFsdWUpCi0gICAgICAgICAgOiBjb250ZW50KG5ldyBob2xkZXI8VmFsdWVUeXBlPih2YWx1ZSkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGFueShjb25zdCBhbnkgJiBvdGhlcikKLSAgICAgICAgICA6IGNvbnRlbnQob3RoZXIuY29udGVudCA/IG90aGVyLmNvbnRlbnQtPmNsb25lKCkgOiAwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgICAgICAvLyBNb3ZlIGNvbnN0cnVjdG9yCi0gICAgICAgIGFueShhbnkmJiBvdGhlcikgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICA6IGNvbnRlbnQob3RoZXIuY29udGVudCkKLSAgICAgICAgewotICAgICAgICAgICAgb3RoZXIuY29udGVudCA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQZXJmZWN0IGZvcndhcmRpbmcgb2YgVmFsdWVUeXBlCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICAgICAgYW55KFZhbHVlVHlwZSYmIHZhbHVlLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZjxuZG5ib29zdDo6aXNfc2FtZTxhbnkmLCBWYWx1ZVR5cGU+ID46OnR5cGUqID0gMCkKLSAgICAgICAgICA6IGNvbnRlbnQobmV3IGhvbGRlcjwgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxWYWx1ZVR5cGU+Ojp0eXBlID4oc3RhdGljX2Nhc3Q8VmFsdWVUeXBlJiY+KHZhbHVlKSkpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgfmFueSgpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSBjb250ZW50OwotICAgICAgICB9Ci0KLSAgICBwdWJsaWM6IC8vIG1vZGlmaWVycwotCi0gICAgICAgIGFueSAmIHN3YXAoYW55ICYgcmhzKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAoY29udGVudCwgcmhzLmNvbnRlbnQpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICAgICAgYW55ICYgb3BlcmF0b3I9KGNvbnN0IFZhbHVlVHlwZSAmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHJocykuc3dhcCgqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBhbnkgJiBvcGVyYXRvcj0oYW55IHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHJocykuc3dhcCgqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotI2Vsc2UgCi0gICAgICAgIGFueSAmIG9wZXJhdG9yPShjb25zdCBhbnkmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHJocykuc3dhcCgqdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBtb3ZlIGFzc2lnbmVtZW50Ci0gICAgICAgIGFueSAmIG9wZXJhdG9yPShhbnkmJiByaHMpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJocy5zd2FwKCp0aGlzKTsKLSAgICAgICAgICAgIGFueSgpLnN3YXAocmhzKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFBlcmZlY3QgZm9yd2FyZGluZyBvZiBWYWx1ZVR5cGUKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFZhbHVlVHlwZT4KLSAgICAgICAgYW55ICYgb3BlcmF0b3I9KFZhbHVlVHlwZSYmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgYW55KHN0YXRpY19jYXN0PFZhbHVlVHlwZSYmPihyaHMpKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICBwdWJsaWM6IC8vIHF1ZXJpZXMKLQotICAgICAgICBib29sIGVtcHR5KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFjb250ZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJiB0eXBlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgPyBjb250ZW50LT50eXBlKCkgOiB0eXBlaWQodm9pZCk7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotICAgIHByaXZhdGU6IC8vIHR5cGVzCi0jZWxzZQotICAgIHB1YmxpYzogLy8gdHlwZXMgKHB1YmxpYyBzbyBhbnlfY2FzdCBjYW4gYmUgbm9uLWZyaWVuZCkKLSNlbmRpZgotCi0gICAgICAgIGNsYXNzIHBsYWNlaG9sZGVyCi0gICAgICAgIHsKLSAgICAgICAgcHVibGljOiAvLyBzdHJ1Y3RvcnMKLQotICAgICAgICAgICAgdmlydHVhbCB+cGxhY2Vob2xkZXIoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYzogLy8gcXVlcmllcwotCi0gICAgICAgICAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICYgdHlwZSgpIGNvbnN0ID0gMDsKLQotICAgICAgICAgICAgdmlydHVhbCBwbGFjZWhvbGRlciAqIGNsb25lKCkgY29uc3QgPSAwOwotCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBjbGFzcyBob2xkZXIgOiBwdWJsaWMgcGxhY2Vob2xkZXIKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6IC8vIHN0cnVjdG9ycwotCi0gICAgICAgICAgICBob2xkZXIoY29uc3QgVmFsdWVUeXBlICYgdmFsdWUpCi0gICAgICAgICAgICAgIDogaGVsZCh2YWx1ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgICAgICAgICAgaG9sZGVyKFZhbHVlVHlwZSYmIHZhbHVlKQotICAgICAgICAgICAgICA6IGhlbGQoc3RhdGljX2Nhc3Q8IFZhbHVlVHlwZSYmID4odmFsdWUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIHB1YmxpYzogLy8gcXVlcmllcwotCi0gICAgICAgICAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICYgdHlwZSgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVpZChWYWx1ZVR5cGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2aXJ0dWFsIHBsYWNlaG9sZGVyICogY2xvbmUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgaG9sZGVyKGhlbGQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYzogLy8gcmVwcmVzZW50YXRpb24KLQotICAgICAgICAgICAgVmFsdWVUeXBlIGhlbGQ7Ci0KLSAgICAgICAgcHJpdmF0ZTogLy8gaW50ZW50aW9uYWxseSBsZWZ0IHVuaW1wbGVtZW50ZWQKLSAgICAgICAgICAgIGhvbGRlciAmIG9wZXJhdG9yPShjb25zdCBob2xkZXIgJik7Ci0gICAgICAgIH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLQotICAgIHByaXZhdGU6IC8vIHJlcHJlc2VudGF0aW9uCi0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgICAgICBmcmllbmQgVmFsdWVUeXBlICogYW55X2Nhc3QoYW55ICopIE5ETkJPT1NUX05PRVhDRVBUOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICAgICAgZnJpZW5kIFZhbHVlVHlwZSAqIHVuc2FmZV9hbnlfY2FzdChhbnkgKikgTkROQk9PU1RfTk9FWENFUFQ7Ci0KLSNlbHNlCi0KLSAgICBwdWJsaWM6IC8vIHJlcHJlc2VudGF0aW9uIChwdWJsaWMgc28gYW55X2Nhc3QgY2FuIGJlIG5vbi1mcmllbmQpCi0KLSNlbmRpZgotCi0gICAgICAgIHBsYWNlaG9sZGVyICogY29udGVudDsKLQotICAgIH07Ci0gCi0gICAgaW5saW5lIHZvaWQgc3dhcChhbnkgJiBsaHMsIGFueSAmIHJocykgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIGxocy5zd2FwKHJocyk7Ci0gICAgfQotCi0gICAgY2xhc3MgYmFkX2FueV9jYXN0IDogcHVibGljIHN0ZDo6YmFkX2Nhc3QKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKiB3aGF0KCkgY29uc3QgdGhyb3coKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIm5kbmJvb3N0OjpiYWRfYW55X2Nhc3Q6ICIKLSAgICAgICAgICAgICAgICAgICAiZmFpbGVkIGNvbnZlcnNpb24gdXNpbmcgbmRuYm9vc3Q6OmFueV9jYXN0IjsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgVmFsdWVUeXBlICogYW55X2Nhc3QoYW55ICogb3BlcmFuZCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcGVyYW5kICYmIAotI2lmZGVmIE5ETkJPT1NUX0FVWF9BTllfVFlQRV9JRF9OQU1FCi0gICAgICAgICAgICBzdGQ6OnN0cmNtcChvcGVyYW5kLT50eXBlKCkubmFtZSgpLCB0eXBlaWQoVmFsdWVUeXBlKS5uYW1lKCkpID09IDAKLSNlbHNlCi0gICAgICAgICAgICBvcGVyYW5kLT50eXBlKCkgPT0gdHlwZWlkKFZhbHVlVHlwZSkKLSNlbmRpZgotICAgICAgICAgICAgPyAmc3RhdGljX2Nhc3Q8YW55Ojpob2xkZXI8VmFsdWVUeXBlPiAqPihvcGVyYW5kLT5jb250ZW50KS0+aGVsZAotICAgICAgICAgICAgOiAwOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBpbmxpbmUgY29uc3QgVmFsdWVUeXBlICogYW55X2Nhc3QoY29uc3QgYW55ICogb3BlcmFuZCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbnlfY2FzdDxWYWx1ZVR5cGU+KGNvbnN0X2Nhc3Q8YW55ICo+KG9wZXJhbmQpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgVmFsdWVUeXBlIGFueV9jYXN0KGFueSAmIG9wZXJhbmQpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX3JlZmVyZW5jZTxWYWx1ZVR5cGU+Ojp0eXBlIG5vbnJlZjsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAgICAgLy8gSWYgJ25vbnJlZicgaXMgc3RpbGwgcmVmZXJlbmNlIHR5cGUsIGl0IG1lYW5zIHRoZSB1c2VyIGhhcyBub3QKLSAgICAgICAgLy8gc3BlY2lhbGl6ZWQgJ3JlbW92ZV9yZWZlcmVuY2UnLgotCi0gICAgICAgIC8vIFBsZWFzZSB1c2UgTkROQk9PU1RfQlJPS0VOX0NPTVBJTEVSX1RZUEVfVFJBSVRTX1NQRUNJQUxJWkFUSU9OIG1hY3JvCi0gICAgICAgIC8vIHRvIGdlbmVyYXRlIHNwZWNpYWxpemF0aW9uIG9mIHJlbW92ZV9yZWZlcmVuY2UgZm9yIHlvdXIgY2xhc3MKLSAgICAgICAgLy8gU2VlIHR5cGUgdHJhaXRzIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFpc19yZWZlcmVuY2U8bm9ucmVmPjo6dmFsdWUpOwotI2VuZGlmCi0KLSAgICAgICAgbm9ucmVmICogcmVzdWx0ID0gYW55X2Nhc3Q8bm9ucmVmPigmb3BlcmFuZCk7Ci0gICAgICAgIGlmKCFyZXN1bHQpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9hbnlfY2FzdCgpKTsKLSAgICAgICAgcmV0dXJuICpyZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIGlubGluZSBWYWx1ZVR5cGUgYW55X2Nhc3QoY29uc3QgYW55ICYgb3BlcmFuZCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfcmVmZXJlbmNlPFZhbHVlVHlwZT46OnR5cGUgbm9ucmVmOwotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgICAgICAvLyBUaGUgY29tbWVudCBpbiB0aGUgYWJvdmUgdmVyc2lvbiBvZiAnYW55X2Nhc3QnIGV4cGxhaW5zIHdoZW4gdGhpcwotICAgICAgICAvLyBhc3NlcnQgaXMgZmlyZWQgYW5kIHdoYXQgdG8gZG8uCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIWlzX3JlZmVyZW5jZTxub25yZWY+Ojp2YWx1ZSk7Ci0jZW5kaWYKLQotICAgICAgICByZXR1cm4gYW55X2Nhc3Q8Y29uc3Qgbm9ucmVmICY+KGNvbnN0X2Nhc3Q8YW55ICY+KG9wZXJhbmQpKTsKLSAgICB9Ci0KLSAgICAvLyBOb3RlOiBUaGUgInVuc2FmZSIgdmVyc2lvbnMgb2YgYW55X2Nhc3QgYXJlIG5vdCBwYXJ0IG9mIHRoZQotICAgIC8vIHB1YmxpYyBpbnRlcmZhY2UgYW5kIG1heSBiZSByZW1vdmVkIGF0IGFueSB0aW1lLiBUaGV5IGFyZQotICAgIC8vIHJlcXVpcmVkIHdoZXJlIHdlIGtub3cgd2hhdCB0eXBlIGlzIHN0b3JlZCBpbiB0aGUgYW55IGFuZCBjYW4ndAotICAgIC8vIHVzZSB0eXBlaWQoKSBjb21wYXJpc29uLCBlLmcuLCB3aGVuIG91ciB0eXBlcyBtYXkgdHJhdmVsIGFjcm9zcwotICAgIC8vIGRpZmZlcmVudCBzaGFyZWQgbGlicmFyaWVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KLSAgICBpbmxpbmUgVmFsdWVUeXBlICogdW5zYWZlX2FueV9jYXN0KGFueSAqIG9wZXJhbmQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gJnN0YXRpY19jYXN0PGFueTo6aG9sZGVyPFZhbHVlVHlwZT4gKj4ob3BlcmFuZC0+Y29udGVudCktPmhlbGQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIGlubGluZSBjb25zdCBWYWx1ZVR5cGUgKiB1bnNhZmVfYW55X2Nhc3QoY29uc3QgYW55ICogb3BlcmFuZCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bnNhZmVfYW55X2Nhc3Q8VmFsdWVUeXBlPihjb25zdF9jYXN0PGFueSAqPihvcGVyYW5kKSk7Ci0gICAgfQotfQotCi0vLyBDb3B5cmlnaHQgS2V2bGluIEhlbm5leSwgMjAwMCwgMjAwMSwgMjAwMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE3ZmNiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0NiArMCwwIEBACi0vKiBUaGUgZm9sbG93aW5nIGNvZGUgZGVjbGFyZXMgY2xhc3MgYXJyYXksCi0gKiBhbiBTVEwgY29udGFpbmVyIChhcyB3cmFwcGVyKSBmb3IgYXJyYXlzIG9mIGNvbnN0YW50IHNpemUuCi0gKgotICogU2VlCi0gKiAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYXJyYXkvCi0gKiBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBUaGUgb3JpZ2luYWwgYXV0aG9yIHNpdGUgaXMgYXQ6IGh0dHA6Ly93d3cuam9zdXR0aXMuY29tLwotICoKLSAqIChDKSBDb3B5cmlnaHQgTmljb2xhaSBNLiBKb3N1dHRpcyAyMDAxLgotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiAxNCBBcHIgMjAxMiAtIChtdGMpIEFkZGVkIHN1cHBvcnQgZm9yIG5kbmJvb3N0OjpoYXNoCi0gKiAyOCBEZWMgMjAxMCAtIChtdGMpIEFkZGVkIGNiZWdpbiBhbmQgY2VuZCAoYW5kIGNyYmVnaW4gYW5kIGNyZW5kKSBmb3IgQysrT3ggY29tcGF0aWJpbGl0eS4KLSAqIDEwIE1hciAyMDEwIC0gKG10YykgZmlsbCBtZXRob2QgYWRkZWQsIG1hdGNoaW5nIHJlc29sdXRpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgd29ya2luZyBncm91cC4KLSAqICAgICAgU2VlIDxodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL2x3Zy1kZWZlY3RzLmh0bWwjNzc2PiBvciBUcmFjIGlzc3VlICMzMTY4Ci0gKiAgICAgIEV2ZW50dWFsbHksIHdlIHNob3VsZCByZW1vdmUgImFzc2lnbiIgd2hpY2ggaXMgbm93IGEgc3lub255bSBmb3IgImZpbGwiIChNYXJzaGFsbCBDbG93KQotICogMTAgTWFyIDIwMTAgLSBhZGRlZCB3b3JrYXJvdW5kIGZvciBTVU5DQyBhbmQgIVNUTFBvcnQgW3RyYWMgIzM4OTNdIChNYXJzaGFsbCBDbG93KQotICogMjkgSmFuIDIwMDQgLSBjX2FycmF5KCkgYWRkZWQsIE5ETkJPT1NUX05PX1BSSVZBVEVfSU5fQUdHUkVHQVRFIHJlbW92ZWQgKE5pY28gSm9zdXR0aXMpCi0gKiAyMyBBdWcgMjAwMiAtIGZpeCBmb3IgTm9uLU1TVkMgY29tcGlsZXJzIGNvbWJpbmVkIHdpdGggTVNWQyBsaWJyYXJpZXMuCi0gKiAwNSBBdWcgMjAwMSAtIG1pbm9yIHVwZGF0ZSAoTmljbyBKb3N1dHRpcykKLSAqIDIwIEphbiAyMDAxIC0gU1RMcG9ydCBmaXggKEJlbWFuIERhd2VzKQotICogMjkgU2VwIDIwMDAgLSBJbml0aWFsIFJldmlzaW9uIChOaWNvIEpvc3V0dGlzKQotICoKLSAqIEphbiAyOSwgMjAwNAotICovCi0jaWZuZGVmIE5ETkJPT1NUX0FSUkFZX0hQUAotI2RlZmluZSBORE5CT09TVF9BUlJBWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkgIAotIyBwcmFnbWEgd2FybmluZyhwdXNoKSAgCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgLy8gJ3N0ZDo6ZXF1YWwnOiBGdW5jdGlvbiBjYWxsIHdpdGggcGFyYW1ldGVycyB0aGF0IG1heSBiZSB1bnNhZmUKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEwKSAvLyBuZG5ib29zdDo6YXJyYXk8VCxOPicgOiBkZWZhdWx0IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDYxMCkgLy8gd2FybmluZyBDNDYxMDogY2xhc3MgJ25kbmJvb3N0OjphcnJheTxULE4+JyBjYW4gbmV2ZXIgYmUgaW5zdGFudGlhdGVkIC0gdXNlciBkZWZpbmVkIGNvbnN0cnVjdG9yIHJlcXVpcmVkIAotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotCi0vLyBIYW5kbGVzIGJyb2tlbiBzdGFuZGFyZCBsaWJyYXJpZXMgYmV0dGVyIHRoYW4gPGl0ZXJhdG9yPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2hfZndkLmhwcD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLS8vIEZJWEVTIGZvciBicm9rZW4gY29tcGlsZXJzCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBjbGFzcyBhcnJheSB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFQgZWxlbXNbTl07ICAgIC8vIGZpeGVkLXNpemUgYXJyYXkgb2YgZWxlbWVudHMgb2YgdHlwZSBUCi0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgLy8gdHlwZSBkZWZpbml0aW9ucwotICAgICAgICB0eXBlZGVmIFQgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVCogICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCogICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgVCYgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQmICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICBzaXplX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIC8vIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICAgICAgaXRlcmF0b3IgICAgICAgIGJlZ2luKCkgICAgICAgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgCi0gICAgICAgIGl0ZXJhdG9yICAgICAgICBlbmQoKSAgICAgICB7IHJldHVybiBlbGVtcytOOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yICBlbmQoKSBjb25zdCB7IHJldHVybiBlbGVtcytOOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCB7IHJldHVybiBlbGVtcytOOyB9Ci0KLSAgICAgICAgLy8gcmV2ZXJzZSBpdGVyYXRvciBzdXBwb3J0Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQ19TVERfSVRFUkFUT1IpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxMzAwKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCKSAmJiAoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIgPT0gMzEwKQotICAgICAgICAvLyB3b3JrYXJvdW5kIGZvciBicm9rZW4gcmV2ZXJzZV9pdGVyYXRvciBpbiBWQzcKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8c3RkOjpfUHRyaXQ8dmFsdWVfdHlwZSwgZGlmZmVyZW5jZV90eXBlLCBpdGVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBpdGVyYXRvciwgcmVmZXJlbmNlPiA+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPHN0ZDo6X1B0cml0PHZhbHVlX3R5cGUsIGRpZmZlcmVuY2VfdHlwZSwgY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZSwgaXRlcmF0b3IsIHJlZmVyZW5jZT4gPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2VsaWYgZGVmaW5lZChfUldTVERfTk9fQ0xBU1NfUEFSVElBTF9TUEVDKSAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3IsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIAotICAgICAgICAgICAgICB2YWx1ZV90eXBlLCByZWZlcmVuY2UsIGl0ZXJhdG9yLCBkaWZmZXJlbmNlX3R5cGU+IHJldmVyc2VfaXRlcmF0b3I7IAotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvciwgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgICAgdmFsdWVfdHlwZSwgY29uc3RfcmVmZXJlbmNlLCBjb25zdF9pdGVyYXRvciwgZGlmZmVyZW5jZV90eXBlPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2Vsc2UKLSAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgYnJva2VuIHJldmVyc2VfaXRlcmF0b3IgaW1wbGVtZW50YXRpb25zCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yLFQ+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yLFQ+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0jZW5kaWYKLQotICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JiZWdpbigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gb3BlcmF0b3JbXQotICAgICAgICByZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaSkgCi0gICAgICAgIHsgCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlRfTVNHKCBpIDwgTiwgIm91dCBvZiByYW5nZSIgKTsKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1tpXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIGkpIGNvbnN0IAotICAgICAgICB7ICAgICAKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0coIGkgPCBOLCAib3V0IG9mIHJhbmdlIiApOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1zW2ldOyAKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGF0KCkgd2l0aCByYW5nZSBjaGVjawotICAgICAgICByZWZlcmVuY2UgYXQoc2l6ZV90eXBlIGkpIHsgcmFuZ2VjaGVjayhpKTsgcmV0dXJuIGVsZW1zW2ldOyB9Ci0gICAgICAgIGNvbnN0X3JlZmVyZW5jZSBhdChzaXplX3R5cGUgaSkgY29uc3QgeyByYW5nZWNoZWNrKGkpOyByZXR1cm4gZWxlbXNbaV07IH0KLSAgICAKLSAgICAgICAgLy8gZnJvbnQoKSBhbmQgYmFjaygpCi0gICAgICAgIHJlZmVyZW5jZSBmcm9udCgpIAotICAgICAgICB7IAotICAgICAgICAgICAgcmV0dXJuIGVsZW1zWzBdOyAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIGZyb250KCkgY29uc3QgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1swXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmVmZXJlbmNlIGJhY2soKSAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1tOLTFdOyAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBjb25zdCAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHJldHVybiBlbGVtc1tOLTFdOyAKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHNpemUgaXMgY29uc3RhbnQKLSAgICAgICAgc3RhdGljIHNpemVfdHlwZSBzaXplKCkgeyByZXR1cm4gTjsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlbXB0eSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHN0YXRpYyBzaXplX3R5cGUgbWF4X3NpemUoKSB7IHJldHVybiBOOyB9Ci0gICAgICAgIGVudW0geyBzdGF0aWNfc2l6ZSA9IE4gfTsKLQotICAgICAgICAvLyBzd2FwIChub3RlOiBsaW5lYXIgY29tcGxleGl0eSkKLSAgICAgICAgdm9pZCBzd2FwIChhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdHlwZSBpID0gMDsgaSA8IE47ICsraSkKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6c3dhcChlbGVtc1tpXSx5LmVsZW1zW2ldKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGRpcmVjdCBhY2Nlc3MgdG8gZGF0YSAocmVhZC1vbmx5KQotICAgICAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gZWxlbXM7IH0KLSAgICAgICAgVCogZGF0YSgpIHsgcmV0dXJuIGVsZW1zOyB9Ci0KLSAgICAgICAgLy8gdXNlIGFycmF5IGFzIEMgYXJyYXkgKGRpcmVjdCByZWFkL3dyaXRlIGFjY2VzcyB0byBkYXRhKQotICAgICAgICBUKiBjX2FycmF5KCkgeyByZXR1cm4gZWxlbXM7IH0KLQotICAgICAgICAvLyBhc3NpZ25tZW50IHdpdGggdHlwZSBjb252ZXJzaW9uCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLSAgICAgICAgYXJyYXk8VCxOPiYgb3BlcmF0b3I9IChjb25zdCBhcnJheTxUMixOPiYgcmhzKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvcHkocmhzLmJlZ2luKCkscmhzLmVuZCgpLCBiZWdpbigpKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGFzc2lnbiBvbmUgdmFsdWUgdG8gYWxsIGVsZW1lbnRzCi0gICAgICAgIHZvaWQgYXNzaWduIChjb25zdCBUJiB2YWx1ZSkgeyBmaWxsICggdmFsdWUgKTsgfSAgICAvLyBBIHN5bm9ueW0gZm9yIGZpbGwKLSAgICAgICAgdm9pZCBmaWxsICAgKGNvbnN0IFQmIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmZpbGxfbihiZWdpbigpLHNpemUoKSx2YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBjaGVjayByYW5nZSAobWF5IGJlIHByaXZhdGUgYmVjYXVzZSBpdCBpcyBzdGF0aWMpCi0gICAgICAgIHN0YXRpYyB2b2lkIHJhbmdlY2hlY2sgKHNpemVfdHlwZSBpKSB7Ci0gICAgICAgICAgICBpZiAoaSA+PSBzaXplKCkpIHsKLSAgICAgICAgICAgICAgICBzdGQ6Om91dF9vZl9yYW5nZSBlKCJhcnJheTw+OiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgY2xhc3MgYXJyYXk8IFQsIDAgPiB7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgLy8gdHlwZSBkZWZpbml0aW9ucwotICAgICAgICB0eXBlZGVmIFQgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgVCogICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCogICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgVCYgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQmICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICBzaXplX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIC8vIGl0ZXJhdG9yIHN1cHBvcnQKLSAgICAgICAgaXRlcmF0b3IgICAgICAgIGJlZ2luKCkgICAgICAgeyByZXR1cm4gICAgICAgaXRlcmF0b3IoIHJlaW50ZXJwcmV0X2Nhc3Q8ICAgICAgIFQgKiA+KCB0aGlzICkgKTsgfQotICAgICAgICBjb25zdF9pdGVyYXRvciAgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvciggcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgVCAqID4oIHRoaXMgKSApOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCByZWludGVycHJldF9jYXN0PCBjb25zdCBUICogPiggdGhpcyApICk7IH0KLQotICAgICAgICBpdGVyYXRvciAgICAgICAgZW5kKCkgICAgICAgeyByZXR1cm4gIGJlZ2luKCk7IH0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgIGVuZCgpIGNvbnN0IHsgcmV0dXJuICBiZWdpbigpOyB9Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCB7IHJldHVybiBjYmVnaW4oKTsgfQotCi0gICAgICAgIC8vIHJldmVyc2UgaXRlcmF0b3Igc3VwcG9ydAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKQotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPT0gMTMwMCkgJiYgZGVmaW5lZChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQikgJiYgKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCID09IDMxMCkKLSAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgYnJva2VuIHJldmVyc2VfaXRlcmF0b3IgaW4gVkM3Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPHN0ZDo6X1B0cml0PHZhbHVlX3R5cGUsIGRpZmZlcmVuY2VfdHlwZSwgaXRlcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgaXRlcmF0b3IsIHJlZmVyZW5jZT4gPiByZXZlcnNlX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxzdGQ6Ol9QdHJpdDx2YWx1ZV90eXBlLCBkaWZmZXJlbmNlX3R5cGUsIGNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2UsIGl0ZXJhdG9yLCByZWZlcmVuY2U+ID4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbGlmIGRlZmluZWQoX1JXU1REX05PX0NMQVNTX1BBUlRJQUxfU1BFQykgCi0gICAgICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCAKLSAgICAgICAgICAgICAgdmFsdWVfdHlwZSwgcmVmZXJlbmNlLCBpdGVyYXRvciwgZGlmZmVyZW5jZV90eXBlPiByZXZlcnNlX2l0ZXJhdG9yOyAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3IsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICAgIHZhbHVlX3R5cGUsIGNvbnN0X3JlZmVyZW5jZSwgY29uc3RfaXRlcmF0b3IsIGRpZmZlcmVuY2VfdHlwZT4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSNlbHNlCi0gICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGJyb2tlbiByZXZlcnNlX2l0ZXJhdG9yIGltcGxlbWVudGF0aW9ucwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcixUPiByZXZlcnNlX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcixUPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotI2VuZGlmCi0KLSAgICAgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQotICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsKLSAgICAgICAgfQotICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIG9wZXJhdG9yW10KLSAgICAgICAgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIC8qaSovKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSAvKmkqLykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBhdCgpIHdpdGggcmFuZ2UgY2hlY2sKLSAgICAgICAgcmVmZXJlbmNlIGF0KHNpemVfdHlwZSAvKmkqLykgICAgICAgICAgICAgICB7ICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7IH0KLSAgICAgICAgY29uc3RfcmVmZXJlbmNlIGF0KHNpemVfdHlwZSAvKmkqLykgY29uc3QgICB7ICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7IH0KLQotICAgICAgICAvLyBmcm9udCgpIGFuZCBiYWNrKCkKLSAgICAgICAgcmVmZXJlbmNlIGZyb250KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9yZWZlcmVuY2UgZnJvbnQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFpbGVkX3JhbmdlY2hlY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlZmVyZW5jZSBiYWNrKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhaWxlZF9yYW5nZWNoZWNrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9yZWZlcmVuY2UgYmFjaygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWlsZWRfcmFuZ2VjaGVjaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc2l6ZSBpcyBjb25zdGFudAotICAgICAgICBzdGF0aWMgc2l6ZV90eXBlIHNpemUoKSB7IHJldHVybiAwOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVtcHR5KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBzdGF0aWMgc2l6ZV90eXBlIG1heF9zaXplKCkgeyByZXR1cm4gMDsgfQotICAgICAgICBlbnVtIHsgc3RhdGljX3NpemUgPSAwIH07Ci0KLSAgICAgICAgdm9pZCBzd2FwIChhcnJheTxULDA+JiAvKnkqLykgewotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZGlyZWN0IGFjY2VzcyB0byBkYXRhIChyZWFkLW9ubHkpCi0gICAgICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgICAgIFQqIGRhdGEoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAgICAgLy8gdXNlIGFycmF5IGFzIEMgYXJyYXkgKGRpcmVjdCByZWFkL3dyaXRlIGFjY2VzcyB0byBkYXRhKQotICAgICAgICBUKiBjX2FycmF5KCkgeyByZXR1cm4gMDsgfQotCi0gICAgICAgIC8vIGFzc2lnbm1lbnQgd2l0aCB0eXBlIGNvbnZlcnNpb24KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQyPgotICAgICAgICBhcnJheTxULDA+JiBvcGVyYXRvcj0gKGNvbnN0IGFycmF5PFQyLDA+JiApIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGFzc2lnbiBvbmUgdmFsdWUgdG8gYWxsIGVsZW1lbnRzCi0gICAgICAgIHZvaWQgYXNzaWduIChjb25zdCBUJiB2YWx1ZSkgeyBmaWxsICggdmFsdWUgKTsgfQotICAgICAgICB2b2lkIGZpbGwgICAoY29uc3QgVCYgKSB7fQotICAgICAgICAKLSAgICAgICAgLy8gY2hlY2sgcmFuZ2UgKG1heSBiZSBwcml2YXRlIGJlY2F1c2UgaXQgaXMgc3RhdGljKQotICAgICAgICBzdGF0aWMgcmVmZXJlbmNlIGZhaWxlZF9yYW5nZWNoZWNrICgpIHsKLSAgICAgICAgICAgICAgICBzdGQ6Om91dF9vZl9yYW5nZSBlKCJhdHRlbXB0IHRvIGFjY2VzcyBlbGVtZW50IG9mIGFuIGVtcHR5IGFycmF5Iik7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpIHx8ICghZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKSkKLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmV0dXJuIHNvbWV0aGluZyBoZXJlIHRvIGtlZXAKLSAgICAgICAgICAgICAgICAvLyBzb21lIGNvbXBpbGVycyBoYXBweTogaG93ZXZlciB3ZSB3aWxsIG5ldmVyCi0gICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgZ2V0IGhlcmUuLi4uCi0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICBzdGF0aWMgVCBwbGFjZWhvbGRlcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGxhY2Vob2xkZXI7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICB9OwotI2VuZGlmCi0KLSAgICAvLyBjb21wYXJpc29ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvcj09IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmVxdWFsKHguYmVnaW4oKSwgeC5lbmQoKSwgeS5iZWdpbigpKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBib29sIG9wZXJhdG9yPCAoY29uc3QgYXJyYXk8VCxOPiYgeCwgY29uc3QgYXJyYXk8VCxOPiYgeSkgewotICAgICAgICByZXR1cm4gc3RkOjpsZXhpY29ncmFwaGljYWxfY29tcGFyZSh4LmJlZ2luKCkseC5lbmQoKSx5LmJlZ2luKCkseS5lbmQoKSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvciE9IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiAhKHg9PXkpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICAgIGJvb2wgb3BlcmF0b3I+IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiB5PHg7Ci0gICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvcjw9IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiAhKHk8eCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgYm9vbCBvcGVyYXRvcj49IChjb25zdCBhcnJheTxULE4+JiB4LCBjb25zdCBhcnJheTxULE4+JiB5KSB7Ci0gICAgICAgIHJldHVybiAhKHg8eSk7Ci0gICAgfQotCi0gICAgLy8gZ2xvYmFsIHN3YXAoKQotICAgIHRlbXBsYXRlPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgaW5saW5lIHZvaWQgc3dhcCAoYXJyYXk8VCxOPiYgeCwgYXJyYXk8VCxOPiYgeSkgewotICAgICAgICB4LnN3YXAoeSk7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykKLS8vICBUcmFjIHRpY2tldCAjNDc1NzsgdGhlIFN1biBTb2xhcmlzIGNvbXBpbGVyIGNhbid0IGhhbmRsZQotLy8gIHN5bnRheCBsaWtlICdUKCZnZXRfY19hcnJheShuZG5ib29zdDo6YXJyYXk8VCxOPiYgYXJnKSlbTl0nCi0vLyAgCi0vLyAgV2UgY2FuJ3QganVzdCB1c2UgdGhpcyBmb3IgYWxsIGNvbXBpbGVycywgYmVjYXVzZSB0aGUgCi0vLyAgICAgIGJvcmxhbmQgY29tcGlsZXJzIGNhbid0IGhhbmRsZSB0aGlzIGZvcm0uIAotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPiBzdHJ1Y3QgY19hcnJheQotICAgICAgIHsKLSAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbTl07Ci0gICAgICAgfTsKLSAgICB9Ci0gICAgCi0gICAvLyBTcGVjaWZpYyBmb3IgbmRuYm9vc3Q6OmFycmF5OiBzaW1wbHkgcmV0dXJucyBpdHMgZWxlbXMgZGF0YSBtZW1iZXIuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgIHR5cGVuYW1lIGRldGFpbDo6Y19hcnJheTxULE4+Ojp0eXBlJiBnZXRfY19hcnJheShuZG5ib29zdDo6YXJyYXk8VCxOPiYgYXJnKQotICAgewotICAgICAgIHJldHVybiBhcmcuZWxlbXM7Ci0gICB9Ci0KLSAgIC8vIFNwZWNpZmljIGZvciBuZG5ib29zdDo6YXJyYXk6IHNpbXBseSByZXR1cm5zIGl0cyBlbGVtcyBkYXRhIG1lbWJlci4KLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgdHlwZW5hbWUgY29uc3QgZGV0YWlsOjpjX2FycmF5PFQsTj46OnR5cGUmIGdldF9jX2FycmF5KGNvbnN0IG5kbmJvb3N0OjphcnJheTxULE4+JiBhcmcpCi0gICB7Ci0gICAgICAgcmV0dXJuIGFyZy5lbGVtczsKLSAgIH0KLSNlbHNlCi0vLyBTcGVjaWZpYyBmb3IgbmRuYm9vc3Q6OmFycmF5OiBzaW1wbHkgcmV0dXJucyBpdHMgZWxlbXMgZGF0YSBtZW1iZXIuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgVCgmZ2V0X2NfYXJyYXkobmRuYm9vc3Q6OmFycmF5PFQsTj4mIGFyZykpW05dCi0gICAgewotICAgICAgICByZXR1cm4gYXJnLmVsZW1zOwotICAgIH0KLSAgICAKLSAgICAvLyBDb25zdCB2ZXJzaW9uLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgIGNvbnN0IFQoJmdldF9jX2FycmF5KGNvbnN0IG5kbmJvb3N0OjphcnJheTxULE4+JiBhcmcpKVtOXQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFyZy5lbGVtczsKLSAgICB9Ci0jZW5kaWYKLSAgICAKLSNpZiAwCi0gICAgLy8gT3ZlcmxvYWQgZm9yIHN0ZDo6YXJyYXksIGFzc3VtaW5nIHRoYXQgc3RkOjphcnJheSB3aWxsIGhhdmUKLSAgICAvLyBleHBsaWNpdCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcyBkaXNjdXNzZWQgYXQgdGhlIFdHMjEgbWVldGluZwotICAgIC8vIGluIFN1bW1pdCwgTWFyY2ggMjAwOS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBUKCZnZXRfY19hcnJheShzdGQ6OmFycmF5PFQsTj4mIGFyZykpW05dCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCgmKVtOXT4oYXJnKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gQ29uc3QgdmVyc2lvbi4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBjb25zdCBUKCZnZXRfY19hcnJheShjb25zdCBzdGQ6OmFycmF5PFQsTj4mIGFyZykpW05dCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCgmKVtOXT4oYXJnKTsKLSAgICB9Ci0jZW5kaWYKLQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKGNvbnN0IGFycmF5PFQsTj4mIGFycikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZShhcnIuYmVnaW4oKSwgYXJyLmVuZCgpKTsKLSAgICB9Ci0KLX0gLyogbmFtZXNwYWNlIG5kbmJvb3N0ICovCi0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkgIAotIyBwcmFnbWEgd2FybmluZyhwb3ApICAKLSNlbmRpZiAKLQotI2VuZGlmIC8qTkROQk9PU1RfQVJSQVlfSFBQKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYXNzZXJ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYXNzZXJ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3YTY3Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Fzc2VydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotLy8KLS8vICBuZG5ib29zdC9hc3NlcnQuaHBwIC0gTkROQk9PU1RfQVNTRVJUKGV4cHIpCi0vLyAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0coZXhwciwgbXNnKQotLy8gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9WRVJJRlkoZXhwcikKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA3IFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IChjKSBCZW1hbiBEYXdlcyAyMDExCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBOb3RlOiBUaGVyZSBhcmUgbm8gaW5jbHVkZSBndWFyZHMuIFRoaXMgaXMgaW50ZW50aW9uYWwuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvYXNzZXJ0Lmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0vLwotLy8gU3RvcCBpbnNwZWN0IGNvbXBsYWluaW5nIGFib3V0IHVzZSBvZiAnYXNzZXJ0JzoKLS8vCi0vLyBib29zdGluc3BlY3Q6bmFhc3NlcnRfbWFjcm8KLS8vCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI3VuZGVmIE5ETkJPT1NUX0FTU0VSVAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX0FTU0VSVFMpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0FTU0VSVChleHByKSAoKHZvaWQpMCkKLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9FTkFCTEVfQVNTRVJUX0hBTkRMRVIpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIHZvaWQgYXNzZXJ0aW9uX2ZhaWxlZChjaGFyIGNvbnN0ICogZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBmdW5jdGlvbiwgY2hhciBjb25zdCAqIGZpbGUsIGxvbmcgbGluZSk7IC8vIHVzZXIgZGVmaW5lZAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9BU1NFUlQoZXhwcikgKChleHByKSBcCi0gID8gKCh2b2lkKTApIFwKLSAgOiA6Om5kbmJvb3N0Ojphc3NlcnRpb25fZmFpbGVkKCNleHByLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OLCBfX0ZJTEVfXywgX19MSU5FX18pKQotCi0jZWxzZQotIyBpbmNsdWRlIDxhc3NlcnQuaD4gLy8gLmggdG8gc3VwcG9ydCBvbGQgbGlicmFyaWVzIHcvbyA8Y2Fzc2VydD4gLSBlZmZlY3QgaXMgdGhlIHNhbWUKLSMgZGVmaW5lIE5ETkJPT1NUX0FTU0VSVChleHByKSBhc3NlcnQoZXhwcikKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlRfTVNHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgdW5kZWYgTkROQk9PU1RfQVNTRVJUX01TRwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX0FTU0VSVFMpIHx8IGRlZmluZWQoTkRFQlVHKQotCi0gICNkZWZpbmUgTkROQk9PU1RfQVNTRVJUX01TRyhleHByLCBtc2cpICgodm9pZCkwKQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0VOQUJMRV9BU1NFUlRfSEFORExFUikKLQotICAjaW5jbHVkZSA8bmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHA+Ci0KLSAgbmFtZXNwYWNlIG5kbmJvb3N0Ci0gIHsKLSAgICB2b2lkIGFzc2VydGlvbl9mYWlsZWRfbXNnKGNoYXIgY29uc3QgKiBleHByLCBjaGFyIGNvbnN0ICogbXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAqIGZ1bmN0aW9uLCBjaGFyIGNvbnN0ICogZmlsZSwgbG9uZyBsaW5lKTsgLy8gdXNlciBkZWZpbmVkCi0gIH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSAgI2RlZmluZSBORE5CT09TVF9BU1NFUlRfTVNHKGV4cHIsIG1zZykgKChleHByKSBcCi0gICAgPyAoKHZvaWQpMCkgXAotICAgIDogOjpuZG5ib29zdDo6YXNzZXJ0aW9uX2ZhaWxlZF9tc2coI2V4cHIsIG1zZywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiwgX19GSUxFX18sIF9fTElORV9fKSkKLQotI2Vsc2UKLSAgI2lmbmRlZiBORE5CT09TVF9BU1NFUlRfSFBQCi0gICAgI2RlZmluZSBORE5CT09TVF9BU1NFUlRfSFBQCi0gICAgI2luY2x1ZGUgPGNzdGRsaWI+Ci0gICAgI2luY2x1ZGUgPGlvc3RyZWFtPgotICAgICNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLQotICAgIC8vICBJREUncyBsaWtlIFZpc3VhbCBTdHVkaW8gcGVyZm9ybSBiZXR0ZXIgaWYgb3V0cHV0IGdvZXMgdG8gc3RkOjpjb3V0IG9yCi0gICAgLy8gIHNvbWUgb3RoZXIgc3RyZWFtLCBzbyBhbGxvdyB1c2VyIHRvIGNvbmZpZ3VyZSBvdXRwdXQgc3RyZWFtOgotICAgICNpZm5kZWYgTkROQk9PU1RfQVNTRVJUX01TR19PU1RSRUFNCi0gICAgIyBkZWZpbmUgTkROQk9PU1RfQVNTRVJUX01TR19PU1RSRUFNIHN0ZDo6Y2VycgotICAgICNlbmRpZgotCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0Ci0gICAgeyAKLSAgICAgIG5hbWVzcGFjZSBhc3NlcnRpb24gCi0gICAgICB7IAotICAgICAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgICBpbmxpbmUgdm9pZCBhc3NlcnRpb25fZmFpbGVkX21zZyhjaGFyIGNvbnN0ICogZXhwciwgY2hhciBjb25zdCAqIG1zZywgY2hhciBjb25zdCAqIGZ1bmN0aW9uLAotICAgICAgICAgICAgY2hhciBjb25zdCAqIGZpbGUsIGxvbmcgbGluZSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlRfTVNHX09TVFJFQU0KLSAgICAgICAgICAgICAgPDwgIioqKioqIEludGVybmFsIFByb2dyYW0gRXJyb3IgLSBhc3NlcnRpb24gKCIgPDwgZXhwciA8PCAiKSBmYWlsZWQgaW4gIgotICAgICAgICAgICAgICA8PCBmdW5jdGlvbiA8PCAiOlxuIgotICAgICAgICAgICAgICA8PCBmaWxlIDw8ICcoJyA8PCBsaW5lIDw8ICIpOiAiIDw8IG1zZyA8PCBzdGQ6OmVuZGw7Ci0JCQkjaWZkZWYgVU5ERVJfQ0UKLQkJCQkvLyBUaGUgV2luZG93cyBDRSBDUlQgbGlicmFyeSBkb2VzIG5vdCBoYXZlIGFib3J0KCkgc28gdXNlIGV4aXQoLTEpIGluc3RlYWQuCi0JCQkJc3RkOjpleGl0KC0xKTsKLQkJCSNlbHNlCi0JCQkJc3RkOjphYm9ydCgpOwotCQkJI2VuZGlmCi0gICAgICAgICAgfQotICAgICAgICB9IC8vIGRldGFpbAotICAgICAgfSAvLyBhc3NlcnRpb24KLSAgICB9IC8vIGRldGFpbAotICAjZW5kaWYKLQotICAjZGVmaW5lIE5ETkJPT1NUX0FTU0VSVF9NU0coZXhwciwgbXNnKSAoKGV4cHIpIFwKLSAgICA/ICgodm9pZCkwKSBcCi0gICAgOiA6Om5kbmJvb3N0Ojphc3NlcnRpb246OmRldGFpbDo6YXNzZXJ0aW9uX2ZhaWxlZF9tc2coI2V4cHIsIG1zZywgXAotICAgICAgICAgIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIF9fRklMRV9fLCBfX0xJTkVfXykpCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9WRVJJRlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jdW5kZWYgTkROQk9PU1RfVkVSSUZZCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfQVNTRVJUUykgfHwgKCAhZGVmaW5lZChORE5CT09TVF9FTkFCTEVfQVNTRVJUX0hBTkRMRVIpICYmIGRlZmluZWQoTkRFQlVHKSApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1ZFUklGWShleHByKSAoKHZvaWQpKGV4cHIpKQotCi0jZWxzZQotCi0jIGRlZmluZSBORE5CT09TVF9WRVJJRlkoZXhwcikgTkROQk9PU1RfQVNTRVJUKGV4cHIpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NTNjODcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgYmluZC5ocHAgLSBiaW5kcyBmdW5jdGlvbiBvYmplY3RzIHRvIGFyZ3VtZW50cwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDkgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmQuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZDk2YmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9BUFBMWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBhcHBseS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFI+IHN0cnVjdCBhcHBseQotewotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoRiAmIGYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEYgJiBmLCBBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShGICYgZiwgQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0JJTkRfQVBQTFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDIwZTdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX0FSR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9BUkdfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGJpbmQvYXJnLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8IGludCBJID4gc3RydWN0IGFyZwotewotICAgIGFyZygpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4gYXJnKCBUIGNvbnN0ICYgLyogdCAqLyApCi0gICAgewotICAgICAgICAvLyBzdGF0aWMgYXNzZXJ0IEkgPT0gaXNfcGxhY2Vob2xkZXI8VD46OnZhbHVlCi0gICAgICAgIHR5cGVkZWYgY2hhciBUX211c3RfYmVfcGxhY2Vob2xkZXJbIEkgPT0gaXNfcGxhY2Vob2xkZXI8VD46OnZhbHVlPyAxOiAtMSBdOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBpbnQgSSA+IGJvb2wgb3BlcmF0b3I9PSggYXJnPEk+IGNvbnN0ICYsIGFyZzxJPiBjb25zdCAmICkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGludCBJID4gc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBhcmc8ST4gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBJIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IEkgPiBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXI8IGFyZzxJPiAoKikgKCkgPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBJIH07Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9BUkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMGJiMmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc1MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9CSU5EX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBiaW5kLmhwcCAtIGJpbmRzIGZ1bmN0aW9uIG9iamVjdHMgdG8gYXJndW1lbnRzCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA0IFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIERhdmlkIEFicmFoYW1zCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA1IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWVtX2ZuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pc19wbGFjZWhvbGRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC92aXNpdF9lYWNoLmhwcD4KLQotLy8gQm9ybGFuZC1zcGVjaWZpYyBidWcsIHZpc2l0X2VhY2goKSBzaWxlbnRseSBmYWlscyB0byBwcm9kdWNlIGNvZGUKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCBuZG5ib29zdDo6dmlzaXRfZWFjaAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0ggdmlzaXRfZWFjaAotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL3N0b3JhZ2UuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgd2Vha19wdHI7Ci0KLW5hbWVzcGFjZSBfYmkgLy8gaW1wbGVtZW50YXRpb24gZGV0YWlscwotewotCi0vLyByZXN1bHRfdHJhaXRzCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEY+IHN0cnVjdCByZXN1bHRfdHJhaXRzCi17Ci0gICAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0KLXN0cnVjdCB1bnNwZWNpZmllZCB7fTsKLQotdGVtcGxhdGU8Y2xhc3MgRj4gc3RydWN0IHJlc3VsdF90cmFpdHM8dW5zcGVjaWZpZWQsIEY+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRj4gc3RydWN0IHJlc3VsdF90cmFpdHM8IHVuc3BlY2lmaWVkLCByZWZlcmVuY2Vfd3JhcHBlcjxGPiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjpyZXN1bHRfdHlwZSB0eXBlOwotfTsKLQotI2VuZGlmCi0KLS8vIHJlZl9jb21wYXJlCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgcmVmX2NvbXBhcmUoIFQgY29uc3QgJiBhLCBUIGNvbnN0ICYgYiwgbG9uZyApCi17Ci0gICAgcmV0dXJuIGEgPT0gYjsKLX0KLQotdGVtcGxhdGU8aW50IEk+IGJvb2wgcmVmX2NvbXBhcmUoIGFyZzxJPiBjb25zdCAmLCBhcmc8ST4gY29uc3QgJiwgaW50ICkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8aW50IEk+IGJvb2wgcmVmX2NvbXBhcmUoIGFyZzxJPiAoKikgKCksIGFyZzxJPiAoKikgKCksIGludCApCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgcmVmX2NvbXBhcmUoIHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgYSwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiBhLmdldF9wb2ludGVyKCkgPT0gYi5nZXRfcG9pbnRlcigpOwotfQotCi0vLyBiaW5kX3QgZm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgbGlzdE4KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gY2xhc3MgYmluZF90OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBib29sIHJlZl9jb21wYXJlKCBiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBhLCBiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoIGIgKTsKLX0KLQotLy8gdmFsdWUKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgdmFsdWUKLXsKLXB1YmxpYzoKLQotICAgIHZhbHVlKFQgY29uc3QgJiB0KTogdF8odCkge30KLQotICAgIFQgJiBnZXQoKSB7IHJldHVybiB0XzsgfQotICAgIFQgY29uc3QgJiBnZXQoKSBjb25zdCB7IHJldHVybiB0XzsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KHZhbHVlIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRfID09IHJocy50XzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBUIHRfOwotfTsKLQotLy8gcmVmX2NvbXBhcmUgZm9yIHdlYWtfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgcmVmX2NvbXBhcmUoIHZhbHVlPCB3ZWFrX3B0cjxUPiA+IGNvbnN0ICYgYSwgdmFsdWU8IHdlYWtfcHRyPFQ+ID4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiAhKGEuZ2V0KCkgPCBiLmdldCgpKSAmJiAhKGIuZ2V0KCkgPCBhLmdldCgpKTsKLX0KLQotLy8gdHlwZQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyB0eXBlIHt9OwotCi0vLyB1bndyYXAKLQotdGVtcGxhdGU8Y2xhc3MgRj4gc3RydWN0IHVud3JhcHBlcgotewotICAgIHN0YXRpYyBpbmxpbmUgRiAmIHVud3JhcCggRiAmIGYsIGxvbmcgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGY7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRjI+IHN0YXRpYyBpbmxpbmUgRjIgJiB1bndyYXAoIHJlZmVyZW5jZV93cmFwcGVyPEYyPiByZiwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZi5nZXQoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBzdGF0aWMgaW5saW5lIF9tZmk6OmRtPFIsIFQ+IHVud3JhcCggUiBUOjoqIHBtLCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9tZmk6OmRtPFIsIFQ+KCBwbSApOwotICAgIH0KLX07Ci0KLS8vIGxpc3ROCi0KLWNsYXNzIGxpc3QwCi17Ci1wdWJsaWM6Ci0KLSAgICBsaXN0MCgpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYpIGNvbnN0Ci0gICAgewotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0MCBjb25zdCAmKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLS8vIE1TVkMgaXMgYnJpZ2h0IGVub3VnaCB0byByZWFsaXNlIHRoYXQgdGhlIHBhcmFtZXRlciByaHMgCi0vLyBpbiBvcGVyYXRvcj09bWF5IGJlIHVudXNlZCBmb3Igc29tZSB0ZW1wbGF0ZSBhcmd1bWVudCB0eXBlczoKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZTwgY2xhc3MgQTEgPiBjbGFzcyBsaXN0MTogcHJpdmF0ZSBzdG9yYWdlMTwgQTEgPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTE8IEExID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBsaXN0MSggQTEgYTEgKTogYmFzZV90eXBlKCBhMSApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoIF9iaTo6dmFsdWU8VD4gJiB2ICkgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKCBfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdiApIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3QxIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZl9jb21wYXJlKGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwKTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgbG9naWNhbF9hbmQ7Ci1zdHJ1Y3QgbG9naWNhbF9vcjsKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBBMiA+IGNsYXNzIGxpc3QyOiBwcml2YXRlIHN0b3JhZ2UyPCBBMSwgQTIgPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTI8IEExLCBBMiA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDIoIEExIGExLCBBMiBhMiApOiBiYXNlX3R5cGUoIGExLCBhMiApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYgYSwgbG9uZykKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gYm9vbCBvcGVyYXRvcigpKCB0eXBlPGJvb2w+LCBsb2dpY2FsX2FuZCAmIC8qZiovLCBBICYgYSwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhWyBiYXNlX3R5cGU6OmExXyBdICYmIGFbIGJhc2VfdHlwZTo6YTJfIF07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gYm9vbCBvcGVyYXRvcigpKCB0eXBlPGJvb2w+LCBsb2dpY2FsX2FuZCBjb25zdCAmIC8qZiovLCBBICYgYSwgaW50ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhWyBiYXNlX3R5cGU6OmExXyBdICYmIGFbIGJhc2VfdHlwZTo6YTJfIF07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gYm9vbCBvcGVyYXRvcigpKCB0eXBlPGJvb2w+LCBsb2dpY2FsX29yICYgLypmKi8sIEEgJiBhLCBpbnQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFbIGJhc2VfdHlwZTo6YTFfIF0gfHwgYVsgYmFzZV90eXBlOjphMl8gXTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBPiBib29sIG9wZXJhdG9yKCkoIHR5cGU8Ym9vbD4sIGxvZ2ljYWxfb3IgY29uc3QgJiAvKmYqLywgQSAmIGEsIGludCApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYVsgYmFzZV90eXBlOjphMV8gXSB8fCBhWyBiYXNlX3R5cGU6OmEyXyBdOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3QyIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZl9jb21wYXJlKGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwKSAmJiByZWZfY29tcGFyZShiYXNlX3R5cGU6OmEyXywgcmhzLmEyXywgMCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPiBjbGFzcyBsaXN0MzogcHJpdmF0ZSBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDMoIEExIGExLCBBMiBhMiwgQTMgYTMgKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0MyBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotICAgICAgICAgICAgCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+IGNsYXNzIGxpc3Q0OiBwcml2YXRlIHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBBNCA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlNDwgQTEsIEEyLCBBMywgQTQgPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGxpc3Q0KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCApOiBiYXNlX3R5cGUoIGExLCBhMiwgYTMsIGE0ICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+ICgqKSAoKSkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCBjb25zdCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QgJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgJiBmLCBBICYgYSwgbG9uZykKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgJiBmLCBBICYgYSwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGludCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0NCBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNF8sIHJocy5hNF8sIDAgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4gY2xhc3MgbGlzdDU6IHByaXZhdGUgc3RvcmFnZTU8IEExLCBBMiwgQTMsIEE0LCBBNSA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIEE1ID4gYmFzZV90eXBlOwotCi1wdWJsaWM6Ci0KLSAgICBsaXN0NSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1ICk6IGJhc2VfdHlwZSggYTEsIGEyLCBhMywgYTQsIGE1ICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNV87IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHZvaWQgb3BlcmF0b3IoKSh0eXBlPHZvaWQ+LCBGICYgZiwgQSAmIGEsIGludCkKLSAgICB7Ci0gICAgICAgIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0NSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNF8sIHJocy5hNF8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTVfLCByaHMuYTVfLCAwICk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gY2xhc3MgbGlzdDY6IHByaXZhdGUgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGxpc3Q2KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2ICk6IGJhc2VfdHlwZSggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiApIHt9Ci0KLSAgICBBMSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDE+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphM187IH0KLSAgICBBNCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDQ+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNl87IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE2XzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGIGNvbnN0ICYgZiwgQSAmIGEsIGxvbmcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgJiBmLCBBICYgYSwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBiYXNlX3R5cGU6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0obGlzdDYgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTFfLCByaHMuYTFfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEyXywgcmhzLmEyXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphM18sIHJocy5hM18sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTRfLCByaHMuYTRfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE1XywgcmhzLmE1XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNl8sIHJocy5hNl8sIDAgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gY2xhc3MgbGlzdDc6IHByaXZhdGUgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3ID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2U3PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDcoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3ICk6IGJhc2VfdHlwZSggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphN187IH0KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmExXzsgfQotICAgIEEyIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE0XzsgfQotICAgIEE1IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8NT4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE2XzsgfQotICAgIEE3IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nz4gKCopICgpKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE3XzsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKF9iaTo6dmFsdWU8VD4gJiB2KSBjb25zdCB7IHJldHVybiB2LmdldCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUIGNvbnN0ICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgJiBvcGVyYXRvcltdIChyZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHR5cGVuYW1lIHJlc3VsdF90cmFpdHM8UiwgRj46OnR5cGUgb3BlcmF0b3JbXSAoYmluZF90PFIsIEYsIEw+ICYgYikgY29uc3QgeyByZXR1cm4gYi5ldmFsKCp0aGlzKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiAmIGYsIEEgJiBhLCBsb25nKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGPjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgY29uc3QgJiBmLCBBICYgYSwgaW50KSBjb25zdAotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEYgY29uc3Q+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3Q3IGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE0XywgcmhzLmE0XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNV8sIHJocy5hNV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTZfLCByaHMuYTZfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE3XywgcmhzLmE3XywgMCApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggPiBjbGFzcyBsaXN0ODogcHJpdmF0ZSBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4ID4KLXsKLXByaXZhdGU6Ci0KLSAgICB0eXBlZGVmIHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTggPiBiYXNlX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGxpc3Q4KCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTggKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTggKSB7fQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMV87IH0KLSAgICBBMiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDI+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEyXzsgfQotICAgIEEzIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Mz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNF87IH0KLSAgICBBNSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDU+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE1XzsgfQotICAgIEE2IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nj4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphN187IH0KLSAgICBBOCBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDg+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE4XzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTdfOyB9Ci0gICAgQTggb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw4PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YThfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10sIGFbYmFzZV90eXBlOjphOF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBPiBSIG9wZXJhdG9yKCkodHlwZTxSPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBsb25nKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVud3JhcHBlcjxGIGNvbnN0Pjo6dW53cmFwKGYsIDApKGFbYmFzZV90eXBlOjphMV9dLCBhW2Jhc2VfdHlwZTo6YTJfXSwgYVtiYXNlX3R5cGU6OmEzX10sIGFbYmFzZV90eXBlOjphNF9dLCBhW2Jhc2VfdHlwZTo6YTVfXSwgYVtiYXNlX3R5cGU6OmE2X10sIGFbYmFzZV90eXBlOjphN19dLCBhW2Jhc2VfdHlwZTo6YThfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQT4gdm9pZCBvcGVyYXRvcigpKHR5cGU8dm9pZD4sIEYgJiBmLCBBICYgYSwgaW50KQotICAgIHsKLSAgICAgICAgdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10sIGFbYmFzZV90eXBlOjphOF9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGxpc3Q4IGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmExXywgcmhzLmExXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMl8sIHJocy5hMl8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTNfLCByaHMuYTNfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE0XywgcmhzLmE0XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNV8sIHJocy5hNV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTZfLCByaHMuYTZfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE3XywgcmhzLmE3XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphOF8sIHJocy5hOF8sIDAgKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiBjbGFzcyBsaXN0OTogcHJpdmF0ZSBzdG9yYWdlOTwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSA+Ci17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiBzdG9yYWdlOTwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSA+IGJhc2VfdHlwZTsKLQotcHVibGljOgotCi0gICAgbGlzdDkoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkgKTogYmFzZV90eXBlKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5ICkge30KLQotICAgIEExIG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8MT4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphMl87IH0KLSAgICBBMyBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDM+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmEzXzsgfQotICAgIEE0IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8ND4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphNV87IH0KLSAgICBBNiBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDY+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE2XzsgfQotICAgIEE3IG9wZXJhdG9yW10gKG5kbmJvb3N0Ojphcmc8Nz4pIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTdfOyB9Ci0gICAgQTggb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw4PikgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjphOF87IH0KLSAgICBBOSBvcGVyYXRvcltdIChuZG5ib29zdDo6YXJnPDk+KSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OmE5XzsgfQotCi0gICAgQTEgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwxPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTFfOyB9Ci0gICAgQTIgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwyPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTJfOyB9Ci0gICAgQTMgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzwzPiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTNfOyB9Ci0gICAgQTQgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw0PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTRfOyB9Ci0gICAgQTUgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw1PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTVfOyB9Ci0gICAgQTYgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw2PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTZfOyB9Ci0gICAgQTcgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw3PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTdfOyB9Ci0gICAgQTggb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw4PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YThfOyB9Ci0gICAgQTkgb3BlcmF0b3JbXSAobmRuYm9vc3Q6OmFyZzw5PiAoKikgKCkpIGNvbnN0IHsgcmV0dXJuIGJhc2VfdHlwZTo6YTlfOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUICYgb3BlcmF0b3JbXSAoX2JpOjp2YWx1ZTxUPiAmIHYpIGNvbnN0IHsgcmV0dXJuIHYuZ2V0KCk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFQgY29uc3QgJiBvcGVyYXRvcltdIChfYmk6OnZhbHVlPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCAmIG9wZXJhdG9yW10gKHJlZmVyZW5jZV93cmFwcGVyPFQ+IGNvbnN0ICYgdikgY29uc3QgeyByZXR1cm4gdi5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSBvcGVyYXRvcltdIChiaW5kX3Q8UiwgRiwgTD4gJiBiKSBjb25zdCB7IHJldHVybiBiLmV2YWwoKnRoaXMpOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB0eXBlbmFtZSByZXN1bHRfdHJhaXRzPFIsIEY+Ojp0eXBlIG9wZXJhdG9yW10gKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIpIGNvbnN0IHsgcmV0dXJuIGIuZXZhbCgqdGhpcyk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEE+IFIgb3BlcmF0b3IoKSh0eXBlPFI+LCBGICYgZiwgQSAmIGEsIGxvbmcpCi0gICAgewotICAgICAgICByZXR1cm4gdW53cmFwcGVyPEY+Ojp1bndyYXAoZiwgMCkoYVtiYXNlX3R5cGU6OmExX10sIGFbYmFzZV90eXBlOjphMl9dLCBhW2Jhc2VfdHlwZTo6YTNfXSwgYVtiYXNlX3R5cGU6OmE0X10sIGFbYmFzZV90eXBlOjphNV9dLCBhW2Jhc2VfdHlwZTo6YTZfXSwgYVtiYXNlX3R5cGU6OmE3X10sIGFbYmFzZV90eXBlOjphOF9dLCBhW2Jhc2VfdHlwZTo6YTlfXSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQT4gUiBvcGVyYXRvcigpKHR5cGU8Uj4sIEYgY29uc3QgJiBmLCBBICYgYSwgbG9uZykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10sIGFbYmFzZV90eXBlOjphOV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiAmIGYsIEEgJiBhLCBpbnQpCi0gICAgewotICAgICAgICB1bndyYXBwZXI8Rj46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10sIGFbYmFzZV90eXBlOjphOV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBPiB2b2lkIG9wZXJhdG9yKCkodHlwZTx2b2lkPiwgRiBjb25zdCAmIGYsIEEgJiBhLCBpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bndyYXBwZXI8RiBjb25zdD46OnVud3JhcChmLCAwKShhW2Jhc2VfdHlwZTo6YTFfXSwgYVtiYXNlX3R5cGU6OmEyX10sIGFbYmFzZV90eXBlOjphM19dLCBhW2Jhc2VfdHlwZTo6YTRfXSwgYVtiYXNlX3R5cGU6OmE1X10sIGFbYmFzZV90eXBlOjphNl9dLCBhW2Jhc2VfdHlwZTo6YTdfXSwgYVtiYXNlX3R5cGU6OmE4X10sIGFbYmFzZV90eXBlOjphOV9dKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShsaXN0OSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybgotCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphMV8sIHJocy5hMV8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTJfLCByaHMuYTJfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmEzXywgcmhzLmEzXywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphNF8sIHJocy5hNF8sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YTVfLCByaHMuYTVfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE2XywgcmhzLmE2XywgMCApICYmCi0gICAgICAgICAgICByZWZfY29tcGFyZSggYmFzZV90eXBlOjphN18sIHJocy5hN18sIDAgKSAmJgotICAgICAgICAgICAgcmVmX2NvbXBhcmUoIGJhc2VfdHlwZTo6YThfLCByaHMuYThfLCAwICkgJiYKLSAgICAgICAgICAgIHJlZl9jb21wYXJlKCBiYXNlX3R5cGU6OmE5XywgcmhzLmE5XywgMCApOwotICAgIH0KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vIGJpbmRfdAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBjbGFzcyBiaW5kX3QKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgYmluZF90IHRoaXNfdHlwZTsKLQotICAgIGJpbmRfdChGIGYsIEwgY29uc3QgJiBsKTogZl8oZiksIGxfKGwpIHt9Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9SRVRVUk4gcmV0dXJuCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9CSU5EX1JFVFVSTgotCi19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBSPiBzdHJ1Y3QgYmluZF90X2dlbmVyYXRvcgotewotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBMPiBjbGFzcyBpbXBsZW1lbnRhdGlvbgotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBpbXBsZW1lbnRhdGlvbiB0aGlzX3R5cGU7Ci0KLSAgICBpbXBsZW1lbnRhdGlvbihGIGYsIEwgY29uc3QgJiBsKTogZl8oZiksIGxfKGwpIHt9Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9SRVRVUk4gcmV0dXJuCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9CSU5EX1JFVFVSTgotCi19OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaW5kX3RfZ2VuZXJhdG9yPHZvaWQ+Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEw+IGNsYXNzIGltcGxlbWVudGF0aW9uCi17Ci1wcml2YXRlOgotCi0gICAgdHlwZWRlZiB2b2lkIFI7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgaW1wbGVtZW50YXRpb24gdGhpc190eXBlOwotCi0gICAgaW1wbGVtZW50YXRpb24oRiBmLCBMIGNvbnN0ICYgbCk6IGZfKGYpLCBsXyhsKSB7fQotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfUkVUVVJOCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX3RlbXBsYXRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9CSU5EX1JFVFVSTgotCi19OwotCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBSMiwgY2xhc3MgRiwgY2xhc3MgTD4gY2xhc3MgYmluZF90OiBwdWJsaWMgYmluZF90X2dlbmVyYXRvcjxSMj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbXBsZW1lbnRhdGlvbjxGLCBMPgotewotcHVibGljOgotCi0gICAgYmluZF90KEYgZiwgTCBjb25zdCAmIGwpOiBiaW5kX3RfZ2VuZXJhdG9yPFIyPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGltcGxlbWVudGF0aW9uPEYsIEw+KGYsIGwpIHt9Ci0KLX07Ci0KLSNlbmRpZgotCi0vLyBmdW5jdGlvbl9lcXVhbAotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLQotLy8gcHV0IG92ZXJsb2FkcyBpbiBfYmksIHJlbHkgb24gQURMCi0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IGJvb2wgZnVuY3Rpb25fZXF1YWwoIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGEsIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoYik7Ci19Ci0KLSMgZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBib29sIGZ1bmN0aW9uX2VxdWFsX2ltcGwoIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGEsIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIsIGludCApCi17Ci0gICAgcmV0dXJuIGEuY29tcGFyZShiKTsKLX0KLQotIyBlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLQotLy8gcHV0IG92ZXJsb2FkcyBpbiBib29zdAotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotIyBpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgTD4gYm9vbCBmdW5jdGlvbl9lcXVhbCggX2JpOjpiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBhLCBfYmk6OmJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGIgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoYik7Ci19Ci0KLSMgZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBib29sIGZ1bmN0aW9uX2VxdWFsX2ltcGwoIF9iaTo6YmluZF90PFIsIEYsIEw+IGNvbnN0ICYgYSwgX2JpOjpiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBiLCBpbnQgKQotewotICAgIHJldHVybiBhLmNvbXBhcmUoYik7Ci19Ci0KLSMgZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi1uYW1lc3BhY2UgX2JpCi17Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0KLS8vIGFkZF92YWx1ZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgfHwgKF9fU1VOUFJPX0NDID49IDB4NTMwKQotCi0jaWYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZF92YWx1ZQotewotICAgIHR5cGVkZWYgX2JpOjp2YWx1ZTxUPiB0eXBlOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGludCBJID4gc3RydWN0IGFkZF92YWx1ZV8yCi17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6YXJnPEk+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfdmFsdWVfMjwgVCwgMCA+Ci17Ci0gICAgdHlwZWRlZiBfYmk6OnZhbHVlPCBUID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZV8yPCBULCBuZG5ib29zdDo6aXNfcGxhY2Vob2xkZXI8IFQgPjo6dmFsdWUgPjo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWU8IHZhbHVlPFQ+ID4KLXsKLSAgICB0eXBlZGVmIF9iaTo6dmFsdWU8VD4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWU8IHJlZmVyZW5jZV93cmFwcGVyPFQ+ID4KLXsKLSAgICB0eXBlZGVmIHJlZmVyZW5jZV93cmFwcGVyPFQ+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgST4gc3RydWN0IGFkZF92YWx1ZTwgYXJnPEk+ID4KLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojphcmc8ST4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBJPiBzdHJ1Y3QgYWRkX3ZhbHVlPCBhcmc8ST4gKCopICgpID4KLXsKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojphcmc8ST4gKCp0eXBlKSAoKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHN0cnVjdCBhZGRfdmFsdWU8IGJpbmRfdDxSLCBGLCBMPiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kX3Q8UiwgRiwgTD4gdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPGludCBJPiBzdHJ1Y3QgX2F2dF8wOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBfYXZ0XzA8MT4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgaW5uZXIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBfYXZ0XzA8Mj4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgaW5uZXIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmFsdWU8VD4gdHlwZTsKLSAgICB9OwotfTsKLQotdHlwZWRlZiBjaGFyICgmX2F2dF9yMSkgWzFdOwotdHlwZWRlZiBjaGFyICgmX2F2dF9yMikgWzJdOwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBfYXZ0X3IxIF9hdnRfZih2YWx1ZTxUPik7Ci10ZW1wbGF0ZTxjbGFzcyBUPiBfYXZ0X3IxIF9hdnRfZihyZWZlcmVuY2Vfd3JhcHBlcjxUPik7Ci10ZW1wbGF0ZTxpbnQgST4gX2F2dF9yMSBfYXZ0X2YoYXJnPEk+KTsKLXRlbXBsYXRlPGludCBJPiBfYXZ0X3IxIF9hdnRfZihhcmc8ST4gKCopICgpKTsKLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IF9hdnRfcjEgX2F2dF9mKGJpbmRfdDxSLCBGLCBMPik7Ci0KLV9hdnRfcjIgX2F2dF9mKC4uLik7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRfdmFsdWUKLXsKLSAgICBzdGF0aWMgVCB0KCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYXZ0XzA8c2l6ZW9mKF9hdnRfZih0KCkpKT46OnRlbXBsYXRlIGlubmVyPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotLy8gbGlzdF9hdl9OCi0KLXRlbXBsYXRlPGNsYXNzIEExPiBzdHJ1Y3QgbGlzdF9hdl8xCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgbGlzdDE8QjE+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCBsaXN0X2F2XzIKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgbGlzdDI8QjEsIEIyPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gc3RydWN0IGxpc3RfYXZfMwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgbGlzdDM8QjEsIEIyLCBCMz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBzdHJ1Y3QgbGlzdF9hdl80Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMz46OnR5cGUgQjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTQ+Ojp0eXBlIEI0OwotICAgIHR5cGVkZWYgbGlzdDQ8QjEsIEIyLCBCMywgQjQ+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHN0cnVjdCBsaXN0X2F2XzUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEzPjo6dHlwZSBCMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBND46OnR5cGUgQjQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTU+Ojp0eXBlIEI1OwotICAgIHR5cGVkZWYgbGlzdDU8QjEsIEIyLCBCMywgQjQsIEI1PiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gc3RydWN0IGxpc3RfYXZfNgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE0Pjo6dHlwZSBCNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNT46OnR5cGUgQjU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTY+Ojp0eXBlIEI2OwotICAgIHR5cGVkZWYgbGlzdDY8QjEsIEIyLCBCMywgQjQsIEI1LCBCNj4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBzdHJ1Y3QgbGlzdF9hdl83Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTE+Ojp0eXBlIEIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEyPjo6dHlwZSBCMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMz46OnR5cGUgQjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTQ+Ojp0eXBlIEI0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE1Pjo6dHlwZSBCNTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNj46OnR5cGUgQjY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTc+Ojp0eXBlIEI3OwotICAgIHR5cGVkZWYgbGlzdDc8QjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHN0cnVjdCBsaXN0X2F2XzgKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMT46OnR5cGUgQjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlIEIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEEzPjo6dHlwZSBCMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBND46OnR5cGUgQjQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTU+Ojp0eXBlIEI1OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE2Pjo6dHlwZSBCNjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNz46OnR5cGUgQjc7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTg+Ojp0eXBlIEI4OwotICAgIHR5cGVkZWYgbGlzdDg8QjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gc3RydWN0IGxpc3RfYXZfOQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEExPjo6dHlwZSBCMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTM+Ojp0eXBlIEIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE0Pjo6dHlwZSBCNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBNT46OnR5cGUgQjU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTY+Ojp0eXBlIEI2OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3ZhbHVlPEE3Pjo6dHlwZSBCNzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBOD46OnR5cGUgQjg7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfdmFsdWU8QTk+Ojp0eXBlIEI5OwotICAgIHR5cGVkZWYgbGlzdDk8QjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4LCBCOT4gdHlwZTsKLX07Ci0KLS8vIG9wZXJhdG9yIQotCi1zdHJ1Y3QgbG9naWNhbF9ub3QKLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBib29sIG9wZXJhdG9yKCkoViBjb25zdCAmIHYpIGNvbnN0IHsgcmV0dXJuICF2OyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPgotICAgIGJpbmRfdDwgYm9vbCwgbG9naWNhbF9ub3QsIGxpc3QxPCBiaW5kX3Q8UiwgRiwgTD4gPiA+Ci0gICAgb3BlcmF0b3IhIChiaW5kX3Q8UiwgRiwgTD4gY29uc3QgJiBmKQotewotICAgIHR5cGVkZWYgbGlzdDE8IGJpbmRfdDxSLCBGLCBMPiA+IGxpc3RfdHlwZTsKLSAgICByZXR1cm4gYmluZF90PGJvb2wsIGxvZ2ljYWxfbm90LCBsaXN0X3R5cGU+ICggbG9naWNhbF9ub3QoKSwgbGlzdF90eXBlKGYpICk7Ci19Ci0KLS8vIHJlbGF0aW9uYWwgb3BlcmF0b3JzCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9PUEVSQVRPUiggb3AsIG5hbWUgKSBcCi1cCi1zdHJ1Y3QgbmFtZSBcCi17IFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBXPiBib29sIG9wZXJhdG9yKCkoViBjb25zdCAmIHYsIFcgY29uc3QgJiB3KSBjb25zdCB7IHJldHVybiB2IG9wIHc7IH0gXAotfTsgXAotIFwKLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEwsIGNsYXNzIEEyPiBcCi0gICAgYmluZF90PCBib29sLCBuYW1lLCBsaXN0MjwgYmluZF90PFIsIEYsIEw+LCB0eXBlbmFtZSBhZGRfdmFsdWU8QTI+Ojp0eXBlID4gPiBcCi0gICAgb3BlcmF0b3Igb3AgKGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIGYsIEEyIGEyKSBcCi17IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF92YWx1ZTxBMj46OnR5cGUgQjI7IFwKLSAgICB0eXBlZGVmIGxpc3QyPCBiaW5kX3Q8UiwgRiwgTD4sIEIyPiBsaXN0X3R5cGU7IFwKLSAgICByZXR1cm4gYmluZF90PGJvb2wsIG5hbWUsIGxpc3RfdHlwZT4gKCBuYW1lKCksIGxpc3RfdHlwZShmLCBhMikgKTsgXAotfQotCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA9PSwgZXF1YWwgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggIT0sIG5vdF9lcXVhbCApCi0KLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoIDwsIGxlc3MgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPD0sIGxlc3NfZXF1YWwgKQotCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA+LCBncmVhdGVyICkKLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoID49LCBncmVhdGVyX2VxdWFsICkKLQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggJiYsIGxvZ2ljYWxfYW5kICkKLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoIHx8LCBsb2dpY2FsX29yICkKLQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfT1BFUkFUT1IKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLQotLy8gcmVzb2x2ZSBhbWJpZ3VpdHkgd2l0aCByZWxfb3BzCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9PUEVSQVRPUiggb3AsIG5hbWUgKSBcCi1cCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBcCi0gICAgYmluZF90PCBib29sLCBuYW1lLCBsaXN0MjwgYmluZF90PFIsIEYsIEw+LCBiaW5kX3Q8UiwgRiwgTD4gPiA+IFwKLSAgICBvcGVyYXRvciBvcCAoYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgZiwgYmluZF90PFIsIEYsIEw+IGNvbnN0ICYgZykgXAoteyBcCi0gICAgdHlwZWRlZiBsaXN0MjwgYmluZF90PFIsIEYsIEw+LCBiaW5kX3Q8UiwgRiwgTD4gPiBsaXN0X3R5cGU7IFwKLSAgICByZXR1cm4gYmluZF90PGJvb2wsIG5hbWUsIGxpc3RfdHlwZT4gKCBuYW1lKCksIGxpc3RfdHlwZShmLCBnKSApOyBcCi19Ci0KLU5ETkJPT1NUX0JJTkRfT1BFUkFUT1IoICE9LCBub3RfZXF1YWwgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPD0sIGxlc3NfZXF1YWwgKQotTkROQk9PU1RfQklORF9PUEVSQVRPUiggPiwgZ3JlYXRlciApCi1ORE5CT09TVF9CSU5EX09QRVJBVE9SKCA+PSwgZ3JlYXRlcl9lcXVhbCApCi0KLSNlbmRpZgotCi0vLyB2aXNpdF9lYWNoLCBBREwKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQICkgJiYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIFwKLSAgICYmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8PSAzKQotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiB2b2lkIHZpc2l0X2VhY2goIFYgJiB2LCB2YWx1ZTxUPiBjb25zdCAmIHQsIGludCApCi17Ci0gICAgdXNpbmcgbmRuYm9vc3Q6OnZpc2l0X2VhY2g7Ci0gICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKCB2LCB0LmdldCgpLCAwICk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEw+IHZvaWQgdmlzaXRfZWFjaCggViAmIHYsIGJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIHQsIGludCApCi17Ci0gICAgdC5hY2NlcHQoIHYgKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIF9iaQotCi0vLyB2aXNpdF9lYWNoLCBubyBBREwKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAgKSB8fCBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSBcCi0gIHx8IChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fIDw9IDMpCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHZvaWQgdmlzaXRfZWFjaCggViAmIHYsIF9iaTo6dmFsdWU8VD4gY29uc3QgJiB0LCBpbnQgKQotewotICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCggdiwgdC5nZXQoKSwgMCApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiB2b2lkIHZpc2l0X2VhY2goIFYgJiB2LCBfYmk6OmJpbmRfdDxSLCBGLCBMPiBjb25zdCAmIHQsIGludCApCi17Ci0gICAgdC5hY2NlcHQoIHYgKTsKLX0KLQotI2VuZGlmCi0KLS8vIGlzX2JpbmRfZXhwcmVzc2lvbgotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBpc19iaW5kX2V4cHJlc3Npb24KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMCB9OwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEwgPiBzdHJ1Y3QgaXNfYmluZF9leHByZXNzaW9uPCBfYmk6OmJpbmRfdDwgUiwgRiwgTCA+ID4KLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMSB9OwotfTsKLQotI2VuZGlmCi0KLS8vIGJpbmQKLQotI2lmbmRlZiBORE5CT09TVF9CSU5ECi0jZGVmaW5lIE5ETkJPT1NUX0JJTkQgYmluZAotI2VuZGlmCi0KLS8vIGdlbmVyaWMgZnVuY3Rpb24gb2JqZWN0cwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGPgotICAgIF9iaTo6YmluZF90PFIsIEYsIF9iaTo6bGlzdDA+Ci0gICAgTkROQk9PU1RfQklORChGIGYpCi17Ci0gICAgdHlwZWRlZiBfYmk6Omxpc3QwIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oZiwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLS8vIGdlbmVyaWMgZnVuY3Rpb24gb2JqZWN0cywgYWx0ZXJuYXRpdmUgc3ludGF4Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgX2JpOjpsaXN0MD4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYpCi17Ci0gICAgdHlwZWRlZiBfYmk6Omxpc3QwIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFI+LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFIsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEYsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSPiwgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLQotLy8gYWRhcHRhYmxlIGZ1bmN0aW9uIG9iamVjdHMKLQotdGVtcGxhdGU8Y2xhc3MgRj4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBfYmk6Omxpc3QwPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmKQotewotICAgIHR5cGVkZWYgX2JpOjpsaXN0MCBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZSgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoRiBmLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIGxpc3RfdHlwZT4gKGYsIGxpc3RfdHlwZShhMSwgYTIpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMykKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBGLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PF9iaTo6dW5zcGVjaWZpZWQsIEYsIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCBsaXN0X3R5cGU+KGYsIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxfYmk6OnVuc3BlY2lmaWVkLCBGLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8X2JpOjp1bnNwZWNpZmllZCwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0KLS8vIGZ1bmN0aW9uIHBvaW50ZXJzCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9DQwotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9DQwotI3VuZGVmIE5ETkJPT1NUX0JJTkRfU1QKLQotI2lmZGVmIE5ETkJPT1NUX0JJTkRfRU5BQkxFX1NURENBTEwKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX0NDIF9fc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9DQwotI3VuZGVmIE5ETkJPT1NUX0JJTkRfU1QKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9CSU5EX0VOQUJMRV9GQVNUQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfQ0MgX19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9DQwotI3VuZGVmIE5ETkJPT1NUX0JJTkRfU1QKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9CSU5EX0VOQUJMRV9QQVNDQUwKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUIHBhc2NhbAotI2RlZmluZSBORE5CT09TVF9CSU5EX0NDCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9TVAotI3VuZGVmIE5ETkJPT1NUX0JJTkRfQ0MKLQotI2VuZGlmCi0KLS8vIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycwotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfTkFNRShYKSBYCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZl9jYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mMl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX05BTUUKLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX0NDCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9OQU1FKFgpIFgjI19jZGVjbAotI2RlZmluZSBORE5CT09TVF9CSU5EX01GX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZl9jYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mMl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX05BTUUKLSN1bmRlZiBORE5CT09TVF9CSU5EX01GX0NDCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRl9OQU1FKFgpIFgjI19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvYmluZF9tZjJfY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfQklORF9NRl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfQklORF9NRl9DQwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9CSU5EX01GX05BTUUoWCkgWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkRfTUZfQ0MgX19mYXN0Y2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9iaW5kX21mX2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfTkFNRQotI3VuZGVmIE5ETkJPT1NUX0JJTkRfTUZfQ0MKLQotI2VuZGlmCi0KLS8vIGRhdGEgbWVtYmVyIHBvaW50ZXJzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAgICB8fCAoIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCggMHg2MjAgKSApICkKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTE+Ci1fYmk6OmJpbmRfdDwgUiwgX21maTo6ZG08UiwgVD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSA+Ci0gICAgTkROQk9PU1RfQklORChSIFQ6OipmLCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6OmRtPFIsIFQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KCBGKGYpLCBsaXN0X3R5cGUoYTEpICk7Ci19Ci0KLSNlbHNlCi0KLW5hbWVzcGFjZSBfYmkKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFBtLCBpbnQgSSA+IHN0cnVjdCBhZGRfY3JlZjsKLQotdGVtcGxhdGU8IGNsYXNzIE0sIGNsYXNzIFQgPiBzdHJ1Y3QgYWRkX2NyZWY8IE0gVDo6KiwgMCA+Ci17Ci0gICAgdHlwZWRlZiBNIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgTSwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfY3JlZjwgTSBUOjoqLCAxID4KLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODApCi0jZW5kaWYKLSAgICB0eXBlZGVmIE0gY29uc3QgJiB0eXBlOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBSLCBjbGFzcyBUID4gc3RydWN0IGFkZF9jcmVmPCBSIChUOjoqKSAoKSwgMSA+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoX19JQk1DUFBfXykgfHwgX19JQk1DUFBfRlVOQ19DVl9UTVBMX0FSR19ERURVQ1RJT04KLQotdGVtcGxhdGU8IGNsYXNzIFIsIGNsYXNzIFQgPiBzdHJ1Y3QgYWRkX2NyZWY8IFIgKFQ6OiopICgpIGNvbnN0LCAxID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBfX0lCTUNQUF9fCi0KLXRlbXBsYXRlPGNsYXNzIFI+IHN0cnVjdCBpc3JlZgotewotICAgIGVudW0gdmFsdWVfdHlwZSB7IHZhbHVlID0gMCB9OwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUj4gc3RydWN0IGlzcmVmPCBSJiA+Ci17Ci0gICAgZW51bSB2YWx1ZV90eXBlIHsgdmFsdWUgPSAxIH07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSPiBzdHJ1Y3QgaXNyZWY8IFIqID4KLXsKLSAgICBlbnVtIHZhbHVlX3R5cGUgeyB2YWx1ZSA9IDEgfTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFBtLCBjbGFzcyBBMT4gc3RydWN0IGRtX3Jlc3VsdAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2NyZWY8IFBtLCAxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFBtLCBjbGFzcyBSLCBjbGFzcyBGLCBjbGFzcyBMPiBzdHJ1Y3QgZG1fcmVzdWx0PCBQbSwgYmluZF90PFIsIEYsIEw+ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJpbmRfdDxSLCBGLCBMPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfY3JlZjwgUG0sIGlzcmVmPCByZXN1bHRfdHlwZSA+Ojp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotdGVtcGxhdGU8IGNsYXNzIEExLCBjbGFzcyBNLCBjbGFzcyBUID4KLQotX2JpOjpiaW5kX3Q8Ci0gICAgdHlwZW5hbWUgX2JpOjpkbV9yZXN1bHQ8IE0gVDo6KiwgQTEgPjo6dHlwZSwKLSAgICBfbWZpOjpkbTxNLCBUPiwKLSAgICB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUKLT4KLQotTkROQk9PU1RfQklORCggTSBUOjoqZiwgQTEgYTEgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpkbV9yZXN1bHQ8IE0gVDo6KiwgQTEgPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIF9tZmk6OmRtPE0sIFQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDwgcmVzdWx0X3R5cGUsIEYsIGxpc3RfdHlwZSA+KCBGKCBmICksIGxpc3RfdHlwZSggYTEgKSApOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9CSU5EX05PX1BMQUNFSE9MREVSUwotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2JpbmQvcGxhY2Vob2xkZXJzLmhwcD4KLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9CSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjk1ZTZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vLwotLy8gIGJpbmQvYmluZF9jYy5ocHAgLSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucwotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopICgpLCBfYmk6Omxpc3QwPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoKSkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKCk7Ci0gICAgdHlwZWRlZiBfYmk6Omxpc3QwIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPiAoZiwgbGlzdF90eXBlKCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBCMSwgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxKSwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICopIChCMSwgQjIpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyKSwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+IChmLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMyksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMyksIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIsIEIzLCBCNCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyLCBCMywgQjQpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1KSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxLCBCMiwgQjMsIEI0LCBCNSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLAotICAgIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpLCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNyksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpGKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KSwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqRikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4LCBjbGFzcyBCOSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICAgIF9iaTo6YmluZF90PFIsIE5ETkJPT1NUX0JJTkRfU1QgUiAoTkROQk9PU1RfQklORF9DQyAqKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4LCBCOSksIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoTkROQk9PU1RfQklORF9TVCBSIChORE5CT09TVF9CSU5EX0NDICpmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4LCBCOSksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9CSU5EX1NUIFIgKE5ETkJPT1NUX0JJTkRfQ0MgKkYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgsIEI5KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihmLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX21mMl9jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2M2RlZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWYyX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vLwotLy8gIGJpbmQvYmluZF9tZjJfY2MuaHBwIC0gbWVtYmVyIGZ1bmN0aW9ucywgdHlwZTw+IHN5bnRheAotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9iaW5kLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0vLyAwCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjApPFIsIFQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoKSwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYwKTxSLCBUPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMCk8UiwgVD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpICgpIGNvbnN0LCBBMSBhMSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYwKTxSLCBUPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSkpOwotfQotCi0vLyAxCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYxKTxSLCBULCBCMT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEpLCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYxKTxSLCBULCBCMT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyPgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjEpPFIsIFQsIEIxPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzI8QTEsIEEyPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSkgY29uc3QsIEExIGExLCBBMiBhMikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYxKTxSLCBULCBCMT4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMikpOwotfQotCi0vLyAyCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjIpPFIsIFQsIEIxLCBCMj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiksIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYyKTxSLCBULCBCMSwgQjI+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMik8UiwgVCwgQjEsIEIyPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyKSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYyKTxSLCBULCBCMSwgQjI+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMykpOwotfQotCi0vLyAzCi0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMyk8UiwgVCwgQjEsIEIyLCBCMz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzKSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYzKTxSLCBULCBCMSwgQjIsIEIzPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYzKTxSLCBULCBCMSwgQjIsIEIzPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYzKTxSLCBULCBCMSwgQjIsIEIzPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzQ8QTEsIEEyLCBBMywgQTQ+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCkpOwotfQotCi0vLyA0Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjQpPFIsIFQsIEIxLCBCMiwgQjMsIEI0PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzU8QTEsIEEyLCBBMywgQTQsIEE1Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCkgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSkpOwotfQotCi0vLyA1Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjUpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi0vLyA2Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY2KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzc8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UnQyLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi0vLyA3Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFJ0MiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjcpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKG5kbmJvb3N0Ojp0eXBlPFJ0Mj4sIFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNykgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSdDIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi0vLyA4Ci0KLXRlbXBsYXRlPGNsYXNzIFJ0MiwgY2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxSdDIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjgpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQobmRuYm9vc3Q6OnR5cGU8UnQyPiwgUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSdDIsIGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UnQyLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChuZG5ib29zdDo6dHlwZTxSdDI+LCBSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBBOSBhOSkKLXsKLSAgICB0eXBlZGVmIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFJ0MiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkpOwotfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfbWZfY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDEwOGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9iaW5kX21mX2NjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vLwotLy8gIGJpbmQvYmluZF9tZl9jYy5ocHAgLSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucwotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLS8vIDAKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBBMT4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYwKTxSLCBUPiwgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzE8QTE+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKCksIEExIGExKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMCk8UiwgVD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQTE+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjApPFIsIFQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMTxBMT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoKSBjb25zdCwgQTEgYTEpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMCk8UiwgVD4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8xPEExPjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExKSk7Ci19Ci0KLS8vIDEKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMSk8UiwgVCwgQjE+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxKSwgQTEgYTEsIEEyIGEyKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMSk8UiwgVCwgQjE+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyPgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWYxKTxSLCBULCBCMT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8yPEExLCBBMj46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEpIGNvbnN0LCBBMSBhMSwgQTIgYTIpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMSk8UiwgVCwgQjE+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMjxBMSwgQTI+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyKSk7Ci19Ci0KLS8vIDIKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWYyKTxSLCBULCBCMSwgQjI+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfMzxBMSwgQTIsIEEzPjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIpLCBBMSBhMSwgQTIgYTIsIEEzIGEzKQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMik8UiwgVCwgQjEsIEIyPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjIpPFIsIFQsIEIxLCBCMj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl8zPEExLCBBMiwgQTM+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMikgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMik8UiwgVCwgQjEsIEIyPiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzM8QTEsIEEyLCBBMz46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzKSk7Ci19Ci0KLS8vIDMKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjMpPFIsIFQsIEIxLCBCMiwgQjM+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNDxBMSwgQTIsIEEzLCBBND46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMyksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mMyk8UiwgVCwgQjEsIEIyLCBCMz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMyk8UiwgVCwgQjEsIEIyLCBCMz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzKSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mMyk8UiwgVCwgQjEsIEIyLCBCMz4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl80PEExLCBBMiwgQTMsIEE0Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0KSk7Ci19Ci0KLS8vIDQKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNCk8UiwgVCwgQjEsIEIyLCBCMywgQjQ+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNCk8UiwgVCwgQjEsIEIyLCBCMywgQjQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY0KTxSLCBULCBCMSwgQjIsIEIzLCBCND4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl81PEExLCBBMiwgQTMsIEE0LCBBNT46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNCk8UiwgVCwgQjEsIEIyLCBCMywgQjQ+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNTxBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLS8vIDUKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY1KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjU+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjUpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNT4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl82PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSkgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNSk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2XzY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLS8vIDYKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShtZjYpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjY+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiksIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2KSBjb25zdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNik8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNj4gRjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl83PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3Pjo6dHlwZSBsaXN0X3R5cGU7Ci0gICAgcmV0dXJuIF9iaTo6YmluZF90PFIsIEYsIGxpc3RfdHlwZT4oRihmKSwgbGlzdF90eXBlKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLS8vIDcKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywKLSAgICBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNyk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3KSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mNyk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICAgIF9iaTo6YmluZF90PFIsIF9tZmk6Ok5ETkJPT1NUX0JJTkRfTUZfTkFNRShjbWY3KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNz4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl84PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD46OnR5cGU+Ci0gICAgTkROQk9PU1RfQklORChSIChORE5CT09TVF9CSU5EX01GX0NDIFQ6OipmKSAoQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcpIGNvbnN0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mNyk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjc+IEY7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfODxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIGxpc3RfdHlwZTsKLSAgICByZXR1cm4gX2JpOjpiaW5kX3Q8UiwgRiwgbGlzdF90eXBlPihGKGYpLCBsaXN0X3R5cGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSk7Ci19Ci0KLS8vIDgKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwKLSAgICBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNywgY2xhc3MgQjgsCi0gICAgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgICBfYmk6OmJpbmRfdDxSLCBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUobWY4KTxSLCBULCBCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjg+LCB0eXBlbmFtZSBfYmk6Omxpc3RfYXZfOTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5Pjo6dHlwZT4KLSAgICBORE5CT09TVF9CSU5EKFIgKE5ETkJPT1NUX0JJTkRfTUZfQ0MgVDo6KmYpIChCMSwgQjIsIEIzLCBCNCwgQjUsIEI2LCBCNywgQjgpLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgsIEE5IGE5KQotewotICAgIHR5cGVkZWYgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKG1mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsCi0gICAgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4LAotICAgIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gICAgX2JpOjpiaW5kX3Q8UiwgX21maTo6TkROQk9PU1RfQklORF9NRl9OQU1FKGNtZjgpPFIsIFQsIEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOD4sIHR5cGVuYW1lIF9iaTo6bGlzdF9hdl85PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlPgotICAgIE5ETkJPT1NUX0JJTkQoUiAoTkROQk9PU1RfQklORF9NRl9DQyBUOjoqZikgKEIxLCBCMiwgQjMsIEI0LCBCNSwgQjYsIEI3LCBCOCkgY29uc3QsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkpCi17Ci0gICAgdHlwZWRlZiBfbWZpOjpORE5CT09TVF9CSU5EX01GX05BTUUoY21mOCk8UiwgVCwgQjEsIEIyLCBCMywgQjQsIEI1LCBCNiwgQjcsIEI4PiBGOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgX2JpOjpsaXN0X2F2Xzk8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT46OnR5cGUgbGlzdF90eXBlOwotICAgIHJldHVybiBfYmk6OmJpbmRfdDxSLCBGLCBsaXN0X3R5cGU+KEYoZiksIGxpc3RfdHlwZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSk7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF90ZW1wbGF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvYmluZF90ZW1wbGF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMDM3ZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL2JpbmRfdGVtcGxhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQ1ICswLDAgQEAKLS8vCi0vLyAgYmluZC9iaW5kX3RlbXBsYXRlLmhwcAotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDQgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzdWx0X3RyYWl0czxSLCBGPjo6dHlwZSByZXN1bHRfdHlwZTsKLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgbGlzdDAgYTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDAgYTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEpCi0gICAgewotICAgICAgICBsaXN0MTxBMSAmPiBhKGExKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MTxBMSAmPiBhKGExKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExKQotICAgIHsKLSAgICAgICAgbGlzdDE8QTEgY29uc3QgJj4gYShhMSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDE8QTEgY29uc3QgJj4gYShhMSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIpCi0gICAgewotICAgICAgICBsaXN0MjxBMSAmLCBBMiAmPiBhKGExLCBhMik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExICYsIEEyICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgJiBhMikKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExIGNvbnN0ICYsIEEyICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgY29uc3QgJiwgQTIgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgY29uc3QgJiBhMikKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExICYsIEEyIGNvbnN0ICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiBjb25zdCAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgJiwgQTIgY29uc3QgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMikKLSAgICB7Ci0gICAgICAgIGxpc3QyPEExIGNvbnN0ICYsIEEyIGNvbnN0ICY+IGEoYTEsIGEyKTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDI8QTEgY29uc3QgJiwgQTIgY29uc3QgJj4gYShhMSwgYTIpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMykKLSAgICB7Ci0gICAgICAgIGxpc3QzPEExICYsIEEyICYsIEEzICY+IGEoYTEsIGEyLCBhMyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MzxBMSAmLCBBMiAmLCBBMyAmPiBhKGExLCBhMiwgYTMpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMykKLSAgICB7Ci0gICAgICAgIGxpc3QzPEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICY+IGEoYTEsIGEyLCBhMyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0MzxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmPiBhKGExLCBhMiwgYTMpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQpCi0gICAgewotICAgICAgICBsaXN0NDxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmPiBhKGExLCBhMiwgYTMsIGE0KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NDxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmPiBhKGExLCBhMiwgYTMsIGE0KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0KQotICAgIHsKLSAgICAgICAgbGlzdDQ8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDQ8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUpCi0gICAgewotICAgICAgICBsaXN0NTxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q1PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSkKLSAgICB7Ci0gICAgICAgIGxpc3Q1PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDU8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikKLSAgICB7Ci0gICAgICAgIGxpc3Q2PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NjxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNikKLSAgICB7Ci0gICAgICAgIGxpc3Q2PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NjxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmLCBBNiBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcpCi0gICAgewotICAgICAgICBsaXN0NzxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0NzxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3KQotICAgIHsKLSAgICAgICAgbGlzdDc8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDc8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcsIEE4ICYgYTgpCi0gICAgewotICAgICAgICBsaXN0ODxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmLCBBOCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGxpc3Q4PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICYsIEE4ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCkKLSAgICB7Ci0gICAgICAgIGxpc3Q4PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICYsIEE3IGNvbnN0ICYsIEE4IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9SRVRVUk4gbF8odHlwZTxyZXN1bHRfdHlwZT4oKSwgZl8sIGEsIDApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgbGlzdDg8QTEgY29uc3QgJiwgQTIgY29uc3QgJiwgQTMgY29uc3QgJiwgQTQgY29uc3QgJiwgQTUgY29uc3QgJiwgQTYgY29uc3QgJiwgQTcgY29uc3QgJiwgQTggY29uc3QgJj4gYShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkKLSAgICB7Ci0gICAgICAgIGxpc3Q5PEExICYsIEEyICYsIEEzICYsIEE0ICYsIEE1ICYsIEE2ICYsIEE3ICYsIEE4ICYsIEE5ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcsIEE4ICYgYTgsIEE5ICYgYTkpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0OTxBMSAmLCBBMiAmLCBBMyAmLCBBNCAmLCBBNSAmLCBBNiAmLCBBNyAmLCBBOCAmLCBBOSAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCwgQTkgY29uc3QgJiBhOSkKLSAgICB7Ci0gICAgICAgIGxpc3Q5PEExIGNvbnN0ICYsIEEyIGNvbnN0ICYsIEEzIGNvbnN0ICYsIEE0IGNvbnN0ICYsIEE1IGNvbnN0ICYsIEE2IGNvbnN0ICYsIEE3IGNvbnN0ICYsIEE4IGNvbnN0ICYsIEE5IGNvbnN0ICY+IGEoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkpIGNvbnN0Ci0gICAgewotICAgICAgICBsaXN0OTxBMSBjb25zdCAmLCBBMiBjb25zdCAmLCBBMyBjb25zdCAmLCBBNCBjb25zdCAmLCBBNSBjb25zdCAmLCBBNiBjb25zdCAmLCBBNyBjb25zdCAmLCBBOCBjb25zdCAmLCBBOSBjb25zdCAmPiBhKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEE+IHJlc3VsdF90eXBlIGV2YWwoQSAmIGEpCi0gICAgewotICAgICAgICBORE5CT09TVF9CSU5EX1JFVFVSTiBsXyh0eXBlPHJlc3VsdF90eXBlPigpLCBmXywgYSwgMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQT4gcmVzdWx0X3R5cGUgZXZhbChBICYgYSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfUkVUVVJOIGxfKHR5cGU8cmVzdWx0X3R5cGU+KCksIGZfLCBhLCAwKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAgKSAmJiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkKLQotICAgICAgICB1c2luZyBuZG5ib29zdDo6dmlzaXRfZWFjaDsKLQotI2VuZGlmCi0gICAgICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCh2LCBmXywgMCk7Ci0gICAgICAgIGxfLmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBib29sIGNvbXBhcmUodGhpc190eXBlIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlZl9jb21wYXJlKGZfLCByaHMuZl8sIDApICYmIGxfID09IHJocy5sXzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotICAgIEwgbF87CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWFrZV9hZGFwdGFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21ha2VfYWRhcHRhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE5ZWRkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWFrZV9hZGFwdGFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9NQUtFX0FEQVBUQUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9NQUtFX0FEQVBUQUJMRV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBtYWtlX2FkYXB0YWJsZS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBfYmkKLXsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRj4gY2xhc3MgYWYwCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBhZjAoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXygpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgRj4gY2xhc3MgYWYxCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBhcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTEgYXJnMV90eXBlOwotCi0gICAgZXhwbGljaXQgYWYxKEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEY+IGNsYXNzIGFmMgotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgQTEgZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIEEyIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTEgYXJnMV90eXBlOwotICAgIHR5cGVkZWYgQTIgYXJnMl90eXBlOwotCi0gICAgZXhwbGljaXQgYWYyKEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgRj4gY2xhc3MgYWYzCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBBMSBhcmcxX3R5cGU7Ci0gICAgdHlwZWRlZiBBMiBhcmcyX3R5cGU7Ci0gICAgdHlwZWRlZiBBMyBhcmczX3R5cGU7Ci0KLSAgICBleHBsaWNpdCBhZjMoRiBmKTogZl8oZikKLSAgICB7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBhMSwgQTIgYTIsIEEzIGEzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEY+IGNsYXNzIGFmNAotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgQTEgYXJnMV90eXBlOwotICAgIHR5cGVkZWYgQTIgYXJnMl90eXBlOwotICAgIHR5cGVkZWYgQTMgYXJnM190eXBlOwotICAgIHR5cGVkZWYgQTQgYXJnNF90eXBlOwotCi0gICAgZXhwbGljaXQgYWY0KEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIEYgZl87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBfYmkKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgRj4gX2JpOjphZjA8UiwgRj4gbWFrZV9hZGFwdGFibGUoRiBmKQotewotICAgIHJldHVybiBfYmk6OmFmMDxSLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEY+IF9iaTo6YWYxPFIsIEExLCBGPiBtYWtlX2FkYXB0YWJsZShGIGYpCi17Ci0gICAgcmV0dXJuIF9iaTo6YWYxPFIsIEExLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBGPiBfYmk6OmFmMjxSLCBBMSwgQTIsIEY+IG1ha2VfYWRhcHRhYmxlKEYgZikKLXsKLSAgICByZXR1cm4gX2JpOjphZjI8UiwgQTEsIEEyLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgRj4gX2JpOjphZjM8UiwgQTEsIEEyLCBBMywgRj4gbWFrZV9hZGFwdGFibGUoRiBmKQotewotICAgIHJldHVybiBfYmk6OmFmMzxSLCBBMSwgQTIsIEEzLCBGPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEY+IF9iaTo6YWY0PFIsIEExLCBBMiwgQTMsIEE0LCBGPiBtYWtlX2FkYXB0YWJsZShGIGYpCi17Ci0gICAgcmV0dXJuIF9iaTo6YWY0PFIsIEExLCBBMiwgQTMsIEE0LCBGPihmKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9NQUtFX0FEQVBUQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyYTkxNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzODkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9CSU5EX01FTV9GTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9NRU1fRk5fSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG1lbV9mbi5ocHAgLSBhIGdlbmVyYWxpemF0aW9uIG9mIHN0ZDo6bWVtX2Z1bltfcmVmXQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgRGF2aWQgQWJyYWhhbXMKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9tZW1fZm4uaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2dldF9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19WT0lEX1JFVFVSTlMpCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0YgLCBjbGFzcyBGCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFgpCi0KLW5hbWVzcGFjZSBfbWZpIC8vIG1lbV9mdW5faW1wbAotewotCi10ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3QgbWYKLXsKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fUkVUVVJOIHJldHVybgotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfY2RlY2wKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBpbm5lcl8jI1gjI19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19mYXN0Y2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fUkVUVVJOCi0KLX07IC8vIHN0cnVjdCBtZjxWPgotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtZjx2b2lkPgotewotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4KLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBpbm5lcl8jI1gKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DREVDTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2NkZWNsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfU1REQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIGlubmVyXyMjWCMjX3N0ZGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fc3RkY2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0ZBU1RDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgaW5uZXJfIyNYIyNfZmFzdGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fZmFzdGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTgotCi19OyAvLyBzdHJ1Y3QgbWY8dm9pZD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUZfRgotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKFgpIGlubmVyXyMjWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3Z3LmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUyCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FMihYKSBpbm5lcl8jI1gjI19jZGVjbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19jZGVjbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRTIKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX1NURENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRTIoWCkgaW5uZXJfIyNYIyNfc3RkY2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19zdGRjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl92dy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FMgotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfRkFTVENBTEwKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfZmFzdGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKFgpIGlubmVyXyMjWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2Zhc3RjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl92dy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FMgotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgX21maQotCi0jZWxzZSAvLyAjaWZkZWYgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0YKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoWCkgdHlwZWRlZiBYOwotCi1uYW1lc3BhY2UgX21maQotewotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gcmV0dXJuCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NERUNMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX2NkZWNsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2NkZWNsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl90ZW1wbGF0ZS5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfU1REQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgjI19zdGRjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX3N0ZGNhbGwKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9GQVNUQ0FMTAotCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9OQU1FKFgpIFgjI19mYXN0Y2FsbAotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fQ0MgX19mYXN0Y2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLQotI2VuZGlmCi0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fUkVUVVJOCi0KLX0gLy8gbmFtZXNwYWNlIF9tZmkKLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYKLQotI2VuZGlmIC8vICNpZmRlZiBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ0RFQ0wKLQotI2RlZmluZSBORE5CT09TVF9NRU1fRk5fTkFNRShYKSBYIyNfY2RlY2wKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fY2RlY2wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JpbmQvbWVtX2ZuX2NjLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9OQU1FCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX0NDCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9TVERDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX3N0ZGNhbGwKLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX0NDIF9fc3RkY2FsbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm5fY2MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfTUVNX0ZOX05BTUUKLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fQ0MKLQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0ZBU1RDQUxMCi0KLSNkZWZpbmUgTkROQk9PU1RfTUVNX0ZOX05BTUUoWCkgWCMjX2Zhc3RjYWxsCi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9DQyBfX2Zhc3RjYWxsCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9NRU1fRk5fTkFNRQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9DQwotCi0jZW5kaWYKLQotLy8gZGF0YSBtZW1iZXIgc3VwcG9ydAotCi1uYW1lc3BhY2UgX21maQotewotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUPiBjbGFzcyBkbQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIGNvbnN0ICYgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBUIGNvbnN0ICogYXJndW1lbnRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICB0eXBlZGVmIFIgKFQ6OipGKTsKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBjb25zdCAmIGNhbGwoVSAmIHUsIFQgY29uc3QgKikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAodS4qZl8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY29uc3QgJiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICopIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGdldF9wb2ludGVyKHUpLT4qZl8pOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IGRtKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSICYgb3BlcmF0b3IoKShUICogcCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAocC0+KmZfKTsKLSAgICB9Ci0KLSAgICBSIGNvbnN0ICYgb3BlcmF0b3IoKShUIGNvbnN0ICogcCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAocC0+KmZfKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIGNvbnN0ICYgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsKHUsICZ1KTsKLSAgICB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzIwMCkKLQotICAgIFIgJiBvcGVyYXRvcigpKFQgJiB0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICh0LipmXyk7Ci0gICAgfQotCi0gICAgUiBjb25zdCAmIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKHQuKmZfKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgYm9vbCBvcGVyYXRvcj09KGRtIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oZG0gY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIF9tZmkKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gX21maTo6ZG08UiwgVD4gbWVtX2ZuKFIgVDo6KmYpCi17Ci0gICAgcmV0dXJuIF9tZmk6OmRtPFIsIFQ+KGYpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX01FTV9GTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOTRkM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL21lbV9mbl9jYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLy8KLS8vICBiaW5kL21lbV9mbl9jYy5ocHAgLSBzdXBwb3J0IGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucwotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseS4KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL21lbV9mbi5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKTxSLCBUPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoKSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKTxSLCBUPihmKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCk8UiwgVD4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKCkgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApPFIsIFQ+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMT4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKTxSLCBULCBBMT4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExKSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKTxSLCBULCBBMT4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExPiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKTxSLCBULCBBMT4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExKSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSk8UiwgVCwgQTE+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTI+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMik8UiwgVCwgQTEsIEEyPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyKSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKTxSLCBULCBBMSwgQTI+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTI+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpPFIsIFQsIEExLCBBMj4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMikgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpPFIsIFQsIEExLCBBMj4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMyk8UiwgVCwgQTEsIEEyLCBBMz4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpPFIsIFQsIEExLCBBMiwgQTM+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKTxSLCBULCBBMSwgQTIsIEEzPiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMykgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjMpPFIsIFQsIEExLCBBMiwgQTM+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBND4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBND4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY0KTxSLCBULCBBMSwgQTIsIEEzLCBBND4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0KSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQ+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTU+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNT4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSkgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNT4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpKQotewotICAgIHJldHVybiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4oZik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiBfbWZpOjpORE5CT09TVF9NRU1fRk5fTkFNRShjbWY3KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSBjb25zdCkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKG1mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBtZW1fZm4oUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipmKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSkKLXsKLSAgICByZXR1cm4gX21maTo6TkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+KGYpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4gbWVtX2ZuKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqZikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCkgY29uc3QpCi17Ci0gICAgcmV0dXJuIF9tZmk6Ok5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4oZik7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWEyNGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdGVtcGxhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0NyArMCwwIEBACi0vLwotLy8gIGJpbmQvbWVtX2ZuX3RlbXBsYXRlLmhwcAotLy8KLS8vICBEbyBub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBkaXJlY3RseQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvbWVtX2ZuLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0jIGRlZmluZSBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotI2VuZGlmCi0KLS8vIG1mMAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjApCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBUICogYXJndW1lbnRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpICgpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjApKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHApIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHApOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBSIG9wZXJhdG9yKCkoVCAmIHQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYwKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjAKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgY29uc3QgKiBhcmd1bWVudF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKCkgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICopIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKSgpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYwKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWYxCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiBUICogZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIEExIHNlY29uZF9hcmd1bWVudF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExKSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjE+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMT4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYxKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mMQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgY29uc3QgKiBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQTEgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMT4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxPiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKShGIGYpOiBmXyhmKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExKTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMSkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYxKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWYyCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMikpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMj4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjI+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSAmIHUsIEExIGExLCBBMiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMik7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjIKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYyKQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMikgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMj4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjI+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyKTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYyKShGIGYpOiBmXyhmKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mMwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzIE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMykpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjM+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjM+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMyk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYzKShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzKSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMyk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWYzKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMykgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIGNtZjMKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMyBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMykKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLQotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzPiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzPiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMpOwotICAgIH0KLQotcHVibGljOgotCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMykoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mMykgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gbWY0Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCND4gUiBjYWxsKFUgJiB1LCBUIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh1LipmXykoYjEsIGIyLCBiMywgYjQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0KTsKLSAgICB9Ci0KLXB1YmxpYzoKLSAgICAKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWY0Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY0KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0KSBjb25zdCkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQ+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCND4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCkoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFQgY29uc3QgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mNQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUgTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUpKQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjU+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNSkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShtZjUpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBjbWY1Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSkKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjU+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNSkoRiBmKTogZl8oZikge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY1KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBtZjYKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY2KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjY+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjY+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQsIGI1LCBiNik7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChwLT4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNikgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgUiBvcGVyYXRvcigpKFQgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodC4qZl8pKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY2KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mNgotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpIGNvbnN0KQotICAgIEYgZl87Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2PiBSIGNhbGwoVSAmIHUsIHZvaWQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKGdldF9wb2ludGVyKHUpLT4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjYpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNikgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gIT0gcmhzLmZfOwotICAgIH0KLX07Ci0KLS8vIG1mNwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KQotewotcHVibGljOgotCi0gICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotCi1wcml2YXRlOgotICAgIAotICAgIE5ETkJPT1NUX01FTV9GTl9UWVBFREVGKFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjc+IFIgY2FsbChVICYgdSwgVCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2LCBCNyAmIGI3KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAodS4qZl8pKGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcyBCMSwgY2xhc3MgQjIsIGNsYXNzIEIzLCBjbGFzcyBCNCwgY2xhc3MgQjUsIGNsYXNzIEI2LCBjbGFzcyBCNz4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNyk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgCi0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KShGIGYpOiBmXyhmKSB7fQotCi0gICAgUiBvcGVyYXRvcigpKFQgKiBwLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTUVNX0ZOX0VOQUJMRV9DT05TVF9PVkVSTE9BRFMKLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVIGNvbnN0ICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIFIgb3BlcmF0b3IoKShUICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY3KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mNwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyBORE5CT09TVF9NRU1fRk5fQ0xBU1NfRj4gY2xhc3MgTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mNykKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLQotcHJpdmF0ZToKLSAgICAKLSAgICBORE5CT09TVF9NRU1fRk5fVFlQRURFRihSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgY29uc3QpCi0gICAgRiBmXzsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNykgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjc+IFIgY2FsbChVICYgdSwgdm9pZCBjb25zdCAqLCBCMSAmIGIxLCBCMiAmIGIyLCBCMyAmIGIzLCBCNCAmIGI0LCBCNSAmIGI1LCBCNiAmIGI2LCBCNyAmIGI3KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAoZ2V0X3BvaW50ZXIodSktPipmXykoYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIFIgb3BlcmF0b3IoKShUIGNvbnN0ICYgdCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY3KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyA9PSByaHMuZl87Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfICE9IHJocy5mXzsKLSAgICB9Ci19OwotCi0vLyBtZjgKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4IE5ETkJPT1NUX01FTV9GTl9DTEFTU19GPiBjbGFzcyBORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNywgQjggJiBiOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LCBjbGFzcyBCOD4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcsIEI4ICYgYjgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mOCkoRiBmKTogZl8oZikge30KLQotICAgIFIgb3BlcmF0b3IoKShUICogcCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiAocC0+KmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFU+IFIgb3BlcmF0b3IoKShVICYgdSwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgVSBjb25zdCAqIHAgPSAwOwotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIGNhbGwodSwgcCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9NRU1fRk5fRU5BQkxFX0NPTlNUX09WRVJMT0FEUwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4gUiBvcGVyYXRvcigpKFUgY29uc3QgJiB1LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpIGNvbnN0Ci0gICAgewotICAgICAgICBVIGNvbnN0ICogcCA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gY2FsbCh1LCBwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICBSIG9wZXJhdG9yKCkoVCAmIHQsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHQuKmZfKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpIGNvbnN0ICYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfID09IHJocy5mXzsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oTkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotLy8gY21mOAotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTggTkROQk9PU1RfTUVNX0ZOX0NMQVNTX0Y+IGNsYXNzIE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpCi17Ci1wdWJsaWM6Ci0KLSAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0KLXByaXZhdGU6Ci0gICAgCi0gICAgTkROQk9PU1RfTUVNX0ZOX1RZUEVERUYoUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSBjb25zdCkKLSAgICBGIGZfOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MgQjEsIGNsYXNzIEIyLCBjbGFzcyBCMywgY2xhc3MgQjQsIGNsYXNzIEI1LCBjbGFzcyBCNiwgY2xhc3MgQjcsIGNsYXNzIEI4PiBSIGNhbGwoVSAmIHUsIFQgY29uc3QgKiwgQjEgJiBiMSwgQjIgJiBiMiwgQjMgJiBiMywgQjQgJiBiNCwgQjUgJiBiNSwgQjYgJiBiNiwgQjcgJiBiNywgQjggJiBiOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHUuKmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MgQjMsIGNsYXNzIEI0LCBjbGFzcyBCNSwgY2xhc3MgQjYsIGNsYXNzIEI3LCBjbGFzcyBCOD4gUiBjYWxsKFUgJiB1LCB2b2lkIGNvbnN0ICosIEIxICYgYjEsIEIyICYgYjIsIEIzICYgYjMsIEI0ICYgYjQsIEI1ICYgYjUsIEI2ICYgYjYsIEI3ICYgYjcsIEI4ICYgYjgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOIChnZXRfcG9pbnRlcih1KS0+KmZfKShiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgpOwotICAgIH0KLQotcHVibGljOgotICAgIAotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpKEYgZik6IGZfKGYpIHt9Ci0KLSAgICBSIG9wZXJhdG9yKCkoVCBjb25zdCAqIHAsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01FTV9GTl9SRVRVUk4gKHAtPipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBSIG9wZXJhdG9yKCkoVSBjb25zdCAmIHUsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFUgY29uc3QgKiBwID0gMDsKLSAgICAgICAgTkROQk9PU1RfTUVNX0ZOX1JFVFVSTiBjYWxsKHUsIHAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0gICAgUiBvcGVyYXRvcigpKFQgY29uc3QgJiB0LCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywgQTggYTgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9NRU1fRk5fUkVUVVJOICh0LipmXykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oTkROQk9PU1RfTUVNX0ZOX05BTUUoY21mOCkgY29uc3QgJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8gPT0gcmhzLmZfOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShORE5CT09TVF9NRU1fRk5fTkFNRShjbWY4KSBjb25zdCAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyAhPSByaHMuZl87Ci0gICAgfQotfTsKLQotI3VuZGVmIE5ETkJPT1NUX01FTV9GTl9FTkFCTEVfQ09OU1RfT1ZFUkxPQURTCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvbWVtX2ZuX3Z3LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmZhNjYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9tZW1fZm5fdncuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8vCi0vLyAgYmluZC9tZW1fZm5fdncuaHBwIC0gdm9pZCByZXR1cm4gaGVscGVyIHdyYXBwZXJzCi0vLwotLy8gIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGRpcmVjdGx5Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9tZW1fZm4uaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQ+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjApOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYwKTxSLCBULCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKCk+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpICgpOwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMCkoRiBmKTogbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYwKTxSLCBULCBGPihmKSB7fQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVD4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjApOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMCk8UiwgVCwgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OiopICgpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoKSBjb25zdDsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYwKShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWYwKTxSLCBULCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMT4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMSk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjEpPFIsIFQsIEExLCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExKT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExKTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjEpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mMSk8UiwgVCwgQTEsIEY+KGYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMT4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjEpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMSk8UiwgVCwgQTEsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjEpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjEpPFIsIFQsIEExLCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjIpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWYyKTxSLCBULCBBMSwgQTIsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyKT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMik7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWYyKShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjIpPFIsIFQsIEExLCBBMiwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mMik8UiwgVCwgQTEsIEEyLCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMikgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjIpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjIpPFIsIFQsIEExLCBBMiwgRj4oZikge30KLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mMyk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjMpPFIsIFQsIEExLCBBMiwgQTMsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMyk+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzKTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjMpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mMyk8UiwgVCwgQTEsIEEyLCBBMywgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjMpPFIsIFQsIEExLCBBMiwgQTMsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMykgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzKSBjb25zdDsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWYzKShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWYzKTxSLCBULCBBMSwgQTIsIEEzLCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNCk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjQpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjQpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEY+KGYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjQpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjQpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjUpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWY1KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSk7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY1KShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNSk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0LCBBNSkgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjUpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjUpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgRj4oZikge30KLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNik6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjYpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNik8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KTogcHVibGljIG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjYpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBjb25zdDsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShjbWY2KShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihjbWY2KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKG1mNyk6IHB1YmxpYyBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjcpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KTsKLSAgICBleHBsaWNpdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjcpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKG1mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEY+KGYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mNyk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpIGNvbnN0PgotewotICAgIHR5cGVkZWYgUiAoTkROQk9PU1RfTUVNX0ZOX0NDIFQ6OipGKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjcpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjcpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBGPihmKSB7fQotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHN0cnVjdCBORE5CT09TVF9NRU1fRk5fTkFNRShtZjgpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIobWY4KTxSLCBULCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqKSAoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KT4KLXsKLSAgICB0eXBlZGVmIFIgKE5ETkJPT1NUX01FTV9GTl9DQyBUOjoqRikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCk7Ci0gICAgZXhwbGljaXQgTkROQk9PU1RfTUVNX0ZOX05BTUUobWY4KShGIGYpOiBtZjxSPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIE5ETkJPT1NUX01FTV9GTl9OQU1FMihtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgRj4oZikge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gc3RydWN0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpOiBwdWJsaWMgbWY8Uj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBORE5CT09TVF9NRU1fRk5fTkFNRTIoY21mOCk8UiwgVCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KikgKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCkgY29uc3Q+Ci17Ci0gICAgdHlwZWRlZiBSIChORE5CT09TVF9NRU1fRk5fQ0MgVDo6KkYpIChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpIGNvbnN0OwotICAgIGV4cGxpY2l0IE5ETkJPT1NUX01FTV9GTl9OQU1FKGNtZjgpKEYgZik6IG1mPFI+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgTkROQk9PU1RfTUVNX0ZOX05BTUUyKGNtZjgpPFIsIFQsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgRj4oZikge30KLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzgzZjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX1BMQUNFSE9MREVSU19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgYmluZC9wbGFjZWhvbGRlcnMuaHBwIC0gX04gZGVmaW5pdGlvbnMKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kL2FyZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlCi17Ci0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgNCkKLQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDE+IF8xKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzwxPigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8Mj4gXzIoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDI+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzwzPiBfMygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8Mz4oKTsgfQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDQ+IF80KCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzw0PigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8NT4gXzUoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDU+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzw2PiBfNigpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8Nj4oKTsgfQotc3RhdGljIGlubGluZSBuZG5ib29zdDo6YXJnPDc+IF83KCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzw3PigpOyB9Ci1zdGF0aWMgaW5saW5lIG5kbmJvb3N0Ojphcmc8OD4gXzgoKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPDg+KCk7IH0KLXN0YXRpYyBpbmxpbmUgbmRuYm9vc3Q6OmFyZzw5PiBfOSgpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8OT4oKTsgfQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChkZWZpbmVkKF9fREVDQ1hYX1ZFUikgJiYgX19ERUNDWFhfVkVSIDw9IDYwNTkwMDMxKSB8fCBkZWZpbmVkKF9fTVdFUktTX18pIHx8IFwKLSAgICBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDIpICAKLQotc3RhdGljIG5kbmJvb3N0Ojphcmc8MT4gXzE7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzwyPiBfMjsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDM+IF8zOwotc3RhdGljIG5kbmJvb3N0Ojphcmc8ND4gXzQ7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzw1PiBfNTsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDY+IF82Owotc3RhdGljIG5kbmJvb3N0Ojphcmc8Nz4gXzc7Ci1zdGF0aWMgbmRuYm9vc3Q6OmFyZzw4PiBfODsKLXN0YXRpYyBuZG5ib29zdDo6YXJnPDk+IF85OwotCi0jZWxzZQotCi1uZG5ib29zdDo6YXJnPDE+IF8xOwotbmRuYm9vc3Q6OmFyZzwyPiBfMjsKLW5kbmJvb3N0Ojphcmc8Mz4gXzM7Ci1uZG5ib29zdDo6YXJnPDQ+IF80OwotbmRuYm9vc3Q6OmFyZzw1PiBfNTsKLW5kbmJvb3N0Ojphcmc8Nj4gXzY7Ci1uZG5ib29zdDo6YXJnPDc+IF83OwotbmRuYm9vc3Q6OmFyZzw4PiBfODsKLW5kbmJvb3N0Ojphcmc8OT4gXzk7Ci0KLSNlbmRpZgotCi19IC8vIHVubmFtZWQgbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0JJTkRfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3Byb3RlY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3Byb3RlY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGZiYjFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvYmluZC9wcm90ZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0JJTkRfUFJPVEVDVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfQklORF9QUk9URUNUX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHByb3RlY3QuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAoYykgMjAwOSBTdGV2ZW4gV2F0YW5hYmUKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgX2JpCi17Ci0KLXRlbXBsYXRlPGNsYXNzIEY+IGNsYXNzIHByb3RlY3RlZF9iaW5kX3QKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBwcm90ZWN0ZWRfYmluZF90KEYgZik6IGZfKGYpCi0gICAgewotICAgIH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKCk7Ci0gICAgfQotCi0gICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShjb25zdCBBMSAmIGExKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShjb25zdCBBMSAmIGExKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgJiBhMikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiAmIGEyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyIGNvbnN0ICYgYTIpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTI+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgY29uc3QgJiBhMikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzKTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMykKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMyk7Ci0gICAgfQotICAgIAotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9Ci0gICAgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSAmIGExLCBBMiAmIGEyLCBBMyAmIGEzLCBBNCAmIGE0LCBBNSAmIGE1LCBBNiAmIGE2LCBBNyAmIGE3LCBBOCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoQTEgJiBhMSwgQTIgJiBhMiwgQTMgJiBhMywgQTQgJiBhNCwgQTUgJiBhNSwgQTYgJiBhNiwgQTcgJiBhNywgQTggJiBhOCwgQTkgJiBhOSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmXyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExICYgYTEsIEEyICYgYTIsIEEzICYgYTMsIEE0ICYgYTQsIEE1ICYgYTUsIEE2ICYgYTYsIEE3ICYgYTcsIEE4ICYgYTgsIEE5ICYgYTkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkpCi0gICAgewotICAgICAgICByZXR1cm4gZl8oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4gcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3LCBBOCBjb25zdCAmIGE4LCBBOSBjb25zdCAmIGE5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZfKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICAgIH0KLQotI2VuZGlmCi0KLXByaXZhdGU6Ci0KLSAgICBGIGZfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgX2JpCi0KLXRlbXBsYXRlPGNsYXNzIEY+IF9iaTo6cHJvdGVjdGVkX2JpbmRfdDxGPiBwcm90ZWN0KEYgZikKLXsKLSAgICByZXR1cm4gX2JpOjpwcm90ZWN0ZWRfYmluZF90PEY+KGYpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9CSU5EX1BST1RFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JpbmQvc3RvcmFnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JpbmQvc3RvcmFnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MDkyOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9iaW5kL3N0b3JhZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDc1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfQklORF9TVE9SQUdFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9CSU5EX1NUT1JBR0VfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGJpbmQvc3RvcmFnZS5ocHAKLS8vCi0vLyAgbmRuYm9vc3QvYmluZC5ocHAgc3VwcG9ydCBoZWFkZXIsIG9wdGltaXplZCBzdG9yYWdlCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvYmluZC5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9hcmcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIF9iaQotewotCi0vLyAxCi0KLXRlbXBsYXRlPGNsYXNzIEExPiBzdHJ1Y3Qgc3RvcmFnZTEKLXsKLSAgICBleHBsaWNpdCBzdG9yYWdlMSggQTEgYTEgKTogYTFfKCBhMSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0JJTkRfVklTSVRfRUFDSCh2LCBhMV8sIDApOwotICAgIH0KLQotICAgIEExIGExXzsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApICYmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKQotCi10ZW1wbGF0ZTxpbnQgST4gc3RydWN0IHN0b3JhZ2UxPCBuZG5ib29zdDo6YXJnPEk+ID4KLXsKLSAgICBleHBsaWNpdCBzdG9yYWdlMSggbmRuYm9vc3Q6OmFyZzxJPiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYpIGNvbnN0IHsgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTFfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi10ZW1wbGF0ZTxpbnQgST4gc3RydWN0IHN0b3JhZ2UxPCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSA+Ci17Ci0gICAgZXhwbGljaXQgc3RvcmFnZTEoIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJikgY29uc3QgeyB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhMV8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyAyCi0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMj4gc3RydWN0IHN0b3JhZ2UyOiBwdWJsaWMgc3RvcmFnZTE8QTE+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMTxBMT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTIoIEExIGExLCBBMiBhMiApOiBzdG9yYWdlMTxBMT4oIGExICksIGEyXyggYTIgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGEyXywgMCk7Ci0gICAgfQotCi0gICAgQTIgYTJfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTI8IEExLCBuZG5ib29zdDo6YXJnPEk+ID46IHB1YmxpYyBzdG9yYWdlMTxBMT4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UxPEExPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMiggQTEgYTEsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTE8QTE+KCBhMSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGEyXygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTI8IEExLCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSA+OiBwdWJsaWMgc3RvcmFnZTE8QTE+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMTxBMT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTIoIEExIGExLCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlMTxBMT4oIGExICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTJfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gMwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiBzdHJ1Y3Qgc3RvcmFnZTM6IHB1YmxpYyBzdG9yYWdlMjwgQTEsIEEyID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UyPEExLCBBMj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTMoIEExIGExLCBBMiBhMiwgQTMgYTMgKTogc3RvcmFnZTI8QTEsIEEyPiggYTEsIGEyICksIGEzXyggYTMgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGEzXywgMCk7Ci0gICAgfQotCi0gICAgQTMgYTNfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBpbnQgST4gc3RydWN0IHN0b3JhZ2UzPCBBMSwgQTIsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2UyPCBBMSwgQTIgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTI8QTEsIEEyPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlMyggQTEgYTEsIEEyIGEyLCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2UyPEExLCBBMj4oIGExLCBhMiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGEzXygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBpbnQgST4gc3RydWN0IHN0b3JhZ2UzPCBBMSwgQTIsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlMjwgQTEsIEEyID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2UyPEExLCBBMj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTMoIEExIGExLCBBMiBhMiwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTI8QTEsIEEyPiggYTEsIGEyICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTNfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gNAotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4gc3RydWN0IHN0b3JhZ2U0OiBwdWJsaWMgc3RvcmFnZTM8IEExLCBBMiwgQTMgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTM8QTEsIEEyLCBBMz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTQoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0ICk6IHN0b3JhZ2UzPEExLCBBMiwgQTM+KCBhMSwgYTIsIGEzICksIGE0XyggYTQgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE0XywgMCk7Ci0gICAgfQotCi0gICAgQTQgYTRfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgaW50IEk+IHN0cnVjdCBzdG9yYWdlNDwgQTEsIEEyLCBBMywgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTM8IEExLCBBMiwgQTMgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTM8QTEsIEEyLCBBMz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTQoIEExIGExLCBBMiBhMiwgQTMgYTMsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTM8QTEsIEEyLCBBMz4oIGExLCBhMiwgYTMgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNF8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTQ8IEExLCBBMiwgQTMsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlMzwgQTEsIEEyLCBBMyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlMzxBMSwgQTIsIEEzPiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNCggQTEgYTEsIEEyIGEyLCBBMyBhMywgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTM8QTEsIEEyLCBBMz4oIGExLCBhMiwgYTMgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNF8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA1Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4gc3RydWN0IHN0b3JhZ2U1OiBwdWJsaWMgc3RvcmFnZTQ8IEExLCBBMiwgQTMsIEE0ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1ICk6IHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiggYTEsIGEyLCBhMywgYTQgKSwgYTVfKCBhNSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYTVfLCAwKTsKLSAgICB9Ci0KLSAgICBBNSBhNV87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgaW50IEk+IHN0cnVjdCBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBBNCA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNDxBMSwgQTIsIEEzLCBBND4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTUoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U0PEExLCBBMiwgQTMsIEE0PiggYTEsIGEyLCBhMywgYTQgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhNV8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2U0PCBBMSwgQTIsIEEzLCBBNCA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNDxBMSwgQTIsIEEzLCBBND4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTUoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlNDxBMSwgQTIsIEEzLCBBND4oIGExLCBhMiwgYTMsIGE0ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTVfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gNgotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiBzdHJ1Y3Qgc3RvcmFnZTY6IHB1YmxpYyBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIEE1ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U1PEExLCBBMiwgQTMsIEE0LCBBNT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTYoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYgKTogc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiggYTEsIGEyLCBhMywgYTQsIGE1ICksIGE2XyggYTYgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE2XywgMCk7Ci0gICAgfQotCi0gICAgQTYgYTZfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U2PCBBMSwgQTIsIEEzLCBBNCwgQTUsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U1PCBBMSwgQTIsIEEzLCBBNCwgQTUgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNiggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U1PEExLCBBMiwgQTMsIEE0LCBBNT4oIGExLCBhMiwgYTMsIGE0LCBhNSApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE2XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U2PCBBMSwgQTIsIEEzLCBBNCwgQTUsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlNTwgQTEsIEEyLCBBMywgQTQsIEE1ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U1PEExLCBBMiwgQTMsIEE0LCBBNT4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTYoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTU8QTEsIEEyLCBBMywgQTQsIEE1PiggYTEsIGEyLCBhMywgYTQsIGE1ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTZfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gNwotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4gc3RydWN0IHN0b3JhZ2U3OiBwdWJsaWMgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTcoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3ICk6IHN0b3JhZ2U2PEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+KCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2ICksIGE3XyggYTcgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE3XywgMCk7Ci0gICAgfQotCi0gICAgQTcgYTdfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgaW50IEk+IHN0cnVjdCBzdG9yYWdlNzwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgbmRuYm9vc3Q6OmFyZzxJPiA+OiBwdWJsaWMgc3RvcmFnZTY8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYgPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTcoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIG5kbmJvb3N0Ojphcmc8ST4gKTogc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhN18oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGludCBJPiBzdHJ1Y3Qgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlNjwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNjxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlNyggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTY8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhN18oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLSNlbmRpZgotCi0vLyA4Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gc3RydWN0IHN0b3JhZ2U4OiBwdWJsaWMgc3RvcmFnZTc8IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOCggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4ICk6IHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKSwgYThfKCBhOCApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgICAgICBORE5CT09TVF9CSU5EX1ZJU0lUX0VBQ0godiwgYThfLCAwKTsKLSAgICB9Ci0KLSAgICBBOCBhOF87Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgaW50IEk+IHN0cnVjdCBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U3PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTgoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U3PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgbmRuYm9vc3Q6OmFyZzxJPiBhOF8oKSB7IHJldHVybiBuZG5ib29zdDo6YXJnPEk+KCk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgPjogcHVibGljIHN0b3JhZ2U3PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyA+Ci17Ci0gICAgdHlwZWRlZiBzdG9yYWdlNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTgoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBuZG5ib29zdDo6YXJnPEk+ICgqKSAoKSApOiBzdG9yYWdlNzxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYThfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotLy8gOQotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiBzdHJ1Y3Qgc3RvcmFnZTk6IHB1YmxpYyBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U4PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTkoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgQTkgYTkgKTogc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICksIGE5XyggYTkgKSB7fQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVj4gdm9pZCBhY2NlcHQoViAmIHYpIGNvbnN0Ci0gICAgewotICAgICAgICBpbmhlcml0ZWQ6OmFjY2VwdCh2KTsKLSAgICAgICAgTkROQk9PU1RfQklORF9WSVNJVF9FQUNIKHYsIGE5XywgMCk7Ci0gICAgfQotCi0gICAgQTkgYTlfOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U5PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIG5kbmJvb3N0Ojphcmc8ST4gPjogcHVibGljIHN0b3JhZ2U4PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTggPgotewotICAgIHR5cGVkZWYgc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiBpbmhlcml0ZWQ7Ci0KLSAgICBzdG9yYWdlOSggQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4IGE4LCBuZG5ib29zdDo6YXJnPEk+ICk6IHN0b3JhZ2U4PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4oIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCApIHt9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiB2b2lkIGFjY2VwdChWICYgdikgY29uc3QKLSAgICB7Ci0gICAgICAgIGluaGVyaXRlZDo6YWNjZXB0KHYpOwotICAgIH0KLQotICAgIHN0YXRpYyBuZG5ib29zdDo6YXJnPEk+IGE5XygpIHsgcmV0dXJuIG5kbmJvb3N0Ojphcmc8ST4oKTsgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBpbnQgST4gc3RydWN0IHN0b3JhZ2U5PCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIG5kbmJvb3N0Ojphcmc8ST4gKCopICgpID46IHB1YmxpYyBzdG9yYWdlODwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4ID4KLXsKLSAgICB0eXBlZGVmIHN0b3JhZ2U4PEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOD4gaW5oZXJpdGVkOwotCi0gICAgc3RvcmFnZTkoIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsIEE3IGE3LCBBOCBhOCwgbmRuYm9vc3Q6OmFyZzxJPiAoKikgKCkgKTogc3RvcmFnZTg8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICkge30KLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+IHZvaWQgYWNjZXB0KFYgJiB2KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5oZXJpdGVkOjphY2NlcHQodik7Ci0gICAgfQotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojphcmc8ST4gYTlfKCkgeyByZXR1cm4gbmRuYm9vc3Q6OmFyZzxJPigpOyB9Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgX2JpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfQklORF9TVE9SQUdFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ibGFuay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JsYW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RkNmU0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2JsYW5rLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBib29zdCBibGFuay5ocHAgaGVhZGVyIGZpbGUKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAzCi0vLyBFcmljIEZyaWVkbWFuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0JMQU5LX0hQUAotI2RlZmluZSBORE5CT09TVF9CTEFOS19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2JsYW5rX2Z3ZC5ocHAiCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NUUkVBTSkKLSNpbmNsdWRlIDxpb3Nmd2Q+IC8vIGZvciBzdGQ6OmJhc2ljX29zdHJlYW0gZm9yd2FyZCBkZWNsYXJlCi0jaW5jbHVkZSAibmRuYm9vc3QvZGV0YWlsL3RlbXBsYXRlZF9zdHJlYW1zLmhwcCIKLSNlbmRpZiAvLyBORE5CT09TVF9OT19JT1NUUkVBTQotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2Jvb2wuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXN0cnVjdCBibGFuawotewotfTsKLQotLy8gdHlwZSB0cmFpdHMgc3BlY2lhbGl6YXRpb25zCi0vLwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3BvZDwgYmxhbmsgPgotICAgIDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19lbXB0eTwgYmxhbmsgPgotICAgIDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19zdGF0ZWxlc3M8IGJsYW5rID4KLSAgICA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLS8vIHJlbGF0aW9uYWwgb3BlcmF0b3JzCi0vLwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IGJsYW5rJiwgY29uc3QgYmxhbmsmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLy8gc3RyZWFtaW5nIHN1cHBvcnQKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU9TVFJFQU0pCi0KLU5ETkJPT1NUX1RFTVBMQVRFRF9TVFJFQU1fVEVNUExBVEUoRSxUKQotaW5saW5lIE5ETkJPT1NUX1RFTVBMQVRFRF9TVFJFQU0ob3N0cmVhbSwgRSxUKSYgb3BlcmF0b3I8PCgKLSAgICAgIE5ETkJPT1NUX1RFTVBMQVRFRF9TVFJFQU0ob3N0cmVhbSwgRSxUKSYgb3V0Ci0gICAgLCBjb25zdCBibGFuayYKLSAgICApCi17Ci0gICAgLy8gKG91dHB1dCBub3RoaW5nKQotICAgIHJldHVybiBvdXQ7Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19JT1NUUkVBTQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQkxBTktfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2JsYW5rX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2JsYW5rX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjY4MjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9ibGFua19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gYm9vc3QgYmxhbmtfZndkLmhwcCBoZWFkZXIgZmlsZQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDMKLS8vIEVyaWMgRnJpZWRtYW4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfQkxBTktfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9CTEFOS19GV0RfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXN0cnVjdCBibGFuazsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0JMQU5LX0ZXRF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY2FsbF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jYWxsX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYmJkODQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jYWxsX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5IGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgU2VlIG5kbmJvb3N0L2RldGFpbC9jYWxsX3RyYWl0cy5ocHAgYW5kIG5kbmJvb3N0L2RldGFpbC9vYl9jYWxsX3RyYWl0cy5ocHAKLS8vICBmb3IgZnVsbCBjb3B5cmlnaHQgbm90aWNlcy4KLQotI2lmbmRlZiBORE5CT09TVF9DQUxMX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfQ0FMTF9UUkFJVFNfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvb2JfY2FsbF90cmFpdHMuaHBwPgotI2Vsc2UKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DQUxMX1RSQUlUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY2Vycm5vLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY2Vycm5vLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRiODM2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NlcnJuby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzEgKzAsMCBAQAotLy8gIEJvb3N0IGNlcnJuby5ocHAgaGVhZGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zeXN0ZW0KLQotI2lmbmRlZiBORE5CT09TVF9DRVJSTk9fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NFUlJOT19IUFAKLQotI2luY2x1ZGUgPGNlcnJubz4KLQotLy8gIHN1cHBseSBlcnJubyB2YWx1ZXMgbGlrZWx5IHRvIGJlIG1pc3NpbmcsIHBhcnRpY3VsYXJseSBvbiBXaW5kb3dzCi0KLSNpZm5kZWYgRUFGTk9TVVBQT1JUCi0jZGVmaW5lIEVBRk5PU1VQUE9SVCA5OTAxCi0jZW5kaWYKLQotI2lmbmRlZiBFQUREUklOVVNFCi0jZGVmaW5lIEVBRERSSU5VU0UgOTkwMgotI2VuZGlmCi0KLSNpZm5kZWYgRUFERFJOT1RBVkFJTAotI2RlZmluZSBFQUREUk5PVEFWQUlMIDk5MDMKLSNlbmRpZgotCi0jaWZuZGVmIEVJU0NPTk4KLSNkZWZpbmUgRUlTQ09OTiA5OTA0Ci0jZW5kaWYKLQotI2lmbmRlZiBFQkFETVNHCi0jZGVmaW5lIEVCQURNU0cgOTkwNQotI2VuZGlmCi0KLSNpZm5kZWYgRUNPTk5BQk9SVEVECi0jZGVmaW5lIEVDT05OQUJPUlRFRCA5OTA2Ci0jZW5kaWYKLQotI2lmbmRlZiBFQUxSRUFEWQotI2RlZmluZSBFQUxSRUFEWSA5OTA3Ci0jZW5kaWYKLQotI2lmbmRlZiBFQ09OTlJFRlVTRUQKLSNkZWZpbmUgRUNPTk5SRUZVU0VEIDk5MDgKLSNlbmRpZgotCi0jaWZuZGVmIEVDT05OUkVTRVQKLSNkZWZpbmUgRUNPTk5SRVNFVCA5OTA5Ci0jZW5kaWYKLQotI2lmbmRlZiBFREVTVEFERFJSRVEKLSNkZWZpbmUgRURFU1RBRERSUkVRIDk5MTAKLSNlbmRpZgotCi0jaWZuZGVmIEVIT1NUVU5SRUFDSAotI2RlZmluZSBFSE9TVFVOUkVBQ0ggOTkxMQotI2VuZGlmCi0KLSNpZm5kZWYgRUlEUk0KLSNkZWZpbmUgRUlEUk0gOTkxMgotI2VuZGlmCi0KLSNpZm5kZWYgRU1TR1NJWkUKLSNkZWZpbmUgRU1TR1NJWkUgOTkxMwotI2VuZGlmCi0KLSNpZm5kZWYgRU5FVERPV04KLSNkZWZpbmUgRU5FVERPV04gOTkxNAotI2VuZGlmCi0KLSNpZm5kZWYgRU5FVFJFU0VUCi0jZGVmaW5lIEVORVRSRVNFVCA5OTE1Ci0jZW5kaWYKLQotI2lmbmRlZiBFTkVUVU5SRUFDSAotI2RlZmluZSBFTkVUVU5SRUFDSCA5OTE2Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9CVUZTCi0jZGVmaW5lIEVOT0JVRlMgOTkxNwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PTElOSwotI2RlZmluZSBFTk9MSU5LIDk5MTgKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0RBVEEKLSNkZWZpbmUgRU5PREFUQSA5OTE5Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9NU0cKLSNkZWZpbmUgRU5PTVNHIDk5MjAKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1BST1RPT1BUCi0jZGVmaW5lIEVOT1BST1RPT1BUIDk5MjEKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1NSCi0jZGVmaW5lIEVOT1NSIDk5MjIKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1RTT0NLCi0jZGVmaW5lIEVOT1RTT0NLIDk5MjMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1NUUgotI2RlZmluZSBFTk9TVFIgOTkyNAotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVENPTk4KLSNkZWZpbmUgRU5PVENPTk4gOTkyNQotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVFNVUAotI2RlZmluZSBFTk9UU1VQIDk5MjYKLSNlbmRpZgotCi0jaWZuZGVmIEVDQU5DRUxFRAotI2RlZmluZSBFQ0FOQ0VMRUQgOTkyNwotI2VuZGlmCi0KLSNpZm5kZWYgRUlOUFJPR1JFU1MKLSNkZWZpbmUgRUlOUFJPR1JFU1MgOTkyOAotI2VuZGlmCi0KLSNpZm5kZWYgRU9QTk9UU1VQUAotI2RlZmluZSBFT1BOT1RTVVBQIDk5MjkKLSNlbmRpZgotCi0jaWZuZGVmIEVXT1VMREJMT0NLCi0jZGVmaW5lIEVXT1VMREJMT0NLIDk5MzAKLSNlbmRpZgotCi0jaWZuZGVmIEVPV05FUkRFQUQKLSNkZWZpbmUgRU9XTkVSREVBRCAgOTkzMQotI2VuZGlmCi0KLSNpZm5kZWYgRVBST1RPCi0jZGVmaW5lIEVQUk9UTyA5OTMyCi0jZW5kaWYKLQotI2lmbmRlZiBFUFJPVE9OT1NVUFBPUlQKLSNkZWZpbmUgRVBST1RPTk9TVVBQT1JUIDk5MzMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT1RSRUNPVkVSQUJMRQotI2RlZmluZSBFTk9UUkVDT1ZFUkFCTEUgOTkzNAotI2VuZGlmCi0KLSNpZm5kZWYgRVRJTUUKLSNkZWZpbmUgRVRJTUUgOTkzNQotI2VuZGlmCi0KLSNpZm5kZWYgRVRYVEJTWQotI2RlZmluZSBFVFhUQlNZIDk5MzYKLSNlbmRpZgotCi0jaWZuZGVmIEVUSU1FRE9VVAotI2RlZmluZSBFVElNRURPVVQgOTkzOAotI2VuZGlmCi0KLSNpZm5kZWYgRUxPT1AKLSNkZWZpbmUgRUxPT1AgOTkzOQotI2VuZGlmCi0KLSNpZm5kZWYgRU9WRVJGTE9XCi0jZGVmaW5lIEVPVkVSRkxPVyA5OTQwCi0jZW5kaWYKLQotI2lmbmRlZiBFUFJPVE9UWVBFCi0jZGVmaW5lIEVQUk9UT1RZUEUgOTk0MQotI2VuZGlmCi0KLSNpZm5kZWYgRU5PU1lTCi0jZGVmaW5lIEVOT1NZUyA5OTQyCi0jZW5kaWYKLQotI2lmbmRlZiBFSU5WQUwKLSNkZWZpbmUgRUlOVkFMIDk5NDMKLSNlbmRpZgotCi0jaWZuZGVmIEVSQU5HRQotI2RlZmluZSBFUkFOR0UgOTk0NAotI2VuZGlmCi0KLSNpZm5kZWYgRUlMU0VRCi0jZGVmaW5lIEVJTFNFUSA5OTQ1Ci0jZW5kaWYKLQotLy8gIFdpbmRvd3MgTW9iaWxlIGRvZXNuJ3QgYXBwZWFyIHRvIGRlZmluZSB0aGVzZToKLQotI2lmbmRlZiBFMkJJRwotI2RlZmluZSBFMkJJRyA5OTQ2Ci0jZW5kaWYKLQotI2lmbmRlZiBFRE9NCi0jZGVmaW5lIEVET00gOTk0NwotI2VuZGlmCi0KLSNpZm5kZWYgRUZBVUxUCi0jZGVmaW5lIEVGQVVMVCA5OTQ4Ci0jZW5kaWYKLQotI2lmbmRlZiBFQkFERgotI2RlZmluZSBFQkFERiA5OTQ5Ci0jZW5kaWYKLQotI2lmbmRlZiBFUElQRQotI2RlZmluZSBFUElQRSA5OTUwCi0jZW5kaWYKLQotI2lmbmRlZiBFWERFVgotI2RlZmluZSBFWERFViA5OTUxCi0jZW5kaWYKLQotI2lmbmRlZiBFQlVTWQotI2RlZmluZSBFQlVTWSA5OTUyCi0jZW5kaWYKLQotI2lmbmRlZiBFTk9URU1QVFkKLSNkZWZpbmUgRU5PVEVNUFRZIDk5NTMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0VYRUMKLSNkZWZpbmUgRU5PRVhFQyA5OTU0Ci0jZW5kaWYKLQotI2lmbmRlZiBFRVhJU1QKLSNkZWZpbmUgRUVYSVNUIDk5NTUKLSNlbmRpZgotCi0jaWZuZGVmIEVGQklHCi0jZGVmaW5lIEVGQklHIDk5NTYKLSNlbmRpZgotCi0jaWZuZGVmIEVOQU1FVE9PTE9ORwotI2RlZmluZSBFTkFNRVRPT0xPTkcgOTk1NwotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVFRZCi0jZGVmaW5lIEVOT1RUWSA5OTU4Ci0jZW5kaWYKLQotI2lmbmRlZiBFSU5UUgotI2RlZmluZSBFSU5UUiA5OTU5Ci0jZW5kaWYKLQotI2lmbmRlZiBFU1BJUEUKLSNkZWZpbmUgRVNQSVBFIDk5NjAKLSNlbmRpZgotCi0jaWZuZGVmIEVJTwotI2RlZmluZSBFSU8gOTk2MQotI2VuZGlmCi0KLSNpZm5kZWYgRUlTRElSCi0jZGVmaW5lIEVJU0RJUiA5OTYyCi0jZW5kaWYKLQotI2lmbmRlZiBFQ0hJTEQKLSNkZWZpbmUgRUNISUxEIDk5NjMKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0xDSwotI2RlZmluZSBFTk9MQ0sgOTk2NAotI2VuZGlmCi0KLSNpZm5kZWYgRU5PU1BDCi0jZGVmaW5lIEVOT1NQQyA5OTY1Ci0jZW5kaWYKLQotI2lmbmRlZiBFTlhJTwotI2RlZmluZSBFTlhJTyA5OTY2Ci0jZW5kaWYKLQotI2lmbmRlZiBFTk9ERVYKLSNkZWZpbmUgRU5PREVWIDk5NjcKLSNlbmRpZgotCi0jaWZuZGVmIEVOT0VOVAotI2RlZmluZSBFTk9FTlQgOTk2OAotI2VuZGlmCi0KLSNpZm5kZWYgRVNSQ0gKLSNkZWZpbmUgRVNSQ0ggOTk2OQotI2VuZGlmCi0KLSNpZm5kZWYgRU5PVERJUgotI2RlZmluZSBFTk9URElSIDk5NzAKLSNlbmRpZgotCi0jaWZuZGVmIEVOT01FTQotI2RlZmluZSBFTk9NRU0gOTk3MQotI2VuZGlmCi0KLSNpZm5kZWYgRVBFUk0KLSNkZWZpbmUgRVBFUk0gOTk3MgotI2VuZGlmCi0KLSNpZm5kZWYgRUFDQ0VTCi0jZGVmaW5lIEVBQ0NFUyA5OTczCi0jZW5kaWYKLQotI2lmbmRlZiBFUk9GUwotI2RlZmluZSBFUk9GUyA5OTc0Ci0jZW5kaWYKLQotI2lmbmRlZiBFREVBRExLCi0jZGVmaW5lIEVERUFETEsgOTk3NQotI2VuZGlmCi0KLSNpZm5kZWYgRUFHQUlOCi0jZGVmaW5lIEVBR0FJTiA5OTc2Ci0jZW5kaWYKLQotI2lmbmRlZiBFTkZJTEUKLSNkZWZpbmUgRU5GSUxFIDk5NzcKLSNlbmRpZgotCi0jaWZuZGVmIEVNRklMRQotI2RlZmluZSBFTUZJTEUgOTk3OAotI2VuZGlmCi0KLSNpZm5kZWYgRU1MSU5LCi0jZGVmaW5lIEVNTElOSyA5OTc5Ci0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ODA1MTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0NIRUNLRURfREVMRVRFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9DSEVDS0VEX0RFTEVURV9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAoYykgMjAwMyBEYW5pZWwgRnJleQotLy8gIENvcHlyaWdodCAoYykgMjAwMyBIb3dhcmQgSGlubmFudAotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9jaGVja2VkX2RlbGV0ZS5odG1sIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vIHZlcmlmeSB0aGF0IHR5cGVzIGFyZSBjb21wbGV0ZSBmb3IgaW5jcmVhc2VkIHNhZmV0eQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBjaGVja2VkX2RlbGV0ZShUICogeCkKLXsKLSAgICAvLyBpbnRlbnRpb25hbGx5IGNvbXBsZXggLSBzaW1wbGlmaWNhdGlvbiBjYXVzZXMgcmVncmVzc2lvbnMKLSAgICB0eXBlZGVmIGNoYXIgdHlwZV9tdXN0X2JlX2NvbXBsZXRlWyBzaXplb2YoVCk/IDE6IC0xIF07Ci0gICAgKHZvaWQpIHNpemVvZih0eXBlX211c3RfYmVfY29tcGxldGUpOwotICAgIGRlbGV0ZSB4OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBjaGVja2VkX2FycmF5X2RlbGV0ZShUICogeCkKLXsKLSAgICB0eXBlZGVmIGNoYXIgdHlwZV9tdXN0X2JlX2NvbXBsZXRlWyBzaXplb2YoVCk/IDE6IC0xIF07Ci0gICAgKHZvaWQpIHNpemVvZih0eXBlX211c3RfYmVfY29tcGxldGUpOwotICAgIGRlbGV0ZSBbXSB4OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY2hlY2tlZF9kZWxldGVyCi17Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgVCAqIGFyZ3VtZW50X3R5cGU7Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoVCAqIHgpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBuZG5ib29zdDo6IGRpc2FibGVzIEFETAotICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoeCk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGNoZWNrZWRfYXJyYXlfZGVsZXRlcgotewotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFQgKiBhcmd1bWVudF90eXBlOwotCi0gICAgdm9pZCBvcGVyYXRvcigpKFQgKiB4KSBjb25zdAotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKHgpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9DSEVDS0VEX0RFTEVURV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9hc3NlcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NDc4MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0FTU0VSVF9ORE5CT09TVF9EV0EyMDA2NDMwX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfTkROQk9PU1RfRFdBMjAwNjQzMF9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIFRoZSBvbGQgcHJvdG9jb2wgdXNlZCBhIGNvbnN0cmFpbnRzKCkgbWVtYmVyIGZ1bmN0aW9uIGluIGNvbmNlcHQKLS8vIGNoZWNraW5nIGNsYXNzZXMuICBJZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgU0ZJTkFFLCB3ZSBjYW4gZGV0ZWN0Ci0vLyB0aGF0IGZ1bmN0aW9uIGFuZCBzZWFtbGVzc2x5IHN1cHBvcnQgdGhlIG9sZCBjb25jZXB0IGNoZWNraW5nCi0vLyBjbGFzc2VzLiAgSW4gdGhpcyByZWxlYXNlLCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZAotLy8gY29uY2VwdCBjaGVja2luZyBjbGFzc2VzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hlcmUgYXZhaWxhYmxlLgotLy8gVGhlIG9sZCBwcm90b2NvbCBpcyBkZXByZWNhdGVkLCB0aG91Z2gsIGFuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci0vLyB3aWxsIG5vIGxvbmdlciBiZSB0aGUgZGVmYXVsdCBpbiB0aGUgbmV4dCByZWxlYXNlLgotCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX09MRF9DT05DRVBUX1NVUFBPUlQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgJiYgIShORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAzKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19NSU5PUl9fLCA8IDQpKSBcCi0gICAgJiYgIShORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKSkKLQotLy8gTm90ZTogZ2NjLTIuOTYgdGhyb3VnaCAzLjMueCBoYXZlIHNvbWUgU0ZJTkFFLCBidXQgbm8gYWJpbGl0eSB0bwotLy8gY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBwYXJ0aWN1bGFybWVtYmVyIGZ1bmN0aW9ucy4KLQotIyAgZGVmaW5lIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLQotIyBlbmRpZgotCi0jIGlmZGVmIE5ETkJPT1NUX01TVkMKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL21zdmMuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYm9ybGFuZC5ocHA+Ci0jIGVsc2UgCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9nZW5lcmFsLmhwcD4KLSMgZW5kaWYKLQotICAvLyBVc2FnZSwgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gY29udGV4dDoKLSAgLy8KLSAgLy8gICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChVbmFyeUZ1bmN0aW9uQ29uY2VwdDxGLGJvb2wsaW50PikpOwotICAvLwotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoTW9kZWxJblBhcmVucykgXAotICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKHZvaWQoKilNb2RlbEluUGFyZW5zKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlRfTkROQk9PU1RfRFdBMjAwNjQzMF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTc5Yjk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwOS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0JBQ0tXQVJEX0NPTVBBVElCSUxJVFlfTkROQk9PU1RfRFdBMjAwOTY4X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9CQUNLV0FSRF9DT01QQVRJQklMSVRZX05ETkJPT1NUX0RXQTIwMDk2OF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBjb25jZXB0cyB7fQotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0NPTkNFUFRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9DT05DRVBUX05PX0JBQ0tXQVJEX0tFWVdPUkQpCi0gIG5hbWVzcGFjZSBjb25jZXB0ID0gY29uY2VwdHM7Ci0jIGVuZGlmIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmNvbmNlcHQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfQkFDS1dBUkRfQ09NUEFUSUJJTElUWV9ORE5CT09TVF9EV0EyMDA5NjhfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JvcmxhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9ib3JsYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVjMjlkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JvcmxhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDYuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQk9STEFORF9ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQk9STEFORF9ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9iYWNrd2FyZF9jb21wYXRpYmlsaXR5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGNvbmNlcHRzIHsKLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsRm5QdHI+Ci1zdHJ1Y3QgcmVxdWlyZTsKLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmU8dm9pZCgqKShNb2RlbCk+Ci17Ci0gICAgZW51bSB7IGluc3RhbnRpYXRlID0gc2l6ZW9mKCgoKE1vZGVsKikwKS0+fk1vZGVsKCkpLCAzKSB9OwotfTsKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICAgICBcCi0gIGVudW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfUFBfQ0FUKGJvb3N0X2NvbmNlcHRfY2hlY2ssX19MSU5FX18pID0gICAgICBcCi0gICAgICBuZG5ib29zdDo6Y29uY2VwdHM6OnJlcXVpcmU8TW9kZWxGblB0cj46Omluc3RhbnRpYXRlICBcCi0gIH0KLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ojpjb25jZXB0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9CT1JMQU5EX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF9kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjgxMDJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDYuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQ09OQ0VQVF9ERUZfTkROQk9PU1RfRFdBMjAwNjUxX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfQ09OQ0VQVF9ERUZfTkROQk9PU1RfRFdBMjAwNjUxX0hQUAotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9DT05DRVBUX0RFRl9ORE5CT09TVF9EV0EyMDA2NTFfSFBQCi0KLS8vIE5ETkJPT1NUX2NvbmNlcHQoU29tZU5hbWUsIChwMSkocDIpLi4uKHBOKSkKLS8vCi0vLyBFeHBhbmRzIHRvICJ0ZW1wbGF0ZSA8Y2xhc3MgcDEsIGNsYXNzIHAyLCAuLi5jbGFzcyBwTj4gc3RydWN0IFNvbWVOYW1lIgotLy8KLS8vIEFsc28gZGVmaW5lcyBhbiBlcXVpdmFsZW50IFNvbWVOYW1lQ29uY2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLS8vIE1heWJlIGluIHRoZSBuZXh0IHJlbGVhc2Ugd2UgY2FuIGtpbGwgb2ZmIHRoZSAiQ29uY2VwdCIgc3VmZml4IGZvciBnb29kLgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDw9IDMpCi0jIGRlZmluZSBORE5CT09TVF9jb25jZXB0KG5hbWUsIHBhcmFtcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBuYW1lOyAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQobmFtZSxDb25jZXB0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA6IG5hbWU8IE5ETkJPT1NUX1BQX1NFUV9FTlVNKHBhcmFtcykgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAvKiBhdCBsZWFzdCAyLjk2IGFuZCAzLjQuMyBib3RoIG5lZWQgdGhpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChuYW1lLENvbmNlcHQpKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSShORE5CT09TVF9DT05DRVBUX3R5cGVuYW1lLH4scGFyYW1zKSA+ICAgICAgIFwKLSAgICBzdHJ1Y3QgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9jb25jZXB0KG5hbWUsIHBhcmFtcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBuYW1lOyAvKiBmb3J3YXJkIGRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQobmFtZSxDb25jZXB0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA6IG5hbWU8IE5ETkJPT1NUX1BQX1NFUV9FTlVNKHBhcmFtcykgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKE5ETkJPT1NUX0NPTkNFUFRfdHlwZW5hbWUsfixwYXJhbXMpID4gICAgICAgXAotICAgIHN0cnVjdCBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2VuZGlmCi0gICAgCi0vLyBIZWxwZXIgZm9yIE5ETkJPT1NUX2NvbmNlcHQsIGFib3ZlLgotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF90eXBlbmFtZShyLCBpZ25vcmVkLCBpbmRleCwgdCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGluZGV4KSB0eXBlbmFtZSB0Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTYzODc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvY29uY2VwdF91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jIHVuZGVmIE5ETkJPT1NUX2NvbmNlcHRfdHlwZW5hbWUKLSMgdW5kZWYgTkROQk9PU1RfY29uY2VwdApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9nZW5lcmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvZ2VuZXJhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYTRjNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9nZW5lcmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0dFTkVSQUxfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0dFTkVSQUxfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvYmFja3dhcmRfY29tcGF0aWJpbGl0eS5ocHA+Ci0KLSMgaWZkZWYgTkROQk9PU1RfT0xEX0NPTkNFUFRfU1VQUE9SVAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jIGVuZGlmCi0KLS8vIFRoaXMgaW1wbGVtZW50YXRpb24gd29ya3Mgb24gQ29tZWF1IGFuZCBHQ0MsIGFsbCB0aGUgd2F5IGJhY2sgdG8KLS8vIDIuOTUKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBjb25jZXB0cyB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbEZuPgotc3RydWN0IHJlcXVpcmVtZW50XzsKLQotbmFtZXNwYWNlIGRldGFpbAotewotICB0ZW1wbGF0ZSA8dm9pZCgqKSgpPiBzdHJ1Y3QgaW5zdGFudGlhdGUge307Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlbWVudAotewotICAgIHN0YXRpYyB2b2lkIGZhaWxlZCgpIHsgKChNb2RlbCopMCktPn5Nb2RlbCgpOyB9Ci19OwotCi1zdHJ1Y3QgZmFpbGVkIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgcmVxdWlyZW1lbnQ8ZmFpbGVkICoqKioqKioqKioqKiBNb2RlbDo6KioqKioqKioqKioqPgotewotICAgIHN0YXRpYyB2b2lkIGZhaWxlZCgpIHsgKChNb2RlbCopMCktPn5Nb2RlbCgpOyB9Ci19OwotCi0jIGlmZGVmIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IGNvbnN0cmFpbnQKLXsKLSAgICBzdGF0aWMgdm9pZCBmYWlsZWQoKSB7ICgoTW9kZWwqKTApLT5jb25zdHJhaW50cygpOyB9Ci19OwotICAKLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlbWVudF88dm9pZCgqKShNb2RlbCk+Ci0gIDogbXBsOjppZl88Ci0gICAgICAgIGNvbmNlcHRzOjpub3Rfc2F0aXNmaWVkPE1vZGVsPgotICAgICAgLCBjb25zdHJhaW50PE1vZGVsPgotICAgICAgLCByZXF1aXJlbWVudDxmYWlsZWQgKioqKioqKioqKioqIE1vZGVsOjoqKioqKioqKioqKio+Ci0gICAgPjo6dHlwZQote307Ci0gIAotIyBlbHNlCi0KLS8vIEZvciBHQ0MtMi54LCB0aGVzZSBjYW4ndCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgbmFtZQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmVtZW50Xzx2b2lkKCopKE1vZGVsKT4KLSAgICA6IHJlcXVpcmVtZW50PGZhaWxlZCAqKioqKioqKioqKiogTW9kZWw6OioqKioqKioqKioqKj4KLXt9OwotICAKLSMgZW5kaWYKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6Y29uY2VwdHM6OmRldGFpbDo6aW5zdGFudGlhdGU8ICAgICAgICAgIFwKLSAgICAmOjpuZG5ib29zdDo6Y29uY2VwdHM6OnJlcXVpcmVtZW50XzxNb2RlbEZuUHRyPjo6ZmFpbGVkPiAgICBcCi0gICAgICBORE5CT09TVF9QUF9DQVQoYm9vc3RfY29uY2VwdF9jaGVjayxfX0xJTkVfXykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0dFTkVSQUxfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC9kZXRhaWwvaGFzX2NvbnN0cmFpbnRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZjOTZkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2hhc19jb25zdHJhaW50cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX0RFVEFJTF9IQVNfQ09OU1RSQUlOVFNfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfREVUQUlMX0hBU19DT05TVFJBSU5UU19ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9iYWNrd2FyZF9jb21wYXRpYmlsaXR5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGNvbmNlcHRzIHsKLQotbmFtZXNwYWNlIGRldGFpbAoteyAKLQotLy8gSGVyZSB3ZSBpbXBsZW1lbnQgdGhlIG1ldGFmdW5jdGlvbiB0aGF0IGRldGVjdHMgd2hldGhlciBhCi0vLyBjb25zdHJhaW50cyBtZXRhZnVuY3Rpb24gZXhpc3RzCi0gIHR5cGVkZWYgY2hhciB5ZXM7Ci0gIHR5cGVkZWYgY2hhciAoJm5vKVsyXTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgTW9kZWwsIHZvaWQgKE1vZGVsOjoqKSgpPgotICBzdHJ1Y3Qgd3JhcF9jb25zdHJhaW50cyB7fTsKLSAgICAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSAweDU4MCkgfHwgZGVmaW5lZChfX0NVREFDQ19fKQotICAvLyBXb3JrIGFyb3VuZCB0aGUgZm9sbG93aW5nIGJvZ3VzIGVycm9yIGluIFN1biBTdHVkaW8gMTEsIGJ5Ci0gIC8vIHR1cm5pbmcgb2ZmIHRoZSBoYXNfY29uc3RyYWludHMgZnVuY3Rpb24gZW50aXJlbHk6Ci0gIC8vICAgIEVycm9yOiBjb21wbGV4IGV4cHJlc3Npb24gbm90IGFsbG93ZWQgaW4gZGVwZW5kZW50IHRlbXBsYXRlCi0gIC8vICAgIGFyZ3VtZW50IGV4cHJlc3Npb24KLSAgaW5saW5lIG5vIGhhc19jb25zdHJhaW50c18oLi4uKTsKLSNlbHNlCi0gIHRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLSAgaW5saW5lIHllcyBoYXNfY29uc3RyYWludHNfKE1vZGVsKiwgd3JhcF9jb25zdHJhaW50czxNb2RlbCwmTW9kZWw6OmNvbnN0cmFpbnRzPiogPSAwKTsKLSAgaW5saW5lIG5vIGhhc19jb25zdHJhaW50c18oLi4uKTsKLSNlbmRpZgotfQotCi0vLyBUaGlzIHdvdWxkIGJlIGNhbGxlZCAiZGV0YWlsOjpoYXNfY29uc3RyYWludHMsIiBidXQgaXQgaGFzIGEgc3Ryb25nCi0vLyB0ZW5kZW5jeSB0byBzaG93IHVwIGluIGVycm9yIG1lc3NhZ2VzLgotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IG5vdF9zYXRpc2ZpZWQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wKLSAgICAgICwgdmFsdWUgPSBzaXplb2YoIGRldGFpbDo6aGFzX2NvbnN0cmFpbnRzXygoTW9kZWwqKTApICkgPT0gc2l6ZW9mKGRldGFpbDo6eWVzKSApOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6Y29uY2VwdHM6OmRldGFpbAotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9ERVRBSUxfSEFTX0NPTlNUUkFJTlRTX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL21zdmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0L2RldGFpbC9tc3ZjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAwMmZmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL21zdmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA2LiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkNFUFRfQ0hFQ0tfTVNWQ19ORE5CT09TVF9EV0EyMDA2NDI5X0hQUAotIyBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9DSEVDS19NU1ZDX05ETkJPT1NUX0RXQTIwMDY0MjlfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwPgotCi0jIGlmZGVmIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2hhc19jb25zdHJhaW50cy5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyBlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBjb25jZXB0cyB7Ci0KLQotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IGNoZWNrCi17Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZChNb2RlbCogeCkKLSAgICB7Ci0gICAgICAgIHgtPn5Nb2RlbCgpOwotICAgIH0KLX07Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXN0cnVjdCBmYWlsZWQge307Ci10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgY2hlY2s8ZmFpbGVkICoqKioqKioqKioqKiBNb2RlbDo6KioqKioqKioqKioqPgotewotICAgIHZpcnR1YWwgdm9pZCBmYWlsZWQoTW9kZWwqIHgpCi0gICAgewotICAgICAgICB4LT5+TW9kZWwoKTsKLSAgICB9Ci19OwotIyBlbmRpZgotCi0jIGlmZGVmIE5ETkJPT1NUX09MRF9DT05DRVBUX1NVUFBPUlQKLSAgCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0gIC8vIE5vIG5lZWQgZm9yIGEgdmlydHVhbCBmdW5jdGlvbiBoZXJlLCBzaW5jZSBldmFsdWF0aW5nCi0gIC8vIG5vdF9zYXRpc2ZpZWQgYmVsb3cgd2lsbCBoYXZlIGFscmVhZHkgaW5zdGFudGlhdGVkIHRoZQotICAvLyBjb25zdHJhaW50cygpIG1lbWJlci4KLSAgc3RydWN0IGNvbnN0cmFpbnQge307Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBNb2RlbD4KLXN0cnVjdCByZXF1aXJlCi0gIDogbXBsOjppZl9jPAotICAgICAgICBub3Rfc2F0aXNmaWVkPE1vZGVsPjo6dmFsdWUKLSAgICAgICwgZGV0YWlsOjpjb25zdHJhaW50Ci0jIGlmbmRlZiBORE5CT09TVF9OT19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICAgICAsIGNoZWNrPE1vZGVsPgotIyBlbHNlCi0gICAgICAsIGNoZWNrPGZhaWxlZCAqKioqKioqKioqKiogTW9kZWw6OioqKioqKioqKioqKj4KLSMgZW5kaWYgCi0gICAgICAgID46OnR5cGUKLXt9OwotICAgICAgCi0jIGVsc2UKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgcmVxdWlyZQotIyBpZm5kZWYgTkROQk9PU1RfTk9fUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIDogY2hlY2s8TW9kZWw+Ci0jIGVsc2UKLSAgICA6IGNoZWNrPGZhaWxlZCAqKioqKioqKioqKiogTW9kZWw6OioqKioqKioqKioqKj4KLSMgZW5kaWYgCi17fTsKLSAgCi0jIGVuZGlmCi0gICAgCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLQotLy8KLS8vIFRoZSBpdGVyYXRvciBsaWJyYXJ5IHNlZXMgc29tZSByZWFsbHkgc3RyYW5nZSBlcnJvcnMgdW5sZXNzIHdlCi0vLyBkbyB0aGluZ3MgdGhpcyB3YXkuCi0vLwotdGVtcGxhdGUgPGNsYXNzIE1vZGVsPgotc3RydWN0IHJlcXVpcmU8dm9pZCgqKShNb2RlbCk+Ci17Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZChNb2RlbCopCi0gICAgewotICAgICAgICByZXF1aXJlPE1vZGVsPigpOwotICAgIH0KLX07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICBcCi1lbnVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYm9vc3RfY29uY2VwdF9jaGVjayxfX0xJTkVfXykgPSAgICBcCi0gICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmNvbmNlcHRzOjpyZXF1aXJlPE1vZGVsRm5QdHI+KSAgICBcCi19Ci0gIAotIyBlbHNlIC8vIE5vdCB2Yy03LjEKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1yZXF1aXJlPE1vZGVsPgotcmVxdWlyZV8odm9pZCgqKShNb2RlbCkpOwotICAKLSMgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUX0ZOKCBNb2RlbEZuUHRyICkgICAgICAgICAgXAotZW51bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYm9vc3RfY29uY2VwdF9jaGVjayxfX0xJTkVfXykgPSAgICAgICAgXAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmNvbmNlcHRzOjpyZXF1aXJlXygoTW9kZWxGblB0cikwKSkgXAotfQotICAKLSMgZW5kaWYKLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX0NIRUNLX01TVkNfTkROQk9PU1RfRFdBMjAwNjQyOV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC91c2FnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHQvdXNhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmU0OTc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uY2VwdC91c2FnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBORE5CT09TVF9DT05DRVBUX1VTQUdFX05ETkJPT1NUX0RXQTIwMDY5MTlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX1VTQUdFX05ETkJPT1NUX0RXQTIwMDY5MTlfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uY2VwdC9hc3NlcnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2JhY2t3YXJkX2NvbXBhdGliaWxpdHkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgY29uY2VwdHMgeyAKLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShtb2RlbCkgfm1vZGVsKCkKLQotIyBlbHNlIAotCi10ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci1zdHJ1Y3QgdXNhZ2VfcmVxdWlyZW1lbnRzCi17Ci0gICAgfnVzYWdlX3JlcXVpcmVtZW50cygpIHsgKChNb2RlbCopMCktPn5Nb2RlbCgpOyB9Ci19OwotCi0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8PSAzKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UobW9kZWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgbW9kZWwoKTsgLyogYXQgbGVhc3QgMi45NiBhbmQgMy40LjMgYm90aCBuZWVkIHRoaXMgOiggKi8gICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChuZG5ib29zdDo6Y29uY2VwdHM6OnVzYWdlX3JlcXVpcmVtZW50czxtb2RlbD4pKTsgXAotICAgICAgfm1vZGVsKCkKLQotIyAgZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UobW9kZWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5kbmJvb3N0Ojpjb25jZXB0czo6dXNhZ2VfcmVxdWlyZW1lbnRzPG1vZGVsPikpOyBcCi0gICAgICB+bW9kZWwoKQotCi0jICBlbmRpZgotCi0jIGVuZGlmIAotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmNvbmNlcHRzCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05DRVBUX1VTQUdFX05ETkJPT1NUX0RXQTIwMDY5MTlfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25jZXB0X2NoZWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E0MzRmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4MyArMCwwIEBACi0vLwotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAyMDAwLgotLy8gQ29weXJpZ2h0IDIwMDIgVGhlIFRydXN0ZWVzIG9mIEluZGlhbmEgVW5pdmVyc2l0eS4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gUmV2aXNpb24gSGlzdG9yeToKLS8vICAgMDUgTWF5ICAgMjAwMTogV29ya2Fyb3VuZHMgZm9yIEhQIGFDQyBmcm9tIFRob21hcyBNYXRlbGljaC4gKEplcmVteSBTaWVrKQotLy8gICAwMiBBcHJpbCAyMDAxOiBSZW1vdmVkIGxpbWl0cyBoZWFkZXIgYWx0b2dldGhlci4gKEplcmVteSBTaWVrKQotLy8gICAwMSBBcHJpbCAyMDAxOiBNb2RpZmllZCB0byB1c2UgbmV3IDxuZG5ib29zdC9saW1pdHMuaHBwPiBoZWFkZXIuIChKTWFkZG9jaykKLS8vCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmNlcHRfY2hlY2sgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09OQ0VQVF9DSEVDS1NfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05DRVBUX0NIRUNLU19IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2Fzc2VydC5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb252ZXJzaW9uX3RyYWl0cy5ocHA+Ci0jIGluY2x1ZGUgPHV0aWxpdHk+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvdXNhZ2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0gIC8vCi0gIC8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSAgLy8KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgTW9kZWw+Ci0gIGlubGluZSB2b2lkIGZ1bmN0aW9uX3JlcXVpcmVzKE1vZGVsKiA9IDApCi0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChNb2RlbCkpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoVCBjb25zdCYpIHt9Ci0KLSMgIGRlZmluZSBORE5CT09TVF9DTEFTU19SRVFVSVJFKHR5cGVfdmFyLCBucywgY29uY2VwdCkgICAgXAotICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChuczo6Y29uY2VwdDx0eXBlX3Zhcj4pKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQ0xBU1NfUkVRVUlSRTIodHlwZV92YXIxLCB0eXBlX3ZhcjIsIG5zLCBjb25jZXB0KSAgIFwKLSAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgobnM6OmNvbmNlcHQ8dHlwZV92YXIxLHR5cGVfdmFyMj4pKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQ0xBU1NfUkVRVUlSRTModHYxLCB0djIsIHR2MywgbnMsIGNvbmNlcHQpICBcCi0gICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5zOjpjb25jZXB0PHR2MSx0djIsdHYzPikpCi0KLSMgIGRlZmluZSBORE5CT09TVF9DTEFTU19SRVFVSVJFNCh0djEsIHR2MiwgdHYzLCB0djQsIG5zLCBjb25jZXB0KSBcCi0gICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKG5zOjpjb25jZXB0PHR2MSx0djIsdHYzLHR2ND4pKQotCi0KLSAgLy8KLSAgLy8gQmVnaW4gY29uY2VwdCBkZWZpbml0aW9ucwotICAvLwotICBORE5CT09TVF9jb25jZXB0KEludGVnZXIsIChUKSkKLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShJbnRlZ2VyKQotICAgICAgICB7Ci0gICAgICAgICAgICB4LmVycm9yX3R5cGVfbXVzdF9iZV9hbl9pbnRlZ2VyX3R5cGUoKTsKLSAgICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIFQgeDsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjxjaGFyPiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8c2lnbmVkIGNoYXI+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjx1bnNpZ25lZCBjaGFyPiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8c2hvcnQ+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjx1bnNpZ25lZCBzaG9ydD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPGludD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPHVuc2lnbmVkIGludD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPGxvbmc+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjx1bnNpZ25lZCBsb25nPiB7fTsKLSMgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSW50ZWdlcjwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiB7fTsKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgdGVtcGxhdGUgPD4gc3RydWN0IEludGVnZXI8X19pbnQ2ND4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBJbnRlZ2VyPHVuc2lnbmVkIF9faW50NjQ+IHt9OwotIyBlbmRpZgotCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2lnbmVkSW50ZWdlciwoVCkpIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNpZ25lZEludGVnZXIpIHsKLSAgICAgIHguZXJyb3JfdHlwZV9tdXN0X2JlX2Ffc2lnbmVkX2ludGVnZXJfdHlwZSgpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVCB4OwotICB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2lnbmVkSW50ZWdlcjxzaWduZWQgY2hhcj4geyB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2lnbmVkSW50ZWdlcjxzaG9ydD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPGludD4ge307Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPGxvbmc+IHt9OwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4ge307Ci0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBTaWduZWRJbnRlZ2VyPF9faW50NjQ+IHt9OwotIyBlbmRpZgotCi0gIE5ETkJPT1NUX2NvbmNlcHQoVW5zaWduZWRJbnRlZ2VyLChUKSkgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoVW5zaWduZWRJbnRlZ2VyKSB7Ci0gICAgICB4LmVycm9yX3R5cGVfbXVzdF9iZV9hbl91bnNpZ25lZF9pbnRlZ2VyX3R5cGUoKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFQgeDsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyPHVuc2lnbmVkIGNoYXI+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyPHVuc2lnbmVkIHNob3J0PiB7fTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlcjx1bnNpZ25lZCBpbnQ+IHt9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyPHVuc2lnbmVkIGxvbmc+IHt9OwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXI8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4ge307Ci0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXI8dW5zaWduZWQgX19pbnQ2ND4ge307Ci0jIGVuZGlmCi0KLSAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgLy8gQmFzaWMgQ29uY2VwdHMKLQotICBORE5CT09TVF9jb25jZXB0KERlZmF1bHRDb25zdHJ1Y3RpYmxlLChUVCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKERlZmF1bHRDb25zdHJ1Y3RpYmxlKSB7Ci0gICAgICBUVCBhOyAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgZGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGEpOwotICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEFzc2lnbmFibGUsKFRUKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQXNzaWduYWJsZSkgewotI2lmICFkZWZpbmVkKF9JVEVSQVRPUl8pIC8vIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yIGJyb2tlbiBmb3IgVkMrKyBTVEwKLSAgICAgIGEgPSBiOyAgICAgICAgICAgICAvLyByZXF1aXJlIGFzc2lnbm1lbnQgb3BlcmF0b3IKLSNlbmRpZgotICAgICAgY29uc3RfY29uc3RyYWludHMoYik7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IFRUJiB4KSB7Ci0jaWYgIWRlZmluZWQoX0lURVJBVE9SXykgLy8gYmFja19pbnNlcnRfaXRlcmF0b3IgYnJva2VuIGZvciBWQysrIFNUTAotICAgICAgYSA9IHg7ICAgICAgICAgICAgICAvLyBjb25zdCByZXF1aXJlZCBmb3IgYXJndW1lbnQgdG8gYXNzaWdubWVudAotI2Vsc2UKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyh4KTsKLSNlbmRpZgotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgYTsKLSAgICBUVCBiOwotICB9OwotCi0KLSAgTkROQk9PU1RfY29uY2VwdChDb3B5Q29uc3RydWN0aWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb3B5Q29uc3RydWN0aWJsZSkgewotICAgICAgVFQgYShiKTsgICAgICAgICAgICAvLyByZXF1aXJlIGNvcHkgY29uc3RydWN0b3IKLSAgICAgIFRUKiBwdHIgPSAmYTsgICAgICAgLy8gcmVxdWlyZSBhZGRyZXNzIG9mIG9wZXJhdG9yCi0gICAgICBjb25zdF9jb25zdHJhaW50cyhhKTsKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhwdHIpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBUVCYgYSkgewotICAgICAgVFQgYyhhKTsgICAgICAgICAgICAvLyByZXF1aXJlIGNvbnN0IGNvcHkgY29uc3RydWN0b3IKLSAgICAgIGNvbnN0IFRUKiBwdHIgPSAmYTsgLy8gcmVxdWlyZSBjb25zdCBhZGRyZXNzIG9mIG9wZXJhdG9yCi0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocHRyKTsKLSAgICB9Ci0gICAgVFQgYjsKLSAgfTsKLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKQotIyBwcmFnbWEgd2FybmluZyggcHVzaCApCi0jIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDUxMCApIC8vIGRlZmF1bHQgY29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ2MTAgKSAvLyBvYmplY3QgJ2NsYXNzJyBjYW4gbmV2ZXIgYmUgaW5zdGFudGlhdGVkIC0gdXNlci1kZWZpbmVkIGNvbnN0cnVjdG9yIHJlcXVpcmVkCi0jZW5kaWYKLSAgLy8gVGhlIFNHSSBTVEwgdmVyc2lvbiBvZiBBc3NpZ25hYmxlIHJlcXVpcmVzIGNvcHkgY29uc3RydWN0b3IgYW5kIG9wZXJhdG9yPQotICBORE5CT09TVF9jb25jZXB0KFNHSUFzc2lnbmFibGUsKFRUKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoU0dJQXNzaWduYWJsZSkgewotICAgICAgVFQgYyhhKTsKLSNpZiAhZGVmaW5lZChfSVRFUkFUT1JfKSAvLyBiYWNrX2luc2VydF9pdGVyYXRvciBicm9rZW4gZm9yIFZDKysgU1RMCi0gICAgICBhID0gYjsgICAgICAgICAgICAgIC8vIHJlcXVpcmUgYXNzaWdubWVudCBvcGVyYXRvcgotI2VuZGlmCi0gICAgICBjb25zdF9jb25zdHJhaW50cyhiKTsKLSAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgVFQmIHgpIHsKLSAgICAgIFRUIGMoeCk7Ci0jaWYgIWRlZmluZWQoX0lURVJBVE9SXykgLy8gYmFja19pbnNlcnRfaXRlcmF0b3IgYnJva2VuIGZvciBWQysrIFNUTAotICAgICAgYSA9IHg7ICAgICAgICAgICAgICAvLyBjb25zdCByZXF1aXJlZCBmb3IgYXJndW1lbnQgdG8gYXNzaWdubWVudAotI2VuZGlmCi0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgfQotICAgIFRUIGE7Ci0gICAgVFQgYjsKLSAgfTsKLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikKLSMgcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYKLQotICBORE5CT09TVF9jb25jZXB0KENvbnZlcnRpYmxlLChYKShZKSkKLSAgewotICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQ29udmVydGlibGUpIHsKLSAgICAgIFkgeSA9IHg7Ci0gICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoeSk7Ci0gICAgfQotICAgcHJpdmF0ZToKLSAgICBYIHg7Ci0gIH07Ci0KLSAgLy8gVGhlIEMrKyBzdGFuZGFyZCByZXF1aXJlbWVudHMgZm9yIG1hbnkgY29uY2VwdHMgdGFsayBhYm91dCByZXR1cm4KLSAgLy8gdHlwZXMgdGhhdCBtdXN0IGJlICJjb252ZXJ0aWJsZSB0byBib29sIi4gIFRoZSBwcm9ibGVtIHdpdGggdGhpcwotICAvLyByZXF1aXJlbWVudCBpcyB0aGF0IGl0IGxlYXZlcyB0aGUgZG9vciBvcGVuIGZvciBldmlsIHByb3hpZXMgdGhhdAotICAvLyBkZWZpbmUgdGhpbmdzIGxpa2Ugb3BlcmF0b3J8fCB3aXRoIHN0cmFuZ2UgcmV0dXJuIHR5cGVzLiAgVHdvCi0gIC8vIHBvc3NpYmxlIHNvbHV0aW9ucyBhcmU6Ci0gIC8vIDEpIHJlcXVpcmUgdGhlIHJldHVybiB0eXBlIHRvIGJlIGV4YWN0bHkgYm9vbAotICAvLyAyKSBzdGF5IHdpdGggY29udmVydGlibGUgdG8gYm9vbCwgYW5kIGFsc28KLSAgLy8gICAgc3BlY2lmeSBzdHVmZiBhYm91dCBhbGwgdGhlIGxvZ2ljYWwgb3BlcmF0b3JzLgotICAvLyBGb3Igbm93IHdlIGp1c3QgdGVzdCBmb3IgY29udmVydGlibGUgdG8gYm9vbC4KLSAgdGVtcGxhdGUgPGNsYXNzIFRUPgotICB2b2lkIHJlcXVpcmVfYm9vbGVhbl9leHByKGNvbnN0IFRUJiB0KSB7Ci0gICAgYm9vbCB4ID0gdDsKLSAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoeCk7Ci0gIH0KLQotICBORE5CT09TVF9jb25jZXB0KEVxdWFsaXR5Q29tcGFyYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShFcXVhbGl0eUNvbXBhcmFibGUpIHsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgPT0gYik7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhICE9IGIpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgVFQgYSwgYjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KExlc3NUaGFuQ29tcGFyYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShMZXNzVGhhbkNvbXBhcmFibGUpIHsKLSAgICAgIHJlcXVpcmVfYm9vbGVhbl9leHByKGEgPCBiKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGEsIGI7Ci0gIH07Ci0KLSAgLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRvIFNHSSBTVEwncyBMZXNzVGhhbkNvbXBhcmFibGUuCi0gIE5ETkJPT1NUX2NvbmNlcHQoQ29tcGFyYWJsZSwoVFQpKQotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb21wYXJhYmxlKSB7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhIDwgYik7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhID4gYik7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihhIDw9IGIpOwotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoYSA+PSBiKTsKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGEsIGI7Ci0gIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9QUkVESUNBVEVfT1BfQ09OU1RSQUlOVChPUCxOQU1FKSAgICBcCi0gIE5ETkJPT1NUX2NvbmNlcHQoTkFNRSwgKEZpcnN0KShTZWNvbmQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTkFNRSkgeyAodm9pZCljb25zdHJhaW50c18oKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHByaXZhdGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBib29sIGNvbnN0cmFpbnRzXygpIHsgcmV0dXJuIGEgT1AgYjsgfSAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRmlyc3QgYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFNlY29uZCBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKE9QLE5BTUUpICAgIFwKLSAgTkROQk9PU1RfY29uY2VwdChOQU1FLCAoUmV0KShGaXJzdCkoU2Vjb25kKSkgICAgICAgICAgICAgICAgIFwKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTkFNRSkgeyAodm9pZCljb25zdHJhaW50c18oKTsgfSAgICAgICAgICAgICAgICAgICAgIFwKLSAgcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIFJldCBjb25zdHJhaW50c18oKSB7IHJldHVybiBhIE9QIGI7IH0gICAgICAgICAgICAgICAgIFwKLSAgICAgIEZpcnN0IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIFNlY29uZCBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfQotCi0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfUFJFRElDQVRFX09QX0NPTlNUUkFJTlQoPT0sIEVxdWFsT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKCE9LCBOb3RFcXVhbE9wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9QUkVESUNBVEVfT1BfQ09OU1RSQUlOVCg8LCBMZXNzVGhhbk9wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9QUkVESUNBVEVfT1BfQ09OU1RSQUlOVCg8PSwgTGVzc0VxdWFsT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKD4sIEdyZWF0ZXJUaGFuT3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX1BSRURJQ0FURV9PUF9DT05TVFJBSU5UKD49LCBHcmVhdGVyRXF1YWxPcCk7Ci0KLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKCssIFBsdXNPcCk7Ci0gIE5ETkJPT1NUX0RFRklORV9CSU5BUllfT1BFUkFUT1JfQ09OU1RSQUlOVCgqLCBUaW1lc09wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKC8sIERpdmlkZU9wKTsKLSAgTkROQk9PU1RfREVGSU5FX0JJTkFSWV9PUEVSQVRPUl9DT05TVFJBSU5UKC0sIFN1YnRyYWN0T3ApOwotICBORE5CT09TVF9ERUZJTkVfQklOQVJZX09QRVJBVE9SX0NPTlNUUkFJTlQoJSwgTW9kT3ApOwotCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIEZ1bmN0aW9uIE9iamVjdCBDb25jZXB0cwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoR2VuZXJhdG9yLChGdW5jKShSZXR1cm4pKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEdlbmVyYXRvcikgeyB0ZXN0KGlzX3ZvaWQ8UmV0dXJuPigpKTsgfQotCi0gICBwcml2YXRlOgotICAgICAgdm9pZCB0ZXN0KG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLSAgICAgIHsKLSAgICAgICAgICAvLyBEbyB3ZSByZWFsbHkgd2FudCBhIHJlZmVyZW5jZSBoZXJlPwotICAgICAgICAgIGNvbnN0IFJldHVybiYgciA9IGYoKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgdGVzdChuZG5ib29zdDo6bXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICBmKCk7Ci0gICAgICB9Ci0KLSAgICAgIEZ1bmMgZjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFVuYXJ5RnVuY3Rpb24sKEZ1bmMpKFJldHVybikoQXJnKSkKLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShVbmFyeUZ1bmN0aW9uKSB7IHRlc3QoaXNfdm9pZDxSZXR1cm4+KCkpOyB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIHRlc3QobmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotICAgICAgewotICAgICAgICAgIGYoYXJnKTsgICAgICAgICAgICAgICAvLyAicHJpbWluZyB0aGUgcHVtcCIgdGhpcyB3YXkga2VlcHMgbXN2YzYgaGFwcHkgKElDRSkKLSAgICAgICAgICBSZXR1cm4gciA9IGYoYXJnKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgdGVzdChuZG5ib29zdDo6bXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICBmKGFyZyk7Ci0gICAgICB9Ci0KLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA+IDMpKSkKLSAgICAgIC8vIERlY2xhcmUgYSBkdW1teSBjb25zdHJ1a3RvciB0byBtYWtlIGdjYyBoYXBweS4KLSAgICAgIC8vIEl0IHNlZW1zIHRoZSBjb21waWxlciBjYW4gbm90IGdlbmVyYXRlIGEgc2Vuc2libGUgY29uc3RydWN0b3Igd2hlbiB0aGlzIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgcmVmZW5jZSB0eXBlLgotICAgICAgLy8gKHdhcm5pbmc6IG5vbi1zdGF0aWMgcmVmZXJlbmNlICJjb25zdCBkb3VibGUmIG5kbmJvb3N0OjpVbmFyeUZ1bmN0aW9uPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBVbmFyeUZ1bmN0aW9uKCk7Ci0jZW5kaWYKLQotICAgICAgRnVuYyBmOwotICAgICAgQXJnIGFyZzsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJpbmFyeUZ1bmN0aW9uLChGdW5jKShSZXR1cm4pKEZpcnN0KShTZWNvbmQpKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpbmFyeUZ1bmN0aW9uKSB7IHRlc3QoaXNfdm9pZDxSZXR1cm4+KCkpOyB9Ci0gICBwcml2YXRlOgotICAgICAgdm9pZCB0ZXN0KG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLSAgICAgIHsKLSAgICAgICAgICBmKGZpcnN0LHNlY29uZCk7Ci0gICAgICAgICAgUmV0dXJuIHIgPSBmKGZpcnN0LCBzZWNvbmQpOyAvLyByZXF1aXJlIG9wZXJhdG9yKCkKLSAgICAgICAgICAodm9pZClyOwotICAgICAgfQotCi0gICAgICB2b2lkIHRlc3QobmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi0gICAgICB7Ci0gICAgICAgICAgZihmaXJzdCxzZWNvbmQpOwotICAgICAgfQotCi0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPiAzKSkpCi0gICAgICAvLyBEZWNsYXJlIGEgZHVtbXkgY29uc3RydWN0b3IgdG8gbWFrZSBnY2MgaGFwcHkuCi0gICAgICAvLyBJdCBzZWVtcyB0aGUgY29tcGlsZXIgY2FuIG5vdCBnZW5lcmF0ZSBhIHNlbnNpYmxlIGNvbnN0cnVjdG9yIHdoZW4gdGhpcyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHJlZmVuY2UgdHlwZS4KLSAgICAgIC8vICh3YXJuaW5nOiBub24tc3RhdGljIHJlZmVyZW5jZSAiY29uc3QgZG91YmxlJiBuZG5ib29zdDo6QmluYXJ5RnVuY3Rpb248WW91ckNsYXNzSGVyZT46OmFyZyIKLSAgICAgIC8vIGluIGNsYXNzIHdpdGhvdXQgYSBjb25zdHJ1Y3RvciBbLVd1bmluaXRpYWxpemVkXSkKLSAgICAgIEJpbmFyeUZ1bmN0aW9uKCk7Ci0jZW5kaWYKLQotICAgICAgRnVuYyBmOwotICAgICAgRmlyc3QgZmlyc3Q7Ci0gICAgICBTZWNvbmQgc2Vjb25kOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoVW5hcnlQcmVkaWNhdGUsKEZ1bmMpKEFyZykpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFVuYXJ5UHJlZGljYXRlKSB7Ci0gICAgICByZXF1aXJlX2Jvb2xlYW5fZXhwcihmKGFyZykpOyAvLyByZXF1aXJlIG9wZXJhdG9yKCkgcmV0dXJuaW5nIGJvb2wKLSAgICB9Ci0gICBwcml2YXRlOgotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCBORE5CT09TVF9URVNURURfQVQoNCkgXAotICAgICAgICAgICAgICAgICAgICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID4gMykpKQotICAgICAgLy8gRGVjbGFyZSBhIGR1bW15IGNvbnN0cnVjdG9yIHRvIG1ha2UgZ2NjIGhhcHB5LgotICAgICAgLy8gSXQgc2VlbXMgdGhlIGNvbXBpbGVyIGNhbiBub3QgZ2VuZXJhdGUgYSBzZW5zaWJsZSBjb25zdHJ1Y3RvciB3aGVuIHRoaXMgaXMgaW5zdGFudGlhdGVkIHdpdGggYSByZWZlbmNlIHR5cGUuCi0gICAgICAvLyAod2FybmluZzogbm9uLXN0YXRpYyByZWZlcmVuY2UgImNvbnN0IGRvdWJsZSYgbmRuYm9vc3Q6OlVuYXJ5UHJlZGljYXRlPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBVbmFyeVByZWRpY2F0ZSgpOwotI2VuZGlmCi0KLSAgICBGdW5jIGY7Ci0gICAgQXJnIGFyZzsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJpbmFyeVByZWRpY2F0ZSwoRnVuYykoRmlyc3QpKFNlY29uZCkpCi0gIHsKLSAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpbmFyeVByZWRpY2F0ZSkgewotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoZihhLCBiKSk7IC8vIHJlcXVpcmUgb3BlcmF0b3IoKSByZXR1cm5pbmcgYm9vbAotICAgIH0KLSAgIHByaXZhdGU6Ci0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPiAzKSkpCi0gICAgICAvLyBEZWNsYXJlIGEgZHVtbXkgY29uc3RydWN0b3IgdG8gbWFrZSBnY2MgaGFwcHkuCi0gICAgICAvLyBJdCBzZWVtcyB0aGUgY29tcGlsZXIgY2FuIG5vdCBnZW5lcmF0ZSBhIHNlbnNpYmxlIGNvbnN0cnVjdG9yIHdoZW4gdGhpcyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHJlZmVuY2UgdHlwZS4KLSAgICAgIC8vICh3YXJuaW5nOiBub24tc3RhdGljIHJlZmVyZW5jZSAiY29uc3QgZG91YmxlJiBuZG5ib29zdDo6QmluYXJ5UHJlZGljYXRlPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBCaW5hcnlQcmVkaWNhdGUoKTsKLSNlbmRpZgotICAgIEZ1bmMgZjsKLSAgICBGaXJzdCBhOwotICAgIFNlY29uZCBiOwotICB9OwotCi0gIC8vIHVzZSB0aGlzIHdoZW4gZnVuY3RvciBpcyB1c2VkIGluc2lkZSBhIGNvbnRhaW5lciBjbGFzcyBsaWtlIHN0ZDo6c2V0Ci0gIE5ETkJPT1NUX2NvbmNlcHQoQ29uc3RfQmluYXJ5UHJlZGljYXRlLChGdW5jKShGaXJzdCkoU2Vjb25kKSkKLSAgICA6IEJpbmFyeVByZWRpY2F0ZTxGdW5jLCBGaXJzdCwgU2Vjb25kPgotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb25zdF9CaW5hcnlQcmVkaWNhdGUpIHsKLSAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGYpOwotICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBGdW5jJiBmdW4pIHsKLSAgICAgIC8vIG9wZXJhdG9yKCkgbXVzdCBiZSBhIGNvbnN0IG1lbWJlciBmdW5jdGlvbgotICAgICAgcmVxdWlyZV9ib29sZWFuX2V4cHIoZnVuKGEsIGIpKTsKLSAgICB9Ci0jaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPiAzKSkpCi0gICAgICAvLyBEZWNsYXJlIGEgZHVtbXkgY29uc3RydWN0b3IgdG8gbWFrZSBnY2MgaGFwcHkuCi0gICAgICAvLyBJdCBzZWVtcyB0aGUgY29tcGlsZXIgY2FuIG5vdCBnZW5lcmF0ZSBhIHNlbnNpYmxlIGNvbnN0cnVjdG9yIHdoZW4gdGhpcyBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHJlZmVuY2UgdHlwZS4KLSAgICAgIC8vICh3YXJuaW5nOiBub24tc3RhdGljIHJlZmVyZW5jZSAiY29uc3QgZG91YmxlJiBuZG5ib29zdDo6Q29uc3RfQmluYXJ5UHJlZGljYXRlPFlvdXJDbGFzc0hlcmU+OjphcmciCi0gICAgICAvLyBpbiBjbGFzcyB3aXRob3V0IGEgY29uc3RydWN0b3IgWy1XdW5pbml0aWFsaXplZF0pCi0gICAgICBDb25zdF9CaW5hcnlQcmVkaWNhdGUoKTsKLSNlbmRpZgotCi0gICAgRnVuYyBmOwotICAgIEZpcnN0IGE7Ci0gICAgU2Vjb25kIGI7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChBZGFwdGFibGVHZW5lcmF0b3IsKEZ1bmMpKFJldHVybikpCi0gICAgOiBHZW5lcmF0b3I8RnVuYywgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGU+Ci0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQWRhcHRhYmxlR2VuZXJhdG9yKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTxyZXN1bHRfdHlwZSwgUmV0dXJuPikpOwotICAgICAgfQotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQWRhcHRhYmxlVW5hcnlGdW5jdGlvbiwoRnVuYykoUmV0dXJuKShBcmcpKQotICAgIDogVW5hcnlGdW5jdGlvbjxGdW5jLCB0eXBlbmFtZSBGdW5jOjpyZXN1bHRfdHlwZSwgdHlwZW5hbWUgRnVuYzo6YXJndW1lbnRfdHlwZT4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmM6OnJlc3VsdF90eXBlIHJlc3VsdF90eXBlOwotCi0gICAgICB+QWRhcHRhYmxlVW5hcnlGdW5jdGlvbigpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPHJlc3VsdF90eXBlLCBSZXR1cm4+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPEFyZywgYXJndW1lbnRfdHlwZT4pKTsKLSAgICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEFkYXB0YWJsZUJpbmFyeUZ1bmN0aW9uLChGdW5jKShSZXR1cm4pKEZpcnN0KShTZWNvbmQpKQotICAgIDogQmluYXJ5RnVuY3Rpb248Ci0gICAgICAgICAgRnVuYwotICAgICAgICAsIHR5cGVuYW1lIEZ1bmM6OnJlc3VsdF90eXBlCi0gICAgICAgICwgdHlwZW5hbWUgRnVuYzo6Zmlyc3RfYXJndW1lbnRfdHlwZQotICAgICAgICAsIHR5cGVuYW1lIEZ1bmM6OnNlY29uZF9hcmd1bWVudF90eXBlCi0gICAgICA+Ci0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuYzo6Zmlyc3RfYXJndW1lbnRfdHlwZSBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuYzo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgIH5BZGFwdGFibGVCaW5hcnlGdW5jdGlvbigpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPHJlc3VsdF90eXBlLCBSZXR1cm4+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKENvbnZlcnRpYmxlPEZpcnN0LCBmaXJzdF9hcmd1bWVudF90eXBlPikpOwotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTxTZWNvbmQsIHNlY29uZF9hcmd1bWVudF90eXBlPikpOwotICAgICAgfQotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQWRhcHRhYmxlUHJlZGljYXRlLChGdW5jKShBcmcpKQotICAgIDogVW5hcnlQcmVkaWNhdGU8RnVuYywgQXJnPgotICAgICwgQWRhcHRhYmxlVW5hcnlGdW5jdGlvbjxGdW5jLCBib29sLCBBcmc+Ci0gIHsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEFkYXB0YWJsZUJpbmFyeVByZWRpY2F0ZSwoRnVuYykoRmlyc3QpKFNlY29uZCkpCi0gICAgOiBCaW5hcnlQcmVkaWNhdGU8RnVuYywgRmlyc3QsIFNlY29uZD4KLSAgICAsIEFkYXB0YWJsZUJpbmFyeUZ1bmN0aW9uPEZ1bmMsIGJvb2wsIEZpcnN0LCBTZWNvbmQ+Ci0gIHsKLSAgfTsKLQotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBDb25jZXB0cwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoSW5wdXRJdGVyYXRvciwoVFQpKQotICAgIDogQXNzaWduYWJsZTxUVD4KLSAgICAsIEVxdWFsaXR5Q29tcGFyYWJsZTxUVD4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8VFQ+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OnBvaW50ZXIgcG9pbnRlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPFRUPjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoSW5wdXRJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKFNpZ25lZEludGVnZXI8ZGlmZmVyZW5jZV90eXBlPikpOwotICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8aXRlcmF0b3JfY2F0ZWdvcnksIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnPikpOwotCi0gICAgICAgIFRUIGooaSk7Ci0gICAgICAgICh2b2lkKSppOyAgICAgICAgICAgLy8gcmVxdWlyZSBkZXJlZmVyZW5jZSBvcGVyYXRvcgotICAgICAgICArK2o7ICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgcHJlaW5jcmVtZW50IG9wZXJhdG9yCi0gICAgICAgIGkrKzsgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwb3N0aW5jcmVtZW50IG9wZXJhdG9yCi0gICAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGk7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChPdXRwdXRJdGVyYXRvciwoVFQpKFZhbHVlVCkpCi0gICAgOiBBc3NpZ25hYmxlPFRUPgotICB7Ci0gICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShPdXRwdXRJdGVyYXRvcikgewotCi0gICAgICArK2k7ICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgcHJlaW5jcmVtZW50IG9wZXJhdG9yCi0gICAgICBpKys7ICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgcG9zdGluY3JlbWVudCBvcGVyYXRvcgotICAgICAgKmkrKyA9IHQ7ICAgICAgICAgICAvLyByZXF1aXJlIHBvc3RpbmNyZW1lbnQgYW5kIGFzc2lnbm1lbnQKLSAgICB9Ci0gICBwcml2YXRlOgotICAgIFRUIGksIGo7Ci0gICAgVmFsdWVUIHQ7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChGb3J3YXJkSXRlcmF0b3IsKFRUKSkKLSAgICA6IElucHV0SXRlcmF0b3I8VFQ+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoRm9yd2FyZEl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBGb3J3YXJkSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5Ci0gICAgICAgICAgICAsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcKLSAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPFRUPjo6cmVmZXJlbmNlIHIgPSAqaTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICBUVCBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9Gb3J3YXJkSXRlcmF0b3IsKFRUKSkKLSAgICA6IEZvcndhcmRJdGVyYXRvcjxUVD4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdXRhYmxlX0ZvcndhcmRJdGVyYXRvcikgewotICAgICAgICAqaSsrID0gKmk7ICAgICAgICAgLy8gcmVxdWlyZSBwb3N0aW5jcmVtZW50IGFuZCBhc3NpZ25tZW50Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgVFQgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJpZGlyZWN0aW9uYWxJdGVyYXRvciwoVFQpKQotICAgIDogRm9yd2FyZEl0ZXJhdG9yPFRUPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJpZGlyZWN0aW9uYWxJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoQ29udmVydGlibGU8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yOjppdGVyYXRvcl9jYXRlZ29yeQotICAgICAgICAgICAgLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnCi0gICAgICAgICAgPikpOwotCi0gICAgICAgICAgLS1pOyAgICAgICAgICAgICAgICAvLyByZXF1aXJlIHByZWRlY3JlbWVudCBvcGVyYXRvcgotICAgICAgICAgIGktLTsgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwb3N0ZGVjcmVtZW50IG9wZXJhdG9yCi0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgVFQgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLChUVCkpCi0gICAgOiBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+Ci0gICAgLCBNdXRhYmxlX0ZvcndhcmRJdGVyYXRvcjxUVD4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdXRhYmxlX0JpZGlyZWN0aW9uYWxJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICAqaS0tID0gKmk7ICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBwb3N0ZGVjcmVtZW50IGFuZCBhc3NpZ25tZW50Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgVFQgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLChUVCkpCi0gICAgOiBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+Ci0gICAgLCBDb21wYXJhYmxlPFRUPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+OjppdGVyYXRvcl9jYXRlZ29yeQotICAgICAgICAgICAgLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnCi0gICAgICAgICAgPikpOwotCi0gICAgICAgICAgaSArPSBuOyAgICAgICAgICAgICAvLyByZXF1aXJlIGFzc2lnbm1lbnQgYWRkaXRpb24gb3BlcmF0b3IKLSAgICAgICAgICBpID0gaSArIG47IGkgPSBuICsgaTsgLy8gcmVxdWlyZSBhZGRpdGlvbiB3aXRoIGRpZmZlcmVuY2UgdHlwZQotICAgICAgICAgIGkgLT0gbjsgICAgICAgICAgICAgLy8gcmVxdWlyZSBhc3NpZ25tZW50IHN1YnRyYWN0aW9uIG9wZXJhdG9yCi0gICAgICAgICAgaSA9IGkgLSBuOyAgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgc3VidHJhY3Rpb24gd2l0aCBkaWZmZXJlbmNlIHR5cGUKLSAgICAgICAgICBuID0gaSAtIGo7ICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBkaWZmZXJlbmNlIG9wZXJhdG9yCi0gICAgICAgICAgKHZvaWQpaVtuXTsgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmUgZWxlbWVudCBhY2Nlc3Mgb3BlcmF0b3IKLSAgICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBUVCBhLCBiOwotICAgIFRUIGksIGo7Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8VFQ+OjpkaWZmZXJlbmNlX3R5cGUgbjsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3IsKFRUKSkKLSAgICA6IFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPFRUPgotICAgICwgTXV0YWJsZV9CaWRpcmVjdGlvbmFsSXRlcmF0b3I8VFQ+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9SYW5kb21BY2Nlc3NJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICBpW25dID0gKmk7ICAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZSBlbGVtZW50IGFjY2VzcyBhbmQgYXNzaWdubWVudAotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICBUVCBpOwotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxUVD46OmRpZmZlcmVuY2VfdHlwZSBuOwotICB9OwotCi0gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIC8vIENvbnRhaW5lciBzCi0KLSAgTkROQk9PU1RfY29uY2VwdChDb250YWluZXIsKEMpKQotICAgIDogQXNzaWduYWJsZTxDPgotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpjb25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKElucHV0SXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+KSk7Ci0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IEMmIGNjKSB7Ci0gICAgICAgICAgaSA9IGNjLmJlZ2luKCk7Ci0gICAgICAgICAgaSA9IGNjLmVuZCgpOwotICAgICAgICAgIG4gPSBjYy5zaXplKCk7Ci0gICAgICAgICAgbiA9IGNjLm1heF9zaXplKCk7Ci0gICAgICAgICAgYiA9IGNjLmVtcHR5KCk7Ci0gICAgICB9Ci0gICAgICBDIGM7Ci0gICAgICBib29sIGI7Ci0gICAgICBjb25zdF9pdGVyYXRvciBpOwotICAgICAgc2l6ZV90eXBlIG47Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChNdXRhYmxlX0NvbnRhaW5lciwoQykpCi0gICAgOiBDb250YWluZXI8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6cG9pbnRlciBwb2ludGVyOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE11dGFibGVfQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgIEFzc2lnbmFibGU8dHlwZW5hbWUgTXV0YWJsZV9Db250YWluZXI6OnZhbHVlX3R5cGU+KSk7Ci0KLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoSW5wdXRJdGVyYXRvcjxpdGVyYXRvcj4pKTsKLQotICAgICAgICAgIGkgPSBjLmJlZ2luKCk7Ci0gICAgICAgICAgaSA9IGMuZW5kKCk7Ci0gICAgICAgICAgYy5zd2FwKGMyKTsKLSAgICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICAgIGl0ZXJhdG9yIGk7Ci0gICAgICBDIGMsIGMyOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoRm9yd2FyZENvbnRhaW5lciwoQykpCi0gICAgOiBDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShGb3J3YXJkQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjwKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgRm9yd2FyZENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgICAgICAgID4pKTsKLSAgICAgIH0KLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfRm9yd2FyZENvbnRhaW5lciwoQykpCi0gICAgOiBGb3J3YXJkQ29udGFpbmVyPEM+Ci0gICAgLCBNdXRhYmxlX0NvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKE11dGFibGVfRm9yd2FyZENvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICBNdXRhYmxlX0ZvcndhcmRJdGVyYXRvcjwKLSAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBNdXRhYmxlX0ZvcndhcmRDb250YWluZXI6Oml0ZXJhdG9yCi0gICAgICAgICAgICAgICA+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChSZXZlcnNpYmxlQ29udGFpbmVyLChDKSkKLSAgICA6IEZvcndhcmRDb250YWluZXI8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICBDOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCi0gICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFJldmVyc2libGVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3I8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSZXZlcnNpYmxlQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChCaWRpcmVjdGlvbmFsSXRlcmF0b3I8Y29uc3RfcmV2ZXJzZV9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgY2MpCi0gICAgICB7Ci0gICAgICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBpID0gY2MucmJlZ2luKCk7Ci0gICAgICAgICAgaSA9IGNjLnJlbmQoKTsKLSAgICAgIH0KLSAgICAgIEMgYzsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11dGFibGVfUmV2ZXJzaWJsZUNvbnRhaW5lciwoQykpCi0gICAgOiBNdXRhYmxlX0ZvcndhcmRDb250YWluZXI8Qz4KLSAgICAsIFJldmVyc2libGVDb250YWluZXI8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjpyZXZlcnNlX2l0ZXJhdG9yIHJldmVyc2VfaXRlcmF0b3I7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9SZXZlcnNpYmxlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTXV0YWJsZV9Gb3J3YXJkQ29udGFpbmVyPEM+OjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoTXV0YWJsZV9CaWRpcmVjdGlvbmFsSXRlcmF0b3I8aXRlcmF0b3I+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKE11dGFibGVfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPHJldmVyc2VfaXRlcmF0b3I+KSk7Ci0KLSAgICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIGkgPSBjLnJiZWdpbigpOwotICAgICAgICAgIGkgPSBjLnJlbmQoKTsKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICBDIGM7Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChSYW5kb21BY2Nlc3NDb250YWluZXIsKEMpKQotICAgIDogUmV2ZXJzaWJsZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoUmFuZG9tQWNjZXNzQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICAgICAgUmFuZG9tQWNjZXNzSXRlcmF0b3I8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSYW5kb21BY2Nlc3NDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgY2MpCi0gICAgICB7Ci0gICAgICAgICAgY29uc3RfcmVmZXJlbmNlIHIgPSBjY1tuXTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIEMgYzsKLSAgICAgIHNpemVfdHlwZSBuOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTXV0YWJsZV9SYW5kb21BY2Nlc3NDb250YWluZXIsKEMpKQotICAgIDogTXV0YWJsZV9SZXZlcnNpYmxlQ29udGFpbmVyPEM+Ci0gICAgLCBSYW5kb21BY2Nlc3NDb250YWluZXI8Qz4KLSAgewotICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgTXV0YWJsZV9SYW5kb21BY2Nlc3NDb250YWluZXIgc2VsZjsKLSAgIHB1YmxpYzoKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTXV0YWJsZV9SYW5kb21BY2Nlc3NDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKE11dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3I8dHlwZW5hbWUgc2VsZjo6aXRlcmF0b3I+KSk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKE11dGFibGVfUmFuZG9tQWNjZXNzSXRlcmF0b3I8dHlwZW5hbWUgc2VsZjo6cmV2ZXJzZV9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgIHR5cGVuYW1lIHNlbGY6OnJlZmVyZW5jZSByID0gY1tpXTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgICB0eXBlbmFtZSBNdXRhYmxlX1JldmVyc2libGVDb250YWluZXI8Qz46OnNpemVfdHlwZSBpOwotICAgICAgQyBjOwotICB9OwotCi0gIC8vIEEgU2VxdWVuY2UgaXMgaW5oZXJlbnRseSBtdXRhYmxlCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2VxdWVuY2UsKFMpKQotICAgIDogTXV0YWJsZV9Gb3J3YXJkQ29udGFpbmVyPFM+Ci0gICAgICAvLyBNYXR0IEF1c3Rlcm4ncyBib29rIHB1dHMgRGVmYXVsdENvbnN0cnVjdGlibGUgaGVyZSwgdGhlIEMrKwotICAgICAgLy8gc3RhbmRhcmQgcGxhY2VzIGl0IGluIENvbnRhaW5lciAtLUpHUwotICAgICAgLy8gLi4uIHNvIHdoeSBhcmVuJ3Qgd2UgZm9sbG93aW5nIHRoZSBzdGFuZGFyZD8gIC0tRFdBCi0gICAgLCBEZWZhdWx0Q29uc3RydWN0aWJsZTxTPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNlcXVlbmNlKQotICAgICAgewotICAgICAgICAgIFMKLSAgICAgICAgICAgICAgYyhuKSwKLSAgICAgICAgICAgICAgYzIobiwgdCksCi0gICAgICAgICAgICAgIGMzKGZpcnN0LCBsYXN0KTsKLQotICAgICAgICAgIGMuaW5zZXJ0KHAsIHQpOwotICAgICAgICAgIGMuaW5zZXJ0KHAsIG4sIHQpOwotICAgICAgICAgIGMuaW5zZXJ0KHAsIGZpcnN0LCBsYXN0KTsKLQotICAgICAgICAgIGMuZXJhc2UocCk7Ci0gICAgICAgICAgYy5lcmFzZShwLCBxKTsKLQotICAgICAgICAgIHR5cGVuYW1lIFNlcXVlbmNlOjpyZWZlcmVuY2UgciA9IGMuZnJvbnQoKTsKLQotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYzIpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhjMyk7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHIpOwotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgUyYgYykgewotICAgICAgICAgIHR5cGVuYW1lIFNlcXVlbmNlOjpjb25zdF9yZWZlcmVuY2UgciA9IGMuZnJvbnQoKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0KLSAgICAgIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdDsKLSAgICAgIHR5cGVuYW1lIFM6OnNpemVfdHlwZSBuOwotICAgICAgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZSogZmlyc3QsICpsYXN0OwotICAgICAgdHlwZW5hbWUgUzo6aXRlcmF0b3IgcCwgcTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEZyb250SW5zZXJ0aW9uU2VxdWVuY2UsKFMpKQotICAgIDogU2VxdWVuY2U8Uz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShGcm9udEluc2VydGlvblNlcXVlbmNlKQotICAgICAgewotICAgICAgICAgIGMucHVzaF9mcm9udCh0KTsKLSAgICAgICAgICBjLnBvcF9mcm9udCgpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIFMgYzsKLSAgICAgIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdDsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEJhY2tJbnNlcnRpb25TZXF1ZW5jZSwoUykpCi0gICAgOiBTZXF1ZW5jZTxTPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEJhY2tJbnNlcnRpb25TZXF1ZW5jZSkKLSAgICAgIHsKLSAgICAgICAgICBjLnB1c2hfYmFjayh0KTsKLSAgICAgICAgICBjLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgdHlwZW5hbWUgQmFja0luc2VydGlvblNlcXVlbmNlOjpyZWZlcmVuY2UgciA9IGMuYmFjaygpOwotICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyKTsKLSAgICAgICAgICBjb25zdF9jb25zdHJhaW50cyhjKTsKLSAgICAgIH0KLSAgIHByaXZhdGU6Ci0gICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IFMmIGNjKSB7Ci0gICAgICAgICAgdHlwZW5hbWUgQmFja0luc2VydGlvblNlcXVlbmNlOjpjb25zdF9yZWZlcmVuY2UKLSAgICAgICAgICAgICAgciA9IGNjLmJhY2soKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9OwotICAgICAgUyBjOwotICAgICAgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZSB0OwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogRm9yd2FyZENvbnRhaW5lcjxDPgotICAgICwgRGVmYXVsdENvbnN0cnVjdGlibGU8Qz4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6a2V5X2NvbXBhcmUga2V5X2NvbXBhcmU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnZhbHVlX2NvbXBhcmUgdmFsdWVfY29tcGFyZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoQXNzb2NpYXRpdmVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgaSA9IGMuZmluZChrKTsKLSAgICAgICAgICByID0gYy5lcXVhbF9yYW5nZShrKTsKLSAgICAgICAgICBjLmVyYXNlKGspOwotICAgICAgICAgIGMuZXJhc2UoaSk7Ci0gICAgICAgICAgYy5lcmFzZShyLmZpcnN0LCByLnNlY29uZCk7Ci0gICAgICAgICAgY29uc3RfY29uc3RyYWludHMoYyk7Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKEJpbmFyeVByZWRpY2F0ZTxrZXlfY29tcGFyZSxrZXlfdHlwZSxrZXlfdHlwZT4pKTsKLQotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQXNzb2NpYXRpdmVDb250YWluZXI6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZV87Ci0gICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKEJpbmFyeVByZWRpY2F0ZTx2YWx1ZV9jb21wYXJlLHZhbHVlX3R5cGVfLHZhbHVlX3R5cGVfPikpOwotICAgICAgfQotCi0gICAgICAvLyBSZWR1bmRhbnQgd2l0aCB0aGUgYmFzZSBjb25jZXB0LCBidXQgaXQgaGVscHMgYmVsb3cuCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotICAgcHJpdmF0ZToKLSAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgQyYgY2MpCi0gICAgICB7Ci0gICAgICAgICAgY2kgPSBjYy5maW5kKGspOwotICAgICAgICAgIG4gPSBjYy5jb3VudChrKTsKLSAgICAgICAgICBjciA9IGNjLmVxdWFsX3JhbmdlKGspOwotICAgICAgfQotCi0gICAgICBDIGM7Ci0gICAgICBpdGVyYXRvciBpOwotICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLGl0ZXJhdG9yPiByOwotICAgICAgY29uc3RfaXRlcmF0b3IgY2k7Ci0gICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+IGNyOwotICAgICAgdHlwZW5hbWUgQzo6a2V5X3R5cGUgazsKLSAgICAgIHR5cGVuYW1lIEM6OnNpemVfdHlwZSBuOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoVW5pcXVlQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShVbmlxdWVBc3NvY2lhdGl2ZUNvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICBDIGMoZmlyc3QsIGxhc3QpOwotCi0gICAgICAgICAgcG9zX2ZsYWcgPSBjLmluc2VydCh0KTsKLSAgICAgICAgICBjLmluc2VydChmaXJzdCwgbGFzdCk7Ci0KLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgc3RkOjpwYWlyPHR5cGVuYW1lIEM6Oml0ZXJhdG9yLCBib29sPiBwb3NfZmxhZzsKLSAgICAgIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUgdDsKLSAgICAgIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUqIGZpcnN0LCAqbGFzdDsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KE11bHRpcGxlQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShNdWx0aXBsZUFzc29jaWF0aXZlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIEMgYyhmaXJzdCwgbGFzdCk7Ci0KLSAgICAgICAgICBwb3MgPSBjLmluc2VydCh0KTsKLSAgICAgICAgICBjLmluc2VydChmaXJzdCwgbGFzdCk7Ci0KLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKHBvcyk7Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgQzo6aXRlcmF0b3IgcG9zOwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB0OwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSogZmlyc3QsICpsYXN0OwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2ltcGxlQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTaW1wbGVBc3NvY2lhdGl2ZUNvbnRhaW5lcikKLSAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKG5kbmJvb3N0Ojppc19zYW1lPGtleV90eXBlLHZhbHVlX3R5cGU+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChQYWlyQXNzb2NpYXRpdmVDb250YWluZXIsKEMpKQotICAgIDogQXNzb2NpYXRpdmVDb250YWluZXI8Qz4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShQYWlyQXNzb2NpYXRpdmVDb250YWluZXIpCi0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6Om1hcHBlZF90eXBlIG1hcHBlZF90eXBlOwotICAgICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNvbnN0IGtleV90eXBlLCBtYXBwZWRfdHlwZT4gcmVxdWlyZWRfdmFsdWVfdHlwZTsKLSAgICAgICAgICBORE5CT09TVF9NUExfQVNTRVJUKChuZG5ib29zdDo6aXNfc2FtZTx2YWx1ZV90eXBlLHJlcXVpcmVkX3ZhbHVlX3R5cGU+KSk7Ci0gICAgICB9Ci0gIH07Ci0KLSAgTkROQk9PU1RfY29uY2VwdChTb3J0ZWRBc3NvY2lhdGl2ZUNvbnRhaW5lciwoQykpCi0gICAgOiBBc3NvY2lhdGl2ZUNvbnRhaW5lcjxDPgotICAgICwgUmV2ZXJzaWJsZUNvbnRhaW5lcjxDPgotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNvcnRlZEFzc29jaWF0aXZlQ29udGFpbmVyKQotICAgICAgewotICAgICAgICAgIEMKLSAgICAgICAgICAgICAgYyhrYyksCi0gICAgICAgICAgICAgIGMyKGZpcnN0LCBsYXN0KSwKLSAgICAgICAgICAgICAgYzMoZmlyc3QsIGxhc3QsIGtjKTsKLQotICAgICAgICAgIHAgPSBjLnVwcGVyX2JvdW5kKGspOwotICAgICAgICAgIHAgPSBjLmxvd2VyX2JvdW5kKGspOwotICAgICAgICAgIHIgPSBjLmVxdWFsX3JhbmdlKGspOwotCi0gICAgICAgICAgYy5pbnNlcnQocCwgdCk7Ci0KLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYyk7Ci0gICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGMyKTsKLSAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYzMpOwotICAgICAgICAgIGNvbnN0X2NvbnN0cmFpbnRzKGMpOwotICAgICAgfQotCi0gICAgICB2b2lkIGNvbnN0X2NvbnN0cmFpbnRzKGNvbnN0IEMmIGMpCi0gICAgICB7Ci0gICAgICAgICAga2MgPSBjLmtleV9jb21wKCk7Ci0gICAgICAgICAgdmMgPSBjLnZhbHVlX2NvbXAoKTsKLQotICAgICAgICAgIGNwID0gYy51cHBlcl9ib3VuZChrKTsKLSAgICAgICAgICBjcCA9IGMubG93ZXJfYm91bmQoayk7Ci0gICAgICAgICAgY3IgPSBjLmVxdWFsX3JhbmdlKGspOwotICAgICAgfQotCi0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgQzo6a2V5X2NvbXBhcmUga2M7Ci0gICAgICB0eXBlbmFtZSBDOjp2YWx1ZV9jb21wYXJlIHZjOwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB0OwotICAgICAgdHlwZW5hbWUgQzo6a2V5X3R5cGUgazsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgICB0eXBlZGVmIFNvcnRlZEFzc29jaWF0aXZlQ29udGFpbmVyIHNlbGY7Ci0gICAgICBpdGVyYXRvciBwOwotICAgICAgY29uc3RfaXRlcmF0b3IgY3A7Ci0gICAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgc2VsZjo6aXRlcmF0b3IsdHlwZW5hbWUgc2VsZjo6aXRlcmF0b3I+IHI7Ci0gICAgICBzdGQ6OnBhaXI8dHlwZW5hbWUgc2VsZjo6Y29uc3RfaXRlcmF0b3IsdHlwZW5hbWUgc2VsZjo6Y29uc3RfaXRlcmF0b3I+IGNyOwotICAgICAgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSogZmlyc3QsICpsYXN0OwotICB9OwotCi0gIC8vIEhhc2hlZEFzc29jaWF0aXZlQ29udGFpbmVyCi0KLSAgTkROQk9PU1RfY29uY2VwdChDb2xsZWN0aW9uLChDKSkKLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShDb2xsZWN0aW9uKQotICAgICAgewotICAgICAgICBuZG5ib29zdDo6ZnVuY3Rpb25fcmVxdWlyZXM8bmRuYm9vc3Q6OklucHV0SXRlcmF0b3JDb25jZXB0PGl0ZXJhdG9yPiA+KCk7Ci0gICAgICAgIG5kbmJvb3N0OjpmdW5jdGlvbl9yZXF1aXJlczxuZG5ib29zdDo6SW5wdXRJdGVyYXRvckNvbmNlcHQ8Y29uc3RfaXRlcmF0b3I+ID4oKTsKLSAgICAgICAgbmRuYm9vc3Q6OmZ1bmN0aW9uX3JlcXVpcmVzPG5kbmJvb3N0OjpDb3B5Q29uc3RydWN0aWJsZUNvbmNlcHQ8dmFsdWVfdHlwZT4gPigpOwotICAgICAgICBjb25zdF9jb25zdHJhaW50cyhjKTsKLSAgICAgICAgaSA9IGMuYmVnaW4oKTsKLSAgICAgICAgaSA9IGMuZW5kKCk7Ci0gICAgICAgIGMuc3dhcChjKTsKLSAgICAgIH0KLQotICAgICAgdm9pZCBjb25zdF9jb25zdHJhaW50cyhjb25zdCBDJiBjYykgewotICAgICAgICBjaSA9IGNjLmJlZ2luKCk7Ci0gICAgICAgIGNpID0gY2MuZW5kKCk7Ci0gICAgICAgIG4gPSBjYy5zaXplKCk7Ci0gICAgICAgIGIgPSBjYy5lbXB0eSgpOwotICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBDOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIEM6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAvLyB0eXBlZGVmIHR5cGVuYW1lIEM6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLQotICAgICAgQyBjOwotICAgICAgYm9vbCBiOwotICAgICAgaXRlcmF0b3IgaTsKLSAgICAgIGNvbnN0X2l0ZXJhdG9yIGNpOwotICAgICAgc2l6ZV90eXBlIG47Ci0gIH07Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfQ09OQ0VQVF9DSEVDS1NfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIzOGQ0Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vLyAgQm9vc3QgY29uZmlnLmhwcCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29uZmlnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgQm9vc3QgY29uZmlnLmhwcCBwb2xpY3kgYW5kIHJhdGlvbmFsZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIG1vdmVkIHRvCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25maWcKLS8vCi0vLyAgQ0FVVElPTjogVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIGNvbXBsZXRlbHkgc3RhYmxlIC0KLS8vICAgICAgICAgICBETyBOT1QgTU9ESUZZIFRISVMgRklMRSEKLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9DT05GSUdfSFBQCi0KLS8vIGlmIHdlIGRvbid0IGhhdmUgYSB1c2VyIGNvbmZpZywgdGhlbiB1c2UgdGhlIGRlZmF1bHQgbG9jYXRpb246Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfVVNFUl9DT05GSUcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1VTRVJfQ09ORklHKQotIyAgZGVmaW5lIE5ETkJPT1NUX1VTRVJfQ09ORklHIDxuZG5ib29zdC9jb25maWcvdXNlci5ocHA+Ci0jZW5kaWYKLS8vIGluY2x1ZGUgaXQgZmlyc3Q6Ci0jaWZkZWYgTkROQk9PU1RfVVNFUl9DT05GSUcKLSMgIGluY2x1ZGUgTkROQk9PU1RfVVNFUl9DT05GSUcKLSNlbmRpZgotCi0vLyBpZiB3ZSBkb24ndCBoYXZlIGEgY29tcGlsZXIgY29uZmlnIHNldCwgdHJ5IGFuZCBmaW5kIG9uZToKLSNpZiAhZGVmaW5lZChORE5CT09TVF9DT01QSUxFUl9DT05GSUcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NPTVBJTEVSX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ09ORklHKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3NlbGVjdF9jb21waWxlcl9jb25maWcuaHBwPgotI2VuZGlmCi0vLyBpZiB3ZSBoYXZlIGEgY29tcGlsZXIgY29uZmlnLCBpbmNsdWRlIGl0IG5vdzoKLSNpZmRlZiBORE5CT09TVF9DT01QSUxFUl9DT05GSUcKLSMgIGluY2x1ZGUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHCi0jZW5kaWYKLQotLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhIHN0ZCBsaWJyYXJ5IGNvbmZpZyBzZXQsIHRyeSBhbmQgZmluZCBvbmU6Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1RETElCX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1RETElCX0NPTkZJRykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ09ORklHKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3NlbGVjdF9zdGRsaWJfY29uZmlnLmhwcD4KLSNlbmRpZgotLy8gaWYgd2UgaGF2ZSBhIHN0ZCBsaWJyYXJ5IGNvbmZpZywgaW5jbHVkZSBpdCBub3c6Ci0jaWZkZWYgTkROQk9PU1RfU1RETElCX0NPTkZJRwotIyAgaW5jbHVkZSBORE5CT09TVF9TVERMSUJfQ09ORklHCi0jZW5kaWYKLQotLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhIHBsYXRmb3JtIGNvbmZpZyBzZXQsIHRyeSBhbmQgZmluZCBvbmU6Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfUExBVEZPUk1fQ09ORklHKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19QTEFURk9STV9DT05GSUcpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NPTkZJRykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9zZWxlY3RfcGxhdGZvcm1fY29uZmlnLmhwcD4KLSNlbmRpZgotLy8gaWYgd2UgaGF2ZSBhIHBsYXRmb3JtIGNvbmZpZywgaW5jbHVkZSBpdCBub3c6Ci0jaWZkZWYgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHCi0jICBpbmNsdWRlIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRwotI2VuZGlmCi0KLS8vIGdldCBjb25maWcgc3VmZml4IGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3N1ZmZpeC5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfQ09ORklHX0hQUAotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9wcmVmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTBlNWFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgZm9yIEMrKyBCdWlsZGVyIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBlZmZlY3QgdGhlIEFCSToKLS8vCi0vLyAgLWIgKG9uIG9yIG9mZiAtIGVmZmVjdCBlbXVtIHNpemVzKQotLy8gIC1WeCAgKG9uIG9yIG9mZiAtIGVtcHR5IG1lbWJlcnMpCi0vLyAgLVZlIChvbiBvciBvZmYgLSBlbXB0eSBiYXNlIGNsYXNzZXMpCi0vLyAgLWFYIChhbGlnbm1lbnQgLSA1IG9wdGlvbnMpLgotLy8gIC1wWCAoQ2FsbGluZyBjb252ZW50aW9uIC0gNCBvcHRpb25zKQotLy8gIC1WbVggKG1lbWJlciBwb2ludGVyIHNpemUgYW5kIGxheW91dCAtIDUgb3B0aW9ucykKLS8vICAtVkMgKG9uIG9yIG9mZiwgY2hhbmdlcyBuYW1lIG1hbmdsaW5nKQotLy8gIC1WbCAob24gb3Igb2ZmLCBjaGFuZ2VzIHN0cnVjdCBsYXlvdXQpLgotCi0vLyAgSW4gYWRkaXRpb24gdGhlIGZvbGxvd2luZyB3YXJuaW5ncyBhcmUgc3VmZmljaWVudGx5IGFubm95aW5nIChhbmQKLS8vICB1bmZpeGFibGUpIHRvIGhhdmUgdGhlbSB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQ6Ci0vLwotLy8gIDgwMjcgLSBmdW5jdGlvbnMgY29udGFpbmluZyBbZm9yfHdoaWxlXSBsb29wcyBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotLy8gIDgwMjYgLSBmdW5jdGlvbnMgdGFraW5nIGNsYXNzIGJ5IHZhbHVlIGFyZ3VtZW50cyBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotCi0jcHJhZ21hIG5vcHVzaG9wdHdhcm4KLSMgIHByYWdtYSBvcHRpb24gcHVzaCAtYTggLVZ4LSAtVmUtIC1iLSAtcGMgLVZtdiAtVkMtIC1WbC0gLXctODAyNyAtdy04MDI2Ci0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL2JvcmxhbmRfc3VmZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQwNTM1Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotIyAgcHJhZ21hIG9wdGlvbiBwb3AKLSNwcmFnbWEgbm9wdXNob3B0d2FybgotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3ByZWZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmkvbXN2Y19wcmVmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2YwNmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3ByZWZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLwotLy8gQm9vc3QgYmluYXJpZXMgYXJlIGJ1aWx0IHdpdGggdGhlIGNvbXBpbGVyJ3MgZGVmYXVsdCBBQkkgc2V0dGluZ3MsCi0vLyBpZiB0aGUgdXNlciBjaGFuZ2VzIHRoZWlyIGRlZmF1bHQgYWxpZ25tZW50IGluIHRoZSBWUyBJREUgdGhlbiB0aGVpcgotLy8gY29kZSB3aWxsIG5vIGxvbmdlciBiZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIHRoZSBiamFtIGJ1aWx0IGJpbmFyaWVzCi0vLyB1bmxlc3MgdGhpcyBoZWFkZXIgaXMgaW5jbHVkZWQgdG8gZm9yY2UgQm9vc3QgY29kZSBpbnRvIGEgY29uc2lzdGVudCBBQkkuCi0vLwotLy8gTm90ZSB0aGF0IGluY2x1c2lvbiBvZiB0aGlzIGhlYWRlciBpcyBvbmx5IG5lY2Vzc2FyeSBmb3IgbGlicmFyaWVzIHdpdGggCi0vLyBzZXBhcmF0ZSBzb3VyY2UsIGhlYWRlciBvbmx5IGxpYnJhcmllcyBETyBOT1QgbmVlZCB0aGlzIGFzIGxvbmcgYXMgYWxsCi0vLyB0cmFuc2xhdGlvbiB1bml0cyBhcmUgYnVpbHQgd2l0aCB0aGUgc2FtZSBvcHRpb25zLgotLy8KLSNpZiBkZWZpbmVkKF9NX1g2NCkKLSMgIHByYWdtYSBwYWNrKHB1c2gsMTYpCi0jZWxzZQotIyAgcHJhZ21hIHBhY2socHVzaCw4KQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL21zdmNfc3VmZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaS9tc3ZjX3N1ZmZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NGQ3ODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpL21zdmNfc3VmZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI3ByYWdtYSBwYWNrKHBvcCkKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTI5OWVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gIGFiaV9wcmVmaXggaGVhZGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gKGMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMwotICAgCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0FCSV9QUkVGSVhfSFBQCi0jIGRlZmluZSBORE5CT09TVF9DT05GSUdfQUJJX1BSRUZJWF9IUFAKLSNlbHNlCi0jIGVycm9yIGRvdWJsZSBpbmNsdXNpb24gb2YgaGVhZGVyIG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcCBpcyBhbiBlcnJvcgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyB0aGlzIG11c3Qgb2NjdXIgYWZ0ZXIgYWxsIG90aGVyIGluY2x1ZGVzIGFuZCBiZWZvcmUgYW55IGNvZGUgYXBwZWFyczoKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKQotI3ByYWdtYSBub3B1c2hvcHR3YXJuCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ2NWI4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vICBhYmlfc3VmZmZpeCBoZWFkZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAoYykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzCi0gICAKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8gVGhpcyBoZWFkZXIgc2hvdWxkIGJlICNpbmNsdWRlZCBBRlRFUiBjb2RlIHRoYXQgd2FzIHByZWNlZGVkIGJ5IGEgI2luY2x1ZGUKLS8vIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+LgotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19BQklfUFJFRklYX0hQUAotIyBlcnJvciBIZWFkZXIgbmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwIG11c3Qgb25seSBiZSB1c2VkIGFmdGVyIG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcAotI2Vsc2UKLSMgdW5kZWYgTkROQk9PU1RfQ09ORklHX0FCSV9QUkVGSVhfSFBQCi0jZW5kaWYKLQotLy8gdGhlIHN1ZmZpeCBoZWFkZXIgb2NjdXJzIGFmdGVyIGFsbCBvZiBvdXIgY29kZToKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKQotI3ByYWdtYSBub3B1c2hvcHR3YXJuCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVjYjRhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBhdXRvX2xpbmsuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBBdXRvbWF0aWMgbGlicmFyeSBpbmNsdXNpb24gZm9yIEJvcmxhbmQvTWljcm9zb2Z0IGNvbXBpbGVycy4KLSAgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVVNBR0U6Ci1+fn5+fn4KLQotQmVmb3JlIGluY2x1ZGluZyB0aGlzIGhlYWRlciB5b3UgbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgb2YgZGVmaW5lIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgotCi1ORE5CT09TVF9MSUJfTkFNRTogICAgICAgICAgIFJlcXVpcmVkOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBiYXNlbmFtZSBvZiB0aGUgbGlicmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgYm9vc3RfcmVnZXguCi1ORE5CT09TVF9MSUJfVE9PTFNFVDogICAgICAgIE9wdGlvbmFsOiB0aGUgYmFzZSBuYW1lIG9mIHRoZSB0b29sc2V0LgotTkROQk9PU1RfRFlOX0xJTks6ICAgICAgICAgICBPcHRpb25hbDogd2hlbiBzZXQgbGluayB0byBkbGwgcmF0aGVyIHRoYW4gc3RhdGljIGxpYnJhcnkuCi1ORE5CT09TVF9MSUJfRElBR05PU1RJQzogICAgIE9wdGlvbmFsOiB3aGVuIHNldCB0aGUgaGVhZGVyIHdpbGwgcHJpbnQgb3V0IHRoZSBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsaWJyYXJ5IHNlbGVjdGVkICh1c2VmdWwgZm9yIGRlYnVnZ2luZykuCi1ORE5CT09TVF9BVVRPX0xJTktfTk9NQU5HTEU6IFNwZWNpZmllcyB0aGF0IHdlIHNob3VsZCBsaW5rIHRvIE5ETkJPT1NUX0xJQl9OQU1FLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gYSBtYW5nbGVkLW5hbWUgdmVyc2lvbi4KLU5ETkJPT1NUX0FVVE9fTElOS19UQUdHRUQ6ICAgU3BlY2lmaWVzIHRoYXQgd2UgbGluayB0byBsaWJyYXJpZXMgYnVpbHQgd2l0aCB0aGUgLS1sYXlvdXQ9dGFnZ2VkIG9wdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyB0aGUgZGVmYXVsdCBuYW1lLW1hbmdsZWQgdmVyc2lvbiwgYnV0IHdpdGhvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXBpbGVyIG5hbWUgYW5kIHZlcnNpb24sIG9yIHRoZSBCb29zdCB2ZXJzaW9uLiAgSnVzdCB0aGUgYnVpbGQgb3B0aW9ucy4KLQotVGhlc2UgbWFjcm9zIHdpbGwgYmUgdW5kZWYnZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyLCBmdXJ0aGVyIHRoaXMgaGVhZGVyCi1oYXMgbm8gaW5jbHVkZSBndWFyZHMgLSBzbyBiZSBzdXJlIHRvIGluY2x1ZGUgaXQgb25seSBvbmNlIGZyb20geW91ciBsaWJyYXJ5IQotCi1BbGdvcml0aG06Ci1+fn5+fn5+fn5+Ci0KLUxpYnJhcmllcyBmb3IgQm9ybGFuZCBhbmQgTWljcm9zb2Z0IGNvbXBpbGVycyBhcmUgYXV0b21hdGljYWxseQotc2VsZWN0ZWQgaGVyZSwgdGhlIG5hbWUgb2YgdGhlIGxpYiBpcyBzZWxlY3RlZCBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZwotZm9ybXVsYToKLQotTkROQk9PU1RfTElCX1BSRUZJWAotICAgKyBORE5CT09TVF9MSUJfTkFNRQotICAgKyAiXyIKLSAgICsgTkROQk9PU1RfTElCX1RPT0xTRVQKLSAgICsgTkROQk9PU1RfTElCX1RIUkVBRF9PUFQKLSAgICsgTkROQk9PU1RfTElCX1JUX09QVAotICAgIi0iCi0gICArIE5ETkJPT1NUX0xJQl9WRVJTSU9OCi0KLVRoZXNlIGFyZSBkZWZpbmVkIGFzOgotCi1ORE5CT09TVF9MSUJfUFJFRklYOiAgICAgImxpYiIgZm9yIHN0YXRpYyBsaWJyYXJpZXMgb3RoZXJ3aXNlICIiLgotCi1ORE5CT09TVF9MSUJfTkFNRTogICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUgbGliICggZm9yIGV4YW1wbGUgYm9vc3RfcmVnZXgpLgotCi1ORE5CT09TVF9MSUJfVE9PTFNFVDogICAgVGhlIGNvbXBpbGVyIHRvb2xzZXQgbmFtZSAodmM2LCB2YzcsIGJjYjUgZXRjKS4KLQotTkROQk9PU1RfTElCX1RIUkVBRF9PUFQ6ICItbXQiIGZvciBtdWx0aXRocmVhZCBidWlsZHMsIG90aGVyd2lzZSBub3RoaW5nLgotCi1ORE5CT09TVF9MSUJfUlRfT1BUOiAgICAgQSBzdWZmaXggdGhhdCBpbmRpY2F0ZXMgdGhlIHJ1bnRpbWUgbGlicmFyeSB1c2VkLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgbGV0dGVycyBhZnRlcgotICAgICAgICAgICAgICAgICAgICAgIGEgaHlwaGVuOgotCi0gICAgICAgICAgICAgICAgICAgICAgcyAgICAgIHN0YXRpYyBydW50aW1lIChkeW5hbWljIGlmIG5vdCBwcmVzZW50KS4KLSAgICAgICAgICAgICAgICAgICAgICBnICAgICAgZGVidWcvZGlhZ25vc3RpYyBydW50aW1lIChyZWxlYXNlIGlmIG5vdCBwcmVzZW50KS4KLSAgICAgICAgICAgICAgICAgICAgICB5ICAgICAgUHl0aG9uIGRlYnVnL2RpYWdub3N0aWMgcnVudGltZSAocmVsZWFzZSBpZiBub3QgcHJlc2VudCkuCi0gICAgICAgICAgICAgICAgICAgICAgZCAgICAgIGRlYnVnIGJ1aWxkIChyZWxlYXNlIGlmIG5vdCBwcmVzZW50KS4KLSAgICAgICAgICAgICAgICAgICAgICBwICAgICAgU1RMcG9ydCBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICBuICAgICAgU1RMcG9ydCBidWlsZCB3aXRob3V0IGl0cyBJT1N0cmVhbXMuCi0KLU5ETkJPT1NUX0xJQl9WRVJTSU9OOiAgICBUaGUgQm9vc3QgdmVyc2lvbiwgaW4gdGhlIGZvcm0geF95LCBmb3IgQm9vc3QgdmVyc2lvbiB4LnkuCi0KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSMgIGlmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fTVdFUktTX18pICYmICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLS8vCi0vLyBDIGxhbmd1YWdlIGNvbXBhdGFiaWxpdHkgKG5vLCBob25lc3RseSkKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTVNWQyBfTVNDX1ZFUgotIyAgZGVmaW5lIE5ETkJPT1NUX1NUUklOR0laRShYKSBORE5CT09TVF9ET19TVFJJTkdJWkUoWCkKLSMgIGRlZmluZSBORE5CT09TVF9ET19TVFJJTkdJWkUoWCkgI1gKLSNlbmRpZgotLy8KLS8vIE9ubHkgaW5jbHVkZSB3aGF0IGZvbGxvd3MgZm9yIGtub3duIGFuZCBzdXBwb3J0ZWQgY29tcGlsZXJzOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIFwKLSAgICB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgXAotICAgIHx8IChkZWZpbmVkKF9fTVdFUktTX18pICYmIGRlZmluZWQoX1dJTjMyKSAmJiAoX19NV0VSS1NfXyA+PSAweDMwMDApKSBcCi0gICAgfHwgKGRlZmluZWQoX19JQ0wpICYmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkpCi0KLSNpZm5kZWYgTkROQk9PU1RfVkVSU0lPTl9IUFAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTElCX05BTUUKLSMgIGVycm9yICJNYWNybyBORE5CT09TVF9MSUJfTkFNRSBub3Qgc2V0IChpbnRlcm5hbCBlcnJvcikiCi0jZW5kaWYKLQotLy8KLS8vIGVycm9yIGNoZWNrOgotLy8KLSNpZiBkZWZpbmVkKF9fTVNWQ19SVU5USU1FX0NIRUNLUykgJiYgIWRlZmluZWQoX0RFQlVHKQotIyAgcHJhZ21hIG1lc3NhZ2UoIlVzaW5nIHRoZSAvUlRDIG9wdGlvbiB3aXRob3V0IHNwZWNpZnlpbmcgYSBkZWJ1ZyBydW50aW1lIHdpbGwgbGVhZCB0byBsaW5rZXIgZXJyb3JzIikKLSMgIHByYWdtYSBtZXNzYWdlKCJIaW50OiBnbyB0byB0aGUgY29kZSBnZW5lcmF0aW9uIG9wdGlvbnMgYW5kIHN3aXRjaCB0byBvbmUgb2YgdGhlIGRlYnVnZ2luZyBydW50aW1lcyIpCi0jICBlcnJvciAiSW5jb21wYXRpYmxlIGJ1aWxkIG9wdGlvbnMiCi0jZW5kaWYKLS8vCi0vLyBzZWxlY3QgdG9vbHNldCBpZiBub3QgZGVmaW5lZCBhbHJlYWR5OgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTElCX1RPT0xTRVQKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMjAwKQotICAgIC8vIE5vdGU6IG5vIGNvbXBpbGVycyBiZWZvcmUgMTIwMCBhcmUgc3VwcG9ydGVkCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMzAwKQotCi0jICAgIGlmZGVmIFVOREVSX0NFCi0gICAgICAgLy8gZVZDNDoKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgImV2YzQiCi0jICAgIGVsc2UKLSAgICAgICAvLyB2YzY6Ci0jICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJ2YzYiCi0jICAgIGVuZGlmCi0KLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMTApCi0KLSAgICAgLy8gdmM3OgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjNyIKLQotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTQwMCkKLQotICAgICAvLyB2YzcxOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjNzEiCi0KLSMgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDE1MDApCi0KLSAgICAgLy8gdmM4MDoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJ2YzgwIgotCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxNjAwKQotCi0gICAgIC8vIHZjOTA6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAidmM5MCIKLQotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTcwMCkKLQotICAgICAvLyB2YzEwOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjMTAwIgotCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLQotICAgICAvLyB2YzExOgotIyAgICBkZWZpbmUgTkROQk9PU1RfTElCX1RPT0xTRVQgInZjMTEwIgotCi0jICBlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotCi0gICAgIC8vIENCdWlsZGVyIDY6Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAiYmNiIgotCi0jICBlbGlmIGRlZmluZWQoX19JQ0wpCi0KLSAgICAgLy8gSW50ZWwgQysrLCBubyB2ZXJzaW9uIG51bWJlcjoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJpdyIKLQotIyAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pICYmIChfX01XRVJLU19fIDw9IDB4MzFGRiApCi0KLSAgICAgLy8gTWV0cm93ZXJrcyBDb2RlV2FycmlvciA4LngKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9UT09MU0VUICJjdzgiCi0KLSMgIGVsaWYgZGVmaW5lZChfX01XRVJLU19fKSAmJiAoX19NV0VSS1NfXyA8PSAweDMyRkYgKQotCi0gICAgIC8vIE1ldHJvd2Vya3MgQ29kZVdhcnJpb3IgOS54Ci0jICAgIGRlZmluZSBORE5CT09TVF9MSUJfVE9PTFNFVCAiY3c5IgotCi0jICBlbmRpZgotI2VuZGlmIC8vIE5ETkJPT1NUX0xJQl9UT09MU0VUCi0KLS8vCi0vLyBzZWxlY3QgdGhyZWFkIG9wdDoKLS8vCi0jaWYgZGVmaW5lZChfTVQpIHx8IGRlZmluZWQoX19NVF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUICItbXQiCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19NV0VSS1NfXykKLQotIyAgaWZkZWYgX0RMTAotCi0jICAgICBpZiAoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkgJiYgKGRlZmluZWQoX1NUTFBfT1dOX0lPU1RSRUFNUykgfHwgZGVmaW5lZChfX1NUTF9PV05fSU9TVFJFQU1TKSkKLQotIyAgICAgICAgaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSlcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWd5ZHAiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKSAmJiAoZGVmaW5lZChfX1NUTF9ERUJVRykgfHwgZGVmaW5lZChfU1RMUF9ERUJVRykpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1nZHAiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ3lkcCIKLSMgICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgid2FybmluZzogU1RMcG9ydCBkZWJ1ZyB2ZXJzaW9ucyBhcmUgYnVpbHQgd2l0aCAvRF9TVExQX0RFQlVHPTEiKQotIyAgICAgICAgICAgIGVycm9yICJCdWlsZCBvcHRpb25zIGFyZW4ndCBjb21wYXRpYmxlIHdpdGggcHJlLWJ1aWx0IGxpYnJhcmllcyIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1nZHAiCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1wIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZWxpZiBkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSB8fCBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0KLSMgICAgICAgIGlmIGRlZmluZWQoX0RFQlVHKSAmJiAoZGVmaW5lZChfX1NUTF9ERUJVRykgfHwgZGVmaW5lZChfU1RMUF9ERUJVRykpXAotICAgICAgICAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1neWRwbiIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLWdkcG4iCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ3lkcG4iCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ2RwbiIKLSMgICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgid2FybmluZzogU1RMcG9ydCBkZWJ1ZyB2ZXJzaW9ucyBhcmUgYnVpbHQgd2l0aCAvRF9TVExQX0RFQlVHPTEiKQotIyAgICAgICAgICAgIGVycm9yICJCdWlsZCBvcHRpb25zIGFyZW4ndCBjb21wYXRpYmxlIHdpdGggcHJlLWJ1aWx0IGxpYnJhcmllcyIKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXBuIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZWxzZQotCi0jICAgICAgICBpZiBkZWZpbmVkKF9ERUJVRykgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1neWQiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItZ2QiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQKLSMgICAgICAgIGVuZGlmCi0KLSMgICAgIGVuZGlmCi0KLSMgIGVsc2UKLQotIyAgICAgaWYgKGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpICYmIChkZWZpbmVkKF9TVExQX09XTl9JT1NUUkVBTVMpIHx8IGRlZmluZWQoX19TVExfT1dOX0lPU1RSRUFNUykpCi0KLSMgICAgICAgIGlmIGRlZmluZWQoX0RFQlVHKSAmJiAoZGVmaW5lZChfX1NUTF9ERUJVRykgfHwgZGVmaW5lZChfU1RMUF9ERUJVRykpXAotICAgICAgICAgICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9ERUJVR19QWVRIT04pICYmIGRlZmluZWQoTkROQk9PU1RfTElOS0lOR19QWVRIT04pCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ3lkcCIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZHAiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKVwKLSAgICAgICAgICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNneWRwIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ2RwIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc3AiCi0jICAgICAgICBlbmRpZgotCi0jICAgICBlbGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLQotIyAgICAgICAgaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSlcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNneWRwbiIKLSMgICAgICAgIGVsaWYgZGVmaW5lZChfREVCVUcpICYmIChkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKSkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZHBuIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ3lkcG4iCi0jICAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIndhcm5pbmc6IFNUTHBvcnQgZGVidWcgdmVyc2lvbnMgYXJlIGJ1aWx0IHdpdGggL0RfU1RMUF9ERUJVRz0xIikKLSMgICAgICAgICAgICBlcnJvciAiQnVpbGQgb3B0aW9ucyBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHByZS1idWlsdCBsaWJyYXJpZXMiCi0jICAgICAgICBlbGlmIGRlZmluZWQoX0RFQlVHKQotIyAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXNnZHBuIgotIyAgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJ3YXJuaW5nOiBTVExwb3J0IGRlYnVnIHZlcnNpb25zIGFyZSBidWlsdCB3aXRoIC9EX1NUTFBfREVCVUc9MSIpCi0jICAgICAgICAgICAgZXJyb3IgIkJ1aWxkIG9wdGlvbnMgYXJlbid0IGNvbXBhdGlibGUgd2l0aCBwcmUtYnVpbHQgbGlicmFyaWVzIgotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc3BuIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZWxzZQotCi0jICAgICAgICBpZiBkZWZpbmVkKF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ3lkIgotIyAgICAgICAgZWxpZiBkZWZpbmVkKF9ERUJVRykKLSMgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zZ2QiCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zIgotIyAgICAgICAgZW5kaWYKLQotIyAgICAgZW5kaWYKLQotIyAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0KLS8vCi0vLyBmaWd1cmUgb3V0IHdoZXRoZXIgd2Ugd2FudCB0aGUgZGVidWcgYnVpbGRzIG9yIG5vdDoKLS8vCi0jaWYgX19CT1JMQU5EQ19fID4gMHg1NjEKLSNwcmFnbWEgZGVmaW5lb25vcHRpb24gTkROQk9PU1RfQk9STEFORF9ERUJVRyAtdgotI2VuZGlmCi0vLwotLy8gc2FuaXR5IGNoZWNrOgotLy8KLSNpZiBkZWZpbmVkKF9fU1RMX0RFQlVHKSB8fCBkZWZpbmVkKF9TVExQX0RFQlVHKQotI2Vycm9yICJQcmUtYnVpbHQgdmVyc2lvbnMgb2YgdGhlIEJvb3N0IGxpYnJhcmllcyBhcmUgbm90IHByb3ZpZGVkIGluIFNUTHBvcnQtZGVidWcgZm9ybSIKLSNlbmRpZgotCi0jICBpZmRlZiBfUlRMRExMCi0KLSMgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfQk9STEFORF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXlkIgotIyAgICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0JPUkxBTkRfREVCVUcpCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1kIgotIyAgICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAteQotIyAgICAgZWxzZQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUCi0jICAgICBlbmRpZgotCi0jICBlbHNlCi0KLSMgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfQk9STEFORF9ERUJVRylcCi0gICAgICAgICAgICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0RFQlVHX1BZVEhPTikgJiYgZGVmaW5lZChORE5CT09TVF9MSU5LSU5HX1BZVEhPTikKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTElCX1JUX09QVCAiLXN5ZCIKLSMgICAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9CT1JMQU5EX0RFQlVHKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc2QiCi0jICAgICBlbGlmIGRlZmluZWQoTkROQk9PU1RfREVCVUdfUFlUSE9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJTktJTkdfUFlUSE9OKQotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9MSUJfUlRfT1BUICItc3kiCi0jICAgICBlbHNlCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi1zIgotIyAgICAgZW5kaWYKLQotIyAgZW5kaWYKLQotI2VuZGlmCi0KLS8vCi0vLyBzZWxlY3QgbGlua2FnZSBvcHQ6Ci0vLwotI2lmIChkZWZpbmVkKF9ETEwpIHx8IGRlZmluZWQoX1JUTERMTCkpICYmIGRlZmluZWQoTkROQk9PU1RfRFlOX0xJTkspCi0jICBkZWZpbmUgTkROQk9PU1RfTElCX1BSRUZJWAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9EWU5fTElOSykKLSMgIGVycm9yICJNaXhpbmcgYSBkbGwgYm9vc3QgbGlicmFyeSB3aXRoIGEgc3RhdGljIHJ1bnRpbWUgaXMgYSByZWFsbHkgYmFkIGlkZWEuLi4iCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJQl9QUkVGSVggImxpYiIKLSNlbmRpZgotCi0vLwotLy8gbm93IGluY2x1ZGUgdGhlIGxpYjoKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfTkFNRSkgXAotICAgICAgJiYgZGVmaW5lZChORE5CT09TVF9MSUJfUFJFRklYKSBcCi0gICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9UT09MU0VUKSBcCi0gICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9USFJFQURfT1BUKSBcCi0gICAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0xJQl9SVF9PUFQpIFwKLSAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfTElCX1ZFUlNJT04pCi0KLSNpZmRlZiBORE5CT09TVF9BVVRPX0xJTktfVEFHR0VECi0jICBwcmFnbWEgY29tbWVudChsaWIsIE5ETkJPT1NUX0xJQl9QUkVGSVggTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0xJQl9OQU1FKSBORE5CT09TVF9MSUJfVEhSRUFEX09QVCBORE5CT09TVF9MSUJfUlRfT1BUICIubGliIikKLSMgIGlmZGVmIE5ETkJPT1NUX0xJQl9ESUFHTk9TVElDCi0jICAgICBwcmFnbWEgbWVzc2FnZSAoIkxpbmtpbmcgdG8gbGliIGZpbGU6ICIgTkROQk9PU1RfTElCX1BSRUZJWCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpIE5ETkJPT1NUX0xJQl9USFJFQURfT1BUIE5ETkJPT1NUX0xJQl9SVF9PUFQgIi5saWIiKQotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQVVUT19MSU5LX05PTUFOR0xFKQotIyAgcHJhZ21hIGNvbW1lbnQobGliLCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpICIubGliIikKLSMgIGlmZGVmIE5ETkJPT1NUX0xJQl9ESUFHTk9TVElDCi0jICAgICBwcmFnbWEgbWVzc2FnZSAoIkxpbmtpbmcgdG8gbGliIGZpbGU6ICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0xJQl9OQU1FKSAiLmxpYiIpCi0jICBlbmRpZgotI2Vsc2UKLSMgIHByYWdtYSBjb21tZW50KGxpYiwgTkROQk9PU1RfTElCX1BSRUZJWCBORE5CT09TVF9TVFJJTkdJWkUoTkROQk9PU1RfTElCX05BTUUpICItIiBORE5CT09TVF9MSUJfVE9PTFNFVCBORE5CT09TVF9MSUJfVEhSRUFEX09QVCBORE5CT09TVF9MSUJfUlRfT1BUICItIiBORE5CT09TVF9MSUJfVkVSU0lPTiAiLmxpYiIpCi0jICBpZmRlZiBORE5CT09TVF9MSUJfRElBR05PU1RJQwotIyAgICAgcHJhZ21hIG1lc3NhZ2UgKCJMaW5raW5nIHRvIGxpYiBmaWxlOiAiIE5ETkJPT1NUX0xJQl9QUkVGSVggTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0xJQl9OQU1FKSAiLSIgTkROQk9PU1RfTElCX1RPT0xTRVQgTkROQk9PU1RfTElCX1RIUkVBRF9PUFQgTkROQk9PU1RfTElCX1JUX09QVCAiLSIgTkROQk9PU1RfTElCX1ZFUlNJT04gIi5saWIiKQotIyAgZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotIyAgZXJyb3IgInNvbWUgcmVxdWlyZWQgbWFjcm9zIHdoZXJlIG5vdCBkZWZpbmVkIChpbnRlcm5hbCBsb2dpYyBlcnJvcikuIgotI2VuZGlmCi0KLQotI2VuZGlmIC8vIF9NU0NfVkVSIHx8IF9fQk9STEFORENfXwotCi0vLwotLy8gZmluYWxseSB1bmRlZiBhbnkgbWFjcm9zIHdlIG1heSBoYXZlIHNldDoKLS8vCi0jaWZkZWYgTkROQk9PU1RfTElCX1BSRUZJWAotIyAgdW5kZWYgTkROQk9PU1RfTElCX1BSRUZJWAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfTkFNRSkKLSMgIHVuZGVmIE5ETkJPT1NUX0xJQl9OQU1FCi0jZW5kaWYKLS8vIERvbid0IHVuZGVmIHRoaXMgb25lOiBpdCBjYW4gYmUgc2V0IGJ5IHRoZSB1c2VyIGFuZCBzaG91bGQgYmUgdGhlIAotLy8gc2FtZSBmb3IgYWxsIGxpYnJhcmllczoKLS8vI2lmIGRlZmluZWQoTkROQk9PU1RfTElCX1RPT0xTRVQpCi0vLyMgIHVuZGVmIE5ETkJPT1NUX0xJQl9UT09MU0VUCi0vLyNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfTElCX1RIUkVBRF9PUFQpCi0jICB1bmRlZiBORE5CT09TVF9MSUJfVEhSRUFEX09QVAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfUlRfT1BUKQotIyAgdW5kZWYgTkROQk9PU1RfTElCX1JUX09QVAotI2VuZGlmCi0jaWYgZGVmaW5lZChORE5CT09TVF9MSUJfTElOS19PUFQpCi0jICB1bmRlZiBORE5CT09TVF9MSUJfTElOS19PUFQKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfTElCX0RFQlVHX09QVCkKLSMgIHVuZGVmIE5ETkJPT1NUX0xJQl9ERUJVR19PUFQKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfRFlOX0xJTkspCi0jICB1bmRlZiBORE5CT09TVF9EWU5fTElOSwotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2JvcmxhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvYm9ybGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MjYyMzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvYm9ybGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMiAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEJvcmxhbmQgQysrIGNvbXBpbGVyIHNldHVwOgotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IEJvcmxhbmQgcHJpb3IgdG8gdmVyc2lvbiA1LjQ6Ci0jaWYgX19CT1JMQU5EQ19fIDwgMHg1NDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLQotLy8gbGFzdCBrbm93biBjb21waWxlciB2ZXJzaW9uOgotI2lmIChfX0JPUkxBTkRDX18gPiAweDYxMykKLS8vIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotLy8jICBlbHNlCi0vLyMgICAgIHByYWdtYSBtZXNzYWdlKCAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiKQotLy8jICBlbmRpZgotI2VsaWYgKF9fQk9STEFORENfXyA9PSAweDYwMCkKLSMgIGVycm9yICJDQnVpbGRlclggcHJldmlldyBjb21waWxlciBpcyBubyBsb25nZXIgc3VwcG9ydGVkIgotI2VuZGlmCi0KLS8vCi0vLyBTdXBwb3J0IG1hY3JvcyB0byBoZWxwIHdpdGggc3RhbmRhcmQgbGlicmFyeSBkZXRlY3Rpb24KLSNpZiAoX19CT1JMQU5EQ19fIDwgMHg1NjApIHx8IGRlZmluZWQoX1VTRV9PTERfUldfU1RMKQotIyAgZGVmaW5lIE5ETkJPT1NUX0JDQl9XSVRIX1JPR1VFX1dBVkUKLSNlbGlmIF9fQk9STEFORENfXyA8IDB4NTcwCi0jICBkZWZpbmUgTkROQk9PU1RfQkNCX1dJVEhfU1RMUE9SVAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9CQ0JfV0lUSF9ESU5LVU1XQVJFCi0jZW5kaWYKLQotLy8KLS8vIFZlcnNpb24gNS4wIGFuZCBiZWxvdzoKLSMgICBpZiBfX0JPUkxBTkRDX18gPD0gMHgwNTUwCi0vLyBCb3JsYW5kIEMrK0J1aWxkZXIgNCBhbmQgNToKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgICAgaWYgX19CT1JMQU5EQ19fID09IDB4MDU1MAotLy8gQm9ybGFuZCBDKytCdWlsZGVyIDUsIGNvbW1hbmQtbGluZSBjb21waWxlciA1LjU6Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFCi0jICAgICBlbmRpZgotLy8gVmFyaWFkaWMgbWFjcm9zIGRvIG5vdCBleGlzdCBmb3IgQysrIEJ1aWxkZXIgdmVyc2lvbnMgNSBhbmQgYmVsb3cKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgZW5kaWYKLQotLy8gVmVyc2lvbiA1LjUxIGFuZCBiZWxvdzoKLSNpZiAoX19CT1JMQU5EQ19fIDw9IDB4NTUxKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVEVUNFRF9UWVBFTkFNRQotLy8gd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBXQ0hBUl9NQVgvV0NIQVJfTUlOOgotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNpbmNsdWRlIDxjd2NoYXI+Ci0jZWxzZQotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jZW5kaWYgLy8gX19jcGx1c3BsdXMKLSNpZm5kZWYgV0NIQVJfTUFYCi0jICBkZWZpbmUgV0NIQVJfTUFYIDB4ZmZmZgotI2VuZGlmCi0jaWZuZGVmIFdDSEFSX01JTgotIyAgZGVmaW5lIFdDSEFSX01JTiAwCi0jZW5kaWYKLSNlbmRpZgotCi0vLyBCb3JsYW5kIEMrKyBCdWlsZGVyIDYgYW5kIGJlbG93OgotI2lmIChfX0JPUkxBTkRDX18gPD0gMHg1NjQpCi0KLSMgIGlmIGRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotICAgICAgLy8gZml4IGJyb2tlbiA8Y3N0cmluZz4gc28gdGhhdCBCb29zdC50ZXN0IHdvcmtzOgotIyAgICAgaW5jbHVkZSA8Y3N0cmluZz4KLSMgICAgIHVuZGVmIHN0cmNtcAotIyAgZW5kaWYKLSAgIC8vIGZpeCBicm9rZW4gZXJybm8gZGVjbGFyYXRpb246Ci0jICBpbmNsdWRlIDxlcnJuby5oPgotIyAgaWZuZGVmIGVycm5vCi0jICAgICBkZWZpbmUgZXJybm8gZXJybm8KLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0vLwotLy8gbmV3IGJ1ZyBpbiA1LjYxOgotI2lmIChfX0JPUkxBTkRDX18gPj0gMHg1NjEpICYmIChfX0JPUkxBTkRDX18gPD0gMHg1ODApCi0gICAvLyB0aGlzIHNlZW1zIHRvIGJlIG5lZWRlZCBieSB0aGUgY29tbWFuZCBsaW5lIGNvbXBpbGVyLCBidXQgbm90IHRoZSBJREU6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX0ZVTkNUSU9OX1NQRUNJQUxJWkFUSU9OUwotI2VuZGlmCi0KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgMjAwNiBVcGRhdGUgMiBhbmQgYmVsb3c6Ci0jaWYgKF9fQk9STEFORENfXyA8PSAweDU4MikKLSMgIGRlZmluZSBORE5CT09TVF9OT19TRklOQUUKLSMgIGRlZmluZSBORE5CT09TVF9CQ0JfUEFSVElBTF9TUEVDSUFMSVpBVElPTl9CVUcKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMKLQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BSSVZBVEVfSU5fQUdHUkVHQVRFCi0KLSMgIGlmZGVmIF9XSU4zMgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jICBlbGlmIGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fbGludXgpCi0gICAgICAvLyB3ZSBzaG91bGQgcmVhbGx5IGJlIGFibGUgdG8gZG8gd2l0aG91dCB0aGlzCi0gICAgICAvLyBidXQgdGhlIHdjcyogZnVuY3Rpb25zIGFyZW4ndCBpbXBvcnRlZCBpbnRvIHN0ZDo6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSAgICAgIC8vIF9DUFBVTldJTkQgZG9lc24ndCBnZXQgYXV0b21hdGljYWxseSBzZXQgZm9yIHNvbWUgcmVhc29uOgotIyAgICAgcHJhZ21hIGRlZmluZW9ub3B0aW9uIE5ETkJPT1NUX0NQUFVOV0lORCAteAotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgKF9fQk9STEFORENfXyA8PSAweDYxMykgIC8vIEJlbWFuIGhhcyBhc2tlZCBBbGlzZGFpciBmb3IgbW9yZSBpbmZvCi0gICAvLyB3ZSBzaG91bGRuJ3QgcmVhbGx5IG5lZWQgdGhpcyAtIGJ1dCB0b28gbWFueSB0aGluZ3MgY2hva2UKLSAgIC8vIHdpdGhvdXQgaXQsIHRoaXMgbmVlZHMgbW9yZSBpbnZlc3RpZ2F0aW9uOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9UWVBFX1NQRUNJQUxJWkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUKLQotLy8gVGVtcG9yYXJ5IHdvcmthcm91bmQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmCi0KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgMjAwOCBhbmQgYmVsb3c6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERVBFTkRFTlRfTkVTVEVEX0RFUklWQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19VU0lOR19ERUNMQVJBVElPTl9PVkVSTE9BRFNfRlJPTV9UWVBFTkFNRV9CQVNFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTkVTVEVEX0ZSSUVORFNISVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19UWVBFTkFNRV9XSVRIX0NUT1IKLSNpZiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0jICBkZWZpbmUgTkROQk9PU1RfSUxMRUdBTF9DVl9SRUZFUkVOQ0VTCi0jZW5kaWYKLQotLy8KLS8vICBQb3NpdGl2ZSBGZWF0dXJlIGRldGVjdGlvbgotLy8KLS8vIEJvcmxhbmQgQysrIEJ1aWxkZXIgMjAwOCBhbmQgYmVsb3c6Ci0jaWYgKF9fQk9STEFORENfXyA+PSAweDU5OSkKLSMgIHByYWdtYSBkZWZpbmVvbm9wdGlvbiBORE5CT09TVF9DT0RFR0VBUl8wWF9TVVBQT1JUIC1BeAotI2VuZGlmCi0vLwotLy8gQysrMHggTWFjcm9zOgotLy8KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfQ09ERUdFQVJfMFhfU1VQUE9SVCApIHx8IChfX0JPUkxBTkRDX18gPCAweDYxMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTIAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0FMSUdOT0YKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQ0hBUjE2X1QKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTElDSVRfQ09OVkVSU0lPTl9PUFMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUkVGX1FVQUxJRklFUgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVEFUSUNfQVNTRVJUCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMgICAgLy8gVVRGLTggc3RpbGwgbm90IHN1cHBvcnRlZAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNpZiBfX0JPUkxBTkRDX18gPj0gMHg1OTAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX0hBU0gKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLSNlbmRpZgotCi0vLwotLy8gUG9zdCAweDU2MSB3ZSBoYXZlIGxvbmcgbG9uZyBhbmQgc3RkaW50Lmg6Ci0jaWYgX19CT1JMQU5EQ19fID49IDB4NTYxCi0jICBpZm5kZWYgX19OT19MT05HX0xPTkcKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTE9OR19MT05HCi0jICBlbmRpZgotICAgLy8gT24gbm9uLVdpbjMyIHBsYXRmb3JtcyBsZXQgdGhlIHBsYXRmb3JtIGNvbmZpZyBmaWd1cmUgdGhpcyBvdXQ6Ci0jICBpZmRlZiBfV0lOMzIKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIEJvcmxhbmQgQysrQnVpbGRlciA2IGRlZmF1bHRzIHRvIHVzaW5nIFNUTFBvcnQuICBJZiBfVVNFX09MRF9SV19TVEwgaXMKLS8vIGRlZmluZWQsIHRoZW4gd2UgaGF2ZSAweDU2MCBvciBncmVhdGVyIHdpdGggdGhlIFJvZ3VlIFdhdmUgaW1wbGVtZW50YXRpb24KLS8vIHdoaWNoIHByZXN1bWFibHkgaGFzIHRoZSBzdGQ6OkRCTF9NQVggYnVnLgotI2lmIGRlZmluZWQoIE5ETkJPT1NUX0JDQl9XSVRIX1JPR1VFX1dBVkUgKQotLy8gPGNsaW1pdHM+IGlzIHBhcnRseSBicm9rZW4sIHNvbWUgbWFjcm9zIGRlZmluZSBzeW1ib2xzIHRoYXQgYXJlIHJlYWxseSBpbgotLy8gbmFtZXNwYWNlIHN0ZCwgc28geW91IGVuZCB1cCBoYXZpbmcgdG8gdXNlIGlsbGVnYWwgY29uc3RydWN0cyBsaWtlCi0vLyBzdGQ6OkRCTF9NQVgsIGFzIGEgZml4IHdlJ2xsIGp1c3QgaW5jbHVkZSBmbG9hdC5oIGFuZCBoYXZlIGRvbmUgd2l0aDoKLSNpbmNsdWRlIDxmbG9hdC5oPgotI2VuZGlmCi0vLwotLy8gX19pbnQ2NDoKLS8vCi0jaWYgKF9fQk9STEFORENfXyA+PSAweDUzMCkgJiYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0vLwotLy8gY2hlY2sgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBzdXBwb3J0OgotLy8KLSNpZiAhZGVmaW5lZChfQ1BQVU5XSU5EKSAmJiAhZGVmaW5lZChORE5CT09TVF9DUFBVTldJTkQpICYmICFkZWZpbmVkKF9fRVhDRVBUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05TCi0jZW5kaWYKLS8vCi0vLyBhbGwgdmVyc2lvbnMgaGF2ZSBhIDxkaXJlbnQuaD46Ci0vLwotI2lmbmRlZiBfX1NUUklDVF9BTlNJX18KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNlbmRpZgotLy8KLS8vIGFsbCB2ZXJzaW9ucyBzdXBwb3J0IF9fZGVjbHNwZWM6Ci0vLwotI2lmIGRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotLy8gY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcCB3aWxsIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JULCBldGMuLCB1bmxlc3MgYWxyZWFkeSBkZWZpbmVkICAKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jZW5kaWYKLS8vCi0vLyBBQkkgZml4aW5nIGhlYWRlcnM6Ci0vLwotI2lmIF9fQk9STEFORENfXyAhPSAweDYwMCAvLyBub3QgaW1wbGVtZW50ZWQgZm9yIHZlcnNpb24gNiBjb21waWxlciB5ZXQKLSNpZm5kZWYgTkROQk9PU1RfQUJJX1BSRUZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9QUkVGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9wcmVmaXguaHBwIgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSMgIGRlZmluZSBORE5CT09TVF9BQklfU1VGRklYICJuZG5ib29zdC9jb25maWcvYWJpL2JvcmxhbmRfc3VmZml4LmhwcCIKLSNlbmRpZgotI2VuZGlmCi0vLwotLy8gRGlzYWJsZSBXaW4zMiBzdXBwb3J0IGluIEFOU0kgbW9kZToKLS8vCi0jaWYgX19CT1JMQU5EQ19fIDwgMHg2MDAKLSMgIHByYWdtYSBkZWZpbmVvbm9wdGlvbiBORE5CT09TVF9ESVNBQkxFX1dJTjMyIC1BCi0jZWxpZiBkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKLSMgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1dJTjMyCi0jZW5kaWYKLS8vCi0vLyBNU1ZDIGNvbXBhdGliaWxpdHkgbW9kZSBkb2VzIHNvbWUgbmFzdHkgdGhpbmdzOgotLy8gVE9ETzogbG9vayB1cCBpZiB0aGlzIGRvZXNuJ3QgYXBwbHkgdG8gdGhlIHdob2xlIDEyeHggcmFuZ2UKLS8vCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDw9IDEyMDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotI2VuZGlmCi0KLS8vIEJvcmxhbmQgZGlkIG5vdCBpbXBsZW1lbnQgdmFsdWUtaW5pdGlhbGl6YXRpb24gY29tcGxldGVseSwgYXMgSSByZXBvcnRlZAotLy8gaW4gMjAwNywgQm9ybGFuZCBSZXBvcnQgNTE4NTQsICJWYWx1ZS1pbml0aWFsaXphdGlvbjogUE9EIHN0cnVjdCBzaG91bGQgYmUKLS8vIHplcm8taW5pdGlhbGl6ZWQiLCBodHRwOi8vcWMuZW1iYXJjYWRlcm8uY29tL3djL3FjbWFpbi5hc3B4P2Q9NTE4NTQKLS8vIFNlZSBhbHNvOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvdmFsdWVfaW5pdC5odG0jY29tcGlsZXJfaXNzdWVzCi0vLyAoTmllbHMgRGVra2VyLCBMS0VCLCBBcHJpbCAyMDEwKQotI2RlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJCb3JsYW5kIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fQk9STEFORENfXykKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY2xhbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY2xhbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGFiMzVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NsYW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMTAKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBDbGFuZyBjb21waWxlciBzZXR1cC4KLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9leGNlcHRpb25zKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X3J0dGkpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JUVEkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUlRUSQotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfcnR0aSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVFlQRUlEKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RZUEVJRAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9faW50NjQpICYmICFkZWZpbmVkKF9fR05VQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLQotLy8gQ2xhbmcgc3VwcG9ydHMgImxvbmcgbG9uZyIgaW4gYWxsIGNvbXBpbGF0aW9uIG1vZGVzLgotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vCi0vLyBEeW5hbWljIHNoYXJlZCBvYmplY3QgKERTTykgYW5kIGR5bmFtaWMtbGluayBsaWJyYXJ5IChETEwpIHN1cHBvcnQKLS8vCi0jaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX1dJTjMyX18pICYmICFkZWZpbmVkKFdJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImRlZmF1bHQiKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIF9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fKCJkZWZhdWx0IikpKQotI2VuZGlmCi0KLS8vIAotLy8gVGhlIE5ETkJPT1NUX0ZBTExUSFJPVUdIIG1hY3JvIGNhbiBiZSB1c2VkIHRvIGFubm90YXRlIGltcGxpY2l0IGZhbGwtdGhyb3VnaCAKLS8vIGJldHdlZW4gc3dpdGNoIGxhYmVscy4gCi0vLyAKLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMICYmIGRlZmluZWQoX19oYXNfd2FybmluZykgCi0jICBpZiBfX2hhc19mZWF0dXJlKGN4eF9hdHRyaWJ1dGVzKSAmJiBfX2hhc193YXJuaW5nKCItV2ltcGxpY2l0LWZhbGx0aHJvdWdoIikgCi0jICAgIGRlZmluZSBORE5CT09TVF9GQUxMVEhST1VHSCBbW2NsYW5nOjpmYWxsdGhyb3VnaF1dIAotIyAgZW5kaWYgCi0jZW5kaWYgCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfYXV0b190eXBlKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2VuZGlmCi0KLSNpZiAhKGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfY29uc3RleHByKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZGVjbHR5cGUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2RlY2x0eXBlX2luY29tcGxldGVfcmV0dXJuX3R5cGVzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9kZWZhdWx0ZWRfZnVuY3Rpb25zKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2RlbGV0ZWRfZnVuY3Rpb25zKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9leHBsaWNpdF9jb252ZXJzaW9ucykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZGVmYXVsdF9mdW5jdGlvbl90ZW1wbGF0ZV9hcmdzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZ2VuZXJhbGl6ZWRfaW5pdGlhbGl6ZXJzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9sYW1iZGFzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNlbmRpZgotCi0jaWYgIV9faGFzX2ZlYXR1cmUoY3h4X2xvY2FsX3R5cGVfdGVtcGxhdGVfYXJncykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9ub2V4Y2VwdCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfbnVsbHB0cikKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9yYW5nZV9mb3IpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9yYXdfc3RyaW5nX2xpdGVyYWxzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfZ2VuZXJhbGl6ZWRfaW5pdGlhbGl6ZXJzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9ydmFsdWVfcmVmZXJlbmNlcykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfc3Ryb25nX2VudW1zKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfc3RhdGljX2Fzc2VydCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF9hbGlhc190ZW1wbGF0ZXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2VuZGlmCi0KLSNpZiAhX19oYXNfZmVhdHVyZShjeHhfdW5pY29kZV9saXRlcmFscykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF92YXJpYWRpY190ZW1wbGF0ZXMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZW5kaWYKLQotI2lmICFfX2hhc19mZWF0dXJlKGN4eF91c2VyX2xpdGVyYWxzKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotI2VuZGlmCi0KLS8vIENsYW5nIGFsd2F5cyBzdXBwb3J0cyB2YXJpYWRpYyBtYWNyb3MKLS8vIENsYW5nIGFsd2F5cyBzdXBwb3J0cyBleHRlcm4gdGVtcGxhdGVzCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09NUElMRVIKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ2xhbmcgdmVyc2lvbiAiIF9fY2xhbmdfdmVyc2lvbl9fCi0jZW5kaWYKLQotLy8gTWFjcm8gdXNlZCB0byBpZGVudGlmeSB0aGUgQ2xhbmcgY29tcGlsZXIuCi0jZGVmaW5lIE5ETkJPT1NUX0NMQU5HIDEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29kZWdlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29kZWdlYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDZjOWFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvZGVnZWFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyIC0gMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgQ29kZUdlYXIgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1dJVEhfQ09ERUdFQVJfV0FSTklOR1MgKQotLy8gdGhlc2Ugd2FybmluZ3Mgb2NjdXIgZnJlcXVlbnRseSBpbiBvcHRpbWl6ZWQgdGVtcGxhdGUgY29kZQotIyBwcmFnbWEgd2FybiAtODAwNCAvLyB2YXIgYXNzaWduZWQgdmFsdWUsIGJ1dCBuZXZlciB1c2VkCi0jIHByYWdtYSB3YXJuIC04MDA4IC8vIGNvbmRpdGlvbiBhbHdheXMgdHJ1ZS9mYWxzZQotIyBwcmFnbWEgd2FybiAtODA2NiAvLyBkZWFkIGNvZGUgY2FuIG5ldmVyIGV4ZWN1dGUKLSMgcHJhZ21hIHdhcm4gLTgxMDQgLy8gc3RhdGljIG1lbWJlcnMgd2l0aCBjdG9ycyBub3QgdGhyZWFkc2FmZQotIyBwcmFnbWEgd2FybiAtODEwNSAvLyByZWZlcmVuY2UgbWVtYmVyIGluIGNsYXNzIHdpdGhvdXQgY3RvcnMKLSNlbmRpZgotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDB4NjIxCi0jaWYgKF9fQ09ERUdFQVJDX18gPiAweDYyMSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVsc2UKLSMgICAgIHByYWdtYSBtZXNzYWdlKCAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiKQotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBDb2RlR2VhciBDKysgQnVpbGRlciAyMDA5Ci0jaWYgKF9fQ09ERUdFQVJDX18gPD0gMHg2MTMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9ORVNURURfREVSSVZBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19QUklWQVRFX0lOX0FHR1JFR0FURQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX0RFQ0xBUkFUSU9OX09WRVJMT0FEU19GUk9NX1RZUEVOQU1FX0JBU0UKLSAgIC8vIHdlIHNob3VsZG4ndCByZWFsbHkgbmVlZCB0aGlzIC0gYnV0IHRvbyBtYW55IHRoaW5ncyBjaG9rZQotICAgLy8gd2l0aG91dCBpdCwgdGhpcyBuZWVkcyBtb3JlIGludmVzdGlnYXRpb246Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSMgIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotI2VuZGlmCi0KLS8vIENvZGVHZWFyIEMrKyBCdWlsZGVyIDIwMTAKLSNpZiAoX19DT0RFR0VBUkNfXyA8PSAweDYyMSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19UWVBFTkFNRV9XSVRIX0NUT1IgICAgLy8gQ2Fubm90IHVzZSB0eXBlbmFtZSBrZXl3b3JkIHdoZW4gbWFraW5nIHRlbXBvcmFyaWVzIG9mIGEgZGVwZW5kYW50IHR5cGUKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19ORVNURURfRlJJRU5EU0hJUCAgICAgLy8gVEMxIGdpdmVzIG5lc3RlZCBjbGFzc2VzIGFjY2VzcyByaWdodHMgYXMgYW55IG90aGVyIG1lbWJlcgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0vLyBUZW1wb3JhcnkgaGFjaywgdW50aWwgc3BlY2lmaWMgTVBMIHByZXByb2Nlc3NlZCBoZWFkZXJzIGFyZSBnZW5lcmF0ZWQKLSMgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLS8vIENvZGVHZWFyIGhhcyBub3QgeWV0IGNvbXBsZXRlbHkgaW1wbGVtZW50ZWQgdmFsdWUtaW5pdGlhbGl6YXRpb24sIGZvcgotLy8gZXhhbXBsZSBmb3IgYXJyYXkgdHlwZXMsIGFzIEkgcmVwb3J0ZWQgaW4gMjAxMDogRW1iYXJjYWRlcm8gUmVwb3J0IDgzNzUxLAotLy8gIlZhbHVlLWluaXRpYWxpemF0aW9uOiBhcnJheXMgc2hvdWxkIGhhdmUgZWFjaCBlbGVtZW50IHZhbHVlLWluaXRpYWxpemVkIiwKLS8vIGh0dHA6Ly9xYy5lbWJhcmNhZGVyby5jb20vd2MvcWNtYWluLmFzcHg/ZD04Mzc1MQotLy8gTGFzdCBjaGVja2VkIHZlcnNpb246IEVtYmFyY2FkZXJvIEMrKyA2LjIxCi0vLyBTZWUgYWxzbzogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L3ZhbHVlX2luaXQuaHRtI2NvbXBpbGVyX2lzc3VlcwotLy8gKE5pZWxzIERla2tlciwgTEtFQiwgQXByaWwgMjAxMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotCi0jICBpZiBkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSAgICAgIC8vIGZpeCBicm9rZW4gPGNzdHJpbmc+IHNvIHRoYXQgQm9vc3QudGVzdCB3b3JrczoKLSMgICAgIGluY2x1ZGUgPGNzdHJpbmc+Ci0jICAgICB1bmRlZiBzdHJjbXAKLSMgIGVuZGlmCi0gICAvLyBmaXggYnJva2VuIGVycm5vIGRlY2xhcmF0aW9uOgotIyAgaW5jbHVkZSA8ZXJybm8uaD4KLSMgIGlmbmRlZiBlcnJubwotIyAgICAgZGVmaW5lIGVycm5vIGVycm5vCi0jICBlbmRpZgotCi0jZW5kaWYKLS8vCi0vLyBDKysweCBtYWNyb3M6Ci0vLwotI2lmIChfX0NPREVHRUFSQ19fIDw9IDB4NjIwKQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVAotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19DSEFSMTZfVAotI2RlZmluZSBORE5CT09TVF9IQVNfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotLy8gI2RlZmluZSBORE5CT09TVF9IQVNfQUxJR05PRgotI2RlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BTCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUwotI2RlZmluZSBORE5CT09TVF9IQVNfU0NPUEVEX0VOVU0KLS8vICNkZWZpbmUgTkROQk9PU1RfSEFTX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NURF9UWVBFX1RSQUlUUwotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLS8vCi0vLyBUUjEgbWFjcm9zOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9IQVNICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVFlQRV9UUkFJVFMKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9VTk9SREVSRURfTUFQCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVU5PUkRFUkVEX1NFVAotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotCi0vLyBPbiBub24tV2luMzIgcGxhdGZvcm1zIGxldCB0aGUgcGxhdGZvcm0gY29uZmlnIGZpZ3VyZSB0aGlzIG91dDoKLSNpZmRlZiBfV0lOMzIKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNlbmRpZgotCi0vLwotLy8gX19pbnQ2NDoKLS8vCi0jaWYgIWRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0vLwotLy8gY2hlY2sgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBzdXBwb3J0OgotLy8KLSNpZiAhZGVmaW5lZChfQ1BQVU5XSU5EKSAmJiAhZGVmaW5lZChORE5CT09TVF9DUFBVTldJTkQpICYmICFkZWZpbmVkKF9fRVhDRVBUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05TCi0jZW5kaWYKLS8vCi0vLyBhbGwgdmVyc2lvbnMgaGF2ZSBhIDxkaXJlbnQuaD46Ci0vLwotI2lmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNlbmRpZgotLy8KLS8vIGFsbCB2ZXJzaW9ucyBzdXBwb3J0IF9fZGVjbHNwZWM6Ci0vLwotI2lmIGRlZmluZWQoX19TVFJJQ1RfQU5TSV9fKQotLy8gY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcCB3aWxsIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JULCBldGMuLCB1bmxlc3MgYWxyZWFkeSBkZWZpbmVkICAKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jZW5kaWYKLS8vCi0vLyBBQkkgZml4aW5nIGhlYWRlcnM6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9BQklfUFJFRklYCi0jICBkZWZpbmUgTkROQk9PU1RfQUJJX1BSRUZJWCAibmRuYm9vc3QvY29uZmlnL2FiaS9ib3JsYW5kX3ByZWZpeC5ocHAiCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfQUJJX1NVRkZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9TVUZGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvYm9ybGFuZF9zdWZmaXguaHBwIgotI2VuZGlmCi0vLwotLy8gRGlzYWJsZSBXaW4zMiBzdXBwb3J0IGluIEFOU0kgbW9kZToKLS8vCi0jICBwcmFnbWEgZGVmaW5lb25vcHRpb24gTkROQk9PU1RfRElTQUJMRV9XSU4zMiAtQQotLy8KLS8vIE1TVkMgY29tcGF0aWJpbGl0eSBtb2RlIGRvZXMgc29tZSBuYXN0eSB0aGluZ3M6Ci0vLyBUT0RPOiBsb29rIHVwIGlmIHRoaXMgZG9lc24ndCBhcHBseSB0byB0aGUgd2hvbGUgMTJ4eCByYW5nZQotLy8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTIwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ29kZUdlYXIgQysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19DT0RFR0VBUkNfXykKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tZWF1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbWVhdS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMzhiZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tZWF1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBDb21lYXUgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0jaWYgKF9fQ09NT19WRVJTSU9OX18gPD0gNDI0NSkKLQotIyAgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPD0gMTMwMAotIyAgICAgaWYgX01TQ19WRVIgPiAxMDAKLSAgICAgICAgIC8vIG9ubHkgc2V0IHRoaXMgaW4gbm9uLXN0cmljdCBtb2RlOgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0FSR1VNRU5UX0RFUEVOREVOVF9MT09LVVAKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0vLyBWb2lkIHJldHVybnMgZG9uJ3Qgd29yayB3aGVuIGVtdWxhdGluZyBWQyA2IChQZXRlciBEaW1vdikKLS8vIFRPRE86IGxvb2sgdXAgaWYgdGhpcyBkb2Vzbid0IGFwcGx5IHRvIHRoZSB3aG9sZSAxMnh4IHJhbmdlCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxMzAwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotIyAgZW5kaWYKLQotI2VuZGlmICAvLyB2ZXJzaW9uIDQyNDUKLQotLy8KLS8vIGVuYWJsZSBfX2ludDY0IHN1cHBvcnQgaW4gVkMgZW11bGF0aW9uIG1vZGUKLS8vCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTVNfSU5UNjQKLSMgIGVuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkNvbWVhdSBjb21waWxlciB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fQ09NT19WRVJTSU9OX18pCi0KLS8vCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IGtub3cgQ29tZWF1IHByaW9yIHRvIHZlcnNpb24gNDI0NToKLSNpZiBfX0NPTU9fVkVSU0lPTl9fIDwgNDI0NQotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDQyNDU6Ci0jaWYgKF9fQ09NT19WRVJTSU9OX18gPiA0MjQ1KQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTE4MWFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hcmt1cyBTY2hvZXBmbGluIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLwotLy8gT3B0aW9ucyBjb21tb24gdG8gYWxsIGVkZyBiYXNlZCBjb21waWxlcnMuCi0vLwotLy8gVGhpcyBpcyBpbmNsdWRlZCBmcm9tIHdpdGhpbiB0aGUgaW5kaXZpZHVhbCBjb21waWxlciBtaW5pLWNvbmZpZ3MuCi0KLSNpZm5kZWYgIF9fRURHX1ZFUlNJT05fXwotIyAgZXJyb3IgVGhpcyBmaWxlIHJlcXVpcmVzIHRoYXQgX19FREdfVkVSU0lPTl9fIGJlIGRlZmluZWQuCi0jZW5kaWYKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMjM4KQotIyAgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotI2VuZGlmCi0KLSNpZiAoX19FREdfVkVSU0lPTl9fIDw9IDI0MCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jZW5kaWYKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMjQxKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQKQotIyAgIGRlZmluZSBORE5CT09TVF9OT19BUkdVTUVOVF9ERVBFTkRFTlRfTE9PS1VQCi0jZW5kaWYKLQotI2lmIChfX0VER19WRVJTSU9OX18gPD0gMjQ0KSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotI2VuZGlmIAotCi0jaWYgKF9fRURHX1ZFUlNJT05fXyA8IDMwMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jZW5kaWYgCi0KLSNpZiAoX19FREdfVkVSU0lPTl9fIDw9IDMwMykgJiYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETCkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotI2VuZGlmIAotCi0vLyBTZWUgYWxzbyBrYWkuaHBwIHdoaWNoIGNoZWNrcyBhIEthaS1zcGVjaWZpYyBzeW1ib2wgZm9yIEVICi0jIGlmICFkZWZpbmVkKF9fS0NDKSAmJiAhZGVmaW5lZChfX0VYQ0VQVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotIyBlbmRpZgotCi0jIGlmICFkZWZpbmVkKF9fTk9fTE9OR19MT05HKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSMgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9ORwotIyBlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBhYm92ZSBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2lmIChfX0VER19WRVJTSU9OX18gPCAzMTApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFCi0jZW5kaWYKLSNpZiAoX19FREdfVkVSU0lPTl9fIDw9IDMxMCkKLS8vIE5vIHN1cHBvcnQgZm9yIGluaXRpYWxpemVyIGxpc3RzCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNlbmRpZgotI2lmIChfX0VER19WRVJTSU9OX18gPCA0MDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNpZmRlZiBjX3BsdXNwbHVzCi0vLyBFREcgaGFzICJsb25nIGxvbmciIGluIG5vbi1zdHJpY3QgbW9kZQotLy8gSG93ZXZlciwgc29tZSBsaWJyYXJpZXMgaGF2ZSBpbnN1ZmZpY2llbnQgImxvbmcgbG9uZyIgc3VwcG9ydAotLy8gI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbXBhcV9jeHguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tcGFxX2N4eC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOGI1ZTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tcGFxX2N4eC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFRydTY0IEMrKyBjb21waWxlciBzZXR1cCAobm93IEhQKToKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiSFAgVHJ1NjQgQysrICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fREVDQ1hYX1ZFUikKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCIKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gTm90aGluZyB0byBkbyBoZXJlPwotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvY3JheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jcmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E4NjExOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jcmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDExLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBHcmVlbmhpbGxzIEMgY29tcGlsZXIgc2V0dXA6Ci0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkNyYXkgQyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9SRUxFQVNFKQotCi0jaWYgX1JFTEVBU0UgPCA3Ci0jICBlcnJvciAiQm9vc3QgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIENyYXkgY29tcGlsZXJzIHByaW9yIHRvIHZlcnNpb24gNywgcGxlYXNlIHRyeSB0aGUgY29uZmlndXJlIHNjcmlwdC4iCi0jZW5kaWYKLQotLy8KLS8vIENoZWNrIHRoaXMgaXMgYSByZWNlbnQgRURHIGJhc2VkIGNvbXBpbGVyLCBvdGhlcndpc2Ugd2UgZG9uJ3Qgc3VwcG9ydCBpdCBoZXJlOgotLy8KLSNpZm5kZWYgX19FREdfVkVSU0lPTl9fCi0jICBlcnJvciAiVW5zdXBwb3J0ZWQgQ3JheSBjb21waWxlciwgcGxlYXNlIHRyeSBydW5uaW5nIHRoZSBjb25maWd1cmUgc2NyaXB0LiIKLSNlbmRpZgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0vLwotLy8gQ3JheSBwZWN1bGlhcml0aWVzLCBwcm9iYWJseSB2ZXJzaW9uIDcgc3BlY2lmaWM6Ci0vLwotI3VuZGVmIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jdW5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2Ci0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLS8vI2RlZmluZSBORE5CT09TVF9CQ0JfUEFSVElBTF9TUEVDSUFMSVpBVElPTl9CVUcKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ESVNBQkxFX1NURF9GUENMQVNTSUZZCi0vLyNkZWZpbmUgTkROQk9PU1RfSEFTX0ZQQ0xBU1NJRlkKLQotI2RlZmluZSBORE5CT09TVF9TUF9VU0VfUFRIUkVBRFMgCi0jZGVmaW5lIE5ETkJPT1NUX0FDX1VTRV9QVEhSRUFEUyAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZGlnaXRhbG1hcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZGlnaXRhbG1hcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWNiM2I3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2RpZ2l0YWxtYXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyAgQ29weXJpZ2h0IChDKSBDaHJpc3RvZiBNZWVyd2FsZCAyMDAzCi0vLyAgQ29weXJpZ2h0IChDKSBEYW4gV2F0a2lucyAyMDAzCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIERpZ2l0YWwgTWFycyBDKysgY29tcGlsZXIgc2V0dXA6Ci0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSIF9fRE1DX1ZFUlNJT05fU1RSSU5HX18KLQotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QUkFHTUFfT05DRQotCi0jaWYgKF9fRE1DX18gPD0gMHg4MzMpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSNkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORwotI2RlZmluZSBORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSNlbmRpZgotI2lmIChfX0RNQ19fIDw9IDB4ODQwKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotI2RlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotI2RlZmluZSBORE5CT09TVF9OT19VTlJFQUNIQUJMRV9SRVRVUk5fREVURUNUSU9OCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotI2RlZmluZSBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jZW5kaWYKLQotLy8KLS8vIGhhcyBtYWNyb3M6Ci0jaWYgKF9fRE1DX18gPj0gMHg4NDApCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotI2RlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1dJTlRIUkVBRFMKLSNlbmRpZgotCi0jaWYgKF9fRE1DX18gPj0gMHg4NDcpCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotI2RlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSNlbmRpZgotCi0vLwotLy8gSXMgdGhpcyByZWFsbHkgdGhlIGJlc3Qgd2F5IHRvIGRldGVjdCB3aGV0aGVyIHRoZSBzdGQgbGliIGlzIGluIG5hbWVzcGFjZSBzdGQ/Ci0vLwotI2lmZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNlbmRpZgotI2lmICFkZWZpbmVkKF9fU1RMX0lNUE9SVF9WRU5ET1JfQ1NURCkgJiYgIWRlZmluZWQoX1NUTFBfSU1QT1JUX1ZFTkRPUl9DU1REKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jZW5kaWYKLQotCi0vLyBjaGVjayBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBvcnQ6Ci0jaWYgIWRlZmluZWQoX0NQUFVOV0lORCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05TCi0jZW5kaWYKLQotLy8KLS8vIEMrKzB4IGZlYXR1cmVzCi0vLwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNpZiAoX19ETUNfXyA8IDB4ODEyKQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNlbmRpZgotCi0jaWYgX19ETUNfXyA8IDB4ODAwCi0jZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyAuLi46Ci0jaWYgKF9fRE1DX18gPiAweDg0OCkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9nY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQ1MTMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgU3luZ2UgVG9kbyAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBHTlUgQysrIGNvbXBpbGVyIHNldHVwLgotCi0vLwotLy8gRGVmaW5lIE5ETkJPT1NUX0dDQyBzbyB3ZSBrbm93IHRoaXMgaXMgInJlYWwiIEdDQyBhbmQgbm90IHNvbWUgcHJldGVuZGVyOgotLy8KLSNpZiAhZGVmaW5lZChfX0NVREFDQ19fKQotI2RlZmluZSBORE5CT09TVF9HQ0MgKF9fR05VQ19fICogMTAwMDAgKyBfX0dOVUNfTUlOT1JfXyAqIDEwMCArIF9fR05VQ19QQVRDSExFVkVMX18pCi0jZW5kaWYKLQotI2lmIF9fR05VQ19fIDwgMwotIyAgIGlmIF9fR05VQ19NSU5PUl9fID09IDkxCi0gICAgICAgLy8gZWdjcyAxLjEgd29uJ3QgcGFyc2Ugc2hhcmVkX3B0ci5ocHAgd2l0aG91dCB0aGlzOgotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19BVVRPX1BUUgotIyAgIGVuZGlmCi0jICAgaWYgX19HTlVDX01JTk9SX18gPCA5NQotICAgICAgLy8KLSAgICAgIC8vIFByaW9yIHRvIGdjYyAyLjk1IG1lbWJlciB0ZW1wbGF0ZXMgb25seSBwYXJ0bHkKLSAgICAgIC8vIHdvcmsgLSBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotICAgICAgLy8gaW5zdGVhZCBzaW5jZSBpbmxpbmUgbWVtYmVyIHRlbXBsYXRlcyBtb3N0bHkgd29yay4KLSAgICAgIC8vCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUwotIyAgICAgaWYgX19HTlVDX01JTk9SX18gPj0gOQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jICAgaWYgX19HTlVDX01JTk9SX18gPCA5NgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgIGVuZGlmCi0KLSMgICBpZiBfX0dOVUNfTUlOT1JfXyA8PSA5NwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfREVDTEFSQVRJT05fT1ZFUkxPQURTX0ZST01fVFlQRU5BTUVfQkFTRQotIyAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotLy8gVmFyaWFkaWMgbWFjcm9zIGRvIG5vdCBleGlzdCBmb3IgZ2NjIHZlcnNpb25zIGJlZm9yZSAzLjAKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZWxpZiBfX0dOVUNfXyA9PSAzCi0jICBpZiBkZWZpbmVkIChfX1BBVEhTQ0FMRV9fKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICBlbmRpZgotICAgLy8KLSAgIC8vIGdjYy0zLnggcHJvYmxlbXM6Ci0gICAvLwotICAgLy8gQnVnIHNwZWNpZmljIHRvIGdjYyAzLjEgYW5kIDMuMjoKLSAgIC8vCi0jICBpZiAoKF9fR05VQ19NSU5PUl9fID09IDEpIHx8IChfX0dOVUNfTUlOT1JfXyA9PSAyKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSMgIGVuZGlmCi0jICBpZiBfX0dOVUNfTUlOT1JfXyA8IDQKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNlbmRpZgotI2lmIF9fR05VQ19fIDwgNAotLy8KLS8vIEFsbCBwcm9ibGVtcyB0byBnY2MtMy54IGFuZCBlYXJsaWVyIGhlcmU6Ci0vLwotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSMgIGlmZGVmIF9fT1BFTjY0X18KLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgX19HTlVDX18gPCA0IHx8ICggX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDQgKQotLy8gUHJldmlvdXMgdmVyc2lvbnMgb2YgR0NDIGRpZCBub3QgY29tcGxldGVseSBpbXBsZW1lbnQgdmFsdWUtaW5pdGlhbGl6YXRpb246Ci0vLyBHQ0MgQnVnIDMwMTExLCAiVmFsdWUtaW5pdGlhbGl6YXRpb24gb2YgUE9EIGJhc2UgY2xhc3MgZG9lc24ndCBpbml0aWFsaXplCi0vLyBtZW1iZXJzIiwgcmVwb3J0ZWQgYnkgSm9uYXRoYW4gV2FrZWx5IGluIDIwMDYsCi0vLyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMwMTExIChmaXhlZCBmb3IgR0NDIDQuNCkKLS8vIEdDQyBCdWcgMzM5MTYsICJEZWZhdWx0IGNvbnN0cnVjdG9yIGZhaWxzIHRvIGluaXRpYWxpemUgYXJyYXkgbWVtYmVycyIsCi0vLyByZXBvcnRlZCBieSBNaWNoYWVsIEVsaXphYmV0aCBDaGFzdGFpbiBpbiAyMDA3LAotLy8gaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMzkxNiAoZml4ZWQgZm9yIEdDQyA0LjIuNCkKLS8vIFNlZSBhbHNvOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvdmFsdWVfaW5pdC5odG0jY29tcGlsZXJfaXNzdWVzCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKF9fRVhDRVBUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotCi0KLS8vCi0vLyBUaHJlYWRpbmcgc3VwcG9ydDogVHVybiB0aGlzIG9uIHVuY29uZGl0aW9uYWxseSBoZXJlIChleGNlcHQgZm9yCi0vLyB0aG9zZSBwbGF0Zm9ybXMgd2hlcmUgd2UgY2FuIGtub3cgZm9yIHN1cmUpLiBJdCB3aWxsIGdldCB0dXJuZWQgb2ZmIGFnYWluCi0vLyBsYXRlciBpZiBubyB0aHJlYWRpbmcgQVBJIGlzIGRldGVjdGVkLgotLy8KLSNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykgJiYgIWRlZmluZWQobGludXgpICYmICFkZWZpbmVkKF9fbGludXgpICYmICFkZWZpbmVkKF9fbGludXhfXykKLSMgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYgCi0KLS8vCi0vLyBnY2MgaGFzICJsb25nIGxvbmciCi0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vCi0vLyBnY2MgaW1wbGVtZW50cyB0aGUgbmFtZWQgcmV0dXJuIHZhbHVlIG9wdGltaXphdGlvbiBzaW5jZSB2ZXJzaW9uIDMuMQotLy8KLSNpZiBfX0dOVUNfXyA+IDMgfHwgKCBfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fID49IDEgKQotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2VuZGlmCi0KLS8vCi0vLyBEeW5hbWljIHNoYXJlZCBvYmplY3QgKERTTykgYW5kIGR5bmFtaWMtbGluayBsaWJyYXJ5IChETEwpIHN1cHBvcnQKLS8vCi0jaWYgX19HTlVDX18gPj0gNAotIyAgaWYgKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChXSU4zMikpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCi0gICAgIC8vIEFsbCBXaW4zMiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMsIGluY2x1ZGluZyA2NC1iaXQgV2luZG93cyBhbmQgTWluR1csIGRlZmluZSAKLSAgICAgLy8gX1dJTjMyIG9yIG9uZSBvZiBpdHMgdmFyaWFudCBzcGVsbGluZ3MuIE5vdGUgdGhhdCBDeWd3aW4gaXMgYSBQT1NJWCBlbnZpcm9ubWVudCwKLSAgICAgLy8gc28gZG9lcyBub3QgZGVmaW5lIF9XSU4zMiBvciBpdHMgdmFyaWFudHMuCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFNQRUMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19hdHRyaWJ1dGVfXygoZGxsZXhwb3J0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQgX19hdHRyaWJ1dGVfXygoZGxsaW1wb3J0KSkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgIGVuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSNlbHNlCi0vLyBjb25maWcvcGxhdGZvcm0vd2luMzIuaHBwIHdpbGwgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQsIGV0Yy4sIHVubGVzcyBhbHJlYWR5IGRlZmluZWQgIAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSNlbmRpZgotCi0vLwotLy8gUlRUSSBhbmQgdHlwZWluZm8gZGV0ZWN0aW9uIGlzIHBvc3NpYmxlIHBvc3QgZ2NjLTQuMzoKLS8vCi0jaWYgX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA+PSA0MDMKLSMgIGlmbmRlZiBfX0dYWF9SVFRJCi0jICAgICBpZm5kZWYgTkROQk9PU1RfTk9fVFlQRUlECi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVFlQRUlECi0jICAgICBlbmRpZgotIyAgICAgaWZuZGVmIE5ETkJPT1NUX05PX1JUVEkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9OT19SVFRJCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gUmVjZW50IEdDQyB2ZXJzaW9ucyBoYXZlIF9faW50MTI4IHdoZW4gaW4gNjQtYml0IG1vZGUuCi0vLwotLy8gV2UgZGlzYWJsZSB0aGlzIGlmIHRoZSBjb21waWxlciBpcyByZWFsbHkgbnZjYyBhcyBpdAotLy8gZG9lc24ndCBhY3R1YWxseSBzdXBwb3J0IF9faW50MTI4IGFzIG9mIENVREFfVkVSU0lPTj01MDAwCi0vLyBldmVuIHRob3VnaCBpdCBkZWZpbmVzIF9fU0laRU9GX0lOVDEyOF9fLiAgCi0vLyBTZWUgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzgwNDgKLS8vIE9ubHkgcmUtZW5hYmxlIHRoaXMgZm9yIG52Y2MgaWYgeW91J3JlIGFic29sdXRlbHkgc3VyZQotLy8gb2YgdGhlIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggaXQncyBzdXBwb3J0ZWQ6Ci0vLwotI2lmIGRlZmluZWQoX19TSVpFT0ZfSU5UMTI4X18pICYmICFkZWZpbmVkKF9fQ1VEQUNDX18pCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0lOVDEyOAotI2VuZGlmCi0KLS8vIEMrKzB4IGZlYXR1cmVzIGluIDQuMy5uIGFuZCBsYXRlcgotLy8KLSNpZiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID4gMikpICYmIGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0vLyBDKysweCBmZWF0dXJlcyBhcmUgb25seSBlbmFibGVkIHdoZW4gLXN0ZD1jKysweCBvciAtc3RkPWdudSsrMHggYXJlCi0vLyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgd2hpY2ggaW4gdHVybiBkZWZpbmVzCi0vLyBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXy4KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUlZBTFVFX1JFRlMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19WQVJJQURJQ19UTVBMCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0KLS8vIFZhcmlhZGljIHRlbXBsYXRlcyBjb21waWxlcjogCi0vLyAgIGh0dHA6Ly93d3cuZ2VuZXJpYy1wcm9ncmFtbWluZy5vcmcvfmRncmVnb3IvY3BwL3ZhcmlhZGljLXRlbXBsYXRlcy5odG1sCi0jICBpZiBkZWZpbmVkKF9fVkFSSUFESUNfVEVNUExBVEVTKSB8fCAoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA0KSAmJiBkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WQVJJQURJQ19UTVBMCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC40Lm4gYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDQpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2VuZGlmCi0KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC41LjAgYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC41LjEgYW5kIGxhdGVyCi0vLwotI2lmIChfX0dOVUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05VQ19QQVRDSExFVkVMX18gPCA0MDUwMSkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0vLyBzY29wZWQgZW51bXMgaGF2ZSBhIHNlcmlvdXMgYnVnIGluIDQuNC4wLCBzbyBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TIGJlZm9yZSA0LjUuMQotLy8gU2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MzgwNjQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNlbmRpZgotCi0vLyBDKysweCBmZWF0dXJlcyBpbiA0LjYubiBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNikgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2VuZGlmCi0KLS8vIEMrKzB4IGZlYXR1cmVzIGluIDQuNy5uIGFuZCBsYXRlcgotLy8KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3KSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0jZW5kaWYKLQotLy8gQysrMHggZmVhdHVyZXMgaW4gNC44LjEgYW5kIGxhdGVyCi0vLwotI2lmIChfX0dOVUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05VQ19QQVRDSExFVkVMX18gPCA0MDgwMSkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTVBJTEVSCi0jICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkdOVSBDKysgdmVyc2lvbiAiIF9fVkVSU0lPTl9fCi0jZW5kaWYKLQotLy8gQ29uY2VwdEdDQyBjb21waWxlcjoKLS8vICAgaHR0cDovL3d3dy5nZW5lcmljLXByb2dyYW1taW5nLm9yZy9zb2Z0d2FyZS9Db25jZXB0R0NDLwotI2lmZGVmIF9fR1hYX0NPTkNFUFRTX18KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQ09OQ0VQVFMKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiQ29uY2VwdEdDQyB2ZXJzaW9uICIgX19WRVJTSU9OX18KLSNlbmRpZgotCi0vLyB2ZXJzaW9ucyBjaGVjazoKLS8vIHdlIGRvbid0IGtub3cgZ2NjIHByaW9yIHRvIHZlcnNpb24gMi45MDoKLSNpZiAoX19HTlVDX18gPT0gMikgJiYgKF9fR05VQ19NSU5PUl9fIDwgOTApCi0jICBlcnJvciAiQ29tcGlsZXIgbm90IGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgNC42IChQcmUtcmVsZWFzZSk6Ci0jaWYgKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA2KSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVsc2UKLS8vIHdlIGRvbid0IGVtaXQgd2FybmluZ3MgaGVyZSBhbnltb3JlIHNpbmNlIHRoZXJlIGFyZSBubyBkZWZlY3QgbWFjcm9zIGRlZmluZWQgZm9yCi0vLyBnY2MgcG9zdCAzLjQsIHNvIGFueSBmYWlsdXJlcyBhcmUgZ2NjIHJlZ3Jlc3Npb25zLi4uCi0vLyMgICAgIHdhcm5pbmcgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djY194bWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjX3htbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZjlmNzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ2NjX3htbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgR0NDLVhNTCBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSMgIGlmICFkZWZpbmVkKF9fR0NDWE1MX0dOVUNfXykgfHwgKChfX0dDQ1hNTF9HTlVDX18gPD0gMykgJiYgKF9fR0NDWE1MX0dOVUNfTUlOT1JfXyA8PSAzKSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgZW5kaWYKLQotLy8KLS8vIFRocmVhZGluZyBzdXBwb3J0OiBUdXJuIHRoaXMgb24gdW5jb25kaXRpb25hbGx5IGhlcmUgKGV4Y2VwdCBmb3IKLS8vIHRob3NlIHBsYXRmb3JtcyB3aGVyZSB3ZSBjYW4ga25vdyBmb3Igc3VyZSkuIEl0IHdpbGwgZ2V0IHR1cm5lZCBvZmYgYWdhaW4KLS8vIGxhdGVyIGlmIG5vIHRocmVhZGluZyBBUEkgaXMgZGV0ZWN0ZWQuCi0vLwotI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQobGludXgpICYmICFkZWZpbmVkKF9fbGludXgpICYmICFkZWZpbmVkKF9fbGludXhfXykKLSMgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYgCi0KLS8vCi0vLyBnY2MgaGFzICJsb25nIGxvbmciCi0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vIEMrKzB4IGZlYXR1cmVzOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMgIAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkdDQy1YTUwgQysrIHZlcnNpb24gIiBfX0dDQ1hNTF9fCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ3JlZW5oaWxscy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ncmVlbmhpbGxzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE2ODk3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ncmVlbmhpbGxzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBHcmVlbmhpbGxzIEMrKyBjb21waWxlciBzZXR1cDoKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiR3JlZW5oaWxscyBDKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX2docykKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb21tb25fZWRnLmhwcCIKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBHcmVlbmhpbGxzIHByaW9yIHRvIHZlcnNpb24gMDoKLSNpZiBfX2docyA8IDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgMDoKLSNpZiAoX19naHMgPiAwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2hwX2FjYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ocF9hY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODQzOGU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2hwX2FjYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBUb29uIEtuYXBlbiAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEJvcmlzIEd1YmVua28gMjAwNiAtIDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgSFAgYUNDIEMrKyBjb21waWxlciBzZXR1cDoKLQotI2lmIGRlZmluZWQoX19FREdfXykKLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA8PSAzMzEwMCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLSMgIGlmICFkZWZpbmVkKF9OQU1FU1BBQ0VfU1REKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA8PSAzMzMwMCkKLS8vIG1lbWJlciB0ZW1wbGF0ZXMgYXJlIHN1ZmZpY2llbnRseSBicm9rZW4gdGhhdCB3ZSBkaXNhYmxlIHRoZW0gZm9yIG5vdwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX05FU1RFRF9ERVJJVkFUSU9OUwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfREVDTEFSQVRJT05fT1ZFUkxPQURTX0ZST01fVFlQRU5BTUVfQkFTRQotI2VuZGlmCi0KLSNpZiAoX19IUF9hQ0MgPD0gMzgwMDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA+IDUwMDAwKSAmJiAoX19IUF9hQ0MgPCA2MDAwMCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04KLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSNlbmRpZiAKLQotLy8gb3B0aW9uYWwgZmVhdHVyZXMgcmF0aGVyIHRoYW4gZGVmZWN0czoKLSNpZiAoX19IUF9hQ0MgPj0gMzM5MDApCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotI2lmIChfX0hQX2FDQyA+PSA1MDAwMCApICYmIChfX0hQX2FDQyA8PSA1MzgwMCApIHx8IChfX0hQX2FDQyA8IDMxMzAwICkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9LRVlXT1JECi0jZW5kaWYKLQotLy8gVGhpcyBtYWNybyBzaG91bGQgbm90IGJlIGRlZmluZWQgd2hlbiBjb21waWxpbmcgaW4gc3RyaWN0IGFuc2kKLS8vIG1vZGUsIGJ1dCwgY3VycmVudGx5LCB3ZSBkb24ndCBoYXZlIHRoZSBhYmlsaXR5IHRvIGRldGVybWluZQotLy8gd2hhdCBzdGFuZGFyZCBtb2RlIHdlIGFyZSBjb21waWxpbmcgd2l0aC4gU29tZSBmdXR1cmUgdmVyc2lvbgotLy8gb2YgYUNDNiBjb21waWxlciB3aWxsIHByb3ZpZGUgcHJlZGVmaW5lZCBtYWNyb3MgcmVmbGVjdGluZyB0aGUKLS8vIGNvbXBpbGF0aW9uIG9wdGlvbnMsIGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbW9kZS4KLSNpZiAoX19IUF9hQ0MgPj0gNjAwMDApIHx8ICgoX19IUF9hQ0MgPiAzODAwMCkgJiYgZGVmaW5lZChfX2hweHN0ZDk4KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkhQIGFDQyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fSFBfYUNDKQotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IEhQIGFDQyBwcmlvciB0byB2ZXJzaW9uIDMzMDAwOgotI2lmIF9fSFBfYUNDIDwgMzMwMDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLQotLy8KLS8vIEV4dGVuZGVkIGNoZWNrcyBmb3Igc3VwcG9ydGluZyBhQ0Mgb24gUEEtUklTQwotI2lmIF9fSFBfYUNDID4gMzAwMDAgJiYgX19IUF9hQ0MgPCA1MDAwMAotIyAgaWYgX19IUF9hQ0MgPCAzODAwMAotICAgICAgLy8gdmVyc2lvbnMgcHJpb3IgdG8gdmVyc2lvbiBBLjAzLjgwIG5vdCBzdXBwb3J0ZWQKLSMgICAgIGVycm9yICJDb21waWxlciB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgLSB2ZXJzaW9uIEEuMDMuODAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIgotIyAgZWxpZiAhZGVmaW5lZChfX2hweHN0ZDk4KQotICAgICAgLy8gbXVzdCBjb21waWxlIHVzaW5nIHRoZSBvcHRpb24gK2hweHN0ZDk4IHdpdGggdmVyc2lvbiBBLjAzLjgwIGFuZCBhYm92ZQotIyAgICAgZXJyb3IgIkNvbXBpbGVyIG9wdGlvbiAnK2hweHN0ZDk4JyBpcyByZXF1aXJlZCBmb3IgcHJvcGVyIHN1cHBvcnQiCi0jICBlbmRpZiAvL1BBLVJJU0MKLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBib29zdFxjb25maWdcc3VmZml4LmhwcCBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2lmICFkZWZpbmVkKF9fRURHX18pCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLyogCi0gIFNlZSBodHRwczovL2ZvcnVtczEzLml0cmMuaHAuY29tL3NlcnZpY2UvZm9ydW1zL3F1ZXN0aW9uYW5zd2VyLmRvP3RocmVhZElkPTE0NDMzMzEgYW5kCi0gICAgICBodHRwczovL2ZvcnVtczEzLml0cmMuaHAuY29tL3NlcnZpY2UvZm9ydW1zL3F1ZXN0aW9uYW5zd2VyLmRvP3RocmVhZElkPTE0NDM0MzYKLSovCi0KLSNpZiAoX19IUF9hQ0MgPCA2MjUwMCkgfHwgIWRlZmluZWQoSFBfQ1hYMHhfU09VUkNFKQotICAjZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2VuZGlmCi0KLSNlbmRpZgotCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGZvciBIUC1VWC9pYTY0IGlzIDYxMzAwCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gZm9yIFBBLVJJU0MgaXMgMzgwMDAKLSNpZiAoKF9fSFBfYUNDID4gNjEzMDApIHx8ICgoX19IUF9hQ0MgPiAzODAwMCkgJiYgZGVmaW5lZChfX2hweHN0ZDk4KSkpCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9pbnRlbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9pbnRlbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMTY4MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvaW50ZWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLTguCi0vLyAgKEMpIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLgotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4KLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyIC0gMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEd1aWxsYXVtZSBNZWxxdWlvbmQgMjAwMiAtIDIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgTWFydGluIFdpbGxlIDIwMDMuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIEludGVsIGNvbXBpbGVyIHNldHVwOgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0jaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIF9fSU5URUxfQ09NUElMRVIKLSNlbGlmIGRlZmluZWQoX19JQ0wpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gX19JQ0wKLSNlbGlmIGRlZmluZWQoX19JQ0MpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gX19JQ0MKLSNlbGlmIGRlZmluZWQoX19FQ0MpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gX19FQ0MKLSNlbmRpZgotCi0vLyBGbGFncyBkZXRlcm1pbmVkIGJ5IGNvbXBhcmluZyBvdXRwdXQgb2YgJ2ljcGMgLWRNIC1FJyB3aXRoIGFuZCB3aXRob3V0ICctc3RkPWMrKzB4JwotI2lmICghKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkpICYmIGRlZmluZWQoX19TVERDX0hPU1RFRF9fKSAmJiAoX19TVERDX0hPU1RFRF9fICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSAxMjAwKSkpIHx8IGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NQUDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfU1REQ1hYMFgKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNjAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1NURENYWDBYCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0lOVEVMX1NURENYWDBYCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJJbnRlbCBDKysgQysrMHggbW9kZSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIkludGVsIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OCi0KLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfV0lOIE5ETkJPT1NUX0lOVEVMCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVMX0xJTlVYIE5ETkJPT1NUX0lOVEVMCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA1MDApICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA2MDApCi0KLSMgIGlmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8PSAxMzAwKSAvLyBhZGRlZCBjaGVjayBmb3IgPD0gVkMgNyAoUGV0ZXIgRGltb3YpCi0KLS8vIEJvb3N0IGxpYnJhcmllcyBhc3N1bWUgc3Ryb25nIHN0YW5kYXJkIGNvbmZvcm1hbmNlIHVubGVzcyBvdGhlcndpc2UKLS8vIGluZGljYXRlZCBieSBhIGNvbmZpZyBtYWNyby4gQXMgY29uZmlndXJlZCBieSBJbnRlbCwgdGhlIEVERyBmcm9udC1lbmQKLS8vIHJlcXVpcmVzIGNlcnRhaW4gY29tcGlsZXIgb3B0aW9ucyBiZSBzZXQgdG8gYWNoaWV2ZSB0aGF0IHN0cm9uZyBjb25mb3JtYW5jZS4KLS8vIFBhcnRpY3VsYXJseSAvUW9wdGlvbixjLC0tYXJnX2RlcF9sb29rdXAgKHJlcG9ydGVkIGJ5IEtpcmsgS2xvYmUgJiBUaG9tYXMgV2l0dCkKLS8vIGFuZCAvWmM6d2NoYXJfdCxmb3JTY29wZS4gU2VlIGJvb3N0LXJvb3QvdG9vbHMvYnVpbGQvaW50ZWwtd2luMzItdG9vbHMuamFtIGZvcgotLy8gZGV0YWlscyBhcyB0aGV5IGFwcGx5IHRvIHBhcnRpY3VsYXIgdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyLiBXaGVuIHRoZQotLy8gY29tcGlsZXIgZG9lcyBub3QgcHJlZGVmaW5lIGEgbWFjcm8gaW5kaWNhdGluZyBpZiBhbiBvcHRpb24gaGFzIGJlZW4gc2V0LAotLy8gdGhpcyBjb25maWcgZmlsZSBzaW1wbHkgYXNzdW1lcyB0aGUgb3B0aW9uIGhhcyBiZWVuIHNldC4KLS8vIFRodXMgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUCB3aWxsIG5vdCBiZSBkZWZpbmVkLCBldmVuIGlmCi0vLyB0aGUgY29tcGlsZXIgb3B0aW9uIGlzIG5vdCBlbmFibGVkLgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGVuZGlmCi0KLS8vIFZvaWQgcmV0dXJucywgNjQgYml0IGludGVncmFscyBkb24ndCB3b3JrIHdoZW4gZW11bGF0aW5nIFZDIDYgKFBldGVyIERpbW92KQotCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTIwMCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICBlbmRpZgotCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA3MTApICYmIGRlZmluZWQoX1dJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BPSU5URVJfVE9fTUVNQkVSX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNlbmRpZgotCi0vLyBTZWUgaHR0cDovL2FzcG4uYWN0aXZlc3RhdGUuY29tL0FTUE4vTWFpbC9NZXNzYWdlL2Jvb3N0LzE2MTQ4NjQKLSNpZiBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8IDYwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jZWxzZQotLy8gV2Ugc2hvdWxkIHRlc3QgdGhlIG1hY3JvIF9XQ0hBUl9UX0RFRklORUQgdG8gY2hlY2sgaWYgdGhlIGNvbXBpbGVyCi0vLyBzdXBwb3J0cyB3Y2hhcl90IG5hdGl2ZWx5LiAqQlVUKiB0aGVyZSBpcyBhIHByb2JsZW0gaGVyZTogdGhlIHN0YW5kYXJkCi0vLyBoZWFkZXJzIGRlZmluZSB0aGlzIG1hY3JvIGlmIHRoZXkgdHlwZWRlZiB3Y2hhcl90LiBBbnl3YXksIHdlJ3JlIGx1Y2t5Ci0vLyBiZWNhdXNlIHRoZXkgZGVmaW5lIGl0IHdpdGhvdXQgYSB2YWx1ZSwgd2hpbGUgSW50ZWwgQysrIGRlZmluZXMgaXQKLS8vIHRvIDEuIFNvIHdlIGNhbiBjaGVjayBpdHMgdmFsdWUgdG8gc2VlIGlmIHRoZSBtYWNybyB3YXMgZGVmaW5lZCBuYXRpdmVseQotLy8gb3Igbm90LgotLy8gVW5kZXIgVU5JWCwgdGhlIHNpdHVhdGlvbiBpcyBleGFjdGx5IHRoZSBzYW1lLCBidXQgdGhlIG1hY3JvIF9XQ0hBUl9UCi0vLyBpcyB1c2VkIGluc3RlYWQuCi0jICBpZiAoKF9XQ0hBUl9UX0RFRklORUQgKyAwKSA9PSAwKSAmJiAoKF9XQ0hBUl9UICsgMCkgPT0gMCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMKQotLy8KLS8vIEZpZ3VyZSBvdXQgd2hlbiBJbnRlbCBpcyBlbXVsYXRpbmcgdGhpcyBnY2MgYnVnCi0vLyAoQWxsIEludGVsIHZlcnNpb25zIHByaW9yIHRvIDkuMC4yNiwgYW5kIHZlcnNpb25zCi0vLyBsYXRlciB0aGFuIHRoYXQgaWYgdGhleSBhcmUgc2V0IHVwIHRvIGVtdWxhdGUgZ2NjIDMuMgotLy8gb3IgZWFybGllcik6Ci0vLwotIyAgaWYgKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPD0gMikpIHx8IChORE5CT09TVF9JTlRFTCA8IDkwMCkgfHwgKF9fSU5URUxfQ09NUElMRVJfQlVJTERfREFURSA8IDIwMDUwOTEyKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1NDT1BFX1VTSU5HX0RFQ0xBUkFUSU9OX0JSRUFLU19BREwKLSMgIGVuZGlmCi0jZW5kaWYKLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgNCkpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPD0gMTIwMCkKLS8vIEdDQyBvciBWQyBlbXVsYXRpb246Ci0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VuZGlmCi0vLwotLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhY3R1YWxseSBnb3QgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIHNldCBjb3JyZWN0bHksIGlmIHdlIGRvbid0IGRvIHRoaXMgbm93LCB3ZSB3aWxsIGdldCBlcnJvcnMgbGF0ZXIKLS8vIGluIHR5cGVfdHJhaXRzIGNvZGUgYW1vbmcgb3RoZXIgdGhpbmdzLCBnZXR0aW5nIHRoaXMgY29ycmVjdAotLy8gZm9yIHRoZSBJbnRlbCBjb21waWxlciBpcyBhY3R1YWxseSByZW1hcmthYmx5IGZyYWdpbGUgYW5kIHRyaWNreToKLS8vCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotI2luY2x1ZGUgPGN3Y2hhcj4KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGFzc2VydF9ub19pbnRyaW5zaWNfd2NoYXJfdDsKLXRlbXBsYXRlPD4gc3RydWN0IGFzc2VydF9ub19pbnRyaW5zaWNfd2NoYXJfdDx3Y2hhcl90PiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotLy8gaWYgeW91IHNlZSBhbiBlcnJvciBoZXJlIHRoZW4geW91IG5lZWQgdG8gdW5zZXQgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIHdoZXJlIGl0IGlzIGRlZmluZWQgYWJvdmU6Ci10eXBlZGVmIGFzc2VydF9ub19pbnRyaW5zaWNfd2NoYXJfdDx1bnNpZ25lZCBzaG9ydD46OnR5cGUgYXNzZXJ0X25vX2ludHJpbnNpY193Y2hhcl90XzsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhc3NlcnRfaW50cmluc2ljX3djaGFyX3Q7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBhc3NlcnRfaW50cmluc2ljX3djaGFyX3Q8d2NoYXJfdD4ge307Ci0vLyBpZiB5b3Ugc2VlIGFuIGVycm9yIGhlcmUgdGhlbiBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1Qgb24gdGhlIGNvbW1hbmQgbGluZToKLXRlbXBsYXRlPD4gc3RydWN0IGFzc2VydF9pbnRyaW5zaWNfd2NoYXJfdDx1bnNpZ25lZCBzaG9ydD4ge307Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSKzAgPj0gMTAwMCkKLSMgIGlmIF9NU0NfVkVSID49IDEyMDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTVNfSU5UNjQKLSMgIGVuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNlbGlmIGRlZmluZWQoX1dJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIKLSNlbmRpZgotCi0vLyBJIGNoZWNrZWQgdmVyc2lvbiA2LjAgYnVpbGQgMDIwMzEyWiwgaXQgaW1wbGVtZW50cyB0aGUgTlJWTy4KLS8vIENvcnJlY3QgdGhpcyBhcyB5b3UgZmluZCBvdXQgd2hpY2ggdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIKLS8vIGltcGxlbWVudGVkIHRoZSBOUlZPIGZpcnN0LiAgKERhbmllbCBGcmV5KQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA+PSA2MDApCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSNlbmRpZgotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IEludGVsIHByaW9yIHRvIHZlcnNpb24gNS4wOgotI2lmIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDwgNTAwCi0jICBlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0KLS8vIEludGVsIG9uIE1hY09TIHJlcXVpcmVzCi0jaWYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKLSMgIGRlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNlbmRpZgotCi0vLyBJbnRlbCBvbiBBbHRpeCBJdGFuaXVtCi0jaWYgZGVmaW5lZChfX2l0YW5pdW1fXykgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotI2VuZGlmCi0KLS8vCi0vLyBBbiBhdHRlbXB0IHRvIHZhbHVlLWluaXRpYWxpemUgYSBwb2ludGVyLXRvLW1lbWJlciBtYXkgdHJpZ2dlciBhbgotLy8gaW50ZXJuYWwgZXJyb3Igb24gSW50ZWwgPD0gMTEuMSAobGFzdCBjaGVja2VkIHZlcnNpb24pLCBhcyB3YXMgCi0vLyByZXBvcnRlZCBieSBKb2huIE1hZGRvY2ssIEludGVsIHN1cHBvcnQgaXNzdWUgNTg5ODMyLCBNYXkgMjAxMC4KLS8vIE1vcmVvdmVyLCBhY2NvcmRpbmcgdG8gdGVzdCByZXN1bHRzIGZyb20gSHVhbmctVmlzdGEteDg2XzMyX2ludGVsLAotLy8gaW50ZWwtdmM5LXdpbi0xMS4xIG1heSBsZWF2ZSBhIG5vbi1QT0QgYXJyYXkgdW5pbml0aWFsaXplZCwgaW4gc29tZSAKLS8vIGNhc2VzIHdoZW4gaXQgc2hvdWxkIGJlIHZhbHVlLWluaXRpYWxpemVkLgotLy8gKE5pZWxzIERla2tlciwgTEtFQiwgTWF5IDIwMTApCi0vLyBBcHBhcmVudGx5IEludGVsIDEyLjEgKGNvbXBpbGVyIHZlcnNpb24gbnVtYmVyIDk5OTkgISEpIGhhcyB0aGUgc2FtZSBpc3N1ZSAoY29tcGlsZXIgcmVncmVzc2lvbikuCi0jaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgaWYgKF9fSU5URUxfQ09NUElMRVIgPD0gMTExMCkgfHwgKF9fSU5URUxfQ09NUElMRVIgPT0gOTk5OSkgfHwgKGRlZmluZWQoX1dJTjMyKSAmJiAoX19JTlRFTF9DT01QSUxFUiA8IDE1MDApKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIER5bmFtaWMgc2hhcmVkIG9iamVjdCAoRFNPKSBhbmQgZHluYW1pYy1saW5rIGxpYnJhcnkgKERMTCkgc3VwcG9ydAotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCi0jZW5kaWYKLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8gICAgIC0gSUNDIGFkZGVkIHN0YXRpY19hc3NlcnQgaW4gMTEuMCAoZmlyc3QgdmVyc2lvbiB3aXRoIEMrKzB4IHN1cHBvcnQpCi0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSU5URUxfU1REQ1hYMFgpCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotLy8KLS8vIFRoZXNlIHBhc3Mgb3VyIHRlc3QgY2FzZXMsIGJ1dCBhcmVuJ3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYWNjb3JkaW5nIHRvOgotLy8gaHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9hcnRpY2xlcy9jMHgtZmVhdHVyZXMtc3VwcG9ydGVkLWJ5LWludGVsLWMtY29tcGlsZXIvCi0vLwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLS8vIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0vLyMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSU5URUxfU1REQ1hYMFgpICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA+PSAxMjAwKQotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgLy8gRW5hYmxpbmcgdGhpcyBicmVha3MgRmlsZXN5c3RlbSBhbmQgRXhjZXB0aW9uIGxpYnJhcmllcwotLy8jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TICAvLyBkb2Vzbid0IHJlYWxseSB3b3JrISEKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9MQU1CREFTCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLQotLy8gaWNsIFZlcnNpb24gMTIuMS4wLjIzMyBCdWlsZCAyMDExMDgxMSBhbmQgcG9zc2libHkgc29tZSBvdGhlciBidWlsZHMKLS8vIGhhZCBhbiBpbmNvcnJlY3QgX19JTlRFTF9DT01QSUxFUiB2YWx1ZSBvZiA5OTk5LiBJbnRlbCBzYXkgdGhpcyBoYXMgYmVlbiBmaXhlZC4gCi0jaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTF9TVERDWFgwWCkgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OID4gMTIwMCkKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jICB1bmRlZiAgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSMgIHVuZGVmICBORE5CT09TVF9OT19TRklOQUVfRVhQUgotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSMgIHVuZGVmICBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLQotLy8gaHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9hcnRpY2xlcy9jMHgtZmVhdHVyZXMtc3VwcG9ydGVkLWJ5LWludGVsLWMtY29tcGlsZXIvCi0vLyBjb250aW51ZXMgdG8gbGlzdCBzY29wZWQgZW51bSBzdXBwb3J0IGFzICJQYXJ0aWFsIiAKLS8vIyAgdW5kZWYgIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUyAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDw9IDE3MDApCi0vLwotLy8gQWx0aG91Z2ggdGhlIEludGVsIGNvbXBpbGVyIGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZyB0aGVzZSwgaXQgYXBwZWFycyBub3QgdG8gaW4gTVNWQyBjb21wYXRpYmlsaXR5IG1vZGU6Ci0vLwotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGRlZmluZSAgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSAgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotIyAgZGVmaW5lICBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZW5kaWYKLQotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8IDEyMDApCi0vLwotLy8gZmVudi5oIGFwcGVhcnMgbm90IHRvIHdvcmsgd2l0aCBJbnRlbCBwcmlvciB0byAxMi4wOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19GRU5WX0gKLSNlbmRpZgotCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uOgotI2lmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA+IDEyMDApCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX0FTU0VSVF9DT05GSUcpCi0jICAgICBlcnJvciAiVW5rbm93biBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICBlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0vLwotLy8gICAgICBXZSBkb24ndCBlbWl0IHRoaXMgd2FybmluZyBhbnkgbW9yZSwgc2luY2Ugd2UgaGF2ZSBzbyBmZXcKLS8vICAgICAgZGVmZWN0IG1hY3JvcyBzZXQgYW55d2F5IChqdXN0IHRoZSBvbmUpLgotLy8KLS8vIyAgICAgcHJhZ21hIG1lc3NhZ2UoIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIikKLSMgIGVuZGlmCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIva2FpLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2thaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MzIwZjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIva2FpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBLYWkgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbW1vbl9lZGcuaHBwIgotCi0jICAgaWYgKF9fS0NDX1ZFUlNJT04gPD0gNDAwMSkgfHwgIWRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykKLSAgICAgIC8vIGF0IGxlYXN0IG9uIFN1biwgdGhlIGNvbnRlbnRzIG9mIDxjd2NoYXI+IGlzIG5vdCBpbiBuYW1lc3BhY2Ugc3RkCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgICBlbmRpZgotCi0vLyBzZWUgYWxzbyBjb21tb25fZWRnLmhwcCB3aGljaCBuZWVkcyBhIHNwZWNpYWwgY2hlY2sgZm9yIF9fS0NDCi0jIGlmICFkZWZpbmVkKF9FWENFUFRJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSMgZW5kaWYKLQotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyA0MDAxOgotI2lmIChfX0tDQ19WRVJTSU9OID4gNDAwMSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL21ldHJvd2Vya3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbWV0cm93ZXJrcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MTYxY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbWV0cm93ZXJrcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IFN0ZWZhbiBTbGFwZXRhIDIwMDQuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1ldHJvd2Vya3MgQysrIGNvbXBpbGVyIHNldHVwOgotCi0vLyBsb2NhbGUgc3VwcG9ydCBpcyBkaXNhYmxlZCB3aGVuIGxpbmtpbmcgd2l0aCB0aGUgZHluYW1pYyBydW50aW1lCi0jICAgaWZkZWYgX01TTF9OT19MT0NBTEUKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICAgZW5kaWYgCi0KLSMgICBpZiBfX01XRVJLU19fIDw9IDB4MjMwMSAgLy8gNS4zCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9DT05TVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQKLSMgICBlbmRpZgotCi0jICAgaWYgX19NV0VSS1NfXyA8PSAweDI0MDEgIC8vIDYuMgotLy8jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLSMgICBlbmRpZgotCi0jICAgaWYoX19NV0VSS1NfXyA8PSAweDI0MDcpICAvLyA3LngKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfRlVOQ1RJT05fU1BFQ0lBTElaQVRJT05TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVU5SRUFDSEFCTEVfUkVUVVJOX0RFVEVDVElPTgotIyAgIGVuZGlmCi0KLSMgICBpZihfX01XRVJLU19fIDw9IDB4MzAwMykgIC8vIDgueAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgICBlbmRpZgotCi0vLyB0aGUgInx8ICFkZWZpbmVkKE5ETkJPT1NUX1NUUklDVF9DT05GSUcpIiBwYXJ0IHNob3VsZCBhcHBseSB0byB0aGUgbGFzdAotLy8gdGVzdGVkIHZlcnNpb24gKm9ubHkqOgotIyAgIGlmKF9fTVdFUktTX18gPD0gMHgzMjA3KSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKSAvLyA5LjYKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi0jICAgIGVuZGlmCi0KLSNpZiAhX19vcHRpb24od2NoYXJfdHlwZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSNlbmRpZgotCi0jaWYgIV9fb3B0aW9uKGV4Y2VwdGlvbnMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSNlbmRpZgotCi0jaWYgKF9fSU5URUxfXyAmJiBfV0lOMzIpIHx8IChfX1BPV0VSUENfXyAmJiBtYWNpbnRvc2gpCi0jICAgaWYgX19NV0VSS1NfXyA9PSAweDMwMDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMAotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMwMDEKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMQotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMwMDIKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMgotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMwMDMKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDguMwotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMAotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDEKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMQotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDIKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMgotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDQKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMwotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDUKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuNAotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDYKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuNQotIyAgIGVsaWYgX19NV0VSS1NfXyA9PSAweDMyMDcKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuNgotIyAgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIF9fTVdFUktTX18KLSMgICBlbmRpZgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIF9fTVdFUktTX18KLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBib29zdFxjb25maWdcc3VmZml4LmhwcCBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2lmIF9fTVdFUktTX18gPiAweDMyMDYgJiYgX19vcHRpb24ocnZhbHVlX3JlZnMpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1JWQUxVRV9SRUZTCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICAgICAgICAgICAgICAKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiTWV0cm93ZXJrcyBDb2RlV2FycmlvciBDKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OKQotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IE1ldHJvd2Vya3MgcHJpb3IgdG8gdmVyc2lvbiA1LjM6Ci0jaWYgX19NV0VSS1NfXyA8IDB4MjMwMQotIyAgZXJyb3IgIkNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQgb3IgY29uZmlndXJlZCAtIHBsZWFzZSByZWNvbmZpZ3VyZSIKLSNlbmRpZgotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbjoKLSNpZiAoX19NV0VSS1NfXyA+IDB4MzIwNSkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbXB3LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL21wdy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYWEyNzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbXB3LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1QVyBDKysgY29tcGlsZXJzIHNldHVwOgotCi0jICAgaWYgICAgZGVmaW5lZChfX1NDX18pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIk1QVyBTQ3BwIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX19TQ19fKQotIyAgIGVsaWYgZGVmaW5lZChfX01SQ19fKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJNUFcgTXJDcHAgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX01SQ19fKQotIyAgIGVsc2UKLSMgICAgIGVycm9yICJVc2luZyBNUFcgY29tcGlsZXIgY29uZmlndXJhdGlvbiBieSBtaXN0YWtlLiAgUGxlYXNlIHVwZGF0ZS4iCi0jICAgZW5kaWYKLQotLy8KLS8vIE1QVyA4LjkwOgotLy8KLSNpZiAoTVBXX0NQTFVTIDw9IDB4ODkwKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9ORVNURURfREVSSVZBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERVBFTkRFTlRfVFlQRVNfSU5fVEVNUExBVEVfVkFMVUVfUEFSQU1FVEVSUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0KLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SIC8qIGFjdHVhbGx5IGEgYnVnIHdpdGggY29uc3QgcmVmZXJlbmNlIG92ZXJsb2FkaW5nICovCi0KLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBib29zdFxjb25maWdcc3VmZml4LmhwcCBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0vLwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBNUFcgcHJpb3IgdG8gdmVyc2lvbiA4Ljk6Ci0jaWYgTVBXX0NQTFVTIDwgMHg4OTAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLS8vCi0vLyBsYXN0IGtub3duIGFuZCBjaGVja2VkIHZlcnNpb24gaXMgMHg4OTA6Ci0jaWYgKE1QV19DUExVUyA+IDB4ODkwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL252Y2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbnZjYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNTA3Y2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvbnZjYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEpvdXJkYW5uZWF1LCBKb2VsIEZhbGNvdSAyMDEwCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTlZJRElBIENVREEgQysrIGNvbXBpbGVyIHNldHVwCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09NUElMRVIKLSMgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUiAiTlZJRElBIENVREEgQysrIENvbXBpbGVyIgotI2VuZGlmCi0KLS8vIE5WSURJQSBTcGVjaWZpYyBzdXBwb3J0Ci0vLyBORE5CT09TVF9HUFVfRU5BQkxFRCA6IEZsYWcgYSBmdW5jdGlvbiBvciBhIG1ldGhvZCBhcyBiZWluZyBlbmFibGVkIG9uIHRoZSBob3N0IGFuZCBkZXZpY2UKLSNkZWZpbmUgTkROQk9PU1RfR1BVX0VOQUJMRUQgX19ob3N0X18gX19kZXZpY2VfXwotCi0vLyBCb29zdCBzdXBwb3J0IG1hY3JvIGZvciBOVkNDIAotLy8gTlZDQyBCYXNpY2FsbHkgYmVoYXZlcyBsaWtlIHNvbWUgZmxhdm9yIG9mIE1TVkM2ICsgc29tZSBzcGVjaWZpYyBxdWlya3MKLSNpZmRlZiBfX0dOVUNfXwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmlzdWFsYy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGF0aHNjYWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BhdGhzY2FsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGFlYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGF0aHNjYWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEJyeWNlIExlbGJhY2ggMjAxMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBQYXRoU2NhbGUgRUtPUGF0aCBDKysgQ29tcGlsZXIKLQotI2lmbmRlZiBORE5CT09TVF9DT01QSUxFUgotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJQYXRoU2NhbGUgRUtPUGF0aCBDKysgQ29tcGlsZXIgdmVyc2lvbiAiIF9fUEFUSFNDQUxFX18KLSNlbmRpZgotCi0jaWYgX19QQVRIQ0NfXyA+PSA0Ci0jICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX1lJRUxECi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05SVk8KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19DTE9DS19HRVRUSU1FCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19NU19JTlQ2NF9OVU1FUklDX0xJTUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBMRVRFX1ZBTFVFX0lOSVRJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fTVVMVElERUNMQVJBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRk9SV0FSRF9MSVNUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VTRVJfREVGSU5FRF9MSVRFUkFMUwotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BnaS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9wZ2kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2E5MmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BnaS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgTm9lbCBCZWxjb3VydCAyMDA3LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBQR0kgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gX19QR0lDX18jI19fUEdJQ19NSU5PUl9fCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJQR0kgY29tcGlsZXIgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OKQotCi0vLwotLy8gVGhyZWFkaW5nIHN1cHBvcnQ6Ci0vLyBUdXJuIHRoaXMgb24gdW5jb25kaXRpb25hbGx5IGhlcmUsIGl0IHdpbGwgZ2V0IHR1cm5lZCBvZmYgYWdhaW4gbGF0ZXIKLS8vIGlmIG5vIHRocmVhZGluZyBBUEkgaXMgZGV0ZWN0ZWQuCi0vLwotCi0jaWYgX19QR0lDX18gPj0gMTEKLQotLy8gb3B0aW9ucyByZXF1ZXN0ZWQgYnkgY29uZmlndXJlIC0tZW5hYmxlLXRlc3QKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX1lJRUxECi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLQotLy8gb3B0aW9ucyAtLWVuYWJsZS10ZXN0IHdhbnRzIHVuZGVmaW5lZAotI3VuZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jdW5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OX1NURF9OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotCi0jZWxpZiBfX1BHSUNfXyA+PSAxMAotCi0vLyBvcHRpb25zIHJlcXVlc3RlZCBieSBjb25maWd1cmUgLS1lbmFibGUtdGVzdAotI2RlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9IQVNfTlJWTwotI2RlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLS8vIG9wdGlvbnMgLS1lbmFibGUtdGVzdCB3YW50cyB1bmRlZmluZWQKLSN1bmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotI3VuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTl9TVERfTkFNRVNQQUNFCi0jdW5kZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotCi0jZWxpZiBfX1BHSUNfXyA+PSA3Ci0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETAotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUwotCi0jZWxzZQotCi0jICBlcnJvciAiUGdpIGNvbXBpbGVyIG5vdCBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotCi0jZW5kaWYKLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLS8vICAgU2VlIGJvb3N0XGNvbmZpZ1xzdWZmaXguaHBwIGZvciBORE5CT09TVF9OT19MT05HX0xPTkcKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotI2RlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ERUNWVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLQotLy8KLS8vIHZlcnNpb24gY2hlY2s6Ci0vLyBwcm9iYWJseSBub3RoaW5nIHRvIGRvIGhlcmU/Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3NnaV9taXBzcHJvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3NnaV9taXBzcHJvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWViZTI0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9zZ2lfbWlwc3Byby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFNHSSBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVIgIlNHSSBJcml4IGNvbXBpbGVyIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX0NPTVBJTEVSX1ZFUlNJT04pCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvY29tbW9uX2VkZy5ocHAiCi0KLS8vCi0vLyBUaHJlYWRpbmcgc3VwcG9ydDoKLS8vIFR1cm4gdGhpcyBvbiB1bmNvbmRpdGlvbmFsbHkgaGVyZSwgaXQgd2lsbCBnZXQgdHVybmVkIG9mZiBhZ2FpbiBsYXRlcgotLy8gaWYgbm8gdGhyZWFkaW5nIEFQSSBpcyBkZXRlY3RlZC4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX05PX1RXT19QSEFTRV9OQU1FX0xPT0tVUAotCi0jdW5kZWYgTkROQk9PU1RfTk9fU1dQUklOVEYKLSN1bmRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0KLS8vCi0vLyB2ZXJzaW9uIGNoZWNrOgotLy8gcHJvYmFibHkgbm90aGluZyB0byBkbyBoZXJlPwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3N1bnByb19jYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci9zdW5wcm9fY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjM0NGUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3N1bnByb19jYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMi4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFN1biBDKysgY29tcGlsZXIgc2V0dXA6Ci0KLSMgICAgaWYgX19TVU5QUk9fQ0MgPD0gMHg1MDAKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUwotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotIyAgICBlbmRpZgotCi0jICAgIGlmIChfX1NVTlBST19DQyA8PSAweDUyMCkKLSAgICAgICAvLwotICAgICAgIC8vIFN1bnBybyA1LjIgYW5kIGVhcmxlcjoKLSAgICAgICAvLwotICAgICAgIC8vIGFsdGhvdWdoIHN1bnBybyA1LjIgc3VwcG9ydHMgdGhlIHN5bnRheCBmb3IKLSAgICAgICAvLyBpbmxpbmUgaW5pdGlhbGl6YXRpb24gaXQgb2Z0ZW4gZ2V0cyB0aGUgdmFsdWUKLSAgICAgICAvLyB3cm9uZywgZXNwZWNpYWxseSB3aGVyZSB0aGUgdmFsdWUgaXMgY29tcHV0ZWQKLSAgICAgICAvLyBmcm9tIG90aGVyIGNvbnN0YW50cyAoSiBNYWRkb2NrIDZ0aCBNYXkgMjAwMSkKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLQotICAgICAgIC8vIEFsdGhvdWdoIHN1bnBybyA1LjIgc3VwcG9ydHMgdGhlIHN5bnRheCBmb3IKLSAgICAgICAvLyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLCBpdCBvZnRlbiBzZWVtcyB0bwotICAgICAgIC8vIGJpbmQgdG8gdGhlIHdyb25nIHNwZWNpYWxpemF0aW9uLiAgQmV0dGVyCi0gICAgICAgLy8gdG8gZGlzYWJsZSBpdCB1bnRpbCBzdXBwcG9ydCBiZWNvbWVzIG1vcmUgc3RhYmxlCi0gICAgICAgLy8gKEogTWFkZG9jayA2dGggTWF5IDIwMDEpLgotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgIGVuZGlmCi0KLSMgICAgaWYgKF9fU1VOUFJPX0NDIDw9IDB4NTMwKSAKLSAgICAgICAvLyBSZXF1ZXN0aW5nIGRlYnVnIGluZm8gKC1nKSB3aXRoIEJvb3N0LlB5dGhvbiByZXN1bHRzCi0gICAgICAgLy8gaW4gYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3IgZm9yICJzdGF0aWMgY29uc3QiCi0gICAgICAgLy8gaW5pdGlhbGl6ZWQgaW4tY2xhc3MuCi0gICAgICAgLy8gICAgPj4gQXNzZXJ0aW9uOiAgICguLi9saW5rcy9kYmdfY3N0YWJzLmNjLCBsaW5lIDYxMSkKLSAgICAgICAvLyAgICAgICAgIHdoaWxlIHByb2Nlc3NpbmcgLi4vdGVzdC5jcHAgYXQgbGluZSAwLgotICAgICAgIC8vIChKZW5zIE1hdXJlciBhY2NvcmRpbmcgdG8gR290dGZyaWVkIEdhbnNzYXVnZSAwNCBNYXIgMjAwMikKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLQotICAgICAgIC8vIFN1blBybyA1LjMgaGFzIGJldHRlciBzdXBwb3J0IGZvciBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLAotICAgICAgIC8vIGJ1dCBicmVha3Mgd2hlbiBjb21waWxpbmcgc3RkOjpsZXNzPHNoYXJlZF9wdHI8VD4gPgotICAgICAgIC8vIChKZW5zIE1hdXJlciA0IE5vdiAyMDAxKS4KLQotICAgICAgIC8vIHN0ZDo6bGVzcyBzcGVjaWFsaXphdGlvbiBmaXhlZCBhcyByZXBvcnRlZCBieSBHZW9yZ2UKLSAgICAgICAvLyBIZWludHplbG1hbjsgcGFydGlhbCBzcGVjaWFsaXphdGlvbiByZS1lbmFibGVkCi0gICAgICAgLy8gKFBldGVyIERpbW92IDE3IEphbiAyMDAyKQotCi0vLyMgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0gICAgICAgLy8gaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbnMgd2l0aCA2NCBiaXQgbnVtYmVycyBmYWlsCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgICAgZW5kaWYKLQotIyAgICBpZiAoX19TVU5QUk9fQ0MgPCAweDU3MCkgCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFX1RFTVBMQVRFUwotICAgICAgIC8vIHNlZSBodHRwOi8vbGlzdHMuYm9vc3Qub3JnL01haWxBcmNoaXZlcy9ib29zdC9tc2c0NzE4NC5waHAKLSAgICAgICAvLyBhbmQgaHR0cDovL2xpc3RzLmJvb3N0Lm9yZy9NYWlsQXJjaGl2ZXMvYm9vc3QvbXNnNDcyMjAucGhwCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUwotIyAgICBlbmRpZgotIyAgICBpZiAoX19TVU5QUk9fQ0MgPD0gMHg1ODApIAotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19JU19BQlNUUkFDVAotIyAgICBlbmRpZgotCi0jICAgIGlmIChfX1NVTlBST19DQyA8PSAweDUxMDApCi0gICAgICAgLy8gU3VuIDUuMTAgbWF5IG5vdCBjb3JyZWN0bHkgdmFsdWUtaW5pdGlhbGl6ZSBvYmplY3RzIG9mCi0gICAgICAgLy8gc29tZSB1c2VyIGRlZmluZWQgdHlwZXMsIGFzIHdhcyByZXBvcnRlZCBpbiBBcHJpbCAyMDEwCi0gICAgICAgLy8gKENSIDY5NDcwMTYpLCBhbmQgY29uZmlybWVkIGJ5IFN0ZXZlIENsYW1hZ2UuCi0gICAgICAgLy8gKE5pZWxzIERla2tlciwgTEtFQiwgTWF5IDIwMTApLgotIyAgICAgIGRlZmluZSBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTgotIyAgICBlbmRpZgotCi0vLwotLy8gRHluYW1pYyBzaGFyZWQgb2JqZWN0IChEU08pIGFuZCBkeW5hbWljLWxpbmsgbGlicmFyeSAoRExMKSBzdXBwb3J0Ci0vLwotI2lmIF9fU1VOUFJPX0NDID4gMHg1MDAKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUIF9fZ2xvYmFsCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVCBfX2dsb2JhbAotIyAgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIF9fZ2xvYmFsCi0jZW5kaWYKLQotCi0KLS8vCi0vLyBJc3N1ZXMgdGhhdCBlZmZlY3QgYWxsIGtub3duIHZlcnNpb25zOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfTk9fVFdPX1BIQVNFX05BTUVfTE9PS1VQCi0jZGVmaW5lIE5ETkJPT1NUX05PX0FETF9CQVJSSUVSCi0KLS8vCi0vLyBDKysweCBmZWF0dXJlcwotLy8KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0KLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVGQVVMVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBTkdFX0JBU0VEX0ZPUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLS8vCi0vLyBWZXJzaW9uCi0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJTdW4gY29tcGlsZXIgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX1NVTlBST19DQykKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBzdW5wcm8gcHJpb3IgdG8gdmVyc2lvbiA0OgotI2lmIF9fU1VOUFJPX0NDIDwgMHg0MDAKLSNlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDB4NTkwOgotI2lmIChfX1NVTlBST19DQyA+IDB4NTkwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmFjcHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmFjcHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjY3NjU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3ZhY3BwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgVG9vbiBLbmFwZW4gMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgTGllLVF1YW4gTGVlIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgTWFya3VzIFNjaG9lcGZsaW4gMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMiAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFZpc3VhbCBBZ2UgKElCTSkgQysrIGNvbXBpbGVyIHNldHVwOgotCi0jaWYgX19JQk1DUFBfXyA8PSA1MDEKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9GVU5DVElPTl9TUEVDSUFMSVpBVElPTlMKLSNlbmRpZgotCi0jaWYgKF9fSUJNQ1BQX18gPD0gNTAyKSAKLS8vIEFjdHVhbGx5IHRoZSBjb21waWxlciBzdXBwb3J0cyBpbmNsYXNzIG1lbWJlciBpbml0aWFsaXphdGlvbiBidXQgaXQKLS8vIHJlcXVpcmVzIGEgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzIG1lbWJlciBhbmQgaXQgZG9lc24ndCByZWNvZ25pemUKLS8vIGl0IGFzIGFuIGludGVncmFsIGNvbnN0YW50IGV4cHJlc3Npb24gd2hlbiB1c2VkIGFzIGEgdGVtcGxhdGUgYXJndW1lbnQuCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQKLSNlbmRpZgotCi0jaWYgKF9fSUJNQ1BQX18gPD0gNjAwKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BPSU5URVJfVE9fTUVNQkVSX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNlbmRpZgotCi0jaWYgKF9fSUJNQ1BQX18gPD0gMTExMCkKLS8vIFhMIEMrKyBWMTEuMSBhbmQgZWFybGllciB2ZXJzaW9ucyBtYXkgbm90IGFsd2F5cyB2YWx1ZS1pbml0aWFsaXplICAKLS8vIGEgdGVtcG9yYXJ5IG9iamVjdCBUKCksIHdoZW4gVCBpcyBhIG5vbi1QT0QgYWdncmVnYXRlIGNsYXNzIHR5cGUuIAotLy8gTWljaGFlbCBXb25nIChJQk0gQ2FuYWRhIEx0ZCkgaGFzIGNvbmZpcm1lZCB0aGlzIGlzc3VlIGFuZCBnYXZlIGl0IAotLy8gaGlnaCBwcmlvcml0eS4gLS0gTmllbHMgRGVra2VyIChMS0VCKSwgTWF5IDIwMTAuCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSNlbmRpZgotCi0vLwotLy8gT24gQUlYIHRocmVhZCBzdXBwb3J0IHNlZW1zIHRvIGJlIGluZGljYXRlZCBieSBfVEhSRUFEX1NBRkU6Ci0vLwotI2lmZGVmIF9USFJFQURfU0FGRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUiAiSUJNIFZpc3VhbCBBZ2UgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX0lCTUNQUF9fKQotCi0vLwotLy8gdmVyc2lvbnMgY2hlY2s6Ci0vLyB3ZSBkb24ndCBzdXBwb3J0IFZpc3VhbCBhZ2UgcHJpb3IgdG8gdmVyc2lvbiA1OgotI2lmIF9fSUJNQ1BQX18gPCA1MDAKLSNlcnJvciAiQ29tcGlsZXIgbm90IHN1cHBvcnRlZCBvciBjb25maWd1cmVkIC0gcGxlYXNlIHJlY29uZmlndXJlIgotI2VuZGlmCi0vLwotLy8gbGFzdCBrbm93biBhbmQgY2hlY2tlZCB2ZXJzaW9uIGlzIDEyMTA6Ci0jaWYgKF9fSUJNQ1BQX18gPiAxMjEwKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgZXJyb3IgIlVua25vd24gY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBTb21lIHZlcnNpb25zIG9mIHRoZSBjb21waWxlciBoYXZlIGlzc3VlcyB3aXRoIGRlZmF1bHQgYXJndW1lbnRzIG9uIHBhcnRpYWwgc3BlY2lhbGl6YXRpb25zCi0jaWYgX19JQk1DUFBfXyA8PSAxMDEwCi0jZGVmaW5lIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fSU1QTElDSVRfREVGQVVMVF9BUkdTCi0jZW5kaWYKLQotLy8KLS8vIEMrKzB4IGZlYXR1cmVzCi0vLwotLy8gICBTZWUgYm9vc3RcY29uZmlnXHN1ZmZpeC5ocHAgZm9yIE5ETkJPT1NUX05PX0xPTkdfTE9ORwotLy8KLSNpZiAhIF9fSUJNQ1BQX0FVVE9fVFlQRURFRFVDVElPTgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9VVEZfTElURVJBTF9fCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DSEFSMzJfVAotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9DT05TVEVYUFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIKLSNlbmRpZgotI2lmICEgX19JQk1DUFBfREVDTFRZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfREVDTFRZUEUKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jaWYgISBfX0lCTUNQUF9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTCi0jZW5kaWYKLSNpZiAhIF9fSUJNQ1BQX0VYVEVSTl9URU1QTEFURQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2VuZGlmCi0jaWYgISBfX0lCTUNQUF9WQVJJQURJQ19URU1QTEFURVMKLS8vIG5vdCBlbmFibGVkIHNlcGFyYXRlbHkgYXQgdGhpcyB0aW1lCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9MT0NBTF9DTEFTU19URU1QTEFURV9QQVJBTUVURVJTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUkFOR0VfQkFTRURfRk9SCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VU0VSX0RFRklORURfTElURVJBTFMKLSNpZiAhIF9fSUJNQ1BQX1JWQUxVRV9SRUZFUkVOQ0VTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSNlbmRpZgotI2lmICEgX19JQk1DUFBfU0NPUEVEX0VOVU0KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2lmICEgX19JQk1DUFBfU1RBVElDX0FTU0VSVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9URU1QTEFURV9BTElBU0VTCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMKLSNpZiAhIF9fSUJNQ1BQX1ZBUklBRElDX1RFTVBMQVRFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUwotI2VuZGlmCi0jaWYgISBfX0M5OV9NQUNST19XSVRIX1ZBX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvY29tcGlsZXIvdmlzdWFsYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJhOWQxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgRGFyaW4gQWRsZXIgMjAwMSAtIDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS4gCi0vLyAgKEMpIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDIuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMiAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLS8vCi0vLyAgTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXIgc2V0dXA6Ci0vLwotLy8gIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoZSBjaGVja3MgaW4gdGhpcyBmaWxlLCBhcyBjb250cmFyeQotLy8gIHRvIHBvcHVsYXIgYmVsaWVmIHRoZXJlIGFyZSB2ZXJzaW9ucyB3aXRoIF9NU0NfVkVSIHdpdGggdGhlIGZpbmFsCi0vLyAgZGlnaXQgbm9uLXplcm8gKG1haW5seSB0aGUgTUlQUyBjcm9zcyBjb21waWxlcikuCi0vLwotLy8gIFNvIHdlIGVpdGhlciB0ZXN0IF9NU0NfVkVSID49IFhYWFggb3IgZWxzZSBfTVNDX1ZFUiA8IFhYWFguCi0vLyAgTm8gb3RoZXIgY29tcGFyaXNvbnMgKD09LCA+LCBvciA8PSkgYXJlIHNhZmUuCi0vLwotCi0jZGVmaW5lIE5ETkJPT1NUX01TVkMgX01TQ19WRVIKLQotLy8KLS8vIEhlbHBlciBtYWNybyBORE5CT09TVF9NU1ZDX0ZVTExfVkVSIGZvciB1c2UgaW4gQm9vc3QgY29kZToKLS8vCi0jaWYgX01TQ19GVUxMX1ZFUiA+IDEwMDAwMDAwMAotIyAgZGVmaW5lIE5ETkJPT1NUX01TVkNfRlVMTF9WRVIgX01TQ19GVUxMX1ZFUgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9NU1ZDX0ZVTExfVkVSIChfTVNDX0ZVTExfVkVSICogMTApCi0jZW5kaWYKLQotLy8gQXR0ZW1wdCB0byBzdXBwcmVzcyBWQzYgd2FybmluZ3MgYWJvdXQgdGhlIGxlbmd0aCBvZiBkZWNvcmF0ZWQgbmFtZXMgKG9ic29sZXRlKToKLSNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ1MDMgKSAvLyB3YXJuaW5nOiBkZWNvcmF0ZWQgbmFtZSBsZW5ndGggZXhjZWVkZWQKLQotLy8KLS8vIHZlcnNpb25zIGNoZWNrOgotLy8gd2UgZG9uJ3Qgc3VwcG9ydCBWaXN1YWwgQysrIHByaW9yIHRvIHZlcnNpb24gNjoKLSNpZiBfTVNDX1ZFUiA8IDEyMDAKLSMgIGVycm9yICJDb21waWxlciBub3Qgc3VwcG9ydGVkIG9yIGNvbmZpZ3VyZWQgLSBwbGVhc2UgcmVjb25maWd1cmUiCi0jZW5kaWYKLQotI2lmIF9NU0NfVkVSIDwgMTMwMCAgLy8gMTIwMCA9PSBWQysrIDYuMCwgMTIwMC0xMjAyID09IGVWQysrNAotIyAgcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0Nzg2ICkgLy8gaWRlbnQgdHJ1bmMgdG8gJzI1NScgY2hhcnMgaW4gZGVidWcgaW5mbwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFUEVOREVOVF9UWVBFU19JTl9URU1QTEFURV9WQUxVRV9QQVJBTUVURVJTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhDRVBUSU9OX1NURF9OQU1FU1BBQ0UKLQotIyAgaWYgX01TQ19WRVIgPT0gMTIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPCi0jICBlbmRpZgotCi0jZW5kaWYKLQotLy8vIFZpc3VhbCBTdHVkaW8gaGFzIG5vIGZlbnYuaAotI2RlZmluZSBORE5CT09TVF9OT19GRU5WX0gKLQotI2lmIChfTVNDX1ZFUiA8IDEzMTApICAvLyAxMzBYID09IFZDKysgNy4wCi0KLSMgIGlmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMpICAgICAgLy8gVkM3IGJ1ZyB3aXRoIC9aYQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMKLSMgIGVuZGlmCi0KLSMgIGRlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1BSSVZBVEVfSU5fQUdHUkVHQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERURVQ0VEX1RZUEVOQU1FCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVVNJTkdfREVDTEFSQVRJT05fT1ZFUkxPQURTX0ZST01fVFlQRU5BTUVfQkFTRQotCi0vLyAgICBWQysrIDYvNyBoYXMgbWVtYmVyIHRlbXBsYXRlcyBidXQgdGhleSBoYXZlIG51bWVyb3VzIHByb2JsZW1zIGluY2x1ZGluZwotLy8gICAgY2FzZXMgb2Ygc2lsZW50IGZhaWx1cmUsIHNvIGZvciBzYWZldHkgd2UgZGVmaW5lOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMKLS8vICAgIEZvciBWQysrIGV4cGVydHMgd2lzaGluZyB0byBhdHRlbXB0IHdvcmthcm91bmRzLCB3ZSBkZWZpbmU6Ci0jICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURV9URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19TRklOQUUKLSMgIGRlZmluZSBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9URU1QTEFURV9QQVJBTUVURVJTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9UWVBFX1NQRUNJQUxJWkFUSU9OUwotLy8gVE9ETzogd2hhdCB2ZXJzaW9uIGlzIG1lYW50IGhlcmU/IEhhdmUgdGhlcmUgcmVhbGx5IGJlZW4gYW55IGZpeGVzIGluIGNsIDEyLjAxIChhcyBlLmcuIHNoaXBwZWQgd2l0aCBlVkM0KT8KLSMgIGlmIChfTVNDX1ZFUiA+PSAxMzAwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01FTUJFUl9GVU5DVElPTl9TUEVDSUFMSVpBVElPTlMKLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0jaWYgX01TQ19WRVIgPCAxNDAwIAotLy8gYWx0aG91Z2ggYSBjb25mb3JtaW5nIHNpZ25hdHVyZSBmb3Igc3dwcmludCBleGlzdHMgaW4gVkM3LjEKLS8vIGl0IGFwcGVhcnMgbm90IHRvIGFjdHVhbGx5IHdvcms6Ci0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLS8vIE91ciBleHRlcm4gdGVtcGxhdGUgdGVzdHMgYWxzbyBmYWlsIGZvciB0aGlzIGNvbXBpbGVyOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotLy8gVmFyaWFkaWMgbWFjcm9zIGRvIG5vdCBleGlzdCBmb3IgVkM3LjEgYW5kIGxvd2VyCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoVU5ERVJfQ0UpCi0vLyBXaW5kb3dzIENFIGRvZXMgbm90IGhhdmUgYSBjb25mb3JtaW5nIHNpZ25hdHVyZSBmb3Igc3dwcmludGYKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0KLSNpZiBfTVNDX1ZFUiA8IDE1MDAgIC8vIDE0MFggPT0gVkMrKyA4LjAKLSMgIGRlZmluZSBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotI2VuZGlmCi0KLSNpZiBfTVNDX1ZFUiA8IDE2MDAgIC8vIDE1MFggPT0gVkMrKyA5LjAKLSAgIC8vIEEgYnVnIGluIFZDOToKLSMgIGRlZmluZSBORE5CT09TVF9OT19BRExfQkFSUklFUgotI2VuZGlmCi0KLQotLy8gTVNWQyAoaW5jbHVkaW5nIHRoZSBsYXRlc3QgY2hlY2tlZCB2ZXJzaW9uKSBoYXMgbm90IHlldCBjb21wbGV0ZWx5IAotLy8gaW1wbGVtZW50ZWQgdmFsdWUtaW5pdGlhbGl6YXRpb24sIGFzIGlzIHJlcG9ydGVkOgotLy8gIlZDKysgZG9lcyBub3QgdmFsdWUtaW5pdGlhbGl6ZSBtZW1iZXJzIG9mIGRlcml2ZWQgY2xhc3NlcyB3aXRob3V0IAotLy8gdXNlci1kZWNsYXJlZCBjb25zdHJ1Y3RvciIsIHJlcG9ydGVkIGluIDIwMDkgYnkgU3lsdmVzdGVyIEhlc3A6Ci0vLyBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9WaXN1YWxTdHVkaW8vZmVlZGJhY2svZGV0YWlscy80ODQyOTUKLS8vICJQcmVzZW5jZSBvZiBjb3B5IGNvbnN0cnVjdG9yIGJyZWFrcyBtZW1iZXIgY2xhc3MgaW5pdGlhbGl6YXRpb24iLAotLy8gcmVwb3J0ZWQgaW4gMjAwOSBieSBBbGV4IFZha3VsZW5rbzoKLS8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL1Zpc3VhbFN0dWRpby9mZWVkYmFjay9kZXRhaWxzLzQ5OTYwNgotLy8gIlZhbHVlLWluaXRpYWxpemF0aW9uIGluIG5ldy1leHByZXNzaW9uIiwgcmVwb3J0ZWQgaW4gMjAwNSBieQotLy8gUGF2ZWwgS3V6bmV0c292IChNZXRhQ29tbXVuaWNhdGlvbnMgRW5naW5lZXJpbmcpOgotLy8gaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vVmlzdWFsU3R1ZGlvL2ZlZWRiYWNrL2RldGFpbHMvMTAwNzQ0Ci0vLyBTZWUgYWxzbzogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L3ZhbHVlX2luaXQuaHRtI2NvbXBpbGVyX2lzc3VlcwotLy8gKE5pZWxzIERla2tlciwgTEtFQiwgTWF5IDIwMTApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLQotI2lmbmRlZiBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX1dJTjMyX1dDRSkgfHwgZGVmaW5lZChVTkRFUl9DRSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0KLS8vIHdlIGhhdmUgVGhyZWFkRXggb3IgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUgdW5sZXNzIHdlJ3JlIHJ1bm5pbmcgV2luZG93c0NFCi0jaWYgIWRlZmluZWQoX1dJTjMyX1dDRSkgJiYgIWRlZmluZWQoVU5ERVJfQ0UpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBREVYCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFNZU1RFTVRJTUVBU0ZJTEVUSU1FCi0jZW5kaWYKLQotLy8gICAKLS8vIGNoZWNrIGZvciBleGNlcHRpb24gaGFuZGxpbmcgc3VwcG9ydDogICAKLSNpZiAhZGVmaW5lZChfQ1BQVU5XSU5EKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMgICAKLSNlbmRpZiAKLQotLy8KLS8vIF9faW50NjQgc3VwcG9ydDoKLS8vCi0jaWYgKF9NU0NfVkVSID49IDEyMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotI2VuZGlmCi0jaWYgKF9NU0NfVkVSID49IDEzMTApICYmIChkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgfHwgKF9NU0NfVkVSID49IDE0MDApKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9OT19MT05HX0xPTkcKLSNlbmRpZgotI2lmIChfTVNDX1ZFUiA+PSAxNDAwKSAmJiAhZGVmaW5lZChfREVCVUcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OUlZPCi0jZW5kaWYKLS8vCi0vLyBkaXNhYmxlIFdpbjMyIEFQSSdzIGlmIGNvbXBpbGVyIGV4dGVudGlvbnMgYXJlCi0vLyB0dXJuZWQgb2ZmOgotLy8KLSNpZiAhZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9XSU4zMgotI2VuZGlmCi0jaWYgIWRlZmluZWQoX0NQUFJUVEkpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JUVEkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fUlRUSQotI2VuZGlmCi0KLS8vCi0vLyBUUjEgZmVhdHVyZXM6Ci0vLwotI2lmIF9NU0NfVkVSID49IDE3MDAKLS8vICMgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfSEFTSAkJCS8vIGRvbid0IGtub3cgaWYgdGhpcyBpcyB0cnVlIHlldC4KLS8vICMgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVFlQRV9UUkFJVFMJLy8gZG9uJ3Qga25vdyBpZiB0aGlzIGlzIHRydWUgeWV0LgotIyBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9VTk9SREVSRURfTUFQCi0jIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX1VOT1JERVJFRF9TRVQKLSNlbmRpZgotCi0vLwotLy8gQysrMHggZmVhdHVyZXMKLS8vCi0vLyAgIFNlZSBhYm92ZSBmb3IgTkROQk9PU1RfTk9fTE9OR19MT05HCi0KLS8vIEMrKyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgVkMrKyAxMCAoYWthIDIwMTApCi0vLwotI2lmIF9NU0NfVkVSIDwgMTYwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FVVE9fREVDTEFSQVRJT05TCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0xBTUJEQVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUKLSNlbmRpZiAvLyBfTVNDX1ZFUiA8IDE2MDAKLQotI2lmIF9NU0NfVkVSID49IDE2MDAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNlbmRpZgotCi0vLyBDKysgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IFZDKysgMTEgKGFrYSAyMDEyKQotLy8KLSNpZiBfTVNDX1ZFUiA8IDE3MDAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQU5HRV9CQVNFRF9GT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSNlbmRpZiAvLyBfTVNDX1ZFUiA8IDE3MDAKLQotLy8gQysrMTEgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IFZDKysgMTEgKGFrYSAyMDEyKSBOb3ZlbWJlciAyMDEyIENUUAotLy8gQmVjYXVzZSB0aGUgQ1RQIGlzIHVuc3VwcG9ydGVkLCB1bnJlbGVhc2UsIGFuZCBvbmx5IGFscGhhIHF1YWxpdHksCi0vLyBpdCBpcyBvbmx5IHN1cHBvcnRlZCBpZiBORE5CT09TVF9NU1ZDX0VOQUJMRV8yMDEyX05PVl9DVFAgaXMgZGVmaW5lZC4KLS8vCi0jaWYgX01TQ19GVUxMX1ZFUiA8IDE3MDA1MTAyNSB8fCAhZGVmaW5lZChORE5CT09TVF9NU1ZDX0VOQUJMRV8yMDEyX05PVl9DVFApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9SQVdfTElURVJBTFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2VuZGlmCi0KLS8vIEMrKzExIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgYnkgYW55IHZlcnNpb25zCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NgotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9ERUZBVUxURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUwotI2RlZmluZSBORE5CT09TVF9OT19TRklOQUVfRVhQUgotI2RlZmluZSBORE5CT09TVF9OT19UV09fUEhBU0VfTkFNRV9MT09LVVAKLSNkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfVVNFUl9ERUZJTkVEX0xJVEVSQUxTCi0KLS8vCi0vLyBwcmVmaXggYW5kIHN1ZmZpeCBoZWFkZXJzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfQUJJX1BSRUZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX0FCSV9QUkVGSVggIm5kbmJvb3N0L2NvbmZpZy9hYmkvbXN2Y19wcmVmaXguaHBwIgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSMgIGRlZmluZSBORE5CT09TVF9BQklfU1VGRklYICJuZG5ib29zdC9jb25maWcvYWJpL21zdmNfc3VmZml4LmhwcCIKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTVBJTEVSCi0vLyBUT0RPOgotLy8gdGhlc2UgdGhpbmdzIGFyZSBtb3N0bHkgYm9ndXMuIDEyMDAgbWVhbnMgdmVyc2lvbiAxMi4wIG9mIHRoZSBjb21waWxlci4gVGhlIAotLy8gYXJ0aWZpY2lhbCB2ZXJzaW9ucyBhc3NpZ25lZCB0byB0aGVtIG9ubHkgcmVmZXIgdG8gdGhlIHZlcnNpb25zIG9mIHNvbWUgSURFCi0vLyB0aGVzZSBjb21waWxlcnMgaGF2ZSBiZWVuIHNoaXBwZWQgd2l0aCwgYW5kIGV2ZW4gdGhhdCBpcyBub3QgYWxsIG9mIGl0LiBTb21lCi0vLyB3ZXJlIHNoaXBwZWQgd2l0aCBmcmVlbHkgZG93bmxvYWRhYmxlIFNES3MsIG90aGVycyBhcyBjcm9zc2NvbXBpbGVycyBpbiBlVkMuCi0vLyBJT1csIHlvdSBjYW4ndCB1c2UgdGhlc2UgJ3ZlcnNpb25zJyBpbiBhbnkgc2Vuc2libGUgd2F5LiBTb3JyeS4KLSMgaWYgZGVmaW5lZChVTkRFUl9DRSkKLSMgICBpZiBfTVNDX1ZFUiA8IDEyMDAKLSAgICAgIC8vIE5vdGU6IHRoZXNlIGFyZSBzbyBmYXIgb2ZmLCB0aGV5IGFyZSBub3QgcmVhbGx5IHN1cHBvcnRlZAotIyAgIGVsaWYgX01TQ19WRVIgPCAxMzAwIC8vIGVWQysrIDQgY29tZXMgd2l0aCAxMjAwLTEyMDIKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIGV2YzQuMAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNDAwCi0gICAgICAvLyBOb3RlOiBJJ20gbm90IGF3YXJlIG9mIGFueSBDRSBjb21waWxlciB3aXRoIHZlcnNpb24gMTN4eAotIyAgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgICAgICBlcnJvciAiVW5rbm93biBFVkMrKyBjb21waWxlciB2ZXJzaW9uIC0gcGxlYXNlIHJ1biB0aGUgY29uZmlndXJlIHRlc3RzIGFuZCByZXBvcnQgdGhlIHJlc3VsdHMiCi0jICAgICAgZWxzZQotIyAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJVbmtub3duIEVWQysrIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIpCi0jICAgICAgZW5kaWYKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTUwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gZXZjOAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNjAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiBldmM5Ci0jICAgZWxpZiBfTVNDX1ZFUiA8IDE3MDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIGV2YzEwCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE4MDAgCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiBldmMxMSAKLSMgICBlbHNlCi0jICAgICAgaWYgZGVmaW5lZChORE5CT09TVF9BU1NFUlRfQ09ORklHKQotIyAgICAgICAgIGVycm9yICJVbmtub3duIEVWQysrIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgICAgICBlbHNlCi0jICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIlVua25vd24gRVZDKysgY29tcGlsZXIgdmVyc2lvbiAtIHBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSB0ZXN0cyBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIikKLSMgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jIGVsc2UKLSMgICBpZiBfTVNDX1ZFUiA8IDEyMDAKLSAgICAgIC8vIE5vdGU6IHRoZXNlIGFyZSBzbyBmYXIgb2ZmLCB0aGV5IGFyZSBub3QgcmVhbGx5IHN1cHBvcnRlZAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gNS4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDEzMDAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gNi4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDEzMTAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDcuMAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNDAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiA3LjEKLSMgICBlbGlmIF9NU0NfVkVSIDwgMTUwMAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04gOC4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE2MDAKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIDkuMAotIyAgIGVsaWYgX01TQ19WRVIgPCAxNzAwCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiAxMC4wCi0jICAgZWxpZiBfTVNDX1ZFUiA8IDE4MDAgCi0jICAgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfVkVSU0lPTiAxMS4wIAotIyAgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9WRVJTSU9OIF9NU0NfVkVSCi0jICAgZW5kaWYKLSMgZW5kaWYKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJNaWNyb3NvZnQgVmlzdWFsIEMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0NPTVBJTEVSX1ZFUlNJT04pCi0jZW5kaWYKLQotLy8KLS8vIGxhc3Qga25vd24gYW5kIGNoZWNrZWQgdmVyc2lvbiBpcyAxNzAwIChWQzExLCBha2EgMjAxMSk6Ci0jaWYgKF9NU0NfVkVSID4gMTcwMCkKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSMgICAgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIKLSMgIGVsc2UKLSMgICAgIHByYWdtYSBtZXNzYWdlKCJVbmtub3duIGNvbXBpbGVyIHZlcnNpb24gLSBwbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgdGVzdHMgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyIpCi0jICBlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYzYmRiNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBUaGUgYWltIG9mIHRoaXMgaGVhZGVyIGlzIGp1c3QgdG8gaW5jbHVkZSA8Y21hdGg+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvY21hdGggaXMgaW4gdGhlCi0vLyBpbmNsdWRlIHNlYXJjaCBwYXRoLiAgV2UgaGF2ZSB0byBkbyB0aGlzIHRvIGF2b2lkIGNpcmN1bGFyCi0vLyBkZXBlbmRlbmNpZXM6Ci0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19DTUFUSAotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19DTUFUSAotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fQ01BVEhfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jICBpbmNsdWRlIDxjbWF0aD4KLQotIyAgaWZkZWYgTkROQk9PU1RfQ09ORklHX05PX0NNQVRIX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX0NNQVRIX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY29tcGxleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9ub190cjEvY29tcGxleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMjI2NjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2NvbXBsZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBUaGUgYWltIG9mIHRoaXMgaGVhZGVyIGlzIGp1c3QgdG8gaW5jbHVkZSA8Y29tcGxleD4gYnV0IHRvIGRvCi0vLyBzbyBpbiBhIHdheSB0aGF0IGRvZXMgbm90IHJlc3VsdCBpbiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mCi0vLyB0aGUgQm9vc3QgVFIxIGNvbXBvbmVudHMgaWYgbmRuYm9vc3QvdHIxL3RyMS9jb21wbGV4IGlzIGluIHRoZQotLy8gaW5jbHVkZSBzZWFyY2ggcGF0aC4gIFdlIGhhdmUgdG8gZG8gdGhpcyB0byBhdm9pZCBjaXJjdWxhcgotLy8gZGVwZW5kZW5jaWVzOgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfQ09NUExFWAotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19DT01QTEVYCi0KLSMgIGlmbmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19OT19DT01QTEVYX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8Y29tcGxleD4KLQotIyAgaWZkZWYgTkROQk9PU1RfQ09ORklHX05PX0NPTVBMRVhfUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9UUjFfTk9fUkVDVVJTSU9OCi0jICAgICB1bmRlZiBORE5CT09TVF9DT05GSUdfTk9fQ09NUExFWF9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2Z1bmN0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL2Z1bmN0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTdmYjVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9mdW5jdGlvbmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gVGhlIGFpbSBvZiB0aGlzIGhlYWRlciBpcyBqdXN0IHRvIGluY2x1ZGUgPGZ1bmN0aW9uYWw+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvZnVuY3Rpb25hbCBpcyBpbiB0aGUKLS8vIGluY2x1ZGUgc2VhcmNoIHBhdGguICBXZSBoYXZlIHRvIGRvIHRoaXMgdG8gYXZvaWQgY2lyY3VsYXIKLS8vIGRlcGVuZGVuY2llczoKLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0ZVTkNUSU9OQUwKLSMgIGRlZmluZSBORE5CT09TVF9DT05GSUdfRlVOQ1RJT05BTAotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fRlVOQ1RJT05BTF9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSMgIGluY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLSMgIGlmZGVmIE5ETkJPT1NUX0NPTkZJR19OT19GVU5DVElPTkFMX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX0ZVTkNUSU9OQUxfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS9tZW1vcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MzIyNmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFRoZSBhaW0gb2YgdGhpcyBoZWFkZXIgaXMganVzdCB0byBpbmNsdWRlIDxtZW1vcnk+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvbWVtb3J5IGlzIGluIHRoZQotLy8gaW5jbHVkZSBzZWFyY2ggcGF0aC4gIFdlIGhhdmUgdG8gZG8gdGhpcyB0byBhdm9pZCBjaXJjdWxhcgotLy8gZGVwZW5kZW5jaWVzOgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfTUVNT1JZCi0jICBkZWZpbmUgTkROQk9PU1RfQ09ORklHX01FTU9SWQotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fTUVNT1JZX1JFQ1VSU0lPTgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8bWVtb3J5PgotCi0jICBpZmRlZiBORE5CT09TVF9DT05GSUdfTk9fTUVNT1JZX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX01FTU9SWV9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTViNjVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gVGhlIGFpbSBvZiB0aGlzIGhlYWRlciBpcyBqdXN0IHRvIGluY2x1ZGUgPHV0aWxpdHk+IGJ1dCB0byBkbwotLy8gc28gaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCByZXN1bHQgaW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZgotLy8gdGhlIEJvb3N0IFRSMSBjb21wb25lbnRzIGlmIG5kbmJvb3N0L3RyMS90cjEvdXRpbGl0eSBpcyBpbiB0aGUKLS8vIGluY2x1ZGUgc2VhcmNoIHBhdGguICBXZSBoYXZlIHRvIGRvIHRoaXMgdG8gYXZvaWQgY2lyY3VsYXIKLS8vIGRlcGVuZGVuY2llczoKLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1VUSUxJVFkKLSMgIGRlZmluZSBORE5CT09TVF9DT05GSUdfVVRJTElUWQotCi0jICBpZm5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RSMV9OT19SRUNVUlNJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9DT05GSUdfTk9fVVRJTElUWV9SRUNVUlNJT04KLSMgIGVuZGlmCi0KLSMgIGluY2x1ZGUgPHV0aWxpdHk+Ci0KLSMgIGlmZGVmIE5ETkJPT1NUX0NPTkZJR19OT19VVElMSVRZX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfVFIxX05PX1JFQ1VSU0lPTgotIyAgICAgdW5kZWYgTkROQk9PU1RfQ09ORklHX05PX1VUSUxJVFlfUkVDVVJTSU9OCi0jICBlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9haXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzhiZDkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIElCTS9BaXggc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIklCTSBBaXgiCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0NMT0NLX0dFVFRJTUUKLQotLy8gVGhpcyBuZWVkcyBzdXBwb3J0IGluICJuZG5ib29zdC9jc3RkaW50LmhwcCIgZXhhY3RseSBsaWtlIEZyZWVCU0QuCi0vLyBUaGlzIHBsYXRmb3JtIGhhcyBoZWFkZXIgbmFtZWQgPGludHR5cGVzLmg+IHdoaWNoIGluY2x1ZGVzIGFsbAotLy8gdGhlIHRoaW5ncyBuZWVkZWQuCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotCi0vLyBUaHJlYWRpbmcgQVBJJ3M6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9ERUxBWV9OUAotI2RlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLS8vI2RlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9ZSUVMRAotCi0vLyBib2lsZXJwbGF0ZSBjb2RlOgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FtaWdhb3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYW1pZ2Fvcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZDJkZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYW1pZ2Fvcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJBbWlnYU9TIgotCi0jZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9OT19DV0NIQVIKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSNkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYmVvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9iZW9zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RhYjBiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9iZW9zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBCZU9TIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJCZU9TIgotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotI2RlZmluZSBORE5CT09TVF9OT19DV0NUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19CRVRIUkVBRFMKLQotI2lmbmRlZiBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotI2VuZGlmCi0KLS8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLSAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ic2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYnNkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY1NDUxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ic2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgZ2VuZXJpYyBCU0QgY29uZmlnIG9wdGlvbnM6Ci0KLSNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgIWRlZmluZWQoX19OZXRCU0RfXykgJiYgIWRlZmluZWQoX19PcGVuQlNEX18pICYmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZXJyb3IgIlRoaXMgcGxhdGZvcm0gaXMgbm90IEJTRCIKLSNlbmRpZgotCi0jaWZkZWYgX19GcmVlQlNEX18KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIkZyZWVCU0QgIiBORE5CT09TVF9TVFJJTkdJWkUoX19GcmVlQlNEX18pCi0jZWxpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJOZXRCU0QgIiBORE5CT09TVF9TVFJJTkdJWkUoX19OZXRCU0RfXykKLSNlbGlmIGRlZmluZWQoX19PcGVuQlNEX18pCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJPcGVuQlNEICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fT3BlbkJTRF9fKQotI2VsaWYgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiRHJhZ29uRmx5ICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fRHJhZ29uRmx5X18pCi0jZW5kaWYKLQotLy8KLS8vIGlzIHRoaXMgdGhlIGNvcnJlY3QgdmVyc2lvbiBjaGVjaz8KLS8vIEZyZWVCU0QgaGFzIDxubF90eXBlcy5oPiBidXQgZG9lcyBub3QKLS8vIGFkdmVydGlzZSB0aGUgZmFjdCBpbiA8dW5pc3RkLmg+OgotLy8KLSNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fID49IDMpKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKLSNlbmRpZgotCi0vLwotLy8gRnJlZUJTRCAzLnggaGFzIHB0aHJlYWRzIHN1cHBvcnQsIGJ1dCBkZWZpbmVzIF9QT1NJWF9USFJFQURTIGluIDxwdGhyZWFkLmg+Ci0vLyBhbmQgbm90IGluIDx1bmlzdGQuaD4KLS8vCi0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA8PSAzKSlcCi0gICB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2VuZGlmCi0KLS8vCi0vLyBObyB3aWRlIGNoYXJhY3RlciBzdXBwb3J0IGluIHRoZSBCU0QgaGVhZGVyIGZpbGVzOgotLy8KLSNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0jZGVmaW5lIF9fTmV0QlNEX0dDQ19fIChfX0dOVUNfXyAgICAgICAgICogMTAwMDAwMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICsgX19HTlVDX01JTk9SX18gKiAgICAxMDAwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fKQotLy8gWFhYIC0gdGhlIGZvbGxvd2luZyBpcyByZXF1aXJlZCB1bnRpbCBjKytjb25maWcuaAotLy8gICAgICAgZGVmaW5lcyBfR0xJQkNYWF9IQVZFX1NXUFJJTlRGIGFuZCBmcmllbmRzCi0vLyAgICAgICBvciB0aGUgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscyBhcmUgcmVtb3ZlZAotLy8gICAgICAgZnJvbSB0aGUgY3djaGFyIGhlYWRlci4KLSNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TV1BSSU5URiAxCi0jZW5kaWYKLQotI2lmICEoKGRlZmluZWQoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAotICAgICAgfHwgKGRlZmluZWQoX19OZXRCU0RfR0NDX18pICYmIChfX05ldEJTRF9HQ0NfXyA+PSAyMDk1MDAzKSkgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DV0NIQVIKLSNlbmRpZgotLy8KLS8vIFRoZSBCU0QgPGN0eXBlLmg+IGhhcyBtYWNyb3Mgb25seSwgbm8gZnVuY3Rpb25zOgotLy8KLSNpZiAhZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NUWVBFX0ZVTkNUSU9OUwotI2VuZGlmCi0KLS8vCi0vLyB0aHJlYWQgQVBJJ3Mgbm90IGF1dG8gZGV0ZWN0ZWQ6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotI2RlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2NyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vY3JheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMGNkYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vY3JheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAxMS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBTR0kgSXJpeCBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiQ3JheSIKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2N5Z3dpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jeWd3aW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDAyMmZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2N5Z3dpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGN5Z3dpbiBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiQ3lnd2luIgotI2RlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotCi0vLwotLy8gVGhyZWFkaW5nIEFQSToKLS8vIFNlZSBpZiB3ZSBoYXZlIFBPU0lYIHRocmVhZHMsIGlmIHdlIGRvIHVzZSB0aGVtLCBvdGhlcndpc2UKLS8vIHJldmVydCB0byBuYXRpdmUgV2luIHRocmVhZHMuCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lmIGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIChfUE9TSVhfVEhSRUFEUyswID49IDApICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSNlbHNlCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfV0lOVEhSRUFEUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfV0lOVEhSRUFEUwotIyAgZW5kaWYKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRlRJTUUKLSNlbmRpZgotCi0vLwotLy8gZmluZCBvdXQgaWYgd2UgaGF2ZSBhIHN0ZGludC5oLCB0aGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXM6Ci0vLwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIF9TVERJTlRfSAotI2RlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNlbmRpZgotCi0vLy8gQ3lnd2luIGhhcyBubyBmZW52LmgKLSNkZWZpbmUgTkROQk9PU1RfTk9fRkVOVl9ICi0KLS8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8KLS8vIEN5Z3dpbiBsaWVzIGFib3V0IFhTSSBjb25mb3JtYW5jZSwgdGhlcmUgaXMgbm8gbmxfdHlwZXMuaDoKLS8vCi0jaWZkZWYgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jZW5kaWYKLSAKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vaHB1eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ocHV4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0MGEyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ocHV4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IFRvb24gS25hcGVuIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQm9yaXMgR3ViZW5rbyAyMDA2IC0gMjAwNy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBocHV4IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJIUC1VWCIKLQotLy8gSW4gcHJpbmNpcGxlLCBIUC1VWCBoYXMgYSBuaWNlIDxzdGRpbnQuaD4gdW5kZXIgdGhlIG5hbWUgPGludHR5cGVzLmg+Ci0vLyBIb3dldmVyLCBpdCBoYXMgdGhlIGZvbGxvd2luZyBwcm9ibGVtOgotLy8gVXNlIG9mIFVJTlQzMl9DKDApIHJlc3VsdHMgaW4gIjB1IGwiIGZvciB0aGUgcHJlcHJvY2Vzc2VkIHNvdXJjZQotLy8gKHZlcmlmeWFibGUgd2l0aCBnY2MgMi45NS4zKQotI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykpIHx8IGRlZmluZWQoX19IUF9hQ0MpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jZW5kaWYKLQotI2lmICEoZGVmaW5lZChfX0hQX2FDQykgfHwgIWRlZmluZWQoX0lOQ0xVREVfX1NURENfQTFfU09VUkNFKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0hQX2FDQykgJiYgIWRlZmluZWQoX0lOQ0xVREVfX1NURENfQTFfU09VUkNFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgIGlmIChfX0dOVUNfXyA8IDMpIHx8ICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fIDwgMykpCi0gICAgICAvLyBHTlUgQyBvbiBIUC1VWCBkb2VzIG5vdCBzdXBwb3J0IHRocmVhZHMgKGNoZWNrZWQgdXAgdG8gZ2NjIDMuMykKLSMgICAgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSMgIGVsaWYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9USFJFQURTKQotICAgICAgLy8gdGhyZWFkcyBzdXBwb3J0ZWQgZnJvbSBnY2MtMy4zIG9ud2FyZHM6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fSFBfYUNDKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZW5kaWYKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8gdGhlIGZvbGxvd2luZyBhcmUgYWx3YXlzIGF2YWlsYWJsZToKLSNpZm5kZWYgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19OTF9UWVBFU19ICi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfRElSRU5UX0gKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0NMT0NLX0dFVFRJTUUKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfU0lHQUNUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19OUlZPIAotIyAgaWZuZGVmIF9fcGFyaXNjCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTlJWTwotIyAgZW5kaWYKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9IQVNfTE9HMVAgCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSEFTX0VYUE0xCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vaXJpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9pcml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUyZDgyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9pcml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFNHSSBJcml4IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJTR0kgSXJpeCIKLQotI2RlZmluZSBORE5CT09TVF9OT19TV1BSSU5URiAKLS8vCi0vLyB0aGVzZSBhcmUgbm90IGF1dG8gZGV0ZWN0ZWQgYnkgUE9TSVggZmVhdHVyZSB0ZXN0czoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLQotI2lmZGVmIF9fR05VQ19fCi0gICAvLyBHTlUgQyBvbiBJUklYIGRvZXMgbm90IHN1cHBvcnQgdGhyZWFkcyAoY2hlY2tlZCB1cCB0byBnY2MgMy4zKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUwotI2VuZGlmCi0KLS8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9saW51eC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNzM2MzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vbGludXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgbGludXggc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gImxpbnV4IgotCi0vLyBtYWtlIHN1cmUgd2UgaGF2ZSBfX0dMSUJDX1BSRVJFUSBpZiBhdmFpbGFibGUgYXQgYWxsCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjc3RkbGliPgotI2Vsc2UKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZgotCi0vLwotLy8gPHN0ZGludC5oPiBhZGRlZCB0byBnbGliYyAyLjEuMQotLy8gV2UgY2FuIG9ubHkgdGVzdCBmb3IgMi4xIHRob3VnaDoKLS8vCi0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICgoX19HTElCQ19fID4gMikgfHwgKChfX0dMSUJDX18gPT0gMikgJiYgKF9fR0xJQkNfTUlOT1JfXyA+PSAxKSkpCi0gICAvLyA8c3RkaW50Lmg+IGRlZmluZXMgaW50NjRfdCB1bmNvbmRpdGlvbmFsbHksIGJ1dCA8c3lzL3R5cGVzLmg+IGRlZmluZXMKLSAgIC8vIGludDY0X3Qgb25seSBpZiBfX0dOVUNfXy4gIFRodXMsIGFzc3VtZSBhIGZ1bGx5IHVzYWJsZSA8c3RkaW50Lmg+Ci0gICAvLyBvbmx5IHdoZW4gdXNpbmcgR0NDLgotIyAgaWYgZGVmaW5lZCBfX0dOVUNfXwotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fTElCQ09NT19fKQotICAgLy8KLSAgIC8vIGNvbW8gb24gbGludXggZG9lc24ndCBoYXZlIHN0ZDo6IGMgZnVuY3Rpb25zOgotICAgLy8gTk9URTogdmVyc2lvbnMgb2YgbGliY29tbyBwcmlvciB0byBiZXRhMjggaGF2ZSBvY3RhbCB2ZXJzaW9uIG51bWJlcmluZywKLSAgIC8vIGUuZy4gdmVyc2lvbiAyNSBpcyAyMSAoZGVjKQotICAgLy8KLSMgIGlmIF9fTElCQ09NT19WRVJTSU9OX18gPD0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBlbmRpZgotCi0jICBpZiBfX0xJQkNPTU9fVkVSU0lPTl9fIDw9IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZW5kaWYKLQotI2VuZGlmCi0KLS8vCi0vLyBJZiBnbGliYyBpcyBwYXN0IHZlcnNpb24gMiB0aGVuIHdlIGRlZmluaXRlbHkgaGF2ZQotLy8gZ2V0dGltZW9mZGF5LCBlYXJsaWVyIHZlcnNpb25zIG1heSBvciBtYXkgbm90IGhhdmUgaXQ6Ci0vLwotI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2VuZGlmCi0KLSNpZmRlZiBfX1VTRV9QT1NJWDE5OTMwOQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCi0vLyBfX0dMSUJDX1BSRVJFUSBpcyBhdmFpbGFibGUgc2luY2UgMi4xLjIKLQotICAgLy8gc3dwcmludGYgaXMgYXZhaWxhYmxlIHNpbmNlIGdsaWJjIDIuMi4wCi0jICBpZiAhX19HTElCQ19QUkVSRVEoMiwyKSB8fCAoIWRlZmluZWQoX19VU0VfSVNPQzk5KSAmJiAhZGVmaW5lZChfX1VTRV9VTklYOTgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSMgIGVuZGlmCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NXUFJJTlRGCi0jZW5kaWYKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfWUlFTEQKLQotI2lmbmRlZiBfX0dOVUNfXwotLy8KLS8vIGlmIHRoZSBjb21waWxlciBpcyBub3QgZ2NjIHdlIHN0aWxsIG5lZWQgdG8gYmUgYWJsZSB0byBwYXJzZQotLy8gdGhlIEdOVSBzeXN0ZW0gaGVhZGVycywgc29tZSBvZiB3aGljaCAobWFpbmx5IDxzdGRpbnQuaD4pCi0vLyB1c2UgR05VIHNwZWNpZmljIGV4dGVuc2lvbnM6Ci0vLwotIyAgaWZuZGVmIF9fZXh0ZW5zaW9uX18KLSMgICAgIGRlZmluZSBfX2V4dGVuc2lvbl9fCi0jICBlbmRpZgotIyAgaWZuZGVmIF9fY29uc3RfXwotIyAgICAgZGVmaW5lIF9fY29uc3RfXyBjb25zdAotIyAgZW5kaWYKLSMgIGlmbmRlZiBfX3ZvbGF0aWxlX18KLSMgICAgIGRlZmluZSBfX3ZvbGF0aWxlX18gdm9sYXRpbGUKLSMgIGVuZGlmCi0jICBpZm5kZWYgX19zaWduZWRfXwotIyAgICAgZGVmaW5lIF9fc2lnbmVkX18gc2lnbmVkCi0jICBlbmRpZgotIyAgaWZuZGVmIF9fdHlwZW9mX18KLSMgICAgIGRlZmluZSBfX3R5cGVvZl9fIHR5cGVvZgotIyAgZW5kaWYKLSMgIGlmbmRlZiBfX2lubGluZV9fCi0jICAgICBkZWZpbmUgX19pbmxpbmVfXyBpbmxpbmUKLSMgIGVuZGlmCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9tYWNvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9tYWNvcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2OTIyZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vbWFjb3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEJpbGwgS2VtcGYgMjAwMi4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgTWFjIE9TIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJNYWMgT1MiCi0KLSNpZiBfX01BQ0hfXyAmJiAhZGVmaW5lZChfTVNMX1VTSU5HX01TTF9DKQotCi0vLyBVc2luZyB0aGUgTWFjIE9TIFggc3lzdGVtIEJTRC1zdHlsZSBDIGxpYnJhcnkuCi0KLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfVU5JU1REX0gKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZW5kaWYKLS8vCi0vLyBCZWdpbiBieSBpbmNsdWRpbmcgb3VyIGJvaWxlcnBsYXRlIGNvZGUgZm9yIFBPU0lYCi0vLyBmZWF0dXJlIGRldGVjdGlvbiwgdGhpcyBpcyBzYWZlIGV2ZW4gd2hlbiB1c2luZwotLy8gdGhlIE1TTCBhcyBNZXRyb3dlcmtzIHN1cHBseSB0aGVpciBvd24gPHVuaXN0ZC5oPgotLy8gdG8gcmVwbGFjZSB0aGUgcGxhdGZvcm0tbmF0aXZlIEJTRCBvbmUuIEcrKyB1c2VycwotLy8gc2hvdWxkIGFsc28gYWx3YXlzIGJlIGFibGUgdG8gZG8gdGhpcyBvbiBNYXhPUyBYLgotLy8KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0jICBpZm5kZWYgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICBlbmRpZgotCi0vLwotLy8gQlNEIHJ1bnRpbWUgaGFzIHB0aHJlYWRzLCBzaWdhY3Rpb24sIHNjaGVkX3lpZWxkIGFuZCBnZXR0aW1lb2ZkYXksCi0vLyBvZiB0aGVzZSBvbmx5IHB0aHJlYWRzIGFyZSBhZHZlcnRpc2VkIGluIDx1bmlzdGQuaD4sIHNvIHNldCB0aGUgCi0vLyBvdGhlciBvcHRpb25zIGV4cGxpY2l0bHk6Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU0lHQUNUSU9OCi0KLSMgIGlmIChfX0dOVUNfXyA8IDMpICYmICFkZWZpbmVkKCBfX0FQUExFX0NDX18pCi0KLS8vIEdDQyBzdHJhbmdlICJpZ25vcmUgc3RkIiBtb2RlIHdvcmtzIGJldHRlciBpZiB5b3UgcHJldGVuZCBldmVyeXRoaW5nCi0vLyBpcyBpbiB0aGUgc3RkIG5hbWVzcGFjZSwgZm9yIHRoZSBtb3N0IHBhcnQuCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBlbmRpZgotCi0jICBpZiAoX19HTlVDX18gPT0gNCkKLQotLy8gQm90aCBnY2MgYW5kIGludGVsIHJlcXVpcmUgdGhlc2UuICAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0KLSMgIGVuZGlmCi0KLSNlbHNlCi0KLS8vIFVzaW5nIHRoZSBNU0wgQyBsaWJyYXJ5LgotCi0vLyBXZSB3aWxsIGV2ZW50dWFsbHkgc3VwcG9ydCB0aHJlYWRzIGluIG5vbi1DYXJib24gYnVpbGRzLCBidXQgd2UgZG8KLS8vIG5vdCBzdXBwb3J0IHRoaXMgeWV0LgotIyAgaWYgKCBkZWZpbmVkKFRBUkdFVF9BUElfTUFDX0NBUkJPTikgJiYgVEFSR0VUX0FQSV9NQUNfQ0FSQk9OICkgfHwgKCBkZWZpbmVkKFRBUkdFVF9DQVJCT04pICYmIFRBUkdFVF9DQVJCT04gKQotCi0jICBpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpCi0vLyBNUFRhc2tzIHN1cHBvcnQgaXMgZGVwcmVjYXRlZC9yZW1vdmVkIGZyb20gQm9vc3Q6Ci0vLyMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19NUFRBU0tTCi0jICBlbGlmICggX19kZXN0X29zID09IF9fbWFjX29zX3ggKQotLy8gV2UgYXJlIGRvaW5nIGEgQ2FyYm9uL01hY2gtTy9NU0wgYnVpbGQgd2hpY2ggaGFzIHB0aHJlYWRzLCBidXQgb25seSB0aGUKLS8vIGdldHRpbWVvZmRheSBhbmQgbm8gcG9zaXguCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotIyAgZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotLy8gVGhlIHJlbW90ZSBjYWxsIG1hbmFnZXIgZGVwZW5kcyBvbiB0aGlzLgotIyAgICBkZWZpbmUgTkROQk9PU1RfQklORF9FTkFCTEVfUEFTQ0FMCi0KLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vcW54bnRvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3FueG50by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MmJmNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vcW54bnRvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEppbSBEb3VnbGFzIDIwMDUuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFFOWCBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAiUU5YIgotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLS8vIFFOWCBjbGFpbXMgWE9wZW4gdmVyc2lvbiA1IGNvbXBhdGliaWxpdHksIGJ1dCBkb2Vzbid0IGhhdmUgYW4gbmxfdHlwZXMuaAotLy8gb3IgbG9nMXAgYW5kIGV4cG0xOgotI3VuZGVmICBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotI3VuZGVmICBORE5CT09TVF9IQVNfTE9HMVAKLSN1bmRlZiAgTkROQk9PU1RfSEFTX0VYUE0xCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2RlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotI2RlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc29sYXJpcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zb2xhcmlzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljZTQxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zb2xhcmlzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAzLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBzdW4gc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0KLSNkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIlN1biBTb2xhcmlzIgotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLQotLy8gYm9pbGVycGxhdGUgY29kZToKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotLy8KLS8vIHB0aHJlYWRzIGRvbid0IGFjdHVhbGx5IHdvcmsgd2l0aCBnY2MgdW5sZXNzIF9QVEhSRUFEUyBpcyBkZWZpbmVkOgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9QT1NJWF9USFJFQURTKSAmJiAhZGVmaW5lZChfUFRIUkVBRFMpCi0jIHVuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2VuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3N5bWJpYW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc3ltYmlhbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMzIxOTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcGxhdGZvcm0vc3ltYmlhbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBZdXJpeSBLcmFzbm9zY2hlayAyMDA5LiAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgc3ltYmlhbiBzcGVjaWZpYyBjb25maWcgb3B0aW9uczoKLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJTeW1iaWFuIgotI2RlZmluZSBORE5CT09TVF9TWU1CSUFOIDEKLQotCi0jaWYgZGVmaW5lZChfX1M2MF8zWF9fKQotLy8gT3BlbiBDIC8gQysrIHBsdWdpbiB3YXMgaW50cm9kdXNlZCBpbiB0aGlzIFNESywgZWFybGllciB2ZXJzaW9ucyBkb24ndCBoYXZlIENSVCAvIFNUTAotIyAgZGVmaW5lIE5ETkJPT1NUX1M2MF8zcmRfRURJVElPTl9GUDJfT1JfTEFURVJfU0RLCi0vLyBtYWtlIHN1cmUgd2UgaGF2ZSBfX0dMSUJDX1BSRVJFUSBpZiBhdmFpbGFibGUgYXQgYWxsCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjc3RkbGliPgotI2Vsc2UKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZi8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1VOSVNURF9ICi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotLy8gUzYwIFNESyBkZWZpbmVzIF9QT1NJWF9WRVJTSU9OIGFzIFBPU0lYLjEKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfU1RESU5UX0gKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TQ0hFRF9ZSUVMRAotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfSEFTX0VYUE0xCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTTEKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUE9TSVhfQVBJCi0jICAgIGRlZmluZSBORE5CT09TVF9QT1NJWF9BUEkKLSMgIGVuZGlmCi0vLyBlbmRpYW5lc3Mgc3VwcG9ydAotIyAgaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgotLy8gU3ltYmlhbiBTREsgcHJvdmlkZXMgX0JZVEVfT1JERVIgaW5zdGVhZCBvZiBfX0JZVEVfT1JERVIKLSMgIGlmbmRlZiBfX0xJVFRMRV9FTkRJQU4KLSMgICAgaWZkZWYgX0xJVFRMRV9FTkRJQU4KLSMgICAgICBkZWZpbmUgX19MSVRUTEVfRU5ESUFOIF9MSVRUTEVfRU5ESUFOCi0jICAgIGVsc2UKLSMgICAgICBkZWZpbmUgX19MSVRUTEVfRU5ESUFOIDEyMzQKLSMgICAgZW5kaWYKLSMgIGVuZGlmCi0jICBpZm5kZWYgX19CSUdfRU5ESUFOCi0jICAgIGlmZGVmIF9CSUdfRU5ESUFOCi0jICAgICAgZGVmaW5lIF9fQklHX0VORElBTiBfQklHX0VORElBTgotIyAgICBlbHNlCi0jICAgICAgZGVmaW5lIF9fQklHX0VORElBTiA0MzIxCi0jICAgIGVuZGlmCi0jICBlbmRpZgotIyAgaWZuZGVmIF9fQllURV9PUkRFUgotIyAgICBkZWZpbmUgX19CWVRFX09SREVSIF9fTElUVExFX0VORElBTiAvLyBTeW1iaWFuIGlzIExFCi0jICBlbmRpZgotLy8gS25vd24gbGltaXRhdGlvbnMKLSMgIGRlZmluZSBORE5CT09TVF9BU0lPX0RJU0FCTEVfU0VSSUFMX1BPUlQKLSMgIGRlZmluZSBORE5CT09TVF9EQVRFX1RJTUVfTk9fTE9DQUxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgIGRlZmluZSBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotI2Vsc2UgLy8gVE9ETzogTW9yZSBwbGF0Zm9ybSBzdXBwb3J0IGUuZy4gVUlRCi0jICBlcnJvciAiVW5zdXBwb3RlZCBTeW1iaWFuIFNESyIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1dJTlNDV19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIgLy8gd2luc2N3IGRlZmluZXMgV0lOMzIgbWFjcm8KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Ztcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS92bXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWY3NDU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Ztcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBBcnR5b20gQmVpbGlzIDIwMTAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1BMQVRGT1JNX1ZNU19IUFAgCi0jZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19QTEFURk9STV9WTVNfSFBQIAotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJPcGVuVk1TIiAKLQotI3VuZGVmICBORE5CT09TVF9IQVNfU1RESU5UX0ggCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX05MX1RZUEVTX0ggCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkgCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURTIAotI2RlZmluZSBORE5CT09TVF9IQVNfTkFOT1NMRUVQIAotI2RlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRSAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUgCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUCAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0VYUE0xIAotI2RlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUyAKLSN1bmRlZiAgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxEIAotCi0jZW5kaWYgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS92eHdvcmtzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Z4d29ya3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjUwNDRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Z4d29ya3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzY5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IER1c3RpbiBTcGljdXp6YSAyMDA5LgotLy8gICAgICBBZGFwdGVkIHRvIHZ4V29ya3MgNi45IGJ5IFBldGVyIEJyb2NrYW1wIDIwMTIuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFNpbmNlIFdSUyBkb2VzIG5vdCB5ZXQgcHJvcGVybHkgc3VwcG9ydCBib29zdCB1bmRlciB2eFdvcmtzCi0vLyAgYW5kIHRoaXMgZmlsZSB3YXMgYmFkbHkgb3V0ZGF0ZWQsIGJ1dCBJIHdhcyBrZWVuIG9uIHVzaW5nIGl0LAotLy8gIEkgcGF0Y2hlZCBib29zdCBteXNlbGYgdG8gbWFrZSB0aGluZ3Mgd29yay4gVGhpcyBoYXMgYmVlbiB0ZXN0ZWQKLS8vICBhbmQgYWRhcHRlZCBieSBtZSBmb3IgdnhXb3JrcyA2LjkgKm9ubHkqLCBhcyBJJ20gbGFja2luZyBhY2Nlc3MKLS8vICB0byBlYXJsaWVyIDYuWCB2ZXJzaW9ucyEgVGhlIG9ubHkgdGhpbmcgSSBrbm93IGZvciBzdXJlIGlzIHRoYXQKLS8vICB2ZXJ5IG9sZCB2ZXJzaW9ucyBvZiB2eFdvcmtzIChuYW1lbHkgZXZlcnl0aGluZyBiZWxvdyA2LngpIGFyZQotLy8gIGFic29sdXRlbHkgdW5hYmxlIHRvIHVzZSBib29zdC4gVGhpcyBpcyBtYWlubHkgZHVlIHRvIHRoZSBjb21wbGV0ZWx5Ci0vLyAgb3V0ZGF0ZWQgbGlicmFyaWVzIGFuZCBhbmNpZW50IGNvbXBpbGVyIChHQ0MgMi45NiBvciB3b3JzZSkuIERvCi0vLyAgbm90IGV2ZW4gdGhpbmsgb2YgZ2V0dGluZyB0aGlzIHRvIHdvcmssIGEgbWlzZXJhYmxlIGZhaWx1cmUgd2lsbAotLy8gIGJlIGd1YXJhbnRlZWQhCi0vLyAgRXF1YWxseSwgdGhpcyBmaWxlIGhhcyBiZWVuIHRlc3RlZCBmb3IgUlRQcyAoUmVhbCBUaW1lIFByb2Nlc3NlcykKLS8vICBvbmx5LCBub3QgZm9yIERLTXMgKERvd25sb2FkYWJsZSBLZXJuZWwgTW9kdWxlcykuIFRoZXNlIHR3byB0eXBlcwotLy8gIG9mIGV4ZWN1dGFibGVzIGRpZmZlciBsYXJnZWx5IGluIHRoZSBhdmFpbGFibGUgZnVuY3Rpb25hbGl0eSBvZgotLy8gIHRoZSBDLWxpYnJhcnksIFNUTCwgYW5kIHNvIG9uLiBBIERLTSB1c2VzIGEgbGlicmFyeSBzaW1pbGFyIHRvIHRob3NlCi0vLyAgb2YgdnhXb3JrcyA1LlggLSB3aXRoIGFsbCBpdHMgbGltaXRhdGlvbnMgYW5kIGluY29tcGF0aWJpbGl0aWVzCi0vLyAgd2l0aCByZXNwZWN0IHRvIEFOU0kgQysrIGFuZCBTVEwuIFNvIHByb2JhYmx5IHRoZXJlIG1pZ2h0IGJlIHByb2JsZW1zCi0vLyAgd2l0aCB0aGUgdXNhZ2Ugb2YgYm9vc3QgZnJvbSBES01zLiBXUlMgb3IgYW55IHZvbHV0ZWVycyBhcmUgZnJlZSB0bwotLy8gIHByb3ZlIHRoZSBvcHBvc2l0ZSEKLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBTb21lIGltcG9ydGFudCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHVzYWdlIG9mIFBPU0lYIHNlbWFwaG9yZXM6Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gVnhXb3JrcyBhcyBhIHJlYWwgdGltZSBvcGVyYXRpbmcgc3lzdGVtIGhhbmRsZXMgdGhyZWFkcyBzb21ld2hhdAotLy8gZGlmZmVyZW50IGZyb20gd2hhdCAibm9ybWFsIiBPU2VzIGRvLCByZWdhcmRpbmcgdGhlaXIgc2NoZWR1bGluZyEKLS8vIFRoaXMgY291bGQgbGVhZCB0byBhIHNjZW5hcmlvIGNhbGxlZCAicHJpb3JpdHkgaW52ZXJzaW9uIiB3aGVuIHVzaW5nCi0vLyBzZW1hcGhvcmVzLCBzZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Qcmlvcml0eV9pbnZlcnNpb24uCi0vLwotLy8gTm93LCBWeFdvcmtzIFBPU0lYLXNlbWFwaG9yZXMgZm9yIERLTSdzIGRlZmF1bHQgdG8gdGhlIHVzYWdlIG9mCi0vLyBwcmlvcml0eSBpbnZlcnRpbmcgc2VtYXBob3Jlcywgd2hpY2ggaXMgZmluZS4gT24gdGhlIG90aGVyIGhhbmQsCi0vLyBmb3IgUlRQJ3MgaXQgZGVmYXVsdHMgdG8gdXNpbmcgbm9uIHByaW9yaXR5IGludmVydGluZyBzZW1hcGhvcmVzLAotLy8gd2hpY2ggY291bGQgZWFzaWx5IHBvc2UgYSBzZXJpb3VzIHByb2JsZW0gZm9yIGEgcmVhbCB0aW1lIHByb2Nlc3MsCi0vLyBpLmUuIGRlYWRsb2NrcyEgVG8gb3ZlcmNvbWUgdGhpcyB0d28gcG9zc2liaWxpdGllcyBkbyBleGlzdDoKLS8vCi0vLyBhKSBQYXRjaCBldmVyeSBwaWVjZSBvZiBib29zdCB0aGF0IHVzZXMgc2VtYXBob3JlcyB0byBpbnN0YW5jaWF0ZQotLy8gICAgdGhlIHByb3BlciB0eXBlIG9mIHNlbWFwaG9yZXMuIFRoaXMgaXMgbm9uLWludHJ1c2l2ZSB3aXRoIHJlc3BlY3QKLS8vICAgIHRvIHRoZSBPUyBhbmQgY291bGQgcmVsYXRpdmVseSBlYXN5IGJlZW4gZG9uZSBieSBnaXZpbmcgYWxsCi0vLyAgICBzZW1hcGhvcmVzIGF0dHJpYnV0ZXMgZGV2aWF0aW5nIGZyb20gdGhlIGRlZmF1bHQgKGZvciBpbi1kZXB0aAotLy8gICAgaW5mb3JtYXRpb24gc2VlIHRoZSBQT1NJWCBmdW5jdGlvbnMgcHRocmVhZF9tdXRleGF0dHJfaW5pdCgpCi0vLyAgICBhbmQgcHRocmVhZF9tdXRleGF0dHJfc2V0cHJvdG9jb2woKSkuIEhvd2V2ZXIgdGhpcyBicmVha3MgYWxsCi0vLyAgICB0b28gZWFzaWx5LCBhcyB3aXRoIGV2ZXJ5IG5ldyB2ZXJzaW9uIHNvbWUgYm9vc3QgbGlicmFyeSBjb3VsZAotLy8gICAgYWxsIGluIGEgc3VkZGVuIHN0YXJ0IHVzaW5nIHNlbWFwaG9yZXMsIHJlc3VycmVjdGluZyB0aGUgdmVyeQotLy8gICAgc2FtZSwgaGFyZCB0byBsb2NhdGUgcHJvYmxlbSBvdmVyIGFuZCBvdmVyIGFnYWluIQotLy8KLS8vIGIpIFdlIGNvdWxkIGNoYW5nZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIGZvciBQT1NJWC1zZW1hcGhvcmVzCi0vLyAgICB0aGF0IFZ4V29ya3MgdXNlcyBmb3IgUlRQJ3MgYW5kIHRoaXMgaXMgYmVpbmcgc3VnZ2VzdGVkIGhlcmUsCi0vLyAgICBhcyBpdCB3aWxsIG1vcmUgb3IgbGVzcyBzZWFtbGVzc2x5IGludGVncmF0ZSB3aXRoIGJvb3N0LiBJIGdvdAotLy8gICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBmcm9tIFdSUyBob3cgdG8gZG8gdGhpcywgY29tcGFyZQotLy8gICAgV2luZCBSaXZlciBUU1IjIDEyMDk3Njg6Ci0vLwotLy8gSW5zdHJ1Y3Rpb25zIGZvciBjaGFuZ2luZyB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIG9mIFBPU0lYLQotLy8gc2VtYXBob3JlcyBmb3IgUlRQJ3MgaW4gVnhXb3JrcyA2Ljk6Ci0vLyAtIEVkaXQgdGhlIGZpbGUgL3Z4d29ya3MtNi45L3RhcmdldC91c3Ivc3JjL3Bvc2l4L3B0aHJlYWRMaWIuYwotLy8gICBpbiB0aGUgcm9vdCBvZiB5b3VyIFdvcmtiZW5jaC1pbnN0YWxsYXRpb24uCi0vLyAtIEFyb3VuZCBsaW5lIDkxNyB0aGVyZSBzaG91bGQgYmUgdGhlIGRlZmluaXRpb24gb2YgdGhlIGRlZmF1bHQKLS8vICAgbXV0ZXggYXR0cmlidXRlczoKLS8vCi0vLyAgIExPQ0FMIHB0aHJlYWRfbXV0ZXhhdHRyX3QgZGVmYXVsdE11dGV4QXR0ciA9Ci0vLyAgICAgICB7Ci0vLyAgICAgICBQVEhSRUFEX0lOSVRJQUxJWkVEX09CSiwgUFRIUkVBRF9QUklPX05PTkUsIDAsCi0vLyAgICAgICBQVEhSRUFEX01VVEVYX0RFRkFVTFQKLS8vICAgICAgIH07Ci0vLwotLy8gICBIZXJlLCByZXBsYWNlIFBUSFJFQURfUFJJT19OT05FIGJ5IFBUSFJFQURfUFJJT19JTkhFUklULgotLy8gLSBBcm91bmQgbGluZSAxMjM2IHRoZXJlIHNob3VsZCBiZSBhIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvbgotLy8gICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCkuIEEgY291cGxlIG9mIGxpbmVzIGJlbG93IHlvdSBzaG91bGQKLS8vICAgZmluZCBhIGJsb2NrIG9mIGNvZGUgbGlrZSB0aGlzOgotLy8KLS8vICAgcEF0dHItPm11dGV4QXR0clN0YXR1cyAgICAgID0gUFRIUkVBRF9JTklUSUFMSVpFRF9PQko7Ci0vLyAgIHBBdHRyLT5tdXRleEF0dHJQcm90b2NvbCAgICA9IFBUSFJFQURfUFJJT19OT05FOwotLy8gICBwQXR0ci0+bXV0ZXhBdHRyUHJpb2NlaWxpbmcgPSAwOwotLy8gICBwQXR0ci0+bXV0ZXhBdHRyVHlwZSAgICAgICAgPSBQVEhSRUFEX01VVEVYX0RFRkFVTFQ7Ci0vLwotLy8gICBIZXJlIGFnYWluLCByZXBsYWNlIFBUSFJFQURfUFJJT19OT05FIGJ5IFBUSFJFQURfUFJJT19JTkhFUklULgotLy8gLSBGaW5hbGx5LCByZWJ1aWxkIHlvdXIgVlNCLiBUaGlzIHdpbGwgY3JlYXRlIGEgbmV3IFZ4V29ya3Mga2VybmVsCi0vLyAgIHdpdGggdGhlIGNoYW5nZWQgcHJvcGVydGllcy4gVGhhdCdzIGl0ISBOb3csIHVzaW5nIGJvb3N0IHNob3VsZAotLy8gICBubyBsb25nZXIgY2F1c2UgYW55IHByb2JsZW1zIHdpdGggdGFzayBkZWFkbG9ja3MhCi0vLwotLy8gQW5kIGhlcmUncyBhbm90aGVyIHVzZWZ1bCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIFZ4V29ya3MnCi0vLyBQT1NJWC1mdW5jdGlvbmFsaXR5IGluIGdlbmVyYWw6Ci0vLyBWeFdvcmtzIGlzIG5vdCBhIGdlbnVpbmUgUE9TSVgtT1MgaW4gaXRzZWxmLCByYXRoZXIgaXQgaXMgdXNpbmcgYQotLy8ga2luZCBvZiBjb21wYXRpYmlsaXR5IGxheWVyIChzb3J0IG9mIGEgd3JhcHBlcikgdG8gZW11bGF0ZSB0aGUKLS8vIFBPU0lYLWZ1bmN0aW9uYWxpdHkgYnkgdXNpbmcgaXRzIG93biByZXNvdXJjZXMgYW5kIGZ1bmN0aW9ucy4KLS8vIEF0IHRoZSB0aW1lIGEgdGFzayAodGhyZWFkKSBjYWxscyBpdCdzIGZpcnN0IFBPU0lYLWZ1bmN0aW9uIGR1cmluZwotLy8gcnVudGltZSBpdCBpcyBiZWluZyB0cmFuc2Zvcm1lZCBieSB0aGUgT1MgaW50byBhIFBPU0lYLXRocmVhZC4KLS8vIFRoaXMgdHJhbnNmb3JtYXRpb24gZG9lcyBpbmNsdWRlIGEgY2FsbCB0byBtYWxsb2MoKSB0byBhbGxvY2F0ZSB0aGUKLS8vIG1lbW9yeSByZXF1aXJlZCBmb3IgdGhlIGhvdXNla2VlcGluZyBvZiBQT1NJWC10aHJlYWRzLiBJbiBhIGhpZ2gKLS8vIHByaW9yaXR5IFJUUCB0aGlzIG1hbGxvYygpIGNhbGwgbWF5IGJlIGhpZ2hseSB1bmRlc2lyYWJsZSwgYXMgaXRzCi0vLyB0aW1pbmcgaXMgbW9yZSBvciBsZXNzIHVucHJlZGljdGFibGUgKGRlcGVuZGluZyBvbiB3aGF0IHlvdXIgYWN0dWFsCi0vLyBoZWFwIGxvb2tzIGxpa2UpLiBZb3UgY2FuIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtIGJ5IGNhbGxpbmcgdGhlCi0vLyBmdW5jdGlvbiB0aHJlYWRfc2VsZigpIGF0IGEgd2VsbCBkZWZpbmVkIHBvaW50IGluIHRoZSBjb2RlIG9mIHRoZQotLy8gdGFzaywgZS5nLiBzaG9ydGx5IGFmdGVyIHRoZSB0YXNrIHNwYXducyB1cC4gVGhlcmVieSB5b3UgYXJlIGFibGUKLS8vIHRvIGRlZmluZSB0aGUgdGltZSB3aGVuIHRoZSB0YXNrLXRyYW5zZm9ybWF0aW9uIHdpbGwgdGFrZSBwbGFjZSBhbmQKLS8vIHlvdSBjb3VsZCBzaGlmdCBpdCB0byBhbiB1bmNyaXRpY2FsIHBvaW50IHdoZXJlIGEgbWFsbG9jKCkgY2FsbCBpcwotLy8gdG9sZXJhYmxlLiBTbywgaWYgdGhpcyBjb3VsZCBwb3NlIGEgcHJvYmxlbSBmb3IgeW91ciBjb2RlLCByZW1lbWJlcgotLy8gdG8gY2FsbCB0aHJlYWRfc2VsZigpIGZyb20gdGhlIGFmZmVjdGVkIHRhc2sgYXQgYW4gZWFybHkgc3RhZ2UuCi0vLwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLy8gQmxvY2sgb3V0IGFsbCB2ZXJzaW9ucyBiZWZvcmUgdnhXb3JrcyA2LngsIGFzIHRoZXNlIGRvbid0IHdvcms6Ci0vLyBJbmNsdWRlIGhlYWRlciB3aXRoIHRoZSB2eFdvcmtzIHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIHF1ZXJ5IHRoZW0KLSNpbmNsdWRlIDx2ZXJzaW9uLmg+Ci0jaWYgIWRlZmluZWQoX1dSU19WWFdPUktTX01BSk9SKSB8fCAoX1dSU19WWFdPUktTX01BSk9SIDwgNikKLSMgIGVycm9yICJUaGUgdnhXb3JrcyB2ZXJzaW9uIHlvdSdyZSB1c2luZyBpcyBzbyBiYWRseSBvdXRkYXRlZCxcCi0gICAgICAgICAgaXQgZG9lc24ndCB3b3JrIGF0IGFsbCB3aXRoIGJvb3N0LCBzb3JyeSwgbm8gY2hhbmNlISIKLSNlbmRpZgotCi0vLyBIYW5kbGUgdmVyc2lvbnMgYWJvdmUgNS5YIGJ1dCBiZWxvdyA2LjkKLSNpZiAoX1dSU19WWFdPUktTX01BSk9SID09IDYpICYmIChfV1JTX1ZYV09SS1NfTUlOT1IgPCA5KQotLy8gVE9ETzogU3RhcnRpbmcgZnJvbSB3aGF0IHZlcnNpb24gZG9lcyB2eFdvcmtzIHdvcmsgd2l0aCBib29zdD8KLS8vIFdlIGNhbid0IHJlYXNvbmFibHkgaW5zZXJ0IGEgI3dhcm5pbmcgIiIgYXMgYSB1c2VyIGhpbnQgaGVyZSwKLS8vIGFzIHRoaXMgd2lsbCBzaG93IHVwIHdpdGggZXZlcnkgZmlsZSBpbmNsdWRpbmcgc29tZSBib29zdCBoZWFkZXIsCi0vLyBiYWRseSBidWdnaW5nIHRoZSB1c2VyLi4uIFNvIGZvciB0aGUgdGltZSBiZWluZyB3ZSBqdXN0IGxlYXZlIGl0LgotI2VuZGlmCi0KLS8vIHZ4V29ya3Mgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnM6Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2RlZmluZSBORE5CT09TVF9QTEFURk9STSAidnhXb3JrcyIKLQotLy8gU3BlY2lhbCBiZWhhdmlvdXIgZm9yIERLTXM6Ci0jaWZkZWYgX1dSU19LRVJORUwKLSAgLy8gREtNcyBkbyBub3QgaGF2ZSB0aGUgPGN3Y2hhcj4taGVhZGVyLAotICAvLyBidXQgYXBwYXJlbnRseSB0aGV5IGRvIGhhdmUgYW4gaW50cmluc2ljIHdjaGFyX3QgbWVhbndoaWxlIQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotCi0gIC8vIExvdHMgb2Ygd2lkZS1mdW5jdGlvbnMgYW5kIC1oZWFkZXJzIGFyZSB1bmF2YWlsYWJsZSBmb3IgREtNcyBhcyB3ZWxsOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSNlbmRpZgotCi0vLyBHZW5lcmFsbHkgYXZhaWxhYmxlIGhlYWRlcnM6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2RlZmluZSBORE5CT09TVF9IQVNfU1RESU5UX0gKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotCi0vLyB2eFdvcmtzIGRvZXMgbm90IGhhdmUgaW5zdGFsbGVkIGFuIGljb252LWxpYnJhcnkgYnkgZGVmYXVsdCwKLS8vIHNvIHVuZm9ydHVuYXRlbHkgbm8gVW5pY29kZSBzdXBwb3J0IGZyb20gc2NyYXRjaCBpcyBhdmFpbGFibGUhCi0vLyBUaHVzLCBpbnN0ZWFkIGl0IGlzIHN1Z2dlc3RlZCB0byBzd2l0Y2ggdG8gSUNVLCBhcyB0aGlzIHNlZW1zCi0vLyB0byBiZSB0aGUgbW9zdCBjb21wbGV0ZSBhbmQgcG9ydGFibGUgb3B0aW9uLi4uCi0jZGVmaW5lIE5ETkJPT1NUX0xPQ0FMRV9XSVRIX0lDVQotCi0vLyBHZW5lcmFsbHkgYXZhaWxhYmxlIGZ1bmN0aW9uYWxpdHk6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19OQU5PU0xFRVAKLSNkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFRJTUVPRkRBWQotI2RlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotI2RlZmluZSBORE5CT09TVF9IQVNfTUFDUk9fVVNFX0ZBQ0VUCi0KLS8vIEdlbmVyYWxseSB1bmF2YWlsYWJsZSBmdW5jdGlvbmFsaXR5LCBkZWxpdmVyZWQgYnkgYm9vc3QncyB0ZXN0IGZ1bmN0aW9uOgotLy8jZGVmaW5lIE5ETkJPT1NUX05PX0RFRFVDRURfVFlQRU5BTUUgLy8gQ29tbWVudGVkIHRoaXMgb3V0LCBib29zdCdzIHRlc3QgZ2l2ZXMgYW4gZXJyb3JuZW91cyByZXN1bHQhCi0jZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0VYVEVSTl9URU1QTEFURQotI2RlZmluZSBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLQotLy8gR2VuZXJhbGx5IGF2YWlsYWJsZSB0aHJlYWRpbmcgQVBJJ3M6Ci0jZGVmaW5lIE5ETkJPT1NUX0hBU19QVEhSRUFEUwotI2RlZmluZSBORE5CT09TVF9IQVNfU0NIRURfWUlFTEQKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NJR0FDVElPTgotCi0vLyBGdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBmb3IgUlRQcyBvbmx5OgotI2lmZGVmIF9fUlRQX18KLSMgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRF9NVVRFWEFUVFJfU0VUVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotI2VuZGlmCi0KLS8vIEZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGZvciBES01zIG9ubHk6Ci0jaWZkZWYgX1dSU19LRVJORUwKLSAgLy8gTHVja2lseSwgYXQgdGhlIG1vbWVudCB0aGVyZSBzZWVtcyB0byBiZSBub25lIQotI2VuZGlmCi0KLS8vIFRoZXNlICNkZWZpbmVzIGFsbG93IHBvc2l4X2ZlYXR1cmVzIHRvIHdvcmssIHNpbmNlIHZ4V29ya3MgZG9lc24ndAotLy8gI2RlZmluZSB0aGVtIGl0c2VsZiBmb3IgREtNcyAoZm9yIFJUUHMgb24gdGhlIGNvbnRyYXJ5IGl0IGRvZXMpOgotI2lmZGVmIF9XUlNfS0VSTkVMCi0jICBpZm5kZWYgX1BPU0lYX1RJTUVSUwotIyAgICBkZWZpbmUgX1BPU0lYX1RJTUVSUyAgMQotIyAgZW5kaWYKLSMgIGlmbmRlZiBfUE9TSVhfVEhSRUFEUwotIyAgICBkZWZpbmUgX1BPU0lYX1RIUkVBRFMgMQotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyB2eFdvcmtzIGRvZXNuJ3Qgd29yayB3aXRoIGFzaW8gc2VyaWFsIHBvcnRzOgotI2RlZmluZSBORE5CT09TVF9BU0lPX0RJU0FCTEVfU0VSSUFMX1BPUlQKLS8vIFRPRE86IFRoZSBwcm9ibGVtIGhlcmUgc2VlbXMgdG8gYmVlIHRoYXQgdnhXb3JrcyB1c2VzIGl0cyBvd24sIHZlcnkgc3BlY2lmaWMKLS8vICAgICAgIHdheXMgdG8gaGFuZGxlIHNlcmlhbCBwb3J0cywgaW5jb21wYXRpYmxlIHdpdGggUE9TSVggb3IgYW55dGhpbmcuLi4KLS8vICAgICAgIE1heWJlIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gd291bGQgYmUgcG9zc2libGUsIGJ1dCB1bnRpbCB0aGUKLS8vICAgICAgIHN0cmFpZ2h0IG5lZWQgYXJpc2VzLi4uIFRoaXMgaW1wbGVtZW50YXRpb24gd291bGQgcHJlc3VtYWJseSBjb25zaXN0Ci0vLyAgICAgICBvZiBzb21lIHZ4V29ya3Mgc3BlY2lmaWMgaW9jdGwtY2FsbHMsIGV0Yy4gQW55IHZvbHV0ZWVycz8KLQotLy8gdnhXb3Jrcy1hcm91bmQ6IDx0aW1lLmg+ICNkZWZpbmVzIENMT0NLU19QRVJfU0VDIGFzIHN5c0Nsa1JhdGVHZXQoKSBidXQKLS8vICAgICAgICAgICAgICAgICBtaXNlcmFibHkgZmFpbHMgdG8gI2luY2x1ZGUgdGhlIHJlcXVpcmVkIDxzeXNMaWIuaD4gdG8gbWFrZQotLy8gICAgICAgICAgICAgICAgIHN5c0Nsa1JhdGVHZXQoKSBhdmFpbGFibGUhIFNvIHdlIG1hbnVhbGx5IGluY2x1ZGUgaXQgaGVyZS4KLSNpZmRlZiBfX1JUUF9fCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jICBpbmNsdWRlIDxzeXNMaWIuaD4KLSNlbmRpZgotCi0vLyB2eFdvcmtzLWFyb3VuZDogSW4gPHN0ZGludC5oPiB0aGUgbWFjcm9zIElOVDMyX0MoKSwgVUlOVDMyX0MoKSwgSU5UNjRfQygpIGFuZAotLy8gICAgICAgICAgICAgICAgIFVJTlQ2NF9DKCkgYXJlIGRlZmluZWQgZXJyb3JuZW91c2x5LCB5aWVsZGluZyBub3QgYSBzaWduZWQvCi0vLyAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZy9sb25nIGxvbmcgdHlwZSwgYnV0IGEgc2lnbmVkL3Vuc2lnbmVkIGludC9sb25nCi0vLyAgICAgICAgICAgICAgICAgdHlwZS4gRXZlbnR1YWxseSB0aGlzIGxlYWRzIHRvIGNvbXBpbGUgZXJyb3JzIGluIHJhdGlvX2Z3ZC5ocHAsCi0vLyAgICAgICAgICAgICAgICAgd2hlbiB0cnlpbmcgdG8gZGVmaW5lIHNldmVyYWwgY29uc3RhbnRzIHdoaWNoIGRvIG5vdCBmaXQgaW50byBhCi0vLyAgICAgICAgICAgICAgICAgbG9uZyB0eXBlISBXZSBjb3JyZWN0IHRoZW0gaGVyZSBieSByZWRlZmluaW5nLgotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0KLS8vIFNvbWUgbWFjcm8tbWFnaWMgdG8gZG8gdGhlIGpvYgotI2RlZmluZSBWWF9KT0lOKFgsIFkpICAgICBWWF9ET19KT0lOKFgsIFkpCi0jZGVmaW5lIFZYX0RPX0pPSU4oWCwgWSkgIFZYX0RPX0pPSU4yKFgsIFkpCi0jZGVmaW5lIFZYX0RPX0pPSU4yKFgsIFkpIFgjI1kKLQotLy8gQ29ycmVjdGx5IHNldHVwIHRoZSBtYWNyb3MKLSN1bmRlZiAgSU5UMzJfQwotI3VuZGVmICBVSU5UMzJfQwotI3VuZGVmICBJTlQ2NF9DCi0jdW5kZWYgIFVJTlQ2NF9DCi0jZGVmaW5lIElOVDMyX0MoeCkgIFZYX0pPSU4oeCwgTCkKLSNkZWZpbmUgVUlOVDMyX0MoeCkgVlhfSk9JTih4LCBVTCkKLSNkZWZpbmUgSU5UNjRfQyh4KSAgVlhfSk9JTih4LCBMTCkKLSNkZWZpbmUgVUlOVDY0X0MoeCkgVlhfSk9JTih4LCBVTEwpCi0KLS8vICNpbmNsdWRlIExpYnJhcmllcyByZXF1aXJlZCBmb3IgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBhZGFwdGlvbgotI2luY2x1ZGUgPGlvTGliLmg+Ci0jaW5jbHVkZSA8dGlja0xpYi5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0KLS8vIFVzZSBDLWxpbmthZ2UgZm9yIHRoZSBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9ucwotZXh0ZXJuICJDIiB7Ci0KLS8vIHZ4V29ya3MtYXJvdW5kOiBUaGUgcmVxdWlyZWQgZnVuY3Rpb25zIGdldHJsaW1pdCgpIGFuZCBnZXRybGltaXQoKSBhcmUgbWlzc2luZy4KLS8vICAgICAgICAgICAgICAgICBCdXQgd2UgaGF2ZSB0aGUgc2ltaWxhciBmdW5jdGlvbnMgZ2V0cHJsaW1pdCgpIGFuZCBzZXRwcmxpbWl0KCksCi0vLyAgICAgICAgICAgICAgICAgd2hpY2ggbWF5IHNlcnZlIHRoZSBwdXJwb3NlLgotLy8gICAgICAgICAgICAgICAgIFByb2JsZW06IFRoZSB2eFdvcmtzLWRvY3VtZW50YXRpb24gcmVnYXJkaW5nIHRoZXNlIGZ1bmN0aW9ucwotLy8gICAgICAgICAgICAgICAgIGRvZXNuJ3QgZGVzZXJ2ZSBpdHMgbmFtZSEgSXQgaXNuJ3QgZG9jdW1lbnRlZCB3aGF0IHRoZSBmaXJzdCB0d28KLS8vICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIGlkdHlwZSBhbmQgaWQgbWVhbiwgc28gd2UgbXVzdCBmYWxsIGJhY2sgdG8gYW4gZWR1Y2F0ZWQKLS8vICAgICAgICAgICAgICAgICBndWVzcyAtIG51bGwsIGFyZ2guLi4gOi0vCi0KLS8vIFRPRE86IGdldHBybGltaXQoKSBhbmQgc2V0cHJsaW1pdCgpIGRvIGV4aXN0IGZvciBSVFBzIG9ubHksIGZvciB3aGF0ZXZlciByZWFzb24uCi0vLyAgICAgICBUaHVzIGZvciBES01zIHRoZXJlIHdvdWxkIGhhdmUgdG8gYmUgYW5vdGhlciBpbXBsZW1lbnRhdGlvbi4KLSNpZmRlZiBfX1JUUF9fCi0gIGlubGluZSBpbnQgZ2V0cmxpbWl0KGludCByZXNvdXJjZSwgc3RydWN0IHJsaW1pdCAqcmxwKXsKLSAgICByZXR1cm4gZ2V0cHJsaW1pdCgwLCAwLCByZXNvdXJjZSwgcmxwKTsKLSAgfQotCi0gIGlubGluZSBpbnQgc2V0cmxpbWl0KGludCByZXNvdXJjZSwgY29uc3Qgc3RydWN0IHJsaW1pdCAqcmxwKXsKLSAgICByZXR1cm4gc2V0cHJsaW1pdCgwLCAwLCByZXNvdXJjZSwgY29uc3RfY2FzdDxzdHJ1Y3QgcmxpbWl0Kj4ocmxwKSk7Ci0gIH0KLSNlbmRpZgotCi0vLyB2eFdvcmtzIGhhcyBmdHJ1bmNhdGUoKSBvbmx5LCBzbyB3ZSBkbyBzaW11bGF0ZSB0cnVuY2F0ZSgpOgotaW5saW5lIGludCB0cnVuY2F0ZShjb25zdCBjaGFyICpwLCBvZmZfdCBsKXsKLSAgaW50IGZkID0gb3BlbihwLCBPX1dST05MWSk7Ci0gIGlmIChmZCA9PSAtMSl7Ci0gICAgZXJybm8gPSBFQUNDRVM7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIGlmIChmdHJ1bmNhdGUoZmQsIGwpID09IC0xKXsKLSAgICBjbG9zZShmZCk7Ci0gICAgZXJybm8gPSBFQUNDRVM7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIHJldHVybiBjbG9zZShmZCk7Ci19Ci0KLS8vIEZha2Ugc3ltbGluayBoYW5kbGluZyBieSBkdW1teSBmdW5jdGlvbnM6Ci1pbmxpbmUgaW50IHN5bWxpbmsoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKXsKLSAgLy8gdnhXb3JrcyBoYXMgbm8gc3ltbGlua3MgLT4gYWx3YXlzIHJldHVybiBhbiBlcnJvciEKLSAgZXJybm8gPSBFQUNDRVM7Ci0gIHJldHVybiAtMTsKLX0KLQotaW5saW5lIHNzaXplX3QgcmVhZGxpbmsoY29uc3QgY2hhciosIGNoYXIqLCBzaXplX3QpewotICAvLyB2eFdvcmtzIGhhcyBubyBzeW1saW5rcyAtPiBhbHdheXMgcmV0dXJuIGFuIGVycm9yIQotICBlcnJubyA9IEVBQ0NFUzsKLSAgcmV0dXJuIC0xOwotfQotCi0vLyB2eFdvcmtzIGNsYWltcyB0byBpbXBsZW1lbnQgZ2V0dGltZW9mZGF5IGluIHN5cy90aW1lLmgKLS8vIGJ1dCBuZXZlcnRoZWxlc3MgZG9lcyBub3QgcHJvdmlkZSBpdCEgU2VlCi0vLyBodHRwczovL3N1cHBvcnQud2luZHJpdmVyLmNvbS9vbHNQb3J0YWwvZmFjZXMvbWFpbnRlbmFuY2UvdGVjaHRpcERldGFpbF9ub0hlYWRlci5qc3B4P2RvY0lkPTE2NDQyJmNvbnRlbnRJZD1XUl9URUNIVElQXzAwNjI1NgotLy8gV2UgaW1wbGVtZW50IGEgc3Vycm9nYXRlIHZlcnNpb24gaGVyZSB2aWEgY2xvY2tfZ2V0dGltZToKLWlubGluZSBpbnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0diwgdm9pZCAqIC8qdHp2Ki8pIHsKLSAgc3RydWN0IHRpbWVzcGVjIHRzOwotICBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRzKTsKLSAgdHYtPnR2X3NlYyAgPSB0cy50dl9zZWM7Ci0gIHR2LT50dl91c2VjID0gdHMudHZfbnNlYyAvIDEwMDA7Ci0gIHJldHVybiAwOwotfQotCi0vLyB2eFdvcmtzIGRvZXMgcHJvdmlkZSBuZWl0aGVyIHN0cnVjdCB0bXMgbm9yIGZ1bmN0aW9uIHRpbWVzKCkhCi0vLyBXZSBpbXBsZW1lbnQgYW4gZW1wdHkgZHVtbXktZnVuY3Rpb24sIHNpbXBseSBzZXR0aW5nIHRoZSB1c2VyCi0vLyBhbmQgc3lzdGVtIHRpbWUgdG8gdGhlIGhhbGYgb2YgdGhldyBhY3R1YWwgc3lzdGVtIHRpY2tzLXZhbHVlCi0vLyBhbmQgdGhlIGNoaWxkIHVzZXIgYW5kIHN5c3RlbSB0aW1lIHRvIDAuCi0vLyBSYXRoZXIgdWdseSBidXQgYXQgbGVhc3QgaXQgc3VwcHJlc3NlcyBjb21waWxlciBlcnJvcnMuLi4KLS8vIFVuZm9ydHVuYXRlbHksIHRoaXMgb2YgY291cnNlICpkb2VzKiBoYXZlIGFuIHNldmVyZSBpbXBhY3Qgb24KLS8vIGRlcGVuZGFudCBsaWJyYXJpZXMsIGFjdHVhbGx5IHRoaXMgaXMgY2hyb25vIG9ubHkhIEhlcmUgaXQgd2lsbAotLy8gbm90IGJlIHBvc3NpYmxlIHRvIGNvcnJlY3RseSB1c2UgdXNlciBhbmQgc3lzdGVtIHRpbWVzISBCdXQKLS8vIGFzIHZ4V29ya3MgaXMgbGFja2luZyB0aGUgYWJpbGl0eSB0byBjYWxjdWxhdGUgdXNlciBhbmQgc3lzdGVtCi0vLyBwcm9jZXNzIHRpbWVzIHRoZXJlIHNlZW1zIHRvIGJlIG5vIG90aGVyIHBvc3NpYmxlIHNvbHV0aW9uLgotc3RydWN0IHRtc3sKLSAgY2xvY2tfdCB0bXNfdXRpbWU7ICAvLyBVc2VyIENQVSB0aW1lCi0gIGNsb2NrX3QgdG1zX3N0aW1lOyAgLy8gU3lzdGVtIENQVSB0aW1lCi0gIGNsb2NrX3QgdG1zX2N1dGltZTsgLy8gVXNlciBDUFUgdGltZSBvZiB0ZXJtaW5hdGVkIGNoaWxkIHByb2Nlc3NlcwotICBjbG9ja190IHRtc19jc3RpbWU7IC8vIFN5c3RlbSBDUFUgdGltZSBvZiB0ZXJtaW5hdGVkIGNoaWxkIHByb2Nlc3NlcwotfTsKLQotaW5saW5lIGNsb2NrX3QgdGltZXMoc3RydWN0IHRtcyAqdCl7Ci0gIHN0cnVjdCB0aW1lc3BlYyB0czsKLSAgY2xvY2tfZ2V0dGltZShDTE9DS19USFJFQURfQ1BVVElNRV9JRCwgJnRzKTsKLSAgY2xvY2tfdCB0aWNrcyhzdGF0aWNfY2FzdDxjbG9ja190PihzdGF0aWNfY2FzdDxkb3VibGU+KHRzLnR2X3NlYykgICogQ0xPQ0tTX1BFUl9TRUMgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4odHMudHZfbnNlYykgKiBDTE9DS1NfUEVSX1NFQyAvIDEwMDAwMDAuMCkpOwotICB0LT50bXNfdXRpbWUgID0gdGlja3MvMlU7Ci0gIHQtPnRtc19zdGltZSAgPSB0aWNrcy8yVTsKLSAgdC0+dG1zX2N1dGltZSA9IDA7IC8vIHZ4V29ya3MgaXMgbGFja2luZyB0aGUgY29uY2VwdCBvZiBhIGNoaWxkIHByb2Nlc3MhCi0gIHQtPnRtc19jc3RpbWUgPSAwOyAvLyAtPiBTZXQgdGhlIHdhaXQgdGltZXMgZm9yIGNoaWxkcyB0byAwCi0gIHJldHVybiB0aWNrczsKLX0KLQotfSAvLyBleHRlcm4gIkMiCi0KLS8vIFB1dCB0aGUgc2VsZm1hZGUgZnVuY3Rpb25zIGludG8gdGhlIHN0ZC1uYW1lc3BhY2UsIGp1c3QgaW4gY2FzZQotbmFtZXNwYWNlIHN0ZCB7Ci0jIGlmZGVmIF9fUlRQX18KLSAgICB1c2luZyA6OmdldHJsaW1pdDsKLSAgICB1c2luZyA6OnNldHJsaW1pdDsKLSMgZW5kaWYKLSAgdXNpbmcgOjp0cnVuY2F0ZTsKLSAgdXNpbmcgOjpzeW1saW5rOwotICB1c2luZyA6OnJlYWRsaW5rOwotICB1c2luZyA6OnRpbWVzOwotICB1c2luZyA6OmdldHRpbWVvZmRheTsKLX0KLQotLy8gU29tZSBtb3JlIG1hY3JvLW1hZ2ljOgotLy8gdnhXb3Jrcy1hcm91bmQ6IFNvbWUgZnVuY3Rpb25zIGFyZSBub3QgcHJlc2VudCBvciBicm9rZW4gaW4gdnhXb3JrcwotLy8gICAgICAgICAgICAgICAgIGJ1dCBtYXkgYmUgcGF0Y2hlZCB0byBsaWZlIHZpYSBoZWxwZXIgbWFjcm9zLi4uCi0KLS8vIEluY2x1ZGUgc2lnbmFsLmggd2hpY2ggbWlnaHQgY29udGFpbiBhIHR5cG8gdG8gYmUgY29ycmVjdGVkIGhlcmUKLSNpbmNsdWRlIDxzaWduYWwuaD4KLQotI2RlZmluZSBnZXRwYWdlc2l6ZSgpICAgIHN5c2NvbmYoX1NDX1BBR0VTSVpFKSAgICAgICAgIC8vIGdldHBhZ2VzaXplIGlzIGRlcHJlY2F0ZWQgYW55d2F5IQotI2lmbmRlZiBTX0lTU09DSwotIyAgZGVmaW5lIFNfSVNTT0NLKG1vZGUpICgobW9kZSAmIFNfSUZNVCkgPT0gU19JRlNPQ0spIC8vIElzIGZpbGUgYSBzb2NrZXQ/Ci0jZW5kaWYKLSNkZWZpbmUgbHN0YXQocCwgYikgICAgICBzdGF0KHAsIGIpICAgICAgICAgICAgICAgICAgICAvLyBsc3RhdCgpID09IHN0YXQoKSwgYXMgdnhXb3JrcyBoYXMgbm8gc3ltbGlua3MhCi0jaWZuZGVmIEZQRV9GTFRJTlYKLSMgIGRlZmluZSBGUEVfRkxUSU5WICAgICAoRlBFX0ZMVFNVQisxKSAgICAgICAgICAgICAgICAvLyB2eFdvcmtzIGhhcyBubyBGUEVfRkxUSU5WLCBzbyBkZWZpbmUgb25lIGFzIGEgZHVtbXkKLSNlbmRpZgotI2lmICFkZWZpbmVkKEJVU19BRFJBTE4pICYmIGRlZmluZWQoQlVTX0FEUkFMTlIpCi0jICBkZWZpbmUgQlVTX0FEUkFMTiAgICAgQlVTX0FEUkFMTlIgICAgICAgICAgICAgICAgICAgLy8gQ29ycmVjdCBhIHN1cHBvc2VkIHR5cG8gaW4gdnhXb3JrcycgPHNpZ25hbC5oPgotI2VuZGlmCi0vL3R5cGVkZWYgaW50ICAgICAgICAgICAgICBsb2NhbGVfdDsgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhbGVfdCBpcyBhIFBPU0lYLWV4dGVuc2lvbiwgY3VycmVudGx5IHVucHJlc2VudCBpbiB2eFdvcmtzIQotCi0vLyAjaW5jbHVkZSBib2lsZXJwbGF0ZSBjb2RlOgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9wb3NpeF9mZWF0dXJlcy5ocHA+Ci0KLS8vIHZ4V29ya3MgbGllcyBhYm91dCBYU0kgY29uZm9ybWFuY2UsIHRoZXJlIGlzIG5vIG5sX3R5cGVzLmg6Ci0jdW5kZWYgTkROQk9PU1RfSEFTX05MX1RZUEVTX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3dpbjMyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0ZTFkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS93aW4zMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmlsbCBLZW1wZiAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBSZW5lIFJpdmVyYSAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFdpbjMyIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zOgotCi0jZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJXaW4zMiIKLQotLy8gIEdldCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIE1pbkdXIHJ1bnRpbWUsIGkuZS4gX19NSU5HVzMyXypWRVJTSU9OLgotI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCi0jICBpbmNsdWRlIDxfbWluZ3cuaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1dQUklOVEYpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSNlbmRpZgotCi0vLyAgRGVmYXVsdCBkZWZpbmVzIGZvciBORE5CT09TVF9TWU1CT0xfRVhQT1JUIGFuZCBORE5CT09TVF9TWU1CT0xfSU1QT1JUCi0vLyAgSWYgYSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgX19kZWNsc3BlYyhkbGxleHBvcnQpL19fZGVjbHNwZWMoZGxsaW1wb3J0KSwKLS8vICBpdHMgbmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyLyBmaWxlIG11c3QgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQgYW5kCi0vLyAgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotI2lmbmRlZiBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0RFQ0xTUEVDCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAoKF9fTUlOR1czMl9NQUpPUl9WRVJTSU9OID4gMikgfHwgKChfX01JTkdXMzJfTUFKT1JfVkVSU0lPTiA9PSAyKSAmJiAoX19NSU5HVzMyX01JTk9SX1ZFUlNJT04gPj0gMCkpKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgaWZuZGVmIF9fU1REQ19MSU1JVF9NQUNST1MKLSMgICAgIGRlZmluZSBfX1NURENfTElNSVRfTUFDUk9TCi0jICBlbmRpZgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19ESVJFTlRfSAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAoX19HTlVDX18gPj0gNCkKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTTEKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfTE9HMVAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZCi0jZW5kaWYKLS8vCi0vLyBXaW4zMiB3aWxsIG5vcm1hbGx5IGJlIHVzaW5nIG5hdGl2ZSBXaW4zMiB0aHJlYWRzLAotLy8gYnV0IHRoZXJlIGlzIGEgcHRocmVhZCBsaWJyYXJ5IGF2YWxpYWJsZSBhcyBhbiBvcHRpb24sCi0vLyB3ZSB1c2VkIHRvIGRpc2FibGUgdGhpcyB3aGVuIE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIgd2FzIAotLy8gZGVmaW5lZCBidXQgbm8gbG9uZ2VyIC0gdGhpcyBzaG91bGQgYWxsb3cgc29tZQotLy8gZmlsZXMgdG8gYmUgY29tcGlsZWQgaW4gc3RyaWN0IG1vZGUgLSB3aGlsZSBtYWludGFpbmluZwotLy8gYSBjb25zaXN0ZW50IHNldHRpbmcgb2YgTkROQk9PU1RfSEFTX1RIUkVBRFMgYWNyb3NzCi0vLyBhbGwgdHJhbnNsYXRpb24gdW5pdHMgKG5lZWRlZCBmb3Igc2hhcmVkX3B0ciBldGMpLgotLy8KLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSMgIGRlZmluZSBORE5CT09TVF9OT19BTlNJX0FQSVMKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0dFVFNZU1RFTVRJTUVBU0ZJTEVUSU1FCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfV0lOVEhSRUFEUwotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfRElTQUJMRV9XSU4zMgotLy8gV0VLOiBBZGRlZAotI2RlZmluZSBORE5CT09TVF9IQVNfRlRJTUUKLSNkZWZpbmUgTkROQk9PU1RfV0lORE9XUyAxCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmNjNzI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vIEFsbCBQT1NJWCBmZWF0dXJlIHRlc3RzIGdvIGluIHRoaXMgZmlsZSwKLS8vIE5vdGUgdGhhdCB3ZSB0ZXN0IF9QT1NJWF9DX1NPVVJDRSBhbmQgX1hPUEVOX1NPVVJDRSBhcyB3ZWxsCi0vLyBfUE9TSVhfVkVSU0lPTiBhbmQgX1hPUEVOX1ZFUlNJT046IG9uIHNvbWUgc3lzdGVtcyBQT1NJWCBBUEkncwotLy8gbWF5IGJlIHByZXNlbnQgYnV0IG5vbmUtZnVuY3Rpb25hbCB1bmxlc3MgX1BPU0lYX0NfU09VUkNFIGFuZAotLy8gX1hPUEVOX1NPVVJDRSBoYXZlIGJlZW4gZGVmaW5lZCB0byB0aGUgcmlnaHQgdmFsdWUgKGl0J3MgdXAKLS8vIHRvIHRoZSB1c2VyIHRvIGRvIHRoaXMgKmJlZm9yZSogaW5jbHVkaW5nIGFueSBoZWFkZXIsIGFsdGhvdWdoCi0vLyBpbiBtb3N0IGNhc2VzIHRoZSBjb21waWxlciB3aWxsIGRvIHRoaXMgZm9yIHlvdSkuCi0KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1VOSVNURF9IKQotIyAgICAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSAgICAgIC8vIFhPcGVuIGhhcyA8bmxfdHlwZXMuaD4sIGJ1dCBpcyB0aGlzIHRoZSBjb3JyZWN0IHZlcnNpb24gY2hlY2s/Ci0jICAgICBpZiBkZWZpbmVkKF9YT1BFTl9WRVJTSU9OKSAmJiAoX1hPUEVOX1ZFUlNJT04gPj0gMykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfTkxfVFlQRVNfSAotIyAgICAgZW5kaWYKLQotICAgICAgLy8gUE9TSVggdmVyc2lvbiA2IHJlcXVpcmVzIDxzdGRpbnQuaD4KLSMgICAgIGlmIGRlZmluZWQoX1BPU0lYX1ZFUlNJT04pICYmIChfUE9TSVhfVkVSU0lPTiA+PSAyMDAxMDApCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NURElOVF9ICi0jICAgICBlbmRpZgotCi0gICAgICAvLyBQT1NJWCB2ZXJzaW9uIDIgcmVxdWlyZXMgPGRpcmVudC5oPgotIyAgICAgaWYgZGVmaW5lZChfUE9TSVhfVkVSU0lPTikgJiYgKF9QT1NJWF9WRVJTSU9OID49IDE5OTAwOUwpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0RJUkVOVF9ICi0jICAgICBlbmRpZgotCi0gICAgICAvLyBQT1NJWCB2ZXJzaW9uIDMgcmVxdWlyZXMgPHNpZ25hbC5oPiB0byBoYXZlIHNpZ2FjdGlvbjoKLSMgICAgIGlmIGRlZmluZWQoX1BPU0lYX1ZFUlNJT04pICYmIChfUE9TSVhfVkVSU0lPTiA+PSAxOTk1MDZMKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TSUdBQ1RJT04KLSMgICAgIGVuZGlmCi0gICAgICAvLyBQT1NJWCBkZWZpbmVzIF9QT1NJWF9USFJFQURTID4gMCBmb3IgcHRocmVhZCBzdXBwb3J0LAotICAgICAgLy8gaG93ZXZlciBzb21lIHBsYXRmb3JtcyBkZWZpbmUgX1BPU0lYX1RIUkVBRFMgd2l0aG91dAotICAgICAgLy8gYSB2YWx1ZSwgaGVuY2UgdGhlIChfUE9TSVhfVEhSRUFEUyswID49IDApIGNoZWNrLgotICAgICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcgdGhpcyBtYXkgY2F0Y2ggcGxhdGZvcm1zIHdpdGggYQotICAgICAgLy8gbm9uLWZ1bmN0aW9uaW5nIHN0dWIgPHB0aHJlYWRzLmg+LCBidXQgc3VjaCBvY2N1cnJlbmNlcyBzaG91bGQKLSAgICAgIC8vIG9jY3VyIHZlcnkgcmFyZWx5IGlmIGF0IGFsbC4KLSMgICAgIGlmIGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIChfUE9TSVhfVEhSRUFEUyswID49IDApICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfTVBUQVNLUykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgICAgIGVuZGlmCi0KLSAgICAgIC8vIE5ETkJPT1NUX0hBU19OQU5PU0xFRVA6Ci0gICAgICAvLyBUaGlzIGlzIHByZWRpY2F0ZWQgb24gX1BPU0lYX1RJTUVSUyBvciBfWE9QRU5fUkVBTFRJTUU6Ci0jICAgICBpZiAoZGVmaW5lZChfUE9TSVhfVElNRVJTKSAmJiAoX1BPU0lYX1RJTUVSUyswID49IDApKSBcCi0gICAgICAgICAgICAgfHwgKGRlZmluZWQoX1hPUEVOX1JFQUxUSU1FKSAmJiAoX1hPUEVOX1JFQUxUSU1FKzAgPj0gMCkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05BTk9TTEVFUAotIyAgICAgZW5kaWYKLQotICAgICAgLy8gTkROQk9PU1RfSEFTX0NMT0NLX0dFVFRJTUU6Ci0gICAgICAvLyBUaGlzIGlzIHByZWRpY2F0ZWQgb24gX1BPU0lYX1RJTUVSUyAoYWxzbyBvbiBfWE9QRU5fUkVBTFRJTUUKLSAgICAgIC8vIGJ1dCBhdCBsZWFzdCBvbmUgcGxhdGZvcm0gLSBsaW51eCAtIGRlZmluZXMgdGhhdCBmbGFnIHdpdGhvdXQKLSAgICAgIC8vIGRlZmluaW5nIGNsb2NrX2dldHRpbWUpOgotIyAgICAgaWYgKGRlZmluZWQoX1BPU0lYX1RJTUVSUykgJiYgKF9QT1NJWF9USU1FUlMrMCA+PSAwKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfQ0xPQ0tfR0VUVElNRQotIyAgICAgZW5kaWYKLQotICAgICAgLy8gTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxEOgotICAgICAgLy8gVGhpcyBpcyBwcmVkaWNhdGVkIG9uIF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HIG9yCi0gICAgICAvLyBvbiBfUE9TSVhfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgb3Igb24gX1hPUEVOX1JFQUxUSU1FLgotIyAgICAgaWYgZGVmaW5lZChfUE9TSVhfUFJJT1JJVFlfU0NIRURVTElORykgJiYgKF9QT1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HKzAgPiAwKVwKLSAgICAgICAgICAgIHx8IChkZWZpbmVkKF9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORykgJiYgKF9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyswID4gMCkpXAotICAgICAgICAgICAgfHwgKGRlZmluZWQoX1hPUEVOX1JFQUxUSU1FKSAmJiAoX1hPUEVOX1JFQUxUSU1FKzAgPj0gMCkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1NDSEVEX1lJRUxECi0jICAgICBlbmRpZgotCi0gICAgICAvLyBORE5CT09TVF9IQVNfR0VUVElNRU9GREFZOgotICAgICAgLy8gTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEU6Ci0gICAgICAvLyBUaGVzZSBhcmUgcHJlZGljYXRlZCBvbiBfWE9QRU5fVkVSU0lPTiwgYW5kIGFwcGVhcnMgdG8gYmUgZmlyc3QgcmVsZWFzZWQKLSAgICAgIC8vIGluIGlzc3VlIDQsIHZlcnNpb24gMiAoX1hPUEVOX1ZFUlNJT04gPiA1MDApLgotICAgICAgLy8gTGlrZXdpc2UgZm9yIHRoZSBmdW5jdGlvbnMgbG9nMXAgYW5kIGV4cG0xLgotIyAgICAgaWYgZGVmaW5lZChfWE9QRU5fVkVSU0lPTikgJiYgKF9YT1BFTl9WRVJTSU9OKzAgPj0gNTAwKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19HRVRUSU1FT0ZEQVkKLSMgICAgICAgIGlmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UrMCA+PSA1MDApCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1BUSFJFQURfTVVURVhBVFRSX1NFVFRZUEUKLSMgICAgICAgIGVuZGlmCi0jICAgICAgICBpZm5kZWYgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0xPRzFQCi0jICAgICAgICBlbmRpZgotIyAgICAgICAgaWZuZGVmIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19FWFBNMQotIyAgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0KLSMgIGVuZGlmCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3JlcXVpcmVzX3RocmVhZHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcmVxdWlyZXNfdGhyZWFkcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNzkzYTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvcmVxdWlyZXNfdGhyZWFkcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMy4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1JFUVVJUkVTX1RIUkVBRFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NPTkZJR19SRVFVSVJFU19USFJFQURTX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX0NPTkZJR19IUFAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9USFJFQURTKQotCi0vLwotLy8gc3BlY2lhbCBjYXNlIHRvIGhhbmRsZSB2ZXJzaW9ucyBvZiBnY2Mgd2hpY2ggZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgdGhyZWFkczoKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA8IDMpIHx8IChfX0dOVUNfTUlOT1JfXyA8PSAzKSB8fCAhZGVmaW5lZChORE5CT09TVF9TVFJJQ1RfQ09ORklHKSkKLS8vCi0vLyB0aGlzIGlzIGNoZWNrZWQgdXAgdG8gZ2NjIDMuMzoKLS8vCi0jaWYgZGVmaW5lZChfX3NnaSkgfHwgZGVmaW5lZChfX2hwdXgpCi0jICBlcnJvciAiTXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgZ2NjIG9uIEhQVVggb3IgSXJpeCAobGFzdCBjaGVja2VkIHdpdGggZ2NjIDMuMykiCi0jZW5kaWYKLQotI2VuZGlmCi0KLSMgIGVycm9yICJUaHJlYWRpbmcgc3VwcG9ydCB1bmF2YWxpYWJsZTogaXQgaGFzIGJlZW4gZXhwbGljaXRseSBkaXNhYmxlZCB3aXRoIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyIKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1RIUkVBRFMpCi0KLSMgaWYgZGVmaW5lZCBfX0NPTU9fXwotLy8gIENvbWVhdSBDKysKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiAtRF9NVCAoV2luZG93cykgb3IgLURfUkVFTlRSQU5UIChVbml4KSIKLQotI2VsaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fSUNMKSB8fCBkZWZpbmVkKF9fSUNDKSB8fCBkZWZpbmVkKF9fRUNDKQotLy8gIEludGVsCi0jaWZkZWYgX1dJTjMyCi0jICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiBlaXRoZXIgL01UIC9NVGQgL01EIG9yIC9NRGQiCi0jZWxzZQotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1vcGVubXAiCi0jZW5kaWYKLQotIyBlbGlmIGRlZmluZWQgX19HTlVDX18KLS8vICBHTlUgQysrOgotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1wdGhyZWFkIChMaW51eCksIC1wdGhyZWFkcyAoU29sYXJpcykgb3IgLW10aHJlYWRzIChNaW5ndzMyKSIKLQotI2VsaWYgZGVmaW5lZCBfX3NnaQotLy8gIFNHSSBNSVBTcHJvIEMrKwotIyAgIGVycm9yICJDb21waWxlciB0aHJlYWRpbmcgc3VwcG9ydCBpcyBub3QgdHVybmVkIG9uLiBQbGVhc2Ugc2V0IHRoZSBjb3JyZWN0IGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aHJlYWRpbmc6IC1EX1NHSV9NUF9TT1VSQ0UiCi0KLSNlbGlmIGRlZmluZWQgX19ERUNDWFgKLS8vICBDb21wYXEgVHJ1NjQgVW5peCBjeHgKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiAtcHRocmVhZCIKLQotI2VsaWYgZGVmaW5lZCBfX0JPUkxBTkRDX18KLS8vICBCb3JsYW5kCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLXRXTSIKLQotI2VsaWYgZGVmaW5lZCAgX19NV0VSS1NfXwotLy8gIE1ldHJvd2Vya3MgQ29kZVdhcnJpb3IKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIHNldCB0aGUgY29ycmVjdCBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhyZWFkaW5nOiBlaXRoZXIgLXJ1bnRpbWUgc20sIC1ydW50aW1lIHNtZCwgLXJ1bnRpbWUgZG0sIG9yIC1ydW50aW1lIGRtZCIKLQotI2VsaWYgZGVmaW5lZCAgX19TVU5QUk9fQ0MKLS8vICBTdW4gV29ya3Nob3AgQ29tcGlsZXIgQysrCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLW10IgotCi0jZWxpZiBkZWZpbmVkIF9fSFBfYUNDCi0vLyAgSFAgYUNDCi0jICAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogLW10IgotCi0jZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pCi0vLyAgSUJNIFZpc3VhbCBBZ2UKLSMgICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gUGxlYXNlIGNvbXBpbGUgdGhlIGNvZGUgd2l0aCB0aGUgeGxDX3IgY29tcGlsZXIiCi0KLSNlbGlmIGRlZmluZWQgX01TQ19WRVIKLS8vICBNaWNyb3NvZnQgVmlzdWFsIEMrKwotLy8KLS8vICBNdXN0IHJlbWFpbiB0aGUgbGFzdCAjZWxpZiBzaW5jZSBzb21lIG90aGVyIHZlbmRvcnMgKE1ldHJvd2Vya3MsIGZvcgotLy8gIGV4YW1wbGUpIGFsc28gI2RlZmluZSBfTVNDX1ZFUgotIyAgZXJyb3IgIkNvbXBpbGVyIHRocmVhZGluZyBzdXBwb3J0IGlzIG5vdCB0dXJuZWQgb24uIFBsZWFzZSBzZXQgdGhlIGNvcnJlY3QgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRocmVhZGluZzogZWl0aGVyIC9NVCAvTVRkIC9NRCBvciAvTURkIgotCi0jZWxzZQotCi0jICBlcnJvciAiQ29tcGlsZXIgdGhyZWFkaW5nIHN1cHBvcnQgaXMgbm90IHR1cm5lZCBvbi4gIFBsZWFzZSBjb25zdWx0IHlvdXIgY29tcGlsZXIncyBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyB0byB1c2UiCi0KLSNlbmRpZiAvLyBjb21waWxlcnMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0hBU19USFJFQURTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9DT05GSUdfUkVRVUlSRVNfVEhSRUFEU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3NlbGVjdF9jb21waWxlcl9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X2NvbXBpbGVyX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGFmMmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X2NvbXBpbGVyX2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gIEJvb3N0IGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc2VsZWN0aW9uIGhlYWRlciBmaWxlCi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxIC0gMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXJ0aW4gV2lsbGUgMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEd1aWxsYXVtZSBNZWxxdWlvbmQgMjAwMy4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnLyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gbG9jYXRlIHdoaWNoIGNvbXBpbGVyIHdlIGFyZSB1c2luZyBhbmQgZGVmaW5lCi0vLyBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgYXMgbmVlZGVkOiAKLQotI2lmIGRlZmluZWQoX19HQ0NYTUxfXykKLS8vIEdDQy1YTUwgZW11bGF0ZXMgb3RoZXIgY29tcGlsZXJzLCBpdCBoYXMgdG8gYXBwZWFyIGZpcnN0IGhlcmUhCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djY194bWwuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9DUkFZQykKLS8vIEVERyBiYXNlZCBDcmF5IGNvbXBpbGVyOgotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jcmF5LmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX0NVREFDQ19fCi0vLyAgTlZJRElBIENVREEgQysrIGNvbXBpbGVyIGZvciBHUFUKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvbnZjYy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19DT01PX18KLS8vICBDb21lYXUgQysrCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbWVhdS5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19QQVRIU0NBTEVfXykgJiYgKF9fUEFUSENDX18gPj0gNCkKLS8vIFBhdGhTY2FsZSBFS09QYXRoIGNvbXBpbGVyIChoYXMgdG8gY29tZSBiZWZvcmUgY2xhbmcgYW5kIGdjYykKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvcGF0aHNjYWxlLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fSUNMKSB8fCBkZWZpbmVkKF9fSUNDKSB8fCBkZWZpbmVkKF9fRUNDKQotLy8gIEludGVsCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2ludGVsLmhwcCIKLQotI2VsaWYgZGVmaW5lZCBfX2NsYW5nX18KLS8vICBDbGFuZyBDKysgZW11bGF0ZXMgR0NDLCBzbyBpdCBoYXMgdG8gYXBwZWFyIGVhcmx5LgotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jbGFuZy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19ETUNfXwotLy8gIERpZ2l0YWwgTWFycyBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvZGlnaXRhbG1hcnMuaHBwIgotCi0jIGVsaWYgZGVmaW5lZCBfX0dOVUNfXwotLy8gIEdOVSBDKys6Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2djYy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19LQ0MKLS8vICBLYWkgQysrCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2thaS5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19zZ2kKLS8vICBTR0kgTUlQU3BybyBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvc2dpX21pcHNwcm8uaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fREVDQ1hYCi0vLyAgQ29tcGFxIFRydTY0IFVuaXggY3h4Ci0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2NvbXBhcV9jeHguaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fZ2hzCi0vLyAgR3JlZW5oaWxscyBDKysKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvZ3JlZW5oaWxscy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19DT0RFR0VBUkNfXwotLy8gIENvZGVHZWFyIC0gbXVzdCBiZSBjaGVja2VkIGZvciBiZWZvcmUgQm9ybGFuZAotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9jb2RlZ2Vhci5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX19CT1JMQU5EQ19fCi0vLyAgQm9ybGFuZAotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9ib3JsYW5kLmhwcCIKLQotI2VsaWYgZGVmaW5lZCAgX19NV0VSS1NfXwotLy8gIE1ldHJvd2Vya3MgQ29kZVdhcnJpb3IKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvbWV0cm93ZXJrcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQgIF9fU1VOUFJPX0NDCi0vLyAgU3VuIFdvcmtzaG9wIENvbXBpbGVyIEMrKwotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci9zdW5wcm9fY2MuaHBwIgotCi0jZWxpZiBkZWZpbmVkIF9fSFBfYUNDCi0vLyAgSFAgYUNDCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL2hwX2FjYy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19NUkNfXykgfHwgZGVmaW5lZChfX1NDX18pCi0vLyAgTVBXIE1yQ3BwIG9yIFNDcHAKLSMgICBkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfQ09ORklHICJuZG5ib29zdC9jb25maWcvY29tcGlsZXIvbXB3LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKQotLy8gIElCTSBWaXN1YWwgQWdlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3ZhY3BwLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX1BHSSkKLS8vICBQb3J0bGFuZCBHcm91cCBJbmMuCi0jICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL2NvbXBpbGVyL3BnaS5ocHAiCi0KLSNlbGlmIGRlZmluZWQgX01TQ19WRVIKLS8vICBNaWNyb3NvZnQgVmlzdWFsIEMrKwotLy8KLS8vICBNdXN0IHJlbWFpbiB0aGUgbGFzdCAjZWxpZiBzaW5jZSBzb21lIG90aGVyIHZlbmRvcnMgKE1ldHJvd2Vya3MsIGZvcgotLy8gIGV4YW1wbGUpIGFsc28gI2RlZmluZSBfTVNDX1ZFUgotIyAgIGRlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9jb21waWxlci92aXN1YWxjLmhwcCIKLQotI2VsaWYgZGVmaW5lZCAoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLS8vIHRoaXMgbXVzdCBjb21lIGxhc3QgLSBnZW5lcmF0ZSBhbiBlcnJvciBpZiB3ZSBkb24ndAotLy8gcmVjb2duaXNlIHRoZSBjb21waWxlcjoKLSMgIGVycm9yICJVbmtub3duIGNvbXBpbGVyIC0gcGxlYXNlIGNvbmZpZ3VyZSAoaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25maWcvY29uZmlnLmh0bSNjb25maWd1cmluZykgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyB0byB0aGUgbWFpbiBib29zdCBtYWlsaW5nIGxpc3QgKGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvbWFpbGluZ19saXN0cy5odG0jbWFpbikiCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X3BsYXRmb3JtX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3RfcGxhdGZvcm1fY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA0Mzg3MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zZWxlY3RfcGxhdGZvcm1fY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vLyAgQm9vc3QgY29tcGlsZXIgY29uZmlndXJhdGlvbiBzZWxlY3Rpb24gaGVhZGVyIGZpbGUKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gbG9jYXRlIHdoaWNoIHBsYXRmb3JtIHdlIGFyZSBvbiBhbmQgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyBhcyBuZWVkZWQuCi0vLyBOb3RlIHRoYXQgd2UgZGVmaW5lIHRoZSBoZWFkZXJzIHRvIGluY2x1ZGUgdXNpbmcgImhlYWRlcl9uYW1lIiBub3QKLS8vIDxoZWFkZXJfbmFtZT4gaW4gb3JkZXIgdG8gcHJldmVudCBtYWNybyBleHBhbnNpb24gd2l0aGluIHRoZSBoZWFkZXIKLS8vIG5hbWUgKGZvciBleGFtcGxlICJsaW51eCIgaXMgYSBtYWNybyBvbiBsaW51eCBzeXN0ZW1zKS4KLQotI2lmIChkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fbGludXgpIHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fR05VX18pIHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgIWRlZmluZWQoX0NSQVlDKQotLy8gbGludXgsIGFsc28gb3RoZXIgcGxhdGZvcm1zIChIdXJkIGV0YykgdGhhdCB1c2UgR0xJQkMsIHNob3VsZCB0aGVzZSByZWFsbHkgaGF2ZSB0aGVpciBvd24gY29uZmlnIGhlYWRlcnMgdGhvdWdoPwotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2xpbnV4LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0vLyBCU0Q6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYnNkLmhwcCIKLQotI2VsaWYgZGVmaW5lZChzdW4pIHx8IGRlZmluZWQoX19zdW4pCi0vLyBzb2xhcmlzOgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3NvbGFyaXMuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fc2dpKQotLy8gU0dJIElyaXg6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vaXJpeC5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19ocHV4KQotLy8gaHAgdW5peDoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9ocHV4LmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQotLy8gY3lnd2luIGlzIG5vdCB3aW4zMjoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jeWd3aW4uaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoV0lOMzIpCi0vLyB3aW4zMjoKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS93aW4zMi5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19CRU9TX18pCi0vLyBCZU9TCi0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vYmVvcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pCi0vLyBNYWNPUwotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL21hY29zLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9BSVgpCi0vLyBJQk0KLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9haXguaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQotLy8gQW1pZ2FPUwotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL2FtaWdhb3MuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fUU5YTlRPX18pCi0vLyBRTlg6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vcW54bnRvLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX1ZYV09SS1NfXykKLS8vIHZ4V29ya3M6Ci0jICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk1fQ09ORklHICJuZG5ib29zdC9jb25maWcvcGxhdGZvcm0vdnh3b3Jrcy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgCi0vLyBTeW1iaWFuOiAKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9zeW1iaWFuLmhwcCIgCi0KLSNlbGlmIGRlZmluZWQoX0NSQVlDKQotLy8gQ3JheToKLSMgIGRlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9wbGF0Zm9ybS9jcmF5LmhwcCIgCi0KLSNlbGlmIGRlZmluZWQoX19WTVMpIAotLy8gVk1TOgotIyAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3BsYXRmb3JtL3Ztcy5ocHAiIAotI2Vsc2UKLQotIyAgaWYgZGVmaW5lZCh1bml4KSBcCi0gICAgICB8fCBkZWZpbmVkKF9fdW5peCkgXAotICAgICAgfHwgZGVmaW5lZChfWE9QRU5fU09VUkNFKSBcCi0gICAgICB8fCBkZWZpbmVkKF9QT1NJWF9TT1VSQ0UpCi0KLSAgIC8vIGdlbmVyaWMgdW5peCBwbGF0Zm9ybToKLQotIyAgaWZuZGVmIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL3Bvc2l4X2ZlYXR1cmVzLmhwcD4KLQotIyAgZW5kaWYKLQotIyAgaWYgZGVmaW5lZCAoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLSAgICAgIC8vIHRoaXMgbXVzdCBjb21lIGxhc3QgLSBnZW5lcmF0ZSBhbiBlcnJvciBpZiB3ZSBkb24ndAotICAgICAgLy8gcmVjb2duaXNlIHRoZSBwbGF0Zm9ybToKLSMgICAgIGVycm9yICJVbmtub3duIHBsYXRmb3JtIC0gcGxlYXNlIGNvbmZpZ3VyZSBhbmQgcmVwb3J0IHRoZSByZXN1bHRzIHRvIGJvb3N0Lm9yZyIKLSMgIGVuZGlmCi0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X3N0ZGxpYl9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc2VsZWN0X3N0ZGxpYl9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2NhZWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3NlbGVjdF9zdGRsaWJfY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vICBCb29zdCBjb21waWxlciBjb25maWd1cmF0aW9uIHNlbGVjdGlvbiBoZWFkZXIgZmlsZQotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMSAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyBsb2NhdGUgd2hpY2ggc3RkIGxpYiB3ZSBhcmUgdXNpbmcgYW5kIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHIGFzIG5lZWRlZDoKLQotLy8gRmlyc3QgaW5jbHVkZSA8Y3N0ZGRlZj4gdG8gZGV0ZXJtaW5lIGlmIHNvbWUgdmVyc2lvbiBvZiBTVExwb3J0IGlzIGluIHVzZSBhcyB0aGUgc3RkIGxpYgotLy8gKGRvIG5vdCByZWx5IG9uIHRoaXMgaGVhZGVyIGJlaW5nIGluY2x1ZGVkIHNpbmNlIHVzZXJzIGNhbiBzaG9ydC1jaXJjdWl0IHRoaXMgaGVhZGVyIAotLy8gIGlmIHRoZXkga25vdyB3aG9zZSBzdGQgbGliIHRoZXkgYXJlIHVzaW5nLikKLSNpZmRlZiBfX2NwbHVzcGx1cwotIyAgaW5jbHVkZSA8Y3N0ZGRlZj4KLSNlbHNlCi0jICBpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotLy8gU1RMUG9ydCBsaWJyYXJ5OyB0aGlzIF9tdXN0XyBjb21lIGZpcnN0LCBvdGhlcndpc2Ugc2luY2UKLS8vIFNUTHBvcnQgdHlwaWNhbGx5IHNpdHMgb24gdG9wIG9mIHNvbWUgb3RoZXIgbGlicmFyeSwgd2UKLS8vIGNhbiBlbmQgdXAgZGV0ZWN0aW5nIHRoYXQgZmlyc3QgcmF0aGVyIHRoYW4gU1RMcG9ydDoKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL3N0bHBvcnQuaHBwIgotCi0jZWxzZQotCi0vLyBJZiBvdXIgc3RkIGxpYiB3YXMgbm90IHNvbWUgdmVyc2lvbiBvZiBTVExwb3J0LCB0aGVuIGluY2x1ZGUgPHV0aWxpdHk+IGFzIGl0IGlzIGFib3V0IAotLy8gdGhlIHNtYWxsZXN0IG9mIHRoZSBzdGQgbGliIGhlYWRlcnMgdGhhdCBpbmNsdWRlcyByZWFsIEMrKyBzdHVmZi4gIChTb21lIHN0ZCBsaWJzIGRvIG5vdAotLy8gaW5jbHVkZSB0aGVpciBDKystcmVsYXRlZCBtYWNyb3MgaW4gPGNzdGRkZWY+IHNvIHRoaXMgYWRkaXRpb25hbCBpbmNsdWRlIG1ha2VzIHN1cmUKLS8vIHdlIGdldCB0aG9zZSBkZWZpbml0aW9ucykKLS8vIChhZ2FpbiBkbyBub3QgcmVseSBvbiB0aGlzIGhlYWRlciBiZWluZyBpbmNsdWRlZCBzaW5jZSB1c2VycyBjYW4gc2hvcnQtY2lyY3VpdCB0aGlzIAotLy8gIGhlYWRlciBpZiB0aGV5IGtub3cgd2hvc2Ugc3RkIGxpYiB0aGV5IGFyZSB1c2luZy4pCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLQotI2lmIGRlZmluZWQoX19MSUJDT01PX18pCi0vLyBDb21lYXUgU1RMOgotI2RlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL2xpYmNvbW8uaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9fU1REX1JXQ09NUElMRVJfSF9fKSB8fCBkZWZpbmVkKF9SV1NURF9WRVIpCi0vLyBSb2d1ZSBXYXZlIGxpYnJhcnk6Ci0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9yb2d1ZXdhdmUuaHBwIgotCi0jZWxpZiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKLS8vIGxpYmMrKwotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGliY3BwLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLS8vIEdOVSBsaWJzdGRjKysgMwotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19TVExfQ09ORklHX0gpCi0vLyBnZW5lcmljIFNHSSBTVEwKLSMgIGRlZmluZSBORE5CT09TVF9TVERMSUJfQ09ORklHICJuZG5ib29zdC9jb25maWcvc3RkbGliL3NnaS5ocHAiCi0KLSNlbGlmIGRlZmluZWQoX19NU0xfQ1BQX18pCi0vLyBNU0wgc3RhbmRhcmQgbGliOgotIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgIm5kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbXNsLmhwcCIKLQotI2VsaWYgZGVmaW5lZChfX0lCTUNQUF9fKQotLy8gdGFrZSB0aGUgZGVmYXVsdCBWQUNQUCBzdGQgbGliCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi92YWNwcC5ocHAiCi0KLSNlbGlmIGRlZmluZWQoTVNJUExfQ09NUElMRV9IKQotLy8gTW9kZW5hIEMrKyBzdGFuZGFyZCBsaWJyYXJ5Ci0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9tb2RlbmEuaHBwIgotCi0jZWxpZiAoZGVmaW5lZChfWVZBTFMpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pKSB8fCBkZWZpbmVkKF9DUFBMSUJfVkVSKQotLy8gRGlua3Vtd2FyZSBMaWJyYXJ5ICh0aGlzIGhhcyB0byBhcHBlYXIgYWZ0ZXIgYW55IHBvc3NpYmxlIHJlcGxhY2VtZW50IGxpYnJhcmllcyk6Ci0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCX0NPTkZJRyAibmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcCIKLQotI2VsaWYgZGVmaW5lZCAoTkROQk9PU1RfQVNTRVJUX0NPTkZJRykKLS8vIHRoaXMgbXVzdCBjb21lIGxhc3QgLSBnZW5lcmF0ZSBhbiBlcnJvciBpZiB3ZSBkb24ndAotLy8gcmVjb2duaXNlIHRoZSBsaWJyYXJ5OgotIyAgZXJyb3IgIlVua25vd24gc3RhbmRhcmQgbGlicmFyeSAtIHBsZWFzZSBjb25maWd1cmUgYW5kIHJlcG9ydCB0aGUgcmVzdWx0cyB0byBib29zdC5vcmciCi0KLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZjZTUzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvZGlua3Vtd2FyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLgotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4KLS8vICAoQykgQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEuCi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLgotLy8gIChDKSBDb3B5cmlnaHQgR3VpbGxhdW1lIE1lbHF1aW9uZCAyMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBEaW5rdW13YXJlIHN0YW5kYXJkIGxpYnJhcnkgY29uZmlnOgotCi0jaWYgIWRlZmluZWQoX1lWQUxTKSAmJiAhZGVmaW5lZChfQ1BQTElCX1ZFUikKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL3V0aWxpdHkuaHBwPgotI2lmICFkZWZpbmVkKF9ZVkFMUykgJiYgIWRlZmluZWQoX0NQUExJQl9WRVIpCi0jZXJyb3IgVGhpcyBpcyBub3QgdGhlIERpbmt1bXdhcmUgbGliIQotI2VuZGlmCi0jZW5kaWYKLQotCi0jaWYgZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgKF9DUFBMSUJfVkVSID49IDMwNikKLSAgIC8vIGZ1bGwgZGlua3Vtd2FyZSAzLjA2IGFuZCBhYm92ZQotICAgLy8gZnVsbHkgY29uZm9ybWluZyBwcm92aWRlZCB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQ6Ci0jICBpZiAhKGRlZmluZWQoX0dMT0JBTF9VU0lORykgJiYgKF9HTE9CQUxfVVNJTkcrMCA+IDApKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9TVEQpICYmICEoZGVmaW5lZChfX0lDQykgJiYgKF9fSUNDID49IDcwMCkpICAgLy8gY2FuIGJlIGRlZmluZWQgaW4geXZhbHMuaAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBlbmRpZgotIyAgaWYgIShkZWZpbmVkKF9IQVNfTUVNQkVSX1RFTVBMQVRFU19SRUJJTkQpICYmIChfSEFTX01FTUJFUl9URU1QTEFURVNfUkVCSU5EKzAgPiAwKSkgJiYgIShkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPiAxMzAwKSkgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSMgIGVuZGlmCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BBUlRJQUxfU1REX0FMTE9DQVRPUgotIyAgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApCi0gICAgICAvLyBpZiB0aGlzIGxpYiB2ZXJzaW9uIGlzIHNldCB1cCBmb3IgdmM2IHRoZW4gdGhlcmUgaXMgbm8gc3RkOjp1c2VfZmFjZXQ6Ci0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UV09fQVJHX1VTRV9GQUNFVAotICAgICAgLy8gQyBsaWIgZnVuY3Rpb25zIGFyZW4ndCBpbiBuYW1lc3BhY2Ugc3RkIGVpdGhlcjoKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICAgICAgLy8gYW5kIG5vciBpcyA8ZXhjZXB0aW9uPgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0VYQ0VQVElPTl9TVERfTkFNRVNQQUNFCi0jICBlbmRpZgotLy8gVGhlcmUncyBubyBudW1lcmljX2xpbWl0czxsb25nIGxvbmc+IHN1cHBvcnQgdW5sZXNzIF9MT05HTE9ORyBpcyBkZWZpbmVkOgotIyAgaWYgIWRlZmluZWQoX0xPTkdMT05HKSAmJiAoX0NQUExJQl9WRVIgPD0gMzEwKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01TX0lOVDY0X05VTUVSSUNfTElNSVRTCi0jICBlbmRpZgotLy8gMy4wNiBhcHBlYXJzIHRvIGhhdmUgKG5vbi1zZ2kgdmVyc2lvbnMgb2YpIDxoYXNoX3NldD4gJiA8aGFzaF9tYXA+LAotLy8gYW5kIG5vIDxzbGlzdD4gYXQgYWxsCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SIDEKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9PVVRQVVRfSVRFUkFUT1JfQVNTSUdOCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX01BQ1JPX1VTRV9GQUNFVAotIyAgaWZuZGVmIF9DUFBMSUJfVkVSCi0gICAgICAvLyBVcGRhdGVkIERpbmt1bSBsaWJyYXJ5IGRlZmluZXMgdGhpcywgYW5kIHByb3ZpZGVzCi0gICAgICAvLyBpdHMgb3duIG1pbiBhbmQgbWF4IGRlZmluaXRpb25zLCBhcyBkb2VzIE1UQSB2ZXJzaW9uLgotIyAgICAgaWZuZGVmIF9fTVRBX18gCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX01JTl9NQVgKLSMgICAgIGVuZGlmCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIHN0ZCBleHRlbnNpb24gbmFtZXNwYWNlIGlzIHN0ZGV4dCBmb3IgdmM3LjEgYW5kIGxhdGVyLCAKLS8vIHRoZSBzYW1lIGFwcGxpZXMgdG8gb3RoZXIgY29tcGlsZXJzIHRoYXQgc2l0IG9uIHRvcAotLy8gb2YgdmM3LjEgKEludGVsIGFuZCBDb21lYXUpOgotLy8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTMxMCkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFIHN0ZGV4dAotI2VuZGlmCi0KLQotI2lmIChkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPD0gMTMwMCkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSkgfHwgIWRlZmluZWQoX0NQUExJQl9WRVIpIHx8IChfQ1BQTElCX1ZFUiA8IDMwNikKLSAgIC8vIGlmIHdlJ3JlIHVzaW5nIGEgZGlua3VtIGxpYiB0aGF0J3MKLSAgIC8vIGJlZW4gY29uZmlndXJlZCBmb3IgVkM2LzcgdGhlbiB0aGVyZSBpcwotICAgLy8gbm8gaXRlcmF0b3IgdHJhaXRzICh0cnVlIGV2ZW4gZm9yIGljbCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19JQ0wpICYmIChfX0lDTCA8IDgwMCkgJiYgZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgKF9DUFBMSUJfVkVSIDw9IDMxMCkKLS8vIEludGVsIEMrKyBjaG9rZXMgb3ZlciBhbnkgbm9uLXRyaXZpYWwgdXNlIG9mIDxsb2NhbGU+Ci0vLyB0aGlzIG1heSBiZSBhbiBvdmVybHkgcmVzdHJpY3RpdmUgZGVmaW5lLCBidXQgcmVnZXggZmFpbHMgd2l0aG91dCBpdDoKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jZW5kaWYKLQotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2lmICggKCFfSEFTX0VYQ0VQVElPTlMgJiYgIWRlZmluZWQoX19naHNfXykpIHx8ICghX0hBU19OQU1FU1BBQ0UgJiYgZGVmaW5lZChfX2doc19fKSkgKSAmJiAhZGVmaW5lZChfX1RJX0NPTVBJTEVSX1ZFUlNJT05fXykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfVFlQRUlORk8gICAgCi0jZW5kaWYgIAotCi0vLyAgQysrMHggaGVhZGVycyBpbXBsZW1lbnRlZCBpbiA1MjAgKGFzIHNoaXBwZWQgYnkgTWljcm9zb2Z0KQotLy8KLSNpZiAhZGVmaW5lZChfQ1BQTElCX1ZFUikgfHwgX0NQUExJQl9WRVIgPCA1MjAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ERUNWVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVOQ1RJT05BTAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jZW5kaWYKLQotI2lmICghZGVmaW5lZChfSEFTX1RSMV9JTVBPUlRTKSB8fCAoX0hBU19UUjFfSU1QT1JUUyswID09IDApKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFCi0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgaW1wbGVtZW50ZWQgaW4gNTQwIChhcyBzaGlwcGVkIGJ5IE1pY3Jvc29mdCkKLS8vCi0jaWYgIWRlZmluZWQoX0NQUExJQl9WRVIpIHx8IF9DUFBMSUJfVkVSIDwgNTQwCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FMTE9DQVRPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0FUT01JQ19TTUFSVF9QVFIKLSNlbmRpZgotCi0vLwotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCAoZnVsbHkpIGltcGxlbWVudGVkOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotCi0jaWZkZWYgX0NQUExJQl9WRVIKLSMgIGRlZmluZSBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiBfQ1BQTElCX1ZFUgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiAxCi0jZW5kaWYKLQotI2lmZGVmIF9DUFBMSUJfVkVSCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJEaW5rdW13YXJlIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfQ1BQTElCX1ZFUikKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJEaW5rdW13YXJlIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAxLngiCi0jZW5kaWYKLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjb21vLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjb21vLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyMGExNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGliY29tby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMiAtIDIwMDMuIAotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMiAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIENvbWVhdSBTVEw6Ci0KLSNpZiAhZGVmaW5lZChfX0xJQkNPTU9fXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvdXRpbGl0eS5ocHA+Ci0jICBpZiAhZGVmaW5lZChfX0xJQkNPTU9fXykKLSMgICAgICBlcnJvciAiVGhpcyBpcyBub3QgdGhlIENvbWVhdSBTVEwhIgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gc3RkOjpzdHJlYW1idWY8d2NoYXJfdD4gaXMgbm9uLXN0YW5kYXJkCi0vLyBOT1RFOiB2ZXJzaW9ucyBvZiBsaWJjb21vIHByaW9yIHRvIGJldGEyOCBoYXZlIG9jdGFsIHZlcnNpb24gbnVtYmVyaW5nLAotLy8gZS5nLiB2ZXJzaW9uIDI1IGlzIDIxIChkZWMpCi0jaWYgX19MSUJDT01PX1ZFUlNJT05fXyA8PSAyMgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGCi0jZW5kaWYKLQotI2lmIChfX0xJQkNPTU9fVkVSU0lPTl9fIDw9IDMxKSAmJiBkZWZpbmVkKF9XSU4zMikKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1dQUklOVEYKLSNlbmRpZgotCi0jaWYgX19MSUJDT01PX1ZFUlNJT05fXyA+PSAzMQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NMSVNUCi0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotLy8KLS8vIEludHJpbnNpYyB0eXBlX3RyYWl0cyBzdXBwb3J0LgotLy8gVGhlIFNHSSBTVEwgaGFzIGl0J3Mgb3duIF9fdHlwZV90cmFpdHMgY2xhc3MsIHdoaWNoCi0vLyBoYXMgaW50cmluc2ljIGNvbXBpbGVyIHN1cHBvcnQgd2l0aCBTR0kncyBjb21waWxlcnMuCi0vLyBXaGF0ZXZlciBtYXAgU0dJIHN0eWxlIHR5cGUgdHJhaXRzIHRvIGJvb3N0IGVxdWl2YWxlbnRzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSEFTX1NHSV9UWVBFX1RSQUlUUwotCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiQ29tZWF1IHN0YW5kYXJkIGxpYnJhcnkgIiBORE5CT09TVF9TVFJJTkdJWkUoX19MSUJDT01PX1ZFUlNJT05fXykKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGliY3BwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjcHAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGVlNjc4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJjcHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgQ2hyaXN0b3BoZXIgSmVmZmVyc29uIDIwMTEuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGNvbmZpZyBmb3IgbGliYysrCi0vLyAgTWlnaHQgbmVlZCBtb3JlIGluIGhlcmUgbGF0ZXIuCi0KLSNpZiAhZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCi0jICBpbmNsdWRlIDxjaXNvNjQ2PgotIyAgaWYgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCBsaWJjKyshIgotIyAgZW5kaWYKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAibGliYysrIHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX0xJQkNQUF9WRVJTSU9OKQotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0KLSNpZmRlZiBfTElCQ1BQX0hBU19OT19WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotI2VuZGlmCi0KLS8vCi0vLyBUaGVzZSBhcHBlYXIgdG8gYmUgdW51c2FibGUvaW5jb21wbGV0ZSBzbyBmYXI6Ci0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotCi0vLyBsaWJjKysgdXNlcyBhIG5vbi1zdGFuZGFyZCBtZXNzYWdlc19iYXNlCi0jZGVmaW5lIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotCi0vLyAgLS0tIGVuZCAtLS0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEwZDk5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbGlic3RkY3BwMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEuCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAxLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBjb25maWcgZm9yIGxpYnN0ZGMrKyB2MwotLy8gIG5vdCBtdWNoIHRvIGdvIGluIGhlcmU6Ci0KLSNkZWZpbmUgTkROQk9PU1RfR05VX1NURExJQiAxCi0KLSNpZmRlZiBfX0dMSUJDWFhfXwotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIkdOVSBsaWJzdGRjKysgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX0dMSUJDWFhfXykKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiR05VIGxpYnN0ZGMrKyB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9fR0xJQkNQUF9fKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChfR0xJQkNQUF9VU0VfV0NIQVJfVCkgJiYgIWRlZmluZWQoX0dMSUJDWFhfVVNFX1dDSEFSX1QpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDSEFSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1dDVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX29zZl9fKSAmJiAhZGVmaW5lZChfUkVFTlRSQU5UKSBcCi0gICYmICggZGVmaW5lZChfR0xJQkNYWF9IQVZFX0dUSFJfREVGQVVMVCkgfHwgZGVmaW5lZChfR0xJQkNQUF9IQVZFX0dUSFJfREVGQVVMVCkgKQotLy8gR0NDIDMgb24gVHJ1NjQgZm9yY2VzIHRoZSBkZWZpbml0aW9uIG9mIF9SRUVOVFJBTlQgd2hlbiBhbnkgc3RkIGxpYiBoZWFkZXIKLS8vIGZpbGUgaXMgaW5jbHVkZWQsIHRoZXJlZm9yZSBmb3IgY29uc2lzdGVuY3kgd2UgZGVmaW5lIGl0IGhlcmUgYXMgd2VsbC4KLSMgIGRlZmluZSBfUkVFTlRSQU5UCi0jZW5kaWYKLQotI2lmZGVmIF9fR0xJQkNYWF9fIC8vIGdjYyAzLjQgYW5kIGdyZWF0ZXI6Ci0jICBpZiBkZWZpbmVkKF9HTElCQ1hYX0hBVkVfR1RIUl9ERUZBVUxUKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0dMSUJDWFhfX1BUSFJFQURTKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0dMSUJDWFhfSEFTX0dUSFJFQURTKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX1dJTjMyKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0FJWCkKLSAgICAgIC8vCi0gICAgICAvLyBJZiB0aGUgc3RkIGxpYiBoYXMgdGhyZWFkIHN1cHBvcnQgdHVybmVkIG9uLCB0aGVuIHR1cm4gaXQgb24gaW4gQm9vc3QKLSAgICAgIC8vIGFzIHdlbGwuICBXZSBkbyB0aGlzIGJlY2F1c2Ugc29tZSBnY2MtMy40IHN0ZCBsaWIgaGVhZGVycyBkZWZpbmUgX1JFRU5UQU5UCi0gICAgICAvLyB3aGlsZSBvdGhlcnMgZG8gbm90Li4uCi0gICAgICAvLwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTCi0jICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgXAotICAgICAgICAmJiAhZGVmaW5lZChfR0xJQkNQUF9IQVZFX0dUSFJfREVGQVVMVCkgXAotICAgICAgICAmJiAhZGVmaW5lZChfR0xJQkNQUF9fUFRIUkVBRFMpCi0gICAvLyBkaXNhYmxlIHRocmVhZCBzdXBwb3J0IGlmIHRoZSBzdGQgbGliIHdhcyBidWlsdCBzaW5nbGUgdGhyZWFkZWQ6Ci0jICBkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9USFJFQURTCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fbGludXgpIHx8IGRlZmluZWQoX19saW51eF9fKSkgJiYgZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9HTElCQ1BQX0hBVkVfR1RIUl9ERUZBVUxUKQotLy8gbGludXggb24gYXJtIGFwcGFyZW50bHkgZG9lc24ndCBkZWZpbmUgX1JFRU5UUkFOVAotLy8gc28ganVzdCB0dXJuIG9uIHRocmVhZGluZyBzdXBwb3J0IHdoZW5ldmVyIHRoZSBzdGQgbGliIGlzIHRocmVhZCBzYWZlOgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKF9HTElCQ1BQX1VTRV9MT05HX0xPTkcpIFwKLSAgICAmJiAhZGVmaW5lZChfR0xJQkNYWF9VU0VfTE9OR19MT05HKVwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0vLyBNYXkgaGF2ZSBiZWVuIHNldCBieSBjb21waWxlci8qLmhwcCwgYnV0ICJsb25nIGxvbmciIHdpdGhvdXQgbGlicmFyeQotLy8gc3VwcG9ydCBpcyB1c2VsZXNzLgotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotI2VuZGlmCi0KLS8vIEFwcGxlIGRvZXNuJ3Qgc2VlbSB0byByZWxpYWJseSBkZWZpbmVkIGEgKnVuaXgqIG1hY3JvCi0jaWYgIWRlZmluZWQoQ1lHV0lOKSAmJiAoICBkZWZpbmVkKF9fdW5peF9fKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX3VuaXgpICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQodW5peCkgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEVfXykgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoQVBQTEUpKQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTElCQ1hYX18pIHx8IChkZWZpbmVkKF9fR0xJQkNQUF9fKSAmJiBfX0dMSUJDUFBfXz49MjAwMjA1MTQpIC8vIEdDQyA+PSAzLjEuMAotIyAgZGVmaW5lIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFIF9fZ251X2N4eAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jICBkZWZpbmUgTkROQk9PU1RfU0xJU1RfSEVBREVSIDxleHQvc2xpc3Q+Ci0jIGlmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCAzKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX1NFVF9IRUFERVIgPGV4dC9oYXNoX3NldD4KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9NQVBfSEVBREVSIDxleHQvaGFzaF9tYXA+Ci0jIGVsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9TRVRfSEVBREVSIDxiYWNrd2FyZC9oYXNoX3NldD4KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9NQVBfSEVBREVSIDxiYWNrd2FyZC9oYXNoX21hcD4KLSMgZW5kaWYKLSNlbmRpZgotCi0vLyAgc3RkbGliYysrIEMrKzB4IHN1cHBvcnQgaXMgZGV0ZWN0ZWQgdmlhIF9fR05VQ19fLCBfX0dOVUNfTUlOT1JfXywgYW5kIHBvc3NpYmx5Ci0vLyAgX19HTlVDX1BBVENITEVWRUxfXyBhdCB0aGUgc3VnZ2VzdGlvbiBvZiBKb25hdGhhbiBXYWtlbHksIG9uZSBvZiB0aGUgc3RkbGliYysrCi0vLyAgZGV2ZWxvcGVycy4gSGUgYWxzbyBjb21tZW50ZWQ6Ci0vLwotLy8gICAgICAgIkknbSBub3Qgc3VyZSBob3cgdXNlZnVsIF9fR0xJQkNYWF9fIGlzIGZvciB5b3VyIHB1cnBvc2VzLCBmb3IgaW5zdGFuY2UgaW4KLS8vICAgICAgIEdDQyA0LjIuNCBpdCBpcyBzZXQgdG8gMjAwODA1MTkgYnV0IGluIEdDQyA0LjMuMCBpdCBpcyBzZXQgdG8gMjAwODAzMDUuCi0vLyAgICAgICBBbHRob3VnaCA0LjMuMCB3YXMgcmVsZWFzZWQgZWFybGllciB0aGFuIDQuMi40LCBpdCBoYXMgYmV0dGVyIEMrKzB4IHN1cHBvcnQKLS8vICAgICAgIHRoYW4gYW55IHJlbGVhc2UgaW4gdGhlIDQuMiBzZXJpZXMuIgotLy8KLS8vICBBbm90aGVyIHJlc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHN0ZGxpYmMrKyBmZWF0dXJlcyBpczoKLS8vICBodHRwOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9saWJzdGRjKysvbWFudWFsL3N0YXR1cy5odG1sI21hbnVhbC5pbnRyby5zdGF0dXMuc3RhbmRhcmQuMjAweAotCi0vLyAgQysrMHggaGVhZGVycyBpbiBHQ0MgNC4zLjAgYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVOQ1RJT05BTAotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIGluIEdDQyA0LjQuMCBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNCkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSMV9DT01QTEVYX0lOVkVSU0VfVFJJRyAKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVFIxX0NPTVBMRVhfT1ZFUkxPQURTIAotI2VuZGlmCi0KLSNpZiAoIWRlZmluZWQoX0dMSUJDWFhfSEFTX0dUSFJFQURTKSB8fCAhZGVmaW5lZChfR0xJQkNYWF9VU0VfQzk5X1NURElOVF9UUjEpKSAmJiAoIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRSkgfHwgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX01VVEVYCi0jZW5kaWYKLQotLy8gIEMrKzB4IGZlYXR1cmVzIGluIEdDQyA0LjUuMCBhbmQgbGF0ZXIKLS8vCi0jaWYgX19HTlVDX18gPCA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkgfHwgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBTkRPTQotI2VuZGlmCi0KLS8vICBDKysweCBmZWF0dXJlcyBpbiBHQ0MgNC42LjAgYW5kIGxhdGVyCi0vLwotI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYpIHx8ICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSNlbmRpZgotCi0vLyAgQysrMHggZmVhdHVyZXMgaW4gR0NDIDQuNy4wIGFuZCBsYXRlcgotLy8KLSNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3KSB8fCAhZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykKLS8vIE5vdGUgdGhhdCBhbHRob3VnaCA8Y2hyb25vPiBleGlzdGVkIHByaW9yIHRvIDQuNywgInN0ZWFkX2Nsb2NrIiBpcyBzcGVsbGVkICJtb25vdG9uaWNfY2xvY2siCi0vLyBzbyA0LjcuMCBpcyB0aGUgZmlyc3QgdHJ1ZWx5IGNvbmZvcm1pbmcgb25lLgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSNlbmRpZgotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCAoZnVsbHkhKSBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFECi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0KLS8vICAtLS0gZW5kIC0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL21vZGVuYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbW9kZW5hLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZmYjk1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbW9kZW5hLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1vZGVuYSBDKysgc3RhbmRhcmQgbGlicmFyeSAoY29tZXMgd2l0aCBLQUkgQysrKQotCi0jaWYgIWRlZmluZWQoTVNJUExfQ09NUElMRV9IKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmICFkZWZpbmVkKF9fTVNJUExfQ09NUElMRV9IKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCB0aGUgTW9kZW5hIEMrKyBsaWJyYXJ5ISIKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBNU0lQTF9OTF9UWVBFUwotI2RlZmluZSBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSNlbmRpZgotCi0jaWZuZGVmIE1TSVBMX1dDSEFSVAotI2RlZmluZSBORE5CT09TVF9OT19TVERfV1NUUklORwotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJNb2RlbmEgQysrIHN0YW5kYXJkIGxpYnJhcnkiCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL21zbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbXNsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5MmUyZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvbXNsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDAxLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIE1ldHJvd2Vya3Mgc3RhbmRhcmQgbGlicmFyeToKLQotI2lmbmRlZiBfX01TTF9DUFBfXwotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmbmRlZiBfX01TTF9DUFBfXwotIyAgICAgZXJyb3IgVGhpcyBpcyBub3QgdGhlIE1TTCBzdGFuZGFyZCBsaWJyYXJ5IQotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWYgX19NU0xfQ1BQX18gPj0gMHg2MDAwICAvLyBQcm8gNgotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19IQVNICi0jICBkZWZpbmUgTkROQk9PU1RfU1REX0VYVEVOU0lPTl9OQU1FU1BBQ0UgTWV0cm93ZXJrcwotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19TTElTVAotCi0jaWYgX19NU0xfQ1BQX18gPCAweDYyMDkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSNlbmRpZgotCi0vLyBjaGVjayBDIGxpYiB2ZXJzaW9uIGZvciA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIGRlZmluZWQoX19NU0xfXykgJiYgKF9fTVNMX18gPj0gMHg1MDAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgaWYgIWRlZmluZWQoX19QQUxNT1NfVFJBUFNfXykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19VTklTVERfSAotIyAgZW5kaWYKLSAgIC8vIGJvaWxlcnBsYXRlIGNvZGU6Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvcG9zaXhfZmVhdHVyZXMuaHBwPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NV01UKSB8fCBfTVNMX1RIUkVBRFNBRkUKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfVEhSRUFEUwotI2VuZGlmCi0KLSNpZmRlZiBfTVNMX05PX0VYUExJQ0lUX0ZVTkNfVEVNUExBVEVfQVJHCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UV09fQVJHX1VTRV9GQUNFVAotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJNZXRyb3dlcmtzIFN0YW5kYXJkIExpYnJhcnkgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX01TTF9DUFBfXykKLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9yb2d1ZXdhdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3JvZ3Vld2F2ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NWM0OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3JvZ3Vld2F2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy4gCi0vLyAgKEMpIENvcHlyaWdodCBCb3JpcyBHdWJlbmtvIDIwMDcuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIFJvZ3VlIFdhdmUgc3RkIGxpYjoKLQotI2RlZmluZSBORE5CT09TVF9SV19TVERMSUIgMSAKLQotI2lmICFkZWZpbmVkKF9fU1REX1JXQ09NUElMRVJfSF9fKSAmJiAhZGVmaW5lZChfUldTVERfVkVSKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmICFkZWZpbmVkKF9fU1REX1JXQ09NUElMRVJfSF9fKSAmJiAhZGVmaW5lZChfUldTVERfVkVSKQotIyAgICAgZXJyb3IgVGhpcyBpcyBub3QgdGhlIFJvZ3VlIFdhdmUgc3RhbmRhcmQgbGlicmFyeQotIyAgZW5kaWYKLSNlbmRpZgotLy8KLS8vIGZpZ3VyZSBvdXQgYSBjb25zaXN0ZW50IHZlcnNpb24gbnVtYmVyOgotLy8KLSNpZm5kZWYgX1JXU1REX1ZFUgotIyAgZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUiAweDAxMDAwMAotI2VsaWYgX1JXU1REX1ZFUiA8IDB4MDEwMDAwCi0jICBkZWZpbmUgTkROQk9PU1RfUldTVERfVkVSIChfUldTVERfVkVSIDw8IDgpCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUiBfUldTVERfVkVSCi0jZW5kaWYKLQotI2lmbmRlZiBfUldTVERfVkVSCi0jICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJSb2d1ZSBXYXZlIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAoVW5rbm93biB2ZXJzaW9uKSIKLSNlbGlmIF9SV1NURF9WRVIgPCAweDA0MDEwMjAwCi0gIyAgZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiUm9ndWUgV2F2ZSBzdGFuZGFyZCBsaWJyYXJ5IHZlcnNpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoX1JXU1REX1ZFUikKLSNlbHNlCi0jICBpZmRlZiBfUldTVERfVkVSX1NUUgotIyAgICBkZWZpbmUgTkROQk9PU1RfU1RETElCICJBcGFjaGUgU1REQ1hYIHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAiIF9SV1NURF9WRVJfU1RSCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9TVERMSUIgIkFwYWNoZSBTVERDWFggc3RhbmRhcmQgbGlicmFyeSB2ZXJzaW9uICIgTkROQk9PU1RfU1RSSU5HSVpFKF9SV1NURF9WRVIpCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBQcmlvciB0byB2ZXJzaW9uIDIuMi4wIHRoZSBwcmltYXJ5IHRlbXBsYXRlIGZvciBzdGQ6Om51bWVyaWNfbGltaXRzCi0vLyBkb2VzIG5vdCBoYXZlIGNvbXBpbGUgdGltZSBjb25zdGFudHMsIGV2ZW4gdGhvdWdoIHNwZWNpYWxpemF0aW9ucyBvZiB0aGF0Ci0vLyB0ZW1wbGF0ZSBkbzoKLS8vCi0jaWYgTkROQk9PU1RfUldTVERfVkVSIDwgMHgwMjAyMDAKLSMgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotI2VuZGlmCi0KLS8vIFN1biBDQyA1LjUgcGF0Y2ggMTEzODE3LTA3IGFkZHMgbG9uZyBsb25nIHNwZWNpYWxpemF0aW9uLCBidXQgZG9lcyBub3QgY2hhbmdlIHRoZQotLy8gbGlicmFyeSB2ZXJzaW9uIG51bWJlciAoaHR0cDovL3N1bnNvbHZlNi5zdW4uY29tL3NlYXJjaC9kb2N1bWVudC5kbz9hc3NldGtleT0xLTIxLTExMzgxNyk6Ci0jaWYgTkROQk9PU1RfUldTVERfVkVSIDw9IDB4MDIwMTAxICYmICghZGVmaW5lZChfX1NVTlBST19DQykgfHwgKF9fU1VOUFJPX0NDIDwgMHg1NTApKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9OR19OVU1FUklDX0xJTUlUUwotIyBlbmRpZgotCi0vLwotLy8gQm9ybGFuZCB2ZXJzaW9uIG9mIG51bWVyaWNfbGltaXRzIGxhY2tzIF9faW50NjQgc3BlY2lhbGlzYXRpb246Ci0vLwotI2lmZGVmIF9fQk9STEFORENfXwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX01TX0lOVDY0X05VTUVSSUNfTElNSVRTCi0jZW5kaWYKLQotLy8KLS8vIE5vIHN0ZDo6aXRlcmF0b3IgaWYgaXQgY2FuJ3QgZmlndXJlIG91dCBkZWZhdWx0IHRlbXBsYXRlIGFyZ3M6Ci0vLwotI2lmIGRlZmluZWQoX1JXU1REX05PX1NJTVBMRV9ERUZBVUxUX1RFTVBMQVRFUykgfHwgZGVmaW5lZChSV1NURF9OT19TSU1QTEVfREVGQVVMVF9URU1QTEFURVMpIHx8IChORE5CT09TVF9SV1NURF9WRVIgPCAweDAyMDAwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSNlbmRpZgotCi0vLwotLy8gTm8gaXRlcmF0b3IgdHJhaXRzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbjoKLS8vCi0jaWYgZGVmaW5lZChfUldTVERfTk9fQ0xBU1NfUEFSVElBTF9TUEVDKSB8fCBkZWZpbmVkKFJXU1REX05PX0NMQVNTX1BBUlRJQUxfU1BFQykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi0jZW5kaWYKLQotLy8KLS8vIFByaW9yIHRvIHZlcnNpb24gMi4wLCBzdGQ6OmF1dG9fcHRyIHdhcyBidWdneSwgYW5kIHRoZXJlIHdlcmUgbm8KLS8vIG5ldy1zdHlsZSBpb3N0cmVhbXMsIGFuZCBubyBjb25mb3JtYW50IHN0ZDo6YWxsb2NhdG9yOgotLy8KLSNpZiAoTkROQk9PU1RfUldTVERfVkVSIDwgMHgwMjAwMDApCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVVUT19QVFIKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2VuZGlmCi0KLS8vCi0vLyBObyB0ZW1wbGF0ZSBpdGVyYXRvciBjb25zdHJ1Y3RvcnMgd2l0aG91dCBtZW1iZXIgdGVtcGxhdGUgc3VwcG9ydDoKLS8vCi0jaWYgZGVmaW5lZChSV1NURF9OT19NRU1CRVJfVEVNUExBVEVTKSB8fCBkZWZpbmVkKF9SV1NURF9OT19NRU1CRVJfVEVNUExBVEVTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSNlbmRpZgotCi0vLwotLy8gUlcgZGVmaW5lcyBfUldTVERfQUxMT0NBVE9SIGlmIHRoZSBhbGxvY2F0b3IgaXMgY29uZm9ybWFudCBhbmQgaW4gdXNlCi0vLyAodGhlIG9yIF9IUEFDQ18gcGFydCBpcyBhIGhhY2sgLSB0aGUgbGlicmFyeSBzZWVtcyB0byBkZWZpbmUgX1JXU1REX0FMTE9DQVRPUgotLy8gb24gSFAgYUNDIHN5c3RlbXMgZXZlbiB0aG91Z2ggdGhlIGFsbG9jYXRvciBpcyBpbiBmYWN0IGJyb2tlbik6Ci0vLwotI2lmICFkZWZpbmVkKF9SV1NURF9BTExPQ0FUT1IpIHx8IChkZWZpbmVkKF9fSFBfYUNDKSAmJiBfX0hQX2FDQyA8PSAzMzEwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotLy8KLS8vIElmIHdlIGhhdmUgYSBzdGQ6OmxvY2FsZSwgd2Ugc3RpbGwgbWF5IG5vdCBoYXZlIHN0ZDo6dXNlX2ZhY2V0OgotLy8KLSNpZiBkZWZpbmVkKF9SV1NURF9OT19URU1QTEFURV9PTl9SRVRVUk5fVFlQRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1RXT19BUkdfVVNFX0ZBQ0VUCi0jZW5kaWYKLQotLy8KLS8vIFRoZXJlJ3Mgbm8gc3RkOjpkaXN0YW5jZSBwcmlvciB0byB2ZXJzaW9uIDIsIG9yIHdpdGhvdXQKLS8vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLS8vCi0jaWYgKE5ETkJPT1NUX1JXU1REX1ZFUiA8IDB4MDIwMDAwKSB8fCBkZWZpbmVkKF9SV1NURF9OT19DTEFTU19QQVJUSUFMX1NQRUMpCi0gICAgI2RlZmluZSBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLSNlbmRpZgotCi0vLwotLy8gU29tZSB2ZXJzaW9ucyBvZiB0aGUgcm9ndWUgd2F2ZSBsaWJyYXJ5IGRvbid0IGhhdmUgYXNzaWduYWJsZQotLy8gT3V0cHV0SXRlcmF0b3JzOgotLy8KLSNpZiBORE5CT09TVF9SV1NURF9WRVIgPCAweDAyMDEwMAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9PVVRQVVRfSVRFUkFUT1JfQVNTSUdOCi0jZW5kaWYKLQotLy8KLS8vIERpc2FibGUgTkROQk9PU1RfSEFTX0xPTkdfTE9ORyB3aGVuIHRoZSBsaWJyYXJ5IGhhcyBubyBzdXBwb3J0IGZvciBpdC4KLS8vCi0jaWYgIWRlZmluZWQoX1JXU1REX0xPTkdfTE9ORykgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotI2VuZGlmCi0KLS8vCi0vLyBjaGVjayB0aGF0IG9uIEhQLVVYLCB0aGUgcHJvcGVyIFJXIGxpYnJhcnkgaXMgdXNlZAotLy8KLSNpZiBkZWZpbmVkKF9fSFBfYUNDKSAmJiAhZGVmaW5lZChfSFBfTkFNRVNQQUNFX1NURCkKLSMgIGVycm9yICJCb29zdCByZXF1aXJlcyBTdGFuZGFyZCBSVyBsaWJyYXJ5LiBQbGVhc2UgY29tcGlsZSBhbmQgbGluayB3aXRoIC1BQSIKLSNlbmRpZgotCi0vLwotLy8gRGVmaW5lIG1hY3JvcyBzcGVjaWZpYyB0byBSVyBWMi4yIG9uIEhQLVVYCi0vLwotI2lmIGRlZmluZWQoX19IUF9hQ0MpICYmIChORE5CT09TVF9SV1NURF9WRVIgPT0gMHgwMjAyMDEwMCkKLSMgIGlmbmRlZiBfX0hQX1RDMV9NQUtFX1BBSVIKLSMgICAgZGVmaW5lIF9fSFBfVEMxX01BS0VfUEFJUgotIyAgZW5kaWYKLSMgIGlmbmRlZiBfSFBfSU5TVEFOVElBVEVfU1REMl9WTAotIyAgICBkZWZpbmUgX0hQX0lOU1RBTlRJQVRFX1NURDJfVkwKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmIF9SV1NURF9WRVIgPCAweDA1MDAwMDAwCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jZW5kaWYKLS8vIHR5cGVfdHJhaXRzIGhlYWRlciBpcyBpbmNvbXBsZXRlOgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotLy8KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9zZ2kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3NnaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMTRmNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3NnaS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAzLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMSAtIDIwMDMuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLQotLy8gIGdlbmVyaWMgU0dJIFNUTDoKLQotI2lmICFkZWZpbmVkKF9fU1RMX0NPTkZJR19IKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS91dGlsaXR5LmhwcD4KLSMgIGlmICFkZWZpbmVkKF9fU1RMX0NPTkZJR19IKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCB0aGUgU0dJIFNUTCEiCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBObyBzdGQ6Oml0ZXJhdG9yIHRyYWl0cyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGlzYXRpb246Ci0vLwotI2lmICFkZWZpbmVkKF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUwotI2VuZGlmCi0KLS8vCi0vLyBObyBzdGQ6OnN0cmluZ3N0cmVhbSB3aXRoIGdjYyA8IDMKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykgJiYgXAotICAgICAoKF9fR05VQ19NSU5PUl9fIDwgOTUpIHx8IChfX0dOVUNfTUlOT1JfXyA9PSA5NikpICYmIFwKLSAgICAgIWRlZmluZWQoX19TVExfVVNFX05FV19JT1NUUkVBTVMpIHx8IFwKLSAgIGRlZmluZWQoX19BUFBMRV9DQ19fKQotICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgc2V0IHRoaXMgZm9yIEdOVSBDKysgcHJpb3IgdG8gMi45NSBzaW5jZSB0aGUKLSAgIC8vIGxhdGVzdCBwYXRjaGVzIGZvciB0aGF0IHJlbGVhc2UgZG8gY29udGFpbiBhIG1pbmltYWwgPHNzdHJlYW0+Ci0gICAvLyBJZiB5b3UgYXJlIHJ1bm5pbmcgYSAyLjk1IHJlbGVhc2UgcHJpb3IgdG8gMi45NS4zIHRoZW4gdGhpcyB3aWxsIG5lZWQKLSAgIC8vIHNldHRpbmcsIGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRoYXQgYXV0b21hdGljYWxseSAob3RoZXIKLSAgIC8vIHRoYW4gYnkgcnVubmluZyB0aGUgY29uZmlndXJlIHNjcmlwdCkuCi0gICAvLyBBbHNvLCB0aGUgdW5vZmZpY2lhbCBHTlUgQysrIDIuOTYgaW5jbHVkZWQgaW4gUmVkSGF0IDcuMSBkb2Vzbid0Ci0gICAvLyBoYXZlIDxzc3RyZWFtPi4KLSMgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSNlbmRpZgotCi0vLyBBcHBsZSBkb2Vzbid0IHNlZW0gdG8gcmVsaWFibHkgZGVmaW5lZCBhICp1bml4KiBtYWNybwotI2lmICFkZWZpbmVkKENZR1dJTikgJiYgKCAgZGVmaW5lZChfX3VuaXhfXykgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX191bml4KSAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKHVuaXgpICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFX18pIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX19BUFBMRSkgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKEFQUExFKSkKLSMgIGluY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLQotLy8KLS8vIEFzc3VtZSBubyBzdGQ6OmxvY2FsZSB3aXRob3V0IG93biBpb3N0cmVhbXMgKHRoaXMgbWF5IGJlIGFuCi0vLyBpbmNvcnJlY3QgYXNzdW1wdGlvbiBpbiBzb21lIGNhc2VzKToKLS8vCi0jaWYgIWRlZmluZWQoX19TR0lfU1RMX09XTl9JT1NUUkVBTVMpICYmICFkZWZpbmVkKF9fU1RMX1VTRV9ORVdfSU9TVFJFQU1TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSNlbmRpZgotCi0vLwotLy8gT3JpZ2luYWwgbmF0aXZlIFNHSSBzdHJlYW1zIGhhdmUgbm9uLXN0YW5kYXJkIHN0ZDo6bWVzc2FnZXMgZmFjZXQ6Ci0vLwotI2lmIGRlZmluZWQoX19zZ2kpICYmIChfQ09NUElMRVJfVkVSU0lPTiA8PSA2NTApICYmICFkZWZpbmVkKF9fU0dJX1NUTF9PV05fSU9TVFJFQU1TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSNlbmRpZgotCi0vLwotLy8gU0dJJ3MgbmV3IGlvc3RyZWFtcyBoYXZlIG1pc3NpbmcgImNvbnN0IiBpbiBtZXNzYWdlczw+OjpvcGVuCi0vLwotI2lmIGRlZmluZWQoX19zZ2kpICYmIChfQ09NUElMRVJfVkVSU0lPTiA8PSA3NDApICYmIGRlZmluZWQoX19TVExfVVNFX05FV19JT1NUUkVBTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0jZW5kaWYKLQotLy8KLS8vIE5vIHRlbXBsYXRlIGl0ZXJhdG9yIGNvbnN0cnVjdG9ycywgb3Igc3RkOjphbGxvY2F0b3IKLS8vIHdpdGhvdXQgbWVtYmVyIHRlbXBsYXRlczoKLS8vCi0jaWYgIWRlZmluZWQoX19TVExfTUVNQkVSX1RFTVBMQVRFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotI2VuZGlmCi0KLS8vCi0vLyBXZSBhbHdheXMgaGF2ZSBTR0kgc3R5bGUgaGFzaF9zZXQsIGhhc2hfbWFwLCBhbmQgc2xpc3Q6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfSEFTSAotI2RlZmluZSBORE5CT09TVF9IQVNfU0xJU1QKLQotLy8KLS8vIElmIHRoaXMgaXMgR05VIGxpYnN0ZGMrKzIsIHRoZW4gbm8gPGxpbWl0cz4gYW5kIG5vIHN0ZDo6d3N0cmluZzoKLS8vCi0jaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA8IDMpKQotIyAgaW5jbHVkZSA8c3RyaW5nPgotIyAgaWYgZGVmaW5lZChfX0JBU1RSSU5HX18pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTElNSVRTCi0vLyBOb3RlOiA8bmRuYm9vc3QvbGltaXRzLmhwcD4gd2lsbCBwcm92aWRlIGNvbXBpbGUtdGltZSBjb25zdGFudHMKLSMgICAgIHVuZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIFRoZXJlIGlzIG5vIHN0YW5kYXJkIGl0ZXJhdG9yIHVubGVzcyB3ZSBoYXZlIG5hbWVzcGFjZSBzdXBwb3J0OgotLy8KLSNpZiAhZGVmaW5lZChfX1NUTF9VU0VfTkFNRVNQQUNFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSNlbmRpZgotCi0vLwotLy8gSW50cmluc2ljIHR5cGVfdHJhaXRzIHN1cHBvcnQuCi0vLyBUaGUgU0dJIFNUTCBoYXMgaXQncyBvd24gX190eXBlX3RyYWl0cyBjbGFzcywgd2hpY2gKLS8vIGhhcyBpbnRyaW5zaWMgY29tcGlsZXIgc3VwcG9ydCB3aXRoIFNHSSdzIGNvbXBpbGVycy4KLS8vIFdoYXRldmVyIG1hcCBTR0kgc3R5bGUgdHlwZSB0cmFpdHMgdG8gYm9vc3QgZXF1aXZhbGVudHM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfU0dJX1RZUEVfVFJBSVRTCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJTR0kgc3RhbmRhcmQgbGlicmFyeSIKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9zdGxwb3J0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N0ZGxpYi9zdGxwb3J0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkZDcxOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvc3RscG9ydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICAoQykgQ29weXJpZ2h0IERhcmluIEFkbGVyIDIwMDEuIAotLy8gIChDKSBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotCi0vLyAgU1RMUG9ydCBzdGFuZGFyZCBsaWJyYXJ5IGNvbmZpZzoKLQotI2lmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotIyAgaW5jbHVkZSA8Y3N0ZGRlZj4KLSMgIGlmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotIyAgICAgIGVycm9yICJUaGlzIGlzIG5vdCBTVExQb3J0ISIKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gQXBwbGUgZG9lc24ndCBzZWVtIHRvIHJlbGlhYmx5IGRlZmluZWQgYSAqdW5peCogbWFjcm8KLSNpZiAhZGVmaW5lZChDWUdXSU4pICYmICggIGRlZmluZWQoX191bml4X18pICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fdW5peCkgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZCh1bml4KSAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEUpICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChBUFBMRSkpCi0jICBpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi0vLwotLy8gX19TVExfU1RBVElDX0NPTlNUX0lOSVRfQlVHIGltcGxpZXMgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLS8vIGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjEoYmV0YSkKLS8vCi0jaWYgKGRlZmluZWQoX19TVExfU1RBVElDX0NPTlNUX0lOSVRfQlVHKSB8fCBkZWZpbmVkKF9TVExQX1NUQVRJQ19DT05TVF9JTklUX0JVRykpICYmIChfX1NHSV9TVExfUE9SVCA8PSAweDQwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotI2VuZGlmCi0KLS8vCi0vLyBJZiBTVExwb3J0IHRoaW5rcyB0aGF0IHRoZXJlIGlzIG5vIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24sIHRoZW4gdGhlcmUgaXMgbm8KLS8vIHN0ZDo6aXRlcmF0b3IgdHJhaXRzOgotLy8KLSNpZiAhKGRlZmluZWQoX1NUTFBfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgfHwgZGVmaW5lZChfX1NUTF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTCi0jZW5kaWYKLQotLy8KLS8vIE5vIG5ldyBzdHlsZSBpb3N0cmVhbXMgb24gR0NDIHdpdGhvdXQgU1RMcG9ydCdzIGlvc3RyZWFtcyBlbmFibGVkOgotLy8KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykpICYmICEoZGVmaW5lZChfX1NHSV9TVExfT1dOX0lPU1RSRUFNUykgfHwgZGVmaW5lZChfU1RMUF9PV05fSU9TVFJFQU1TKSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSNlbmRpZgotCi0vLwotLy8gTm8gbmV3IGlvc3RyZWFtcyBpbXBsaWVzIG5vIHN0ZDo6bG9jYWxlLCBhbmQgbm8gc3RkOjpzdHJpbmdzdHJlYW06Ci0vLwotI2lmIGRlZmluZWQoX19TVExfTk9fSU9TVFJFQU1TKSB8fCBkZWZpbmVkKF9fU1RMX05PX05FV19JT1NUUkVBTVMpIHx8IGRlZmluZWQoX1NUTFBfTk9fSU9TVFJFQU1TKSB8fCBkZWZpbmVkKF9TVExQX05PX05FV19JT1NUUkVBTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotI2VuZGlmCi0KLS8vCi0vLyBJZiB0aGUgc3RyZWFtcyBhcmUgbm90IG5hdGl2ZSwgYW5kIHdlIGhhdmUgYSAidXNpbmcgOjp4IiBjb21waWxlciBidWcKLS8vIHRoZW4gdGhlIGlvIHN0cmVhbSBmYWNldHMgYXJlIG5vdCBhdmFpbGFibGUgaW4gbmFtZXNwYWNlIHN0ZDo6Ci0vLwotI2lmZGVmIF9TVExQT1JUX1ZFUlNJT04KLSMgIGlmICEoX1NUTFBPUlRfVkVSU0lPTiA+PSAweDUwMCkgJiYgIWRlZmluZWQoX1NUTFBfT1dOX0lPU1RSRUFNUykgJiYgZGVmaW5lZChfU1RMUF9VU0VfTkFNRVNQQUNFUykgJiYgZGVmaW5lZChORE5CT09TVF9OT19VU0lOR19URU1QTEFURSkgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgIGVuZGlmCi0jZWxzZQotIyAgaWYgIWRlZmluZWQoX19TR0lfU1RMX09XTl9JT1NUUkVBTVMpICYmIGRlZmluZWQoX19TVExfVVNFX05BTUVTUEFDRVMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pICYmIChfU1RMUE9SVF9WRVJTSU9OID49IDB4NTIwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUjFfVU5PUkRFUkVEX01BUAotI2VuZGlmCi0vLwotLy8gV2l0aG91dCBtZW1iZXIgdGVtcGxhdGUgc3VwcG9ydCBlbmFibGVkLCB0aGVpciBhcmUgbm8gdGVtcGxhdGUKLS8vIGl0ZXJhdGUgY29uc3RydWN0b3JzLCBhbmQgbm8gc3RkOjphbGxvY2F0b3I6Ci0vLwotI2lmICEoZGVmaW5lZChfX1NUTF9NRU1CRVJfVEVNUExBVEVTKSB8fCBkZWZpbmVkKF9TVExQX01FTUJFUl9URU1QTEFURVMpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLS8vCi0vLyBob3dldmVyIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IGEgcGFydGlhbCBhbGxvY2F0b3I6Ci0vLwotI2RlZmluZSBORE5CT09TVF9IQVNfUEFSVElBTF9TVERfQUxMT0NBVE9SCi0KLSNpZiAhZGVmaW5lZChfU1RMUF9NRU1CRVJfVEVNUExBVEVfQ0xBU1NFUykgfHwgZGVmaW5lZChfU1RMUF9ET05UX1NVUFBPUlRfUkVCSU5EX01FTUJFUl9URU1QTEFURSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX1NUTFBfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQpICYmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPD0gMTMwMCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi0jZW5kaWYKLQotLy8KLS8vIElmIFNUTHBvcnQgdGhpbmtzIHRoZXJlIGlzIG5vIHdjaGFyX3QgYXQgYWxsLCB0aGVuIHdlIGhhdmUgdG8gZGlzYWJsZQotLy8gdGhlIHN1cHBvcnQgZm9yIHRoZSByZWxldmFudCBzcGVjaWxhemF0aW9ucyBvZiBzdGQ6OiB0ZW1wbGF0ZXMuCi0vLwotI2lmICFkZWZpbmVkKF9TVExQX0hBU19XQ0hBUl9UKSAmJiAhZGVmaW5lZChfU1RMUF9XQ0hBUl9UX0lTX1VTSE9SVCkKLSMgIGlmbmRlZiAgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUklORwotIyAgZW5kaWYKLSMgIGlmbmRlZiAgTkROQk9PU1RfTk9fU1REX1dTVFJFQU1CVUYKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TVERfV1NUUkVBTUJVRgotIyAgZW5kaWYKLSNlbmRpZgotCi0vLwotLy8gV2UgYWx3YXlzIGhhdmUgU0dJIHN0eWxlIGhhc2hfc2V0LCBoYXNoX21hcCwgYW5kIHNsaXN0OgotLy8KLSNpZm5kZWYgX1NUTFBfTk9fRVhURU5TSU9OUwotI2RlZmluZSBORE5CT09TVF9IQVNfSEFTSAotI2RlZmluZSBORE5CT09TVF9IQVNfU0xJU1QKLSNlbmRpZgotCi0vLwotLy8gU1RMcG9ydCBkb2VzIGEgZ29vZCBqb2Igb2YgaW1wb3J0aW5nIG5hbWVzIGludG8gbmFtZXNwYWNlIHN0ZDo6LAotLy8gYnV0IGRvZXNuJ3QgYWx3YXlzIGdldCB0aGVtIGFsbCwgZGVmaW5lIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFLCBzaW5jZSBvdXIKLS8vIHdvcmthcm91bmQgZG9lcyBub3QgY29uZmxpY3Qgd2l0aCBTVExwb3J0czoKLS8vCi0vLwotLy8gSGFyb2xkIEhvd2Ugc2F5czoKLS8vIEJvcmxhbmQgc3dpdGNoZWQgdG8gU1RMcG9ydCBpbiBCQ0I2LiBEZWZpbmluZyBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSB3aXRoCi0vLyBCQ0I2IGRvZXMgY2F1c2UgcHJvYmxlbXMuIElmIHdlIGRldGVjdCBDKysgQnVpbGRlciwgdGhlbiBkb24ndCBkZWZpbmUgCi0vLyBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotLy8KLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9fRE1DX18pCi0vLwotLy8gSWYgU1RMcG9ydCBpcyB1c2luZyBpdCdzIG93biBuYW1lc3BhY2UsIGFuZCB0aGUgcmVhbCBuYW1lcyBhcmUgaW4KLS8vIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCB0aGVuIHdlIGR1cGxpY2F0ZSBTVExwb3J0J3MgdXNpbmcgZGVjbGFyYXRpb25zCi0vLyAoYnkgZGVmaW5pbmcgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpLCB3ZSBkbyB0aGlzIGJlY2F1c2UgU1RMcG9ydCBkb2Vzbid0Ci0vLyBuZWNlc3NhcmlseSBpbXBvcnQgYWxsIHRoZSBuYW1lcyB3ZSBuZWVkIGludG8gbmFtZXNwYWNlIHN0ZDo6Ci0vLyAKLSMgIGlmIChkZWZpbmVkKF9fU1RMX0lNUE9SVF9WRU5ET1JfQ1NURCkgXAotICAgICAgICAgfHwgZGVmaW5lZChfX1NUTF9VU0VfT1dOX05BTUVTUEFDRSkgXAotICAgICAgICAgfHwgZGVmaW5lZChfU1RMUF9JTVBPUlRfVkVORE9SX0NTVEQpIFwKLSAgICAgICAgIHx8IGRlZmluZWQoX1NUTFBfVVNFX09XTl9OQU1FU1BBQ0UpKSBcCi0gICAgICAmJiAoZGVmaW5lZChfX1NUTF9WRU5ET1JfR0xPQkFMX0NTVEQpIHx8IGRlZmluZWQgKF9TVExQX1ZFTkRPUl9HTE9CQUxfQ1NURCkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19FWENFUFRJT05fU1REX05BTUVTUEFDRQotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPCAweDU2MAotLy8gU1RMcG9ydCBkb2Vzbid0IGltcG9ydCBzdGQ6OmFicyBjb3JyZWN0bHk6Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjphYnM7IH0KLS8vIGFuZCBzdHJjbXAvc3RyY3B5IGRvbid0IGdldCBpbXBvcnRlZCBlaXRoZXIgKCdjb3MgdGhleSBhcmUgbWFjcm9zKQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2lmZGVmIHN0cmNweQotIyAgdW5kZWYgc3RyY3B5Ci0jZW5kaWYKLSNpZmRlZiBzdHJjbXAKLSMgIHVuZGVmIHN0cmNtcAotI2VuZGlmCi0jaWZkZWYgX1NUTFBfVkVORE9SX0NTVEQKLW5hbWVzcGFjZSBzdGR7IHVzaW5nIF9TVExQX1ZFTkRPUl9DU1REOjpzdHJjbXA7IHVzaW5nIF9TVExQX1ZFTkRPUl9DU1REOjpzdHJjcHk7IH0KLSNlbmRpZgotI2VuZGlmCi0KLS8vCi0vLyBzdGQ6OnVzZV9mYWNldCBtYXkgYmUgbm9uLXN0YW5kYXJkLCB1c2VzIGEgY2xhc3MgaW5zdGVhZDoKLS8vCi0jaWYgZGVmaW5lZChfX1NUTF9OT19FWFBMSUNJVF9GVU5DVElPTl9UTVBMX0FSR1MpIHx8IGRlZmluZWQoX1NUTFBfTk9fRVhQTElDSVRfRlVOQ1RJT05fVE1QTF9BUkdTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9VU0VfRkFDRVQKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfU1RMUF9VU0VfRkFDRVQKLSNlbmRpZgotCi0vLwotLy8gSWYgU1RMcG9ydCB0aGlua3MgdGhlcmUgYXJlIG5vIHdpZGUgZnVuY3Rpb25zLCA8Y3djaGFyPiBldGMuIGlzIG5vdCB3b3JraW5nOyBidXQKLS8vIG9ubHkgaWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UgaXMgbm90IGRlZmluZWQgKGlmIGl0IGlzIHRoZW4gd2UgZG8gdGhlIGltcG9ydCAKLS8vIGludG8gc3RkOjogb3Vyc2VsdmVzKS4KLS8vCi0jaWYgZGVmaW5lZChfU1RMUF9OT19OQVRJVkVfV0lERV9GVU5DVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ0hBUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NXQ1RZUEUKLSNlbmRpZgotCi0vLwotLy8gSWYgU1RMcG9ydCBmb3Igc29tZSByZWFzb24gd2FzIGNvbmZpZ3VyZWQgc28gdGhhdCBpdCB0aGlua3MgdGhhdCB3Y2hhcl90Ci0vLyBpcyBub3QgYW4gaW50cmluc2ljIHR5cGUsIHRoZW4gd2UgaGF2ZSB0byBkaXNhYmxlIHRoZSBzdXBwb3J0IGZvciBpdCBhcwotLy8gd2VsbCAod2Ugd291bGQgYmUgbWlzc2luZyByZXF1aXJlZCBzcGVjaWFsaXphdGlvbnMgb3RoZXJ3aXNlKS4KLS8vCi0jaWYgIWRlZmluZWQoIF9TVExQX0hBU19XQ0hBUl9UKSB8fCBkZWZpbmVkKF9TVExQX1dDSEFSX1RfSVNfVVNIT1JUKQotIyAgdW5kZWYgIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSNlbmRpZgotCi0vLwotLy8gQm9ybGFuZCBzaGlwcyBhIHZlcnNpb24gb2YgU1RMcG9ydCB3aXRoIEMrKyBCdWlsZGVyIDYgdGhhdCBsYWNrcwotLy8gaGFzaHRhYmxlcyBhbmQgdGhlIGxpa2U6Ci0vLwotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID09IDB4NTYwKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0hBU0gKLSNlbmRpZgotCi0vLwotLy8gZ2NjLTIuOTUuMy9TVExQb3J0IGRvZXMgbm90IGxpa2UgdGhlIHVzaW5nIGRlY2xhcmF0aW9ucyB3ZSB1c2UgdG8gZ2V0IEFETCB3aXRoIHN0ZDo6bWluL21heAotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPCAzKQotIyAgaW5jbHVkZSA8YWxnb3JpdGhtPiAvLyBmb3Igc3RkOjptaW4gYW5kIHN0ZDo6bWF4Ci0jICBkZWZpbmUgTkROQk9PU1RfVVNJTkdfU1REX01JTigpICgodm9pZCkwKQotIyAgZGVmaW5lIE5ETkJPT1NUX1VTSU5HX1NURF9NQVgoKSAoKHZvaWQpMCkKLW5hbWVzcGFjZSBuZG5ib29zdCB7IHVzaW5nIHN0ZDo6bWluOyB1c2luZyBzdGQ6Om1heDsgfQotI2VuZGlmCi0KLS8vICBDKysweCBoZWFkZXJzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPTkRJVElPTl9WQVJJQUJMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GT1JXQVJEX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRlVUVVJFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JBVElPCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX05VTUVSSUNfTElNSVRTCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQUxMT0NBVE9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfQVRPTUlDX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVU5DVElPTkFMCi0KLSNkZWZpbmUgTkROQk9PU1RfU1RETElCICJTVExQb3J0IHN0YW5kYXJkIGxpYnJhcnkgdmVyc2lvbiAiIE5ETkJPT1NUX1NUUklOR0laRShfX1NHSV9TVExfUE9SVCkKLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvdmFjcHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3RkbGliL3ZhY3BwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3MTliNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy9zdGRsaWIvdmFjcHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgLSAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLSNpZiBfX0lCTUNQUF9fIDw9IDUwMQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19NQUNST19VU0VfRkFDRVQKLSNkZWZpbmUgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0KLS8vIEFwcGxlIGRvZXNuJ3Qgc2VlbSB0byByZWxpYWJseSBkZWZpbmVkIGEgKnVuaXgqIG1hY3JvCi0jaWYgIWRlZmluZWQoQ1lHV0lOKSAmJiAoICBkZWZpbmVkKF9fdW5peF9fKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX3VuaXgpICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQodW5peCkgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkKF9fQVBQTEVfXykgXAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZChfX0FQUExFKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQoQVBQTEUpKQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotLy8gIEMrKzB4IGhlYWRlcnMgbm90IHlldCBpbXBsZW1lbnRlZAotLy8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ0hST05PCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NPREVDVlQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8KLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkVHRVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfU1lTVEVNX0VSUk9SCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RIUkVBRAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX01BUAotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfTlVNRVJJQ19MSU1JVFMKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BTExPQ0FUT1IKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9BVE9NSUNfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfU01BUlRfUFRSCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVTkNUSU9OQUwKLQotI2RlZmluZSBORE5CT09TVF9TVERMSUIgIlZpc3VhbCBBZ2UgZGVmYXVsdCBzdGFuZGFyZCBsaWJyYXJ5IgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3VmZml4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3N1ZmZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZmQ3ZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvc3VmZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzMyArMCwwIEBACi0vLyAgQm9vc3QgY29uZmlnLmhwcCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8JYm9vc3RpbnNwZWN0Om5kcHJlY2F0ZWRfbWFjcm9zCS0tIHRlbGwgdGhlIGluc3BlY3QgdG9vbCB0byBpZ25vcmUgdGhpcyBmaWxlCi0KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwMyBKb2huIE1hZGRvY2sKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgRGFyaW4gQWRsZXIKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgQmlsbCBLZW1wZiAKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgSmVucyBNYXVyZXIKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDItMjAwMyBEYXZpZCBBYnJhaGFtcwotLy8gIENvcHlyaWdodCAoYykgMjAwMyBHZW5uYXJvIFByb3RhCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAzIEVyaWMgRnJpZWRtYW4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMTAgRXJpYyBKb3VyZGFubmVhdSwgSm9lbCBGYWxjb3UKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0KLS8vICBCb29zdCBjb25maWcuaHBwIHBvbGljeSBhbmQgcmF0aW9uYWxlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gbW92ZWQgdG8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2NvbmZpZy8KLS8vCi0vLyAgVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIHN0YWJsZSwgYW5kIHJlbGF0aXZlbHkgdW5jaGFuZ2luZy4KLS8vICBJdCBzaG91bGQgY29udGFpbiBib2lsZXJwbGF0ZSBjb2RlIG9ubHkgLSBubyBjb21waWxlciBzcGVjaWZpYwotLy8gIGNvZGUgdW5sZXNzIGl0IGlzIHVuYXZvaWRhYmxlIC0gbm8gY2hhbmdlcyB1bmxlc3MgdW5hdm9pZGFibGUuCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX1NVRkZJWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfQ09ORklHX1NVRkZJWF9IUFAKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotLy8KLS8vIFNvbWUgR0NDLTQueCB2ZXJzaW9ucyBpc3N1ZSB3YXJuaW5ncyBldmVuIHdoZW4gX19leHRlbnNpb25fXyBpcyB1c2VkLAotLy8gc28gdXNlIHRoaXMgYXMgYSB3b3JrYXJvdW5kOgotLy8KLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi0vLwotLy8gZW5zdXJlIHRoYXQgdmlzaWJpbGl0eSBtYWNyb3MgYXJlIGFsd2F5cyBkZWZpbmVkLCB0aHVzIHN5bXBsaWZ5aW5nIHVzZQotLy8KLSNpZm5kZWYgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgZGVmaW5lIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9TWU1CT0xfVklTSUJMRQotIyBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUKLSNlbmRpZgotCi0vLwotLy8gbG9vayBmb3IgbG9uZyBsb25nIGJ5IGxvb2tpbmcgZm9yIHRoZSBhcHByb3ByaWF0ZSBtYWNyb3MgaW4gPGxpbWl0cy5oPi4KLS8vIE5vdGUgdGhhdCB3ZSB1c2UgbGltaXRzLmggcmF0aGVyIHRoYW4gY2xpbWl0cyBmb3IgbWF4aW1hbCBwb3J0YWJpbGl0eSwKLS8vIHJlbWVtYmVyIHRoYXQgc2luY2UgdGhlc2UganVzdCBkZWNsYXJlIGEgYnVuY2ggb2YgbWFjcm9zLCB0aGVyZSBzaG91bGQgYmUKLS8vIG5vIG5hbWVzcGFjZSBpc3N1ZXMgZnJvbSB0aGlzLgotLy8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jIGlmIChkZWZpbmVkKFVMTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdfTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdMT05HX01BWCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSMgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9OT19MT05HX0xPTkcKLSMgZW5kaWYKLSNlbmRpZgotCi0vLyBHQ0MgMy54IHdpbGwgY2xlYW4gdXAgYWxsIG9mIHRob3NlIG5hc3R5IG1hY3JvIGRlZmluaXRpb25zIHRoYXQKLS8vIE5ETkJPT1NUX05PX0NUWVBFX0ZVTkNUSU9OUyBpcyBpbnRlbmRlZCB0byBoZWxwIHdvcmsgYXJvdW5kLCBzbyB1bmRlZmluZQotLy8gaXQgdW5kZXIgR0NDIDMueC4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMykgJiYgZGVmaW5lZChORE5CT09TVF9OT19DVFlQRV9GVU5DVElPTlMpCi0jICB1bmRlZiBORE5CT09TVF9OT19DVFlQRV9GVU5DVElPTlMKLSNlbmRpZgotCi0vLwotLy8gQXNzdW1lIGFueSBleHRlbnNpb25zIGFyZSBpbiBuYW1lc3BhY2Ugc3RkOjogdW5sZXNzIHN0YXRlZCBvdGhlcndpc2U6Ci0vLwotIyAgaWZuZGVmIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFCi0jICAgIGRlZmluZSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRSBzdGQKLSMgIGVuZGlmCi0KLS8vCi0vLyBJZiBjdi1xdWFsaWZpZWQgc3BlY2lhbGl6YXRpb25zIGFyZSBub3QgYWxsb3dlZCwgdGhlbiBuZWl0aGVyIGFyZSBjdi12b2lkIG9uZXM6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi0jICBlbmRpZgotCi0vLwotLy8gSWYgdGhlcmUgaXMgbm8gbnVtZXJpY19saW1pdHMgdGVtcGxhdGUsIHRoZW4gaXQgY2FuJ3QgaGF2ZSBhbnkgY29tcGlsZSB0aW1lCi0vLyBjb25zdGFudHMgZWl0aGVyIQotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fTElNSVRTKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUykKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX01TX0lOVDY0X05VTUVSSUNfTElNSVRTCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fTE9OR19MT05HX05VTUVSSUNfTElNSVRTCi0jICBlbmRpZgotCi0vLwotLy8gaWYgdGhlcmUgaXMgbm8gbG9uZyBsb25nIHRoZW4gdGhlcmUgaXMgbm8gc3BlY2lhbGlzYXRpb24KLS8vIGZvciBudW1lcmljX2xpbWl0czxsb25nIGxvbmc+IGVpdGhlcjoKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HX05VTUVSSUNfTElNSVRTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0xPTkdfTE9OR19OVU1FUklDX0xJTUlUUwotI2VuZGlmCi0KLS8vCi0vLyBpZiB0aGVyZSBpcyBubyBfX2ludDY0IHRoZW4gdGhlcmUgaXMgbm8gc3BlY2lhbGlzYXRpb24KLS8vIGZvciBudW1lcmljX2xpbWl0czxfX2ludDY0PiBlaXRoZXI6Ci0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMKLSNlbmRpZgotCi0vLwotLy8gaWYgbWVtYmVyIHRlbXBsYXRlcyBhcmUgc3VwcG9ydGVkIHRoZW4gc28gaXMgdGhlCi0vLyBWQzYgc3Vic2V0IG9mIG1lbWJlciB0ZW1wbGF0ZXM6Ci0vLwotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgXAotICAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgY2FuJ3QgdGVzdCBmb3IgcGFydGlhbCBzcGVjaWFsaXNhdGlvbiBidWdzOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfQkNCX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fQlVHKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0JDQl9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OX0JVRwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgd2UgY2FuJ3QgaGF2ZSBhcnJheS10eXBlIHBhcnRpYWwgc3BlY2lhbGlzYXRpb25zOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMKLSMgIGVuZGlmCi0KLS8vCi0vLyBXaXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24sIHN0ZDo6aXRlcmF0b3JfdHJhaXRzIGNhbid0IHdvcms6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLSMgIGVuZGlmCi0KLS8vCi0vLyBXaXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24sIHBhcnRpYWwgCi0vLyBzcGVjaWFsaXphdGlvbiB3aXRoIGRlZmF1bHQgYXJncyB3b24ndCB3b3JrIGVpdGhlcjoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fSU1QTElDSVRfREVGQVVMVF9BUkdTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1BBUlRJQUxfU1BFQ0lBTElaQVRJT05fSU1QTElDSVRfREVGQVVMVF9BUkdTCi0jICBlbmRpZgotCi0vLwotLy8gV2l0aG91dCBtZW1iZXIgdGVtcGxhdGUgc3VwcG9ydCwgd2UgY2FuJ3QgaGF2ZSB0ZW1wbGF0ZSBjb25zdHJ1Y3RvcnMKLS8vIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGVpdGhlcjoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpIFwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVEX0lURVJBVE9SX0NPTlNUUlVDVE9SUwotIyAgZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgbWVtYmVyIHRlbXBsYXRlIHN1cHBvcnQsIHdlIGNhbid0IGhhdmUgYSBjb25mb3JtaW5nCi0vLyBzdGQ6OmFsbG9jYXRvciB0ZW1wbGF0ZSBlaXRoZXI6Ci0vLwotIyAgaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKSBcCi0gICAgICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfQUxMT0NBVE9SKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSMgIGVuZGlmCi0KLS8vCi0vLyB3aXRob3V0IEFETCBzdXBwb3J0IHRoZW4gdXNpbmcgZGVjbGFyYXRpb25zIHdpbGwgYnJlYWsgQURMIGFzIHdlbGw6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQVJHVU1FTlRfREVQRU5ERU5UX0xPT0tVUCkgJiYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05fU0NPUEVfVVNJTkdfREVDTEFSQVRJT05fQlJFQUtTX0FETCkKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TQ09QRV9VU0lOR19ERUNMQVJBVElPTl9CUkVBS1NfQURMCi0jZW5kaWYKLQotLy8KLS8vIFdpdGhvdXQgdHlwZWlkIHN1cHBvcnQgd2UgaGF2ZSBubyBkeW5hbWljIFJUVEkgZWl0aGVyOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RZUEVJRCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fUlRUSSkKLSMgIGRlZmluZSBORE5CT09TVF9OT19SVFRJCi0jZW5kaWYKLQotLy8KLS8vIElmIHdlIGhhdmUgYSBzdGFuZGFyZCBhbGxvY2F0b3IsIHRoZW4gd2UgaGF2ZSBhIHBhcnRpYWwgb25lIGFzIHdlbGw6Ci0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1BBUlRJQUxfU1REX0FMTE9DQVRPUgotI2VuZGlmCi0KLS8vCi0vLyBXZSBjYW4ndCBoYXZlIGEgd29ya2luZyBzdGQ6OnVzZV9mYWNldCBpZiB0aGVyZSBpcyBubyBzdGQ6OmxvY2FsZToKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9VU0VfRkFDRVQpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fU1REX1VTRV9GQUNFVAotIyAgZW5kaWYKLQotLy8KLS8vIFdlIGNhbid0IGhhdmUgYSBzdGQ6Om1lc3NhZ2VzIGZhY2V0IGlmIHRoZXJlIGlzIG5vIHN0ZDo6bG9jYWxlOgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX01FU1NBR0VTKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotIyAgZW5kaWYKLQotLy8KLS8vIFdlIGNhbid0IGhhdmUgYSB3b3JraW5nIHN0ZDo6d3N0cmVhbWJ1ZiBpZiB0aGVyZSBpcyBubyBzdGQ6OmxvY2FsZToKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGCi0jICBlbmRpZgotCi0vLwotLy8gV2UgY2FuJ3QgaGF2ZSBhIDxjd2N0eXBlPiBpZiB0aGVyZSBpcyBubyA8Y3djaGFyPjoKLS8vCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NXQ0hBUikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1dDVFlQRSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19DV0NUWVBFCi0jICBlbmRpZgotCi0vLwotLy8gV2UgY2FuJ3QgaGF2ZSBhIHN3cHJpbnRmIGlmIHRoZXJlIGlzIG5vIDxjd2NoYXI+OgotLy8KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1dDSEFSKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TV1BSSU5URikKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TV1BSSU5URgotIyAgZW5kaWYKLQotLy8KLS8vIElmIFdpbjMyIHN1cHBvcnQgaXMgdHVybmVkIG9mZiwgdGhlbiB3ZSBtdXN0IHR1cm4gb2ZmCi0vLyB0aHJlYWRpbmcgc3VwcG9ydCBhbHNvLCB1bmxlc3MgdGhlcmUgaXMgc29tZSBvdGhlcgotLy8gdGhyZWFkIEFQSSBlbmFibGVkOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpICYmIGRlZmluZWQoX1dJTjMyKSBcCi0gICAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykKLSMgIGRlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLSNlbmRpZgotCi0vLwotLy8gVHVybiBvbiB0aHJlYWRpbmcgc3VwcG9ydCBpZiB0aGUgY29tcGlsZXIgdGhpbmtzIHRoYXQgaXQncyBpbgotLy8gbXVsdGl0aHJlYWRlZCBtb2RlLiAgV2UgcHV0IHRoaXMgaGVyZSBiZWNhdXNlIHRoZXJlIGFyZSBvbmx5IGEKLS8vIGxpbWl0ZWQgbnVtYmVyIG9mIG1hY3JvcyB0aGF0IGlkZW50aWZ5IHRoaXMgKGlmIHRoZXJlJ3MgYW55IG1pc3NpbmcKLS8vIGZyb20gaGVyZSB0aGVuIGFkZCB0byB0aGUgYXBwcm9wcmlhdGUgY29tcGlsZXIgc2VjdGlvbik6Ci0vLwotI2lmIChkZWZpbmVkKF9fTVRfXykgfHwgZGVmaW5lZChfTVQpIHx8IGRlZmluZWQoX1JFRU5UUkFOVCkgXAotICAgIHx8IGRlZmluZWQoX1BUSFJFQURTKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSkgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19USFJFQURTKQotIyAgZGVmaW5lIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotLy8KLS8vIFR1cm4gdGhyZWFkaW5nIHN1cHBvcnQgb2ZmIGlmIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyBpcyBkZWZpbmVkOgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUykgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfVEhSRUFEUykKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jZW5kaWYKLQotLy8KLS8vIFR1cm4gdGhyZWFkaW5nIHN1cHBvcnQgb2ZmIGlmIHdlIGRvbid0IHJlY29nbmlzZSB0aGUgdGhyZWFkaW5nIEFQSToKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfVEhSRUFEUykgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKVwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfQkVUSFJFQURTKVwKLSAgICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19NUFRBU0tTKQotIyAgdW5kZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSNlbmRpZgotCi0vLwotLy8gVHVybiB0aHJlYWRpbmcgZGV0YWlsIG1hY3JvcyBvZmYgaWYgd2UgZG9uJ3QgKHdhbnQgdG8pIHVzZSB0aHJlYWRpbmcKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jICB1bmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRFMKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19QVEhSRUFEX01VVEVYQVRUUl9TRVRUWVBFCi0jICB1bmRlZiBORE5CT09TVF9IQVNfUFRIUkVBRF9ZSUVMRAotIyAgdW5kZWYgTkROQk9PU1RfSEFTX1BUSFJFQURfREVMQVlfTlAKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19XSU5USFJFQURTCi0jICB1bmRlZiBORE5CT09TVF9IQVNfQkVUSFJFQURTCi0jICB1bmRlZiBORE5CT09TVF9IQVNfTVBUQVNLUwotI2VuZGlmCi0KLS8vCi0vLyBJZiB0aGUgY29tcGlsZXIgY2xhaW1zIHRvIGJlIEM5OSBjb25mb3JtYW50LCB0aGVuIGl0IGhhZCBiZXR0ZXIKLS8vIGhhdmUgYSA8c3RkaW50Lmg+OgotLy8KLSMgIGlmIGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19TVERJTlRfSAotIyAgICAgaWZuZGVmIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19MT0cxUAotIyAgICAgZW5kaWYKLSMgICAgIGlmbmRlZiBORE5CT09TVF9IQVNfRVhQTTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfRVhQTTEKLSMgICAgIGVuZGlmCi0jICBlbmRpZgotCi0vLwotLy8gRGVmaW5lIE5ETkJPT1NUX05PX1NMSVNUIGFuZCBORE5CT09TVF9OT19IQVNIIGlmIHJlcXVpcmVkLgotLy8gTm90ZSB0aGF0IHRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHkuCi0vLwotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1NMSVNUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TTElTVCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19TTElTVAotIyAgZW5kaWYKLQotIyAgaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX0hBU0gpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0hBU0gpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSEFTSAotIyAgZW5kaWYKLQotLy8KLS8vIFNldCBORE5CT09TVF9TTElTVF9IRUFERVIgaWYgbm90IHNldCBhbHJlYWR5OgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19TTElTVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfU0xJU1RfSEVBREVSKQotIyAgZGVmaW5lIE5ETkJPT1NUX1NMSVNUX0hFQURFUiA8c2xpc3Q+Ci0jZW5kaWYKLQotLy8KLS8vIFNldCBORE5CT09TVF9IQVNIX1NFVF9IRUFERVIgaWYgbm90IHNldCBhbHJlYWR5OgotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19IQVNIKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNIX1NFVF9IRUFERVIpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTSF9TRVRfSEVBREVSIDxoYXNoX3NldD4KLSNlbmRpZgotCi0vLwotLy8gU2V0IE5ETkJPT1NUX0hBU0hfTUFQX0hFQURFUiBpZiBub3Qgc2V0IGFscmVhZHk6Ci0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0hBU0gpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU0hfTUFQX0hFQURFUikKLSMgIGRlZmluZSBORE5CT09TVF9IQVNIX01BUF9IRUFERVIgPGhhc2hfbWFwPgotI2VuZGlmCi0KLS8vICBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLS8vICBUaGlzIG1hY3JvIGdldHMgc2V0IGlmIHdlIGhhdmUgaGVhZGVycyB0aGF0IGZpeCB0aGUgQUJJLAotLy8gIGFuZCBwcmV2ZW50IE9EUiB2aW9sYXRpb25zIHdoZW4gbGlua2luZyB0byBleHRlcm5hbCBsaWJyYXJpZXM6Ci0jaWYgZGVmaW5lZChORE5CT09TVF9BQklfUFJFRklYKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0FCSV9TVUZGSVgpICYmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19BQklfSEVBREVSUykKLSMgIGRlZmluZSBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfQUJJX0hFQURFUlMpICYmIGRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9BQklfSEVBREVSUykKLSMgIHVuZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotI2VuZGlmCi0KLS8vICBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSB3b3JrYXJvdW5kICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgQmVjYXVzZSBzdGQ6OnNpemVfdCB1c2FnZSBpcyBzbyBjb21tb24sIGV2ZW4gaW4gYm9vc3QgaGVhZGVycyB3aGljaCBkbyBub3QKLS8vICBvdGhlcndpc2UgdXNlIHRoZSBDIGxpYnJhcnksIHRoZSA8Y3N0ZGRlZj4gd29ya2Fyb3VuZCBpcyBpbmNsdWRlZCBoZXJlIHNvCi0vLyAgdGhhdCB1Z2x5IHdvcmthcm91bmQgY29kZSBuZWVkIG5vdCBhcHBlYXIgaW4gbWFueSBvdGhlciBib29zdCBoZWFkZXJzLgotLy8gIE5PVEUgV0VMTDogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIG5vbi1jb25mb3JtaW5nIGNvbXBpbGVyczsgPGNzdGRkZWY+Ci0vLyAgbXVzdCBzdGlsbCBiZSAjaW5jbHVkZWQgaW4gdGhlIHVzdWFsIHBsYWNlcyBzbyB0aGF0IDxjc3RkZGVmPiBpbmNsdXNpb24KLS8vICB3b3JrcyBhcyBleHBlY3RlZCB3aXRoIHN0YW5kYXJkIGNvbmZvcm1pbmcgY29tcGlsZXJzLiAgVGhlIHJlc3VsdGluZwotLy8gIGRvdWJsZSBpbmNsdXNpb24gb2YgPGNzdGRkZWY+IGlzIGhhcm1sZXNzLgotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0jICAgaW5jbHVkZSA8Y3N0ZGRlZj4KLSAgICBuYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpwdHJkaWZmX3Q7IHVzaW5nIDo6c2l6ZV90OyB9Ci0jIGVuZGlmCi0KLS8vICBXb3JrYXJvdW5kIGZvciB0aGUgdW5mb3J0dW5hdGUgbWluL21heCBtYWNyb3MgZGVmaW5lZCBieSBzb21lIHBsYXRmb3JtIGhlYWRlcnMKLQotI2RlZmluZSBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTgotCi0jaWZuZGVmIE5ETkJPT1NUX1VTSU5HX1NURF9NSU4KLSMgIGRlZmluZSBORE5CT09TVF9VU0lOR19TVERfTUlOKCkgdXNpbmcgc3RkOjptaW4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1VTSU5HX1NURF9NQVgKLSMgIGRlZmluZSBORE5CT09TVF9VU0lOR19TVERfTUFYKCkgdXNpbmcgc3RkOjptYXgKLSNlbmRpZgotCi0vLyAgTkROQk9PU1RfTk9fU1REX01JTl9NQVggd29ya2Fyb3VuZCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9NSU5fTUFYKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotCi1uYW1lc3BhY2Ugc3RkIHsKLSAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KLSAgaW5saW5lIGNvbnN0IF9UcCYgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OIChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpIHsKLSAgICByZXR1cm4gX19iIDwgX19hID8gX19iIDogX19hOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBfVHA+Ci0gIGlubGluZSBjb25zdCBfVHAmIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKSB7Ci0gICAgcmV0dXJuICBfX2EgPCBfX2IgPyBfX2IgOiBfX2E7Ci0gIH0KLX0KLQotIyAgZW5kaWYKLQotLy8gTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCi0vLyBPbiBjb21waWxlcnMgd2hpY2ggZG9uJ3QgYWxsb3cgaW4tY2xhc3MgaW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIGludGVncmFsCi0vLyBjb25zdGFudCBtZW1iZXJzLCB3ZSBtdXN0IHVzZSBlbnVtcyBhcyBhIHdvcmthcm91bmQgaWYgd2Ugd2FudCB0aGUgY29uc3RhbnRzCi0vLyB0byBiZSBhdmFpbGFibGUgYXQgY29tcGlsZS10aW1lLiBUaGlzIG1hY3JvIGdpdmVzIHVzIGEgY29udmVuaWVudCB3YXkgdG8KLS8vIGRlY2xhcmUgc3VjaCBjb25zdGFudHMuCi0KLSMgIGlmZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodHlwZSwgYXNzaWdubWVudCkgZW51bSB7IGFzc2lnbm1lbnQgfQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh0eXBlLCBhc3NpZ25tZW50KSBzdGF0aWMgY29uc3QgdHlwZSBhc3NpZ25tZW50Ci0jICBlbmRpZgotCi0vLyBORE5CT09TVF9VU0VfRkFDRVQgLyBIQVNfRkFDRVQgd29ya2Fyb3VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vIFdoZW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgaGF2ZSBhIGNvbmZvcm1pbmcgc3RkOjp1c2VfZmFjZXQgdGhlcmUKLS8vIGFyZSB2YXJpb3VzIHdvcmthcm91bmRzIGF2YWlsYWJsZSwgYnV0IHRoZXkgZGlmZmVyIGZyb20gbGlicmFyeSB0byBsaWJyYXJ5LgotLy8gVGhlIHNhbWUgcHJvYmxlbSBvY2N1cnMgd2l0aCBoYXNfZmFjZXQuCi0vLyBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIGNvbnNpc3RlbnQgd2F5IHRvIGFjY2VzcyBhIGxvY2FsZSdzIGZhY2V0cy4KLS8vIFVzYWdlOgotLy8gICAgcmVwbGFjZQotLy8gICAgICAgc3RkOjp1c2VfZmFjZXQ8VHlwZT4obG9jKTsKLS8vICAgIHdpdGgKLS8vICAgICAgIE5ETkJPT1NUX1VTRV9GQUNFVChUeXBlLCBsb2MpOwotLy8gICAgTm90ZSBkbyBub3QgYWRkIGEgc3RkOjogcHJlZml4IHRvIHRoZSBmcm9udCBvZiBORE5CT09TVF9VU0VfRkFDRVQhCi0vLyAgVXNlIGZvciBORE5CT09TVF9IQVNfRkFDRVQgaXMgYW5hbG9nb3VzLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfVVNFX0ZBQ0VUKQotIyAgaWZkZWYgTkROQk9PU1RfSEFTX1RXT19BUkdfVVNFX0ZBQ0VUCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVVNFX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjp1c2VfZmFjZXQobG9jLCBzdGF0aWNfY2FzdDxUeXBlKj4oMCkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjpoYXNfZmFjZXQobG9jLCBzdGF0aWNfY2FzdDxUeXBlKj4oMCkpCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01BQ1JPX1VTRV9GQUNFVCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9VU0VfRkFDRVQoVHlwZSwgbG9jKSBzdGQ6Ol9VU0UobG9jLCBUeXBlKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19GQUNFVChUeXBlLCBsb2MpIHN0ZDo6X0hBUyhsb2MsIFR5cGUpCi0jICBlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1NUTFBfVVNFX0ZBQ0VUKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1VTRV9GQUNFVChUeXBlLCBsb2MpICgqc3RkOjpfVXNlX2ZhY2V0PFR5cGUgPihsb2MpKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19GQUNFVChUeXBlLCBsb2MpIHN0ZDo6aGFzX2ZhY2V0PCBUeXBlID4obG9jKQotIyAgZW5kaWYKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfVVNFX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjp1c2VfZmFjZXQ8IFR5cGUgPihsb2MpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX0ZBQ0VUKFR5cGUsIGxvYykgc3RkOjpoYXNfZmFjZXQ8IFR5cGUgPihsb2MpCi0jZW5kaWYKLQotLy8gTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vIE1lbWJlciB0ZW1wbGF0ZXMgYXJlIHN1cHBvcnRlZCBieSBzb21lIGNvbXBpbGVycyBldmVuIHRob3VnaCB0aGV5IGNhbid0IHVzZQotLy8gdGhlIEE6OnRlbXBsYXRlIG1lbWJlcjxVPiBzeW50YXgsIGFzIGEgd29ya2Fyb3VuZCByZXBsYWNlOgotLy8KLS8vIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPFU+IGJpbmRlcjsKLS8vCi0vLyB3aXRoOgotLy8KLS8vIHR5cGVkZWYgdHlwZW5hbWUgQTo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHJlYmluZDxVPiBiaW5kZXI7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0tFWVdPUkQKLSMgIGRlZmluZSBORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGVtcGxhdGUKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0jZW5kaWYKLQotLy8gTkROQk9PU1RfVU5SRUFDSEFCTEVfUkVUVVJOKHgpIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyBOb3JtYWxseSBldmFsdWF0ZXMgdG8gbm90aGluZywgdW5sZXNzIE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04KLS8vIGlzIGRlZmluZWQsIGluIHdoaWNoIGNhc2UgaXQgZXZhbHVhdGVzIHRvIHJldHVybiB4OyBVc2Ugd2hlbiB5b3UgaGF2ZSBhIHJldHVybgotLy8gc3RhdGVtZW50IHRoYXQgY2FuIG5ldmVyIGJlIHJlYWNoZWQuCi0KLSNpZmRlZiBORE5CT09TVF9OT19VTlJFQUNIQUJMRV9SRVRVUk5fREVURUNUSU9OCi0jICBkZWZpbmUgTkROQk9PU1RfVU5SRUFDSEFCTEVfUkVUVVJOKHgpIHJldHVybiB4OwotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9VTlJFQUNIQUJMRV9SRVRVUk4oeCkKLSNlbmRpZgotCi0vLyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHdvcmthcm91bmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vCi0vLyBTb21lIGNvbXBpbGVycyBkb24ndCBzdXBwb3J0IHRoZSB1c2Ugb2YgYHR5cGVuYW1lJyBmb3IgZGVwZW5kZW50Ci0vLyB0eXBlcyBpbiBkZWR1Y2VkIGNvbnRleHRzLCBlLmcuCi0vLwotLy8gICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIGYoVCwgdHlwZW5hbWUgVDo6dHlwZSk7Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXgotLy8gUmVwbGFjZSB0aGVzZSBkZWNsYXJhdGlvbnMgd2l0aDoKLS8vCi0vLyAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgZihULCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFQ6OnR5cGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0RFRFVDRURfVFlQRU5BTUUKLSMgIGRlZmluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVuYW1lCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RZUEVOQU1FX1dJVEhfQ1RPUgotIyAgZGVmaW5lIE5ETkJPT1NUX0NUT1JfVFlQRU5BTUUgdHlwZW5hbWUKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfQ1RPUl9UWVBFTkFNRQotI2VuZGlmCi0KLS8vIGxvbmcgbG9uZyB3b3JrYXJvdW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyBPbiBnY2MgKGFuZCBtYXliZSBvdGhlciBjb21waWxlcnM/KSBsb25nIGxvbmcgaXMgYWx3YXkgc3VwcG9ydGVkCi0vLyBidXQgaXQncyB1c2UgbWF5IGdlbmVyYXRlIGVpdGhlciB3YXJuaW5ncyAod2l0aCAtYW5zaSksIG9yIGVycm9ycwotLy8gKHdpdGggLXBlZGFudGljIC1hbnNpKSB1bmxlc3MgaXQncyB1c2UgaXMgcHJlZml4ZWQgYnkgX19leHRlbnNpb25fXwotLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jICBpZmRlZiBfX0dOVUNfXwotICAgX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBsb25nX2xvbmdfdHlwZTsKLSAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxvbmdfbG9uZ190eXBlOwotIyAgZWxzZQotICAgdHlwZWRlZiBsb25nIGxvbmcgbG9uZ19sb25nX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bG9uZ19sb25nX3R5cGU7Ci0jICBlbmRpZgotfQotI2VuZGlmCi0vLyBzYW1lIGFnYWluIGZvciBfX2ludDEyODoKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19JTlQxMjgpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jICBpZmRlZiBfX0dOVUNfXwotICAgX19leHRlbnNpb25fXyB0eXBlZGVmIF9faW50MTI4IGludDEyOF90eXBlOwotICAgX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIF9faW50MTI4IHVpbnQxMjhfdHlwZTsKLSMgIGVsc2UKLSAgIHR5cGVkZWYgX19pbnQxMjggaW50MTI4X3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIF9faW50MTI4IHVpbnQxMjhfdHlwZTsKLSMgIGVuZGlmCi19Ci0jZW5kaWYKLQotLy8gTkROQk9PU1RfW0FQUEVORF9dRVhQTElDSVRfVEVNUExBVEVfW05PTl9dVFlQRSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8KLS8vIFNvbWUgY29tcGlsZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBmdW5jdGlvbiB0ZW1wbGF0ZXMgd2hvc2UgdGVtcGxhdGUKLS8vIHBhcmFtZXRlcnMgZG9uJ3QgYXBwZWFyIGluIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdCAoYmFzaWNhbGx5Ci0vLyB0aGV5IGp1c3QgbGluayBvbmUgaW5zdGFudGlhdGlvbiBvZiB0aGUgdGVtcGxhdGUgaW4gdGhlIGZpbmFsCi0vLyBleGVjdXRhYmxlKS4gVGhlc2UgbWFjcm9zIHByb3ZpZGUgYSB1bmlmb3JtIHdheSB0byBjb3BlIHdpdGggdGhlCi0vLyBwcm9ibGVtIHdpdGggbm8gZWZmZWN0cyBvbiB0aGUgY2FsbGluZyBzeW50YXguCi0KLS8vIEV4YW1wbGU6Ci0vLwotLy8gICNpbmNsdWRlIDxpb3N0cmVhbT4KLS8vICAjaW5jbHVkZSA8b3N0cmVhbT4KLS8vICAjaW5jbHVkZSA8dHlwZWluZm8+Ci0vLwotLy8gIHRlbXBsYXRlIDxpbnQgbj4KLS8vICB2b2lkIGYoKSB7IHN0ZDo6Y291dCA8PCBuIDw8ICcgJzsgfQotLy8KLS8vICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS8vICB2b2lkIGcoKSB7IHN0ZDo6Y291dCA8PCB0eXBlaWQoVCkubmFtZSgpIDw8ICcgJzsgfQotLy8KLS8vICBpbnQgbWFpbigpIHsKLS8vICAgIGY8MT4oKTsKLS8vICAgIGY8Mj4oKTsKLS8vCi0vLyAgICBnPGludD4oKTsKLS8vICAgIGc8ZG91YmxlPigpOwotLy8gIH0KLS8vCi0vLyBXaXRoIFZDKysgNi4wIHRoZSBvdXRwdXQgaXM6Ci0vLwotLy8gICAyIDIgZG91YmxlIGRvdWJsZQotLy8KLS8vIFRvIGZpeCBpdCwgd3JpdGUKLS8vCi0vLyAgIHRlbXBsYXRlIDxpbnQgbj4KLS8vICAgdm9pZCBmKE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKGludCwgbikpIHsgLi4uIH0KLS8vCi0vLyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLy8gICB2b2lkIGcoTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSkgeyAuLi4gfQotLy8KLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19FWFBMSUNJVF9GVU5DVElPTl9URU1QTEFURV9BUkdVTUVOVFMpICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0KLSMgIGluY2x1ZGUgIm5kbmJvb3N0L3R5cGUuaHBwIgotIyAgaW5jbHVkZSAibmRuYm9vc3Qvbm9uX3R5cGUuaHBwIgotCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KSAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGU8dD4qID0gMAotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KSAgICAgICAgIG5kbmJvb3N0Ojp0eXBlPHQ+KgotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpICAgICAgIG5kbmJvb3N0Ojpub25fdHlwZTx0LCB2PiogPSAwCi0jICBkZWZpbmUgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KSAgbmRuYm9vc3Q6Om5vbl90eXBlPHQsIHY+KgotCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkgICAgICAgIFwKLSAgICAgICAgICAgICAsIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkKLSMgIGRlZmluZSBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpICAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpIFwKLSAgICAgICAgICAgICAsIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikgICAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0jZWxzZQotCi0vLyBubyB3b3JrYXJvdW5kIG5lZWRlZDogZXhwYW5kIHRvIG5vdGhpbmcKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRV9TUEVDKHQsIHYpCi0KLQotI2VuZGlmIC8vIGRlZmluZWQgTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTCi0KLS8vIFdoZW4gTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPIGlzIGRlZmluZWQsIHdlIGNhbiBqdXN0IGltcG9ydAotLy8gdGhlIGdsb2JhbCBkZWZpbml0aW9uIGludG8gc3RkIG5hbWVzcGFjZToKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9UWVBFSU5GTykgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSNpbmNsdWRlIDx0eXBlaW5mbz4KLW5hbWVzcGFjZSBzdGR7IHVzaW5nIDo6dHlwZV9pbmZvOyB9Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIEhlbHBlciBtYWNybyBORE5CT09TVF9TVFJJTkdJWkU6Ci0vLyBDb252ZXJ0cyB0aGUgcGFyYW1ldGVyIFggdG8gYSBzdHJpbmcgYWZ0ZXIgbWFjcm8gcmVwbGFjZW1lbnQKLS8vIG9uIFggaGFzIGJlZW4gcGVyZm9ybWVkLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfU1RSSU5HSVpFKFgpIE5ETkJPT1NUX0RPX1NUUklOR0laRShYKQotI2RlZmluZSBORE5CT09TVF9ET19TVFJJTkdJWkUoWCkgI1gKLQotLy8KLS8vIEhlbHBlciBtYWNybyBORE5CT09TVF9KT0lOOgotLy8gVGhlIGZvbGxvd2luZyBwaWVjZSBvZiBtYWNybyBtYWdpYyBqb2lucyB0aGUgdHdvCi0vLyBhcmd1bWVudHMgdG9nZXRoZXIsIGV2ZW4gd2hlbiBvbmUgb2YgdGhlIGFyZ3VtZW50cyBpcwotLy8gaXRzZWxmIGEgbWFjcm8gKHNlZSAxNi4zLjEgaW4gQysrIHN0YW5kYXJkKS4gIFRoZSBrZXkKLS8vIGlzIHRoYXQgbWFjcm8gZXhwYW5zaW9uIG9mIG1hY3JvIGFyZ3VtZW50cyBkb2VzIG5vdAotLy8gb2NjdXIgaW4gTkROQk9PU1RfRE9fSk9JTjIgYnV0IGRvZXMgaW4gTkROQk9PU1RfRE9fSk9JTi4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0pPSU4oIFgsIFkgKSBORE5CT09TVF9ET19KT0lOKCBYLCBZICkKLSNkZWZpbmUgTkROQk9PU1RfRE9fSk9JTiggWCwgWSApIE5ETkJPT1NUX0RPX0pPSU4yKFgsWSkKLSNkZWZpbmUgTkROQk9PU1RfRE9fSk9JTjIoIFgsIFkgKSBYIyNZCi0KLS8vCi0vLyBTZXQgc29tZSBkZWZhdWx0IHZhbHVlcyBmb3IgY29tcGlsZXIvbGlicmFyeS9wbGF0Zm9ybSBuYW1lcy4KLS8vIFRoZXNlIGFyZSBmb3IgZGVidWdnaW5nIGNvbmZpZyBzZXR1cCBvbmx5OgotLy8KLSMgIGlmbmRlZiBORE5CT09TVF9DT01QSUxFUgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0NPTVBJTEVSICJVbmtub3duIElTTyBDKysgQ29tcGlsZXIiCi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX1NURExJQgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NURExJQiAiVW5rbm93biBJU08gc3RhbmRhcmQgbGlicmFyeSIKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUExBVEZPUk0KLSMgICAgIGlmIGRlZmluZWQodW5peCkgfHwgZGVmaW5lZChfX3VuaXgpIHx8IGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgXAotICAgICAgICAgfHwgZGVmaW5lZChfUE9TSVhfU09VUkNFKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BMQVRGT1JNICJHZW5lcmljIFVuaXgiCi0jICAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUExBVEZPUk0gIlVua25vd24iCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotLy8KLS8vIFNldCBzb21lIGRlZmF1bHQgdmFsdWVzIEdQVSBzdXBwb3J0Ci0vLwotIyAgaWZuZGVmIE5ETkJPT1NUX0dQVV9FTkFCTEVECi0jICBkZWZpbmUgTkROQk9PU1RfR1BVX0VOQUJMRUQgCi0jICBlbmRpZgotCi0vLyBORE5CT09TVF9GT1JDRUlOTElORSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gTWFjcm8gdG8gdXNlIGluIHBsYWNlIG9mICdpbmxpbmUnIHRvIGZvcmNlIGEgZnVuY3Rpb24gdG8gYmUgaW5saW5lCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRk9SQ0VJTkxJTkUpCi0jICBpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUgTkROQk9PU1RfRk9SQ0VJTkxJTkUgX19mb3JjZWlubGluZQotIyAgZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+IDMKLSAgICAgLy8gQ2xhbmcgYWxzbyBkZWZpbmVzIF9fR05VQ19fIChhcyA0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfRk9SQ0VJTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9GT1JDRUlOTElORSBpbmxpbmUKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8KLS8vIFNldCBORE5CT09TVF9OT19ERUNMVFlQRV9OMzI3NiB3aGVuIE5ETkJPT1NUX05PX0RFQ0xUWVBFIGlzIGRlZmluZWQKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYpCi0jZGVmaW5lCU5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2IE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFCi0jZW5kaWYKLQotLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tIERlcHJlY2F0ZWQgbWFjcm9zIGZvciAxLjUwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gIFRoZXNlIHdpbGwgZ28gYXdheSBpbiBhIGZ1dHVyZSByZWxlYXNlCi0KLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9TRVQgb3IgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1VOT1JERVJFRF9NQVAKLS8vICAgICAgICAgICBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PX1NURF9VTk9SREVSRUQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQKSB8fCBkZWZpbmVkIChORE5CT09TVF9OT19DWFgxMV9IRFJfVU5PUkRFUkVEX1NFVCkKLSMgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1NURF9VTk9SREVSRUQKLSMgIGRlZmluZSBORE5CT09TVF9OT19DWFgxMV9TVERfVU5PUkRFUkVECi0jIGVuZGlmCi0jZW5kaWYKLQotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PX0lOSVRJQUxJWkVSX0xJU1RTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5JVElBTElaRVJfTElTVFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSU5JVElBTElaRVJfTElTVFMKLSNlbmRpZgotCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWSBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9BUlJBWQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfQVJSQVkpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0FSUkFZCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0NIUk9OTyBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9DSFJPTk8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9DSFJPTk8pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9DSFJPTk8pCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0NIUk9OTwotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX0NPREVDVlQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT0RFQ1ZUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfQ09ERUNWVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfQ09ERUNWVAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9DT05ESVRJT05fVkFSSUFCTEUgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfQ09ORElUSU9OX1ZBUklBQkxFCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfQ09ORElUSU9OX1ZBUklBQkxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfQ09ORElUSU9OX1ZBUklBQkxFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9DT05ESVRJT05fVkFSSUFCTEUKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfRk9SV0FSRF9MSVNUIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX0ZPUldBUkRfTElTVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZPUldBUkRfTElTVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX0ZPUldBUkRfTElTVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfRk9SV0FSRF9MSVNUCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0ZVVFVSRSBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9GVVRVUkUKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9GVVRVUkUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9GVVRVUkUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX0ZVVFVSRQotI2VuZGlmCi0KLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QgCi0vLyAgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfSU5JVElBTElaRVJfTElTVCBvciBORE5CT09TVF9OT19JTklUSUFMSVpFUl9MSVNUUwotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jIGlmbmRlZiBORE5CT09TVF9OT18wWF9IRFJfSU5JVElBTElaRVJfTElTVAotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9JTklUSUFMSVpFUl9MSVNUCi0jIGVuZGlmCi0jIGlmbmRlZiBORE5CT09TVF9OT19JTklUSUFMSVpFUl9MSVNUUwotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lOSVRJQUxJWkVSX0xJU1RTCi0jIGVuZGlmCi0jZW5kaWYKLQotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfTVVURVggaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfTVVURVgKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9NVVRFWCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX01VVEVYKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9NVVRFWAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQU5ET00gaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfUkFORE9NCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfUkFORE9NKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfUkFORE9NKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9SQU5ET00KLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfUkFUSU8gaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfUkFUSU8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9SQVRJTykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX1JBVElPKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9SQVRJTwotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9SRUdFWCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9SRUdFWAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1JFR0VYKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfUkVHRVgpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1JFR0VYCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1NZU1RFTV9FUlJPUiBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9TWVNURU1fRVJST1IKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9TWVNURU1fRVJST1IpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9TWVNURU1fRVJST1IpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1NZU1RFTV9FUlJPUgotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9USFJFQUQgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfVEhSRUFECi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVEhSRUFEKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVEhSRUFEKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9USFJFQUQKLSNlbmRpZgotLy8gIFVzZSBORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUgaW5zdGVhZCBvZiBORE5CT09TVF9OT18wWF9IRFJfVFVQTEUKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fMFhfSERSX1RVUExFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PXzBYX0hEUl9UVVBMRQotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFX1RSQUlUUyBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9UWVBFX1RSQUlUUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVFlQRV9UUkFJVFMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1RZUEVfVFJBSVRTCi0jZW5kaWYKLS8vICBVc2UgTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWCBpbnN0ZWFkIG9mIE5ETkJPT1NUX05PXzBYX0hEUl9UWVBFSU5ERVgKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UWVBFSU5ERVgpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PXzBYX0hEUl9UWVBFSU5ERVgpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fMFhfSERSX1RZUEVJTkRFWAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1VOT1JERVJFRF9NQVAKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfTUFQKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX01BUCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX01BUAotI2VuZGlmCi0vLyAgVXNlIE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUIGluc3RlYWQgb2YgTkROQk9PU1RfTk9fMFhfSERSX1VOT1JERVJFRF9TRVQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9VTk9SREVSRURfU0VUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX1NFVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT18wWF9IRFJfVU5PUkRFUkVEX1NFVAotI2VuZGlmCi0KLS8vICAtLS0tLS0tLS0tLS0tLS0tLS0gRW5kIG9mIGRlcHJlY2F0ZWQgbWFjcm9zIGZvciAxLjUwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVwcmVjYXRlZCBtYWNyb3MgZm9yIDEuNTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgVGhlc2Ugd2lsbCBnbyBhd2F5IGluIGEgZnV0dXJlIHJlbGVhc2UKLQotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19ERUNMQVJBVElPTlMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0FVVE9fREVDTEFSQVRJT05TCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9BVVRPX0RFQ0xBUkFUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVVUT19ERUNMQVJBVElPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQVVUT19ERUNMQVJBVElPTlMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fQVVUT19NVUxUSURFQ0xBUkFUSU9OUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQVVUT19NVUxUSURFQ0xBUkFUSU9OUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVVUT19NVUxUSURFQ0xBUkFUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19BVVRPX01VTFRJREVDTEFSQVRJT05TCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19DSEFSMTZfVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NIQVIxNl9UKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NIQVIxNl9UCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19DSEFSMzJfVAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NIQVIzMl9UKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0NIQVIzMl9UCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1RFTVBMQVRFX0FMSUFTRVMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX0FMSUFTRVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fVEVNUExBVEVfQUxJQVNFUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9DT05TVEVYUFIgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0NPTlNURVhQUgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DT05TVEVYUFIpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fQ09OU1RFWFBSCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFX04zMjc2IGluc3RlYWQgb2YgICBORE5CT09TVF9OT19ERUNMVFlQRV9OMzI3NgotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEVfTjMyNzYpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0RFQ0xUWVBFX04zMjc2KQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFQ0xUWVBFX04zMjc2Ci0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19ERUNMVFlQRQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0RFQ0xUWVBFKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0RFQ0xUWVBFCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0RFRkFVTFRFRF9GVU5DVElPTlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFRkFVTFRFRF9GVU5DVElPTlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0RFRkFVTFRFRF9GVU5DVElPTlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fREVGQVVMVEVEX0ZVTkNUSU9OUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9ERUxFVEVEX0ZVTkNUSU9OUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fREVMRVRFRF9GVU5DVElPTlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19ERUxFVEVEX0ZVTkNUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19ERUxFVEVEX0ZVTkNUSU9OUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fRVhQTElDSVRfQ09OVkVSU0lPTl9PUEVSQVRPUlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0VYUExJQ0lUX0NPTlZFUlNJT05fT1BFUkFUT1JTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0VYVEVSTl9URU1QTEFURQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfRVhURVJOX1RFTVBMQVRFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19FWFRFUk5fVEVNUExBVEUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fRVhURVJOX1RFTVBMQVRFCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfREVGQVVMVF9BUkdTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX0RFRkFVTFRfQVJHUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9ERUZBVUxUX0FSR1MKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fTEFNQkRBUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfTEFNQkRBUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTEFNQkRBUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19MQU1CREFTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xPQ0FMX0NMQVNTX1RFTVBMQVRFX1BBUkFNRVRFUlMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fTE9DQUxfQ0xBU1NfVEVNUExBVEVfUEFSQU1FVEVSUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVCBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fTk9FWENFUFQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19OT0VYQ0VQVCkKLSMgIGRlZmluZSBORE5CT09TVF9OT19OT0VYQ0VQVAotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19OVUxMUFRSCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19OVUxMUFRSKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX05VTExQVFIKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfUkFXX0xJVEVSQUxTIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19SQVdfTElURVJBTFMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JBV19MSVRFUkFMUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fUkFXX0xJVEVSQUxTKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1JBV19MSVRFUkFMUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fUlZBTFVFX1JFRkVSRU5DRVMKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19SVkFMVUVfUkVGRVJFTkNFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19SVkFMVUVfUkVGRVJFTkNFUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1NDT1BFRF9FTlVNUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfU0NPUEVEX0VOVU1TKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TQ09QRURfRU5VTVMpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU0NPUEVEX0VOVU1TCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQgaW5zdGVhZCBvZiAgIE5ETkJPT1NUX05PX1NUQVRJQ19BU1NFUlQKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NUQVRJQ19BU1NFUlQpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fU1RBVElDX0FTU0VSVAotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9TVERfVU5PUkRFUkVEIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19TVERfVU5PUkRFUkVECi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TVERfVU5PUkRFUkVEKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfVU5PUkRFUkVEKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1NURF9VTk9SREVSRUQKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fVU5JQ09ERV9MSVRFUkFMUwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVU5JQ09ERV9MSVRFUkFMUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19VTklDT0RFX0xJVEVSQUxTCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19VTklGSUVEX0lOSVRJQUxJWkFUSU9OX1NZTlRBWAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JRklFRF9JTklUSUFMSVpBVElPTl9TWU5UQVgpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYCi0jZW5kaWYKLS8vICBVc2UgICAgIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fVkFSSUFESUNfVEVNUExBVEVTCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1ZBUklBRElDX1RFTVBMQVRFUykKLSMgIGRlZmluZSBORE5CT09TVF9OT19WQVJJQURJQ19URU1QTEFURVMKLSNlbmRpZgotLy8gIFVzZSAgICAgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TIGluc3RlYWQgb2YgICBORE5CT09TVF9OT19WQVJJQURJQ19NQUNST1MKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVkFSSUFESUNfTUFDUk9TKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1ZBUklBRElDX01BQ1JPUwotI2VuZGlmCi0vLyAgVXNlICAgICBORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUyBpbnN0ZWFkIG9mICAgTkROQk9PU1RfTk9fTlVNRVJJQ19MSU1JVFNfTE9XRVNUCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9OVU1FUklDX0xJTUlUUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fTlVNRVJJQ19MSU1JVFNfTE9XRVNUKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX05VTUVSSUNfTElNSVRTX0xPV0VTVAotI2VuZGlmCi0vLyAgLS0tLS0tLS0tLS0tLS0tLS0tIEVuZCBvZiBkZXByZWNhdGVkIG1hY3JvcyBmb3IgMS41MSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi0KLS8vCi0vLyBIZWxwZXIgbWFjcm9zIE5ETkJPT1NUX05PRVhDRVBULCBORE5CT09TVF9OT0VYQ0VQVF9JRiwgTkROQk9PU1RfTk9FWENFUFRfRVhQUgotLy8gVGhlc2UgYWlkIHRoZSB0cmFuc2l0aW9uIHRvIEMrKzExIHdoaWxlIHN0aWxsIHN1cHBvcnRpbmcgQysrMDMgY29tcGlsZXJzCi0vLwotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0jICBkZWZpbmUgTkROQk9PU1RfTk9FWENFUFQKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVF9PUl9OT1RIUk9XIHRocm93KCkKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVF9JRihQcmVkaWNhdGUpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9FWENFUFRfRVhQUihFeHByZXNzaW9uKSBmYWxzZQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVCBub2V4Y2VwdAotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUX09SX05PVEhST1cgbm9leGNlcHQKLSMgIGRlZmluZSBORE5CT09TVF9OT0VYQ0VQVF9JRihQcmVkaWNhdGUpIG5vZXhjZXB0KChQcmVkaWNhdGUpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PRVhDRVBUX0VYUFIoRXhwcmVzc2lvbikgbm9leGNlcHQoKEV4cHJlc3Npb24pKQotI2VuZGlmCi0vLwotLy8gSGVscGVyIG1hY3JvIE5ETkJPT1NUX0ZBTExUSFJPVUdIIAotLy8gRmFsbGJhY2sgZGVmaW5pdGlvbiBvZiBORE5CT09TVF9GQUxMVEhST1VHSCBtYWNybyB1c2VkIHRvIG1hcmsgaW50ZW5kZWQgCi0vLyBmYWxsLXRocm91Z2ggYmV0d2VlbiBjYXNlIGxhYmVscyBpbiBhIHN3aXRjaCBzdGF0ZW1lbnQuIFdlIHVzZSBhIGRlZmluaXRpb24gCi0vLyB0aGF0IHJlcXVpcmVzIGEgc2VtaWNvbG9uIGFmdGVyIGl0IHRvIGF2b2lkIGF0IGxlYXN0IG9uZSB0eXBlIG9mIG1pc3VzZSBldmVuIAotLy8gb24gdW5zdXBwb3J0ZWQgY29tcGlsZXJzLiAKLS8vIAotI2lmbmRlZiBORE5CT09TVF9GQUxMVEhST1VHSCAKLSMgIGRlZmluZSBORE5CT09TVF9GQUxMVEhST1VHSCAoKHZvaWQpMCkgCi0jZW5kaWYgCi0KLS8vCi0vLyBjb25zdGV4cHIgd29ya2Fyb3VuZHMKLS8vIAotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ09OU1RFWFBSKQotI2RlZmluZSBORE5CT09TVF9DT05TVEVYUFIKLSNkZWZpbmUgTkROQk9PU1RfQ09OU1RFWFBSX09SX0NPTlNUIGNvbnN0Ci0jZWxzZQotI2RlZmluZSBORE5CT09TVF9DT05TVEVYUFIgY29uc3RleHByCi0jZGVmaW5lIE5ETkJPT1NUX0NPTlNURVhQUl9PUl9DT05TVCBjb25zdGV4cHIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19DT05TVEVYUFIgIHN0YXRpYyBORE5CT09TVF9DT05TVEVYUFJfT1JfQ09OU1QKLQotLy8KLS8vIFNldCBORE5CT09TVF9IQVNfU1RBVElDX0FTU0VSVCB3aGVuIE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQgaXMgbm90IGRlZmluZWQKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1NUQVRJQ19BU1NFUlQpCi0jICBkZWZpbmUgTkROQk9PU1RfSEFTX1NUQVRJQ19BU1NFUlQKLSNlbmRpZgotCi0vLwotLy8gU2V0IE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUyB3aGVuIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTIGlzIG5vdCBkZWZpbmVkCi0vLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfUlZBTFVFX1JFRlMpCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19SVkFMVUVfUkVGUwotI2VuZGlmCi0KLS8vCi0vLyBTZXQgTkROQk9PU1RfSEFTX1ZBUklBRElDX1RNUEwgd2hlbiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMgaXMgbm90IGRlZmluZWQKLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9IQVNfVkFSSUFESUNfVE1QTCkKLSNkZWZpbmUgTkROQk9PU1RfSEFTX1ZBUklBRElDX1RNUEwKLSNlbmRpZgotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvdXNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy91c2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UwNjA3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NvbmZpZy91c2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vLyAgbmRuYm9vc3QvY29uZmlnL3VzZXIuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMS4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgRG8gbm90IGNoZWNrIGluIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoaXMgZmlsZSwKLS8vICBUaGlzIGZpbGUgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgdGhlIGVuZCB1c2VyLCBidXQgbm90IGJ5IGJvb3N0LgotCi0vLwotLy8gIFVzZSB0aGlzIGZpbGUgdG8gZGVmaW5lIGEgc2l0ZSBhbmQgY29tcGlsZXIgc3BlY2lmaWMKLS8vICBjb25maWd1cmF0aW9uIHBvbGljeToKLS8vCi0KLS8vIGRlZmluZSB0aGlzIHRvIGxvY2F0ZSBhIGNvbXBpbGVyIGNvbmZpZyBmaWxlOgotLy8gI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9DT05GSUcgPG15aGVhZGVyPgotCi0vLyBkZWZpbmUgdGhpcyB0byBsb2NhdGUgYSBzdGRsaWIgY29uZmlnIGZpbGU6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1NURExJQl9DT05GSUcgICA8bXloZWFkZXI+Ci0KLS8vIGRlZmluZSB0aGlzIHRvIGxvY2F0ZSBhIHBsYXRmb3JtIGNvbmZpZyBmaWxlOgotLy8gI2RlZmluZSBORE5CT09TVF9QTEFURk9STV9DT05GSUcgPG15aGVhZGVyPgotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIGNvbXBpbGVyIGNvbmZpZywKLS8vIHVzZSBpZiB5b3VyIGNvbXBpbGVyIGNvbmZpZyBoYXMgbm90aGluZyB0byBzZXQ6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX05PX0NPTVBJTEVSX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIHN0ZGxpYiBjb25maWcsCi0vLyB1c2UgaWYgeW91ciBzdGRsaWIgY29uZmlnIGhhcyBub3RoaW5nIHRvIHNldDoKLS8vICNkZWZpbmUgTkROQk9PU1RfTk9fU1RETElCX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIHBsYXRmb3JtIGNvbmZpZywKLS8vIHVzZSBpZiB5b3VyIHBsYXRmb3JtIGNvbmZpZyBoYXMgbm90aGluZyB0byBzZXQ6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX05PX1BMQVRGT1JNX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBkaXNhYmxlIGFsbCBjb25maWcgb3B0aW9ucywKLS8vIGV4Y2x1ZGluZyB0aGUgdXNlciBjb25maWcuICBVc2UgaWYgeW91cgotLy8gc2V0dXAgaXMgZnVsbHkgSVNPIGNvbXBsaWFudCwgYW5kIGhhcyBubwotLy8gdXNlZnVsIGV4dGVuc2lvbnMsIG9yIGZvciBhdXRvY29uZiBnZW5lcmF0ZWQKLS8vIHNldHVwczoKLS8vICNkZWZpbmUgTkROQk9PU1RfTk9fQ09ORklHCi0KLS8vIGRlZmluZSB0aGlzIHRvIG1ha2UgdGhlIGNvbmZpZyAib3B0aW1pc3RpYyIKLS8vIGFib3V0IHVua25vd24gY29tcGlsZXIgdmVyc2lvbnMuICBOb3JtYWxseQotLy8gdW5rbm93biBjb21waWxlciB2ZXJzaW9ucyBhcmUgYXNzdW1lZCB0byBoYXZlCi0vLyBhbGwgdGhlIGRlZmVjdHMgb2YgdGhlIGxhc3Qga25vd24gdmVyc2lvbiwgaG93ZXZlcgotLy8gc2V0dGluZyB0aGlzIGZsYWcsIGNhdXNlcyB0aGUgY29uZmlnIHRvIGFzc3VtZQotLy8gdGhhdCB1bmtub3duIGNvbXBpbGVyIHZlcnNpb25zIGFyZSBmdWxseSBjb25mb3JtYW50Ci0vLyB3aXRoIHRoZSBzdGFuZGFyZDoKLS8vICNkZWZpbmUgTkROQk9PU1RfU1RSSUNUX0NPTkZJRwotCi0vLyBkZWZpbmUgdGhpcyB0byBjYXVzZSB0aGUgY29uZmlnIHRvIGhhbHQgY29tcGlsYXRpb24KLS8vIHdpdGggYW4gI2Vycm9yIGlmIGl0IGVuY291bnRlcnMgYW55dGhpbmcgdW5rbm93biAtLQotLy8gZWl0aGVyIGFuIHVua25vd24gY29tcGlsZXIgdmVyc2lvbiBvciBhbiB1bmtub3duCi0vLyBjb21waWxlci9wbGF0Zm9ybS9saWJyYXJ5OgotLy8gI2RlZmluZSBORE5CT09TVF9BU1NFUlRfQ09ORklHCi0KLQotLy8gZGVmaW5lIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgdGhyZWFkaW5nIHN1cHBvcnQsIGV2ZW4KLS8vIHdoZW4gYXZhaWxhYmxlOgotLy8gI2RlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMKLQotLy8gZGVmaW5lIHdoZW4geW91IHdhbnQgdG8gZGlzYWJsZSBXaW4zMiBzcGVjaWZpYyBmZWF0dXJlcwotLy8gZXZlbiB3aGVuIGF2YWlsYWJsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9XSU4zMgotCi0vLyBORE5CT09TVF9ESVNBQkxFX0FCSV9IRUFERVJTOiBTdG9wcyBib29zdCBoZWFkZXJzIGZyb20gaW5jbHVkaW5nIGFueSAKLS8vIHByZWZpeC9zdWZmaXggaGVhZGVycyB0aGF0IG5vcm1hbGx5IGNvbnRyb2wgdGhpbmdzIGxpa2Ugc3RydWN0IAotLy8gcGFja2luZyBhbmQgYWxpZ25tZW50LiAKLS8vICNkZWZpbmUgTkROQk9PU1RfRElTQUJMRV9BQklfSEVBREVSUwotCi0vLyBORE5CT09TVF9BQklfUFJFRklYOiBBIHByZWZpeCBoZWFkZXIgdG8gaW5jbHVkZSBpbiBwbGFjZSBvZiB3aGF0ZXZlcgotLy8gYm9vc3QuY29uZmlnIHdvdWxkIG5vcm1hbGx5IHNlbGVjdCwgYW55IHJlcGxhY2VtZW50IHNob3VsZCBzZXQgdXAgCi0vLyBzdHJ1Y3QgcGFja2luZyBhbmQgYWxpZ25tZW50IG9wdGlvbnMgYXMgcmVxdWlyZWQuIAotLy8gI2RlZmluZSBORE5CT09TVF9BQklfUFJFRklYIG15LWhlYWRlci1uYW1lCi0KLS8vIE5ETkJPT1NUX0FCSV9TVUZGSVg6IEEgc3VmZml4IGhlYWRlciB0byBpbmNsdWRlIGluIHBsYWNlIG9mIHdoYXRldmVyIAotLy8gYm9vc3QuY29uZmlnIHdvdWxkIG5vcm1hbGx5IHNlbGVjdCwgYW55IHJlcGxhY2VtZW50IHNob3VsZCB1bmRvIAotLy8gdGhlIGVmZmVjdHMgb2YgdGhlIHByZWZpeCBoZWFkZXIuIAotLy8gI2RlZmluZSBORE5CT09TVF9BQklfU1VGRklYIG15LWhlYWRlci1uYW1lCi0KLS8vIE5ETkJPT1NUX0FMTF9EWU5fTElOSzogRm9yY2VzIGFsbCBsaWJyYXJpZXMgdGhhdCBoYXZlIHNlcGFyYXRlIHNvdXJjZSwgCi0vLyB0byBiZSBsaW5rZWQgYXMgZGxsJ3MgcmF0aGVyIHRoYW4gc3RhdGljIGxpYnJhcmllcyBvbiBNaWNyb3NvZnQgV2luZG93cyAKLS8vICh0aGlzIG1hY3JvIGlzIHVzZWQgdG8gdHVybiBvbiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgbW9kaWZpZXJzLCBzbyB0aGF0IAotLy8gdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIHN5bWJvbHMgdG8gbG9vayBmb3IgaW4gYSBkbGwgcmF0aGVyIHRoYW4gaW4gYSAKLS8vIHN0YXRpYyBsaWJyYXJ5KS4gIE5vdGUgdGhhdCB0aGVyZSBtYXkgYmUgc29tZSBsaWJyYXJpZXMgdGhhdCBjYW4gb25seSAKLS8vIGJlIHN0YXRpY2FsbHkgbGlua2VkIChCb29zdC5UZXN0IGZvciBleGFtcGxlKSBhbmQgb3RoZXJzIHdoaWNoIG1heSBvbmx5IAotLy8gYmUgZHluYW1pY2FsbHkgbGlua2VkIChCb29zdC5UaHJlYWRzIGZvciBleGFtcGxlKSwgaW4gdGhlc2UgY2FzZXMgdGhpcyAKLS8vIG1hY3JvIGhhcyBubyBlZmZlY3QuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0FMTF9EWU5fTElOSwotIAotLy8gTkROQk9PU1RfV0hBVEVWRVJfRFlOX0xJTks6IEZvcmNlcyBsaWJyYXJ5ICJ3aGF0ZXZlciIgdG8gYmUgbGlua2VkIGFzIGEgZGxsIAotLy8gcmF0aGVyIHRoYW4gYSBzdGF0aWMgbGlicmFyeSBvbiBNaWNyb3NvZnQgV2luZG93czogcmVwbGFjZSB0aGUgV0hBVEVWRVIgCi0vLyBwYXJ0IG9mIHRoZSBtYWNybyBuYW1lIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgdGhhdCB5b3Ugd2FudCB0byAKLS8vIGR5bmFtaWNhbGx5IGxpbmsgdG8sIGZvciBleGFtcGxlIHVzZSBORE5CT09TVF9EQVRFX1RJTUVfRFlOX0xJTksgb3IgCi0vLyBORE5CT09TVF9SRUdFWF9EWU5fTElOSyBldGMgKHRoaXMgbWFjcm8gaXMgdXNlZCB0byB0dXJuIG9uIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSAKLS8vIG1vZGlmaWVycywgc28gdGhhdCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggc3ltYm9scyB0byBsb29rIGZvciBpbiBhIGRsbCAKLS8vIHJhdGhlciB0aGFuIGluIGEgc3RhdGljIGxpYnJhcnkpLiAgCi0vLyBOb3RlIHRoYXQgdGhlcmUgbWF5IGJlIHNvbWUgbGlicmFyaWVzIHRoYXQgY2FuIG9ubHkgYmUgc3RhdGljYWxseSBsaW5rZWQgCi0vLyAoQm9vc3QuVGVzdCBmb3IgZXhhbXBsZSkgYW5kIG90aGVycyB3aGljaCBtYXkgb25seSBiZSBkeW5hbWljYWxseSBsaW5rZWQgCi0vLyAoQm9vc3QuVGhyZWFkcyBmb3IgZXhhbXBsZSksIGluIHRoZXNlIGNhc2VzIHRoaXMgbWFjcm8gaXMgdW5zdXBwb3J0ZWQuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1dIQVRFVkVSX0RZTl9MSU5LCi0gCi0vLyBORE5CT09TVF9BTExfTk9fTElCOiBUZWxscyB0aGUgY29uZmlnIHN5c3RlbSBub3QgdG8gYXV0b21hdGljYWxseSBzZWxlY3QgCi0vLyB3aGljaCBsaWJyYXJpZXMgdG8gbGluayBhZ2FpbnN0LiAgCi0vLyBOb3JtYWxseSBpZiBhIGNvbXBpbGVyIHN1cHBvcnRzICNwcmFnbWEgbGliLCB0aGVuIHRoZSBjb3JyZWN0IGxpYnJhcnkgCi0vLyBidWlsZCB2YXJpYW50IHdpbGwgYmUgYXV0b21hdGljYWxseSBzZWxlY3RlZCBhbmQgbGlua2VkIGFnYWluc3QsIAotLy8gc2ltcGx5IGJ5IHRoZSBhY3Qgb2YgaW5jbHVkaW5nIG9uZSBvZiB0aGF0IGxpYnJhcnkncyBoZWFkZXJzLiAgCi0vLyBUaGlzIG1hY3JvIHR1cm5zIHRoYXQgZmVhdHVyZSBvZmYuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX0FMTF9OT19MSUIKLSAKLS8vIE5ETkJPT1NUX1dIQVRFVkVSX05PX0xJQjogVGVsbHMgdGhlIGNvbmZpZyBzeXN0ZW0gbm90IHRvIGF1dG9tYXRpY2FsbHkgCi0vLyBzZWxlY3Qgd2hpY2ggbGlicmFyeSB0byBsaW5rIGFnYWluc3QgZm9yIGxpYnJhcnkgIndoYXRldmVyIiwgCi0vLyByZXBsYWNlIFdIQVRFVkVSIGluIHRoZSBtYWNybyBuYW1lIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnk7IAotLy8gZm9yIGV4YW1wbGUgTkROQk9PU1RfREFURV9USU1FX05PX0xJQiBvciBORE5CT09TVF9SRUdFWF9OT19MSUIuICAKLS8vIE5vcm1hbGx5IGlmIGEgY29tcGlsZXIgc3VwcG9ydHMgI3ByYWdtYSBsaWIsIHRoZW4gdGhlIGNvcnJlY3QgbGlicmFyeSAKLS8vIGJ1aWxkIHZhcmlhbnQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIGFuZCBsaW5rZWQgYWdhaW5zdCwgc2ltcGx5IAotLy8gYnkgdGhlIGFjdCBvZiBpbmNsdWRpbmcgb25lIG9mIHRoYXQgbGlicmFyeSdzIGhlYWRlcnMuICBUaGlzIG1hY3JvIHR1cm5zIAotLy8gdGhhdCBmZWF0dXJlIG9mZi4KLS8vICNkZWZpbmUgTkROQk9PU1RfV0hBVEVWRVJfTk9fTElCCi0gCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvd2FybmluZ19kaXNhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29uZmlnL3dhcm5pbmdfZGlzYWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMzdhMGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jb25maWcvd2FybmluZ19kaXNhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDgKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBUaGlzIGZpbGUgZXhpc3RzIHRvIHR1cm4gb2ZmIHNvbWUgb3Zlcmx5LXBlZGFudGljIHdhcm5pbmcgZW1pdHRlZAotLy8gIGJ5IGNlcnRhaW4gY29tcGlsZXJzLiAgWW91IHNob3VsZCBpbmNsdWRlIHRoaXMgaGVhZGVyIG9ubHkgaW46Ci0vLwotLy8gICogQSB0ZXN0IGNhc2UsIGJlZm9yZSBhbnkgb3RoZXIgaGVhZGVycywgb3IsCi0vLyAgKiBBIGxpYnJhcnkgc291cmNlIGZpbGUgYmVmb3JlIGFueSBvdGhlciBoZWFkZXJzLgotLy8KLS8vICBJVCBTSE9VTEQgTk9UIEJFIElOQ0xVREVEIEJZIEFOWSBCT09TVCBIRUFERVIuCi0vLwotLy8gIFlPVSBTSE9VTEQgTk9UIElOQ0xVREUgSVQgSUYgWU9VIENBTiBSRUFTT05BQkxZIEZJWCBUSEUgV0FSTklORy4KLS8vCi0vLyAgVGhlIG9ubHkgd2FybmluZ3MgZGlzYWJsZWQgaGVyZSBhcmUgdGhvc2UgdGhhdCBhcmU6Ci0vLwotLy8gICogUXVpdGUgdW5yZWFzb25hYmx5IHBlZGFudGljLgotLy8gICogR2VuZXJhbGx5IG9ubHkgZW1pdHRlZCBieSBhIHNpbmdsZSBjb21waWxlci4KLS8vICAqIENhbid0IGVhc2lseSBiZSBmaXhlZDogZm9yIGV4YW1wbGUgaWYgdGhlIHZlbmRvcnMgb3duIHN0ZCBsaWIgCi0vLyAgICBjb2RlIGVtaXRzIHRoZXNlIHdhcm5pbmdzIQotLy8KLS8vICBOb3RlIHRoYXQgVEhJUyBIRUFERVIgTVVTVCBOT1QgSU5DTFVERSBBTlkgT1RIRVIgSEVBREVSUzoKLS8vICBub3QgZXZlbiBzdGQgbGlicmFyeSBvbmVzISAgRG9pbmcgc28gbWF5IHR1cm4gdGhlIHdhcm5pbmcKLS8vICBvZmYgdG9vIGxhdGUgdG8gYmUgb2YgYW55IHVzZS4gIEZvciBleGFtcGxlIHRoZSBWQysrIEM0OTk2Ci0vLyAgd2FybmluZyBjYW4gYmUgZW1pdHRlZCBmcm9tIDxpb3Nmd2Q+IGlmIHRoYXQgaGVhZGVyIGlzIGluY2x1ZGVkCi0vLyAgYmVmb3JlIG9yIGJ5IHRoaXMgb25lIDotKAotLy8KLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfV0FSTklOR19ESVNBQkxFX0hQUAotI2RlZmluZSBORE5CT09TVF9DT05GSUdfV0FSTklOR19ESVNBQkxFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApIAotICAgLy8gRXJyb3IgJ2Z1bmN0aW9uJzogd2FzIGRlY2xhcmVkIGRlcHJlY2F0ZWQKLSAgIC8vIGh0dHA6Ly9tc2RuMi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvdHRjejBieXMoVlMuODApLmFzcHgKLSAgIC8vIFRoaXMgZXJyb3IgaXMgZW1pdHRlZCB3aGVuIHlvdSB1c2Ugc29tZSBwZXJmZWN0bHkgY29uZm9ybWluZwotICAgLy8gc3RkIGxpYiBmdW5jdGlvbnMgaW4gYSBwZXJmZWN0bHkgY29ycmVjdCB3YXksIGFuZCBhbHNvIGJ5Ci0gICAvLyBzb21lIG9mIE1pY3Jvc29mdCdzIG93biBzdGQgbGliIGNvZGUgIQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KQotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fSUNMKQotICAgLy8gQXMgYWJvdmU6IGdpdmVzIHdhcm5pbmcgd2hlbiBhICJkZXByZWNhdGVkIgotICAgLy8gc3RkIGxpYnJhcnkgZnVuY3Rpb24gaXMgZW5jb3VudGVyZWQuCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjE3ODYpCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NPTkZJR19XQVJOSU5HX0RJU0FCTEVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NvbnRhaW5lci9jb250YWluZXJfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjRiNDY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDA1LTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb250YWluZXIgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09OVEFJTkVSX0NPTlRBSU5FUl9GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0NPTlRBSU5FUl9DT05UQUlORVJfRldEX0hQUAotCi0jaWYgKGRlZmluZWQgX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyAgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmQgcHJlZGVjbGFyYXRpb25zCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8vIEBjb25kCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSBpbnRydXNpdmV7Ci0gICAvL0NyZWF0ZSBuYW1lc3BhY2UgdG8gYXZvaWQgY29tcGlsYXRpb24gZXJyb3JzCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBjb250YWluZXJ7IG5hbWVzcGFjZSBjb250YWluZXJfZGV0YWlsewotCi1uYW1lc3BhY2UgYmkgPSBuZG5ib29zdDo6aW50cnVzaXZlOwotCi19fX0KLQotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPHN0cmluZz4KLQotLy8vIEBlbmRjb25kCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lcnMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGNvbnRhaW5lciB7Ci0KLS8vdmVjdG9yIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgVAotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KLWNsYXNzIHZlY3RvcjsKLQotLy92ZWN0b3IgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4gPgotY2xhc3Mgc3RhYmxlX3ZlY3RvcjsKLQotLy92ZWN0b3IgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8VD4gPgotY2xhc3MgZGVxdWU7Ci0KLS8vbGlzdCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci1jbGFzcyBsaXN0OwotCi0vL3NsaXN0IGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgVAotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPFQ+ID4KLWNsYXNzIHNsaXN0OwotCi0vL3NldCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxLZXk+ID4KLWNsYXNzIHNldDsKLQotLy9tdWx0aXNldCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxLZXk+ID4KLWNsYXNzIG11bHRpc2V0OwotCi0vL21hcCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0IEtleSwgVD4gPiA+Ci1jbGFzcyBtYXA7Ci0KLS8vbXVsdGltYXAgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBLZXkKLSAgICAgICAgICxjbGFzcyBUCi0gICAgICAgICAsY2xhc3MgQ29tcGFyZSAgPSBzdGQ6Omxlc3M8S2V5PgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPHN0ZDo6cGFpcjxjb25zdCBLZXksIFQ+ID4gPgotY2xhc3MgbXVsdGltYXA7Ci0KLS8vZmxhdF9zZXQgY2xhc3MKLXRlbXBsYXRlIDxjbGFzcyBLZXkKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8S2V5PiA+Ci1jbGFzcyBmbGF0X3NldDsKLQotLy9mbGF0X211bHRpc2V0IGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgQ29tcGFyZSAgPSBzdGQ6Omxlc3M8S2V5PgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciA9IHN0ZDo6YWxsb2NhdG9yPEtleT4gPgotY2xhc3MgZmxhdF9tdWx0aXNldDsKLQotLy9mbGF0X21hcCBjbGFzcwotdGVtcGxhdGUgPGNsYXNzIEtleQotICAgICAgICAgLGNsYXNzIFQKLSAgICAgICAgICxjbGFzcyBDb21wYXJlICA9IHN0ZDo6bGVzczxLZXk+Ci0gICAgICAgICAsY2xhc3MgQWxsb2NhdG9yID0gc3RkOjphbGxvY2F0b3I8c3RkOjpwYWlyPEtleSwgVD4gPiA+Ci1jbGFzcyBmbGF0X21hcDsKLQotLy9mbGF0X211bHRpbWFwIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5Ci0gICAgICAgICAsY2xhc3MgVAotICAgICAgICAgLGNsYXNzIENvbXBhcmUgID0gc3RkOjpsZXNzPEtleT4KLSAgICAgICAgICxjbGFzcyBBbGxvY2F0b3IgPSBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnBhaXI8S2V5LCBUPiA+ID4KLWNsYXNzIGZsYXRfbXVsdGltYXA7Ci0KLS8vYmFzaWNfc3RyaW5nIGNsYXNzCi10ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQKLSAgICAgICAgICxjbGFzcyBUcmFpdHMgPSBzdGQ6OmNoYXJfdHJhaXRzPENoYXJUPgotICAgICAgICAgLGNsYXNzIEFsbG9jYXRvciAgPSBzdGQ6OmFsbG9jYXRvcjxDaGFyVD4gPgotY2xhc3MgYmFzaWNfc3RyaW5nOwotCi0vLyEgVHlwZSB1c2VkIHRvIHRhZyB0aGF0IHRoZSBpbnB1dCByYW5nZSBpcwotLy8hIGd1YXJhbnRlZWQgdG8gYmUgb3JkZXJlZAotc3RydWN0IG9yZGVyZWRfcmFuZ2VfdAote307Ci0KLS8vISBUeXBlIHVzZWQgdG8gdGFnIHRoYXQgdGhlIGlucHV0IHJhbmdlIGlzCi0vLyEgZ3VhcmFudGVlZCB0byBiZSBvcmRlcmVkIGFuZCB1bmlxdWUKLXN0cnVjdCBvcmRlcmVkX3VuaXF1ZV9yYW5nZV90Ci0gICA6IHB1YmxpYyBvcmRlcmVkX3JhbmdlX3QKLXt9OwotCi0vLyEgVmFsdWUgdXNlZCB0byB0YWcgdGhhdCB0aGUgaW5wdXQgcmFuZ2UgaXMKLS8vISBndWFyYW50ZWVkIHRvIGJlIG9yZGVyZWQKLXN0YXRpYyBjb25zdCBvcmRlcmVkX3JhbmdlX3Qgb3JkZXJlZF9yYW5nZSA9IG9yZGVyZWRfcmFuZ2VfdCgpOwotCi0vLyEgVmFsdWUgdXNlZCB0byB0YWcgdGhhdCB0aGUgaW5wdXQgcmFuZ2UgaXMKLS8vISBndWFyYW50ZWVkIHRvIGJlIG9yZGVyZWQgYW5kIHVuaXF1ZQotc3RhdGljIGNvbnN0IG9yZGVyZWRfdW5pcXVlX3JhbmdlX3Qgb3JkZXJlZF91bmlxdWVfcmFuZ2UgPSBvcmRlcmVkX3VuaXF1ZV9yYW5nZV90KCk7Ci0KLS8vLyBAY29uZAotCi1uYW1lc3BhY2UgZGV0YWlsX3JlYWxseV9kZWVwX25hbWVzcGFjZSB7Ci0KLS8vT3RoZXJ3aXNlLCBnY2MgaXNzdWVzIGEgd2FybmluZyBvZiBwcmV2aW91c2x5IGRlZmluZWQKLS8vYW5vbnltb3VzX2luc3RhbmNlIGFuZCB1bmlxdWVfaW5zdGFuY2UKLXN0cnVjdCBkdW1teQotewotICAgZHVtbXkoKQotICAgewotICAgICAgKHZvaWQpb3JkZXJlZF9yYW5nZTsKLSAgICAgICh2b2lkKW9yZGVyZWRfdW5pcXVlX3JhbmdlOwotICAgfQotfTsKLQotfSAgLy9kZXRhaWxfcmVhbGx5X2RlZXBfbmFtZXNwYWNlIHsKLQotLy8vIEBlbmRjb25kCi0KLX19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBjb250YWluZXIgewotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX0NPTlRBSU5FUl9DT05UQUlORVJfRldEX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jcmVnZXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzg0YTJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvY3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yZWdleCBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBQT1NJWCBBUEkgZnVuY3Rpb25zCi0gICogICAgICAgICAgICAgICAgKyBuZG5ib29zdDo6UmVnRXggaGlnaCBsZXZlbCB3cmFwcGVyLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX0NSRUdFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVfQ1JFR0VYX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9jcmVnZXguaHBwPgotCi0jZW5kaWYgLyogaW5jbHVkZSBndWFyZCAqLwotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2NzdGRpbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jc3RkaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFiYzk0NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2NzdGRpbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTA4ICswLDAgQEAKLS8vICBib29zdCBjc3RkaW50LmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5OS4gCi0vLyAgKEMpIENvcHlyaWdodCBKZW5zIE1hdWVyIDIwMDEgIAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDEgCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRlZ2VyIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gICAzMSBPY3QgMDEgIHVzZSBORE5CT09TVF9IQVNfTE9OR19MT05HIHRvIGNoZWNrIGZvciAibG9uZyBsb25nIiAoSmVucyBNLikKLS8vICAgMTYgQXByIDAxICBjaGVjayBMT05HTE9OR19NQVggd2hlbiBsb29raW5nIGZvciAibG9uZyBsb25nIiAoSmVucyBNYXVyZXIpCi0vLyAgIDIzIEphbiAwMSAgcHJlZmVyICJsb25nIiBvdmVyICJpbnQiIGZvciBpbnQzMl90IGFuZCBpbnRtYXhfdCAoSmVucyBNYXVyZXIpCi0vLyAgIDEyIE5vdiAwMCAgTWVyZ2VkIDxuZG5ib29zdC9zdGRpbnQuaD4gKEplbnMgTWF1cmVyKQotLy8gICAyMyBTZXAgMDAgIEFkZGVkIElOVFhYX0MgbWFjcm8gc3VwcG9ydCAoSm9obiBNYWRkb2NrKS4KLS8vICAgMjIgU2VwIDAwICBCZXR0ZXIgNjQtYml0IHN1cHBvcnQgKEpvaG4gTWFkZG9jaykKLS8vICAgMjkgSnVuIDAwICBSZWltcGxlbWVudCB0byBhdm9pZCBpbmNsdWRpbmcgc3RkaW50Lmggd2l0aGluIG5hbWVzcGFjZSBuZG5ib29zdAotLy8gICAgOCBBdWcgOTkgIEluaXRpYWwgdmVyc2lvbiAoQmVtYW4gRGF3ZXMpCi0KLQotI2lmbmRlZiBORE5CT09TVF9DU1RESU5UX0hQUAotI2RlZmluZSBORE5CT09TVF9DU1RESU5UX0hQUAotCi0vLwotLy8gU2luY2Ugd2UgYWx3YXlzIGRlZmluZSB0aGUgSU5UI19DIG1hY3JvcyBhcyBwZXIgQysrMHgsIAotLy8gZGVmaW5lIF9fU1REQ19DT05TVEFOVF9NQUNST1Mgc28gdGhhdCA8c3RkaW50Lmg+IGRvZXMgdGhlIHJpZ2h0Ci0vLyB0aGluZyBpZiBwb3NzaWJsZSwgYW5kIHNvIHRoYXQgdGhlIHVzZXIga25vd3MgdGhhdCB0aGUgbWFjcm9zIAotLy8gYXJlIGFjdHVhbGx5IGRlZmluZWQgYXMgcGVyIEM5OS4KLS8vCi0jaWZuZGVmIF9fU1REQ19DT05TVEFOVF9NQUNST1MKLSMgIGRlZmluZSBfX1NURENfQ09OU1RBTlRfTUFDUk9TCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vCi0vLyBOb3RlIHRoYXQgR0xJQkMgaXMgYSBiaXQgaW5jb25zaXN0ZW50IGFib3V0IHdoZXRoZXIgaW50NjRfdCBpcyBkZWZpbmVkIG9yIG5vdAotLy8gZGVwZW5kaW5nIHVwb24gd2hhdCBoZWFkZXJzIGhhcHBlbiB0byBoYXZlIGJlZW4gaW5jbHVkZWQgZmlyc3QuLi4KLS8vIHNvIHdlIGRpc2FibGUgdXNlIG9mIHN0ZGludC5oIHdoZW4gR0xJQkMgZG9lcyBub3QgZGVmaW5lIF9fR0xJQkNfSEFWRV9MT05HX0xPTkcuCi0vLyBTZWUgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzM1NDggYW5kIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEwOTkwCi0vLwotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX1NURElOVF9IKSAmJiAoIWRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fR0xJQkNfSEFWRV9MT05HX0xPTkcpKQotCi0vLyBUaGUgZm9sbG93aW5nICNpbmNsdWRlIGlzIGFuIGltcGxlbWVudGF0aW9uIGFydGlmYWN0OyBub3QgcGFydCBvZiBpbnRlcmZhY2UuCi0jIGlmZGVmIF9faHB1eAotLy8gSFAtVVggaGFzIGEgdmFndWVseSBuaWNlIDxzdGRpbnQuaD4gaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24KLSMgICBpbmNsdWRlIDxpbnR0eXBlcy5oPgotIyAgIGlmZGVmIF9fU1REQ18zMl9NT0RFX18KLSAgICAgIC8vIHRoaXMgaXMgdHJpZ2dlcmVkIHdpdGggR0NDLCBiZWNhdXNlIGl0IGRlZmluZXMgX19jcGx1c3BsdXMgPCAxOTk3MDdMCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTk9fSU5UNjRfVAotIyAgIGVuZGlmIAotIyBlbGlmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykgfHwgZGVmaW5lZChfQUlYKQotIyAgIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0jIGVsc2UKLSMgICBpbmNsdWRlIDxzdGRpbnQuaD4KLQotLy8gVGhlcmUgaXMgYSBidWcgaW4gQ3lnd2luIHR3byBfQyBtYWNyb3MKLSMgICBpZiBkZWZpbmVkKF9fU1REQ19DT05TVEFOVF9NQUNST1MpICYmIGRlZmluZWQoX19DWUdXSU5fXykKLSMgICAgIHVuZGVmIElOVE1BWF9DCi0jICAgICB1bmRlZiBVSU5UTUFYX0MKLSMgICAgIGRlZmluZSBJTlRNQVhfQyhjKSBjIyNMTAotIyAgICAgZGVmaW5lIFVJTlRNQVhfQyhjKSBjIyNVTEwKLSMgICBlbmRpZgotCi0jIGVuZGlmCi0KLSNpZmRlZiBfX1FOWF9fCi0KLS8vIFFOWCAoRGlua3Vtd2FyZSBzdGRsaWIpIGRlZmluZXMgdGhlc2UgYXMgbm9uLXN0YW5kYXJkIG5hbWVzLgotLy8gUmVmbGVjdCB0byB0aGUgc3RhbmRhcmQgbmFtZXMuCi0KLXR5cGVkZWYgOjppbnRsZWFzdDhfdCBpbnRfbGVhc3Q4X3Q7Ci10eXBlZGVmIDo6aW50ZmFzdDhfdCBpbnRfZmFzdDhfdDsKLXR5cGVkZWYgOjp1aW50bGVhc3Q4X3QgdWludF9sZWFzdDhfdDsKLXR5cGVkZWYgOjp1aW50ZmFzdDhfdCB1aW50X2Zhc3Q4X3Q7Ci0KLXR5cGVkZWYgOjppbnRsZWFzdDE2X3QgaW50X2xlYXN0MTZfdDsKLXR5cGVkZWYgOjppbnRmYXN0MTZfdCBpbnRfZmFzdDE2X3Q7Ci10eXBlZGVmIDo6dWludGxlYXN0MTZfdCB1aW50X2xlYXN0MTZfdDsKLXR5cGVkZWYgOjp1aW50ZmFzdDE2X3QgdWludF9mYXN0MTZfdDsKLQotdHlwZWRlZiA6OmludGxlYXN0MzJfdCBpbnRfbGVhc3QzMl90OwotdHlwZWRlZiA6OmludGZhc3QzMl90IGludF9mYXN0MzJfdDsKLXR5cGVkZWYgOjp1aW50bGVhc3QzMl90IHVpbnRfbGVhc3QzMl90OwotdHlwZWRlZiA6OnVpbnRmYXN0MzJfdCB1aW50X2Zhc3QzMl90OwotCi0jIGlmbmRlZiBORE5CT09TVF9OT19JTlQ2NF9UCi0KLXR5cGVkZWYgOjppbnRsZWFzdDY0X3QgaW50X2xlYXN0NjRfdDsKLXR5cGVkZWYgOjppbnRmYXN0NjRfdCBpbnRfZmFzdDY0X3Q7Ci10eXBlZGVmIDo6dWludGxlYXN0NjRfdCB1aW50X2xlYXN0NjRfdDsKLXR5cGVkZWYgOjp1aW50ZmFzdDY0X3QgdWludF9mYXN0NjRfdDsKLQotIyBlbmRpZgotCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgdXNpbmcgOjppbnQ4X3Q7ICAgICAgICAgICAgIAotICB1c2luZyA6OmludF9sZWFzdDhfdDsgICAgICAgCi0gIHVzaW5nIDo6aW50X2Zhc3Q4X3Q7ICAgICAgICAKLSAgdXNpbmcgOjp1aW50OF90OyAgICAgICAgICAgIAotICB1c2luZyA6OnVpbnRfbGVhc3Q4X3Q7ICAgICAgCi0gIHVzaW5nIDo6dWludF9mYXN0OF90OyAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIAotICB1c2luZyA6OmludDE2X3Q7ICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50X2xlYXN0MTZfdDsgICAgICAKLSAgdXNpbmcgOjppbnRfZmFzdDE2X3Q7ICAgICAgIAotICB1c2luZyA6OnVpbnQxNl90OyAgICAgICAgICAgCi0gIHVzaW5nIDo6dWludF9sZWFzdDE2X3Q7ICAgICAKLSAgdXNpbmcgOjp1aW50X2Zhc3QxNl90OyAgICAgIAotICAgICAgICAgICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50MzJfdDsgICAgICAgICAgICAKLSAgdXNpbmcgOjppbnRfbGVhc3QzMl90OyAgICAgIAotICB1c2luZyA6OmludF9mYXN0MzJfdDsgICAgICAgCi0gIHVzaW5nIDo6dWludDMyX3Q7ICAgICAgICAgICAKLSAgdXNpbmcgOjp1aW50X2xlYXN0MzJfdDsgICAgIAotICB1c2luZyA6OnVpbnRfZmFzdDMyX3Q7ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAKLSMgaWZuZGVmIE5ETkJPT1NUX05PX0lOVDY0X1QKLQotICB1c2luZyA6OmludDY0X3Q7ICAgICAgICAgICAgCi0gIHVzaW5nIDo6aW50X2xlYXN0NjRfdDsgICAgICAKLSAgdXNpbmcgOjppbnRfZmFzdDY0X3Q7ICAgICAgIAotICB1c2luZyA6OnVpbnQ2NF90OyAgICAgICAgICAgCi0gIHVzaW5nIDo6dWludF9sZWFzdDY0X3Q7ICAgICAKLSAgdXNpbmcgOjp1aW50X2Zhc3Q2NF90OyAgICAgIAotICAgICAgICAgICAgICAgICAgICAgCi0jIGVuZGlmCi0KLSAgdXNpbmcgOjppbnRtYXhfdDsgICAgICAKLSAgdXNpbmcgOjp1aW50bWF4X3Q7ICAgICAKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fIDw9IDQpIHx8IGRlZmluZWQoX19vc2ZfXykgfHwgZGVmaW5lZChfX1ZNUykKLS8vIEZyZWVCU0QgYW5kIFRydTY0IGhhdmUgYW4gPGludHR5cGVzLmg+IHRoYXQgY29udGFpbnMgbXVjaCBvZiB3aGF0IHdlIG5lZWQuCi0jIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgdXNpbmcgOjppbnQ4X3Q7ICAgICAgICAgICAgIAotICB0eXBlZGVmIGludDhfdCBpbnRfbGVhc3Q4X3Q7ICAgICAgIAotICB0eXBlZGVmIGludDhfdCBpbnRfZmFzdDhfdDsgICAgICAgIAotICB1c2luZyA6OnVpbnQ4X3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgdWludDhfdCB1aW50X2xlYXN0OF90OyAgICAgIAotICB0eXBlZGVmIHVpbnQ4X3QgdWludF9mYXN0OF90OyAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIAotICB1c2luZyA6OmludDE2X3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgaW50MTZfdCBpbnRfbGVhc3QxNl90OyAgICAgIAotICB0eXBlZGVmIGludDE2X3QgaW50X2Zhc3QxNl90OyAgICAgICAKLSAgdXNpbmcgOjp1aW50MTZfdDsgICAgICAgICAgIAotICB0eXBlZGVmIHVpbnQxNl90IHVpbnRfbGVhc3QxNl90OyAgICAgCi0gIHR5cGVkZWYgdWludDE2X3QgdWludF9mYXN0MTZfdDsgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIAotICB1c2luZyA6OmludDMyX3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgaW50MzJfdCBpbnRfbGVhc3QzMl90OyAgICAgIAotICB0eXBlZGVmIGludDMyX3QgaW50X2Zhc3QzMl90OyAgICAgICAKLSAgdXNpbmcgOjp1aW50MzJfdDsgICAgICAgICAgIAotICB0eXBlZGVmIHVpbnQzMl90IHVpbnRfbGVhc3QzMl90OyAgICAgCi0gIHR5cGVkZWYgdWludDMyX3QgdWludF9mYXN0MzJfdDsgICAgICAKLSAgICAgICAgIAotIyBpZm5kZWYgTkROQk9PU1RfTk9fSU5UNjRfVCAgICAgICAgICAKLQotICB1c2luZyA6OmludDY0X3Q7ICAgICAgICAgICAgCi0gIHR5cGVkZWYgaW50NjRfdCBpbnRfbGVhc3Q2NF90OyAgICAgIAotICB0eXBlZGVmIGludDY0X3QgaW50X2Zhc3Q2NF90OyAgICAgICAKLSAgdXNpbmcgOjp1aW50NjRfdDsgICAgICAgICAgIAotICB0eXBlZGVmIHVpbnQ2NF90IHVpbnRfbGVhc3Q2NF90OyAgICAgCi0gIHR5cGVkZWYgdWludDY0X3QgdWludF9mYXN0NjRfdDsgICAgICAKLQotICB0eXBlZGVmIGludDY0X3QgaW50bWF4X3Q7Ci0gIHR5cGVkZWYgdWludDY0X3QgdWludG1heF90OwotCi0jIGVsc2UKLQotICB0eXBlZGVmIGludDMyX3QgaW50bWF4X3Q7Ci0gIHR5cGVkZWYgdWludDMyX3QgdWludG1heF90OwotCi0jIGVuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlICAvLyBORE5CT09TVF9IQVNfU1RESU5UX0gKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPiAvLyBpbXBsZW1lbnRhdGlvbiBhcnRpZmFjdDsgbm90IHBhcnQgb2YgaW50ZXJmYWNlCi0jIGluY2x1ZGUgPGxpbWl0cy5oPiAgICAgICAgIC8vIG5lZWRlZCBmb3IgbGltaXRzIG1hY3JvcwotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyAgVGhlc2UgYXJlIGZhaXJseSBzYWZlIGd1ZXNzZXMgZm9yIHNvbWUgMTYtYml0LCBhbmQgbW9zdCAzMi1iaXQgYW5kIDY0LWJpdAotLy8gIHBsYXRmb3Jtcy4gIEZvciBvdGhlciBzeXN0ZW1zLCB0aGV5IHdpbGwgaGF2ZSB0byBiZSBoYW5kIHRhaWxvcmVkLgotLy8KLS8vICBCZWNhdXNlIHRoZSBmYXN0IHR5cGVzIGFyZSBhc3N1bWVkIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSB1bmRlY29yYXRlZCB0eXBlcywKLS8vICBpdCBtYXkgYmUgcG9zc2libGUgdG8gaGFuZCB0YWlsb3IgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbi4gIFN1Y2gKLS8vICBhbiBvcHRpbWl6YXRpb24gbWF5IGJlIGlsbHVzaW9uYXJ5OyBvbiB0aGUgSW50ZWwgeDg2LWZhbWlseSAzODYgb24sIGZvcgotLy8gIGV4YW1wbGUsIGJ5dGUgYXJpdGhtZXRpYyBhbmQgbG9hZC9zdG9yZXMgYXJlIGFzIGZhc3QgYXMgImludCIgc2l6ZWQgb25lcy4KLQotLy8gIDgtYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmIFVDSEFSX01BWCA9PSAweGZmCi0gICAgIHR5cGVkZWYgc2lnbmVkIGNoYXIgICAgIGludDhfdDsKLSAgICAgdHlwZWRlZiBzaWduZWQgY2hhciAgICAgaW50X2xlYXN0OF90OwotICAgICB0eXBlZGVmIHNpZ25lZCBjaGFyICAgICBpbnRfZmFzdDhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgdWludDhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgdWludF9sZWFzdDhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgdWludF9mYXN0OF90OwotIyBlbHNlCi0jICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyBlbmRpZgotCi0vLyAgMTYtYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaWYgVVNIUlRfTUFYID09IDB4ZmZmZgotIyAgaWYgZGVmaW5lZChfX2NyYXl4MSkKLSAgICAgLy8gVGhlIENyYXkgWDEgaGFzIGEgMTYtYml0IHNob3J0LCBob3dldmVyIGl0IGlzIG5vdCByZWNvbW1lbmQKLSAgICAgLy8gZm9yIHVzZSBpbiBwZXJmb3JtYW5jZSBjcml0aWNhbCBjb2RlLgotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnQxNl90OwotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICBpbnRfbGVhc3QxNl90OwotICAgICB0eXBlZGVmIGludCAgICAgICAgICAgICBpbnRfZmFzdDE2X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVpbnQxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgdWludF9mYXN0MTZfdDsKLSMgIGVsc2UKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50MTZfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2Zhc3QxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgdWludF9sZWFzdDE2X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVpbnRfZmFzdDE2X3Q7Ci0jICBlbmRpZgotIyBlbGlmIChVU0hSVF9NQVggPT0gMHhmZmZmZmZmZikgJiYgZGVmaW5lZChfX01UQV9fKSAKLSAgICAgIC8vIE9uIE1UQSAvIFhNVCBzaG9ydCBpcyAzMiBiaXRzIHVubGVzcyB0aGUgLXNob3J0MTYgY29tcGlsZXIgZmxhZyBpcyBzcGVjaWZpZWQgCi0gICAgICAvLyBNVEEgLyBYTVQgZG9lcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbm9uLXN0YW5kYXJkIGludGVnZXIgdHlwZXMgCi0gICAgICB0eXBlZGVmIF9fc2hvcnQxNiAgICAgICAgICAgaW50MTZfdDsgCi0gICAgICB0eXBlZGVmIF9fc2hvcnQxNiAgICAgICAgICAgaW50X2xlYXN0MTZfdDsgCi0gICAgICB0eXBlZGVmIF9fc2hvcnQxNiAgICAgICAgICAgaW50X2Zhc3QxNl90OyAKLSAgICAgIHR5cGVkZWYgdW5zaWduZWQgX19zaG9ydDE2ICB1aW50MTZfdDsgCi0gICAgICB0eXBlZGVmIHVuc2lnbmVkIF9fc2hvcnQxNiAgdWludF9sZWFzdDE2X3Q7IAotICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX3Nob3J0MTYgIHVpbnRfZmFzdDE2X3Q7IAotIyBlbGlmIChVU0hSVF9NQVggPT0gMHhmZmZmZmZmZikgJiYgZGVmaW5lZChDUkFZKQotICAgICAvLyBubyAxNi1iaXQgdHlwZXMgb24gQ3JheToKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgaW50X2Zhc3QxNl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICB1aW50X2xlYXN0MTZfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgdWludF9mYXN0MTZfdDsKLSMgZWxzZQotIyAgICBlcnJvciBkZWZhdWx0cyBub3QgY29ycmVjdDsgeW91IG11c3QgaGFuZCBtb2RpZnkgbmRuYm9vc3QvY3N0ZGludC5ocHAKLSMgZW5kaWYKLQotLy8gIDMyLWJpdCB0eXBlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmIFVJTlRfTUFYID09IDB4ZmZmZmZmZmYKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgaW50MzJfdDsKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgaW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgaW50X2Zhc3QzMl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCAgICB1aW50MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgdWludF9sZWFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgIHVpbnRfZmFzdDMyX3Q7Ci0jIGVsaWYgKFVTSFJUX01BWCA9PSAweGZmZmZmZmZmKQotICAgICB0eXBlZGVmIHNob3J0ICAgICAgICAgICAgIGludDMyX3Q7Ci0gICAgIHR5cGVkZWYgc2hvcnQgICAgICAgICAgICAgaW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiBzaG9ydCAgICAgICAgICAgICBpbnRfZmFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgdWludDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgdWludF9sZWFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgdWludF9mYXN0MzJfdDsKLSMgZWxpZiBVTE9OR19NQVggPT0gMHhmZmZmZmZmZgotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICBpbnQzMl90OwotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICBpbnRfbGVhc3QzMl90OwotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICBpbnRfZmFzdDMyX3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIHVpbnQzMl90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICB1aW50X2xlYXN0MzJfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgdWludF9mYXN0MzJfdDsKLSMgZWxpZiAoVUlOVF9NQVggPT0gMHhmZmZmZmZmZmZmZmZmZmZmKSAmJiBkZWZpbmVkKF9fTVRBX18pIAotICAgICAgLy8gSW50ZWdlcnMgYXJlIDY0IGJpdHMgb24gdGhlIE1UQSAvIFhNVCAKLSAgICAgIHR5cGVkZWYgX19pbnQzMiAgICAgICAgICAgaW50MzJfdDsgCi0gICAgICB0eXBlZGVmIF9faW50MzIgICAgICAgICAgIGludF9sZWFzdDMyX3Q7IAotICAgICAgdHlwZWRlZiBfX2ludDMyICAgICAgICAgICBpbnRfZmFzdDMyX3Q7IAotICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyICB1aW50MzJfdDsgCi0gICAgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgIHVpbnRfbGVhc3QzMl90OyAKLSAgICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludF9mYXN0MzJfdDsgCi0jIGVsc2UKLSMgICAgZXJyb3IgZGVmYXVsdHMgbm90IGNvcnJlY3Q7IHlvdSBtdXN0IGhhbmQgbW9kaWZ5IG5kbmJvb3N0L2NzdGRpbnQuaHBwCi0jIGVuZGlmCi0KLS8vICA2NC1iaXQgdHlwZXMgKyBpbnRtYXhfdCBhbmQgdWludG1heF90ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpICYmIFwKLSAgICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykgJiYgXAotICAgKCFkZWZpbmVkKF9fR0xJQkNQUF9fKSB8fCBkZWZpbmVkKF9HTElCQ1BQX1VTRV9MT05HX0xPTkcpKSAmJiBcCi0gICAoZGVmaW5lZChVTExPTkdfTUFYKSB8fCBkZWZpbmVkKFVMT05HX0xPTkdfTUFYKSB8fCBkZWZpbmVkKFVMT05HTE9OR19NQVgpKQotIyAgICBpZiBkZWZpbmVkKF9faHB1eCkKLSAgICAgLy8gSFAtVVgncyB2YWx1ZSBvZiBVTE9OR19MT05HX01BWCBpcyB1bnVzYWJsZSBpbiBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbnMKLSMgICAgZWxpZiAoZGVmaW5lZChVTExPTkdfTUFYKSAmJiBVTExPTkdfTUFYID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMKSB8fCAoZGVmaW5lZChVTE9OR19MT05HX01BWCkgJiYgVUxPTkdfTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8IChkZWZpbmVkKFVMT05HTE9OR19NQVgpICYmIFVMT05HTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIqKjY0IC0gMQotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotCi0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICAgICAgICAgICAgaW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSAgIHVpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgICAgICAgICAgICBpbnQ2NF90OwotICAgICB0eXBlZGVmICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSAgICAgICAgICAgIGludF9sZWFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlICAgICAgICAgICAgaW50X2Zhc3Q2NF90OwotICAgICB0eXBlZGVmICA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgICB1aW50NjRfdDsKLSAgICAgdHlwZWRlZiAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlICAgdWludF9sZWFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSAgIHVpbnRfZmFzdDY0X3Q7Ci0KLSMgZWxpZiBVTE9OR19NQVggIT0gMHhmZmZmZmZmZgotCi0jICAgIGlmIFVMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNSAvLyAyKio2NCAtIDEKLSAgICAgdHlwZWRlZiBsb25nICAgICAgICAgICAgICAgICBpbnRtYXhfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICAgICAgICAgaW50NjRfdDsKLSAgICAgdHlwZWRlZiBsb25nICAgICAgICAgICAgICAgICBpbnRfbGVhc3Q2NF90OwotICAgICB0eXBlZGVmIGxvbmcgICAgICAgICAgICAgICAgIGludF9mYXN0NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50X2xlYXN0NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICB1aW50X2Zhc3Q2NF90OwotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyBlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgIGludG1heF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgdWludG1heF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nICAgICAgICAgICAgaW50NjRfdDsKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgIGludF9sZWFzdDY0X3Q7Ci0gICAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICBpbnRfZmFzdDY0X3Q7Ci0gICAgIF9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICB1aW50NjRfdDsKLSAgICAgX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgIHVpbnRfbGVhc3Q2NF90OwotICAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgdWludF9mYXN0NjRfdDsKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgLy8KLSAgICAgLy8gd2UgaGF2ZSBCb3JsYW5kL0ludGVsL01pY3Jvc29mdCBfX2ludDY0OgotICAgICAvLwotICAgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAgICAgaW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICB1aW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgICBpbnQ2NF90OwotICAgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAgICAgaW50X2xlYXN0NjRfdDsKLSAgICAgdHlwZWRlZiBfX2ludDY0ICAgICAgICAgICAgIGludF9mYXN0NjRfdDsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICAgIHVpbnQ2NF90OwotICAgICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgICAgdWludF9sZWFzdDY0X3Q7Ci0gICAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICB1aW50X2Zhc3Q2NF90OwotIyBlbHNlIC8vIGFzc3VtZSBubyA2NC1iaXQgaW50ZWdlcnMKLSMgIGRlZmluZSBORE5CT09TVF9OT19JTlQ2NF9UCi0gICAgIHR5cGVkZWYgaW50MzJfdCAgICAgICAgICAgICAgaW50bWF4X3Q7Ci0gICAgIHR5cGVkZWYgdWludDMyX3QgICAgICAgICAgICAgdWludG1heF90OwotIyBlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9IQVNfU1RESU5UX0gKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0NTVERJTlRfSFBQCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotTWFjcm8gZGVmaW5pdGlvbiBzZWN0aW9uOgotCi1BZGRlZCAyM3JkIFNlcHRlbWJlciAyMDAwIChKb2huIE1hZGRvY2spLgotTW9kaWZpZWQgMTF0aCBTZXB0ZW1iZXIgMjAwMSB0byBiZSBleGNsdWRlZCB3aGVuCi1ORE5CT09TVF9IQVNfU1RESU5UX0ggaXMgZGVmaW5lZCAoSm9obiBNYWRkb2NrKS4KLU1vZGlmaWVkIDExdGggRGVjIDIwMDkgdG8gYWx3YXlzIGRlZmluZSB0aGUKLUlOVCNfQyBtYWNyb3MgaWYgdGhleSdyZSBub3QgYWxyZWFkeSBkZWZpbmVkIChKb2huIE1hZGRvY2spLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9fU1REQ19DT05TVEFOVF9NQUNST1NfREVGSU5FRCkgJiYgXAotICAgKCFkZWZpbmVkKElOVDhfQykgfHwgIWRlZmluZWQoSU5UMTZfQykgfHwgIWRlZmluZWQoSU5UMzJfQykgfHwgIWRlZmluZWQoSU5UNjRfQykpCi0vLwotLy8gRm9yIHRoZSBmb2xsb3dpbmcgY29kZSB3ZSBnZXQgc2V2ZXJhbCB3YXJuaW5ncyBhbG9uZyB0aGUgbGluZXMgb2Y6IAotLy8gCi0vLyBuZG5ib29zdC9jc3RkaW50LmhwcDo0Mjg6MzU6IGVycm9yOiB1c2Ugb2YgQzk5IGxvbmcgbG9uZyBpbnRlZ2VyIGNvbnN0YW50IAotLy8gCi0vLyBTbyB3ZSBkZWNsYXJlIHRoaXMgYSBzeXN0ZW0gaGVhZGVyIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLiAKLS8vCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpIAotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlciAKLSNlbmRpZiAKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotIyBkZWZpbmUgTkROQk9PU1RfX1NURENfQ09OU1RBTlRfTUFDUk9TX0RFRklORUQKLSMgaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0vLwotLy8gQm9ybGFuZC9JbnRlbC9NaWNyb3NvZnQgY29tcGlsZXJzIGhhdmUgd2lkdGggc3BlY2lmaWMgc3VmZml4ZXM6Ci0vLwotI2lmbmRlZiBJTlQ4X0MKLSMgIGRlZmluZSBJTlQ4X0ModmFsdWUpICAgICB2YWx1ZSMjaTgKLSNlbmRpZgotI2lmbmRlZiBJTlQxNl9DCi0jICBkZWZpbmUgSU5UMTZfQyh2YWx1ZSkgICAgdmFsdWUjI2kxNgotI2VuZGlmCi0jaWZuZGVmIElOVDMyX0MKLSMgIGRlZmluZSBJTlQzMl9DKHZhbHVlKSAgICB2YWx1ZSMjaTMyCi0jZW5kaWYKLSNpZm5kZWYgSU5UNjRfQwotIyAgZGVmaW5lIElOVDY0X0ModmFsdWUpICAgIHZhbHVlIyNpNjQKLSNlbmRpZgotIyAgaWZkZWYgX19CT1JMQU5EQ19fCi0gICAgLy8gQm9ybGFuZCBidWc6IGFwcGVuZGluZyB1aTggbWFrZXMgdGhlIHR5cGUgYSBzaWduZWQgY2hhcgotIyAgIGRlZmluZSBVSU5UOF9DKHZhbHVlKSAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSMjdSkKLSMgIGVsc2UKLSMgICBkZWZpbmUgVUlOVDhfQyh2YWx1ZSkgICAgdmFsdWUjI3VpOAotIyAgZW5kaWYKLSNpZm5kZWYgVUlOVDE2X0MKLSMgIGRlZmluZSBVSU5UMTZfQyh2YWx1ZSkgICB2YWx1ZSMjdWkxNgotI2VuZGlmCi0jaWZuZGVmIFVJTlQzMl9DCi0jICBkZWZpbmUgVUlOVDMyX0ModmFsdWUpICAgdmFsdWUjI3VpMzIKLSNlbmRpZgotI2lmbmRlZiBVSU5UNjRfQwotIyAgZGVmaW5lIFVJTlQ2NF9DKHZhbHVlKSAgIHZhbHVlIyN1aTY0Ci0jZW5kaWYKLSNpZm5kZWYgSU5UTUFYX0MKLSMgIGRlZmluZSBJTlRNQVhfQyh2YWx1ZSkgICB2YWx1ZSMjaTY0Ci0jICBkZWZpbmUgVUlOVE1BWF9DKHZhbHVlKSAgdmFsdWUjI3VpNjQKLSNlbmRpZgotCi0jIGVsc2UKLS8vICBkbyBpdCB0aGUgb2xkIGZhc2hpb25lZCB3YXk6Ci0KLS8vICA4LWJpdCB0eXBlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyAgaWYgKFVDSEFSX01BWCA9PSAweGZmKSAmJiAhZGVmaW5lZChJTlQ4X0MpCi0jICAgZGVmaW5lIElOVDhfQyh2YWx1ZSkgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDhfdD4odmFsdWUpCi0jICAgZGVmaW5lIFVJTlQ4X0ModmFsdWUpIHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50OF90Pih2YWx1ZSMjdSkKLSMgIGVuZGlmCi0KLS8vICAxNi1iaXQgdHlwZXMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyAgaWYgKFVTSFJUX01BWCA9PSAweGZmZmYpICYmICFkZWZpbmVkKElOVDE2X0MpCi0jICAgZGVmaW5lIElOVDE2X0ModmFsdWUpIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQxNl90Pih2YWx1ZSkKLSMgICBkZWZpbmUgVUlOVDE2X0ModmFsdWUpIHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4odmFsdWUjI3UpCi0jICBlbmRpZgotCi0vLyAgMzItYml0IHR5cGVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWZuZGVmIElOVDMyX0MKLSMgIGlmIChVSU5UX01BWCA9PSAweGZmZmZmZmZmKQotIyAgIGRlZmluZSBJTlQzMl9DKHZhbHVlKSB2YWx1ZQotIyAgIGRlZmluZSBVSU5UMzJfQyh2YWx1ZSkgdmFsdWUjI3UKLSMgIGVsaWYgVUxPTkdfTUFYID09IDB4ZmZmZmZmZmYKLSMgICBkZWZpbmUgSU5UMzJfQyh2YWx1ZSkgdmFsdWUjI0wKLSMgICBkZWZpbmUgVUlOVDMyX0ModmFsdWUpIHZhbHVlIyN1TAotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyAgNjQtYml0IHR5cGVzICsgaW50bWF4X3QgYW5kIHVpbnRtYXhfdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWZuZGVmIElOVDY0X0MKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgXAotICAgIChkZWZpbmVkKFVMTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdfTE9OR19NQVgpIHx8IGRlZmluZWQoVUxPTkdMT05HX01BWCkgfHwgZGVmaW5lZChfTExPTkdfTUFYKSkKLQotIyAgICBpZiBkZWZpbmVkKF9faHB1eCkKLSAgICAgICAgLy8gSFAtVVgncyB2YWx1ZSBvZiBVTE9OR19MT05HX01BWCBpcyB1bnVzYWJsZSBpbiBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbnMKLSMgICAgICAgZGVmaW5lIElOVDY0X0ModmFsdWUpIHZhbHVlIyNMTAotIyAgICAgICBkZWZpbmUgVUlOVDY0X0ModmFsdWUpIHZhbHVlIyN1TEwKLSMgICAgZWxpZiAoZGVmaW5lZChVTExPTkdfTUFYKSAmJiBVTExPTkdfTUFYID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMKSB8fCAgXAotICAgICAgICAoZGVmaW5lZChVTE9OR19MT05HX01BWCkgJiYgVUxPTkdfTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8ICBcCi0gICAgICAgIChkZWZpbmVkKFVMT05HTE9OR19NQVgpICYmIFVMT05HTE9OR19NQVggPT0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwpIHx8IFwKLSAgICAgICAgKGRlZmluZWQoX0xMT05HX01BWCkgJiYgX0xMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCkKLQotIyAgICAgICBkZWZpbmUgSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI0xMCi0jICAgICAgIGRlZmluZSBVSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI3VMTAotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyAgZWxpZiBVTE9OR19NQVggIT0gMHhmZmZmZmZmZgotCi0jICAgIGlmIFVMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNVUgLy8gMioqNjQgLSAxCi0jICAgICAgIGRlZmluZSBJTlQ2NF9DKHZhbHVlKSB2YWx1ZSMjTAotIyAgICAgICBkZWZpbmUgVUlOVDY0X0ModmFsdWUpIHZhbHVlIyN1TAotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgIC8vIFVzdWFsIG1hY3JvcyBub3QgZGVmaW5lZCwgd29yayB0aGluZ3Mgb3V0IGZvciBvdXJzZWx2ZXM6Ci0jICAgIGlmKH4wdUxMID09IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMKQotIyAgICAgICBkZWZpbmUgSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI0xMCi0jICAgICAgIGRlZmluZSBVSU5UNjRfQyh2YWx1ZSkgdmFsdWUjI3VMTAotIyAgICBlbHNlCi0jICAgICAgIGVycm9yIGRlZmF1bHRzIG5vdCBjb3JyZWN0OyB5b3UgbXVzdCBoYW5kIG1vZGlmeSBuZG5ib29zdC9jc3RkaW50LmhwcAotIyAgICBlbmRpZgotIyAgZWxzZQotIyAgICBlcnJvciBkZWZhdWx0cyBub3QgY29ycmVjdDsgeW91IG11c3QgaGFuZCBtb2RpZnkgbmRuYm9vc3QvY3N0ZGludC5ocHAKLSMgIGVuZGlmCi0KLSMgIGlmZGVmIE5ETkJPT1NUX05PX0lOVDY0X1QKLSMgICBkZWZpbmUgSU5UTUFYX0ModmFsdWUpIElOVDMyX0ModmFsdWUpCi0jICAgZGVmaW5lIFVJTlRNQVhfQyh2YWx1ZSkgVUlOVDMyX0ModmFsdWUpCi0jICBlbHNlCi0jICAgZGVmaW5lIElOVE1BWF9DKHZhbHVlKSBJTlQ2NF9DKHZhbHVlKQotIyAgIGRlZmluZSBVSU5UTUFYX0ModmFsdWUpIFVJTlQ2NF9DKHZhbHVlKQotIyAgZW5kaWYKLSNlbmRpZgotIyBlbmRpZiAvLyBCb3JsYW5kL01pY3Jvc29mdCBzcGVjaWZpYyB3aWR0aCBzdWZmaXhlcwotCi0jZW5kaWYgLy8gSU5UI19DIG1hY3Jvcy4KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9jc3RkbGliLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvY3N0ZGxpYi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZDEyNGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9jc3RkbGliLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8vICBuZG5ib29zdC9jc3RkbGliLmhwcCBoZWFkZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMS4gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9jc3RkbGliLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgIDI2IEZlYiAwMSAgSW5pdGlhbCB2ZXJzaW9uIChCZW1hbiBEYXdlcykKLQotI2lmbmRlZiBORE5CT09TVF9DU1RETElCX0hQUAotI2RlZmluZSBORE5CT09TVF9DU1RETElCX0hQUAotCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAvLyAgVGhlIGludGVudCBpcyB0byBwcm9wb3NlIHRoZSBmb2xsb3dpbmcgZm9yIGFkZGl0aW9uIHRvIG5hbWVzcGFjZSBzdGQKLSAgIC8vICBpbiB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnksIGFuZCB0byB0aGVuIGRlcHJlY2F0ZSBFWElUX1NVQ0NFU1MgYW5kCi0gICAvLyAgRVhJVF9GQUlMVVJFLiAgQXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB0aGlzIGhlYWRlciBkZWZpbmVzIHRoZQotICAgLy8gIG5ldyBjb25zdGFudHMgaW4gdGVybXMgb2YgRVhJVF9TVUNDRVNTIGFuZCBFWElUX0ZBSUxVUkUuICBJbiBhIG5ldwotICAgLy8gIHN0YW5kYXJkLCB0aGUgY29uc3RhbnRzIHdvdWxkIGJlIGltcGxlbWVudGF0aW9uLWRlZmluZWQsIGFsdGhvdWdoIGl0Ci0gICAvLyAgbWlnaHQgYmUgd29ydGh3aGlsZSB0byAic3VnZ2VzdCIgKHdoaWNoIGEgc3RhbmRhcmQgaXMgYWxsb3dlZCB0byBkbykKLSAgIC8vICB2YWx1ZXMgb2YgMCBhbmQgMSByZXNwZWN0aXZlbHkuCi0KLSAgIC8vICBSYXRpb25hbGUgZm9yIGhhdmluZyBtdWx0aXBsZSBmYWlsdXJlIHZhbHVlczogc29tZSBlbnZpcm9ubWVudHMgbWF5Ci0gICAvLyAgd2lzaCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBjbGFzc2VzIG9mIGVycm9ycy4KLSAgIC8vICBSYXRpb25hbGUgZm9yIGNob2ljZSBvZiB2YWx1ZXM6IHByb2dyYW1zIG9mdGVuIHVzZSB2YWx1ZXMgPCAxMDAgZm9yCi0gICAvLyAgdGhlaXIgb3duIGVycm9yIHJlcG9ydGluZy4gIFZhbHVlcyA+IDI1NSBhcmUgc29tZXRpbWVzIHJlc2VydmVkIGZvcgotICAgLy8gIHN5c3RlbSBkZXRlY3RlZCBlcnJvcnMuICAyMDAvMjAxIHdlcmUgc3VnZ2VzdGVkIHRvIG1pbmltaXplIGNvbmZsaWN0LgotCi0gICBjb25zdCBpbnQgZXhpdF9zdWNjZXNzID0gRVhJVF9TVUNDRVNTOyAgLy8gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB2YWx1ZQotICAgY29uc3QgaW50IGV4aXRfZmFpbHVyZSA9IEVYSVRfRkFJTFVSRTsgIC8vIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWUKLSAgIGNvbnN0IGludCBleGl0X2V4Y2VwdGlvbl9mYWlsdXJlID0gMjAwOyAvLyBvdGhlcndpc2UgdW5jYXVnaHQgZXhjZXB0aW9uCi0gICBjb25zdCBpbnQgZXhpdF90ZXN0X2ZhaWx1cmUgPSAyMDE7ICAgICAgLy8gcmVwb3J0X2Vycm9yIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIHJlcG9ydF9jcml0aWNhbF9lcnJvciBjYWxsZWQuCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTExZjlmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcCAtIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkvY3VycmVudF9mdW5jdGlvbi5odG1sCi0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBjdXJyZW50X2Z1bmN0aW9uX2hlbHBlcigpCi17Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCAoZGVmaW5lZChfX01XRVJLU19fKSAmJiAoX19NV0VSS1NfXyA+PSAweDMwMDApKSB8fCAoZGVmaW5lZChfX0lDQykgJiYgKF9fSUNDID49IDYwMCkpIHx8IGRlZmluZWQoX19naHNfXykKLQotIyBkZWZpbmUgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTiBfX1BSRVRUWV9GVU5DVElPTl9fCi0KLSNlbGlmIGRlZmluZWQoX19ETUNfXykgJiYgKF9fRE1DX18gPj0gMHg4MTApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gX19QUkVUVFlfRlVOQ1RJT05fXwotCi0jZWxpZiBkZWZpbmVkKF9fRlVOQ1NJR19fKQotCi0jIGRlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OIF9fRlVOQ1NJR19fCi0KLSNlbGlmIChkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmIChfX0lOVEVMX0NPTVBJTEVSID49IDYwMCkpIHx8IChkZWZpbmVkKF9fSUJNQ1BQX18pICYmIChfX0lCTUNQUF9fID49IDUwMCkpCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gX19GVU5DVElPTl9fCi0KLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID49IDB4NTUwKQotCi0jIGRlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OIF9fRlVOQ19fCi0KLSNlbGlmIGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxKQotCi0jIGRlZmluZSBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OIF9fZnVuY19fCi0KLSNlbHNlCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04gIih1bmtub3duKSIKLQotI2VuZGlmCi0KLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2JpbmFyeV9zZWFyY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYmluYXJ5X3NlYXJjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NjMyNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYmluYXJ5X3NlYXJjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAgMjAwMCBEYXZpZCBBYnJhaGFtcy4gCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vIAotLy8gQ29weXJpZ2h0IChjKSAxOTk0Ci0vLyBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQotLy8gCi0vLyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUKLS8vIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsCi0vLyBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAotLy8gdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIKLS8vIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4gIEhld2xldHQtUGFja2FyZCBDb21wYW55IG1ha2VzIG5vCi0vLyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotLy8gcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCi0vLyAKLS8vIENvcHlyaWdodCAoYykgMTk5NgotLy8gU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuCi0vLyAKLS8vIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZQotLy8gYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwKLS8vIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kCi0vLyB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhcgotLy8gaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLiAgU2lsaWNvbiBHcmFwaGljcyBtYWtlcyBubwotLy8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLS8vIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgotLy8gCi0jaWZuZGVmIEJJTkFSWV9TRUFSQ0hfTkROQk9PU1RfRFdBXzEyMjYwMF9IXwotIyBkZWZpbmUgQklOQVJZX1NFQVJDSF9ORE5CT09TVF9EV0FfMTIyNjAwX0hfCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4KLSMgaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgVHA+Ci1Gb3J3YXJkSXRlciBsb3dlcl9ib3VuZChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHAmIHZhbCkgCi17Ci0gICAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotICAgIAotICAgIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBoYWxmOwotICAgIEZvcndhcmRJdGVyIG1pZGRsZTsKLQotICAgIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgICBoYWxmID0gbGVuID4+IDE7Ci0gICAgICBtaWRkbGUgPSBmaXJzdDsKLSAgICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgICAgaWYgKCptaWRkbGUgPCB2YWwpIHsKLSAgICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICAgICsrZmlyc3Q7Ci0gICAgICAgIGxlbiA9IGxlbiAtIGhhbGYgLSAxOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBsZW4gPSBoYWxmOwotICAgIH0KLSAgICByZXR1cm4gZmlyc3Q7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgVHAsIGNsYXNzIENvbXBhcmU+Ci1Gb3J3YXJkSXRlciBsb3dlcl9ib3VuZChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRwJiB2YWwsIENvbXBhcmUgY29tcCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlOwotCi0gIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgaGFsZiA9IGxlbiA+PiAxOwotICAgIG1pZGRsZSA9IGZpcnN0OwotICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgIGlmIChjb21wKCptaWRkbGUsIHZhbCkpIHsKLSAgICAgIGZpcnN0ID0gbWlkZGxlOwotICAgICAgKytmaXJzdDsKLSAgICAgIGxlbiA9IGxlbiAtIGhhbGYgLSAxOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBsZW4gPSBoYWxmOwotICB9Ci0gIHJldHVybiBmaXJzdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcD4KLUZvcndhcmRJdGVyIHVwcGVyX2JvdW5kKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHAmIHZhbCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlOwotCi0gIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgaGFsZiA9IGxlbiA+PiAxOwotICAgIG1pZGRsZSA9IGZpcnN0OwotICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgIGlmICh2YWwgPCAqbWlkZGxlKQotICAgICAgbGVuID0gaGFsZjsKLSAgICBlbHNlIHsKLSAgICAgIGZpcnN0ID0gbWlkZGxlOwotICAgICAgKytmaXJzdDsKLSAgICAgIGxlbiA9IGxlbiAtIGhhbGYgLSAxOwotICAgIH0KLSAgfQotICByZXR1cm4gZmlyc3Q7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgVHAsIGNsYXNzIENvbXBhcmU+Ci1Gb3J3YXJkSXRlciB1cHBlcl9ib3VuZChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRwJiB2YWwsIENvbXBhcmUgY29tcCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlOwotCi0gIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgaGFsZiA9IGxlbiA+PiAxOwotICAgIG1pZGRsZSA9IGZpcnN0OwotICAgIHN0ZDo6YWR2YW5jZShtaWRkbGUsIGhhbGYpOwotICAgIGlmIChjb21wKHZhbCwgKm1pZGRsZSkpCi0gICAgICBsZW4gPSBoYWxmOwotICAgIGVsc2UgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICB9Ci0gIHJldHVybiBmaXJzdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcD4KLXN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+Ci1lcXVhbF9yYW5nZShGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwgY29uc3QgVHAmIHZhbCkKLXsKLSAgdHlwZWRlZiBkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcj4gdHJhaXRzOwotCi0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGxlbiA9IG5kbmJvb3N0OjpkZXRhaWw6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKLSAgdHlwZW5hbWUgdHJhaXRzOjpkaWZmZXJlbmNlX3R5cGUgaGFsZjsKLSAgRm9yd2FyZEl0ZXIgbWlkZGxlLCBsZWZ0LCByaWdodDsKLQotICB3aGlsZSAobGVuID4gMCkgewotICAgIGhhbGYgPSBsZW4gPj4gMTsKLSAgICBtaWRkbGUgPSBmaXJzdDsKLSAgICBzdGQ6OmFkdmFuY2UobWlkZGxlLCBoYWxmKTsKLSAgICBpZiAoKm1pZGRsZSA8IHZhbCkgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICAgIGVsc2UgaWYgKHZhbCA8ICptaWRkbGUpCi0gICAgICBsZW4gPSBoYWxmOwotICAgIGVsc2UgewotICAgICAgbGVmdCA9IG5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2JvdW5kKGZpcnN0LCBtaWRkbGUsIHZhbCk7Ci0gICAgICBzdGQ6OmFkdmFuY2UoZmlyc3QsIGxlbik7Ci0gICAgICByaWdodCA9IG5kbmJvb3N0OjpkZXRhaWw6OnVwcGVyX2JvdW5kKCsrbWlkZGxlLCBmaXJzdCwgdmFsKTsKLSAgICAgIHJldHVybiBzdGQ6OnBhaXI8Rm9yd2FyZEl0ZXIsIEZvcndhcmRJdGVyPihsZWZ0LCByaWdodCk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBzdGQ6OnBhaXI8Rm9yd2FyZEl0ZXIsIEZvcndhcmRJdGVyPihmaXJzdCwgZmlyc3QpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXIsIGNsYXNzIFRwLCBjbGFzcyBDb21wYXJlPgotc3RkOjpwYWlyPEZvcndhcmRJdGVyLCBGb3J3YXJkSXRlcj4KLWVxdWFsX3JhbmdlKEZvcndhcmRJdGVyIGZpcnN0LCBGb3J3YXJkSXRlciBsYXN0LCBjb25zdCBUcCYgdmFsLAotICAgICAgICAgICAgICBDb21wYXJlIGNvbXApCi17Ci0gIHR5cGVkZWYgZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXI+IHRyYWl0czsKLQotICB0eXBlbmFtZSB0cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBsZW4gPSBuZG5ib29zdDo6ZGV0YWlsOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7Ci0gIHR5cGVuYW1lIHRyYWl0czo6ZGlmZmVyZW5jZV90eXBlIGhhbGY7Ci0gIEZvcndhcmRJdGVyIG1pZGRsZSwgbGVmdCwgcmlnaHQ7Ci0KLSAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICBoYWxmID0gbGVuID4+IDE7Ci0gICAgbWlkZGxlID0gZmlyc3Q7Ci0gICAgc3RkOjphZHZhbmNlKG1pZGRsZSwgaGFsZik7Ci0gICAgaWYgKGNvbXAoKm1pZGRsZSwgdmFsKSkgewotICAgICAgZmlyc3QgPSBtaWRkbGU7Ci0gICAgICArK2ZpcnN0OwotICAgICAgbGVuID0gbGVuIC0gaGFsZiAtIDE7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNvbXAodmFsLCAqbWlkZGxlKSkKLSAgICAgIGxlbiA9IGhhbGY7Ci0gICAgZWxzZSB7Ci0gICAgICBsZWZ0ID0gbmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYm91bmQoZmlyc3QsIG1pZGRsZSwgdmFsLCBjb21wKTsKLSAgICAgIHN0ZDo6YWR2YW5jZShmaXJzdCwgbGVuKTsKLSAgICAgIHJpZ2h0ID0gbmRuYm9vc3Q6OmRldGFpbDo6dXBwZXJfYm91bmQoKyttaWRkbGUsIGZpcnN0LCB2YWwsIGNvbXApOwotICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+KGxlZnQsIHJpZ2h0KTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHN0ZDo6cGFpcjxGb3J3YXJkSXRlciwgRm9yd2FyZEl0ZXI+KGZpcnN0LCBmaXJzdCk7Ci19ICAgICAgICAgICAKLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcD4KLWJvb2wgYmluYXJ5X3NlYXJjaChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBUcCYgdmFsKSB7Ci0gIEZvcndhcmRJdGVyIGkgPSBuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9ib3VuZChmaXJzdCwgbGFzdCwgdmFsKTsKLSAgcmV0dXJuIGkgIT0gbGFzdCAmJiAhKHZhbCA8ICppKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZvcndhcmRJdGVyLCBjbGFzcyBUcCwgY2xhc3MgQ29tcGFyZT4KLWJvb2wgYmluYXJ5X3NlYXJjaChGb3J3YXJkSXRlciBmaXJzdCwgRm9yd2FyZEl0ZXIgbGFzdCwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBUcCYgdmFsLAotICAgICAgICAgICAgICAgICAgIENvbXBhcmUgY29tcCkgewotICBGb3J3YXJkSXRlciBpID0gbmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYm91bmQoZmlyc3QsIGxhc3QsIHZhbCwgY29tcCk7Ci0gIHJldHVybiBpICE9IGxhc3QgJiYgIWNvbXAodmFsLCAqaSk7Ci19Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsCi0KLSNlbmRpZiAvLyBCSU5BUllfU0VBUkNIX05ETkJPT1NUX0RXQV8xMjI2MDBfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2JpdG1hc2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZGNlNGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyAgbmRuYm9vc3QvZGV0YWlsL2JpdG1hc2suaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDYKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgVXNhZ2U6ICBlbnVtIGZvbyB7IGE9MSwgYj0yLCBjPTQgfTsKLS8vICAgICAgICAgIE5ETkJPT1NUX0JJVE1BU0soIGZvbyApOwotLy8KLS8vICAgICAgICAgIHZvaWQgZiggZm9vIGFyZyApOwotLy8gICAgICAgICAgLi4uCi0vLyAgICAgICAgICBmKCBhIHwgYyApOwotCi0jaWZuZGVmIE5ETkJPT1NUX0JJVE1BU0tfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0JJVE1BU0tfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9CSVRNQVNLKEJpdG1hc2spICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgb3BlcmF0b3J8IChCaXRtYXNrIHggLCBCaXRtYXNrIHkgKSAgICAgICAgICAgICAgICAgICAgICAgXAotICB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXNrPiggc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHgpICAgICBcCi0gICAgICB8IHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnRfbGVhc3QzMl90Pih5KSk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmxpbmUgQml0bWFzayBvcGVyYXRvciYgKEJpdG1hc2sgeCAsIEJpdG1hc2sgeSApICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hc2s+KCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50X2xlYXN0MzJfdD4oeCkgICAgIFwKLSAgICAgICYgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHkpKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlubGluZSBCaXRtYXNrIG9wZXJhdG9yXiAoQml0bWFzayB4ICwgQml0bWFzayB5ICkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFzaz4oIHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnRfbGVhc3QzMl90Pih4KSAgICAgXAotICAgICAgXiBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50X2xlYXN0MzJfdD4oeSkpOyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgb3BlcmF0b3J+IChCaXRtYXNrIHggKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXNrPih+c3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludF9sZWFzdDMyX3Q+KHgpKTsgfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgJiBvcGVyYXRvciY9KEJpdG1hc2sgJiB4ICwgQml0bWFzayB5KSAgICAgICAgICAgICAgICAgICAgXAotICB7IHggPSB4ICYgeSA7IHJldHVybiB4IDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgJiBvcGVyYXRvcnw9KEJpdG1hc2sgJiB4ICwgQml0bWFzayB5KSAgICAgICAgICAgICAgICAgICAgXAotICB7IHggPSB4IHwgeSA7IHJldHVybiB4IDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW5saW5lIEJpdG1hc2sgJiBvcGVyYXRvcl49KEJpdG1hc2sgJiB4ICwgQml0bWFzayB5KSAgICAgICAgICAgICAgICAgICAgXAotICB7IHggPSB4IF4geSA7IHJldHVybiB4IDsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0JJVE1BU0tfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEwZjRhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9jYWxsX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gY2FsbF90cmFpdHM6IGRlZmluZXMgdHlwZWRlZnMgZm9yIGZ1bmN0aW9uIHVzYWdlCi0vLyAoc2VlIGxpYnMvdXRpbGl0eS9jYWxsX3RyYWl0cy5odG0pCi0KLS8qIFJlbGVhc2Ugbm90ZXM6Ci0gICAyM3JkIEp1bHkgMjAwMDoKLSAgICAgIEZpeGVkIGFycmF5IHNwZWNpYWxpemF0aW9uLiAoSk0pCi0gICAgICBBZGRlZCBCb3JsYW5kIHNwZWNpZmljIGZpeGVzIGZvciByZWZlcmVuY2UgdHlwZXMKLSAgICAgIChpc3N1ZSByYWlzZWQgYnkgU3RldmUgQ2xlYXJ5KS4KLSovCi0KLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0NBTExfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ0FMTF9UUkFJVFNfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIHNtYWxsXz4KLXN0cnVjdCBjdF9pbXAyCi17Ci0gICB0eXBlZGVmIGNvbnN0IFQmIHBhcmFtX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdF9pbXAyPFQsIHRydWU+Ci17Ci0gICB0eXBlZGVmIGNvbnN0IFQgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzcCwgYm9vbCBiMSwgYm9vbCBiMj4KLXN0cnVjdCBjdF9pbXAKLXsKLSAgIHR5cGVkZWYgY29uc3QgVCYgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzcCwgYm9vbCBiMj4KLXN0cnVjdCBjdF9pbXA8VCwgaXNwLCB0cnVlLCBiMj4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY3RfaW1wMjxULCBzaXplb2YoVCkgPD0gc2l6ZW9mKHZvaWQqKT46OnBhcmFtX3R5cGUgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGlzcCwgYm9vbCBiMT4KLXN0cnVjdCBjdF9pbXA8VCwgaXNwLCBiMSwgdHJ1ZT4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY3RfaW1wMjxULCBzaXplb2YoVCkgPD0gc2l6ZW9mKHZvaWQqKT46OnBhcmFtX3R5cGUgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGIxLCBib29sIGIyPgotc3RydWN0IGN0X2ltcDxULCB0cnVlLCBiMSwgYjI+Ci17Ci0gICB0eXBlZGVmIGNvbnN0IFQgcGFyYW1fdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIC8vCi0gICAvLyBDKysgQnVpbGRlciB3b3JrYXJvdW5kOiB3ZSBzaG91bGQgYmUgYWJsZSB0byBkZWZpbmUgYSBjb21waWxlIHRpbWUKLSAgIC8vIGNvbnN0YW50IGFuZCBwYXNzIHRoYXQgYXMgYSBzaW5nbGUgdGVtcGxhdGUgcGFyYW1ldGVyIHRvIGN0X2ltcDxULGJvb2w+LAotICAgLy8gaG93ZXZlciBjb21waWxlciBidWdzIHByZXZlbnQgdGhpcyAtIGluc3RlYWQgcGFzcyB0aHJlZSBib29sJ3MgdG8KLSAgIC8vIGN0X2ltcDxULGJvb2wsYm9vbCxib29sPiBhbmQgYWRkIGFuIGV4dHJhIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLSAgIC8vIG9mIGN0X2ltcCB0byBoYW5kbGUgdGhlIGxvZ2ljLiAoSk0pCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmN0X2ltcDwKLSAgICAgIFQsCi0gICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLAotICAgICAgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWUKLSAgID46OnBhcmFtX3R5cGUgcGFyYW1fdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmPgotewotICAgdHlwZWRlZiBUJiB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgVCYgcGFyYW1fdHlwZTsgIC8vIGhoIHJlbW92ZWQgY29uc3QKLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sICA8IDB4NUEwICkKLS8vIHRoZXNlIGFyZSBpbGxlZ2FsIHNwZWNpYWxpc2F0aW9uczsgY3YtcXVhbGlmaWVzIGFwcGxpZWQgdG8KLS8vIHJlZmVyZW5jZXMgaGF2ZSBubyBlZmZlY3QgYWNjb3JkaW5nIHRvIFs4LjMuMnAxXSwKLS8vIEMrKyBCdWlsZGVyIHJlcXVpcmVzIHRoZW0gdGhvdWdoIGFzIGl0IHRyZWF0cyBjdi1xdWFsaWZpZWQKLS8vIHJlZmVyZW5jZXMgYXMgZGlzdGluY3QgdHlwZXMuLi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmY29uc3Q+Ci17Ci0gICB0eXBlZGVmIFQmIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUJiBwYXJhbV90eXBlOyAgLy8gaGggcmVtb3ZlZCBjb25zdAotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmdm9sYXRpbGU+Ci17Ci0gICB0eXBlZGVmIFQmIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUJiBwYXJhbV90eXBlOyAgLy8gaGggcmVtb3ZlZCBjb25zdAotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzPFQmY29uc3Qgdm9sYXRpbGU+Ci17Ci0gICB0eXBlZGVmIFQmIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUJiBwYXJhbV90eXBlOyAgLy8gaGggcmVtb3ZlZCBjb25zdAotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8IFQgKiA+Ci17Ci0gICB0eXBlZGVmIFQgKiB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUICogJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQgKiBjb25zdCAmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgVCAqIGNvbnN0IHBhcmFtX3R5cGU7ICAvLyBoaCByZW1vdmVkIGNvbnN0Ci19OwotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBjYWxsX3RyYWl0czxUIFtOXT4KLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIFQgYXJyYXlfdHlwZVtOXTsKLXB1YmxpYzoKLSAgIC8vIGRlZ3JhZGVzIGFycmF5IHRvIHBvaW50ZXI6Ci0gICB0eXBlZGVmIGNvbnN0IFQqIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGFycmF5X3R5cGUmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgYXJyYXlfdHlwZSYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUKiBjb25zdCBwYXJhbV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgY2FsbF90cmFpdHM8Y29uc3QgVCBbTl0+Ci17Ci1wcml2YXRlOgotICAgdHlwZWRlZiBjb25zdCBUIGFycmF5X3R5cGVbTl07Ci1wdWJsaWM6Ci0gICAvLyBkZWdyYWRlcyBhcnJheSB0byBwb2ludGVyOgotICAgdHlwZWRlZiBjb25zdCBUKiB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBhcnJheV90eXBlJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IGFycmF5X3R5cGUmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCogY29uc3QgcGFyYW1fdHlwZTsKLX07Ci0jZW5kaWYKLQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfREVUQUlMX0NBTExfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvY29udGFpbmVyX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9jb250YWluZXJfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA4MWYwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9jb250YWluZXJfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMTEgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIE5vdGU6IGlmIHlvdSBjaGFuZ2UgdGhpcyBpbmNsdWRlIGd1YXJkLCB5b3UgYWxzbyBuZWVkIHRvIGNoYW5nZQotLy8gY29udGFpbmVyX2Z3ZF9jb21waWxlX2ZhaWwuY3BwCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX0NPTlRBSU5FUl9GV0RfSFBQKQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVEFJTkVSX0ZXRF9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKSAmJiBcCi0gICAgIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX1RFU1RfQ09ORklHX09OTFkpCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vIERlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRCBpZiB5b3UgZG9uJ3Qgd2FudCB0aGlzIGhlYWRlciB0byAgICAgIC8vCi0vLyBmb3J3YXJkIGRlY2xhcmUgc3RhbmRhcmQgY29udGFpbmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vIE5ETkJPT1NUX0RFVEFJTF9DT05UQUlORVJfRldEIHRvIG1ha2UgaXQgZm93YXJkIGRlY2xhcmUgY29udGFpbmVycyBldmVuIGlmIGl0IC8vCi0vLyBub3JtYWxseSBkb2Vzbid0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldEIG92ZXJyaWRlcyBORE5CT09TVF9ERVRBSUxfQ09OVEFJTkVSX0ZXRC4gICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldEKQotIyAgaWYgZGVmaW5lZChORE5CT09TVF9ERVRBSUxfQ09OVEFJTkVSX0ZXRCkKLSAgICAgLy8gRm9yY2UgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCi0jICBlbGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSAgICAgLy8gU1RMcG9ydAotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgZGVmaW5lZChfX0xJQkNPTU9fXykKLSAgICAgLy8gQ29tZWF1IFNUTDoKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldECi0jICBlbGlmIGRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pIHx8IGRlZmluZWQoX1JXU1REX1ZFUikKLSAgICAgLy8gUm9ndWUgV2F2ZSBsaWJyYXJ5OgotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCi0gICAgIC8vIGxpYmMrKwotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLSAgICAgLy8gR05VIGxpYnN0ZGMrKyAzCi0gICAgIC8vCi0gICAgIC8vIERpc2FibGUgZm9yd2FyZGluZyBmb3IgYWxsIHJlY2VudCB2ZXJzaW9ucywgYXMgdGhlIGxpYnJhcnkgaGFzIGEKLSAgICAgLy8gdmVyc2lvbmVkIG5hbWVzcGFjZSBtb2RlLCBhbmQgSSBkb24ndCBrbm93IGhvdyB0byBkZXRlY3QgaXQuCi0jICAgIGlmIF9fR0xJQkNYWF9fID49IDIwMDcwNTEzIFwKLSAgICAgICAgfHwgZGVmaW5lZChfR0xJQkNYWF9ERUJVRykgXAotICAgICAgICB8fCBkZWZpbmVkKF9HTElCQ1hYX1BBUkFMTEVMKSBcCi0gICAgICAgIHx8IGRlZmluZWQoX0dMSUJDWFhfUFJPRklMRSkKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgICAgZWxzZQotIyAgICAgIGlmIGRlZmluZWQoX19HTElCQ1hYX18pICYmIF9fR0xJQkNYWF9fID49IDIwMDQwNTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfQ09OVEFJTkVSX0ZXRF9DT01QTEVYX1NUUlVDVAotIyAgICAgIGVuZGlmCi0jICAgIGVuZGlmCi0jICBlbGlmIGRlZmluZWQoX19TVExfQ09ORklHX0gpCi0gICAgIC8vIGdlbmVyaWMgU0dJIFNUTAotICAgICAvLwotICAgICAvLyBGb3J3YXJkIGRlY2xhcmF0aW9uIHNlZW1zIHRvIGJlIG9rYXksIGJ1dCBpdCBoYXMgYSBjb3VwbGUgb2Ygb2RkCi0gICAgIC8vIGltcGxlbWVudGF0aW9ucy4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0NPTlRBSU5FUl9GV0RfQkFEX0JJVFNFVAotIyAgICBpZiAhZGVmaW5lZChfX1NUTF9OT05fVFlQRV9UTVBMX1BBUkFNX0JVRykKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfQ09OVEFJTkVSX0ZXRF9CQURfREVRVUUKLSMgICAgIGVuZGlmCi0jICBlbGlmIGRlZmluZWQoX19NU0xfQ1BQX18pCi0gICAgIC8vIE1TTCBzdGFuZGFyZCBsaWI6Ci0jICAgIGRlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fQ09OVEFJTkVSX0ZXRAotIyAgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pCi0gICAgIC8vIFRoZSBkZWZhdWx0IFZBQ1BQIHN0ZCBsaWIsIGZvcndhcmQgZGVjbGFyYXRpb24gc2VlbXMgdG8gYmUgZmluZS4KLSMgIGVsaWYgZGVmaW5lZChNU0lQTF9DT01QSUxFX0gpCi0gICAgIC8vIE1vZGVuYSBDKysgc3RhbmRhcmQgbGlicmFyeQotIyAgICBkZWZpbmUgTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QKLSMgIGVsaWYgKGRlZmluZWQoX1lWQUxTKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSkgfHwgZGVmaW5lZChfQ1BQTElCX1ZFUikKLSAgICAgLy8gRGlua3Vtd2FyZSBMaWJyYXJ5ICh0aGlzIGhhcyB0byBhcHBlYXIgYWZ0ZXIgYW55IHBvc3NpYmxlIHJlcGxhY2VtZW50Ci0gICAgIC8vIGxpYnJhcmllcykKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldECi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ERVRBSUxfVEVTVF9DT05GSUdfT05MWSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfREVUQUlMX05PX0NPTlRBSU5FUl9GV0QpICYmIFwKLSAgICAhZGVmaW5lZChORE5CT09TVF9ERVRBSUxfVEVTVF9GT1JDRV9DT05UQUlORVJfRldEKQotCi0jaW5jbHVkZSA8ZGVxdWU+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxiaXRzZXQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGNvbXBsZXg+Ci0KLSNlbHNlCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9ERVFVRSkKLSNpbmNsdWRlIDxkZXF1ZT4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9CSVRTRVQpCi0jaW5jbHVkZSA8Yml0c2V0PgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQwOTkpIC8vIHN0cnVjdC9jbGFzcyBtaXNtYXRjaCBpbiBmd2QgZGVjbGFyYXRpb25zCi0jZW5kaWYKLQotbmFtZXNwYWNlIHN0ZAotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBhbGxvY2F0b3I7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3MgYmFzaWNfc3RyaW5nOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSAmJiAhZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4gc3RydWN0IHN0cmluZ19jaGFyX3RyYWl0czsKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPiBzdHJ1Y3QgY2hhcl90cmFpdHM7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQ09OVEFJTkVSX0ZXRF9DT01QTEVYX1NUUlVDVCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGNvbXBsZXg7Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBjb21wbGV4OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9ERVFVRSkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBkZXF1ZTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3MgbGlzdDsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyB2ZWN0b3I7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ29tcGFyZSwgY2xhc3MgQWxsb2NhdG9yPiBjbGFzcyBtYXA7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ29tcGFyZSwgY2xhc3MgQWxsb2NhdG9yPgotICAgIGNsYXNzIG11bHRpbWFwOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIENvbXBhcmUsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3Mgc2V0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIENvbXBhcmUsIGNsYXNzIEFsbG9jYXRvcj4gY2xhc3MgbXVsdGlzZXQ7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9DT05UQUlORVJfRldEX0JBRF9CSVRTRVQpCi0gICAgdGVtcGxhdGUgPHNpemVfdCBOPiBjbGFzcyBiaXRzZXQ7Ci0jZW5kaWYKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdHJ1Y3QgcGFpcjsKLX0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0RFVEFJTF9OT19DT05UQUlORVJfRldEICYmCi0gICAgICAgLy8gIWRlZmluZWQoTkROQk9PU1RfREVUQUlMX1RFU1RfRk9SQ0VfQ09OVEFJTkVSX0ZXRCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0RFVEFJTF9URVNUX0NPTkZJR19PTkxZCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvZW5kaWFuLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2VuZGlhbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwN2JkMDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvZW5kaWFuLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSBDYWxlYiBFcHN0ZWluCi0vLyBDb3B5cmlnaHQgMjAwNiBKb2huIE1hZGRvY2sKLS8vIENvcHlyaWdodCAyMDEwIFJlbmUgUml2ZXJhCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55LQotLy8gaW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vKgotICogQ29weXJpZ2h0IChjKSAxOTk3Ci0gKiBTaWxpY29uIEdyYXBoaWNzIENvbXB1dGVyIFN5c3RlbXMsIEluYy4KLSAqCi0gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUKLSAqIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsCi0gKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAotICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIKLSAqIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4gIFNpbGljb24gR3JhcGhpY3MgbWFrZXMgbm8KLSAqIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0gKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KLSAqLwotCi0vKgotICogQ29weXJpZ2h0IG5vdGljZSByZXByb2R1Y2VkIGZyb20gPG5kbmJvb3N0L2RldGFpbC9saW1pdHMuaHBwPiwgZnJvbQotICogd2hpY2ggdGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IHRha2VuLgotICoKLSAqIE1vZGlmaWVkIGJ5IENhbGViIEVwc3RlaW4gdG8gdXNlIDxlbmRpYW4uaD4gd2l0aCBHTlUgbGliYyBhbmQgdG8KLSAqIGRlZmluZWQgdGhlIE5ETkJPT1NUX0VORElBTiBtYWNyby4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9FTkRJQU5fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9FTkRJQU5fSFBQCi0KLS8vCi0vLyBTcGVjaWFsIGNhc2VzIGNvbWUgZmlyc3Q6Ci0vLwotI2lmIGRlZmluZWQgKF9fR0xJQkNfXykKLS8vIEdOVSBsaWJjIG9mZmVycyB0aGUgaGVscGZ1bCBoZWFkZXIgPGVuZGlhbi5oPiB3aGljaCBkZWZpbmVzCi0vLyBfX0JZVEVfT1JERVIKLSMgaW5jbHVkZSA8ZW5kaWFuLmg+Ci0jIGlmIChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQotIyAgZGVmaW5lIE5ETkJPT1NUX0xJVFRMRV9FTkRJQU4KLSMgZWxpZiAoX19CWVRFX09SREVSID09IF9fQklHX0VORElBTikKLSMgIGRlZmluZSBORE5CT09TVF9CSUdfRU5ESUFOCi0jIGVsaWYgKF9fQllURV9PUkRFUiA9PSBfX1BEUF9FTkRJQU4pCi0jICBkZWZpbmUgTkROQk9PU1RfUERQX0VORElBTgotIyBlbHNlCi0jICBlcnJvciBVbmtub3duIG1hY2hpbmUgZW5kaWFubmVzcyBkZXRlY3RlZC4KLSMgZW5kaWYKLSMgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgX19CWVRFX09SREVSCi0KLSNlbGlmIGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgXAotICAgIGRlZmluZWQoX19PcGVuQlNEX18pIHx8IChfX0RyYWdvbkZseV9fKQotLy8KLS8vIEJTRCBoYXMgZW5kaWFuLmgsIHNlZSBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvNjAxMwotIyAgaWYgZGVmaW5lZChfX09wZW5CU0RfXykKLSMgIGluY2x1ZGUgPG1hY2hpbmUvZW5kaWFuLmg+Ci0jICBlbHNlCi0jICBpbmNsdWRlIDxzeXMvZW5kaWFuLmg+Ci0jICBlbmRpZgotIyBpZiAoX0JZVEVfT1JERVIgPT0gX0xJVFRMRV9FTkRJQU4pCi0jICBkZWZpbmUgTkROQk9PU1RfTElUVExFX0VORElBTgotIyBlbGlmIChfQllURV9PUkRFUiA9PSBfQklHX0VORElBTikKLSMgIGRlZmluZSBORE5CT09TVF9CSUdfRU5ESUFOCi0jIGVsaWYgKF9CWVRFX09SREVSID09IF9QRFBfRU5ESUFOKQotIyAgZGVmaW5lIE5ETkJPT1NUX1BEUF9FTkRJQU4KLSMgZWxzZQotIyAgZXJyb3IgVW5rbm93biBtYWNoaW5lIGVuZGlhbm5lc3MgZGV0ZWN0ZWQuCi0jIGVuZGlmCi0jIGRlZmluZSBORE5CT09TVF9CWVRFX09SREVSIF9CWVRFX09SREVSCi0KLSNlbGlmIGRlZmluZWQoIF9fQU5EUk9JRF9fICkKLS8vIEFkcm9pZCBzcGVjaWZpYyBjb2RlLCBzZWU6IGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC83NTI4Ci0vLyBIZXJlIHdlIGNhbiB1c2UgbWFjaGluZS9fdHlwZXMuaCwgc2VlOgotLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MjEyOTUxL2VuZGlhbm5lc3Mtb2YtYW5kcm9pZC1uZGsKLSMgaW5jbHVkZSAibWFjaGluZS9fdHlwZXMuaCIKLSMgaWZkZWYgX19BUk1FQl9fCi0jICBkZWZpbmUgTkROQk9PU1RfQklHX0VORElBTgotIyAgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgNDMyMQotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfTElUVExFX0VORElBTgotIyAgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgMTIzNAotIyBlbmRpZiAvLyBfX0FSTUVCX18KLQotI2VsaWYgZGVmaW5lZCggX1hCT1ggKQotLy8KLS8vIFhCb3ggaXMgYWx3YXlzIGJpZyBlbmRpYW4/PwotLy8KLSMgZGVmaW5lIE5ETkJPT1NUX0JJR19FTkRJQU4KLSMgZGVmaW5lIE5ETkJPT1NUX0JZVEVfT1JERVIgNDMyMQotCi0jZWxpZiBkZWZpbmVkKF9CSUdfRU5ESUFOKSAmJiAhZGVmaW5lZChfTElUVExFX0VORElBTikgfHwgXAotICAgIGRlZmluZWQoX19CSUdfRU5ESUFOX18pICYmICFkZWZpbmVkKF9fTElUVExFX0VORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfX0JJR0VORElBTl9fKSAmJiAhZGVmaW5lZChfX0xJVFRMRUVORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfU1RMUF9CSUdfRU5ESUFOKSAmJiAhZGVmaW5lZChfU1RMUF9MSVRUTEVfRU5ESUFOKQotIyBkZWZpbmUgTkROQk9PU1RfQklHX0VORElBTgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiA0MzIxCi0jZWxpZiBkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKSAmJiAhZGVmaW5lZChfQklHX0VORElBTikgfHwgXAotICAgIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pICYmICFkZWZpbmVkKF9fQklHX0VORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfX0xJVFRMRUVORElBTl9fKSAmJiAhZGVmaW5lZChfX0JJR0VORElBTl9fKSB8fCBcCi0gICAgZGVmaW5lZChfU1RMUF9MSVRUTEVfRU5ESUFOKSAmJiAhZGVmaW5lZChfU1RMUF9CSUdfRU5ESUFOKQotIyBkZWZpbmUgTkROQk9PU1RfTElUVExFX0VORElBTgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiAxMjM0Ci0jZWxpZiBkZWZpbmVkKF9fc3BhcmMpIHx8IGRlZmluZWQoX19zcGFyY19fKSBcCi0gICB8fCBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgXAotICAgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9faHB1eCkgfHwgZGVmaW5lZChfX2hwcGEpIFwKLSAgIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChfUE9XRVIpIFwKLSAgIHx8IGRlZmluZWQoX19zMzkwX18pIHx8IGRlZmluZWQoX19BUk1FQl9fKQotIyBkZWZpbmUgTkROQk9PU1RfQklHX0VORElBTgotIyBkZWZpbmUgTkROQk9PU1RfQllURV9PUkRFUiA0MzIxCi0jZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgXAotICAgfHwgZGVmaW5lZChfX2lhNjQpIHx8IGRlZmluZWQoX19pYTY0X18pIFwKLSAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfTV9JQTY0KSBcCi0gICB8fCBkZWZpbmVkKF9NX0FMUEhBKSB8fCBkZWZpbmVkKF9fYW1kNjQpIFwKLSAgIHx8IGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKF9NX0FNRDY0KSBcCi0gICB8fCBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIFwKLSAgIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9fYmZpbl9fKSBcCi0gICB8fCBkZWZpbmVkKF9fQVJNRUxfXykgXAotICAgfHwgKGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fQVJNX18pICYmIGRlZmluZWQoX01TQ19WRVIpKSAvLyBBUk0gV2luZG93cyBDRSBkb24ndCBkZWZpbmUgYW55dGhpbmcgcmVhc29uYWJseSB1bmlxdWUsIGJ1dCB0aGVyZSBhcmUgbm8gYmlnLWVuZGlhbiBXaW5kb3dzIHZlcnNpb25zIAotCi0jIGRlZmluZSBORE5CT09TVF9MSVRUTEVfRU5ESUFOCi0jIGRlZmluZSBORE5CT09TVF9CWVRFX09SREVSIDEyMzQKLSNlbHNlCi0jIGVycm9yIFRoZSBmaWxlIG5kbmJvb3N0L2RldGFpbC9lbmRpYW4uaHBwIG5lZWRzIHRvIGJlIHNldCB1cCBmb3IgeW91ciBDUFUgdHlwZS4KLSNlbmRpZgotCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9mZW52LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2ZlbnYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGVkY2IwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2ZlbnYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIENvcHlyaWdodCAoYykgMjAxMCAgICAgIEJyeWNlIExlbGJhY2gKLQotICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLSAgICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0ZFTlZfSCkKLSAgI2Vycm9yIFRoaXMgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSBhIGZsb2F0aW5nIHBvaW50IGVudmlyb25tZW50Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0RFVEFJTF9GRU5WX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0ZFTlZfSFBQCi0KLS8qIElmIHdlJ3JlIHVzaW5nIGNsYW5nICsgZ2xpYmMsIHdlIGhhdmUgdG8gZ2V0IGhhY2t5LiAKLSAqIFNlZSBodHRwOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NjkwNyAqLwotI2lmIGRlZmluZWQoX19jbGFuZ19fKSAgICAgICAmJiAgKF9fY2xhbmdfbWFqb3JfXyA8IDMpICYmICAgIFwKLSAgICBkZWZpbmVkKF9fR05VX0xJQlJBUllfXykgJiYgLyogdXAgdG8gdmVyc2lvbiA1ICovIFwKLSAgICBkZWZpbmVkKF9fR0xJQkNfXykgJiYgICAgICAgICAvKiB2ZXJzaW9uIDYgKyAqLyBcCi0gICAgIWRlZmluZWQoX0ZFTlZfSCkKLSAgI2RlZmluZSBfRkVOVl9ICi0KLSAgI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gICNpbmNsdWRlIDxiaXRzL2ZlbnYuaD4KLQotICBleHRlcm4gIkMiIHsKLSAgICBleHRlcm4gaW50IGZlZ2V0ZXhjZXB0ZmxhZyAoZmV4Y2VwdF90KiwgaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVzZXRleGNlcHRmbGFnIChfX2NvbnN0IGZleGNlcHRfdCosIGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlY2xlYXJleGNlcHQgKGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlcmFpc2VleGNlcHQgKGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZldGVzdGV4Y2VwdCAoaW50KSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVnZXRyb3VuZCAodm9pZCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlc2V0cm91bmQgKGludCkgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZlZ2V0ZW52IChmZW52X3QqKSBfX1RIUk9XOwotICAgIGV4dGVybiBpbnQgZmVzZXRlbnYgKF9fY29uc3QgZmVudl90KikgX19USFJPVzsKLSAgICBleHRlcm4gaW50IGZldXBkYXRlZW52IChfX2NvbnN0IGZlbnZfdCopIF9fVEhST1c7Ci0gICAgZXh0ZXJuIGludCBmZWhvbGRleGNlcHQgKGZlbnZfdCopIF9fVEhST1c7Ci0KLSAgICAjaWZkZWYgX19VU0VfR05VCi0gICAgICBleHRlcm4gaW50IGZlZW5hYmxlZXhjZXB0IChpbnQpIF9fVEhST1c7Ci0gICAgICBleHRlcm4gaW50IGZlZGlzYWJsZWV4Y2VwdCAoaW50KSBfX1RIUk9XOwotICAgICAgZXh0ZXJuIGludCBmZWdldGV4Y2VwdCAodm9pZCkgX19USFJPVzsKLSAgICAjZW5kaWYKLSAgfQotCi0gIG5hbWVzcGFjZSBzdGQgeyBuYW1lc3BhY2UgdHIxIHsKLSAgICB1c2luZyA6OmZlbnZfdDsKLSAgICB1c2luZyA6OmZleGNlcHRfdDsKLSAgICB1c2luZyA6OmZlZ2V0ZXhjZXB0ZmxhZzsKLSAgICB1c2luZyA6OmZlc2V0ZXhjZXB0ZmxhZzsKLSAgICB1c2luZyA6OmZlY2xlYXJleGNlcHQ7Ci0gICAgdXNpbmcgOjpmZXJhaXNlZXhjZXB0OwotICAgIHVzaW5nIDo6ZmV0ZXN0ZXhjZXB0OwotICAgIHVzaW5nIDo6ZmVnZXRyb3VuZDsKLSAgICB1c2luZyA6OmZlc2V0cm91bmQ7Ci0gICAgdXNpbmcgOjpmZWdldGVudjsKLSAgICB1c2luZyA6OmZlc2V0ZW52OwotICAgIHVzaW5nIDo6ZmV1cGRhdGVlbnY7Ci0gICAgdXNpbmcgOjpmZWhvbGRleGNlcHQ7Ci0gIH0gfQotCi0jZWxzZSAvKiBpZiB3ZSdyZSBub3QgdXNpbmcgR05VJ3MgQyBzdGRsaWIsIGZlbnYuaCBzaG91bGQgd29yayB3aXRoIGNsYW5nICovCi0gICNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKSAvKiBsb2wgc3VuY2MgKi8KLSAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2VuZGlmCi0gIAotICAjaW5jbHVkZSA8ZmVudi5oPgotCi0jZW5kaWYKLQotI2VuZGlmIC8qIE5ETkJPT1NUX0RFVEFJTF9GRU5WX0hQUCAqLwotIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaW5kaXJlY3RfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2luZGlyZWN0X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZDkxNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaW5kaXJlY3RfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgSU5ESVJFQ1RfVFJBSVRTX05ETkJPT1NUX0RXQTIwMDIxMzFfSFBQCi0jIGRlZmluZSBJTkRJUkVDVF9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMjEzMV9IUFAKLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi0jICBpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2lzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIuaHBwPgotIyAgZW5kaWYgCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1uYW1lc3BhY2UgaW5kaXJlY3RfdHJhaXRzIHsKLQotIyAgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19jb25zdCA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3Q8VCBjb25zdCY+IDogbXBsOjp0cnVlXwotewotfTsKLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgX01TQ19GVUxMX1ZFUiA8PSAxMzEwMjE0MCAvLyB2YzcuMDEgYWxwaGEgd29ya2Fyb3VuZAotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3Q8VCBjb25zdCB2b2xhdGlsZSY+IDogbXBsOjp0cnVlXwotewotfTsKLSMgICBlbmRpZiAKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uIDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbjxUJj4gOiBpc19mdW5jdGlvbjxUPgotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl90b19mdW5jdGlvbiA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi0vLyBUaGVyZSdzIG5vIHN1Y2ggdGhpbmcgYXMgYSBwb2ludGVyLXRvLWN2LWZ1bmN0aW9uLCBzbyB3ZSBkb24ndCBuZWVkCi0vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRob3NlCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX2Z1bmN0aW9uPFQqPiA6IGlzX2Z1bmN0aW9uPFQ+Ci17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbCA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUJj4KLSAgICA6IGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZT4KLXsKLX07Ci0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0gICAgOiBpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsKFQpKQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXJfYXV4Ci0gICAgOiBtcGw6OmFuZF88Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ci0gICAgICAgICwgaXNfcG9pbnRlcl90b19mdW5jdGlvbjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZQotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPgotewotICAgIC8vIFRoZXJlJ3Mgbm8gc3VjaCB0aGluZyBhcyBhIHBvaW50ZXItdG8tY3YtZnVuY3Rpb24sIHNvIHdlIGRvbid0IG5lZWQgc3BlY2lhbGl6YXRpb25zIGZvciB0aG9zZQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXIKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbjxUPgotICAgICAgICAsIG1wbDo6ZmFsc2VfCi0gICAgICAgICwgaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXJfYXV4PFQ+Ci0gICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19ub25fY29uc3QKLSAgICA6IG1wbDo6YW5kXzwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD4KLSAgICAgICAgLCBtcGw6Om5vdF88Ci0gICAgICAgICAgICAgaXNfcmVmZXJlbmNlX3RvX2NvbnN0PFQ+Ci0gICAgICAgICAgPgotICAgICAgPgotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3ZvbGF0aWxlIDogbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b192b2xhdGlsZTxUIHZvbGF0aWxlJj4gOiBtcGw6OnRydWVfCi17Ci19OwotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiBfTVNDX0ZVTExfVkVSIDw9IDEzMTAyMTQwIC8vIHZjNy4wMSBhbHBoYSB3b3JrYXJvdW5kCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGU8VCBjb25zdCB2b2xhdGlsZSY+IDogbXBsOjp0cnVlXwotewotfTsKLSMgICBlbmRpZiAKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlciA6IG1wbDo6ZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlcjxUKiY+IDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3BvaW50ZXI8VCogY29uc3QmPiA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19wb2ludGVyPFQqIHZvbGF0aWxlJj4gOiBtcGw6OnRydWVfCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlcjxUKiBjb25zdCB2b2xhdGlsZSY+IDogbXBsOjp0cnVlXwotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2NsYXNzCi0gICAgOiBtcGw6OmFuZF88Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ci0gICAgICAgICwgaXNfY2xhc3M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcmVmZXJlbmNlX3RvX2NsYXNzLChUKSkKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvaW50ZXJfdG9fY2xhc3MKLSAgICA6IG1wbDo6YW5kXzwKLSAgICAgICAgICBpc19wb2ludGVyPFQ+Ci0gICAgICAgICwgaXNfY2xhc3M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3BvaW50ZXJfdG9fY2xhc3MsKFQpKQotfTsKLQotIyAgZWxzZQotCi11c2luZyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmRldGFpbDo6aXNfZnVuY3Rpb25fcmVmX3Rlc3Rlcl87Ci0KLXR5cGVkZWYgY2hhciAoJmlubmVyX3llc190eXBlKVszXTsKLXR5cGVkZWYgY2hhciAoJmlubmVyX25vX3R5cGUpWzJdOwotdHlwZWRlZiBjaGFyICgmb3V0ZXJfbm9fdHlwZSlbMV07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotc3RydWN0IGlzX2NvbnN0X2hlbHAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgIGlzX2NvbnN0PFY+Ci0gICAgICAgICwgaW5uZXJfeWVzX3R5cGUKLSAgICAgICAgLCBpbm5lcl9ub190eXBlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotc3RydWN0IGlzX3ZvbGF0aWxlX2hlbHAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgIGlzX3ZvbGF0aWxlPFY+Ci0gICAgICAgICwgaW5uZXJfeWVzX3R5cGUKLSAgICAgICAgLCBpbm5lcl9ub190eXBlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotc3RydWN0IGlzX3BvaW50ZXJfaGVscAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgaXNfcG9pbnRlcjxWPgotICAgICAgICAsIGlubmVyX3llc190eXBlCi0gICAgICAgICwgaW5uZXJfbm9fdHlwZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVj4KLXN0cnVjdCBpc19jbGFzc19oZWxwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jbGFzczxWPgotICAgICAgICAsIGlubmVyX3llc190eXBlCi0gICAgICAgICwgaW5uZXJfbm9fdHlwZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fYXV4Ci17Ci0gICAgc3RhdGljIFQgdDsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKGRldGFpbDo6aXNfZnVuY3Rpb25fcmVmX3Rlc3Rlcih0LDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotIH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19mdW5jdGlvbgotICAgIDogbXBsOjppZl88aXNfcmVmZXJlbmNlPFQ+LCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fYXV4PFQ+LCBtcGw6OmJvb2xfPGZhbHNlPiA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX2Z1bmN0aW9uX2F1eAotewotICAgIHN0YXRpYyBUIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICA9IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfZnVuY3Rpb25fcHRyX3Rlc3Rlcih0KSkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvaW50ZXJfdG9fZnVuY3Rpb24KLSAgICA6IG1wbDo6aWZfPGlzX3BvaW50ZXI8VD4sIGlzX3BvaW50ZXJfdG9fZnVuY3Rpb25fYXV4PFQ+LCBtcGw6OmJvb2xfPGZhbHNlPiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3BvaW50ZXJfdG9fZnVuY3Rpb24sKFQpKQotfTsKLQotc3RydWN0IGZhbHNlX2hlbHBlcjEKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgYXBwbHkgOiBtcGw6OmZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19jb25zdF9oZWxwPFY+Ojp0eXBlIHJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIoViYpOyAgICAKLW91dGVyX25vX3R5cGUKLXJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIoLi4uKTsKLQotc3RydWN0IHRydWVfaGVscGVyMQotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgICAgID0gc2l6ZW9mKHJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpOwotICAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIHJlZiA9IHRydWU+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcjEgOiB0cnVlX2hlbHBlcjEKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX2NvbnN0X2hlbHBlcjE8ZmFsc2U+IDogZmFsc2VfaGVscGVyMQotewotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY29uc3QKLSAgICA6IGlzX3JlZmVyZW5jZV90b19jb25zdF9oZWxwZXIxPGlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp0ZW1wbGF0ZSBhcHBseTxUPgotewotfTsKLQotCi10ZW1wbGF0ZSA8Ym9vbCByZWYgPSB0cnVlPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19ub25fY29uc3RfaGVscGVyMQotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgICAgID0gc2l6ZW9mKHJlZmVyZW5jZV90b19jb25zdF9oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl9ub190eXBlKSk7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdF9oZWxwZXIxPGZhbHNlPiA6IGZhbHNlX2hlbHBlcjEKLXsKLX07Ci0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdAotICAgIDogaXNfcmVmZXJlbmNlX3RvX25vbl9jb25zdF9oZWxwZXIxPGlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp0ZW1wbGF0ZSBhcHBseTxUPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fbm9uX2NvbnN0LChUKSkKLX07Ci0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc192b2xhdGlsZV9oZWxwPFY+Ojp0eXBlIHJlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIoViYpOyAgICAKLW91dGVyX25vX3R5cGUKLXJlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGUgPGJvb2wgcmVmID0gdHJ1ZT4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGVfaGVscGVyMQotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgc3RhdGljIFQgdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgICAgID0gc2l6ZW9mKHJlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpOwotICAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX3RvX3ZvbGF0aWxlX2hlbHBlcjE8ZmFsc2U+IDogZmFsc2VfaGVscGVyMQotewotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fdm9sYXRpbGUKLSAgICA6IGlzX3JlZmVyZW5jZV90b192b2xhdGlsZV9oZWxwZXIxPGlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp0ZW1wbGF0ZSBhcHBseTxUPgotewotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19wb2ludGVyX2hlbHA8Vj46OnR5cGUgcmVmZXJlbmNlX3RvX3BvaW50ZXJfaGVscGVyKFYmKTsKLW91dGVyX25vX3R5cGUgcmVmZXJlbmNlX3RvX3BvaW50ZXJfaGVscGVyKC4uLik7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlZmVyZW5jZV90b19wb2ludGVyX2ltcGwKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgPSAoc2l6ZW9mKChyZWZlcmVuY2VfdG9fcG9pbnRlcl9oZWxwZXIpKHQpKSA9PSBzaXplb2YoaW5uZXJfeWVzX3R5cGUpKQotICAgICAgICApOwotICAgIAotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0gICAgCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fcG9pbnRlcgotICA6IG1wbDo6ZXZhbF9pZjxpc19yZWZlcmVuY2U8VD4sIHJlZmVyZW5jZV90b19wb2ludGVyX2ltcGw8VD4sIG1wbDo6ZmFsc2VfPjo6dHlwZQoteyAgIAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fcG9pbnRlciwoVCkpCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fZnVuY3Rpb25fcG9pbnRlcgotICA6IG1wbDo6ZXZhbF9pZjxpc19yZWZlcmVuY2U8VD4sIGlzX3BvaW50ZXJfdG9fZnVuY3Rpb25fYXV4PFQ+LCBtcGw6OmZhbHNlXz46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcmVmZXJlbmNlX3RvX2Z1bmN0aW9uX3BvaW50ZXIsKFQpKQotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9oZWxwCi0gICAgOiBtcGw6OmlmXzxpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcjxUPiwgaW5uZXJfeWVzX3R5cGUsIGlubmVyX25vX3R5cGU+Ci17fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9oZWxwPFY+Ojp0eXBlIG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHBlcihWJik7Ci1vdXRlcl9ub190eXBlIG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2ludGVyX3RvX21lbWJlcl9mdW5jdGlvbl9hdXgKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgPSBzaXplb2YoKG1lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2hlbHBlcikodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3JlZmVyZW5jZV90b19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotICAgIDogbXBsOjppZl88Ci0gICAgICAgIGlzX3JlZmVyZW5jZTxUPgotICAgICAgICAsIGlzX3BvaW50ZXJfdG9fbWVtYmVyX2Z1bmN0aW9uX2F1eDxUPgotICAgICAgICAsIG1wbDo6Ym9vbF88ZmFsc2U+Ci0gICAgID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsaXNfcmVmZXJlbmNlX3RvX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLChUKSkKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBWPgotdHlwZW5hbWUgaXNfY2xhc3NfaGVscDxWPjo6dHlwZSByZWZlcmVuY2VfdG9fY2xhc3NfaGVscGVyKFYgY29uc3Qgdm9sYXRpbGUmKTsKLW91dGVyX25vX3R5cGUgcmVmZXJlbmNlX3RvX2NsYXNzX2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19yZWZlcmVuY2VfdG9fY2xhc3MKLXsKLSAgICBzdGF0aWMgVCB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUKLSAgICAgICAgPSAoaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAmIChzaXplb2YocmVmZXJlbmNlX3RvX2NsYXNzX2hlbHBlcih0KSkgPT0gc2l6ZW9mKGlubmVyX3llc190eXBlKSkpCi0gICAgICAgICk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxpc19yZWZlcmVuY2VfdG9fY2xhc3MsKFQpKQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBpc19jbGFzc19oZWxwPFY+Ojp0eXBlIHBvaW50ZXJfdG9fY2xhc3NfaGVscGVyKFYgY29uc3Qgdm9sYXRpbGUqKTsKLW91dGVyX25vX3R5cGUgcG9pbnRlcl90b19jbGFzc19oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl90b19jbGFzcwotewotICAgIHN0YXRpYyBUIHQ7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZQotICAgICAgICA9IChpc19wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgICAmJiBzaXplb2YocG9pbnRlcl90b19jbGFzc19oZWxwZXIodCkpID09IHNpemVvZihpbm5lcl95ZXNfdHlwZSkpCi0gICAgICAgICk7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLSMgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gCi0KLX0KLQotdXNpbmcgbmFtZXNwYWNlIGluZGlyZWN0X3RyYWl0czsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpweXRob246OmRldGFpbAotCi0jZW5kaWYgLy8gSU5ESVJFQ1RfVFJBSVRTX05ETkJPT1NUX0RXQTIwMDIxMzFfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjNDgwZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaW50ZXJsb2NrZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0lOVEVSTE9DS0VEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSU5URVJMT0NLRURfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0ggKQotCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UIEludGVybG9ja2VkSW5jcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQgSW50ZXJsb2NrZWREZWNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFIEludGVybG9ja2VkRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX0FERCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9QT0lOVEVSIEludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyCi0KLSNlbGlmIGRlZmluZWQoX1dJTjMyX1dDRSkKLQotI2lmIF9XSU4zMl9XQ0UgPj0gMHg2MDAKLQotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkSW5jcmVtZW50KCBsb25nIHZvbGF0aWxlICogKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZERlY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZyApOwotCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQgX0ludGVybG9ja2VkSW5jcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQgX0ludGVybG9ja2VkRGVjcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFIF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UgX0ludGVybG9ja2VkRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX0FERCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZAotCi0jZWxzZQotLy8gdW5kZXIgV2luZG93cyBDRSB3ZSBzdGlsbCBoYXZlIG9sZC1zdHlsZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zCi0KLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIEludGVybG9ja2VkSW5jcmVtZW50KCBsb25nKiApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgSW50ZXJsb2NrZWREZWNyZW1lbnQoIGxvbmcqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSggbG9uZyosIGxvbmcsIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIEludGVybG9ja2VkRXhjaGFuZ2UoIGxvbmcqLCBsb25nICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCBsb25nKiwgbG9uZyApOwotCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTkNSRU1FTlQgSW50ZXJsb2NrZWRJbmNyZW1lbnQKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCBJbnRlcmxvY2tlZERlY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UgSW50ZXJsb2NrZWRFeGNoYW5nZQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfQUREIEludGVybG9ja2VkRXhjaGFuZ2VBZGQKLQotI2VuZGlmCi0KLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0VfUE9JTlRFUihkZXN0LGV4Y2hhbmdlLGNvbXBhcmUpIFwKLSAgICAoKHZvaWQqKU5ETkJPT1NUX0lOVEVSTE9DS0VEX0NPTVBBUkVfRVhDSEFOR0UoKGxvbmcqKShkZXN0KSwobG9uZykoZXhjaGFuZ2UpLChsb25nKShjb21wYXJlKSkpCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9QT0lOVEVSKGRlc3QsZXhjaGFuZ2UpIFwKLSAgICAoKHZvaWQqKU5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFKChsb25nKikoZGVzdCksKGxvbmcpKGV4Y2hhbmdlKSkpCi0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSB8fCBkZWZpbmVkKCBORE5CT09TVF9JTlRFTF9XSU4gKQotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX01TVkMgPj0gMTYwMAotCi0jaW5jbHVkZSA8aW50cmluLmg+Ci0KLSNlbGlmIGRlZmluZWQoIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMICkKLQotZXh0ZXJuICJDIiBsb25nIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMIF9JbnRlcmxvY2tlZEluY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19DTFJDQUxMX1BVUkVfT1JfQ0RFQ0wgX0ludGVybG9ja2VkRGVjcmVtZW50KCBsb25nIHZvbGF0aWxlICogKTsKLWV4dGVybiAiQyIgbG9uZyBfX0NMUkNBTExfUFVSRV9PUl9DREVDTCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBsb25nIF9fQ0xSQ0FMTF9QVVJFX09SX0NERUNMIF9JbnRlcmxvY2tlZEV4Y2hhbmdlKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX0NMUkNBTExfUFVSRV9PUl9DREVDTCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCggbG9uZyB2b2xhdGlsZSAqLCBsb25nICk7Ci0KLSNlbHNlCi0KLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZEluY3JlbWVudCggbG9uZyB2b2xhdGlsZSAqICk7Ci1leHRlcm4gIkMiIGxvbmcgX19jZGVjbCBfSW50ZXJsb2NrZWREZWNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBsb25nIF9fY2RlY2wgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCBsb25nIHZvbGF0aWxlICosIGxvbmcsIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZEV4Y2hhbmdlKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLWV4dGVybiAiQyIgbG9uZyBfX2NkZWNsIF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLQotI2VuZGlmCi0KLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkSW5jcmVtZW50ICkKLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkRGVjcmVtZW50ICkKLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlICkKLSMgcHJhZ21hIGludHJpbnNpYyggX0ludGVybG9ja2VkRXhjaGFuZ2UgKQotIyBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZCApCi0KLSMgaWYgZGVmaW5lZChfTV9JQTY0KSB8fCBkZWZpbmVkKF9NX0FNRDY0KQotCi1leHRlcm4gIkMiIHZvaWQqIF9fY2RlY2wgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlciggdm9pZCogdm9sYXRpbGUgKiwgdm9pZCosIHZvaWQqICk7Ci1leHRlcm4gIkMiIHZvaWQqIF9fY2RlY2wgX0ludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyKCB2b2lkKiB2b2xhdGlsZSAqLCB2b2lkKiApOwotCi0jICBwcmFnbWEgaW50cmluc2ljKCBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyICkKLSMgIHByYWdtYSBpbnRyaW5zaWMoIF9JbnRlcmxvY2tlZEV4Y2hhbmdlUG9pbnRlciApCi0KLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIgX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlUG9pbnRlcgotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX1BPSU5URVIgX0ludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyCi0KLSMgZWxzZQotCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRV9QT0lOVEVSKGRlc3QsZXhjaGFuZ2UsY29tcGFyZSkgXAotICAgICgodm9pZCopTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSgobG9uZyB2b2xhdGlsZSopKGRlc3QpLChsb25nKShleGNoYW5nZSksKGxvbmcpKGNvbXBhcmUpKSkKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9QT0lOVEVSKGRlc3QsZXhjaGFuZ2UpIFwKLSAgICAoKHZvaWQqKU5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFKChsb25nIHZvbGF0aWxlKikoZGVzdCksKGxvbmcpKGV4Y2hhbmdlKSkpCi0KLSMgZW5kaWYKLQotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU5DUkVNRU5UIF9JbnRlcmxvY2tlZEluY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UIF9JbnRlcmxvY2tlZERlY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSBfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFIF9JbnRlcmxvY2tlZEV4Y2hhbmdlCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRV9BREQgX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQKLQotI2VsaWYgZGVmaW5lZCggV0lOMzIgKSB8fCBkZWZpbmVkKCBfV0lOMzIgKSB8fCBkZWZpbmVkKCBfX1dJTjMyX18gKSB8fCBkZWZpbmVkKCBfX0NZR1dJTl9fICkKLQotI2lmIGRlZmluZWQoX19NSU5HVzY0X18pCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2VuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRJbmNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWREZWNyZW1lbnQoIGxvbmcgdm9sYXRpbGUgKiApOwotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoIGxvbmcgdm9sYXRpbGUgKiwgbG9uZywgbG9uZyApOwotZXh0ZXJuICJDIiBORE5CT09TVF9JTlRFUkxPQ0tFRF9JTVBPUlQgbG9uZyBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRFeGNoYW5nZSggbG9uZyB2b2xhdGlsZSAqLCBsb25nICk7Ci1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCBsb25nIF9fc3RkY2FsbCBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCBsb25nIHZvbGF0aWxlICosIGxvbmcgKTsKLQotIyBpZiBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpCi1leHRlcm4gIkMiIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lNUE9SVCB2b2lkKiBfX3N0ZGNhbGwgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyKCB2b2lkKiB2b2xhdGlsZSAqLCB2b2lkKiwgdm9pZCogKTsKLWV4dGVybiAiQyIgTkROQk9PU1RfSU5URVJMT0NLRURfSU1QT1JUIHZvaWQqIF9fc3RkY2FsbCBJbnRlcmxvY2tlZEV4Y2hhbmdlUG9pbnRlciggdm9pZCogdm9sYXRpbGUgKiwgdm9pZCogKTsKLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkSW5jcmVtZW50Ci0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9ERUNSRU1FTlQgOjpuZG5ib29zdDo6ZGV0YWlsOjpJbnRlcmxvY2tlZERlY3JlbWVudAotIyBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlCi0jIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9FWENIQU5HRSA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkRXhjaGFuZ2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX0FERCA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkRXhjaGFuZ2VBZGQKLQotIyBpZiBkZWZpbmVkKF9NX0lBNjQpIHx8IGRlZmluZWQoX01fQU1ENjQpCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRV9QT0lOVEVSIDo6bmRuYm9vc3Q6OmRldGFpbDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0VfUE9JTlRFUiA6Om5kbmJvb3N0OjpkZXRhaWw6OkludGVybG9ja2VkRXhjaGFuZ2VQb2ludGVyCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFX1BPSU5URVIoZGVzdCxleGNoYW5nZSxjb21wYXJlKSBcCi0gICAgKCh2b2lkKilORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFKChsb25nIHZvbGF0aWxlKikoZGVzdCksKGxvbmcpKGV4Y2hhbmdlKSwobG9uZykoY29tcGFyZSkpKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0VYQ0hBTkdFX1BPSU5URVIoZGVzdCxleGNoYW5nZSkgXAotICAgICgodm9pZCopTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UoKGxvbmcgdm9sYXRpbGUqKShkZXN0KSwobG9uZykoZXhjaGFuZ2UpKSkKLSMgZW5kaWYKLQotI2Vsc2UKLQotIyBlcnJvciAiSW50ZXJsb2NrZWQgaW50cmluc2ljcyBub3QgYXZhaWxhYmxlIgotCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0lOVEVSTE9DS0VEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaXNfZnVuY3Rpb25fcmVmX3Rlc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pc19mdW5jdGlvbl9yZWZfdGVzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAxZmY1Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pc19mdW5jdGlvbl9yZWZfdGVzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyBBbGVrc2V5IEd1cnRvdm95LCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX0lTX0ZVTkNUSU9OX1JFRl9URVNURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9JU19GVU5DVElPTl9SRUZfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwIgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwIgotIyAgIGluY2x1ZGUgIm5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHAiCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci1uYW1lc3BhY2UgaXNfZnVuY3Rpb25fcmVmX3Rlc3Rlcl8gewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoVCYgLi4uKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZXByb2Nlc3Nvci1nZW5lcmF0ZWQgcGFydCwgZG9uJ3QgZWRpdCBieSBoYW5kIQotCi10ZW1wbGF0ZSA8Y2xhc3MgUj4KLW5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfZnVuY3Rpb25fcmVmX3Rlc3RlcihSICgmKSgpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDApLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMiA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTkgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSxjbGFzcyBUMjAgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjApLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTksY2xhc3MgVDIwLGNsYXNzIFQyMSA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTksY2xhc3MgVDIwLGNsYXNzIFQyMSxjbGFzcyBUMjIgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMiksIGludCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLGNsYXNzIFQwLGNsYXNzIFQxLGNsYXNzIFQyLGNsYXNzIFQzLGNsYXNzIFQ0LGNsYXNzIFQ1LGNsYXNzIFQ2LGNsYXNzIFQ3LGNsYXNzIFQ4LGNsYXNzIFQ5LGNsYXNzIFQxMCxjbGFzcyBUMTEsY2xhc3MgVDEyLGNsYXNzIFQxMyxjbGFzcyBUMTQsY2xhc3MgVDE1LGNsYXNzIFQxNixjbGFzcyBUMTcsY2xhc3MgVDE4LGNsYXNzIFQxOSxjbGFzcyBUMjAsY2xhc3MgVDIxLGNsYXNzIFQyMixjbGFzcyBUMjMgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMpLCBpbnQpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUixjbGFzcyBUMCxjbGFzcyBUMSxjbGFzcyBUMixjbGFzcyBUMyxjbGFzcyBUNCxjbGFzcyBUNSxjbGFzcyBUNixjbGFzcyBUNyxjbGFzcyBUOCxjbGFzcyBUOSxjbGFzcyBUMTAsY2xhc3MgVDExLGNsYXNzIFQxMixjbGFzcyBUMTMsY2xhc3MgVDE0LGNsYXNzIFQxNSxjbGFzcyBUMTYsY2xhc3MgVDE3LGNsYXNzIFQxOCxjbGFzcyBUMTksY2xhc3MgVDIwLGNsYXNzIFQyMSxjbGFzcyBUMjIsY2xhc3MgVDIzLGNsYXNzIFQyNCA+Ci1uZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2Z1bmN0aW9uX3JlZl90ZXN0ZXIoUiAoJikoVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5LFQyMCxUMjEsVDIyLFQyMyxUMjQpLCBpbnQpOwotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L2RldGFpbC9pc19mdW5jdGlvbl9yZWZfdGVzdGVyLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBweXRob24KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9ERVRBSUxfSVNfRlVOQ1RJT05fUkVGX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIGkgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksY2xhc3MgVCkgPgotbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19mdW5jdGlvbl9yZWZfdGVzdGVyKFIgKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksVCkpLCBpbnQpOwotCi0jdW5kZWYgaQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pc19pbmNyZW1lbnRhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWZmOWNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzCi0vLyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBJU19JTkNSRU1FTlRBQkxFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLSMgZGVmaW5lIElTX0lOQ1JFTUVOVEFCTEVfTkROQk9PU1RfRFdBMjAwNDE1X0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8gTXVzdCBiZSB0aGUgbGFzdCBpbmNsdWRlCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgeyAKLQotLy8gaXNfaW5jcmVtZW50YWJsZTxUPiBtZXRhZnVuY3Rpb24KLS8vCi0vLyBSZXF1aXJlczogR2l2ZW4geCBvZiB0eXBlIFQmLCBpZiB0aGUgZXhwcmVzc2lvbiArK3ggaXMgd2VsbC1mb3JtZWQKLS8vIGl0IG11c3QgaGF2ZSBjb21wbGV0ZSB0eXBlOyBvdGhlcndpc2UsIGl0IG11c3QgbmVpdGhlciBiZSBhbWJpZ3VvdXMKLS8vIG5vciB2aW9sYXRlIGFjY2Vzcy4KLQotLy8gVGhpcyBuYW1lc3BhY2UgZW5zdXJlcyB0aGF0IEFETCBkb2Vzbid0IG1lc3MgdGhpbmdzIHVwLgotbmFtZXNwYWNlIGlzX2luY3JlbWVudGFibGVfCi17Ci0gIC8vIGEgdHlwZSByZXR1cm5lZCBmcm9tIG9wZXJhdG9yKysgd2hlbiBubyBpbmNyZW1lbnQgaXMgZm91bmQgaW4gdGhlCi0gIC8vIHR5cGUncyBvd24gbmFtZXNwYWNlCi0gIHN0cnVjdCB0YWcge307Ci0gIAotICAvLyBhbnkgc29ha3MgdXAgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcKLSAgLy8gb3BlcmF0b3IrKyBsZXNzLXByZWZlcnJlZCB0aGFuIGFueSBvdGhlciBzdWNoIG9wZXJhdG9yIHRoYXQKLSAgLy8gbWlnaHQgYmUgZm91bmQgdmlhIEFETC4KLSAgc3RydWN0IGFueSB7IHRlbXBsYXRlIDxjbGFzcyBUPiBhbnkoVCBjb25zdCYpOyB9OwotCi0gIC8vIFRoaXMgaXMgYSBsYXN0LXJlc29ydCBvcGVyYXRvcisrIGZvciB3aGVuIG5vbmUgb3RoZXIgaXMgZm91bmQKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gNCkgJiYgX19HTlVDX01JTk9SX18gPT0gMCAmJiBfX0dOVUNfUEFUQ0hMRVZFTF9fID09IDIKLSAgCi19Ci0KLW5hbWVzcGFjZSBpc19pbmNyZW1lbnRhYmxlXzIKLXsKLSAgaXNfaW5jcmVtZW50YWJsZV86OnRhZyBvcGVyYXRvcisrKGlzX2luY3JlbWVudGFibGVfOjphbnkgY29uc3QmKTsKLSAgaXNfaW5jcmVtZW50YWJsZV86OnRhZyBvcGVyYXRvcisrKGlzX2luY3JlbWVudGFibGVfOjphbnkgY29uc3QmLGludCk7Ci19Ci11c2luZyBuYW1lc3BhY2UgaXNfaW5jcmVtZW50YWJsZV8yOwotCi1uYW1lc3BhY2UgaXNfaW5jcmVtZW50YWJsZV8KLXsKLSAgCi0jIGVsc2UKLSAgCi0gIHRhZyBvcGVyYXRvcisrKGFueSBjb25zdCYpOwotICB0YWcgb3BlcmF0b3IrKyhhbnkgY29uc3QmLGludCk7Ci0gIAotIyBlbmRpZiAKLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX2NvbW1hKGEsYikgKGEpCi0jIGVsc2UgCi0gIC8vIEluIGNhc2UgYW4gb3BlcmF0b3IrKyBpcyBmb3VuZCB0aGF0IHJldHVybnMgdm9pZCwgd2UnbGwgdXNlICsreCwwCi0gIHRhZyBvcGVyYXRvciwodGFnLGludCk7ICAKLSMgIGRlZmluZSBORE5CT09TVF9jb21tYShhLGIpIChhLGIpCi0jIGVuZGlmIAotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5MTMpIC8vIFdhcm5pbmcgYWJvdXQgb3BlcmF0b3IsCi0jIGVuZGlmIAotCi0gIC8vIHR3byBjaGVjayBvdmVybG9hZHMgaGVscCB1cyBpZGVudGlmeSB3aGljaCBvcGVyYXRvcisrIHdhcyBwaWNrZWQKLSAgY2hhciAoJiBjaGVja18odGFnKSApWzJdOwotICAKLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIGNoYXIgY2hlY2tfKFQgY29uc3QmKTsKLSAgCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBpbXBsCi0gIHsKLSAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlJiB4OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgYm9vbAotICAgICAgICAsIHZhbHVlID0gc2l6ZW9mKGlzX2luY3JlbWVudGFibGVfOjpjaGVja18oTkROQk9PU1RfY29tbWEoKyt4LDApKSkgPT0gMQotICAgICAgKTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IHBvc3RmaXhfaW1wbAotICB7Ci0gICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSYgeDsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgIGJvb2wKLSAgICAgICAgLCB2YWx1ZSA9IHNpemVvZihpc19pbmNyZW1lbnRhYmxlXzo6Y2hlY2tfKE5ETkJPT1NUX2NvbW1hKHgrKywwKSkpID09IDEKLSAgICAgICk7Ci0gIH07Ci0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotIyBlbmRpZiAKLQotfQotCi0jIHVuZGVmIE5ETkJPT1NUX2NvbW1hCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IGlzX2luY3JlbWVudGFibGUgCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi17IAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX2luY3JlbWVudGFibGUsKFQpKQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgaXNfcG9zdGZpeF9pbmNyZW1lbnRhYmxlIAotTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfaW5jcmVtZW50YWJsZV86OmltcGw8VD46OnZhbHVlKQoteyAKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfaW5jcmVtZW50YWJsZV86OnBvc3RmaXhfaW1wbDxUPjo6dmFsdWUpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX3Bvc3RmaXhfaW5jcmVtZW50YWJsZSwoVCkpCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlKQotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19wb3N0Zml4X2luY3JlbWVudGFibGUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gSVNfSU5DUkVNRU5UQUJMRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4OGE4OWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDk0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gQm9vc3QgdmVyc2lvbnMgb2YKLS8vCi0vLyAgICBzdGQ6Oml0ZXJhdG9yX3RyYWl0czw+OjppdGVyYXRvcl9jYXRlZ29yeQotLy8gICAgc3RkOjppdGVyYXRvcl90cmFpdHM8Pjo6ZGlmZmVyZW5jZV90eXBlCi0vLyAgICBzdGQ6OmRpc3RhbmNlKCkKLS8vCi0vLyAuLi5mb3IgYWxsIGNvbXBpbGVycyBhbmQgaXRlcmF0b3JzCi0vLwotLy8gQWRkaXRpb25hbGx5LCBpZiBYIGlzIGEgcG9pbnRlcgotLy8gICAgc3RkOjppdGVyYXRvcl90cmFpdHM8WD46OnBvaW50ZXIKLQotLy8gT3RoZXJ3aXNlLCBpZiBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGlzIHN1cHBvcnRlZCBvciBYIGlzIG5vdCBhIHBvaW50ZXIKLS8vICAgIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPFg+Ojp2YWx1ZV90eXBlCi0vLyAgICBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxYPjo6cG9pbnRlcgotLy8gICAgc3RkOjppdGVyYXRvcl90cmFpdHM8WD46OnJlZmVyZW5jZQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gUmV2aXNpb24gSGlzdG9yeQotLy8gMDQgTWFyIDIwMDEgLSBNb3JlIGF0dGVtcHRlZCBmaXhlcyBmb3IgSW50ZWwgQysrIChEYXZpZCBBYnJhaGFtcykKLS8vIDAzIE1hciAyMDAxIC0gUHV0IGFsbCBpbXBsZW1lbnRhdGlvbiBpbnRvIG5hbWVzcGFjZQotLy8gICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHNfLiBTb21lIHByb2dyZXNzIG1hZGUgb24gZml4ZXMKLS8vICAgICAgICAgICAgICAgZm9yIEludGVsIGNvbXBpbGVyLiAoRGF2aWQgQWJyYWhhbXMpCi0vLyAwMiBNYXIgMjAwMSAtIENoYW5nZWQgTkROQk9PU1RfTVNWQyB0byBORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUiBpbiBhIGZldwotLy8gICAgICAgICAgICAgICBwbGFjZXMuIChKZXJlbXkgU2llaykKLS8vIDE5IEZlYiAyMDAxIC0gSW1wcm92ZWQgd29ya2Fyb3VuZHMgZm9yIHN0b2NrIE1TVkM2OyB1c2UgeWVzX3R5cGUgYW5kCi0vLyAgICAgICAgICAgICAgIG5vX3R5cGUgZnJvbSB0eXBlX3RyYWl0cy5ocHA7IHN0b3BwZWQgdHJ5aW5nIHRvIHJlbW92ZV9jdgotLy8gICAgICAgICAgICAgICBiZWZvcmUgZGV0ZWN0aW5nIGlzX3BvaW50ZXIsIGluIGhvbm9yIG9mIHRoZSBuZXcgdHlwZV90cmFpdHMKLS8vICAgICAgICAgICAgICAgc2VtYW50aWNzLiAoRGF2aWQgQWJyYWhhbXMpCi0vLyAxMyBGZWIgMjAwMSAtIE1ha2UgaXQgd29yayB3aXRoIG5lYXJseSBhbGwgc3RhbmRhcmQtY29uZm9ybWluZyBpdGVyYXRvcnMKLS8vICAgICAgICAgICAgICAgdW5kZXIgcmF3IFZDNi4gVGhlIG9uZSBjYXRlZ29yeSByZW1haW5pbmcgd2hpY2ggd2lsbCBmYWlsIGlzCi0vLyAgICAgICAgICAgICAgIHRoYXQgb2YgaXRlcmF0b3JzIGRlcml2ZWQgZnJvbSBzdGQ6Oml0ZXJhdG9yIGJ1dCBub3QKLS8vICAgICAgICAgICAgICAgbmRuYm9vc3Q6Oml0ZXJhdG9yIGFuZCB3aGljaCByZWRlZmluZSBkaWZmZXJlbmNlX3R5cGUuCi0vLyAxMSBGZWIgMjAwMSAtIENsZWFuIGF3YXkgY29kZSB3aGljaCBjYW4gbmV2ZXIgYmUgdXNlZCAoRGF2aWQgQWJyYWhhbXMpCi0vLyAwOSBGZWIgMjAwMSAtIEFsd2F5cyBoYXZlIGEgZGVmaW5pdGlvbiBmb3IgZWFjaCB0cmFpdHMgbWVtYmVyLCBldmVuIGlmIGl0Ci0vLyAgICAgICAgICAgICAgIGNhbid0IGJlIHByb3Blcmx5IGRlZHVjZWQuIFRoZXNlIHdpbGwgYmUgaW5jb21wbGV0ZSB0eXBlcyBpbgotLy8gICAgICAgICAgICAgICBzb21lIGNhc2VzICh1bmRlZmluZWQ8dm9pZD4pLCBidXQgaXQgaGVscHMgc3VwcHJlc3MgTVNWQyBlcnJvcnMKLS8vICAgICAgICAgICAgICAgZWxzZXdoZXJlIChEYXZpZCBBYnJhaGFtcykKLS8vIDA3IEZlYiAyMDAxIC0gU3VwcG9ydCBmb3IgbW9yZSBvZiB0aGUgdHJhaXRzIG1lbWJlcnMgd2hlcmUgcG9zc2libGUsIG1ha2luZwotLy8gICAgICAgICAgICAgICB0aGlzIHVzZWZ1bCBhcyBhIHJlcGxhY2VtZW50IGZvciBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxUPiB3aGVuCi0vLyAgICAgICAgICAgICAgIHVzZWQgYXMgYSBkZWZhdWx0IHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vIDA2IEZlYiAyMDAxIC0gUmVtb3ZlZCB1c2VsZXNzICNpbmNsdWRlcyBvZiBzdGFuZGFyZCBsaWJyYXJ5IGhlYWRlcnMKLS8vICAgICAgICAgICAgICAgKERhdmlkIEFicmFoYW1zKQotCi0jaWZuZGVmIElURVJBVE9SX05ETkJPT1NUX0RXQTEyMjYwMF9IUFBfCi0jIGRlZmluZSBJVEVSQVRPUl9ORE5CT09TVF9EV0ExMjI2MDBfSFBQXwotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPGl0ZXJhdG9yPgotCi0vLyBTVExQb3J0IDQuMCBhbmQgYmV0YXMgaGF2ZSBhIGJ1ZyB3aGVuIGRlYnVnZ2luZyBpcyBlbmFibGVkIGFuZCB0aGVyZSBpcyBubwotLy8gcGFydGlhbCBzcGVjaWFsaXphdGlvbjogaW5zdGVhZCBvZiBhbiBpdGVyYXRvcl9jYXRlZ29yeSB0eXBlZGVmLCB0aGUgc3RhbmRhcmQKLS8vIGNvbnRhaW5lciBpdGVyYXRvcnMgaGF2ZSBfSXRlcmF0b3JfY2F0ZWdvcnkuCi0vLwotLy8gQWxzbywgd2hldGhlciBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCBvciBub3QsIHRoZXJlIGlzIGEgYnJva2VuIHNwZWNpYWxpemF0aW9uCi0vLyBvZiBzdGQ6Oml0ZXJhdG9yPG91dHB1dF9pdGVyYXRvcl90YWcsdm9pZCx2b2lkLHZvaWQsdm9pZD4gd2hpY2ggaGFzIG5vCi0vLyB0eXBlZGVmcyBidXQgaXRlcmF0b3JfY2F0ZWdvcnkuCi0jIGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpCi0KLSMgIGlmIChfX1NHSV9TVExfUE9SVCA8PSAweDQxMCkgJiYgIWRlZmluZWQoX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgZGVmaW5lZChfX1NUTF9ERUJVRykKLSMgICBkZWZpbmUgTkROQk9PU1RfQkFEX0NPTlRBSU5FUl9JVEVSQVRPUl9DQVRFR09SWV9UWVBFREVGCi0jICBlbmRpZgotCi0jICBkZWZpbmUgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotCi0jIGVuZGlmIC8vIFNUTFBvcnQgPD0gNC4xYjQgJiYgbm8gcGFydGlhbCBzcGVjaWFsaXphdGlvbgotCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpICAgICAgICAgICAgIFwKLSAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUikKLSAgICAKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBEZWZpbmUgYSBuZXcgdGVtcGxhdGUgc28gaXQgY2FuIGJlIHNwZWNpYWxpemVkCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzCi0gICAgOiBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLXt9OwotdXNpbmcgc3RkOjpkaXN0YW5jZTsKLQotfX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpkZXRhaWwKLQotIyBlbHNlCi0KLSMgIGlmICAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotCi0vLyBUaGlzIGlzIHRoZSBjYXNlIHdoZXJlIGV2ZXJ5dGhpbmcgY29uZm9ybXMgZXhjZXB0IE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFJvZ3VlIFdhdmUgU3RhbmRhcmQgTGlicmFyeSBmb29scyBpdHNlbGYgaW50byB0aGlua2luZyBwYXJ0aWFsCi0vLyBzcGVjaWFsaXphdGlvbiBpcyBtaXNzaW5nIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIFN1biksIHNvIGZhaWxzIHRvCi0vLyBzdXBwbHkgaXRlcmF0b3JfdHJhaXRzIQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0cwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPFQqPgotewotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgVCYgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKLSAgICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHM8VCBjb25zdCo+Ci17Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBUIGNvbnN0JiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBUIGNvbnN0KiBwb2ludGVyOwotICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsCi0KLSMgIGVsc2UKLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLQotIyBpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSMgZW5kaWYKLSMgaWZkZWYgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHA+Ci0jIGVuZGlmCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotIyBpbmNsdWRlIDxjc3RkZGVmPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSMgaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRih2YWx1ZV90eXBlKQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHJlZmVyZW5jZSkKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihwb2ludGVyKQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKGRpZmZlcmVuY2VfdHlwZSkKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihpdGVyYXRvcl9jYXRlZ29yeSkKLQotLy8gaXNfbXV0YWJsZV9pdGVyYXRvciAtLQotLy8KLS8vICAgQSBtZXRhZnVuY3Rpb24gcmV0dXJuaW5nIHRydWUgaWZmIFQgaXMgYSBtdXRhYmxlIGl0ZXJhdG9yIHR5cGUKLS8vICAgd2l0aCBhIG5lc3RlZCB2YWx1ZV90eXBlLiBXaWxsIG9ubHkgd29yayBwb3J0YWJseSB3aXRoIGl0ZXJhdG9ycwotLy8gICB3aG9zZSBvcGVyYXRvciogcmV0dXJucyBhIHJlZmVyZW5jZSwgYnV0IHRoYXQgc2VlbXMgdG8gYmUgT0sgZm9yCi0vLyAgIHRoZSBpdGVyYXRvcnMgc3VwcGxpZWQgYnkgRGlua3Vtd2FyZS4gU29tZSBpbnB1dCBpdGVyYXRvcnMgbWF5Ci0vLyAgIGNvbXBpbGUtdGltZSBpZiB0aGV5IGFycml2ZSBoZXJlLCBhbmQgaWYgdGhlIGNvbXBpbGVyIGlzIHN0cmljdAotLy8gICBhYm91dCBub3QgdGFraW5nIHRoZSBhZGRyZXNzIG9mIGFuIHJ2YWx1ZS4KLQotLy8gVGhpcyBvbmUgZGV0ZWN0cyBvcmRpbmFyeSBtdXRhYmxlIGl0ZXJhdG9ycyAtIHRoZSByZXN1bHQgb2YKLS8vIG9wZXJhdG9yKiBpcyBjb252ZXJ0aWJsZSB0byB0aGUgdmFsdWVfdHlwZS4KLXRlbXBsYXRlIDxjbGFzcyBUPgotdHlwZV90cmFpdHM6Onllc190eXBlIGlzX211dGFibGVfaXRlcmF0b3JfaGVscGVyKFQgY29uc3QqLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFQ6OnZhbHVlX3R5cGUqKTsKLQotLy8gU2luY2UgeW91IGNhbid0IHRha2UgdGhlIGFkZHJlc3Mgb2YgYW4gcnZhbHVlLCB0aGUgZ3V0cyBvZgotLy8gaXNfbXV0YWJsZV9pdGVyYXRvcl9pbXBsIHdpbGwgZmFpbCBpZiB3ZSB1c2UgJip0IGRpcmVjdGx5LiAgVGhpcwotLy8gbWFrZXMgc3VyZSB3ZSBjYW4gc3RpbGwgd29yayB3aXRoIG5vbi1sdmFsdWUgaXRlcmF0b3JzLgotdGVtcGxhdGUgPGNsYXNzIFQ+IFQqIG11dGFibGVfaXRlcmF0b3JfbHZhbHVlX2hlbHBlcihUJiB4KTsKLWludCBtdXRhYmxlX2l0ZXJhdG9yX2x2YWx1ZV9oZWxwZXIoLi4uKTsKLQotCi0vLyBUaGlzIG9uZSBkZXRlY3RzIG91dHB1dCBpdGVyYXRvcnMgc3VjaCBhcyBvc3RyZWFtX2l0ZXJhdG9yIHdoaWNoCi0vLyByZXR1cm4gcmVmZXJlbmNlcyB0byB0aGVtc2VsdmVzLgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci10eXBlX3RyYWl0czo6eWVzX3R5cGUgaXNfbXV0YWJsZV9pdGVyYXRvcl9oZWxwZXIoVCBjb25zdCosIFQgY29uc3QqKTsKLQotdHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfbXV0YWJsZV9pdGVyYXRvcl9oZWxwZXIoLi4uKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbXV0YWJsZV9pdGVyYXRvcl9pbXBsCi17Ci0gICAgc3RhdGljIFQgdDsKLSAgICAKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKAotICAgICAgICAgICAgZGV0YWlsOjppc19tdXRhYmxlX2l0ZXJhdG9yX2hlbHBlcigKLSAgICAgICAgICAgICAgICAoVCopMAotICAgICAgICAgICAgICAsIG11dGFibGVfaXRlcmF0b3JfbHZhbHVlX2hlbHBlcigqdCkgLy8gbGlrZSAmKnQKLSAgICAgICAgICAgICkpCi0gICAgICAgID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgKTsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICAgaXNfbXV0YWJsZV9pdGVyYXRvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfbXV0YWJsZV9pdGVyYXRvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotCi0vLyBpc19mdWxsX2l0ZXJhdG9yX3RyYWl0cyAtLQotLy8KLS8vICAgQSBtZXRhZnVuY3Rpb24gcmV0dXJuaW5nIHRydWUgaWZmIFQgaGFzIGFsbCB0aGUgcmVxdWlzaXRlIG5lc3RlZAotLy8gICB0eXBlcyB0byBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMgZm9yIGEgZnVsbHktY29uZm9ybWluZwotLy8gICBpdGVyYXRvcl90cmFpdHMgaW1wbGVtZW50YXRpb24uCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19mdWxsX2l0ZXJhdG9yX3RyYWl0c19pbXBsCi17Ci0gICAgZW51bSB7IHZhbHVlID0gCi0gICAgICAgICAgIGhhc192YWx1ZV90eXBlPFQ+Ojp2YWx1ZSAKLSAgICAgICAgICAgJiBoYXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAKLSAgICAgICAgICAgJiBoYXNfcG9pbnRlcjxUPjo6dmFsdWUgCi0gICAgICAgICAgICYgaGFzX2RpZmZlcmVuY2VfdHlwZTxUPjo6dmFsdWUKLSAgICAgICAgICAgJiBoYXNfaXRlcmF0b3JfY2F0ZWdvcnk8VD46OnZhbHVlCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICAgaXNfZnVsbF9pdGVyYXRvcl90cmFpdHMsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2Z1bGxfaXRlcmF0b3JfdHJhaXRzX2ltcGw8VD46OnZhbHVlKQotCi0KLSMgICBpZmRlZiBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihfSXRlcmF0b3JfY2F0ZWdvcnkpCi0gICAgCi0vLyBpc19zdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yIC0tCi0vLwotLy8gICBBIG1ldGFmdW5jdGlvbiByZXR1cm5pbmcgdHJ1ZSBpZmYgVCBoYXMgYWxsIHRoZSByZXF1aXNpdGUgbmVzdGVkCi0vLyAgIHR5cGVzIHRvIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBvZiBhbiBTVExQb3J0IDQuMCBkZWJ1ZyBpdGVyYXRvcgotLy8gICBpdGVyYXRvcl90cmFpdHMgaW1wbGVtZW50YXRpb24uCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19zdGxwb3J0XzQwX2RlYnVnX2l0ZXJhdG9yX2ltcGwKLXsKLSAgICBlbnVtIHsgdmFsdWUgPSAKLSAgICAgICAgICAgaGFzX3ZhbHVlX3R5cGU8VD46OnZhbHVlIAotICAgICAgICAgICAmIGhhc19yZWZlcmVuY2U8VD46OnZhbHVlIAotICAgICAgICAgICAmIGhhc19wb2ludGVyPFQ+Ojp2YWx1ZSAKLSAgICAgICAgICAgJiBoYXNfZGlmZmVyZW5jZV90eXBlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAmIGhhc19fSXRlcmF0b3JfY2F0ZWdvcnk8VD46OnZhbHVlCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICAgaXNfc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcl90cmFpdHMKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpwb2ludGVyIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6X0l0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLSMgICBlbmRpZiAvLyBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYgCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM7Ci0KLSMgICBpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8VCo+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY29uc3Q8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIFQqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotfTsKLSMgICBlbHNlCi0KLS8vIEluIGNhc2Ugb2Ygbm8gdGVtcGxhdGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgYW5kIGlmIFQgaXMgYQotLy8gcG9pbnRlciwgaXRlcmF0b3JfdHJhaXRzPFQ+Ojp2YWx1ZV90eXBlIGNhbiBzdGlsbCBiZSBjb21wdXRlZC4gIEZvcgotLy8gc29tZSBiYXNpYyB0eXBlcywgcmVtb3ZlX3BvaW50ZXIgaXMgbWFudWFsbHkgZGVmaW5lZCBpbgotLy8gdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwLiBGb3Igb3RoZXJzLCBkbyBpdCB5b3Vyc2VsZi4KLQotdGVtcGxhdGU8Y2xhc3MgUD4gY2xhc3MgcGxlYXNlX2ludm9rZV9ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19vbl9jdl91bnF1YWxpZmllZF9wb2ludGVlOwotCi10ZW1wbGF0ZTxjbGFzcyBQPgotc3RydWN0IHBvaW50ZXJfdmFsdWVfdHlwZQotICA6IG1wbDo6aWZfPAotICAgICAgICBpc19zYW1lPFAsIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyPFA+Ojp0eXBlPgotICAgICAgLCBwbGVhc2VfaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX29uX2N2X3VucXVhbGlmaWVkX3BvaW50ZWU8UD4KLSAgICAgICwgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0PAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8UD46OnR5cGUKLSAgICAgICAgPjo6dHlwZQotICAgID4KLXsKLX07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgUD4KLXN0cnVjdCBwb2ludGVyX3JlZmVyZW5jZQotICA6IG1wbDo6aWZfPAotICAgICAgICBpc19zYW1lPFAsIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyPFA+Ojp0eXBlPgotICAgICAgLCBwbGVhc2VfaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX29uX2N2X3VucXVhbGlmaWVkX3BvaW50ZWU8UD4KLSAgICAgICwgdHlwZW5hbWUgcmVtb3ZlX3BvaW50ZXI8UD46OnR5cGUmCi0gICAgPgotewotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHMKLXsKLSAgICB0eXBlZGVmIFQgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHBvaW50ZXJfdmFsdWVfdHlwZTxUPjo6dHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcG9pbnRlcl9yZWZlcmVuY2U8VD46OnR5cGUgcmVmZXJlbmNlOwotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gV2UnbGwgc29ydCBpdGVyYXRvciB0eXBlcyBpbnRvIG9uZSBvZiB0aGVzZSBjbGFzc2lmaWNhdGlvbnMsIGZyb20gd2hpY2ggd2UKLS8vIGNhbiBkZXRlcm1pbmUgdGhlIGRpZmZlcmVuY2VfdHlwZSwgcG9pbnRlciwgcmVmZXJlbmNlLCBhbmQgdmFsdWVfdHlwZQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IHN0YW5kYXJkX2l0ZXJhdG9yX3RyYWl0cwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IG1zdmNfc3RkbGliX211dGFibGVfdHJhaXRzCi0gICAgOiBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlzdGFuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUqIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBtc3ZjX3N0ZGxpYl9jb25zdF90cmFpdHMKLSAgICA6IHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaXN0YW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGNvbnN0IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotfTsKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0JBRF9PVVRQVVRfSVRFUkFUT1JfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpc19iYWRfb3V0cHV0X2l0ZXJhdG9yCi0gICAgOiBpc19iYXNlX2FuZF9kZXJpdmVkPAotICAgICAgICBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyx2b2lkLHZvaWQsdm9pZCx2b2lkPgotICAgICAgICAsIEl0ZXJhdG9yPgotewotfTsKLQotc3RydWN0IGJhZF9vdXRwdXRfaXRlcmF0b3JfdHJhaXRzCi17Ci0gICAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB2b2lkIGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHZvaWQgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZvaWQgcmVmZXJlbmNlOwotfTsKLSMgICBlbmRpZgotCi0vLyBJZiB3ZSdyZSBsb29raW5nIGF0IGFuIE1TVkM2IChvbGQgRGlua3Vtd2FyZSkgYGBzdGFuZGFyZCcnCi0vLyBpdGVyYXRvciwgdGhpcyB3aWxsIGdlbmVyYXRlIGFuIGFwcHJvcHJpYXRlIHRyYWl0cyBjbGFzcy4gCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgbXN2Y19zdGRsaWJfaXRlcmF0b3JfdHJhaXRzCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICBpc19tdXRhYmxlX2l0ZXJhdG9yPEl0ZXJhdG9yPgotICAgICAgICwgbXN2Y19zdGRsaWJfbXV0YWJsZV90cmFpdHM8SXRlcmF0b3I+Ci0gICAgICAgLCBtc3ZjX3N0ZGxpYl9jb25zdF90cmFpdHM8SXRlcmF0b3I+Ci0gICAgICA+Ojp0eXBlCi17fTsKLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IG5vbl9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0cwotICAgIDogbXBsOjppZl88Ci0gICAgICAgIC8vIGlmIHRoZSBpdGVyYXRvciBjb250YWlucyBhbGwgdGhlIHJpZ2h0IG5lc3RlZCB0eXBlcy4uLgotICAgICAgICBpc19mdWxsX2l0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj4KLSAgICAgICAgLy8gVXNlIGEgc3RhbmRhcmQgaXRlcmF0b3JfdHJhaXRzIGltcGxlbWVudGF0aW9uCi0gICAgICAgICwgc3RhbmRhcmRfaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotIyAgIGlmZGVmIE5ETkJPT1NUX0JBRF9DT05UQUlORVJfSVRFUkFUT1JfQ0FURUdPUllfVFlQRURFRgotICAgICAgICAvLyBDaGVjayBmb3IgU1RMUG9ydCA0LjAgYnJva2VuIF9JdGVyYXRvcl9jYXRlZ29yeSB0eXBlCi0gICAgICAgICwgbXBsOjppZl88Ci0gICAgICAgICAgICAgaXNfc3RscG9ydF80MF9kZWJ1Z19pdGVyYXRvcjxJdGVyYXRvcj4KLSAgICAgICAgICAgICAsIHN0bHBvcnRfNDBfZGVidWdfaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotIyAgIGVuZGlmCi0gICAgICAgIC8vIE90aGVyd2lzZSwgYXNzdW1lIGl0J3MgYSBEaW5rdW0gaXRlcmF0b3IKLSAgICAgICAgLCBtc3ZjX3N0ZGxpYl9pdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci0jICAgaWZkZWYgTkROQk9PU1RfQkFEX0NPTlRBSU5FUl9JVEVSQVRPUl9DQVRFR09SWV9UWVBFREVGCi0gICAgICAgID46OnR5cGUKLSMgICBlbmRpZiAKLSAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzX2F1eAotICAgIDogbXBsOjppZl88Ci0gICAgICAgIGlzX3BvaW50ZXI8SXRlcmF0b3I+Ci0gICAgICAgICwgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ci0gICAgICAgICwgbm9uX3BvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPgotICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHMKLXsKLSAgICAvLyBFeHBsaWNpdCBmb3J3YXJkaW5nIGZyb20gYmFzZSBjbGFzcyBuZWVkZWQgdG8ga2VlcCBNU1ZDNiBoYXBweQotICAgIC8vIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy4KLSBwcml2YXRlOgotIyAgIGlmZGVmIE5ETkJPT1NUX0JBRF9PVVRQVVRfSVRFUkFUT1JfU1BFQ0lBTElaQVRJT04KLSAgICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICBpc19iYWRfb3V0cHV0X2l0ZXJhdG9yPEl0ZXJhdG9yPgotICAgICAgICAsIGJhZF9vdXRwdXRfaXRlcmF0b3JfdHJhaXRzCi0gICAgICAgICwgaXRlcmF0b3JfdHJhaXRzX2F1eDxJdGVyYXRvcj4KLSAgICA+Ojp0eXBlIGJhc2U7Ci0jICAgZWxzZQotICAgIHR5cGVkZWYgaXRlcmF0b3JfdHJhaXRzX2F1eDxJdGVyYXRvcj4gYmFzZTsKLSMgICBlbmRpZgotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnBvaW50ZXIgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2U6OnJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZTo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci19OwotCi0vLyBUaGlzIHNwZWNpYWxpemF0aW9uIGN1dHMgb2ZmIEVUSSAoRWFybHkgVGVtcGxhdGUgSW5zdGFudGlhdGlvbikgZm9yIE1TVkMuCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgaW50IHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBpbnQgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgaW50IGRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGludCBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZGV0YWlsCi0KLSMgIGVuZGlmIC8vIHdvcmthcm91bmRzCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1uYW1lc3BhY2UgaXRlcmF0b3JfdHJhaXRzXwotewotICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIERpZmZlcmVuY2U+Ci0gIHN0cnVjdCBkaXN0YW5jZV9zZWxlY3QKLSAgewotICAgICAgc3RhdGljIERpZmZlcmVuY2UgZXhlY3V0ZShJdGVyYXRvciBpMSwgY29uc3QgSXRlcmF0b3IgaTIsIC4uLikKLSAgICAgIHsKLSAgICAgICAgICBEaWZmZXJlbmNlIHJlc3VsdCA9IDA7Ci0gICAgICAgICAgd2hpbGUgKGkxICE9IGkyKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgKytpMTsKLSAgICAgICAgICAgICAgKytyZXN1bHQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0KLSAgICAgIHN0YXRpYyBEaWZmZXJlbmNlIGV4ZWN1dGUoSXRlcmF0b3IgaTEsIGNvbnN0IEl0ZXJhdG9yIGkyLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKikKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gaTIgLSBpMTsKLSAgICAgIH0KLSAgfTsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0c18KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQotZGlzdGFuY2UoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgZGlmZl90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgICAKLSAgICByZXR1cm4gaXRlcmF0b3JfdHJhaXRzXzo6ZGlzdGFuY2Vfc2VsZWN0PEl0ZXJhdG9yLGRpZmZfdD46OmV4ZWN1dGUoCi0gICAgICAgIGZpcnN0LCBsYXN0LCAoaXRlcmF0b3JfY2F0ZWdvcnkqKTApOwotfQotCi19fQotCi0jIGVuZGlmCi0KLQotIyB1bmRlZiBORE5CT09TVF9CQURfQ09OVEFJTkVSX0lURVJBVE9SX0NBVEVHT1JZX1RZUEVERUYKLSMgdW5kZWYgTkROQk9PU1RfQkFEX09VVFBVVF9JVEVSQVRPUl9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gSVRFUkFUT1JfTkROQk9PU1RfRFdBMTIyNjAwX0hQUF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xjYXN0X3ByZWNpc2lvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9sY2FzdF9wcmVjaXNpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjBiMmFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xjYXN0X3ByZWNpc2lvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IEFsZXhhbmRlciBOYXNvbm92ICYgUGF1bCBBLiBCcmlzdG93IDIwMDYuCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTENBU1RfUFJFQ0lTSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfTENBU1RfUFJFQ0lTSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNpbmNsdWRlIDxpb3M+Ci0jaW5jbHVkZSA8bGltaXRzPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLS8vIEZpeCBmb3IgU0Y6MTM1ODYwMCAtIGxleGljYWxfY2FzdCAmIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMgJiBWQyA4IFNUTAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSB8fCBcCi0gIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDPDEzMTApKQotCi0jZGVmaW5lIE5ETkJPT1NUX0xDQVNUX05PX0NPTVBJTEVfVElNRV9QUkVDSVNJT04KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1jbGFzcyBsY2FzdF9hYnN0cmFjdF9zdHViIHt9OwotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX0NPTVBJTEVfVElNRV9QUkVDSVNJT04KLS8vIENhbGN1bGF0ZSBhbiBhcmd1bWVudCB0byBwYXNzIHRvIHN0ZDo6aW9zX2Jhc2U6OnByZWNpc2lvbiBmcm9tCi0vLyBsZXhpY2FsX2Nhc3QuIFNlZSBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBmb3IgYnJva2VuIHN0YW5kYXJkCi0vLyBsaWJyYXJpZXMgaW4gbGNhc3RfZ2V0X3ByZWNpc2lvbiBiZWxvdy4gS2VlcCB0aGVtIGluIHN5bmMsIHBsZWFzZS4KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbGNhc3RfcHJlY2lzaW9uCi17Ci0jaWZkZWYgTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1QKLSAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4gbGltaXRzOyAvLyBObyBmaXggZm9yIFNGOjEzNTg2MDAuCi0jZWxzZQotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl88Ci0gICAgICAgIG5kbmJvb3N0Ojppc19hYnN0cmFjdDxUPgotICAgICAgLCBzdGQ6Om51bWVyaWNfbGltaXRzPGxjYXN0X2Fic3RyYWN0X3N0dWI+Ci0gICAgICAsIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLSAgICAgID46OnR5cGUgbGltaXRzOwotI2VuZGlmCi0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdXNlX2RlZmF1bHRfcHJlY2lzaW9uID0KLSAgICAgICAgICAgICFsaW1pdHM6OmlzX3NwZWNpYWxpemVkIHx8IGxpbWl0czo6aXNfZXhhY3QKLSAgICAgICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zcGVjaWFsaXplZF9iaW4gPQotICAgICAgICAgICAgIXVzZV9kZWZhdWx0X3ByZWNpc2lvbiAmJgotICAgICAgICAgICAgbGltaXRzOjpyYWRpeCA9PSAyICYmIGxpbWl0czo6ZGlnaXRzID4gMAotICAgICAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkX2RlYyA9Ci0gICAgICAgICAgICAhdXNlX2RlZmF1bHRfcHJlY2lzaW9uICYmCi0gICAgICAgICAgICBsaW1pdHM6OnJhZGl4ID09IDEwICYmIGxpbWl0czo6ZGlnaXRzMTAgPiAwCi0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzdHJlYW1zaXplLCBzdHJlYW1zaXplX21heCA9Ci0gICAgICAgICAgICBuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c3RkOjpzdHJlYW1zaXplPjo6Y29uc3RfbWF4Ci0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQgaW50LCBwcmVjaXNpb25fZGVjID0gbGltaXRzOjpkaWdpdHMxMCArIDFVKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIWlzX3NwZWNpYWxpemVkX2RlYyB8fAotICAgICAgICAgICAgcHJlY2lzaW9uX2RlYyA8PSBzdHJlYW1zaXplX21heCArIDBVTAotICAgICAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkIGxvbmcsIHByZWNpc2lvbl9iaW4gPQotICAgICAgICAgICAgMlVMICsgbGltaXRzOjpkaWdpdHMgKiAzMDEwM1VMIC8gMTAwMDAwVUwKLSAgICAgICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIWlzX3NwZWNpYWxpemVkX2JpbiB8fAotICAgICAgICAgICAgKGxpbWl0czo6ZGlnaXRzICsgMFVMIDwgVUxPTkdfTUFYIC8gMzAxMDNVTCAmJgotICAgICAgICAgICAgcHJlY2lzaW9uX2JpbiA+IGxpbWl0czo6ZGlnaXRzMTAgKyAwVUwgJiYKLSAgICAgICAgICAgIHByZWNpc2lvbl9iaW4gPD0gc3RyZWFtc2l6ZV9tYXggKyAwVUwpCi0gICAgICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzdHJlYW1zaXplLCB2YWx1ZSA9Ci0gICAgICAgICAgICBpc19zcGVjaWFsaXplZF9iaW4gPyBwcmVjaXNpb25fYmluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpc19zcGVjaWFsaXplZF9kZWMgPyBwcmVjaXNpb25fZGVjIDogNgotICAgICAgICApOwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBsY2FzdF9nZXRfcHJlY2lzaW9uKFQqID0gMCkKLXsKLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotICAgIHJldHVybiBsY2FzdF9wcmVjaXNpb248VD46OnZhbHVlOwotI2Vsc2UgLy8gRm9sbG93IGxjYXN0X3ByZWNpc2lvbiBhbGdvcml0aG0gYXQgcnVuLXRpbWU6Ci0KLSNpZmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxUPiBsaW1pdHM7IC8vIE5vIGZpeCBmb3IgU0Y6MTM1ODYwMC4KLSNlbHNlCi0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgICAgbmRuYm9vc3Q6OmlzX2Fic3RyYWN0PFQ+Ci0gICAgICAsIHN0ZDo6bnVtZXJpY19saW1pdHM8bGNhc3RfYWJzdHJhY3Rfc3R1Yj4KLSAgICAgICwgc3RkOjpudW1lcmljX2xpbWl0czxUPgotICAgICAgPjo6dHlwZSBsaW1pdHM7Ci0jZW5kaWYKLQotICAgIGJvb2wgY29uc3QgdXNlX2RlZmF1bHRfcHJlY2lzaW9uID0KLSAgICAgICAgIWxpbWl0czo6aXNfc3BlY2lhbGl6ZWQgfHwgbGltaXRzOjppc19leGFjdDsKLQotICAgIGlmKCF1c2VfZGVmYXVsdF9wcmVjaXNpb24pCi0gICAgeyAvLyBJbmNsdWRlcyBhbGwgYnVpbHQtaW4gZmxvYXRpbmctcG9pbnQgdHlwZXMsIGZsb2F0LCBkb3VibGUgLi4uCi0gICAgICAvLyBhbmQgVURUIHR5cGVzIGZvciB3aGljaCBkaWdpdHMgKHNpZ25pZmljYW5kIGJpdHMpIGlzIGRlZmluZWQgKG5vdCB6ZXJvKQotCi0gICAgICAgIGJvb2wgY29uc3QgaXNfc3BlY2lhbGl6ZWRfYmluID0KLSAgICAgICAgICAgIGxpbWl0czo6cmFkaXggPT0gMiAmJiBsaW1pdHM6OmRpZ2l0cyA+IDA7Ci0gICAgICAgIGJvb2wgY29uc3QgaXNfc3BlY2lhbGl6ZWRfZGVjID0KLSAgICAgICAgICAgIGxpbWl0czo6cmFkaXggPT0gMTAgJiYgbGltaXRzOjpkaWdpdHMxMCA+IDA7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb25zdCBzdHJlYW1zaXplX21heCA9Ci0gICAgICAgICAgICAobmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHN0ZDo6c3RyZWFtc2l6ZT46Om1heCkoKTsKLQotICAgICAgICBpZihpc19zcGVjaWFsaXplZF9iaW4pCi0gICAgICAgIHsgLy8gRmxvYXRpbmctcG9pbnQgdHlwZXMgd2l0aAotICAgICAgICAgIC8vIGxpbWl0czo6ZGlnaXRzIGRlZmluZWQgYnkgdGhlIHNwZWNpYWxpemF0aW9uLgotCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvbnN0IGRpZ2l0cyA9IGxpbWl0czo6ZGlnaXRzOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb25zdCBwcmVjaXNpb24gPSAyVUwgKyBkaWdpdHMgKiAzMDEwM1VMIC8gMTAwMDAwVUw7Ci0gICAgICAgICAgICAvLyB1bnNpZ25lZCBsb25nIGlzIHNlbGVjdGVkIGJlY2F1c2UgaXQgaXMgYXQgbGVhc3QgMzItYml0cwotICAgICAgICAgICAgLy8gYW5kIHRodXMgVUxPTkdfTUFYIC8gMzAxMDNVTCBpcyBiaWcgZW5vdWdoIGZvciBhbGwgdHlwZXMuCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoCi0gICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA8IFVMT05HX01BWCAvIDMwMTAzVUwgJiYKLSAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID4gbGltaXRzOjpkaWdpdHMxMCArIDBVTCAmJgotICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPD0gc3RyZWFtc2l6ZV9tYXggKyAwVUwKLSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgcmV0dXJuIHByZWNpc2lvbjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGlzX3NwZWNpYWxpemVkX2RlYykKLSAgICAgICAgeyAgIC8vIERlY2ltYWwgRmxvYXRpbmctcG9pbnQgdHlwZSwgbW9zdCBsaWtlbHkgYSBVc2VyIERlZmluZWQgVHlwZQotICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gYSByZWFsIGZsb2F0aW5nLXBvaW50IGhhcmR3YXJlIHR5cGUuCi0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29uc3QgcHJlY2lzaW9uID0gbGltaXRzOjpkaWdpdHMxMCArIDFVOwotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHByZWNpc2lvbiA8PSBzdHJlYW1zaXplX21heCArIDBVTCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJlY2lzaW9uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSW50ZWdyYWwgdHlwZSAoZm9yIHdoaWNoIHByZWNpc2lvbiBoYXMgbm8gZWZmZWN0KQotICAgIC8vIG9yIHR5cGUgVCBmb3Igd2hpY2ggbGltaXRzIGlzIE5PVCBzcGVjaWFsaXplZCwKLSAgICAvLyBzbyBhc3N1bWUgc3RyZWFtIHByZWNpc2lvbiByZW1haW5zIHRoZSBkZWZhdWx0IDYgZGVjaW1hbCBkaWdpdHMuCi0gICAgLy8gV2FybmluZzogaWYgeW91ciBVc2VyLWRlZmluZWQgRmxvYXRpbmctcG9pbnQgdHlwZSBUIGlzIE5PVCBzcGVjaWFsaXplZCwKLSAgICAvLyB0aGVuIHlvdSBtYXkgbG9zZSBhY2N1cmFjeSBieSBvbmx5IHVzaW5nIDYgZGVjaW1hbCBkaWdpdHMuCi0gICAgLy8gVG8gYXZvaWQgdGhpcywgeW91IG5lZWQgdG8gc3BlY2lhbGl6ZSBUIHdpdGggZWl0aGVyCi0gICAgLy8gcmFkaXggPT0gMiBhbmQgZGlnaXRzID09IHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbmQgYml0cywKLSAgICAvLyBPUgotICAgIC8vIHJhZGl4ID0gMTAgYW5kIGRpZ2l0czEwID09IHRoZSBudW1iZXIgb2YgZGVjaW1hbCBkaWdpdHMuCi0KLSAgICByZXR1cm4gNjsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHZvaWQgbGNhc3Rfc2V0X3ByZWNpc2lvbihzdGQ6Omlvc19iYXNlJiBzdHJlYW0sIFQqKQotewotICAgIHN0cmVhbS5wcmVjaXNpb24obGNhc3RfZ2V0X3ByZWNpc2lvbjxUPigpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQ+Ci1pbmxpbmUgdm9pZCBsY2FzdF9zZXRfcHJlY2lzaW9uKHN0ZDo6aW9zX2Jhc2UmIHN0cmVhbSwgU291cmNlKiwgVGFyZ2V0KikKLXsKLSAgICBzdGQ6OnN0cmVhbXNpemUgY29uc3QgcyA9IGxjYXN0X2dldF9wcmVjaXNpb24oc3RhdGljX2Nhc3Q8U291cmNlKj4oMCkpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb25zdCB0ID0gbGNhc3RfZ2V0X3ByZWNpc2lvbihzdGF0aWNfY2FzdDxUYXJnZXQqPigwKSk7Ci0gICAgc3RyZWFtLnByZWNpc2lvbihzID4gdCA/IHMgOiB0KTsKLX0KLQotfX0KLQotI2VuZGlmIC8vICBORE5CT09TVF9ERVRBSUxfTENBU1RfUFJFQ0lTSU9OX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NjBjMWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfbXV0ZXguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTElHSFRXRUlHSFRfTVVURVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcCAtIGxpZ2h0d2VpZ2h0IG11dGV4Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X3Rlc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfdGVzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTdjZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvbGlnaHR3ZWlnaHRfdGVzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTElHSFRXRUlHSFRfVEVTVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0xJR0hUV0VJR0hUX1RFU1RfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9saWdodHdlaWdodF90ZXN0LmhwcCAtIGxpZ2h0d2VpZ2h0IHRlc3QgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKDIpIEJlbWFuIERhd2VzIDIwMTAsIDIwMTEKLS8vICBDb3B5cmlnaHQgKDMpIElvbiBHYXp0YW5hZ2EgMjAxMwotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gICAgLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgSWYgZXhwcmVzc2lvbiBpcyBmYWxzZSBpbmNyZWFzZXMgdGhlIGVycm9yIGNvdW50IAotLy8gICAgYW5kIG91dHB1dHMgYSBtZXNzYWdlIGNvbnRhaW5pbmcgJ2V4cHJlc3Npb24nCi0vLwotLy8gIE5ETkJPT1NUX1RFU1QoZXhwcmVzc2lvbikKLS8vCi0vLyAgICAtLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICBJbmNyZWFzZXMgZXJyb3IgY291bnQgYW5kIG91dHB1dHMgYSBtZXNzYWdlIGNvbnRhaW5pbmcgJ21lc3NhZ2UnCi0vLwotLy8gIE5ETkJPT1NUX0VSUk9SKG1lc3NhZ2UpCi0vLwotLy8gICAgLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgSWYgJ2V4cHIxJyAhPSAnZXhwcjInIGluY3JlYXNlcyB0aGUgZXJyb3IgY291bnQgCi0vLyAgICBhbmQgb3V0cHV0cyBhIG1lc3NhZ2UgY29udGFpbmluZyBib3RoIGV4cHJlc3Npb25zCi0vLwotLy8gIE5ETkJPT1NUX1RFU1RfRVEoZXhwcjEsIGV4cHIyKQotLy8KLS8vICAgIC0tLS0tLS0tLS0tLS0tLQotLy8KLS8vICAgIElmICdleHByMScgPT0gJ2V4cHIyJyBpbmNyZWFzZXMgdGhlIGVycm9yIGNvdW50IAotLy8gICAgYW5kIG91dHB1dHMgYSBtZXNzYWdlIGNvbnRhaW5pbmcgYm90aCBleHByZXNzaW9ucwotLy8KLS8vICBORE5CT09TVF9URVNUX05FKGV4cHIxLCBleHByMikKLS8vCi0vLyAgICAtLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyAgICBJZiBORE5CT09TVF9OT19FWENFUFRJT05TIGlzIE5PVCBkZWZpbmVkIGFuZCBpZiAnZXhwcicgZG9lcyBub3QKLS8vICAgIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0eXBlICdleGNlcCcsIGluY3JlYXNlcyB0aGUgZXJyb3IgY291bnQKLS8vICAgIGFuZCBvdXRwdXRzIGEgbWVzc2FnZSBjb250YWluaW5nIHRoZSBleHByZXNzaW9uLgotLy8KLS8vICAgIElmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMgaXMgZGVmaW5lZCwgdGhpcyBtYWNybyBleHBhbmRzIHRvIG5vdGhpbmcKLS8vICAgIGFuZCAnZXhwcicgaXMgbm90IGV2YWx1YXRlZC4KLS8vCi0vLyAgTkROQk9PU1RfVEVTVF9USFJPV1MoZXhwciwgZXhjZXApCi0vLwotLy8gICAgLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgUmV0dXJucyB0aGUgZXJyb3IgY291bnQKLS8vCi0vLyAgaW50IG5kbmJvb3N0OjpyZXBvcnRfZXJyb3JzKCkKLS8vCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9ub19leGNlcHRpb25zX3N1cHBvcnQuaHBwPgotCi0vLyAgSURFJ3MgbGlrZSBWaXN1YWwgU3R1ZGlvIHBlcmZvcm0gYmV0dGVyIGlmIG91dHB1dCBnb2VzIHRvIHN0ZDo6Y291dCBvcgotLy8gIHNvbWUgb3RoZXIgc3RyZWFtLCBzbyBhbGxvdyB1c2VyIHRvIGNvbmZpZ3VyZSBvdXRwdXQgc3RyZWFtOgotI2lmbmRlZiBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTSBzdGQ6OmNlcnIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1zdHJ1Y3QgcmVwb3J0X2Vycm9yc19yZW1pbmRlcgotewotICBib29sIGNhbGxlZF9yZXBvcnRfZXJyb3JzX2Z1bmN0aW9uOwotICByZXBvcnRfZXJyb3JzX3JlbWluZGVyKCkgOiBjYWxsZWRfcmVwb3J0X2Vycm9yc19mdW5jdGlvbihmYWxzZSkge30KLSB+cmVwb3J0X2Vycm9yc19yZW1pbmRlcigpCi0gIHsKLSAgICBORE5CT09TVF9BU1NFUlQoY2FsbGVkX3JlcG9ydF9lcnJvcnNfZnVuY3Rpb24pOyAgLy8gdmVyaWZ5IHJlcG9ydF9lcnJvcnMoKSB3YXMgY2FsbGVkICAKLSAgfQotfTsKLQotaW5saW5lIHJlcG9ydF9lcnJvcnNfcmVtaW5kZXImIHJlcG9ydF9lcnJvcnNfcmVtaW5kKCkKLXsKLSAgc3RhdGljIHJlcG9ydF9lcnJvcnNfcmVtaW5kZXIgcjsKLSAgcmV0dXJuIHI7Ci19Ci0KLWlubGluZSBpbnQgJiB0ZXN0X2Vycm9ycygpCi17Ci0gICAgc3RhdGljIGludCB4ID0gMDsKLSAgICByZXBvcnRfZXJyb3JzX3JlbWluZCgpOwotICAgIHJldHVybiB4OwotfQotCi1pbmxpbmUgdm9pZCB0ZXN0X2ZhaWxlZF9pbXBsKGNoYXIgY29uc3QgKiBleHByLCBjaGFyIGNvbnN0ICogZmlsZSwgaW50IGxpbmUsIGNoYXIgY29uc3QgKiBmdW5jdGlvbikKLXsKLSAgICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICAgIDw8IGZpbGUgPDwgIigiIDw8IGxpbmUgPDwgIik6IHRlc3QgJyIgPDwgZXhwciA8PCAiJyBmYWlsZWQgaW4gZnVuY3Rpb24gJyIKLSAgICAgIDw8IGZ1bmN0aW9uIDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICAgKyt0ZXN0X2Vycm9ycygpOwotfQotCi1pbmxpbmUgdm9pZCBlcnJvcl9pbXBsKGNoYXIgY29uc3QgKiBtc2csIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSwgY2hhciBjb25zdCAqIGZ1bmN0aW9uKQotewotICAgIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotICAgICAgPDwgZmlsZSA8PCAiKCIgPDwgbGluZSA8PCAiKTogIiA8PCBtc2cgPDwgIiBpbiBmdW5jdGlvbiAnIgotICAgICAgPDwgZnVuY3Rpb24gPDwgIiciIDw8IHN0ZDo6ZW5kbDsKLSAgICArK3Rlc3RfZXJyb3JzKCk7Ci19Ci0KLWlubGluZSB2b2lkIHRocm93X2ZhaWxlZF9pbXBsKGNoYXIgY29uc3QgKiBleGNlcCwgY2hhciBjb25zdCAqIGZpbGUsIGludCBsaW5lLCBjaGFyIGNvbnN0ICogZnVuY3Rpb24pCi17Ci0gICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiBFeGNlcHRpb24gJyIgPDwgZXhjZXAgPDwgIicgbm90IHRocm93biBpbiBmdW5jdGlvbiAnIgotICAgIDw8IGZ1bmN0aW9uIDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICArK3Rlc3RfZXJyb3JzKCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSB2b2lkIHRlc3RfZXFfaW1wbCggY2hhciBjb25zdCAqIGV4cHIxLCBjaGFyIGNvbnN0ICogZXhwcjIsCi0gIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSwgY2hhciBjb25zdCAqIGZ1bmN0aW9uLCBUIGNvbnN0ICYgdCwgVSBjb25zdCAmIHUgKQotewotICAgIGlmKCB0ID09IHUgKQotICAgIHsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTElHSFRXRUlHSFRfVEVTVF9PU1RSRUFNCi0gICAgICAgICAgICA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiB0ZXN0ICciIDw8IGV4cHIxIDw8ICIgPT0gIiA8PCBleHByMgotICAgICAgICAgICAgPDwgIicgZmFpbGVkIGluIGZ1bmN0aW9uICciIDw8IGZ1bmN0aW9uIDw8ICInOiAiCi0gICAgICAgICAgICA8PCAiJyIgPDwgdCA8PCAiJyAhPSAnIiA8PCB1IDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICsrdGVzdF9lcnJvcnMoKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSB2b2lkIHRlc3RfbmVfaW1wbCggY2hhciBjb25zdCAqIGV4cHIxLCBjaGFyIGNvbnN0ICogZXhwcjIsCi0gIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSwgY2hhciBjb25zdCAqIGZ1bmN0aW9uLCBUIGNvbnN0ICYgdCwgVSBjb25zdCAmIHUgKQotewotICAgIGlmKCB0ICE9IHUgKQotICAgIHsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfTElHSFRXRUlHSFRfVEVTVF9PU1RSRUFNCi0gICAgICAgICAgICA8PCBmaWxlIDw8ICIoIiA8PCBsaW5lIDw8ICIpOiB0ZXN0ICciIDw8IGV4cHIxIDw8ICIgIT0gIiA8PCBleHByMgotICAgICAgICAgICAgPDwgIicgZmFpbGVkIGluIGZ1bmN0aW9uICciIDw8IGZ1bmN0aW9uIDw8ICInOiAiCi0gICAgICAgICAgICA8PCAiJyIgPDwgdCA8PCAiJyA9PSAnIiA8PCB1IDw8ICInIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICsrdGVzdF9lcnJvcnMoKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1pbmxpbmUgaW50IHJlcG9ydF9lcnJvcnMoKQotewotICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yc19yZW1pbmQoKS5jYWxsZWRfcmVwb3J0X2Vycm9yc19mdW5jdGlvbiA9IHRydWU7Ci0KLSAgICBpbnQgZXJyb3JzID0gZGV0YWlsOjp0ZXN0X2Vycm9ycygpOwotCi0gICAgaWYoIGVycm9ycyA9PSAwICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0xJR0hUV0VJR0hUX1RFU1RfT1NUUkVBTQotICAgICAgICAgIDw8ICJObyBlcnJvcnMgZGV0ZWN0ZWQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBORE5CT09TVF9MSUdIVFdFSUdIVF9URVNUX09TVFJFQU0KLSAgICAgICAgICA8PCBlcnJvcnMgPDwgIiBlcnJvciIgPDwgKGVycm9ycyA9PSAxPyAiIjogInMiKSA8PCAiIGRldGVjdGVkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVChleHByKSAoKGV4cHIpPyAodm9pZCkwOiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRlc3RfZmFpbGVkX2ltcGwoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXywgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTikpCi0jZGVmaW5lIE5ETkJPT1NUX0VSUk9SKG1zZykgOjpuZG5ib29zdDo6ZGV0YWlsOjplcnJvcl9pbXBsKG1zZywgX19GSUxFX18sIF9fTElORV9fLCBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OKQotI2RlZmluZSBORE5CT09TVF9URVNUX0VRKGV4cHIxLGV4cHIyKSAoIDo6bmRuYm9vc3Q6OmRldGFpbDo6dGVzdF9lcV9pbXBsKCNleHByMSwgI2V4cHIyLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIGV4cHIxLCBleHByMikgKQotI2RlZmluZSBORE5CT09TVF9URVNUX05FKGV4cHIxLGV4cHIyKSAoIDo6bmRuYm9vc3Q6OmRldGFpbDo6dGVzdF9uZV9pbXBsKCNleHByMSwgI2V4cHIyLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIGV4cHIxLCBleHByMikgKQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAjZGVmaW5lIE5ETkJPT1NUX1RFU1RfVEhST1dTKCBFWFBSLCBFWENFUCApICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBFWFBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OnRocm93X2ZhaWxlZF9pbXBsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAoI0VYQ0VQLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pOyBcCi0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBjYXRjaChFWENFUCBjb25zdCYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBjYXRjaCguLi4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OnRocm93X2ZhaWxlZF9pbXBsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAoI0VYQ0VQLCBfX0ZJTEVfXywgX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pOyBcCi0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAvLwotI2Vsc2UKLSAgICNkZWZpbmUgTkROQk9PU1RfVEVTVF9USFJPV1MoIEVYUFIsIEVYQ0VQICkKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfTElHSFRXRUlHSFRfVEVTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9ub19leGNlcHRpb25zX3N1cHBvcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzdiMThjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0RFVEFJTF9OT19FWENFUFRJT05TX1NVUFBPUlRfSFBQXwotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfTk9fRVhDRVBUSU9OU19TVVBQT1JUX0hQUF8KLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQgUGF2ZWwgVm96ZW5pbGVrLgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGhlbHBlciBtYWNyb3MgdXNlZCB3aGVuIGV4Y2VwdGlvbiBzdXBwb3J0IG1heSBiZQotLy8gZGlzYWJsZWQgKGFzIGluZGljYXRlZCBieSBtYWNybyBORE5CT09TVF9OT19FWENFUFRJT05TKS4KLS8vCi0vLyBCZWZvcmUgcGlja2luZyB1cCB0aGVzZSBtYWNyb3MgeW91IG1heSBjb25zaWRlciB1c2luZyBSQUlJIHRlY2huaXF1ZXMKLS8vIHRvIGRlYWwgd2l0aCBleGNlcHRpb25zIC0gdGhlaXIgc3ludGF4IGNhbiBiZSBhbHdheXMgdGhlIHNhbWUgd2l0aCAKLS8vIG9yIHdpdGhvdXQgZXhjZXB0aW9uIHN1cHBvcnQgZW5hYmxlZC4KLS8vCi0KLS8qIEV4YW1wbGUgb2YgdXNlOgotCi12b2lkIGZvbygpIHsKLSAgTkROQk9PU1RfVFJZIHsKLSAgICAuLi4KLSAgfSBORE5CT09TVF9DQVRDSChjb25zdCBzdGQ6OmJhZF9hbGxvYyYpIHsKLSAgICAgIC4uLgotICAgICAgTkROQk9PU1RfUkVUSFJPVwotICB9IE5ETkJPT1NUX0NBVENIKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7Ci0gICAgICAuLi4KLSAgfQotICBORE5CT09TVF9DQVRDSF9FTkQKLX0KLQotV2l0aCBleGNlcHRpb24gc3VwcG9ydCBlbmFibGVkIGl0IHdpbGwgZXhwYW5kIGludG86Ci0KLXZvaWQgZm9vKCkgewotICB7IHRyeSB7Ci0gICAgLi4uCi0gIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6YmFkX2FsbG9jJikgewotICAgICAgLi4uCi0gICAgICB0aHJvdzsKLSAgfSBjYXRjaCAoY29uc3Qgc3RkOjpleGNlcHRpb24mIGUpIHsKLSAgICAgIC4uLgotICB9Ci0gIH0KLX0KLQotV2l0aCBleGNlcHRpb24gc3VwcG9ydCBkaXNhYmxlZCBpdCB3aWxsIGV4cGFuZCBpbnRvOgotCi12b2lkIGZvbygpIHsKLSAgeyBpZih0cnVlKSB7Ci0gICAgLi4uCi0gIH0gZWxzZSBpZiAoZmFsc2UpIHsKLSAgICAgIC4uLgotICB9IGVsc2UgaWYgKGZhbHNlKSAgewotICAgICAgLi4uCi0gIH0KLSAgfQotfQotKi8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhKGRlZmluZWQgTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RSWSB7IHRyeQotIyAgICBkZWZpbmUgTkROQk9PU1RfQ0FUQ0goeCkgY2F0Y2goeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1JFVEhST1cgdGhyb3c7Ci0jICAgIGRlZmluZSBORE5CT09TVF9DQVRDSF9FTkQgfQotI2Vsc2UKLSMgICAgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFJZIHsgaWYgKCIiKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0NBVENIKHgpIGVsc2UgaWYgKCEiIikKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RSWSB7IGlmICh0cnVlKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0NBVENIKHgpIGVsc2UgaWYgKGZhbHNlKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUkVUSFJPVwotIyAgICBkZWZpbmUgTkROQk9PU1RfQ0FUQ0hfRU5EIH0KLSNlbmRpZgotCi0KLSNlbmRpZiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL29iX2NhbGxfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL29iX2NhbGxfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRiYmIwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9vYl9jYWxsX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgQ3JpcHBsZWQgdmVyc2lvbiBmb3IgY3JpcHBsZWQgY29tcGlsZXJzOgotLy8gIHNlZSBsaWJzL3V0aWxpdHkvY2FsbF90cmFpdHMuaHRtCi0vLwotCi0vKiBSZWxlYXNlIG5vdGVzOgotICAgMDFzdCBPY3RvYmVyIDIwMDA6Ci0gICAgICBGaXhlZCBjYWxsX3RyYWl0cyBvbiBWQzYsIHVzaW5nICJwb29yIG1hbidzIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24iLAotICAgICAgdXNpbmcgaWRlYXMgdGFrZW4gZnJvbSAiR2VuZXJhdGl2ZSBwcm9ncmFtbWluZyIgYnkgS3J6eXN6dG9mIEN6YXJuZWNraSAKLSAgICAgICYgVWxyaWNoIEVpc2VuZWNrZXIuCi0qLwotCi0jaWZuZGVmIE5ETkJPT1NUX09CX0NBTExfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9PQl9DQUxMX1RSQUlUU19IUFAKLQotI2lmbmRlZiBORE5CT09TVF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0FSSVRITUVUSUNfVFlQRV9UUkFJVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYXJpdGhtZXRpY190cmFpdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0NPTVBPU0lURV9UWVBFX1RSQUlUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb21wb3NpdGVfdHJhaXRzLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTCi0vLwotLy8gdXNlIG1lbWJlciB0ZW1wbGF0ZXMgdG8gZW11bGF0ZQotLy8gcGFydGlhbCBzcGVjaWFsaXNhdGlvbjoKLS8vCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBzdGFuZGFyZF9jYWxsX3RyYWl0cwotewotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUJiBwYXJhbV90eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHNpbXBsZV9jYWxsX3RyYWl0cwotewotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBjb25zdCBUIHBhcmFtX3R5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2NhbGxfdHJhaXRzCi17Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgVCByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIFQgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiBUIHBhcmFtX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBwb2ludGVyLCBib29sIGFyaXRobWV0aWMsIGJvb2wgcmVmZXJlbmNlPgotc3RydWN0IGNhbGxfdHJhaXRzX2Nob29zZXIKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBzdGFuZGFyZF9jYWxsX3RyYWl0czxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgY2FsbF90cmFpdHNfY2hvb3Nlcjx0cnVlLCBmYWxzZSwgZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgc2ltcGxlX2NhbGxfdHJhaXRzPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBjYWxsX3RyYWl0c19jaG9vc2VyPGZhbHNlLCBmYWxzZSwgdHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiByZWZlcmVuY2VfY2FsbF90cmFpdHM8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBzaXplX2lzX3NtYWxsPiAKLXN0cnVjdCBjYWxsX3RyYWl0c19zaXplb2ZfY2hvb3NlcjIKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHNtYWxsX3JlYmluZAotICAgewotICAgICAgdHlwZWRlZiBzaW1wbGVfY2FsbF90cmFpdHM8VD4gc21hbGxfdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IGNhbGxfdHJhaXRzX3NpemVvZl9jaG9vc2VyMjxmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHNtYWxsX3JlYmluZAotICAgewotICAgICAgdHlwZWRlZiBzdGFuZGFyZF9jYWxsX3RyYWl0czxUPiBzbWFsbF90eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgY2FsbF90cmFpdHNfY2hvb3NlcjxmYWxzZSwgdHJ1ZSwgZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIGVudW0geyBzaXplb2ZfY2hvaWNlID0gKHNpemVvZihUKSA8PSBzaXplb2Yodm9pZCopKSB9OwotICAgICAgdHlwZWRlZiBjYWxsX3RyYWl0c19zaXplb2ZfY2hvb3NlcjI8KHNpemVvZihUKSA8PSBzaXplb2Yodm9pZCopKT4gY2hvb3NlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hvb3Nlcjo6dGVtcGxhdGUgc21hbGxfcmViaW5kPFQ+IGJvdW5kX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGJvdW5kX3R5cGU6OnNtYWxsX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGNhbGxfdHJhaXRzCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjpjYWxsX3RyYWl0c19jaG9vc2VyPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+Ojp2YWx1ZSwgCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICA+IGNob29zZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNob29zZXI6OnRlbXBsYXRlIHJlYmluZDxUPiBib3VuZF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBib3VuZF90eXBlOjp0eXBlIGNhbGxfdHJhaXRzX3R5cGU7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzX3R5cGU6OnZhbHVlX3R5cGUgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHNfdHlwZTo6cmVmZXJlbmNlICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzX3R5cGU6OmNvbnN0X3JlZmVyZW5jZSAgY29uc3RfcmVmZXJlbmNlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0c190eXBlOjpwYXJhbV90eXBlICAgICAgIHBhcmFtX3R5cGU7Ci19OwotCi0jZWxzZQotLy8KLS8vIHNvcnJ5IGNhbGxfdHJhaXRzIGlzIGNvbXBsZXRlbHkgbm9uLWZ1bmN0aW9uYWwKLS8vIGJsYW1lIHlvdXIgYnJva2VuIGNvbXBpbGVyOgotLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2FsbF90cmFpdHMKLXsKLSAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3JlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgVCYgcGFyYW1fdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBtZW1iZXIgdGVtcGxhdGVzCi0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX09CX0NBTExfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOThkNGVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3JlZmVyZW5jZV9jb250ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBib29zdCBkZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwIGhlYWRlciBmaWxlCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMwotLy8gRXJpYyBGcmllZG1hbgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfUkVGRVJFTkNFX0NPTlRFTlRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9SRUZFUkVOQ0VfQ09OVEVOVF9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgIGluY2x1ZGUgIm5kbmJvb3N0L21wbC9ib29sLmhwcCIKLSMgICBpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcCIKLSNlbHNlCi0jICAgaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lmLmhwcCIKLSMgICBpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwIgotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvdm9pZC5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAoZGV0YWlsKSBjbGFzcyB0ZW1wbGF0ZSByZWZlcmVuY2VfY29udGVudAotLy8KLS8vIE5vbi1Bc3NpZ25hYmxlIHdyYXBwZXIgZm9yIHJlZmVyZW5jZXMuCi0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFJlZlQ+Ci1jbGFzcyByZWZlcmVuY2VfY29udGVudAotewotcHJpdmF0ZTogLy8gcmVwcmVzZW50YXRpb24KLQotICAgIFJlZlQgY29udGVudF87Ci0KLXB1YmxpYzogLy8gc3RydWN0b3JzCi0KLSAgICB+cmVmZXJlbmNlX2NvbnRlbnQoKQotICAgIHsKLSAgICB9Ci0KLSAgICByZWZlcmVuY2VfY29udGVudChSZWZUIHIpCi0gICAgICAgIDogY29udGVudF8oIHIgKQotICAgIHsKLSAgICB9Ci0KLSAgICByZWZlcmVuY2VfY29udGVudChjb25zdCByZWZlcmVuY2VfY29udGVudCYgb3BlcmFuZCkKLSAgICAgICAgOiBjb250ZW50Xyggb3BlcmFuZC5jb250ZW50XyApCi0gICAgewotICAgIH0KLQotcHJpdmF0ZTogLy8gbm9uLUFzc2lnbmFibGUKLQotICAgIHJlZmVyZW5jZV9jb250ZW50JiBvcGVyYXRvcj0oY29uc3QgcmVmZXJlbmNlX2NvbnRlbnQmKTsKLQotcHVibGljOiAvLyBxdWVyaWVzCi0KLSAgICBSZWZUIGdldCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29udGVudF87Ci0gICAgfQotCi19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAoZGV0YWlsKSBtZXRhZnVuY3Rpb24gbWFrZV9yZWZlcmVuY2VfY29udGVudAotLy8KLS8vIFdyYXBzIHdpdGggcmVmZXJlbmNlX2NvbnRlbnQgaWYgc3BlY2lmaWVkIHR5cGUgaXMgcmVmZXJlbmNlLgotLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBtcGw6OnZvaWRfPiBzdHJ1Y3QgbWFrZV9yZWZlcmVuY2VfY29udGVudDsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8IFQmID4KLXsKLSAgICB0eXBlZGVmIHJlZmVyZW5jZV9jb250ZW50PFQmPiB0eXBlOwotfTsKLQotI2Vsc2UgLy8gZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBtYWtlX3JlZmVyZW5jZV9jb250ZW50Ci0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD4KLSAgICAgICAgLCByZWZlcmVuY2VfY29udGVudDxUPgotICAgICAgICAsIFQKLSAgICAgICAgPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gd29ya2Fyb3VuZAotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8IG1wbDo6dm9pZF8gPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IG1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8VD4KLSAgICB7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgbXBsOjp2b2lkXyB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIHJlZmVyZW5jZV9jb250ZW50PFQmPiB0eXBlIHRyYWl0cyBzcGVjaWFsaXphdGlvbnMKLS8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19jb3B5PAotICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjpyZWZlcmVuY2VfY29udGVudDwgVCYgPgotICAgID4KLSAgICA6IG1wbDo6dHJ1ZV8KLXsKLX07Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfREVUQUlMX1JFRkVSRU5DRV9DT05URU5UX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3Njb3BlZF9lbnVtX2VtdWxhdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMmY1OTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzNyArMCwwIEBACi0vLyAgc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcywgMjAwOQotLy8gIENvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpY2VudGUgSi4gQm90ZXQgRXNjcmliYQotLy8gIENvcHlyaWdodCAoQykgMjAxMiBBbnRob255IFdpbGxpYW1zCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vKgotW3NlY3Rpb246c2NvcGVkX2VudW1zIFNjb3BlZCBFbnVtc10KLQotR2VuZXJhdGVzIEMrKzB4IHNjb3BlZCBlbnVtcyBpZiB0aGUgZmVhdHVyZSBpcyBwcmVzZW50LCBvdGhlcndpc2UgZW11bGF0ZXMgQysrMHgKLXNjb3BlZCBlbnVtcyB3aXRoIEMrKzAzIG5hbWVzcGFjZXMgYW5kIGVudW1zLiBUaGUgQm9vc3QuQ29uZmlnIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotbWFjcm8gaXMgdXNlZCB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0LgotCi1TZWUgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9wYXBlcnMvMjAwNy9uMjM0Ny5wZGYgZm9yIGEKLWRlc2NyaXB0aW9uIG9mIHRoZSBzY29wZWQgZW51bSBmZWF0dXJlLiBOb3RlIHRoYXQgdGhlIGNvbW1pdHRlZSBjaGFuZ2VkIHRoZSBuYW1lCi1mcm9tIHN0cm9uZ2x5IHR5cGVkIGVudW0gdG8gc2NvcGVkIGVudW0uCi0KLVNvbWUgb2YgdGhlIGVudW1lcmF0aW9ucyBkZWZpbmVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGFyZSBzY29wZWQgZW51bXMuCi0KLSAgZW51bSBjbGFzcyBmdXR1cmVfZXJyYwotICB7Ci0gICAgICBicm9rZW5fcHJvbWlzZSwKLSAgICAgIGZ1dHVyZV9hbHJlYWR5X3JldHJpZXZlZCwKLSAgICAgIHByb21pc2VfYWxyZWFkeV9zYXRpc2ZpZWQsCi0gICAgICBub19zdGF0ZQotICB9OwotCi1PbiBjb21waWxlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZW0sIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIHR3byBlbXVsYXRpb25zOgotCi1baGVhZGluZyBTdHJpY3RdCi0KLSogQWJsZSB0byBzcGVjaWZ5IHRoZSB1bmRlcmx5aW5nIHR5cGUuCi0qIGV4cGxpY2l0IGNvbnZlcnNpb24gdG8vZnJvbSB1bmRlcmx5aW5nIHR5cGUuCi0qIFRoZSB3cmFwcGVyIGlzIG5vdCBhIEMrKzAzIGVudW0gdHlwZS4KLQotVGhlIHVzZXIgY2FuIGRlY2xhcmUgIGRlY2xhcmUgdGhlc2UgdHlwZXMgYXMKLQotICBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0JFR0lOKGZ1dHVyZV9lcnJjKQotICB7Ci0gICAgICBicm9rZW5fcHJvbWlzZSwKLSAgICAgIGZ1dHVyZV9hbHJlYWR5X3JldHJpZXZlZCwKLSAgICAgIHByb21pc2VfYWxyZWFkeV9zYXRpc2ZpZWQsCi0gICAgICBub19zdGF0ZQotICB9Ci0gIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EKGZ1dHVyZV9lcnJjKQotCi1UaGVzZSBtYWNyb3MgYWxsb3dzIHRvIHVzZSAnZnV0dXJlX2VycmMnIGluIGFsbW9zdCBhbGwgdGhlIGNhc2VzIGFzIGFuIHNjb3BlZCBlbnVtLgotCi0gIGZ1dHVyZV9lcnJjIGVyciA9IGZ1dHVyZV9lcnJjOjpub19zdGF0ZTsKLQotVGhlcmUgYXJlIGhvd2V2ZXIgc29tZSBsaW1pdGF0aW9uczoKLQotKiBUaGUgdHlwZSBpcyBub3QgYSBDKysgZW51bSwgc28gJ2lzX2VudW08ZnV0dXJlX2VycmM+JyB3aWxsIGJlIGZhbHNlX3R5cGUuCi0qIFRoZSBlbXVsYXRlZCBzY29wZWQgZW51bSBjYW4gbm90IGJlIHVzZWQgaW4gc3dpdGNoIG5vciBpbiB0ZW1wbGF0ZSBhcmd1bWVudHMuIEZvciB0aGVzZSBjYXNlcyB0aGUgdXNlciBuZWVkcyB0byB1c2Ugc29tZSBtYWNyb3MuCi0KLUluc3RlYWQgb2YKLQotICAgICAgICBzd2l0Y2ggKGV2KQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgZnV0dXJlX2VycmM6OmJyb2tlbl9wcm9taXNlOgotICAvLyAuLi4KLQotdXNlCi0KLSAgICAgICAgc3dpdGNoIChuZG5ib29zdDo6bmF0aXZlX3ZhbHVlKGV2KSkKLSAgICAgICAgewotICAgICAgICBjYXNlIGZ1dHVyZV9lcnJjOjpicm9rZW5fcHJvbWlzZToKLQotQW5kIGluc3RlYWQgb2YKLQotICAgICNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBORE5CT09TVF9TWU1CT0xfVklTSUJMRSBpc19lcnJvcl9jb2RlX2VudW08ZnV0dXJlX2VycmM+IDogcHVibGljIHRydWVfdHlwZSB7IH07Ci0gICAgI2VuZGlmCi0KLXVzZQotCi0gICAgI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIGlzX2Vycm9yX2NvZGVfZW51bTxmdXR1cmVfZXJyYzo6ZW51bV90eXBlID4gOiBwdWJsaWMgdHJ1ZV90eXBlIHsgfTsKLSAgICAjZW5kaWYKLQotCi1TYW1wbGUgdXNhZ2U6Ci0KLSAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9CRUdJTihhbGdhZSwgY2hhcikgeyBncmVlbiwgcmVkLCBjeWFuIH07IE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EKGFsZ2FlKQotICAgICAuLi4KLSAgICAgYWxnYWUgc2FtcGxlKCBhbGdhZTo6cmVkICk7Ci0gICAgIHZvaWQgZm9vKCBhbGdhZSBjb2xvciApOwotICAgICAuLi4KLSAgICAgc2FtcGxlID0gYWxnYWU6OmdyZWVuOwotICAgICBmb28oIGFsZ2FlOjpjeWFuICk7Ci0KLSBMaWdodAotICBDYXV0aW9uOiBvbmx5IHRoZSBzeW50YXggaXMgZW11bGF0ZWQ7IHRoZSBzZW1hbnRpY3MgYXJlIG5vdCBlbXVsYXRlZCBhbmQKLSAgdGhlIHN5bnRheCBlbXVsYXRpb24gZG9lc24ndCBpbmNsdWRlIGJlaW5nIGFibGUgdG8gc3BlY2lmeSB0aGUgdW5kZXJseWluZwotICByZXByZXNlbnRhdGlvbiB0eXBlLgotCi0gIFRoZSBsaXRlcmFsIHNjb3BlZCBlbXVsYXRpb24gaXMgdmlhIHN0cnVjdCByYXRoZXIgdGhhbiBuYW1lc3BhY2UgdG8gYWxsb3cgdXNlIHdpdGhpbiBjbGFzc2VzLgotICBUaGFua3MgdG8gQW5kcmV5IFNlbWFzaGV2IGZvciBwb2ludGluZyB0aGF0IG91dC4KLSAgSG93ZXZlciB0aGUgdHlwZSBpcyBhbiByZWFsIEMrKzAzIGVudW0gYW5kIHNvIGNvbnZlcnRpYmxlIGltcGxpY2l0bHkgdG8gYW4gaW50LgotCi0gIFNhbXBsZSB1c2FnZToKLQotICAgICBORE5CT09TVF9TQ09QRURfRU5VTV9TVEFSVChhbGdhZSkgeyBncmVlbiwgcmVkLCBjeWFuIH07IE5ETkJPT1NUX1NDT1BFRF9FTlVNX0VORAotICAgICAuLi4KLSAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oYWxnYWUpIHNhbXBsZSggYWxnYWU6OnJlZCApOwotICAgICB2b2lkIGZvbyggTkROQk9PU1RfU0NPUEVEX0VOVU0oYWxnYWUpIGNvbG9yICk7Ci0gICAgIC4uLgotICAgICBzYW1wbGUgPSBhbGdhZTo6Z3JlZW47Ci0gICAgIGZvbyggYWxnYWU6OmN5YW4gKTsKLQotICBIZWxwZnVsIGNvbW1lbnRzIGFuZCBzdWdnZXN0aW9ucyB3ZXJlIGFsc28gbWFkZSBieSBLamVsbCBFbHN0ZXIsIFBoaWwgRW5kZWNvdHQsCi0gIEpvZWwgRmFsY291LCBNYXRoaWFzIEdhdW5hcmQsIEZlbGlwZSBNYWdubyBkZSBBbG1laWRhLCBNYXR0IENhbGFicmVzZSwgVmljZW50ZQotICBCb3RldCwgYW5kIERhbmllbCBKYW1lcy4KLQotW2VuZHNlY3RdCi0qLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU1VTEFUSU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9FTVVMQVRJT05fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLSAgLyoqCi0gICAqIE1ldGEtZnVuY3Rpb24gdG8gZ2V0IHRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgYSBzY29wZWQgZW51bS4KLSAgICoKLSAgICogUmVxdWlyZXMgRW51bVR5cGUgbXVzdCBiZSBhbiBlbnVtIHR5cGUgb3IgdGhlIGVtdWxhdGlvbiBvZiBhIHNjb3BlZCBlbnVtCi0gICAqLwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRW51bVR5cGU+Ci0gIHN0cnVjdCB1bmRlcmx5aW5nX3R5cGUKLSAgewotICAgIC8qKgotICAgICAqIFRoZSBtZW1iZXIgdHlwZWRlZiB0eXBlIG5hbWVzIHRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgRW51bVR5cGUuIEl0IGlzIEVudW1UeXBlOjp1bmRlcmx5aW5nX3R5cGUgd2hlbiB0aGUgRW51bVR5cGUgaXMgYW4gZW11bGF0ZWQgc2NvcGVkIGVudW0sCi0gICAgICogc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0eXBlIHdoZW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgc3RkOjp1bmRlcmx5aW5nX3R5cGUgaXMgcHJvdmlkZWQuCi0gICAgICoKLSAgICAgKiBUaGUgdXNlciB3aWxsIG5lZWQgdG8gc3BlY2lhbGl6ZSBpdCB3aGVuIHRoZSBjb21waWxlciBzdXBwb3J0cyBzY29wZWQgZW51bXMgYnV0IGRvbid0IHByb3ZpZGVzIHN0ZDo6dW5kZXJseWluZ190eXBlLgotICAgICAqLwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW51bVR5cGU6OnVuZGVybHlpbmdfdHlwZSB0eXBlOwotICB9OwotCi0gIC8qKgotICAgKiBNZXRhLWZ1bmN0aW9uIHRvIGdldCB0aGUgbmF0aXZlIGVudW0gdHlwZSBhc3NvY2lhdGVkIHRvIGFuIGVudW0gY2xhc3Mgb3IgaXRzIGVtdWxhdGlvbi4KLSAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgc3RydWN0IG5hdGl2ZV90eXBlCi0gIHsKLSAgICAvKioKLSAgICAgKiBUaGUgbWVtYmVyIHR5cGVkZWYgdHlwZSBuYW1lcyB0aGUgbmF0aXZlIGVudW0gdHlwZSBhc3NvY2lhdGVkIHRvIHRoZSBzY29wZWQgZW51bSwKLSAgICAgKiB3aGljaCBpcyBpdCBzZWxmIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBzY29wZWQgZW51bXMgb3IgRW51bVR5cGU6OmVudW1fdHlwZSBpZiBpdCBpcyBhbiBlbXVsYXRlZCBzY29wZWQgZW51bS4KLSAgICAgKi8KLSAgICB0eXBlZGVmIHR5cGVuYW1lIEVudW1UeXBlOjplbnVtX3R5cGUgdHlwZTsKLSAgfTsKLQotICAvKioKLSAgICogQ2FzdHMgYSBzY29wZWQgZW51bSB0byBpdHMgdW5kZXJseWluZyB0eXBlLgotICAgKgotICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHdvcmtpbmcgd2l0aCBzY29wZWQgZW51bSBjbGFzc2VzLCB3aGljaCBkb2Vucyd0IGltcGxpY2l0bHkgY29udmVydCB0byB0aGUgdW5kZXJseWluZyB0eXBlLgotICAgKiBAcGFyYW0gdiBBIHNjb3BlZCBlbnVtLgotICAgKiBAcmV0dXJucyBUaGUgdW5kZXJseWluZyB0eXBlLgotICAgKiBAdGhyb3dzIE5vLXRocm93cy4KLSAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVbmRlcmx5aW5nVHlwZSwgdHlwZW5hbWUgRW51bVR5cGU+Ci0gIFVuZGVybHlpbmdUeXBlIHVuZGVybHlpbmdfY2FzdChFbnVtVHlwZSB2KQotICB7Ci0gICAgcmV0dXJuIHYuZ2V0X3VuZGVybHlpbmdfdmFsdWVfKCk7Ci0gIH0KLQotICAvKioKLSAgICogQ2FzdHMgYSBzY29wZWQgZW51bSB0byBpdHMgbmF0aXZlIGVudW0gdHlwZS4KLSAgICoKLSAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG8gbWFrZSBwcm9ncmFtcyBwb3J0YWJsZSB3aGVuIHRoZSBzY29wZWQgZW51bSBlbXVsYXRpb24gY2FuIG5vdCBiZSB1c2Ugd2hlcmUgbmF0aXZlIGVudW1zIGNhbi4KLSAgICoKLSAgICogRW51bVR5cGUgdGhlIHNjb3BlZCBlbnVtIHR5cGUKLSAgICoKLSAgICogQHBhcmFtIHYgQSBzY29wZWQgZW51bS4KLSAgICogQHJldHVybnMgVGhlIG5hdGl2ZSBlbnVtIHZhbHVlLgotICAgKiBAdGhyb3dzIE5vLXRocm93cy4KLSAgICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgaW5saW5lCi0gIHR5cGVuYW1lIEVudW1UeXBlOjplbnVtX3R5cGUgbmF0aXZlX3ZhbHVlKEVudW1UeXBlIGUpCi0gIHsKLSAgICByZXR1cm4gZS5uYXRpdmVfdmFsdWVfKCk7Ci0gIH0KLQotI2Vsc2UgIC8vIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgc3RydWN0IHVuZGVybHlpbmdfdHlwZQotICB7Ci0gICAgLy90eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW1UeXBlPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbnVtVHlwZT4KLSAgc3RydWN0IG5hdGl2ZV90eXBlCi0gIHsKLSAgICB0eXBlZGVmIEVudW1UeXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFVuZGVybHlpbmdUeXBlLCB0eXBlbmFtZSBFbnVtVHlwZT4KLSAgVW5kZXJseWluZ1R5cGUgdW5kZXJseWluZ19jYXN0KEVudW1UeXBlIHYpCi0gIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VW5kZXJseWluZ1R5cGU+KHYpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEVudW1UeXBlPgotICBpbmxpbmUKLSAgRW51bVR5cGUgbmF0aXZlX3ZhbHVlKEVudW1UeXBlIGUpCi0gIHsKLSAgICByZXR1cm4gZTsKLSB9Ci0KLSNlbmRpZgotfQotCi0KLSNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1VUX0RFQ0xBUkVfQ09OVkVSU0lPTl9PUEVSQVRPUiBcCi0gICAgIGV4cGxpY2l0IG9wZXJhdG9yIHVuZGVybHlpbmdfdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGdldF91bmRlcmx5aW5nX3ZhbHVlXygpOyB9Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9DT05WRVJTSU9OX09QRVJBVE9SCi0KLSNlbmRpZgotCi0vKioKLSAqIFN0YXJ0IGEgZGVjbGFyYXRpb24gb2YgYSBzY29wZWQgZW51bS4KLSAqCi0gKiBAcGFyYW0gRW51bVR5cGUgVGhlIG5ldyBzY29wZWQgZW51bS4KLSAqIEBwYXJhbSBVbmRlcmx5aW5nVHlwZSBUaGUgdW5kZXJseWluZyB0eXBlLgotICovCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1VUX0RFQ0xBUkVfQkVHSU4oRW51bVR5cGUsIFVuZGVybHlpbmdUeXBlKSAgICBcCi0gICAgc3RydWN0IEVudW1UeXBlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgVW5kZXJseWluZ1R5cGUgdW5kZXJseWluZ190eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEVudW1UeXBlKCkgTkROQk9PU1RfTk9FWENFUFQge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGV4cGxpY2l0IEVudW1UeXBlKHVuZGVybHlpbmdfdHlwZSB2KSA6IHZfKHYpIHt9ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHVuZGVybHlpbmdfdHlwZSBnZXRfdW5kZXJseWluZ192YWx1ZV8oKSBjb25zdCB7IHJldHVybiB2XzsgfSAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9DT05WRVJTSU9OX09QRVJBVE9SICAgICAgICAgICAgICAgIFwKLSAgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdW5kZXJseWluZ190eXBlIHZfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZWRlZiBFbnVtVHlwZSBzZWxmX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSBlbnVtX3R5cGUKLQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0VORDIoKSBcCi0gICAgICAgIGVudW1fdHlwZSBnZXRfbmF0aXZlX3ZhbHVlXygpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZSh2Xyk7IH0gXAotICAgICAgICBvcGVyYXRvciBlbnVtX3R5cGUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBnZXRfbmF0aXZlX3ZhbHVlXygpOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPT0oc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk9PWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPT0oc2VsZl90eXBlIGxocywgZW51bV90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk9PXJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID09KGVudW1fdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGxocz09ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciAhPShzZWxmX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKSE9ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciAhPShzZWxmX3R5cGUgbGhzLCBlbnVtX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKSE9cmhzOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgIT0oZW51bV90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gbGhzIT1lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwoc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk8ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8KHNlbGZfdHlwZSBsaHMsIGVudW1fdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPHJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwoZW51bV90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gbGhzPGVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPD0oc2VsZl90eXBlIGxocywgc2VsZl90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk8PWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPD0oc2VsZl90eXBlIGxocywgZW51bV90eXBlIHJocykgTkROQk9PU1RfTk9FWENFUFQgeyByZXR1cm4gZW51bV90eXBlKGxocy52Xyk8PXJoczsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDw9KGVudW1fdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGxoczw9ZW51bV90eXBlKHJocy52Xyk7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+KHNlbGZfdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPmVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgPihzZWxmX3R5cGUgbGhzLCBlbnVtX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBlbnVtX3R5cGUobGhzLnZfKT5yaHM7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+KGVudW1fdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGxocz5lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID49KHNlbGZfdHlwZSBsaHMsIHNlbGZfdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPj1lbnVtX3R5cGUocmhzLnZfKTsgfSBcCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID49KHNlbGZfdHlwZSBsaHMsIGVudW1fdHlwZSByaHMpIE5ETkJPT1NUX05PRVhDRVBUIHsgcmV0dXJuIGVudW1fdHlwZShsaHMudl8pPj1yaHM7IH0gXAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA+PShlbnVtX3R5cGUgbGhzLCBzZWxmX3R5cGUgcmhzKSBORE5CT09TVF9OT0VYQ0VQVCB7IHJldHVybiBsaHM+PWVudW1fdHlwZShyaHMudl8pOyB9IFwKLSAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EKEVudW1UeXBlKSBcCi0gICAgOyBcCi0gICAgRW51bVR5cGUoZW51bV90eXBlIHYpIE5ETkJPT1NUX05PRVhDRVBUIDogdl8odikge30gICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9TQ09QRURfRU5VTV9ERUNMQVJFX0VORDIoKQotCi0vKioKLSAqIFN0YXJ0cyBhIGRlY2xhcmF0aW9uIG9mIGEgc2NvcGVkIGVudW0gd2l0aCB0aGUgZGVmYXVsdCBpbnQgdW5kZXJseWluZyB0eXBlLgotICoKLSAqIEBwYXJhbSBFbnVtVHlwZSBUaGUgbmV3IHNjb3BlZCBlbnVtLgotICovCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfQkVHSU4oRW51bVR5cGUpIFwKLSAgTkROQk9PU1RfU0NPUEVEX0VOVU1fVVRfREVDTEFSRV9CRUdJTihFbnVtVHlwZSxpbnQpCi0KLS8qKgotICogTmFtZSBvZiB0aGUgbmF0aXZlIGVudW0gdHlwZS4KLSAqCi0gKiBAcGFyYW0gTlQgVGhlIG5ldyBzY29wZWQgZW51bS4KLSAqLwotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9OQVRJVkUoRW51bVR5cGUpIEVudW1UeXBlOjplbnVtX3R5cGUKLS8qKgotICogRm9yd2FyZCBkZWNsYXJlcyBhbiBzY29wZWQgZW51bS4KLSAqCi0gKiBAcGFyYW0gTlQgVGhlIHNjb3BlZCBlbnVtLgotICovCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0ZPUldBUkRfREVDTEFSRShFbnVtVHlwZSkgc3RydWN0IEVudW1UeXBlCi0KLSNlbHNlICAvLyBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9VVF9ERUNMQVJFX0JFR0lOKEVudW1UeXBlLFVuZGVybHlpbmdUeXBlKSBlbnVtIGNsYXNzIEVudW1UeXBlOlVuZGVybHlpbmdUeXBlCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfQkVHSU4oRW51bVR5cGUpIGVudW0gY2xhc3MgRW51bVR5cGUKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQyKCkKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fREVDTEFSRV9FTkQoRW51bVR5cGUpIDsKLQotI2RlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9OQVRJVkUoRW51bVR5cGUpIEVudW1UeXBlCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0ZPUldBUkRfREVDTEFSRShFbnVtVHlwZSkgZW51bSBjbGFzcyBFbnVtVHlwZQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX05PX0NYWDExX1NDT1BFRF9FTlVNUwotCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKG5hbWUpIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfQkVHSU4obmFtZSkKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU5EIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0RFQ0xBUkVfRU5EMigpCi0jZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNKG5hbWUpIE5ETkJPT1NUX1NDT1BFRF9FTlVNX05BVElWRShuYW1lKQotCi0vLyNpZmRlZiBORE5CT09TVF9OT19DWFgxMV9TQ09QRURfRU5VTVMKLS8vCi0vLyMgZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKG5hbWUpIHN0cnVjdCBuYW1lIHsgZW51bSBlbnVtX3R5cGUKLS8vIyBkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU5EIH07Ci0vLyMgZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNKG5hbWUpIG5hbWU6OmVudW1fdHlwZQotLy8KLS8vI2Vsc2UKLS8vCi0vLyMgZGVmaW5lIE5ETkJPT1NUX1NDT1BFRF9FTlVNX1NUQVJUKG5hbWUpIGVudW0gY2xhc3MgbmFtZQotLy8jIGRlZmluZSBORE5CT09TVF9TQ09QRURfRU5VTV9FTkQKLS8vIyBkZWZpbmUgTkROQk9PU1RfU0NPUEVEX0VOVU0obmFtZSkgbmFtZQotLy8KLS8vI2VuZGlmCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NDT1BFRF9FTlVNX0VNVUxBVElPTl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkNjNhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfU1BfVFlQRUlORk9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUF9UWVBFSU5GT19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfdHlwZWluZm8uaHBwCi0vLwotLy8gIENvcHlyaWdodCAyMDA3IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fVFlQRUlEICkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2N1cnJlbnRfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwX3R5cGVpbmZvCi17Ci1wcml2YXRlOgotCi0gICAgc3BfdHlwZWluZm8oIHNwX3R5cGVpbmZvIGNvbnN0JiApOwotICAgIHNwX3R5cGVpbmZvJiBvcGVyYXRvcj0oIHNwX3R5cGVpbmZvIGNvbnN0JiApOwotCi0gICAgY2hhciBjb25zdCAqIG5hbWVfOwotCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBzcF90eXBlaW5mbyggY2hhciBjb25zdCAqIG5hbWUgKTogbmFtZV8oIG5hbWUgKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oIHNwX3R5cGVpbmZvIGNvbnN0JiByaHMgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMgPT0gJnJoczsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oIHNwX3R5cGVpbmZvIGNvbnN0JiByaHMgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMgIT0gJnJoczsKLSAgICB9Ci0KLSAgICBib29sIGJlZm9yZSggc3BfdHlwZWluZm8gY29uc3QmIHJocyApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpsZXNzPCBzcF90eXBlaW5mbyBjb25zdCogPigpKCB0aGlzLCAmcmhzICk7Ci0gICAgfQotCi0gICAgY2hhciBjb25zdCogbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbmFtZV87Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNwX3R5cGVpZF8KLXsKLSAgICBzdGF0aWMgc3BfdHlwZWluZm8gdGlfOwotCi0gICAgc3RhdGljIGNoYXIgY29uc3QgKiBuYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OOwotICAgIH0KLX07Ci0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQotLy8gc2VlICM0MTk5LCB0aGUgU3VuIFN0dWRpbyBjb21waWxlciBnZXRzIGNvbmZ1c2VkIGFib3V0IHN0YXRpYyBpbml0aWFsaXphdGlvbiAKLS8vIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4gQnV0IGFuIGFzc2lnbm1lbnQgd29ya3MganVzdCBmaW5lLiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHNwX3R5cGVpbmZvIHNwX3R5cGVpZF88IFQgPjo6dGlfID0gc3BfdHlwZWlkXzwgVCA+OjpuYW1lKCk7Ci0jZWxzZQotdGVtcGxhdGU8Y2xhc3MgVD4gc3BfdHlwZWluZm8gc3BfdHlwZWlkXzwgVCA+Ojp0aV8oc3BfdHlwZWlkXzwgVCA+OjpuYW1lKCkpOwotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzcF90eXBlaWRfPCBUICYgPjogc3BfdHlwZWlkXzwgVCA+Ci17Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc3BfdHlwZWlkXzwgVCBjb25zdCA+OiBzcF90eXBlaWRfPCBUID4KLXsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzcF90eXBlaWRfPCBUIHZvbGF0aWxlID46IHNwX3R5cGVpZF88IFQgPgotewotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNwX3R5cGVpZF88IFQgY29uc3Qgdm9sYXRpbGUgPjogc3BfdHlwZWlkXzwgVCA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9TUF9UWVBFSUQoVCkgKG5kbmJvb3N0OjpkZXRhaWw6OnNwX3R5cGVpZF88VD46OnRpXykKLQotI2Vsc2UKLQotI2luY2x1ZGUgPHR5cGVpbmZvPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPICkKLQotdHlwZWRlZiA6OnR5cGVfaW5mbyBzcF90eXBlaW5mbzsKLQotI2Vsc2UKLQotdHlwZWRlZiBzdGQ6OnR5cGVfaW5mbyBzcF90eXBlaW5mbzsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX1NQX1RZUEVJRChUKSB0eXBlaWQoVCkKLQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfU1BfVFlQRUlORk9fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkOTEzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwMSBSb25hbGQgR2FyY2lhLCBJbmRpYW5hIFVuaXZlcnNpdHkgKGdhcmNpYUBvc2wuaXUuZWR1KQotLy8gQW5kcmV3IEx1bXNkYWluZSwgSW5kaWFuYSBVbml2ZXJzaXR5IChsdW1zQG9zbC5pdS5lZHUpLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueS0KLS8vIGluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVEY4X0NPREVDVlRfRkFDRVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VURjhfQ09ERUNWVF9GQUNFVF9IUFAKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLy8vLy8vLy8xLy8vLy8vLy8vMi8vLy8vLy8vLzMvLy8vLy8vLy80Ly8vLy8vLy8vNS8vLy8vLy8vLzYvLy8vLy8vLy83Ly8vLy8vLy8vOAotLy8gdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcAotCi0vLyBUaGlzIGhlYWRlciBkZWZpbmVzIGNsYXNzIHV0ZjhfY29kZWN2dF9mYWNldCwgZGVyaXZlZCBmcm8gCi0vLyBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhcj4sIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgdXRmOCBkYXRhIGluCi0vLyBmaWxlcyBpbnRvIHdjaGFyX3Qgc3RyaW5ncyBpbiB0aGUgYXBwbGljYXRpb24uCi0vLwotLy8gVGhlIGhlYWRlciBpcyBOT1QgU1RBTkRBTE9ORSwgYW5kIGlzIG5vdCB0byBiZSBpbmNsdWRlZCBieSB0aGUgVVNFUi4KLS8vIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gbGlicmFyaWVzIHdoaWNoIHdhbnQgdG8gdXNlIHRoaXMgZnVuY3Rpb25hbGl0eSwgYW5kCi0vLyB3ZSB3YW50IHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uIEl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSB1dGY4Ci0vLyBsaWJyYXJ5LCBidXQ6Ci0vLyAtIHRoaXMgcmVxdWlyZXMgcmV2aWV3IHByb2Nlc3MgZmlyc3QKLS8vIC0gaW4gdGhlIGNhc2UsIHdoZW4gbGlua2luZyB0aGUgYSBsaWJyYXJ5IHdoaWNoIHVzZXMgdXRmOCAKLS8vICAgKHNheSAncHJvZ3JhbV9vcHRpb25zJyksIHVzZXIgc2hvdWxkIGFsc28gbGluayB0byB0aGUgdXRmOCBsaWJyYXJ5LgotLy8gICBUaGlzIHNlZW1zIGluY29udmVuaWVudCwgYW5kIGFza2luZyBhIHVzZXIgdG8gbGluayB0byBhbiB1bnJldmlldmVkIAotLy8gICBsaWJyYXJ5IGlzIHN0cmFuZ2UuIAotLy8gVW50aWwgdGhlIGFib3ZlIHBvaW50cyBhcmUgZml4ZWQsIGEgbGlicmFyeSB3aGljaCB3YW50cyB0byB1c2UgdXRmOCBtdXN0OgotLy8gLSBpbmNsdWRlIHRoaXMgaGVhZGVyIGZyb20gb25lIG9mIGl0J3MgaGVhZGVycyBvciBzb3VyY2VzCi0vLyAtIGluY2x1ZGUgdGhlIGNvcnJlc3BvbmRpbmcgLmNwcCBmaWxlIGZyb20gb25lIG9mIHRoZSBzb3VyY2VzCi0vLyAtIGJlZm9yZSBpbmNsdWRpbmcgZWl0aGVyIGZpbGUsIHRoZSBsaWJyYXJ5IG11c3QgZGVmaW5lCi0vLyAgIC0gTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UgdG8gdGhlIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiB0aGF0IG11c3QgYmUgdXNlZAotLy8gICAtIE5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRSB0byB0aGUgY29kZSB0byBjbG9zZSB0aGUgcHJldmlvdXMgbmFtZXNwYWNlCi0vLyAgIC0gZGVjbGFyYXRpb24uCi0vLyAgIC0gTkROQk9PU1RfVVRGOF9ERUNMIC0tIHRvIHRoZSBjb2RlIHdoaWNoIG11c3QgYmUgdXNlZCBmb3IgYWxsICdleHBvcnRhYmxlJwotLy8gICAgIHN5bWJvbHMuCi0vLwotLy8gRm9yIGV4YW1wbGUsIHByb2dyYW1fb3B0aW9ucyBsaWJyYXJ5IG1pZ2h0IGNvbnRhaW46Ci0vLyAgICAjZGVmaW5lIE5ETkJPT1NUX1VURjhfQkVHSU5fTkFNRVNQQUNFIDxiYWNrc2xhc2ggY2hhcmFjdGVyPiAKLS8vICAgICAgICAgICAgIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBwcm9ncmFtX29wdGlvbnMgewotLy8gICAgI2RlZmluZSBORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UgfX0KLS8vICAgICNkZWZpbmUgTkROQk9PU1RfVVRGOF9ERUNMIE5ETkJPT1NUX1BST0dSQU1fT1BUSU9OU19ERUNMCi0vLyAgICAjaW5jbHVkZSAiLi4vLi4vZGV0YWlsL3V0ZjgvdXRmOF9jb2RlY3Z0LmNwcCIKLS8vCi0vLyBFc3NlbnRpYWxseSwgZWFjaCBsaWJyYXJ5IHdpbGwgaGF2ZSBpdHMgb3duIGNvcHkgb2YgdXRmOCBjb2RlLCBpbgotLy8gZGlmZmVyZW50IG5hbWVzcGFjZXMuIAotCi0vLyBOb3RlOihSb2JlcnQgUmFtZXkpLiAgSSBoYXZlIG1hZGUgdGhlIGZvbGxvd2luZyBhbHRlcmF0aW9ucyBpbiB0aGUgb3JpZ2luYWwKLS8vIGNvZGUuCi0vLyBhKSBSZW5kZXJlZCB1dGY4X2NvZGVjdnQ8d2NoYXJfdCwgY2hhcj4gIHdpdGggdXNpbmcgdGVtcGxhdGVzCi0vLyBiKSBNb3ZlIGxvbmdlciBmdW5jdGlvbnMgb3V0c2lkZSBjbGFzcyBkZWZpbml0aW9uIHRvIHByZXZlbnQgaW5saW5pbmcKLS8vIGFuZCBtYWtlIGNvZGUgc21hbGxlcgotLy8gYykgYWRkZWQgb24gYSBkZXJpdmVkIGNsYXNzIHRvIHBlcm1pdCB0cmFuc2xhdGlvbiB0by9mcm9tIGN1cnJlbnQKLS8vIGxvY2FsZSB0byB1dGY4Ci0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LgotCi0vLyBhcmNoaXZlcyBzdG9yZWQgYXMgdGV4dCAtIG5vdGUgdGhlc2UgYXIgdGVtcGxhdGVkIG9uIHRoZSBiYXNpYwotLy8gc3RyZWFtIHRlbXBsYXRlcyB0byBhY2NvbW1vZGF0ZSB3aWRlIChhbmQgb3RoZXI/KSBraW5kIG9mIGNoYXJhY3RlcnMKLS8vCi0vLyBub3RlIHRoZSBmYWN0IHRoYXQgb24gbGlicmFyaWVzIHdpdGhvdXQgd2lkZSBjaGFyYWN0ZXJzLCBvc3RyZWFtIGlzCi0vLyBpcyBub3QgYSBzcGVjaWFsaXphdGlvbiBvZiBiYXNpY19vc3RyZWFtIHdoaWNoIGluIGZhY3QgaXMgbm90IGRlZmluZWQKLS8vIGluIHN1Y2ggY2FzZXMuICAgU28gd2UgY2FuJ3QgdXNlIGJhc2ljX29zdHJlYW08T1N0cmVhbTo6Y2hhcl90eXBlPiBidXQgcmF0aGVyCi0vLyB1c2UgdHdvIHRlbXBsYXRlIHBhcmFtZXRlcnMKLS8vCi0vLyB1dGY4X2NvZGVjdnRfZmFjZXQKLS8vICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIHN0ZDo6Y29kZWN2dCBmYWNldCBmb3IgdHJhbnNsYXRpbmcgCi0vLyAgIGZyb20gVVRGLTggZXh0ZXJuYWxseSB0byBVQ1MtNC4gIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCB0aWVkIHRvCi0vLyAgIGFueSBzcGVjaWZpYyB0eXBlcyBpbiBvcmRlciB0byBhbGxvdyBjdXN0b21pemF0aW9uIG9uIHBsYXRmb3JtcwotLy8gICB3aGVyZSB3Y2hhcl90IGlzIG5vdCBiaWcgZW5vdWdoLgotLy8KLS8vIE5PVEVTOiAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24ganVtcHMgdGhyb3VnaCBzb21lIHVucGxlYXNhbnQgaG9vcHMgaW4KLS8vIG9yZGVyIHRvIGRlYWwgd2l0aCBzaWduZWQgY2hhcmFjdGVyIHR5cGVzLiAgQXMgYSBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0LAotLy8gaXQgaXMgbmVjZXNzYXJ5ICBmb3IgdGhlIEV4dGVyblR5cGUgdG8gYmUgY29udmVydGlibGUgdG8gdW5zaWduZWQgIGNoYXIuCi0vLyBJIGNob3NlIG5vdCB0byB0aWUgdGhlIGV4dGVybl90eXBlIGV4cGxpY2l0bHkgdG8gY2hhci4gQnV0IGlmIGFueSBjb21iaW5hdGlvbgotLy8gb2YgdHlwZXMgb3RoZXIgdGhhbiA8d2NoYXJfdCxjaGFyX3Q+IGlzIHVzZWQsIHRoZW4gc3RkOjpjb2RlY3Z0IG11c3QgYmUKLS8vIHNwZWNpYWxpemVkIG9uIHRob3NlIHR5cGVzIGZvciB0aGlzIHRvIHdvcmsuCi0KLSNpbmNsdWRlIDxsb2NhbGU+Ci0jaW5jbHVkZSA8Y3djaGFyPiAgIC8vIGZvciBtYnN0YXRlX3QKLSNpbmNsdWRlIDxjc3RkZGVmPiAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi1uYW1lc3BhY2Ugc3RkIHsKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSAgICB1c2luZyA6OnNpemVfdDsKLX0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoX19NU0xfQ1BQX18pICYmICFkZWZpbmVkKF9fTElCQ09NT19fKQotICAgICNkZWZpbmUgTkROQk9PU1RfQ09ERUNWVF9ET19MRU5HVEhfQ09OU1QgY29uc3QKLSNlbHNlCi0gICAgI2RlZmluZSBORE5CT09TVF9DT0RFQ1ZUX0RPX0xFTkdUSF9DT05TVAotI2VuZGlmCi0KLS8vIG1heGltdW0gbGVuZ2h0IG9mIGEgbXVsdGlieXRlIHN0cmluZwotI2RlZmluZSBNQl9MRU5HVEhfTUFYIDgKLQotTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UKLQotc3RydWN0IE5ETkJPT1NUX1VURjhfREVDTCB1dGY4X2NvZGVjdnRfZmFjZXQgOgotICAgIHB1YmxpYyBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgc3RkOjptYnN0YXRlX3Q+ICAKLXsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCB1dGY4X2NvZGVjdnRfZmFjZXQoc3RkOjpzaXplX3Qgbm9fbG9jYWxlX21hbmFnZT0wKQotICAgICAgICA6IHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGQ6Om1ic3RhdGVfdD4obm9fbG9jYWxlX21hbmFnZSkgCi0gICAge30KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgZG9faW4oCi0gICAgICAgIHN0ZDo6bWJzdGF0ZV90JiBzdGF0ZSwgCi0gICAgICAgIGNvbnN0IGNoYXIgKiBmcm9tLAotICAgICAgICBjb25zdCBjaGFyICogZnJvbV9lbmQsIAotICAgICAgICBjb25zdCBjaGFyICogJiBmcm9tX25leHQsCi0gICAgICAgIHdjaGFyX3QgKiB0bywgCi0gICAgICAgIHdjaGFyX3QgKiB0b19lbmQsIAotICAgICAgICB3Y2hhcl90KiYgdG9fbmV4dAotICAgICkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgZG9fb3V0KAotICAgICAgICBzdGQ6Om1ic3RhdGVfdCAmIHN0YXRlLCBjb25zdCB3Y2hhcl90ICogZnJvbSwKLSAgICAgICAgY29uc3Qgd2NoYXJfdCAqIGZyb21fZW5kLCBjb25zdCB3Y2hhcl90KiAgJiBmcm9tX25leHQsCi0gICAgICAgIGNoYXIgKiB0bywgY2hhciAqIHRvX2VuZCwgY2hhciAqICYgdG9fbmV4dAotICAgICkgY29uc3Q7Ci0KLSAgICBib29sIGludmFsaWRfY29udGludWluZ19vY3RldCh1bnNpZ25lZCBjaGFyIG9jdGV0XzEpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIChvY3RldF8xIDwgMHg4MHx8IDB4YmY8IG9jdGV0XzEpOwotICAgIH0KLQotICAgIGJvb2wgaW52YWxpZF9sZWFkaW5nX29jdGV0KHVuc2lnbmVkIGNoYXIgb2N0ZXRfMSkgICBjb25zdCB7Ci0gICAgICAgIHJldHVybiAoMHg3ZiA8IG9jdGV0XzEgJiYgb2N0ZXRfMSA8IDB4YzApIHx8Ci0gICAgICAgICAgICAob2N0ZXRfMSA+IDB4ZmQpOwotICAgIH0KLQotICAgIC8vIGNvbnRpbnVpbmcgb2N0ZXRzID0gb2N0ZXRzIGV4Y2VwdCBmb3IgdGhlIGxlYWRpbmcgb2N0ZXQKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9jb250X29jdGV0X2NvdW50KHVuc2lnbmVkICAgY2hhciBsZWFkX29jdGV0KSB7Ci0gICAgICAgIHJldHVybiBnZXRfb2N0ZXRfY291bnQobGVhZF9vY3RldCkgLSAxOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X29jdGV0X2NvdW50KHVuc2lnbmVkIGNoYXIgICBsZWFkX29jdGV0KTsKLQotICAgIC8vIEhvdyBtYW55ICJjb250aW51aW5nIG9jdGV0cyIgd2lsbCBiZSBuZWVkZWQgZm9yIHRoaXMgd29yZAotICAgIC8vID09ICAgdG90YWwgb2N0ZXRzIC0gMS4KLSAgICBpbnQgZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50KHdjaGFyX3Qgd29yZCkgY29uc3QgOwotCi0gICAgdmlydHVhbCBib29sIGRvX2Fsd2F5c19ub2NvbnYoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAvLyBVVEYtOCBpc24ndCByZWFsbHkgc3RhdGVmdWwgc2luY2Ugd2UgcmV3aW5kIG9uIHBhcnRpYWwgY29udmVyc2lvbnMKLSAgICB2aXJ0dWFsIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgZG9fdW5zaGlmdCgKLSAgICAgICAgc3RkOjptYnN0YXRlX3QmLAotICAgICAgICBjaGFyICogZnJvbSwKLSAgICAgICAgY2hhciAqIC8qdG8qLywKLSAgICAgICAgY2hhciAqICYgbmV4dAotICAgICkgY29uc3QgCi0gICAgewotICAgICAgICBuZXh0ID0gZnJvbTsKLSAgICAgICAgcmV0dXJuIG9rOwotICAgIH0KLQotICAgIHZpcnR1YWwgaW50IGRvX2VuY29kaW5nKCkgY29uc3QgdGhyb3coKSB7Ci0gICAgICAgIGNvbnN0IGludCB2YXJpYWJsZV9ieXRlX2V4dGVybmFsX2VuY29kaW5nPTA7Ci0gICAgICAgIHJldHVybiB2YXJpYWJsZV9ieXRlX2V4dGVybmFsX2VuY29kaW5nOwotICAgIH0KLQotICAgIC8vIEhvdyBtYW55IGNoYXIgb2JqZWN0cyBjYW4gSSBwcm9jZXNzIHRvIGdldCA8PSBtYXhfbGltaXQKLSAgICAvLyB3Y2hhcl90IG9iamVjdHM/Ci0gICAgdmlydHVhbCBpbnQgZG9fbGVuZ3RoKAotICAgICAgICBORE5CT09TVF9DT0RFQ1ZUX0RPX0xFTkdUSF9DT05TVCBzdGQ6Om1ic3RhdGVfdCAmLAotICAgICAgICBjb25zdCBjaGFyICogZnJvbSwKLSAgICAgICAgY29uc3QgY2hhciAqIGZyb21fZW5kLCAKLSAgICAgICAgc3RkOjpzaXplX3QgbWF4X2xpbWl0Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSAgICAgICAgKSBjb25zdCB0aHJvdygpOwotI2Vsc2UKLSAgICAgICAgKSBjb25zdDsKLSNlbmRpZgotCi0gICAgLy8gTGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBkb19sZW5ndGgoc3RhdGUsZnJvbSxmcm9tX2VuZCwxKSBjb3VsZCByZXR1cm4uCi0gICAgdmlydHVhbCBpbnQgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93ICgpIHsKLSAgICAgICAgcmV0dXJuIDY7IC8vIGxhcmdlc3QgVVRGLTggZW5jb2Rpbmcgb2YgYSBVQ1MtNCBjaGFyYWN0ZXIKLSAgICB9Ci19OwotCi1ORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VURjhfQ09ERUNWVF9GQUNFVF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGU4OTNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAotLy8vLy8vLy8vMS8vLy8vLy8vLzIvLy8vLy8vLy8zLy8vLy8vLy8vNC8vLy8vLy8vLzUvLy8vLy8vLy82Ly8vLy8vLy8vNy8vLy8vLy8vLzgKLS8vIHV0ZjhfY29kZWN2dF9mYWNldC5pcHAKLQotLy8gQ29weXJpZ2h0IChjKSAyMDAxIFJvbmFsZCBHYXJjaWEsIEluZGlhbmEgVW5pdmVyc2l0eSAoZ2FyY2lhQG9zbC5pdS5lZHUpCi0vLyBBbmRyZXcgTHVtc2RhaW5lLCBJbmRpYW5hIFVuaXZlcnNpdHkgKGx1bXNAb3NsLml1LmVkdSkuIAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gUGxlYXNlIHNlZSB0aGUgY29tbWVudHMgaW4gPG5kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwPiB0bwotLy8gbGVhcm4gaG93IHRoaXMgZmlsZSBzaG91bGQgYmUgdXNlZC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGxpYj4gLy8gZm9yIG11bHRpLWJ5dGUgY29udmVyc29uIHJvdXRpbmVzCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gSWYgd2UgZG9uJ3QgaGF2ZSB3c3RyaW5nLCB0aGVuIFVuaWNvZGUgc3VwcG9ydCAKLS8vIGlzIG5vdCBhdmFpbGFibGUgYW55d2F5LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGV2ZW4KLS8vIGNvbXBpbGVyIHRoaXMgZmlsZS4gVGhpcyBhbHNvIGZpeGVzIHRoZSBwcm9ibGVtCi0vLyB3aXRoIG1pbmd3LCB3aGljaCBjYW4gY29tcGlsZSB0aGlzIGZpbGUsIGJ1dCB3aWxsCi0vLyBnZW5lcmF0ZSBsaW5rIGVycm9yIHdoZW4gYnVpbGRpbmcgRExMLgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotCi1ORE5CT09TVF9VVEY4X0JFR0lOX05BTUVTUEFDRQotCi0vLy8vLy8vLy8xLy8vLy8vLy8vMi8vLy8vLy8vLzMvLy8vLy8vLy80Ly8vLy8vLy8vNS8vLy8vLy8vLzYvLy8vLy8vLy83Ly8vLy8vLy8vOAotLy8gaW1wbGVtZW50YXRpb24gZm9yIHdjaGFyX3QKLQotLy8gVHJhbnNsYXRlIGluY29taW5nIFVURi04IGludG8gVUNTLTQKLXN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgdXRmOF9jb2RlY3Z0X2ZhY2V0Ojpkb19pbigKLSAgICBzdGQ6Om1ic3RhdGVfdCYgLypzdGF0ZSovLCAKLSAgICBjb25zdCBjaGFyICogZnJvbSwKLSAgICBjb25zdCBjaGFyICogZnJvbV9lbmQsIAotICAgIGNvbnN0IGNoYXIgKiAmIGZyb21fbmV4dCwKLSAgICB3Y2hhcl90ICogdG8sIAotICAgIHdjaGFyX3QgKiB0b19lbmQsIAotICAgIHdjaGFyX3QgKiAmIHRvX25leHQKLSkgY29uc3QgewotICAgIC8vIEJhc2ljIGFsZ29yaXRobTogIFRoZSBmaXJzdCBvY3RldCBkZXRlcm1pbmVzIGhvdyBtYW55Ci0gICAgLy8gb2N0ZXRzIHRvdGFsIG1ha2UgdXAgdGhlIFVDUy00IGNoYXJhY3Rlci4gIFRoZSByZW1haW5pbmcKLSAgICAvLyAiY29udGludWluZyBvY3RldHMiIGFsbCBiZWdpbiB3aXRoICIxMCIuIFRvIGNvbnZlcnQsIHN1YnRyYWN0Ci0gICAgLy8gdGhlIGFtb3VudCB0aGF0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG9jdGV0cyBmcm9tIHRoZSBmaXJzdAotICAgIC8vIG9jdGV0LiAgU3VidHJhY3QgMHg4MCAoMTAwMCAwMDAwKSBmcm9tIGVhY2ggY29udGludWluZyBvY3RldCwKLSAgICAvLyB0aGVuIG1hc2ggdGhlIHdob2xlIGxvdCB0b2dldGhlci4gIE5vdGUgdGhhdCBlYWNoIGNvbnRpbnVpbmcKLSAgICAvLyBvY3RldCBvbmx5IHVzZXMgNiBiaXRzIGFzIHVuaXF1ZSB2YWx1ZXMsIHNvIG9ubHkgc2hpZnQgYnkKLSAgICAvLyBtdWx0aXBsZXMgb2YgNiB0byBjb21iaW5lLgotICAgIHdoaWxlIChmcm9tICE9IGZyb21fZW5kICYmIHRvICE9IHRvX2VuZCkgewotCi0gICAgICAgIC8vIEVycm9yIGNoZWNraW5nICAgb24gdGhlIGZpcnN0IG9jdGV0Ci0gICAgICAgIGlmIChpbnZhbGlkX2xlYWRpbmdfb2N0ZXQoKmZyb20pKXsKLSAgICAgICAgICAgIGZyb21fbmV4dCA9IGZyb207Ci0gICAgICAgICAgICB0b19uZXh0ID0gdG87Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6OmVycm9yOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIGZpcnN0IG9jdGV0IGlzICAgYWRqdXN0ZWQgYnkgYSB2YWx1ZSBkZXBlbmRlbnQgdXBvbiAKLSAgICAgICAgLy8gdGhlIG51bWJlciAgIG9mICJjb250aW51aW5nIG9jdGV0cyIgZW5jb2RpbmcgdGhlIGNoYXJhY3RlcgotICAgICAgICBjb25zdCAgIGludCBjb250X29jdGV0X2NvdW50ID0gZ2V0X2NvbnRfb2N0ZXRfY291bnQoKmZyb20pOwotICAgICAgICBjb25zdCAgIHdjaGFyX3Qgb2N0ZXQxX21vZGlmaWVyX3RhYmxlW10gPSAgIHsKLSAgICAgICAgICAgIDB4MDAsIDB4YzAsIDB4ZTAsIDB4ZjAsIDB4ZjgsIDB4ZmMKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBUaGUgdW5zaWduZWQgY2hhciBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeSBpbiBjYXNlIGNoYXIgaXMKLSAgICAgICAgLy8gc2lnbmVkICAgKEkgbGVhcm5lZCB0aGlzIHRoZSBoYXJkIHdheSkKLSAgICAgICAgd2NoYXJfdCB1Y3NfcmVzdWx0ID0gCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcikoKmZyb20rKykgLSBvY3RldDFfbW9kaWZpZXJfdGFibGVbY29udF9vY3RldF9jb3VudF07Ci0KLSAgICAgICAgLy8gSW52YXJpYW50cyAgIDogCi0gICAgICAgIC8vICAgMSkgQXQgdGhlIHN0YXJ0IG9mIHRoZSBsb29wLCAgICdpJyBjb250aW51aW5nIGNoYXJhY3RlcnMgaGF2ZSBiZWVuCi0gICAgICAgIC8vICAgIHByb2Nlc3NlZCAKLSAgICAgICAgLy8gICAyKSAqZnJvbSAgIHBvaW50cyB0byB0aGUgbmV4dCBjb250aW51aW5nIGNoYXJhY3RlciB0byBiZSBwcm9jZXNzZWQuCi0gICAgICAgIGludCBpICAgPSAwOwotICAgICAgICB3aGlsZShpICE9IGNvbnRfb2N0ZXRfY291bnQgJiYgZnJvbSAhPSBmcm9tX2VuZCkgewotCi0gICAgICAgICAgICAvLyBFcnJvciBjaGVja2luZyBvbiBjb250aW51aW5nIGNoYXJhY3RlcnMKLSAgICAgICAgICAgIGlmIChpbnZhbGlkX2NvbnRpbnVpbmdfb2N0ZXQoKmZyb20pKSB7Ci0gICAgICAgICAgICAgICAgZnJvbV9uZXh0ICAgPSBmcm9tOwotICAgICAgICAgICAgICAgIHRvX25leHQgPSAgIHRvOwotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6ZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHVjc19yZXN1bHQgKj0gKDEgPDwgNik7IAotCi0gICAgICAgICAgICAvLyBlYWNoIGNvbnRpbnVpbmcgY2hhcmFjdGVyIGhhcyBhbiBleHRyYSAoMTB4eHh4eHgpYiBhdHRhY2hlZCB0byAKLSAgICAgICAgICAgIC8vIGl0IHRoYXQgbXVzdCBiZSByZW1vdmVkLgotICAgICAgICAgICAgdWNzX3Jlc3VsdCArPSAodW5zaWduZWQgY2hhcikoKmZyb20rKykgLSAweDgwOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgICB0aGUgYnVmZmVyIGVuZHMgd2l0aCBhbiBpbmNvbXBsZXRlIHVuaWNvZGUgY2hhcmFjdGVyLi4uCi0gICAgICAgIGlmIChmcm9tID09IGZyb21fZW5kICYmIGkgICAhPSBjb250X29jdGV0X2NvdW50KSB7Ci0gICAgICAgICAgICAvLyByZXdpbmQgImZyb20iIHRvIGJlZm9yZSB0aGUgY3VycmVudCBjaGFyYWN0ZXIgdHJhbnNsYXRpb24KLSAgICAgICAgICAgIGZyb21fbmV4dCA9IGZyb20gLSAoaSsxKTsgCi0gICAgICAgICAgICB0b19uZXh0ID0gdG87Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6OnBhcnRpYWw7Ci0gICAgICAgIH0KLSAgICAgICAgKnRvKysgICA9IHVjc19yZXN1bHQ7Ci0gICAgfQotICAgIGZyb21fbmV4dCA9IGZyb207Ci0gICAgdG9fbmV4dCA9IHRvOwotCi0gICAgLy8gV2VyZSB3ZSBkb25lIGNvbnZlcnRpbmcgb3IgZGlkIHdlIHJ1biBvdXQgb2YgZGVzdGluYXRpb24gc3BhY2U/Ci0gICAgaWYoZnJvbSA9PSBmcm9tX2VuZCkgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpvazsKLSAgICBlbHNlIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDsKLX0KLQotc3RkOjpjb2RlY3Z0X2Jhc2U6OnJlc3VsdCB1dGY4X2NvZGVjdnRfZmFjZXQ6OmRvX291dCgKLSAgICBzdGQ6Om1ic3RhdGVfdCYgLypzdGF0ZSovLCAKLSAgICBjb25zdCB3Y2hhcl90ICogICBmcm9tLAotICAgIGNvbnN0IHdjaGFyX3QgKiBmcm9tX2VuZCwgCi0gICAgY29uc3Qgd2NoYXJfdCAqICYgZnJvbV9uZXh0LAotICAgIGNoYXIgKiB0bywgCi0gICAgY2hhciAqIHRvX2VuZCwgCi0gICAgY2hhciAqICYgdG9fbmV4dAotKSBjb25zdAotewotICAgIC8vIFJHIC0gY29uc2lkZXIgbWVyZ2luZyB0aGlzIHRhYmxlIHdpdGggdGhlIG90aGVyIG9uZQotICAgIGNvbnN0IHdjaGFyX3Qgb2N0ZXQxX21vZGlmaWVyX3RhYmxlW10gPSB7Ci0gICAgICAgIDB4MDAsIDB4YzAsIDB4ZTAsIDB4ZjAsIDB4ZjgsIDB4ZmMKLSAgICB9OwotCi0gICAgd2NoYXJfdCBtYXhfd2NoYXIgPSAoc3RkOjpudW1lcmljX2xpbWl0czx3Y2hhcl90Pjo6bWF4KSgpOwotICAgIHdoaWxlIChmcm9tICE9IGZyb21fZW5kICYmIHRvICE9IHRvX2VuZCkgewotCi0gICAgICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIFVDUy00IGNoYXJhY3RlcgotICAgICAgICBpZiAoKmZyb20gID4gbWF4X3djaGFyKSB7Ci0gICAgICAgICAgICBmcm9tX25leHQgPSBmcm9tOwotICAgICAgICAgICAgdG9fbmV4dCA9IHRvOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjplcnJvcjsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBjb250X29jdGV0X2NvdW50ID0gZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50KCpmcm9tKTsKLQotICAgICAgICAvLyBSRyAgLSBjb21tZW50IHRoaXMgZm9ybXVsYSBiZXR0ZXIKLSAgICAgICAgaW50IHNoaWZ0X2V4cG9uZW50ID0gKGNvbnRfb2N0ZXRfY291bnQpICogICA2OwotCi0gICAgICAgIC8vIFByb2Nlc3MgdGhlIGZpcnN0IGNoYXJhY3RlcgotICAgICAgICAqdG8rKyA9IHN0YXRpY19jYXN0PGNoYXI+KG9jdGV0MV9tb2RpZmllcl90YWJsZVtjb250X29jdGV0X2NvdW50XSArCi0gICAgICAgICAgICAodW5zaWduZWQgY2hhcikoKmZyb20gLyAoMSA8PCBzaGlmdF9leHBvbmVudCkpKTsKLQotICAgICAgICAvLyBQcm9jZXNzIHRoZSBjb250aW51YXRpb24gY2hhcmFjdGVycyAKLSAgICAgICAgLy8gSW52YXJpYW50czogQXQgICB0aGUgc3RhcnQgb2YgdGhlIGxvb3A6Ci0gICAgICAgIC8vICAgMSkgJ2knIGNvbnRpbnVpbmcgb2N0ZXRzICAgaGF2ZSBiZWVuIGdlbmVyYXRlZAotICAgICAgICAvLyAgIDIpICcqdG8nICAgcG9pbnRzIHRvIHRoZSBuZXh0IGxvY2F0aW9uIHRvIHBsYWNlIGFuIG9jdGV0Ci0gICAgICAgIC8vICAgMykgc2hpZnRfZXhwb25lbnQgaXMgICA2IG1vcmUgdGhhbiBuZWVkZWQgZm9yIHRoZSBuZXh0IG9jdGV0Ci0gICAgICAgIGludCBpICAgPSAwOwotICAgICAgICB3aGlsZSAgIChpICE9IGNvbnRfb2N0ZXRfY291bnQgJiYgdG8gIT0gdG9fZW5kKSB7Ci0gICAgICAgICAgICBzaGlmdF9leHBvbmVudCAtPSA2OwotICAgICAgICAgICAgKnRvKysgPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwICsgKCgqZnJvbSAvICgxIDw8IHNoaWZ0X2V4cG9uZW50KSkgJSAoMSA8PCA2KSkpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9Ci0gICAgICAgIC8vIElmICAgd2UgZmlsbGVkIHVwIHRoZSBvdXQgYnVmZmVyIGJlZm9yZSBlbmNvZGluZyB0aGUgY2hhcmFjdGVyCi0gICAgICAgIGlmKHRvICAgPT0gdG9fZW5kICYmIGkgIT0gY29udF9vY3RldF9jb3VudCkgewotICAgICAgICAgICAgZnJvbV9uZXh0ID0gZnJvbTsKLSAgICAgICAgICAgIHRvX25leHQgPSB0byAtIChpKzEpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpwYXJ0aWFsOwotICAgICAgICB9Ci0gICAgICAgICsrZnJvbTsKLSAgICB9Ci0gICAgZnJvbV9uZXh0ID0gZnJvbTsKLSAgICB0b19uZXh0ID0gdG87Ci0gICAgLy8gV2VyZSB3ZSBkb25lIG9yIGRpZCB3ZSBydW4gb3V0IG9mIGRlc3RpbmF0aW9uIHNwYWNlCi0gICAgaWYoZnJvbSA9PSBmcm9tX2VuZCkgcmV0dXJuIHN0ZDo6Y29kZWN2dF9iYXNlOjpvazsKLSAgICBlbHNlIHJldHVybiBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDsKLX0KLQotLy8gSG93IG1hbnkgY2hhciBvYmplY3RzIGNhbiBJIHByb2Nlc3MgdG8gZ2V0IDw9IG1heF9saW1pdAotLy8gd2NoYXJfdCBvYmplY3RzPwotaW50IHV0ZjhfY29kZWN2dF9mYWNldDo6ZG9fbGVuZ3RoKAotICAgIE5ETkJPT1NUX0NPREVDVlRfRE9fTEVOR1RIX0NPTlNUIHN0ZDo6bWJzdGF0ZV90ICYsCi0gICAgY29uc3QgY2hhciAqIGZyb20sCi0gICAgY29uc3QgY2hhciAqIGZyb21fZW5kLCAKLSAgICBzdGQ6OnNpemVfdCBtYXhfbGltaXQKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotKSBjb25zdCB0aHJvdygpCi0jZWxzZQotKSBjb25zdAotI2VuZGlmCi17IAotICAgIC8vIFJHIC0gdGhpcyBjb2RlIGlzIGNvbmZ1c2luZyEgIEkgbmVlZCBhIGJldHRlciB3YXkgdG8gZXhwcmVzcyBpdC4KLSAgICAvLyBhbmQgdGVzdCBjYXNlcy4KLQotICAgIC8vIEludmFyaWFudHM6Ci0gICAgLy8gMSkgbGFzdF9vY3RldF9jb3VudCBoYXMgdGhlIHNpemUgb2YgdGhlIGxhc3QgbWVhc3VyZWQgY2hhcmFjdGVyCi0gICAgLy8gMikgY2hhcl9jb3VudCBob2xkcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgc2hvd24gdG8gZml0Ci0gICAgLy8gd2l0aGluIHRoZSBib3VuZHMgc28gZmFyIChubyBncmVhdGVyIHRoYW4gbWF4X2xpbWl0KQotICAgIC8vIDMpIGZyb21fbmV4dCBwb2ludHMgdG8gdGhlIG9jdGV0ICdsYXN0X29jdGV0X2NvdW50JyBiZWZvcmUgdGhlCi0gICAgLy8gbGFzdCBtZWFzdXJlZCBjaGFyYWN0ZXIuICAKLSAgICBpbnQgbGFzdF9vY3RldF9jb3VudD0wOwotICAgIHN0ZDo6c2l6ZV90IGNoYXJfY291bnQgPSAwOwotICAgIGNvbnN0IGNoYXIqIGZyb21fbmV4dCA9IGZyb207Ci0gICAgLy8gVXNlICI8IiBiZWNhdXNlIHRoZSBidWZmZXIgbWF5IHJlcHJlc2VudCBpbmNvbXBsZXRlIGNoYXJhY3RlcnMKLSAgICB3aGlsZSAoZnJvbV9uZXh0K2xhc3Rfb2N0ZXRfY291bnQgPD0gZnJvbV9lbmQgJiYgY2hhcl9jb3VudCA8PSBtYXhfbGltaXQpIHsKLSAgICAgICAgZnJvbV9uZXh0ICs9IGxhc3Rfb2N0ZXRfY291bnQ7Ci0gICAgICAgIGxhc3Rfb2N0ZXRfY291bnQgPSAoZ2V0X29jdGV0X2NvdW50KCpmcm9tX25leHQpKTsKLSAgICAgICAgKytjaGFyX2NvdW50OwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihmcm9tX25leHQtZnJvbV9lbmQpOwotfQotCi11bnNpZ25lZCBpbnQgdXRmOF9jb2RlY3Z0X2ZhY2V0OjpnZXRfb2N0ZXRfY291bnQoCi0gICAgdW5zaWduZWQgY2hhciAgIGxlYWRfb2N0ZXQKLSl7Ci0gICAgLy8gaWYgdGhlIDAtYml0IChNU0IpIGlzIDAsIHRoZW4gMSBjaGFyYWN0ZXIKLSAgICBpZiAobGVhZF9vY3RldCA8PSAweDdmKSByZXR1cm4gMTsKLQotICAgIC8vIE90aGVyd2lzZSB0aGUgY291bnQgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIDEgYml0cyBzdGFydGluZyBhdCBNU0IKLS8vICAgIGFzc2VydCgweGMwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGZkKTsKLQotICAgIGlmICgweGMwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGRmKSByZXR1cm4gMjsKLSAgICBlbHNlIGlmICgweGUwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGVmKSByZXR1cm4gMzsKLSAgICBlbHNlIGlmICgweGYwIDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGY3KSByZXR1cm4gNDsKLSAgICBlbHNlIGlmICgweGY4IDw9IGxlYWRfb2N0ZXQgJiYgbGVhZF9vY3RldCA8PSAweGZiKSByZXR1cm4gNTsKLSAgICBlbHNlIHJldHVybiA2OwotfQotTkROQk9PU1RfVVRGOF9FTkRfTkFNRVNQQUNFCi0KLW5hbWVzcGFjZSB7Ci10ZW1wbGF0ZTxzdGQ6OnNpemVfdCBzPgotaW50IGdldF9jb250X29jdGV0X291dF9jb3VudF9pbXBsKHdjaGFyX3Qgd29yZCl7Ci0gICAgaWYgKHdvcmQgPCAweDgwKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4ODAwKSB7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICByZXR1cm4gMjsKLX0KLQotdGVtcGxhdGU8PgotaW50IGdldF9jb250X29jdGV0X291dF9jb3VudF9pbXBsPDQ+KHdjaGFyX3Qgd29yZCl7Ci0gICAgaWYgKHdvcmQgPCAweDgwKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4ODAwKSB7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8vIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBnZW5lcmF0ZSB3YXJuaW5ncyBvbiBzb21lIHBsYXRmb3JtcwotICAgIC8vIHdoZXJlIHdjaGFyX3QgaXMgZGVmaW5lZCBhcyBVQ1MyLiAgVGhlIHdhcm5pbmdzIGFyZSBzdXBlcmZsdW91cyBhcyB0aGUKLSAgICAvLyBzcGVjaWFsaXphdGlvbiBpcyBuZXZlciBpbnN0YW50aXRpYXRlZCB3aXRoIHN1Y2ggY29tcGlsZXJzLCBidXQgdGhpcwotICAgIC8vIGNhbiBjYXVzZSBwcm9ibGVtcyBpZiB3YXJuaW5ncyBhcmUgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMsIHNvIHdlIGd1YXJkCi0gICAgLy8gYWdhaW5zdCB0aGF0LiAgSW5jbHVkaW5nIDxuZG5ib29zdC9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcD4gYXMgd2UgZG8KLSAgICAvLyBzaG91bGQgYmUgZW5vdWdoIHRvIGdldCBXQ0hBUl9NQVggZGVmaW5lZC4KLSNpZiAhZGVmaW5lZChXQ0hBUl9NQVgpCi0jICAgZXJyb3IgV0NIQVJfTUFYIG5vdCBkZWZpbmVkIQotI2VuZGlmCi0gICAgLy8gY29wZSB3aXRoIFZDKysgNy4xIG9yIGVhcmxpZXIgaGF2aW5nIGludmFsaWQgV0NIQVJfTUFYCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPD0gMTMxMCAvLyA3LjEgb3IgZWFybGllcgotICAgIHJldHVybiAyOwotI2VsaWYgV0NIQVJfTUFYID4gMHgxMDAwMAotICAgIAotICAgaWYgKHdvcmQgPCAweDEwMDAwKSB7Ci0gICAgICAgIHJldHVybiAyOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4MjAwMDAwKSB7Ci0gICAgICAgIHJldHVybiAzOwotICAgIH0KLSAgICBpZiAod29yZCA8IDB4NDAwMDAwMCkgewotICAgICAgICByZXR1cm4gNDsKLSAgICB9Ci0gICAgcmV0dXJuIDU7Ci0gICAgCi0jZWxzZQotICAgIHJldHVybiAyOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIGFub255bW91cwotCi1ORE5CT09TVF9VVEY4X0JFR0lOX05BTUVTUEFDRQotLy8gSG93IG1hbnkgImNvbnRpbnVpbmcgb2N0ZXRzIiB3aWxsIGJlIG5lZWRlZCBmb3IgdGhpcyB3b3JkCi0vLyA9PSAgIHRvdGFsIG9jdGV0cyAtIDEuCi1pbnQgdXRmOF9jb2RlY3Z0X2ZhY2V0OjpnZXRfY29udF9vY3RldF9vdXRfY291bnQoCi0gICAgd2NoYXJfdCB3b3JkCi0pIGNvbnN0IHsKLSAgICByZXR1cm4gZ2V0X2NvbnRfb2N0ZXRfb3V0X2NvdW50X2ltcGw8c2l6ZW9mKHdjaGFyX3QpPih3b3JkKTsKLX0KLU5ETkJPT1NUX1VURjhfRU5EX05BTUVTUEFDRQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNmE5MTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIFdPUktBUk9VTkRfTkROQk9PU1RfRFdBMjAwMjEyNl9IUFAKLSMgZGVmaW5lIFdPUktBUk9VTkRfTkROQk9PU1RfRFdBMjAwMjEyNl9IUFAKLQotLy8gQ29tcGlsZXIvbGlicmFyeSB2ZXJzaW9uIHdvcmthcm91bmQgbWFjcm8KLS8vCi0vLyBVc2FnZToKLS8vCi0vLyAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotLy8gICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGVWQzQgYW5kIFZDNgotLy8gICAgICAgIC4uLiAvLyB3b3JrYXJvdW5kIGNvZGUgaGVyZQotLy8gICAgICNlbmRpZgotLy8KLS8vIFdoZW4gTkROQk9PU1RfU1RSSUNUX0NPTkZJRyBpcyBkZWZpbmVkLCBleHBhbmRzIHRvIDAuIE90aGVyd2lzZSwgdGhlCi0vLyBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIHVuZGVmaW5lZCBvciBleHBhbmQgdG8gYSBudW1lcmljCi0vLyB2YWx1ZS4gVGhlIGFib3ZlIGV4cGFuZHMgdG86Ci0vLwotLy8gICAgIChORE5CT09TVF9NU1ZDKSAhPSAwICYmIChORE5CT09TVF9NU1ZDKSA8IDEzMDAKLS8vCi0vLyBXaGVuIHVzZWQgZm9yIHdvcmthcm91bmRzIHRoYXQgYXBwbHkgdG8gdGhlIGxhdGVzdCBrbm93biB2ZXJzaW9uIAotLy8gYW5kIGFsbCBlYXJsaWVyIHZlcnNpb25zIG9mIGEgY29tcGlsZXIsIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbiAKLS8vIHNob3VsZCBiZSBvYnNlcnZlZDoKLS8vCi0vLyAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDEzMDEpKQotLy8KLS8vIFRoZSB2ZXJzaW9uIG51bWJlciBpbiB0aGlzIGNhc2UgY29ycmVzcG9uZHMgdG8gdGhlIGxhc3QgdmVyc2lvbiBpbgotLy8gd2hpY2ggdGhlIHdvcmthcm91bmQgd2FzIGtub3duIHRvIGhhdmUgYmVlbiByZXF1aXJlZC4gV2hlbgotLy8gTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTIGlzIG5vdCB0aGUgZGVmaW5lZCwgdGhlIG1hY3JvCi0vLyBORE5CT09TVF9URVNURURfQVQoeCkgZXhwYW5kcyB0byAiIT0gMCIsIHdoaWNoIGVmZmVjdGl2ZWx5IGFjdGl2YXRlcwotLy8gdGhlIHdvcmthcm91bmQgZm9yIGFueSB2ZXJzaW9uIG9mIHRoZSBjb21waWxlci4gV2hlbgotLy8gTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTIGlzIGRlZmluZWQsIGEgY29tcGlsZXIgd2FybmluZyBvcgotLy8gZXJyb3Igd2lsbCBiZSBpc3N1ZWQgaWYgdGhlIGNvbXBpbGVyIHZlcnNpb24gZXhjZWVkcyB0aGUgYXJndW1lbnQKLS8vIHRvIE5ETkJPT1NUX1RFU1RFRF9BVCgpLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBsb2NhdGUgd29ya2Fyb3VuZHMgd2hpY2gKLS8vIG1heSBiZSBvYnNvbGV0ZWQgYnkgbmV3ZXIgdmVyc2lvbnMuCi0KLSMgaWZuZGVmIE5ETkJPT1NUX1NUUklDVF9DT05GSUcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIF9fQk9STEFORENfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fQk9STEFORENfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0NPREVHRUFSQ19fCi0jZGVmaW5lIF9fQ09ERUdFQVJDX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0NPREVHRUFSQ19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9NU0NfVkVSCi0jZGVmaW5lIF9NU0NfVkVSX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX01TQ19WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX01TQ19GVUxMX1ZFUgotI2RlZmluZSBfTVNDX0ZVTExfVkVSX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX01TQ19GVUxMX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NU1ZDCi0jZGVmaW5lIE5ETkJPT1NUX01TVkNfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9NU1ZDX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01TVkNfRlVMTF9WRVIKLSNkZWZpbmUgTkROQk9PU1RfTVNWQ19GVUxMX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01TVkNfRlVMTF9WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19HTlVDX18KLSNkZWZpbmUgX19HTlVDX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0dOVUNfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0dOVUNfTUlOT1JfXwotI2RlZmluZSBfX0dOVUNfTUlOT1JfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fR05VQ19NSU5PUl9fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fR05VQ19QQVRDSExFVkVMX18KLSNkZWZpbmUgX19HTlVDX1BBVENITEVWRUxfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fR05VQ19QQVRDSExFVkVMX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19JQk1DUFBfXwotI2RlZmluZSBfX0lCTUNQUF9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19JQk1DUFBfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX1NVTlBST19DQwotI2RlZmluZSBfX1NVTlBST19DQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fU1VOUFJPX0NDX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fREVDQ1hYX1ZFUgotI2RlZmluZSBfX0RFQ0NYWF9WRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0RFQ0NYWF9WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19NV0VSS1NfXwotI2RlZmluZSBfX01XRVJLU19fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19NV0VSS1NfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0VER19fCi0jZGVmaW5lIF9fRURHX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0VER19fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fRURHX1ZFUlNJT05fXwotI2RlZmluZSBfX0VER19WRVJTSU9OX19fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0VER19WRVJTSU9OX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19IUF9hQ0MKLSNkZWZpbmUgX19IUF9hQ0NfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0hQX2FDQ19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX2hweHN0ZDk4Ci0jZGVmaW5lIF9faHB4c3RkOThfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX2hweHN0ZDk4X1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9DUkFZQwotI2RlZmluZSBfQ1JBWUNfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfQ1JBWUNfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19ETUNfXwotI2RlZmluZSBfX0RNQ19fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19ETUNfX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBNUFdfQ1BMVVMKLSNkZWZpbmUgTVBXX0NQTFVTX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTVBXX0NQTFVTX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fQ09NT19fCi0jZGVmaW5lIF9fQ09NT19fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19DT01PX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19DT01PX1ZFUlNJT05fXwotI2RlZmluZSBfX0NPTU9fVkVSU0lPTl9fX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19DT01PX1ZFUlNJT05fX19XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0lOVEVMX0NPTVBJTEVSCi0jZGVmaW5lIF9fSU5URUxfQ09NUElMRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX0lOVEVMX0NPTVBJTEVSX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fSUNMCi0jZGVmaW5lIF9fSUNMX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgX19JQ0xfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX0NPTVBJTEVSX1ZFUlNJT04KLSNkZWZpbmUgX0NPTVBJTEVSX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfQ09NUElMRVJfVkVSU0lPTl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotCi0jaWZuZGVmIF9SV1NURF9WRVIKLSNkZWZpbmUgX1JXU1REX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9SV1NURF9WRVJfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUldTVERfVkVSCi0jZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JXU1REX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfX0dMSUJDUFBfXwotI2RlZmluZSBfX0dMSUJDUFBfX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fR0xJQkNQUF9fX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9HTElCQ1hYX1VTRV9DOTlfRlBfTUFDUk9TX0RZTkFNSUMKLSNkZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9GUF9NQUNST1NfRFlOQU1JQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfRlBfTUFDUk9TX0RZTkFNSUNfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX19TR0lfU1RMX1BPUlQKLSNkZWZpbmUgX19TR0lfU1RMX1BPUlRfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfX1NHSV9TVExfUE9SVF9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBfU1RMUE9SVF9WRVJTSU9OCi0jZGVmaW5lIF9TVExQT1JUX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfU1RMUE9SVF9WRVJTSU9OX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIF9fTElCQ09NT19WRVJTSU9OX18KLSNkZWZpbmUgX19MSUJDT01PX1ZFUlNJT05fX19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIF9fTElCQ09NT19WRVJTSU9OX19fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgX0NQUExJQl9WRVIKLSNkZWZpbmUgX0NQUExJQl9WRVJfV09SS0FST1VORF9HVUFSRCAxCi0jZWxzZQotI2RlZmluZSBfQ1BQTElCX1ZFUl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT05fV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfSU5URUxfV0lOCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1dJTl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1dJTl9XT1JLQVJPVU5EX0dVQVJEIDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQgotI2RlZmluZSBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQl9XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVMCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVMX1dPUktBUk9VTkRfR1VBUkQgMQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfSU5URUxfV09SS0FST1VORF9HVUFSRCAwCi0jZW5kaWYKLS8vIEFsd2F5cyBkZWZpbmUgdG8gemVybywgaWYgaXQncyB1c2VkIGl0J2xsIGJlIGRlZmluZWQgbXkgTVBMOgotI2RlZmluZSBORE5CT09TVF9NUExfQ0ZHX0dDQ19XT1JLQVJPVU5EX0dVQVJEIDAKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1dPUktBUk9VTkQoc3ltYm9sLCB0ZXN0KSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAoKHN5bWJvbCAjIyBfV09SS0FST1VORF9HVUFSRCArIDAgPT0gMCkgJiYgICAgIFwKLSAgICAgICAgIChzeW1ib2wgIT0gMCkgJiYgKDEgJSAoKCAoc3ltYm9sIHRlc3QpICkgKyAxKSkpCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gXiAgICAgICAgICAgXiBeCi0vLyBUaGUgZXh0cmEgbGV2ZWwgb2YgcGFyZW50aGVzaXMgbmVzdGluZyBhYm92ZSwgYWxvbmcgd2l0aCB0aGUKLS8vIE5ETkJPT1NUX09QRU5fUEFSRU4gaW5kaXJlY3Rpb24gYmVsb3csIGlzIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlCi0vLyBicm9rZW4gcHJlcHJvY2Vzc29yIGluIE1XQ1cgOC4zIGFuZCBlYXJsaWVyLgotLy8KLS8vIFRoZSBiYXNpYyBtZWNoYW5pc20gd29ya3MgYXMgZm9sbG93czoKLS8vICAgICAgKHN5bWJvbCB0ZXN0KSArIDEgICAgICAgID0+ICAgaWYgKHN5bWJvbCB0ZXN0KSB0aGVuIDIgZWxzZSAxCi0vLyAgICAgIDEgJSAoKHN5bWJvbCB0ZXN0KSArIDEpICA9PiAgIGlmIChzeW1ib2wgdGVzdCkgdGhlbiAxIGVsc2UgMAotLy8KLS8vIFRoZSBjb21wbGljYXRpb24gd2l0aCAlIGlzIGZvciBjb29wZXJhdGlvbiB3aXRoIE5ETkJPT1NUX1RFU1RFRF9BVCgpLgotLy8gV2hlbiAidGVzdCIgaXMgTkROQk9PU1RfVEVTVEVEX0FUKHgpIGFuZAotLy8gTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTIGlzICNkZWZpbmVkLAotLy8KLS8vICAgICAgc3ltYm9sIHRlc3QgICAgICAgICAgICAgID0+ICAgaWYgKHN5bWJvbCA8PSB4KSB0aGVuIDEgZWxzZSAtMQotLy8gICAgICAoc3ltYm9sIHRlc3QpICsgMSAgICAgICAgPT4gICBpZiAoc3ltYm9sIDw9IHgpIHRoZW4gMiBlbHNlIDAKLS8vICAgICAgMSAlICgoc3ltYm9sIHRlc3QpICsgMSkgID0+ICAgaWYgKHN5bWJvbCA8PSB4KSB0aGVuIDEgZWxzZSBkaXZpZGUtYnktemVybwotLy8KLQotIyAgaWZkZWYgTkROQk9PU1RfREVURUNUX09VVERBVEVEX1dPUktBUk9VTkRTCi0jICAgZGVmaW5lIE5ETkJPT1NUX09QRU5fUEFSRU4gKAotIyAgIGRlZmluZSBORE5CT09TVF9URVNURURfQVQodmFsdWUpICA+IHZhbHVlKSA/KC0xKTogTkROQk9PU1RfT1BFTl9QQVJFTiAxCi0jICBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RFRF9BVCh2YWx1ZSkgIT0gKCh2YWx1ZSktKHZhbHVlKSkKLSMgIGVuZGlmCi0KLSMgZWxzZQotCi0jICBkZWZpbmUgTkROQk9PU1RfV09SS0FST1VORChzeW1ib2wsIHRlc3QpIDAKLQotIyBlbmRpZiAKLQotI2VuZGlmIC8vIFdPUktBUk9VTkRfTkROQk9PU1RfRFdBMjAwMjEyNl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2N1cnJlbnRfZXhjZXB0aW9uX2Nhc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vY3VycmVudF9leGNlcHRpb25fY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNzI0YzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vY3VycmVudF9leGNlcHRpb25fY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vL0NvcHlyaWdodCAoYykgMjAwNi0yMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEXzdFODNDMTY2MjAwODExREU4ODVFODI2MTU2RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfN0U4M0MxNjYyMDA4MTFERTg4NUU4MjYxNTZEODk1OTMKLSNpZiAoX19HTlVDX18qMTAwK19fR05VQ19NSU5PUl9fPjMwMSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLW5hbWVzcGFjZQotbmRuYm9vc3QKLSAgICB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgaW5saW5lCi0gICAgRSAqCi0gICAgY3VycmVudF9leGNlcHRpb25fY2FzdCgpCi0gICAgICAgIHsKLSAgICAgICAgdHJ5Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2F0Y2goCi0gICAgICAgIEUgJiBlICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAmZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2F0Y2goCi0gICAgICAgIC4uLikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2F0dHJpYnV0ZV9ub3JldHVybi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvYXR0cmlidXRlX25vcmV0dXJuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM3YjgxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvYXR0cmlidXRlX25vcmV0dXJuLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8vQ29weXJpZ2h0IChjKSAyMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEXzYxNTMxQUIwNjgwNjExREVBREQ1ODQ2ODU1RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfNjE1MzFBQjA2ODA2MTFERUFERDU4NDY4NTVEODk1OTMKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jZGVmaW5lIE5ETkJPT1NUX0FUVFJJQlVURV9OT1JFVFVSTiBfX2RlY2xzcGVjKG5vcmV0dXJuKQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLSNkZWZpbmUgTkROQk9PU1RfQVRUUklCVVRFX05PUkVUVVJOIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9lcnJvcl9pbmZvX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2Vycm9yX2luZm9faW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NDczODAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL2Vycm9yX2luZm9faW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vL0NvcHlyaWdodCAoYykgMjAwNi0yMDEwIEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEX0NFNjk4M0FDNzUzNDExRERBNzY0MjQ3OTU2RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfQ0U2OTgzQUM3NTM0MTFEREE3NjQyNDc5NTZEODk1OTMKLSNpZiAoX19HTlVDX18qMTAwK19fR05VQ19NSU5PUl9fPjMwMSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZQotbmRuYm9vc3QKLSAgICB7Ci0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0gICAgICAgIGNsYXNzCi0gICAgICAgIGVycm9yX2luZm9fYmFzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgcHVibGljOgotCi0gICAgICAgICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIG5hbWVfdmFsdWVfc3RyaW5nKCkgY29uc3QgPSAwOwotCi0gICAgICAgICAgICBwcm90ZWN0ZWQ6Ci0KLSAgICAgICAgICAgIHZpcnR1YWwKLSAgICAgICAgICAgIH5lcnJvcl9pbmZvX2Jhc2UoKSB0aHJvdygpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUYWcsY2xhc3MgVD4KLSAgICBjbGFzcwotICAgIGVycm9yX2luZm86Ci0gICAgICAgIHB1YmxpYyBleGNlcHRpb25fZGV0YWlsOjplcnJvcl9pbmZvX2Jhc2UKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgZXJyb3JfaW5mbyggdmFsdWVfdHlwZSBjb25zdCAmIHZhbHVlICk7Ci0gICAgICAgIH5lcnJvcl9pbmZvKCkgdGhyb3coKTsKLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0ICYKLSAgICAgICAgdmFsdWUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlXzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlICYKLSAgICAgICAgdmFsdWUoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlXzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotCi0gICAgICAgIHN0ZDo6c3RyaW5nIG5hbWVfdmFsdWVfc3RyaW5nKCkgY29uc3Q7Ci0KLSAgICAgICAgdmFsdWVfdHlwZSB2YWx1ZV87Ci0gICAgICAgIH07Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZGV0YWlsL3R5cGVfaW5mby5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvdHlwZV9pbmZvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZjYWUyZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvdHlwZV9pbmZvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8vQ29weXJpZ2h0IChjKSAyMDA2LTIwMTAgRW1pbCBEb3RjaGV2c2tpIGFuZCBSZXZlcmdlIFN0dWRpb3MsIEluYy4KLQotLy9EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vL2ZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VVSURfQzNFMTc0MUM3NTQzMTFEREIyODM0Q0NBNTVEODk1OTMKLSNkZWZpbmUgTkROQk9PU1RfVVVJRF9DM0UxNzQxQzc1NDMxMUREQjI4MzRDQ0E1NUQ4OTU5MwotI2lmIChfX0dOVUNfXyoxMDArX19HTlVDX01JTk9SX18+MzAxKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwdXNoLDEpCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3VycmVudF9mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fVFlQRUlECi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5pdHMvZGV0YWlsL3V0aWxpdHkuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8c3RyaW5nPgotCi1uYW1lc3BhY2UKLW5kbmJvb3N0Ci0gICAgewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZQotICAgIHN0ZDo6c3RyaW5nCi0gICAgdGFnX3R5cGVfbmFtZSgpCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19UWVBFSUQKLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT047Ci0jZWxzZQotICAgICAgICByZXR1cm4gdW5pdHM6OmRldGFpbDo6ZGVtYW5nbGUodHlwZWlkKFQqKS5uYW1lKCkpOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZQotICAgIHN0ZDo6c3RyaW5nCi0gICAgdHlwZV9uYW1lKCkKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX05PX1RZUEVJRAotICAgICAgICByZXR1cm4gTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTjsKLSNlbHNlCi0gICAgICAgIHJldHVybiB1bml0czo6ZGV0YWlsOjpkZW1hbmdsZSh0eXBlaWQoVCkubmFtZSgpKTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICBuYW1lc3BhY2UKLSAgICBleGNlcHRpb25fZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgc3RydWN0Ci0gICAgICAgIHR5cGVfaW5mb18KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgKiB0eXBlXzsKLQotICAgICAgICAgICAgZXhwbGljaXQKLSAgICAgICAgICAgIHR5cGVfaW5mb18oIGRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiB0eXBlICk6Ci0gICAgICAgICAgICAgICAgdHlwZV8oJnR5cGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnJpZW5kCi0gICAgICAgICAgICBib29sCi0gICAgICAgICAgICBvcGVyYXRvcjwoIHR5cGVfaW5mb18gY29uc3QgJiBhLCB0eXBlX2luZm9fIGNvbnN0ICYgYiApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAwIT0oYS50eXBlXy0+YmVmb3JlKCpiLnR5cGVfKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgIH0KLQotI2RlZmluZSBORE5CT09TVF9FWENFUFRJT05fU1RBVElDX1RZUEVJRChUKSA6Om5kbmJvb3N0OjpleGNlcHRpb25fZGV0YWlsOjp0eXBlX2luZm9fKE5ETkJPT1NUX1NQX1RZUEVJRChUKSkKLQotI2lmbmRlZiBORE5CT09TVF9OT19SVFRJCi0jZGVmaW5lIE5ETkJPT1NUX0VYQ0VQVElPTl9EWU5BTUlDX1RZUEVJRCh4KSA6Om5kbmJvb3N0OjpleGNlcHRpb25fZGV0YWlsOjp0eXBlX2luZm9fKHR5cGVpZCh4KSkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2V4Y2VwdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhOTc0N2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MyArMCwwIEBACi0vL0NvcHlyaWdodCAoYykgMjAwNi0yMDA5IEVtaWwgRG90Y2hldnNraSBhbmQgUmV2ZXJnZSBTdHVkaW9zLCBJbmMuCi0KLS8vRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy9maWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VVUlEXzI3NERBMzY2MDA0RTExRENCMURERkUyRTU2RDg5NTkzCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfMjc0REEzNjYwMDRFMTFEQ0IxRERGRTJFNTZEODk1OTMKLSNpZiAoX19HTlVDX18qMTAwK19fR05VQ19NSU5PUl9fPjMwMSkgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCwxKQotI2VuZGlmCi0KLW5hbWVzcGFjZQotbmRuYm9vc3QKLSAgICB7Ci0gICAgbmFtZXNwYWNlCi0gICAgZXhjZXB0aW9uX2RldGFpbAotICAgICAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBjbGFzcwotICAgICAgICByZWZjb3VudF9wdHIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHB1YmxpYzoKLQotICAgICAgICAgICAgcmVmY291bnRfcHRyKCk6Ci0gICAgICAgICAgICAgICAgcHhfKDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgfnJlZmNvdW50X3B0cigpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlZmNvdW50X3B0ciggcmVmY291bnRfcHRyIGNvbnN0ICYgeCApOgotICAgICAgICAgICAgICAgIHB4Xyh4LnB4XykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYWRkX3JlZigpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVmY291bnRfcHRyICYKLSAgICAgICAgICAgIG9wZXJhdG9yPSggcmVmY291bnRfcHRyIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGFkb3B0KHgucHhfKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkCi0gICAgICAgICAgICBhZG9wdCggVCAqIHB4ICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIHB4Xz1weDsKLSAgICAgICAgICAgICAgICBhZGRfcmVmKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBUICoKLSAgICAgICAgICAgIGdldCgpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBweF87Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotCi0gICAgICAgICAgICBUICogcHhfOwotCi0gICAgICAgICAgICB2b2lkCi0gICAgICAgICAgICBhZGRfcmVmKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoIHB4XyApCi0gICAgICAgICAgICAgICAgICAgIHB4Xy0+YWRkX3JlZigpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdm9pZAotICAgICAgICAgICAgcmVsZWFzZSgpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmKCBweF8gJiYgcHhfLT5yZWxlYXNlKCkgKQotICAgICAgICAgICAgICAgICAgICBweF89MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUYWcsY2xhc3MgVD4KLSAgICBjbGFzcyBlcnJvcl9pbmZvOwotCi0gICAgdHlwZWRlZiBlcnJvcl9pbmZvPHN0cnVjdCB0aHJvd19mdW5jdGlvbl8sY2hhciBjb25zdCAqPiB0aHJvd19mdW5jdGlvbjsKLSAgICB0eXBlZGVmIGVycm9yX2luZm88c3RydWN0IHRocm93X2ZpbGVfLGNoYXIgY29uc3QgKj4gdGhyb3dfZmlsZTsKLSAgICB0eXBlZGVmIGVycm9yX2luZm88c3RydWN0IHRocm93X2xpbmVfLGludD4gdGhyb3dfbGluZTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgY2xhc3MKLSAgICBlcnJvcl9pbmZvPHRocm93X2Z1bmN0aW9uXyxjaGFyIGNvbnN0ICo+Ci0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGNoYXIgY29uc3QgKiB2YWx1ZV90eXBlOwotICAgICAgICB2YWx1ZV90eXBlIHZfOwotICAgICAgICBleHBsaWNpdAotICAgICAgICBlcnJvcl9pbmZvKCB2YWx1ZV90eXBlIHYgKToKLSAgICAgICAgICAgIHZfKHYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIGNsYXNzCi0gICAgZXJyb3JfaW5mbzx0aHJvd19maWxlXyxjaGFyIGNvbnN0ICo+Ci0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGNoYXIgY29uc3QgKiB2YWx1ZV90eXBlOwotICAgICAgICB2YWx1ZV90eXBlIHZfOwotICAgICAgICBleHBsaWNpdAotICAgICAgICBlcnJvcl9pbmZvKCB2YWx1ZV90eXBlIHYgKToKLSAgICAgICAgICAgIHZfKHYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIGNsYXNzCi0gICAgZXJyb3JfaW5mbzx0aHJvd19saW5lXyxpbnQ+Ci0gICAgICAgIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIGludCB2YWx1ZV90eXBlOwotICAgICAgICB2YWx1ZV90eXBlIHZfOwotICAgICAgICBleHBsaWNpdAotICAgICAgICBlcnJvcl9pbmZvKCB2YWx1ZV90eXBlIHYgKToKLSAgICAgICAgICAgIHZfKHYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyBpZiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTlVDX18gPiA0KQotIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2ggKGRlZmF1bHQpCi0jIGVuZGlmCi0jZW5kaWYKLSAgICBjbGFzcyBleGNlcHRpb247Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKLSMgZW5kaWYKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgY2xhc3Mgc2hhcmVkX3B0cjsKLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotICAgICAgICBjbGFzcyBlcnJvcl9pbmZvX2Jhc2U7Ci0gICAgICAgIHN0cnVjdCB0eXBlX2luZm9fOwotCi0gICAgICAgIHN0cnVjdAotICAgICAgICBlcnJvcl9pbmZvX2NvbnRhaW5lcgotICAgICAgICAgICAgewotICAgICAgICAgICAgdmlydHVhbCBjaGFyIGNvbnN0ICogZGlhZ25vc3RpY19pbmZvcm1hdGlvbiggY2hhciBjb25zdCAqICkgY29uc3QgPSAwOwotICAgICAgICAgICAgdmlydHVhbCBzaGFyZWRfcHRyPGVycm9yX2luZm9fYmFzZT4gZ2V0KCB0eXBlX2luZm9fIGNvbnN0ICYgKSBjb25zdCA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0KCBzaGFyZWRfcHRyPGVycm9yX2luZm9fYmFzZT4gY29uc3QgJiwgdHlwZV9pbmZvXyBjb25zdCAmICkgPSAwOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGFkZF9yZWYoKSBjb25zdCA9IDA7Ci0gICAgICAgICAgICB2aXJ0dWFsIGJvb2wgcmVsZWFzZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgICAgIHZpcnR1YWwgcmVmY291bnRfcHRyPGV4Y2VwdGlvbl9kZXRhaWw6OmVycm9yX2luZm9fY29udGFpbmVyPiBjbG9uZSgpIGNvbnN0ID0gMDsKLQotICAgICAgICAgICAgcHJvdGVjdGVkOgotCi0gICAgICAgICAgICB+ZXJyb3JfaW5mb19jb250YWluZXIoKSB0aHJvdygpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzPgotICAgICAgICBzdHJ1Y3QgZ2V0X2luZm87Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGdldF9pbmZvPHRocm93X2Z1bmN0aW9uPjsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgZ2V0X2luZm88dGhyb3dfZmlsZT47Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGdldF9pbmZvPHRocm93X2xpbmU+OwotCi0gICAgICAgIGNoYXIgY29uc3QgKiBnZXRfZGlhZ25vc3RpY19pbmZvcm1hdGlvbiggZXhjZXB0aW9uIGNvbnN0ICYsIGNoYXIgY29uc3QgKiApOwotCi0gICAgICAgIHZvaWQgY29weV9ib29zdF9leGNlcHRpb24oIGV4Y2VwdGlvbiAqLCBleGNlcHRpb24gY29uc3QgKiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFLGNsYXNzIFRhZyxjbGFzcyBUPgotICAgICAgICBFIGNvbnN0ICYgc2V0X2luZm8oIEUgY29uc3QgJiwgZXJyb3JfaW5mbzxUYWcsVD4gY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBFIGNvbnN0ICYgc2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfZnVuY3Rpb24gY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBFIGNvbnN0ICYgc2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfZmlsZSBjb25zdCAmICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIEUgY29uc3QgJiBzZXRfaW5mbyggRSBjb25zdCAmLCB0aHJvd19saW5lIGNvbnN0ICYgKTsKLSAgICAgICAgfQotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoIChkZWZhdWx0KQotIyBlbmRpZgotI2VuZGlmCi0gICAgY2xhc3MKLSAgICBleGNlcHRpb24KLSAgICAgICAgewotICAgICAgICBwcm90ZWN0ZWQ6Ci0KLSAgICAgICAgZXhjZXB0aW9uKCk6Ci0gICAgICAgICAgICB0aHJvd19mdW5jdGlvbl8oMCksCi0gICAgICAgICAgICB0aHJvd19maWxlXygwKSwKLSAgICAgICAgICAgIHRocm93X2xpbmVfKC0xKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0jaWZkZWYgX19IUF9hQ0MKLSAgICAgICAgLy9PbiBIUCBhQ0MsIHRoaXMgcHJvdGVjdGVkIGNvcHkgY29uc3RydWN0b3IgcHJldmVudHMgdGhyb3dpbmcgbmRuYm9vc3Q6OmV4Y2VwdGlvbi4KLSAgICAgICAgLy9PbiBhbGwgb3RoZXIgcGxhdGZvcm1zLCB0aGUgc2FtZSBlZmZlY3QgaXMgYWNoaWV2ZWQgYnkgdGhlIHB1cmUgdmlydHVhbCBkZXN0cnVjdG9yLgotICAgICAgICBleGNlcHRpb24oIGV4Y2VwdGlvbiBjb25zdCAmIHggKSB0aHJvdygpOgotICAgICAgICAgICAgZGF0YV8oeC5kYXRhXyksCi0gICAgICAgICAgICB0aHJvd19mdW5jdGlvbl8oeC50aHJvd19mdW5jdGlvbl8pLAotICAgICAgICAgICAgdGhyb3dfZmlsZV8oeC50aHJvd19maWxlXyksCi0gICAgICAgICAgICB0aHJvd19saW5lXyh4LnRocm93X2xpbmVfKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdmlydHVhbCB+ZXhjZXB0aW9uKCkgdGhyb3coKQotI2lmbmRlZiBfX0hQX2FDQwotICAgICAgICAgICAgPSAwIC8vV29ya2Fyb3VuZCBmb3IgSFAgYUNDLCA9MCBpbmNvcnJlY3RseSBsZWFkcyB0byBsaW5rIGVycm9ycy4KLSNlbmRpZgotICAgICAgICAgICAgOwotCi0jaWYgKGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19NV0VSS1NfXzw9MHgzMjA3KSB8fCAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVI8PTEzMTApCi0gICAgICAgIHB1YmxpYzoKLSNlbHNlCi0gICAgICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIGZyaWVuZCBFIGNvbnN0ICYgZXhjZXB0aW9uX2RldGFpbDo6c2V0X2luZm8oIEUgY29uc3QgJiwgdGhyb3dfZnVuY3Rpb24gY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBmcmllbmQgRSBjb25zdCAmIGV4Y2VwdGlvbl9kZXRhaWw6OnNldF9pbmZvKCBFIGNvbnN0ICYsIHRocm93X2ZpbGUgY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBmcmllbmQgRSBjb25zdCAmIGV4Y2VwdGlvbl9kZXRhaWw6OnNldF9pbmZvKCBFIGNvbnN0ICYsIHRocm93X2xpbmUgY29uc3QgJiApOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFLGNsYXNzIFRhZyxjbGFzcyBUPgotICAgICAgICBmcmllbmQgRSBjb25zdCAmIGV4Y2VwdGlvbl9kZXRhaWw6OnNldF9pbmZvKCBFIGNvbnN0ICYsIGVycm9yX2luZm88VGFnLFQ+IGNvbnN0ICYgKTsKLQotICAgICAgICBmcmllbmQgY2hhciBjb25zdCAqIGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9kaWFnbm9zdGljX2luZm9ybWF0aW9uKCBleGNlcHRpb24gY29uc3QgJiwgY2hhciBjb25zdCAqICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzPgotICAgICAgICBmcmllbmQgc3RydWN0IGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9pbmZvOwotICAgICAgICBmcmllbmQgc3RydWN0IGV4Y2VwdGlvbl9kZXRhaWw6OmdldF9pbmZvPHRocm93X2Z1bmN0aW9uPjsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzx0aHJvd19maWxlPjsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzx0aHJvd19saW5lPjsKLSAgICAgICAgZnJpZW5kIHZvaWQgZXhjZXB0aW9uX2RldGFpbDo6Y29weV9ib29zdF9leGNlcHRpb24oIGV4Y2VwdGlvbiAqLCBleGNlcHRpb24gY29uc3QgKiApOwotI2VuZGlmCi0gICAgICAgIG11dGFibGUgZXhjZXB0aW9uX2RldGFpbDo6cmVmY291bnRfcHRyPGV4Y2VwdGlvbl9kZXRhaWw6OmVycm9yX2luZm9fY29udGFpbmVyPiBkYXRhXzsKLSAgICAgICAgbXV0YWJsZSBjaGFyIGNvbnN0ICogdGhyb3dfZnVuY3Rpb25fOwotICAgICAgICBtdXRhYmxlIGNoYXIgY29uc3QgKiB0aHJvd19maWxlXzsKLSAgICAgICAgbXV0YWJsZSBpbnQgdGhyb3dfbGluZV87Ci0gICAgICAgIH07Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgaWYgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkgfHwgKF9fR05VQ19fID4gNCkKLSMgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKLSMgZW5kaWYKLSNlbmRpZgotCi0gICAgaW5saW5lCi0gICAgZXhjZXB0aW9uOjoKLSAgICB+ZXhjZXB0aW9uKCkgdGhyb3coKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgRSBjb25zdCAmCi0gICAgICAgIHNldF9pbmZvKCBFIGNvbnN0ICYgeCwgdGhyb3dfZnVuY3Rpb24gY29uc3QgJiB5ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHgudGhyb3dfZnVuY3Rpb25fPXkudl87Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRT4KLSAgICAgICAgRSBjb25zdCAmCi0gICAgICAgIHNldF9pbmZvKCBFIGNvbnN0ICYgeCwgdGhyb3dfZmlsZSBjb25zdCAmIHkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgeC50aHJvd19maWxlXz15LnZfOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEU+Ci0gICAgICAgIEUgY29uc3QgJgotICAgICAgICBzZXRfaW5mbyggRSBjb25zdCAmIHgsIHRocm93X2xpbmUgY29uc3QgJiB5ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHgudGhyb3dfbGluZV89eS52XzsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaCAoZGVmYXVsdCkKLSMgZW5kaWYKLSNlbmRpZgotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVycm9yX2luZm9faW5qZWN0b3I6Ci0gICAgICAgICAgICBwdWJsaWMgVCwKLSAgICAgICAgICAgIHB1YmxpYyBleGNlcHRpb24KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Ci0gICAgICAgICAgICBlcnJvcl9pbmZvX2luamVjdG9yKCBUIGNvbnN0ICYgeCApOgotICAgICAgICAgICAgICAgIFQoeCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB+ZXJyb3JfaW5mb19pbmplY3RvcigpIHRocm93KCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotIyBpZiAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTlVDX18gPiA0KQotIyAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAotIyBlbmRpZgotI2VuZGlmCi0KLSAgICAgICAgc3RydWN0IGxhcmdlX3NpemUgeyBjaGFyIGNbMjU2XTsgfTsKLSAgICAgICAgbGFyZ2Vfc2l6ZSBkaXNwYXRjaF9ib29zdF9leGNlcHRpb24oIGV4Y2VwdGlvbiBjb25zdCAqICk7Ci0KLSAgICAgICAgc3RydWN0IHNtYWxsX3NpemUgeyB9OwotICAgICAgICBzbWFsbF9zaXplIGRpc3BhdGNoX2Jvb3N0X2V4Y2VwdGlvbiggdm9pZCBjb25zdCAqICk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLGludD4KLSAgICAgICAgc3RydWN0IGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjxULHNpemVvZihsYXJnZV9zaXplKT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjxULHNpemVvZihzbWFsbF9zaXplKT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgZXJyb3JfaW5mb19pbmplY3RvcjxUPiB0eXBlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGVuYWJsZV9lcnJvcl9pbmZvX3JldHVybl90eXBlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVuYWJsZV9lcnJvcl9pbmZvX2hlbHBlcjxULHNpemVvZihleGNlcHRpb25fZGV0YWlsOjpkaXNwYXRjaF9ib29zdF9leGNlcHRpb24oc3RhdGljX2Nhc3Q8VCAqPigwKSkpPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lCi0gICAgdHlwZW5hbWUKLSAgICBleGNlcHRpb25fZGV0YWlsOjplbmFibGVfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxUPjo6dHlwZQotICAgIGVuYWJsZV9lcnJvcl9pbmZvKCBUIGNvbnN0ICYgeCApCi0gICAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBleGNlcHRpb25fZGV0YWlsOjplbmFibGVfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxUPjo6dHlwZSBydDsKLSAgICAgICAgcmV0dXJuIHJ0KHgpOwotICAgICAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICAgICAgewotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaCAoZGVmYXVsdCkKLSMgZW5kaWYKLSNlbmRpZgotICAgICAgICBjbGFzcwotICAgICAgICBjbG9uZV9iYXNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgICAgIHZpcnR1YWwgY2xvbmVfYmFzZSBjb25zdCAqIGNsb25lKCkgY29uc3QgPSAwOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIHJldGhyb3coKSBjb25zdCA9IDA7Ci0KLSAgICAgICAgICAgIHZpcnR1YWwKLSAgICAgICAgICAgIH5jbG9uZV9iYXNlKCkgdGhyb3coKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotI2lmIGRlZmluZWQoX19HTlVDX18pCi0jIGlmIChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDEpIHx8IChfX0dOVUNfXyA+IDQpCi0jICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCi0jIGVuZGlmCi0jZW5kaWYKLQotICAgICAgICBpbmxpbmUKLSAgICAgICAgdm9pZAotICAgICAgICBjb3B5X2Jvb3N0X2V4Y2VwdGlvbiggZXhjZXB0aW9uICogYSwgZXhjZXB0aW9uIGNvbnN0ICogYiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICByZWZjb3VudF9wdHI8ZXJyb3JfaW5mb19jb250YWluZXI+IGRhdGE7Ci0gICAgICAgICAgICBpZiggZXJyb3JfaW5mb19jb250YWluZXIgKiBkPWItPmRhdGFfLmdldCgpICkKLSAgICAgICAgICAgICAgICBkYXRhID0gZC0+Y2xvbmUoKTsKLSAgICAgICAgICAgIGEtPnRocm93X2ZpbGVfID0gYi0+dGhyb3dfZmlsZV87Ci0gICAgICAgICAgICBhLT50aHJvd19saW5lXyA9IGItPnRocm93X2xpbmVfOwotICAgICAgICAgICAgYS0+dGhyb3dfZnVuY3Rpb25fID0gYi0+dGhyb3dfZnVuY3Rpb25fOwotICAgICAgICAgICAgYS0+ZGF0YV8gPSBkYXRhOwotICAgICAgICAgICAgfQotCi0gICAgICAgIGlubGluZQotICAgICAgICB2b2lkCi0gICAgICAgIGNvcHlfYm9vc3RfZXhjZXB0aW9uKCB2b2lkICosIHZvaWQgY29uc3QgKiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGNsYXNzCi0gICAgICAgIGNsb25lX2ltcGw6Ci0gICAgICAgICAgICBwdWJsaWMgVCwKLSAgICAgICAgICAgIHB1YmxpYyB2aXJ0dWFsIGNsb25lX2Jhc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCBjbG9uZV90YWcgeyB9OwotICAgICAgICAgICAgY2xvbmVfaW1wbCggY2xvbmVfaW1wbCBjb25zdCAmIHgsIGNsb25lX3RhZyApOgotICAgICAgICAgICAgICAgIFQoeCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29weV9ib29zdF9leGNlcHRpb24odGhpcywmeCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdWJsaWM6Ci0KLSAgICAgICAgICAgIGV4cGxpY2l0Ci0gICAgICAgICAgICBjbG9uZV9pbXBsKCBUIGNvbnN0ICYgeCApOgotICAgICAgICAgICAgICAgIFQoeCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29weV9ib29zdF9leGNlcHRpb24odGhpcywmeCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB+Y2xvbmVfaW1wbCgpIHRocm93KCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlOgotCi0gICAgICAgICAgICBjbG9uZV9iYXNlIGNvbnN0ICoKLSAgICAgICAgICAgIGNsb25lKCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBjbG9uZV9pbXBsKCp0aGlzLGNsb25lX3RhZygpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZvaWQKLSAgICAgICAgICAgIHJldGhyb3coKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aHJvdyp0aGlzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIGlubGluZQotICAgIGV4Y2VwdGlvbl9kZXRhaWw6OmNsb25lX2ltcGw8VD4KLSAgICBlbmFibGVfY3VycmVudF9leGNlcHRpb24oIFQgY29uc3QgJiB4ICkKLSAgICAgICAgewotICAgICAgICByZXR1cm4gZXhjZXB0aW9uX2RldGFpbDo6Y2xvbmVfaW1wbDxUPih4KTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2dldF9lcnJvcl9pbmZvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZXhjZXB0aW9uL2dldF9lcnJvcl9pbmZvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IzNDE1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2V4Y2VwdGlvbi9nZXRfZXJyb3JfaW5mby5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLy9Db3B5cmlnaHQgKGMpIDIwMDYtMjAwOSBFbWlsIERvdGNoZXZza2kgYW5kIFJldmVyZ2UgU3R1ZGlvcywgSW5jLgotCi0vL0Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVVVJRF8xQTU5MDIyNjc1MzMxMUREOUU0Q0NGNjE1NkQ4OTU5MwotI2RlZmluZSBORE5CT09TVF9VVUlEXzFBNTkwMjI2NzUzMzExREQ5RTRDQ0Y2MTU2RDg5NTkzCi0jaWYgKF9fR05VQ19fKjEwMCtfX0dOVUNfTUlOT1JfXz4zMDEpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gsMSkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9lcnJvcl9pbmZvX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9kZXRhaWwvdHlwZV9pbmZvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlCi1uZG5ib29zdAotICAgIHsKLSAgICBuYW1lc3BhY2UKLSAgICBleGNlcHRpb25fZGV0YWlsCi0gICAgICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEVycm9ySW5mbz4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGdldF9pbmZvCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMKLSAgICAgICAgICAgIHR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZSAqCi0gICAgICAgICAgICBnZXQoIGV4Y2VwdGlvbiBjb25zdCAmIHggKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiggZXhjZXB0aW9uX2RldGFpbDo6ZXJyb3JfaW5mb19jb250YWluZXIgKiBjPXguZGF0YV8uZ2V0KCkgKQotICAgICAgICAgICAgICAgICAgICBpZiggc2hhcmVkX3B0cjxleGNlcHRpb25fZGV0YWlsOjplcnJvcl9pbmZvX2Jhc2U+IGVpYiA9IGMtPmdldChORE5CT09TVF9FWENFUFRJT05fU1RBVElDX1RZUEVJRChFcnJvckluZm8pKSApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1JUVEkKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggMCE9ZHluYW1pY19jYXN0PEVycm9ySW5mbyAqPihlaWIuZ2V0KCkpICk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIEVycm9ySW5mbyAqIHcgPSBzdGF0aWNfY2FzdDxFcnJvckluZm8gKj4oZWliLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmdy0+dmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdAotICAgICAgICBnZXRfaW5mbzx0aHJvd19mdW5jdGlvbj4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYwotICAgICAgICAgICAgY2hhciBjb25zdCAqICoKLSAgICAgICAgICAgIGdldCggZXhjZXB0aW9uIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4LnRocm93X2Z1bmN0aW9uXyA/ICZ4LnRocm93X2Z1bmN0aW9uXyA6IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZ2V0X2luZm88dGhyb3dfZmlsZT4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYwotICAgICAgICAgICAgY2hhciBjb25zdCAqICoKLSAgICAgICAgICAgIGdldCggZXhjZXB0aW9uIGNvbnN0ICYgeCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB4LnRocm93X2ZpbGVfID8gJngudGhyb3dfZmlsZV8gOiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0Ci0gICAgICAgIGdldF9pbmZvPHRocm93X2xpbmU+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMKLSAgICAgICAgICAgIGludCAqCi0gICAgICAgICAgICBnZXQoIGV4Y2VwdGlvbiBjb25zdCAmIHggKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4geC50aHJvd19saW5lXyE9LTEgPyAmeC50aHJvd19saW5lXyA6IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCxjbGFzcyBSPgotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgZ2V0X2Vycm9yX2luZm9fcmV0dXJuX3R5cGUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgUiAqIHR5cGU7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULGNsYXNzIFI+Ci0gICAgICAgIHN0cnVjdAotICAgICAgICBnZXRfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxUIGNvbnN0LFI+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgY29uc3QgKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTk9fUlRUSQotICAgIHRlbXBsYXRlIDxjbGFzcyBFcnJvckluZm8+Ci0gICAgaW5saW5lCi0gICAgdHlwZW5hbWUgRXJyb3JJbmZvOjp2YWx1ZV90eXBlIGNvbnN0ICoKLSAgICBnZXRfZXJyb3JfaW5mbyggbmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdCAmIHggKQotICAgICAgICB7Ci0gICAgICAgIHJldHVybiBleGNlcHRpb25fZGV0YWlsOjpnZXRfaW5mbzxFcnJvckluZm8+OjpnZXQoeCk7Ci0gICAgICAgIH0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRXJyb3JJbmZvPgotICAgIGlubGluZQotICAgIHR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZSAqCi0gICAgZ2V0X2Vycm9yX2luZm8oIG5kbmJvb3N0OjpleGNlcHRpb24gJiB4ICkKLSAgICAgICAgewotICAgICAgICByZXR1cm4gZXhjZXB0aW9uX2RldGFpbDo6Z2V0X2luZm88RXJyb3JJbmZvPjo6Z2V0KHgpOwotICAgICAgICB9Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBFcnJvckluZm8sY2xhc3MgRT4KLSAgICBpbmxpbmUKLSAgICB0eXBlbmFtZSBleGNlcHRpb25fZGV0YWlsOjpnZXRfZXJyb3JfaW5mb19yZXR1cm5fdHlwZTxFLHR5cGVuYW1lIEVycm9ySW5mbzo6dmFsdWVfdHlwZT46OnR5cGUKLSAgICBnZXRfZXJyb3JfaW5mbyggRSAmIHNvbWVfZXhjZXB0aW9uICkKLSAgICAgICAgewotICAgICAgICBpZiggZXhjZXB0aW9uIGNvbnN0ICogeCA9IGR5bmFtaWNfY2FzdDxleGNlcHRpb24gY29uc3QgKj4oJnNvbWVfZXhjZXB0aW9uKSApCi0gICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uX2RldGFpbDo6Z2V0X2luZm88RXJyb3JJbmZvPjo6Z2V0KCp4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgIH0KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGY1NTA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vLyAgbmRuYm9vc3QvZmlsZXN5c3RlbS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDEwCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgTGlicmFyeSBob21lIHBhZ2U6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9GSUxFU1lTVEVNX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0ZJTEVTWVNURU1fSFBQCi0KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfRklMRVNZU1RFTV9GSUxFU1lTVEVNX0hQUCAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MGJlYzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLy8gIG5kbmJvb3N0L2ZpbGVzeXN0ZW0vdjMvY29uZmlnLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMwotCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotLy8gIExpYnJhcnkgaG9tZSBwYWdlOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ZpbGVzeXN0ZW0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTkZJR19IUFAKLSNkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTTNfQ09ORklHX0hQUAotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9WRVJTSU9OKSAmJiBORE5CT09TVF9GSUxFU1lTVEVNX1ZFUlNJT04gIT0gMwotIyAgIGVycm9yIENvbXBpbGluZyBGaWxlc3lzdGVtIHZlcnNpb24gMyBmaWxlIHdpdGggTkROQk9PU1RfRklMRVNZU1RFTV9WRVJTSU9OIGRlZmluZWQgIT0gMwotIyBlbmRpZgotCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fVkVSU0lPTikKLSMgICBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9WRVJTSU9OIDMKLSMgZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0kxOE4gIC8vIGFpZCB1c2VycyB3aXNoaW5nIHRvIGNvbXBpbGUgc2V2ZXJhbCB2ZXJzaW9ucwotCi0vLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIHNlcGFyYXRlIGNvbXBpbGF0aW9uIGZlYXR1cmVzIGFzIGRlc2NyaWJlZCBpbgotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9hcGlfY29uZmlnLmhwcD4gIC8vIGZvciBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+IAotCi0vLyAgTkROQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEIG5lZWRlZCBmb3Igc291cmNlIGNvbXBpbGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX1NPVVJDRQotIyAgIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0RFUFJFQ0FURUQKLSMgZW5kaWYKLQotLy8gIHRocm93IGFuIGV4Y2VwdGlvbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLwotLy8gIEV4Y2VwdGlvbnMgd2VyZSBvcmlnaW5hbGx5IHRocm93biB2aWEgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigpLgotLy8gIEFzIHRocm93X2V4Y2VwdGlvbigpIGJlY2FtZSBtb3JlIGNvbXBsZXgsIGl0IGNhdXNlZCB1c2VyIGVycm9yIHJlcG9ydGluZwotLy8gIHRvIGJlIGhhcmRlciB0byBpbnRlcnByZXQsIHNpbmNlIHRoZSBleGNlcHRpb24gcmVwb3J0ZWQgYmVjYW1lIG11Y2ggbW9yZSBjb21wbGV4LgotLy8gIFRoZSBpbW1lZGlhdGUgZml4IHdhcyB0byB0aHJvdyBkaXJlY3RseSwgd3JhcHBlZCBpbiBhIG1hY3JvIHRvIG1ha2UgYW55IGxhdGVyIGNoYW5nZQotLy8gIGVhc2llci4KLQotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX1RIUk9XKEVYKSB0aHJvdyBFWAotCi0jIGlmIGRlZmluZWQoIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HICkKLSMgICBlcnJvciBDb25maWd1cmF0aW9uIG5vdCBzdXBwb3J0ZWQ6IEJvb3N0LkZpbGVzeXN0ZW0gVjMgYW5kIGxhdGVyIHJlcXVpcmVzIHN0ZDo6d3N0cmluZyBzdXBwb3J0Ci0jIGVuZGlmCi0KLS8vICBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIHNlcGFyYXRlIGNvbXBpbGF0aW9uIGZlYXR1cmVzIGFzIGRlc2NyaWJlZCBpbgotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbAotCi0vLyAgbm9ybWFsaXplIG1hY3JvcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTkspIFwKLSAgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfU1RBVElDX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX1NUQVRJQ19MSU5LCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RZTl9MSU5LKQotIyBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSyAKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX1NUQVRJQ19MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX1NUQVRJQ19MSU5LKQotIyBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9TVEFUSUNfTElOSyAKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX0RZTl9MSU5LKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTkspCi0jIGVycm9yIE11c3Qgbm90IGRlZmluZSBib3RoIE5ETkJPT1NUX0ZJTEVTWVNURU1fRFlOX0xJTksgYW5kIE5ETkJPT1NUX0ZJTEVTWVNURU1fU1RBVElDX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX05PX0xJQikKLSMgZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fTElCIAotI2VuZGlmCi0KLS8vICBlbmFibGUgZHluYW1pYyBsaW5raW5nICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSykKLSMgaWYgZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX1NPVVJDRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgZWxzZSAKLSMgICBkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSNlbmRpZgotCi0vLyAgZW5hYmxlIGF1dG9tYXRpYyBsaWJyYXJ5IHZhcmlhbnQgc2VsZWN0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX1NPVVJDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgXAotICAmJiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX05PX0xJQikKLS8vCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdDoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X2ZpbGVzeXN0ZW0KLS8vCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdDoKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9EWU5fTElOSykKLSMgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotI2VuZGlmCi0vLwotLy8gQW5kIGluY2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRvZXMgdGhlIHdvcms6Ci0vLwotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPgotI2VuZGlmICAvLyBhdXRvLWxpbmtpbmcgZGlzYWJsZWQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTkZJR19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vY29udmVuaWVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTkxNzUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLyAgbmRuYm9vc3QvZmlsZXN5c3RlbS9jb252ZW5pZW5jZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzLCAyMDAyLTIwMDUKLS8vICBDb3B5cmlnaHQgVmxhZGltaXIgUHJ1cywgMjAwMgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9maWxlc3lzdGVtCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU0zX0NPTlZFTklFTkNFX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNM19DT05WRU5JRU5DRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSMgaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgKQotIyAgIGVycm9yIENvbmZpZ3VyYXRpb24gbm90IHN1cHBvcnRlZDogQm9vc3QuRmlsZXN5c3RlbSBWMyBhbmQgbGF0ZXIgcmVxdWlyZXMgc3RkOjp3c3RyaW5nIHN1cHBvcnQKLSMgZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAvLyBtdXN0IGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2UgZmlsZXN5c3RlbQotICB7Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotCi0gICAgaW5saW5lIHN0ZDo6c3RyaW5nIGV4dGVuc2lvbihjb25zdCBwYXRoICYgcCkKLSAgICB7Ci0gICAgICByZXR1cm4gcC5leHRlbnNpb24oKS5zdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc3RkOjpzdHJpbmcgYmFzZW5hbWUoY29uc3QgcGF0aCAmIHApCi0gICAgewotICAgICAgcmV0dXJuIHAuc3RlbSgpLnN0cmluZygpOwotICAgIH0KLQotICAgIGlubGluZSBwYXRoIGNoYW5nZV9leHRlbnNpb24oIGNvbnN0IHBhdGggJiBwLCBjb25zdCBwYXRoICYgbmV3X2V4dGVuc2lvbiApCi0gICAgeyAKLSAgICAgIHBhdGggbmV3X3AoIHAgKTsKLSAgICAgIG5ld19wLnJlcGxhY2VfZXh0ZW5zaW9uKCBuZXdfZXh0ZW5zaW9uICk7Ci0gICAgICByZXR1cm4gbmV3X3A7Ci0gICAgfQotCi0jIGVuZGlmCi0KLQotICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9wcmVmaXguaHBwIHByYWdtYXMKLSNlbmRpZiAvLyBORE5CT09TVF9GSUxFU1lTVEVNM19DT05WRU5JRU5DRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9kZXRhaWwvdXRmOF9jb2RlY3Z0X2ZhY2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4MjUxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vZGV0YWlsL3V0ZjhfY29kZWN2dF9mYWNldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMDEgUm9uYWxkIEdhcmNpYSwgSW5kaWFuYSBVbml2ZXJzaXR5IChnYXJjaWFAb3NsLml1LmVkdSkKLS8vIEFuZHJldyBMdW1zZGFpbmUsIEluZGlhbmEgVW5pdmVyc2l0eSAobHVtc0Bvc2wuaXUuZWR1KS4KLQotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9VVEY4X0NPREVDVlRfRkFDRVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fVVRGOF9DT0RFQ1ZUX0ZBQ0VUX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1VURjhfQkVHSU5fTkFNRVNQQUNFIFwKLSAgICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZpbGVzeXN0ZW0geyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2RlZmluZSBORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UgfX19Ci0jZGVmaW5lIE5ETkJPT1NUX1VURjhfREVDTCBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC91dGY4X2NvZGVjdnRfZmFjZXQuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVVRGOF9CRUdJTl9OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9VVEY4X0VORF9OQU1FU1BBQ0UKLSN1bmRlZiBORE5CT09TVF9VVEY4X0RFQ0wKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vb3BlcmF0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOTVlNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5NiArMCwwIEBACi0vLyAgbmRuYm9vc3QvZmlsZXN5c3RlbS9vcGVyYXRpb25zLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAyLTIwMDkKLS8vICBDb3B5cmlnaHQgSmFuIExhbmdlciAyMDAyCi0vLyAgQ29weXJpZ2h0IERpZXRtYXIgS3VlaGwgMjAwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS8vICBDb3B5cmlnaHQgVmxhZGltaXIgUHJ1cyAyMDAyCi0gICAKLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgTGlicmFyeSBob21lIHBhZ2U6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNM19PUEVSQVRJT05TX0hQUAotI2RlZmluZSBORE5CT09TVF9GSUxFU1lTVEVNM19PUEVSQVRJT05TX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotIyBpZiBkZWZpbmVkKCBORE5CT09TVF9OT19TVERfV1NUUklORyApCi0jICAgZXJyb3IgQ29uZmlndXJhdGlvbiBub3Qgc3VwcG9ydGVkOiBCb29zdC5GaWxlc3lzdGVtIFYzIGFuZCBsYXRlciByZXF1aXJlcyBzdGQ6OndzdHJpbmcgc3VwcG9ydAotIyBlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZmlsZXN5c3RlbS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc2NvcGVkX2VudW1fZW11bGF0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvYml0bWFzay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PiAvLyBmb3IgcGFpcgotI2luY2x1ZGUgPGN0aW1lPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxzdGFjaz4KLQotI2lmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0jICBpbmNsdWRlIDxmc3RyZWFtPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+IC8vIG11c3QgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2UgZmlsZXN5c3RlbQotICB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBlbnVtIGZpbGVfdHlwZQotICB7IAotICAgIHN0YXR1c19lcnJvciwKLSMgICBpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVECi0gICAgc3RhdHVzX3Vua25vd24gPSBzdGF0dXNfZXJyb3IsCi0jICAgZW5kaWYKLSAgICBmaWxlX25vdF9mb3VuZCwKLSAgICByZWd1bGFyX2ZpbGUsCi0gICAgZGlyZWN0b3J5X2ZpbGUsCi0gICAgLy8gdGhlIGZvbGxvd2luZyBtYXkgbm90IGFwcGx5IHRvIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgb3IgZmlsZSBzeXN0ZW1zCi0gICAgc3ltbGlua19maWxlLAotICAgIGJsb2NrX2ZpbGUsCi0gICAgY2hhcmFjdGVyX2ZpbGUsCi0gICAgZmlmb19maWxlLAotICAgIHNvY2tldF9maWxlLAotICAgIHJlcGFyc2VfZmlsZSwgIC8vIFdpbmRvd3M6IEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgdGhhdCBpcyBub3QgYSBzeW1saW5rCi0gICAgdHlwZV91bmtub3duLCAgLy8gZmlsZSBkb2VzIGV4aXN0LCBidXQgaXNuJ3Qgb25lIG9mIHRoZSBhYm92ZSB0eXBlcyBvcgotICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgc3Ryb25nIGVub3VnaCBwZXJtaXNzaW9uIHRvIGZpbmQgaXRzIHR5cGUKLQotICAgIF9kZXRhaWxfZGlyZWN0b3J5X3N5bWxpbmsgIC8vIGludGVybmFsIHVzZSBvbmx5OyBuZXZlciBleHBvc2VkIHRvIHVzZXJzCi0gIH07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBlbnVtIHBlcm1zCi0gIHsKLSAgICBub19wZXJtcyA9IDAsICAgICAgIC8vIGZpbGVfbm90X2ZvdW5kIGlzIG5vX3Blcm1zIHJhdGhlciB0aGFuIHBlcm1zX25vdF9rbm93bgotCi0gICAgLy8gUE9TSVggZXF1aXZhbGVudCBtYWNyb3MgZ2l2ZW4gaW4gY29tbWVudHMuCi0gICAgLy8gVmFsdWVzIGFyZSBmcm9tIFBPU0lYIGFuZCBhcmUgZ2l2ZW4gaW4gb2N0YWwgcGVyIHRoZSBQT1NJWCBzdGFuZGFyZC4KLQotICAgIC8vIHBlcm1pc3Npb24gYml0cwotICAgIAotICAgIG93bmVyX3JlYWQgPSAwNDAwLCAgLy8gU19JUlVTUiwgUmVhZCBwZXJtaXNzaW9uLCBvd25lcgotICAgIG93bmVyX3dyaXRlID0gMDIwMCwgLy8gU19JV1VTUiwgV3JpdGUgcGVybWlzc2lvbiwgb3duZXIKLSAgICBvd25lcl9leGUgPSAwMTAwLCAgIC8vIFNfSVhVU1IsIEV4ZWN1dGUvc2VhcmNoIHBlcm1pc3Npb24sIG93bmVyCi0gICAgb3duZXJfYWxsID0gMDcwMCwgICAvLyBTX0lSV1hVLCBSZWFkLCB3cml0ZSwgZXhlY3V0ZS9zZWFyY2ggYnkgb3duZXIKLQotICAgIGdyb3VwX3JlYWQgPSAwNDAsICAgLy8gU19JUkdSUCwgUmVhZCBwZXJtaXNzaW9uLCBncm91cAotICAgIGdyb3VwX3dyaXRlID0gMDIwLCAgLy8gU19JV0dSUCwgV3JpdGUgcGVybWlzc2lvbiwgZ3JvdXAKLSAgICBncm91cF9leGUgPSAwMTAsICAgIC8vIFNfSVhHUlAsIEV4ZWN1dGUvc2VhcmNoIHBlcm1pc3Npb24sIGdyb3VwCi0gICAgZ3JvdXBfYWxsID0gMDcwLCAgICAvLyBTX0lSV1hHLCBSZWFkLCB3cml0ZSwgZXhlY3V0ZS9zZWFyY2ggYnkgZ3JvdXAKLQotICAgIG90aGVyc19yZWFkID0gMDQsICAgLy8gU19JUk9USCwgUmVhZCBwZXJtaXNzaW9uLCBvdGhlcnMKLSAgICBvdGhlcnNfd3JpdGUgPSAwMiwgIC8vIFNfSVdPVEgsIFdyaXRlIHBlcm1pc3Npb24sIG90aGVycwotICAgIG90aGVyc19leGUgPSAwMSwgICAgLy8gU19JWE9USCwgRXhlY3V0ZS9zZWFyY2ggcGVybWlzc2lvbiwgb3RoZXJzCi0gICAgb3RoZXJzX2FsbCA9IDA3LCAgICAvLyBTX0lSV1hPLCBSZWFkLCB3cml0ZSwgZXhlY3V0ZS9zZWFyY2ggYnkgb3RoZXJzCi0KLSAgICBhbGxfYWxsID0gb3duZXJfYWxsfGdyb3VwX2FsbHxvdGhlcnNfYWxsLCAgLy8gMDc3NwotCi0gICAgLy8gb3RoZXIgUE9TSVggYml0cwotCi0gICAgc2V0X3VpZF9vbl9leGUgPSAwNDAwMCwgLy8gU19JU1VJRCwgU2V0LXVzZXItSUQgb24gZXhlY3V0aW9uCi0gICAgc2V0X2dpZF9vbl9leGUgPSAwMjAwMCwgLy8gU19JU0dJRCwgU2V0LWdyb3VwLUlEIG9uIGV4ZWN1dGlvbgotICAgIHN0aWNreV9iaXQgICAgID0gMDEwMDAsIC8vIFNfSVNWVFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFBPU0lYIFhTSSkgT24gZGlyZWN0b3JpZXMsIHJlc3RyaWN0ZWQgZGVsZXRpb24gZmxhZyAKLQkgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChWNykgJ3N0aWNreSBiaXQnOiBzYXZlIHN3YXBwZWQgdGV4dCBldmVuIGFmdGVyIHVzZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoU3VuT1MpIE9uIG5vbi1kaXJlY3RvcmllczogZG9uJ3QgY2FjaGUgdGhpcyBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFNWSUQtdjQuMikgT24gZGlyZWN0b3JpZXM6IHJlc3RyaWN0ZWQgZGVsZXRpb24gZmxhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsc28gc2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3RpY2t5X2JpdAotCi0gICAgcGVybXNfbWFzayA9IGFsbF9hbGx8c2V0X3VpZF9vbl9leGV8c2V0X2dpZF9vbl9leGV8c3RpY2t5X2JpdCwgIC8vIDA3Nzc3Ci0KLSAgICBwZXJtc19ub3Rfa25vd24gPSAweEZGRkYsIC8vIHByZXNlbnQgd2hlbiBkaXJlY3RvcnlfZW50cnkgY2FjaGUgbm90IGxvYWRlZAotCi0gICAgLy8gb3B0aW9ucyBmb3IgcGVybWlzc2lvbnMoKSBmdW5jdGlvbgotCi0gICAgYWRkX3Blcm1zID0gMHgxMDAwLCAgICAgLy8gYWRkcyB0aGUgZ2l2ZW4gcGVybWlzc2lvbiBiaXRzIHRvIHRoZSBjdXJyZW50IGJpdHMKLSAgICByZW1vdmVfcGVybXMgPSAweDIwMDAsICAvLyByZW1vdmVzIHRoZSBnaXZlbiBwZXJtaXNzaW9uIGJpdHMgZnJvbSB0aGUgY3VycmVudCBiaXRzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNob29zZSBhZGRfcGVybXMgb3IgcmVtb3ZlX3Blcm1zLCBub3QgYm90aDsgaWYgbmVpdGhlciBhZGRfcGVybXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3IgcmVtb3ZlX3Blcm1zIGlzIGdpdmVuLCByZXBsYWNlIHRoZSBjdXJyZW50IGJpdHMgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBnaXZlbiBiaXRzLgotCi0gICAgc3ltbGlua19wZXJtcyA9IDB4NDAwMCAgLy8gb24gUE9TSVgsIGRvbid0IHJlc29sdmUgc3ltbGlua3M7IGltcGxpZWQgb24gV2luZG93cwotICB9OwotCi0gIE5ETkJPT1NUX0JJVE1BU0socGVybXMpCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3N0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBjbGFzcyBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgZmlsZV9zdGF0dXMKLSAgewotICBwdWJsaWM6Ci0gICAgICAgICAgICAgZmlsZV9zdGF0dXMoKSAgICAgICAgICAgIDogbV92YWx1ZShzdGF0dXNfZXJyb3IpLCBtX3Blcm1zKHBlcm1zX25vdF9rbm93bikge30KLSAgICBleHBsaWNpdCBmaWxlX3N0YXR1cyhmaWxlX3R5cGUgdiwgcGVybXMgcHJtcyA9IHBlcm1zX25vdF9rbm93bikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtX3ZhbHVlKHYpLCBtX3Blcm1zKHBybXMpIHt9Ci0KLSAgICAvLyBvYnNlcnZlcnMKLSAgICBmaWxlX3R5cGUgIHR5cGUoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIHBlcm1zICAgICAgcGVybWlzc2lvbnMoKSBjb25zdCAgICAgICAgICAgICAgICB7IHJldHVybiBtX3Blcm1zOyB9IAotCi0gICAgLy8gbW9kaWZpZXJzCi0gICAgdm9pZCAgICAgICB0eXBlKGZpbGVfdHlwZSB2KSAgICAgICAgICAgICAgICAgIHsgbV92YWx1ZSA9IHY7IH0KLSAgICB2b2lkICAgICAgIHBlcm1pc3Npb25zKHBlcm1zIHBybXMpICAgICAgICAgICAgeyBtX3Blcm1zID0gcHJtczsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGZpbGVfc3RhdHVzJiByaHMpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSByaHMudHlwZSgpICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zKCkgPT0gcmhzLnBlcm1pc3Npb25zKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgZmlsZV9zdGF0dXMmIHJocykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSByaHMpOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBmaWxlX3R5cGUgICBtX3ZhbHVlOwotICAgIGVudW0gcGVybXMgIG1fcGVybXM7Ci0gIH07Ci0KLSAgaW5saW5lIGJvb2wgdHlwZV9wcmVzZW50KGZpbGVfc3RhdHVzIGYpIHsgcmV0dXJuIGYudHlwZSgpICE9IHN0YXR1c19lcnJvcjsgfQotICBpbmxpbmUgYm9vbCBwZXJtaXNzaW9uc19wcmVzZW50KGZpbGVfc3RhdHVzIGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGYucGVybWlzc2lvbnMoKSAhPSBwZXJtc19ub3Rfa25vd247fQotICBpbmxpbmUgYm9vbCBzdGF0dXNfa25vd24oZmlsZV9zdGF0dXMgZikgeyByZXR1cm4gdHlwZV9wcmVzZW50KGYpICYmIHBlcm1pc3Npb25zX3ByZXNlbnQoZik7IH0KLSAgaW5saW5lIGJvb2wgZXhpc3RzKGZpbGVfc3RhdHVzIGYpICAgICAgIHsgcmV0dXJuIGYudHlwZSgpICE9IHN0YXR1c19lcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgZi50eXBlKCkgIT0gZmlsZV9ub3RfZm91bmQ7IH0KLSAgaW5saW5lIGJvb2wgaXNfcmVndWxhcl9maWxlKGZpbGVfc3RhdHVzIGYpeyByZXR1cm4gZi50eXBlKCkgPT0gcmVndWxhcl9maWxlOyB9Ci0gIGlubGluZSBib29sIGlzX2RpcmVjdG9yeShmaWxlX3N0YXR1cyBmKSB7IHJldHVybiBmLnR5cGUoKSA9PSBkaXJlY3RvcnlfZmlsZTsgfQotICBpbmxpbmUgYm9vbCBpc19zeW1saW5rKGZpbGVfc3RhdHVzIGYpICAgeyByZXR1cm4gZi50eXBlKCkgPT0gc3ltbGlua19maWxlOyB9Ci0gIGlubGluZSBib29sIGlzX290aGVyKGZpbGVfc3RhdHVzIGYpICAgICB7IHJldHVybiBleGlzdHMoZikgJiYgIWlzX3JlZ3VsYXJfZmlsZShmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWlzX2RpcmVjdG9yeShmKSAmJiAhaXNfc3ltbGluayhmKTsgfQotCi0jIGlmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgaW5saW5lIGJvb2wgaXNfcmVndWxhcihmaWxlX3N0YXR1cyBmKSAgIHsgcmV0dXJuIGYudHlwZSgpID09IHJlZ3VsYXJfZmlsZTsgfQotIyBlbmRpZgotCi0gIHN0cnVjdCBzcGFjZV9pbmZvCi0gIHsKLSAgICAvLyBhbGwgdmFsdWVzIGFyZSBieXRlIGNvdW50cwotICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgY2FwYWNpdHk7Ci0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBmcmVlOyAgICAgIC8vIDw9IGNhcGFjaXR5Ci0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBhdmFpbGFibGU7IC8vIDw9IGZyZWUKLSAgfTsKLQotICBORE5CT09TVF9TQ09QRURfRU5VTV9TVEFSVChjb3B5X29wdGlvbikKLSAgICB7bm9uZSwgZmFpbF9pZl9leGlzdHMgPSBub25lLCBvdmVyd3JpdGVfaWZfZXhpc3RzfTsKLSAgTkROQk9PU1RfU0NPUEVEX0VOVU1fRU5ECi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBmaWxlX3N0YXR1cyBzdGF0dXMoY29uc3QgcGF0aCZwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3RhdHVzKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgYm9vbCBpc19lbXB0eShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHBhdGggaW5pdGlhbF9wYXRoKHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgY29uc3QgcGF0aCYgYmFzZSwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNvcHkoY29uc3QgcGF0aCYgZnJvbSwgY29uc3QgcGF0aCYgdG8sIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBjb3B5X2RpcmVjdG9yeShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oY29weV9vcHRpb24pIG9wdGlvbiwgIC8vIFNlZSB0aWNrZXQgIzI5MjUKLSAgICAgICAgICAgICAgICAgICAgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGNvcHlfc3ltbGluayhjb25zdCBwYXRoJiBleGlzdGluZ19zeW1saW5rLCBjb25zdCBwYXRoJiBuZXdfc3ltbGluaywgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBib29sIGNyZWF0ZV9kaXJlY3Rvcmllcyhjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGJvb2wgY3JlYXRlX2RpcmVjdG9yeShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBmcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBjcmVhdGVfaGFyZF9saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBmcm9tLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgY3JlYXRlX3N5bWxpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIGZyb20sIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCBjdXJyZW50X3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIGN1cnJlbnRfcGF0aChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIGJvb2wgZXF1aXZhbGVudChjb25zdCBwYXRoJiBwMSwgY29uc3QgcGF0aCYgcDIsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBmaWxlX3NpemUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBuZG5ib29zdDo6dWludG1heF90IGhhcmRfbGlua19jb3VudChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHN0ZDo6dGltZV90IGxhc3Rfd3JpdGVfdGltZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHAsIGNvbnN0IHN0ZDo6dGltZV90IG5ld190aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgdm9pZCBwZXJtaXNzaW9ucyhjb25zdCBwYXRoJiBwLCBwZXJtcyBwcm1zLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHBhdGggcmVhZF9zeW1saW5rKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgICAvLyBGb3Igc3RhbmRhcmRpemF0aW9uLCBpZiB0aGUgY29tbWl0dGVlIGRvZXNuJ3QgbGlrZSAicmVtb3ZlIiwgY29uc2lkZXIgImVsaW1pbmF0ZSIKLSAgICBib29sIHJlbW92ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgcmVtb3ZlX2FsbChjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHZvaWQgcmVuYW1lKGNvbnN0IHBhdGgmIG9sZF9wLCBjb25zdCBwYXRoJiBuZXdfcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICB2b2lkIHJlc2l6ZV9maWxlKGNvbnN0IHBhdGgmIHAsIHVpbnRtYXhfdCBzaXplLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApOwotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgIHNwYWNlX2luZm8gc3BhY2UoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsgCi0gICAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gICAgcGF0aCBzeXN0ZW1fY29tcGxldGUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBwYXRoIHRlbXBfZGlyZWN0b3J5X3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlKiBlYz0wKTsKLSAgICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBwYXRoIHVuaXF1ZV9wYXRoKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSogZWM9MCk7Ci0gIH0gIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgcXVlcnkgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBpbmxpbmUKLSAgZmlsZV9zdGF0dXMgc3RhdHVzKGNvbnN0IHBhdGgmIHApICAgIHtyZXR1cm4gZGV0YWlsOjpzdGF0dXMocCk7fQotICBpbmxpbmUgCi0gIGZpbGVfc3RhdHVzIHN0YXR1cyhjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnN0YXR1cyhwLCAmZWMpO30KLSAgaW5saW5lIAotICBmaWxlX3N0YXR1cyBzeW1saW5rX3N0YXR1cyhjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6c3ltbGlua19zdGF0dXMocCk7fQotICBpbmxpbmUKLSAgZmlsZV9zdGF0dXMgc3ltbGlua19zdGF0dXMoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpzeW1saW5rX3N0YXR1cyhwLCAmZWMpO30KLSAgaW5saW5lIAotICBib29sIGV4aXN0cyhjb25zdCBwYXRoJiBwKSAgICAgICAgICAge3JldHVybiBleGlzdHMoZGV0YWlsOjpzdGF0dXMocCkpO30KLSAgaW5saW5lIAotICBib29sIGV4aXN0cyhjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBleGlzdHMoZGV0YWlsOjpzdGF0dXMocCwgJmVjKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgaXNfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHApICAgICB7cmV0dXJuIGlzX2RpcmVjdG9yeShkZXRhaWw6OnN0YXR1cyhwKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgaXNfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGlzX2RpcmVjdG9yeShkZXRhaWw6OnN0YXR1cyhwLCAmZWMpKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19yZWd1bGFyX2ZpbGUoY29uc3QgcGF0aCYgcCkgIHtyZXR1cm4gaXNfcmVndWxhcl9maWxlKGRldGFpbDo6c3RhdHVzKHApKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19yZWd1bGFyX2ZpbGUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gaXNfcmVndWxhcl9maWxlKGRldGFpbDo6c3RhdHVzKHAsICZlYykpO30KLSAgaW5saW5lIAotICBib29sIGlzX290aGVyKGNvbnN0IHBhdGgmIHApICAgICAgICAge3JldHVybiBpc19vdGhlcihkZXRhaWw6OnN0YXR1cyhwKSk7fQotICBpbmxpbmUgCi0gIGJvb2wgaXNfb3RoZXIoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gaXNfb3RoZXIoZGV0YWlsOjpzdGF0dXMocCwgJmVjKSk7fQotICBpbmxpbmUKLSAgYm9vbCBpc19zeW1saW5rKGNvbnN0IHBhdGgmIHApICAgICAgIHtyZXR1cm4gaXNfc3ltbGluayhkZXRhaWw6OnN5bWxpbmtfc3RhdHVzKHApKTt9Ci0gIGlubGluZSAKLSAgYm9vbCBpc19zeW1saW5rKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGlzX3N5bWxpbmsoZGV0YWlsOjpzeW1saW5rX3N0YXR1cyhwLCAmZWMpKTt9Ci0jIGlmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgaW5saW5lCi0gIGJvb2wgaXNfcmVndWxhcihjb25zdCBwYXRoJiBwKSAgICAgICB7cmV0dXJuIGlzX3JlZ3VsYXIoZGV0YWlsOjpzdGF0dXMocCkpO30KLSAgaW5saW5lCi0gIGJvb2wgaXNfcmVndWxhcihjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBpc19yZWd1bGFyKGRldGFpbDo6c3RhdHVzKHAsICZlYykpO30KLSMgZW5kaWYKLQotICBpbmxpbmUKLSAgYm9vbCBpc19lbXB0eShjb25zdCBwYXRoJiBwKSAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjppc19lbXB0eShwKTt9Ci0gIGlubGluZQotICBib29sIGlzX2VtcHR5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6aXNfZW1wdHkocCwgJmVjKTt9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uYWwgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLCB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAKLSAgLy8gIGZvcndhcmQgZGVjbGFyYXRpb25zCi0gIHBhdGggY3VycmVudF9wYXRoKCk7ICAvLyBmd2QgZGVjbGFyYXRpb24KLSAgcGF0aCBpbml0aWFsX3BhdGgoKTsKLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgcGF0aCBhYnNvbHV0ZShjb25zdCBwYXRoJiBwLCBjb25zdCBwYXRoJiBiYXNlPWN1cnJlbnRfcGF0aCgpKTsKLSAgLy8gIElmIGJhc2UuaXNfYWJzb2x1dGUoKSwgdGhyb3dzIG5vdGhpbmcuIFRodXMgbm8gbmVlZCBmb3IgZWMgYXJndW1lbnQKLQotICBpbmxpbmUKLSAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgY29uc3QgcGF0aCYgYmFzZT1jdXJyZW50X3BhdGgoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjYW5vbmljYWwocCwgYmFzZSk7fQotICBpbmxpbmUKLSAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjYW5vbmljYWwocCwgY3VycmVudF9wYXRoKCksICZlYyk7fQotICBpbmxpbmUKLSAgcGF0aCBjYW5vbmljYWwoY29uc3QgcGF0aCYgcCwgY29uc3QgcGF0aCYgYmFzZSwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpjYW5vbmljYWwocCwgYmFzZSwgJmVjKTt9Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICBpbmxpbmUKLSAgcGF0aCBjb21wbGV0ZShjb25zdCBwYXRoJiBwKQotICB7Ci0gICAgcmV0dXJuIGFic29sdXRlKHAsIGluaXRpYWxfcGF0aCgpKTsKLSAgfQotCi0gIGlubGluZQotICBwYXRoIGNvbXBsZXRlKGNvbnN0IHBhdGgmIHAsIGNvbnN0IHBhdGgmIGJhc2UpCi0gIHsKLSAgICByZXR1cm4gYWJzb2x1dGUocCwgYmFzZSk7Ci0gIH0KLSMgZW5kaWYKLQotICBpbmxpbmUKLSAgdm9pZCBjb3B5KGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvKSB7ZGV0YWlsOjpjb3B5KGZyb20sIHRvKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgY29weShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5KGZyb20sIHRvLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9kaXJlY3RvcnkoY29uc3QgcGF0aCYgZnJvbSwgY29uc3QgcGF0aCYgdG8pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5X2RpcmVjdG9yeShmcm9tLCB0byk7fQotICBpbmxpbmUKLSAgdm9pZCBjb3B5X2RpcmVjdG9yeShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZGlyZWN0b3J5KGZyb20sIHRvLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9maWxlKGNvbnN0IHBhdGgmIGZyb20sIGNvbnN0IHBhdGgmIHRvLCAgIC8vIFNlZSB0aWNrZXQgIzI5MjUKLSAgICAgICAgICAgICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oY29weV9vcHRpb24pIG9wdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZmlsZShmcm9tLCB0bywgb3B0aW9uKTt9Ci0gIGlubGluZQotICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZmlsZShmcm9tLCB0bywgY29weV9vcHRpb246OmZhaWxfaWZfZXhpc3RzKTt9Ci0gIGlubGluZQotICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgICAvLyBTZWUgdGlja2V0ICMyOTI1Ci0gICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NDT1BFRF9FTlVNKGNvcHlfb3B0aW9uKSBvcHRpb24sIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5X2ZpbGUoZnJvbSwgdG8sIG9wdGlvbiwgJmVjKTt9Ci0gIGlubGluZQotICB2b2lkIGNvcHlfZmlsZShjb25zdCBwYXRoJiBmcm9tLCBjb25zdCBwYXRoJiB0bywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNvcHlfZmlsZShmcm9tLCB0bywgY29weV9vcHRpb246OmZhaWxfaWZfZXhpc3RzLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY29weV9zeW1saW5rKGNvbnN0IHBhdGgmIGV4aXN0aW5nX3N5bWxpbmssIGNvbnN0IHBhdGgmIG5ld19zeW1saW5rKSB7ZGV0YWlsOjpjb3B5X3N5bWxpbmsoZXhpc3Rpbmdfc3ltbGluaywgbmV3X3N5bWxpbmspO30KLQotICBpbmxpbmUKLSAgdm9pZCBjb3B5X3N5bWxpbmsoY29uc3QgcGF0aCYgZXhpc3Rpbmdfc3ltbGluaywgY29uc3QgcGF0aCYgbmV3X3N5bWxpbmssIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpjb3B5X3N5bWxpbmsoZXhpc3Rpbmdfc3ltbGluaywgbmV3X3N5bWxpbmssICZlYyk7fQotICBpbmxpbmUKLSAgYm9vbCBjcmVhdGVfZGlyZWN0b3JpZXMoY29uc3QgcGF0aCYgcCkge3JldHVybiBkZXRhaWw6OmNyZWF0ZV9kaXJlY3RvcmllcyhwKTt9Ci0KLSAgaW5saW5lCi0gIGJvb2wgY3JlYXRlX2RpcmVjdG9yaWVzKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6Y3JlYXRlX2RpcmVjdG9yaWVzKHAsICZlYyk7fQotICBpbmxpbmUKLSAgYm9vbCBjcmVhdGVfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHApIHtyZXR1cm4gZGV0YWlsOjpjcmVhdGVfZGlyZWN0b3J5KHApO30KLQotICBpbmxpbmUKLSAgYm9vbCBjcmVhdGVfZGlyZWN0b3J5KGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6Y3JlYXRlX2RpcmVjdG9yeShwLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgY3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBmcm9tKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y3JlYXRlX2RpcmVjdG9yeV9zeW1saW5rKHRvLCBmcm9tKTt9Ci0gIGlubGluZQotICB2b2lkIGNyZWF0ZV9kaXJlY3Rvcnlfc3ltbGluayhjb25zdCBwYXRoJiB0bywgY29uc3QgcGF0aCYgZnJvbSwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OmNyZWF0ZV9kaXJlY3Rvcnlfc3ltbGluayh0bywgZnJvbSwgJmVjKTt9Ci0gIGlubGluZQotICB2b2lkIGNyZWF0ZV9oYXJkX2xpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIG5ld19oYXJkX2xpbmspIHtkZXRhaWw6OmNyZWF0ZV9oYXJkX2xpbmsodG8sIG5ld19oYXJkX2xpbmspO30KLQotICBpbmxpbmUKLSAgdm9pZCBjcmVhdGVfaGFyZF9saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBuZXdfaGFyZF9saW5rLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y3JlYXRlX2hhcmRfbGluayh0bywgbmV3X2hhcmRfbGluaywgJmVjKTt9Ci0gIGlubGluZQotICB2b2lkIGNyZWF0ZV9zeW1saW5rKGNvbnN0IHBhdGgmIHRvLCBjb25zdCBwYXRoJiBuZXdfc3ltbGluaykge2RldGFpbDo6Y3JlYXRlX3N5bWxpbmsodG8sIG5ld19zeW1saW5rKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgY3JlYXRlX3N5bWxpbmsoY29uc3QgcGF0aCYgdG8sIGNvbnN0IHBhdGgmIG5ld19zeW1saW5rLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6Y3JlYXRlX3N5bWxpbmsodG8sIG5ld19zeW1saW5rLCAmZWMpO30KLSAgaW5saW5lCi0gIHBhdGggY3VycmVudF9wYXRoKCkgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6Y3VycmVudF9wYXRoKCk7fQotCi0gIGlubGluZQotICBwYXRoIGN1cnJlbnRfcGF0aChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7cmV0dXJuIGRldGFpbDo6Y3VycmVudF9wYXRoKCZlYyk7fQotCi0gIGlubGluZQotICB2b2lkIGN1cnJlbnRfcGF0aChjb25zdCBwYXRoJiBwKSAgICAge2RldGFpbDo6Y3VycmVudF9wYXRoKHApO30KLQotICBpbmxpbmUKLSAgdm9pZCBjdXJyZW50X3BhdGgoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykge2RldGFpbDo6Y3VycmVudF9wYXRoKHAsICZlYyk7fQotCi0gIGlubGluZQotICBib29sIGVxdWl2YWxlbnQoY29uc3QgcGF0aCYgcDEsIGNvbnN0IHBhdGgmIHAyKSB7cmV0dXJuIGRldGFpbDo6ZXF1aXZhbGVudChwMSwgcDIpO30KLQotICBpbmxpbmUKLSAgYm9vbCBlcXVpdmFsZW50KGNvbnN0IHBhdGgmIHAxLCBjb25zdCBwYXRoJiBwMiwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjplcXVpdmFsZW50KHAxLCBwMiwgJmVjKTt9Ci0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IGZpbGVfc2l6ZShjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6ZmlsZV9zaXplKHApO30KLQotICBpbmxpbmUKLSAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBmaWxlX3NpemUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpmaWxlX3NpemUocCwgJmVjKTt9Ci0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IGhhcmRfbGlua19jb3VudChjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6aGFyZF9saW5rX2NvdW50KHApO30KLQotICBpbmxpbmUKLSAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBoYXJkX2xpbmtfY291bnQoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpoYXJkX2xpbmtfY291bnQocCwgJmVjKTt9Ci0gIGlubGluZQotICBwYXRoIGluaXRpYWxfcGF0aCgpICAgICAgICAgICAgICAgICAge3JldHVybiBkZXRhaWw6OmluaXRpYWxfcGF0aCgpO30KLQotICBpbmxpbmUKLSAgcGF0aCBpbml0aWFsX3BhdGgoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykge3JldHVybiBkZXRhaWw6OmluaXRpYWxfcGF0aCgmZWMpO30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgUGF0aD4KLSAgcGF0aCBpbml0aWFsX3BhdGgoKSB7cmV0dXJuIGluaXRpYWxfcGF0aCgpO30KLSAgdGVtcGxhdGUgPGNsYXNzIFBhdGg+Ci0gIHBhdGggaW5pdGlhbF9wYXRoKHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIHtyZXR1cm4gZGV0YWlsOjppbml0aWFsX3BhdGgoJmVjKTt9Ci0KLSAgaW5saW5lCi0gIHN0ZDo6dGltZV90IGxhc3Rfd3JpdGVfdGltZShjb25zdCBwYXRoJiBwKSB7cmV0dXJuIGRldGFpbDo6bGFzdF93cml0ZV90aW1lKHApO30KLQotICBpbmxpbmUKLSAgc3RkOjp0aW1lX3QgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6bGFzdF93cml0ZV90aW1lKHAsICZlYyk7fQotICBpbmxpbmUKLSAgdm9pZCBsYXN0X3dyaXRlX3RpbWUoY29uc3QgcGF0aCYgcCwgY29uc3Qgc3RkOjp0aW1lX3QgbmV3X3RpbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpsYXN0X3dyaXRlX3RpbWUocCwgbmV3X3RpbWUpO30KLSAgaW5saW5lCi0gIHZvaWQgbGFzdF93cml0ZV90aW1lKGNvbnN0IHBhdGgmIHAsIGNvbnN0IHN0ZDo6dGltZV90IG5ld190aW1lLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RldGFpbDo6bGFzdF93cml0ZV90aW1lKHAsIG5ld190aW1lLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgcGVybWlzc2lvbnMoY29uc3QgcGF0aCYgcCwgcGVybXMgcHJtcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OnBlcm1pc3Npb25zKHAsIHBybXMpO30KLSAgaW5saW5lCi0gIHZvaWQgcGVybWlzc2lvbnMoY29uc3QgcGF0aCYgcCwgcGVybXMgcHJtcywgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXRhaWw6OnBlcm1pc3Npb25zKHAsIHBybXMsICZlYyk7fQotCi0gIGlubGluZQotICBwYXRoIHJlYWRfc3ltbGluayhjb25zdCBwYXRoJiBwKSAgICAge3JldHVybiBkZXRhaWw6OnJlYWRfc3ltbGluayhwKTt9Ci0KLSAgaW5saW5lCi0gIHBhdGggcmVhZF9zeW1saW5rKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6cmVhZF9zeW1saW5rKHAsICZlYyk7fQotICBpbmxpbmUKLSAgICAvLyBGb3Igc3RhbmRhcmRpemF0aW9uLCBpZiB0aGUgY29tbWl0dGVlIGRvZXNuJ3QgbGlrZSAicmVtb3ZlIiwgY29uc2lkZXIgImVsaW1pbmF0ZSIKLSAgYm9vbCByZW1vdmUoY29uc3QgcGF0aCYgcCkgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpyZW1vdmUocCk7fQotCi0gIGlubGluZQotICBib29sIHJlbW92ZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7cmV0dXJuIGRldGFpbDo6cmVtb3ZlKHAsICZlYyk7fQotCi0gIGlubGluZQotICBuZG5ib29zdDo6dWludG1heF90IHJlbW92ZV9hbGwoY29uc3QgcGF0aCYgcCkge3JldHVybiBkZXRhaWw6OnJlbW92ZV9hbGwocCk7fQotICAgIAotICBpbmxpbmUKLSAgbmRuYm9vc3Q6OnVpbnRtYXhfdCByZW1vdmVfYWxsKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIGRldGFpbDo6cmVtb3ZlX2FsbChwLCAmZWMpO30KLSAgaW5saW5lCi0gIHZvaWQgcmVuYW1lKGNvbnN0IHBhdGgmIG9sZF9wLCBjb25zdCBwYXRoJiBuZXdfcCkge2RldGFpbDo6cmVuYW1lKG9sZF9wLCBuZXdfcCk7fQotCi0gIGlubGluZQotICB2b2lkIHJlbmFtZShjb25zdCBwYXRoJiBvbGRfcCwgY29uc3QgcGF0aCYgbmV3X3AsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpyZW5hbWUob2xkX3AsIG5ld19wLCAmZWMpO30KLSAgaW5saW5lICAvLyBuYW1lIHN1Z2dlc3RlZCBieSBTY290dCBNY011cnJheQotICB2b2lkIHJlc2l6ZV9maWxlKGNvbnN0IHBhdGgmIHAsIHVpbnRtYXhfdCBzaXplKSB7ZGV0YWlsOjpyZXNpemVfZmlsZShwLCBzaXplKTt9Ci0KLSAgaW5saW5lCi0gIHZvaWQgcmVzaXplX2ZpbGUoY29uc3QgcGF0aCYgcCwgdWludG1heF90IHNpemUsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV0YWlsOjpyZXNpemVfZmlsZShwLCBzaXplLCAmZWMpO30KLSAgaW5saW5lCi0gIHNwYWNlX2luZm8gc3BhY2UoY29uc3QgcGF0aCYgcCkgICAgICB7cmV0dXJuIGRldGFpbDo6c3BhY2UocCk7fSAKLQotICBpbmxpbmUKLSAgc3BhY2VfaW5mbyBzcGFjZShjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSB7cmV0dXJuIGRldGFpbDo6c3BhY2UocCwgJmVjKTt9IAotCi0jIGlmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgaW5saW5lIGJvb2wgc3ltYm9saWNfbGlua19leGlzdHMoY29uc3QgcGF0aCYgcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGlzX3N5bWxpbmsoc3ltbGlua19zdGF0dXMocCkpOyB9Ci0jIGVuZGlmCi0KLSAgaW5saW5lCi0gIHBhdGggc3lzdGVtX2NvbXBsZXRlKGNvbnN0IHBhdGgmIHApICB7cmV0dXJuIGRldGFpbDo6c3lzdGVtX2NvbXBsZXRlKHApO30KLQotICBpbmxpbmUKLSAgcGF0aCBzeXN0ZW1fY29tcGxldGUoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjpzeXN0ZW1fY29tcGxldGUocCwgJmVjKTt9Ci0gIGlubGluZQotICBwYXRoIHRlbXBfZGlyZWN0b3J5X3BhdGgoKSAgICAgICAgICAge3JldHVybiBkZXRhaWw6OnRlbXBfZGlyZWN0b3J5X3BhdGgoKTt9Ci0KLSAgaW5saW5lCi0gIHBhdGggdGVtcF9kaXJlY3RvcnlfcGF0aChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gZGV0YWlsOjp0ZW1wX2RpcmVjdG9yeV9wYXRoKCZlYyk7fQotICBpbmxpbmUKLSAgcGF0aCB1bmlxdWVfcGF0aChjb25zdCBwYXRoJiBwPSIlJSUlLSUlJSUtJSUlJS0lJSUlIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGRldGFpbDo6dW5pcXVlX3BhdGgocCk7IH0KLSAgaW5saW5lCi0gIHBhdGggdW5pcXVlX3BhdGgoY29uc3QgcGF0aCYgcCwgc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGRldGFpbDo6dW5pcXVlX3BhdGgocCwgJmVjKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnlfZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgR0NDIGhhcyBhIHByb2JsZW0gd2l0aCBhIG1lbWJlciBmdW5jdGlvbiBuYW1lZCBwYXRoIHdpdGhpbiBhIG5hbWVzcGFjZSBvciAKLS8vICBzdWItbmFtZXNwYWNlIHRoYXQgYWxzbyBoYXMgYSBjbGFzcyBuYW1lZCBwYXRoLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBhbHdheXMKLS8vICBmdWxseSBxdWFsaWZ5IHRoZSBuYW1lIHBhdGggd2hlbiBpdCByZWZlcnMgdG8gdGhlIGNsYXNzIG5hbWUuCi0KLWNsYXNzIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBkaXJlY3RvcnlfZW50cnkKLXsKLXB1YmxpYzoKLQotICAvLyBjb21waWxlciBnZW5lcmF0ZWQgY29weSBjb25zdHJ1Y3RvciwgY29weSBhc3NpZ25tZW50LCBhbmQgZGVzdHJ1Y3RvciBhcHBseQotCi0gIGRpcmVjdG9yeV9lbnRyeSgpIHt9Ci0gIGV4cGxpY2l0IGRpcmVjdG9yeV9lbnRyeShjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgcCwKLSAgICBmaWxlX3N0YXR1cyBzdCA9IGZpbGVfc3RhdHVzKCksIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3Q9ZmlsZV9zdGF0dXMoKSkKLSAgICA6IG1fcGF0aChwKSwgbV9zdGF0dXMoc3QpLCBtX3N5bWxpbmtfc3RhdHVzKHN5bWxpbmtfc3QpCi0gICAge30KLQotICB2b2lkIGFzc2lnbihjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgcCwKLSAgICBmaWxlX3N0YXR1cyBzdCA9IGZpbGVfc3RhdHVzKCksIGZpbGVfc3RhdHVzIHN5bWxpbmtfc3QgPSBmaWxlX3N0YXR1cygpKQotICAgIHsgbV9wYXRoID0gcDsgbV9zdGF0dXMgPSBzdDsgbV9zeW1saW5rX3N0YXR1cyA9IHN5bWxpbmtfc3Q7IH0KLQotICB2b2lkIHJlcGxhY2VfZmlsZW5hbWUoY29uc3QgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGgmIHAsCi0gICAgZmlsZV9zdGF0dXMgc3QgPSBmaWxlX3N0YXR1cygpLCBmaWxlX3N0YXR1cyBzeW1saW5rX3N0ID0gZmlsZV9zdGF0dXMoKSkKLSAgewotICAgIG1fcGF0aC5yZW1vdmVfZmlsZW5hbWUoKTsKLSAgICBtX3BhdGggLz0gcDsKLSAgICBtX3N0YXR1cyA9IHN0OwotICAgIG1fc3ltbGlua19zdGF0dXMgPSBzeW1saW5rX3N0OwotICB9Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICB2b2lkIHJlcGxhY2VfbGVhZihjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgcCwKLSAgICBmaWxlX3N0YXR1cyBzdCwgZmlsZV9zdGF0dXMgc3ltbGlua19zdCkKLSAgICAgIHsgcmVwbGFjZV9maWxlbmFtZShwLCBzdCwgc3ltbGlua19zdCk7IH0KLSMgZW5kaWYKLQotICBjb25zdCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aCYgIHBhdGgoKSBjb25zdCAgICAgICAgICAgICAgIHtyZXR1cm4gbV9wYXRoO30KLSAgZmlsZV9zdGF0dXMgICBzdGF0dXMoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIG1fZ2V0X3N0YXR1cygpO30KLSAgZmlsZV9zdGF0dXMgICBzdGF0dXMoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykgY29uc3QgICAgICAgICB7cmV0dXJuIG1fZ2V0X3N0YXR1cygmZWMpO30KLSAgZmlsZV9zdGF0dXMgICBzeW1saW5rX3N0YXR1cygpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICB7cmV0dXJuIG1fZ2V0X3N5bWxpbmtfc3RhdHVzKCk7fQotICBmaWxlX3N0YXR1cyAgIHN5bWxpbmtfc3RhdHVzKHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpIGNvbnN0IHtyZXR1cm4gbV9nZXRfc3ltbGlua19zdGF0dXMoJmVjKTt9Ci0KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSYgcmhzKSB7cmV0dXJuIG1fcGF0aCA9PSByaHMubV9wYXRoO30gCi0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBkaXJlY3RvcnlfZW50cnkmIHJocykge3JldHVybiBtX3BhdGggIT0gcmhzLm1fcGF0aDt9IAotICBib29sIG9wZXJhdG9yPCAoY29uc3QgZGlyZWN0b3J5X2VudHJ5JiByaHMpIHtyZXR1cm4gbV9wYXRoIDwgcmhzLm1fcGF0aDt9IAotICBib29sIG9wZXJhdG9yPD0oY29uc3QgZGlyZWN0b3J5X2VudHJ5JiByaHMpIHtyZXR1cm4gbV9wYXRoIDw9IHJocy5tX3BhdGg7fSAKLSAgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IGRpcmVjdG9yeV9lbnRyeSYgcmhzKSB7cmV0dXJuIG1fcGF0aCA+IHJocy5tX3BhdGg7fSAKLSAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGRpcmVjdG9yeV9lbnRyeSYgcmhzKSB7cmV0dXJuIG1fcGF0aCA+PSByaHMubV9wYXRoO30gCi0KLXByaXZhdGU6Ci0gIG5kbmJvb3N0OjpmaWxlc3lzdGVtOjpwYXRoICAgbV9wYXRoOwotICBtdXRhYmxlIGZpbGVfc3RhdHVzICAgICAgIG1fc3RhdHVzOyAgICAgICAgICAgLy8gc3RhdCgpLWxpa2UKLSAgbXV0YWJsZSBmaWxlX3N0YXR1cyAgICAgICBtX3N5bWxpbmtfc3RhdHVzOyAgIC8vIGxzdGF0KCktbGlrZQotCi0gIGZpbGVfc3RhdHVzIG1fZ2V0X3N0YXR1cyhzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApIGNvbnN0OwotICBmaWxlX3N0YXR1cyBtX2dldF9zeW1saW5rX3N0YXR1cyhzeXN0ZW06OmVycm9yX2NvZGUqIGVjPTApIGNvbnN0OwotfTsgLy8gZGlyZWN0b3J5X2VudHJ5Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnlfaXRlcmF0b3IgaGVscGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIGRpcmVjdG9yeV9pdGVyYXRvcjsKLQotbmFtZXNwYWNlIGRldGFpbAotewotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgICBzeXN0ZW06OmVycm9yX2NvZGUgZGlyX2l0cl9jbG9zZSgvLyBuZXZlciB0aHJvd3MoKQotICAgIHZvaWQgKiYgaGFuZGxlCi0jICAgaWYgICAgIGRlZmluZWQoTkROQk9PU1RfUE9TSVhfQVBJKQotICAgICwgdm9pZCAqJiBidWZmZXIKLSMgICBlbmRpZgotICApOyAKLQotICBzdHJ1Y3QgZGlyX2l0cl9pbXAKLSAgewotICAgIGRpcmVjdG9yeV9lbnRyeSAgZGlyX2VudHJ5OwotICAgIHZvaWQqICAgICAgICAgICAgaGFuZGxlOwotCi0jICAgaWZkZWYgTkROQk9PU1RfUE9TSVhfQVBJCi0gICAgdm9pZCogICAgICAgICAgICBidWZmZXI7ICAvLyBzZWUgZGlyX2l0cl9pbmNyZW1lbnQgaW1wbGVtZW50YXRpb24KLSMgICBlbmRpZgotCi0gICAgZGlyX2l0cl9pbXAoKSA6IGhhbmRsZSgwKQotIyAgIGlmZGVmIE5ETkJPT1NUX1BPU0lYX0FQSQotICAgICAgLCBidWZmZXIoMCkKLSMgICBlbmRpZgotICAgIHt9Ci0KLSAgICB+ZGlyX2l0cl9pbXAoKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICBkaXJfaXRyX2Nsb3NlKGhhbmRsZQotIyAgICAgICBpZiBkZWZpbmVkKE5ETkJPT1NUX1BPU0lYX0FQSSkKLSAgICAgICAgICwgYnVmZmVyCi0jICAgICAgIGVuZGlmCi0gICAgKTsKLSAgICB9Ci0gIH07Ci0KLSAgLy8gc2VlIHBhdGg6Oml0ZXJhdG9yOiBjb21tZW50IGJlbG93Ci0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCB2b2lkIGRpcmVjdG9yeV9pdGVyYXRvcl9jb25zdHJ1Y3QoZGlyZWN0b3J5X2l0ZXJhdG9yJiBpdCwKLSAgICBjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHZvaWQgZGlyZWN0b3J5X2l0ZXJhdG9yX2luY3JlbWVudChkaXJlY3RvcnlfaXRlcmF0b3ImIGl0LAotICAgIHN5c3RlbTo6ZXJyb3JfY29kZSogZWMpOwotCi19ICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgY2xhc3MgZGlyZWN0b3J5X2l0ZXJhdG9yCi0gICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTwgZGlyZWN0b3J5X2l0ZXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeV9lbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZyA+Ci0gIHsKLSAgcHVibGljOgotCi0gICAgZGlyZWN0b3J5X2l0ZXJhdG9yKCl7fSAgLy8gY3JlYXRlcyB0aGUgImVuZCIgaXRlcmF0b3IKLQotICAgIC8vIGl0ZXJhdG9yX2ZhY2FkZSBkZXJpdmVkIGNsYXNzZXMgZG9uJ3Qgc2VlbSB0byBsaWtlIGltcGxlbWVudGF0aW9ucyBpbgotICAgIC8vIHNlcGFyYXRlIHRyYW5zbGF0aW9uIHVuaXQgZGxsJ3MsIHNvIGZvcndhcmQgdG8gZGV0YWlsIGZ1bmN0aW9ucwotICAgIGV4cGxpY2l0IGRpcmVjdG9yeV9pdGVyYXRvcihjb25zdCBwYXRoJiBwKQotICAgICAgICA6IG1faW1wKG5ldyBkZXRhaWw6OmRpcl9pdHJfaW1wKQotICAgICAgICAgIHsgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfY29uc3RydWN0KCp0aGlzLCBwLCAwKTsgfQotCi0gICAgZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmIHAsIHN5c3RlbTo6ZXJyb3JfY29kZSYgZWMpCi0gICAgICAgIDogbV9pbXAobmV3IGRldGFpbDo6ZGlyX2l0cl9pbXApCi0gICAgICAgICAgeyBkZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcl9jb25zdHJ1Y3QoKnRoaXMsIHAsICZlYyk7IH0KLQotICAgfmRpcmVjdG9yeV9pdGVyYXRvcigpIHt9IC8vIG5ldmVyIHRocm93cwotCi0gICAgZGlyZWN0b3J5X2l0ZXJhdG9yJiBpbmNyZW1lbnQoc3lzdGVtOjplcnJvcl9jb2RlJiBlYykKLSAgICB7IAotICAgICAgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfaW5jcmVtZW50KCp0aGlzLCAmZWMpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIGZyaWVuZCBzdHJ1Y3QgZGV0YWlsOjpkaXJfaXRyX2ltcDsKLSAgICBmcmllbmQgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHZvaWQgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfY29uc3RydWN0KGRpcmVjdG9yeV9pdGVyYXRvciYgaXQsCi0gICAgICBjb25zdCBwYXRoJiBwLCBzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsKLSAgICBmcmllbmQgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHZvaWQgZGV0YWlsOjpkaXJlY3RvcnlfaXRlcmF0b3JfaW5jcmVtZW50KGRpcmVjdG9yeV9pdGVyYXRvciYgaXQsCi0gICAgICBzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsKLQotICAgIC8vIHNoYXJlZF9wdHIgcHJvdmlkZXMgc2hhbGxvdy1jb3B5IHNlbWFudGljcyByZXF1aXJlZCBmb3IgSW5wdXRJdGVyYXRvcnMuCi0gICAgLy8gbV9pbXAuZ2V0KCk9PTAgaW5kaWNhdGVzIHRoZSBlbmQgaXRlcmF0b3IuCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IGRldGFpbDo6ZGlyX2l0cl9pbXAgPiAgbV9pbXA7Ci0KLSAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6Oml0ZXJhdG9yX2NvcmVfYWNjZXNzOwotCi0gICAgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTwKLSAgICAgIGRpcmVjdG9yeV9pdGVyYXRvciwKLSAgICAgIGRpcmVjdG9yeV9lbnRyeSwKLSAgICAgIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnID46OnJlZmVyZW5jZSBkZXJlZmVyZW5jZSgpIGNvbnN0IAotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksICJhdHRlbXB0IHRvIGRlcmVmZXJlbmNlIGVuZCBpdGVyYXRvciIpOwotICAgICAgcmV0dXJuIG1faW1wLT5kaXJfZW50cnk7Ci0gICAgfQotCi0gICAgdm9pZCBpbmNyZW1lbnQoKSB7IGRldGFpbDo6ZGlyZWN0b3J5X2l0ZXJhdG9yX2luY3JlbWVudCgqdGhpcywgMCk7IH0KLQotICAgIGJvb2wgZXF1YWwoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiByaHMpIGNvbnN0Ci0gICAgICB7IHJldHVybiBtX2ltcCA9PSByaHMubV9pbXA7IH0KLSAgfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IgaGVscGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBORE5CT09TVF9TQ09QRURfRU5VTV9TVEFSVChzeW1saW5rX29wdGlvbikKLSAgewotICAgIG5vbmUsCi0gICAgbm9fcmVjdXJzZSA9IG5vbmUsICAgICAgICAgLy8gZG9uJ3QgZm9sbG93IGRpcmVjdG9yeSBzeW1saW5rcyAoZGVmYXVsdCBiZWhhdmlvcikKLSAgICByZWN1cnNlLCAgICAgICAgICAgICAgICAgICAvLyBmb2xsb3cgZGlyZWN0b3J5IHN5bWxpbmtzCi0gICAgX2RldGFpbF9ub19wdXNoID0gcmVjdXJzZSA8PCAxICAvLyBpbnRlcm5hbCB1c2Ugb25seQotICB9OwotICBORE5CT09TVF9TQ09QRURfRU5VTV9FTkQKLQotICBORE5CT09TVF9CSVRNQVNLKE5ETkJPT1NUX1NDT1BFRF9FTlVNKHN5bWxpbmtfb3B0aW9uKSkKLQotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICBzdHJ1Y3QgcmVjdXJfZGlyX2l0cl9pbXAKLSAgICB7Ci0gICAgICB0eXBlZGVmIGRpcmVjdG9yeV9pdGVyYXRvciBlbGVtZW50X3R5cGU7Ci0gICAgICBzdGQ6OnN0YWNrPCBlbGVtZW50X3R5cGUsIHN0ZDo6dmVjdG9yPCBlbGVtZW50X3R5cGUgPiA+IG1fc3RhY2s7Ci0gICAgICBpbnQgIG1fbGV2ZWw7Ci0gICAgICBORE5CT09TVF9TQ09QRURfRU5VTShzeW1saW5rX29wdGlvbikgbV9vcHRpb25zOwotCi0gICAgICByZWN1cl9kaXJfaXRyX2ltcCgpIDogbV9sZXZlbCgwKSwgbV9vcHRpb25zKHN5bWxpbmtfb3B0aW9uOjpub25lKSB7fQotCi0gICAgICB2b2lkIGluY3JlbWVudChzeXN0ZW06OmVycm9yX2NvZGUqIGVjKTsgIC8vIGVjID09IDAgbWVhbnMgdGhyb3cgb24gZXJyb3IKLQotICAgICAgdm9pZCBwb3AoKTsKLQotICAgIH07Ci0KLSAgICAvLyAgSW1wbGVtZW50YXRpb24gaXMgaW5saW5lIHRvIGF2b2lkIGR5bmFtaWMgbGlua2luZyBkaWZmaWN1bHRpZXMgd2l0aCBtX3N0YWNrOgotICAgIC8vICBNaWNyb3NvZnQgd2FybmluZyBDNDI1MSwgbV9zdGFjayBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8gYmUgdXNlZCBieQotICAgIC8vICBjbGllbnRzIG9mIHN0cnVjdCAnbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OmRldGFpbDo6cmVjdXJfZGlyX2l0cl9pbXAnCi0KLSAgICBpbmxpbmUKLSAgICB2b2lkIHJlY3VyX2Rpcl9pdHJfaW1wOjppbmNyZW1lbnQoc3lzdGVtOjplcnJvcl9jb2RlKiBlYykKLSAgICAvLyBlYyA9PSAwIG1lYW5zIHRocm93IG9uIGVycm9yCi0gICAgewotICAgICAgaWYgKChtX29wdGlvbnMgJiBzeW1saW5rX29wdGlvbjo6X2RldGFpbF9ub19wdXNoKSA9PSBzeW1saW5rX29wdGlvbjo6X2RldGFpbF9ub19wdXNoKQotICAgICAgICBtX29wdGlvbnMgJj0gfnN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgLy8gTG9naWMgZm9yIGZvbGxvd2luZyBwcmVkaWNhdGUgd2FzIGNvbnRyaWJ1dGVkIGJ5IERhbmllbCBBYXJubyB0byBoYW5kbGUgY3ljbGljCi0gICAgICAgIC8vIHN5bWxpbmtzIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHksIGZpeGluZyB0aWNrZXQgIzU2NTIuCi0gICAgICAgIC8vICAgaWYgKCgobV9vcHRpb25zICYgc3ltbGlua19vcHRpb246OnJlY3Vyc2UpID09IHN5bWxpbmtfb3B0aW9uOjpyZWN1cnNlCi0gICAgICAgIC8vICAgICAgICAgfHwgIWlzX3N5bWxpbmsobV9zdGFjay50b3AoKS0+c3ltbGlua19zdGF0dXMoKSkpCi0gICAgICAgIC8vICAgICAgICYmIGlzX2RpcmVjdG9yeShtX3N0YWNrLnRvcCgpLT5zdGF0dXMoKSkpIC4uLgotICAgICAgICAvLyBUaGUgcHJlZGljYXRlIGNvZGUgaGFzIHNpbmNlIGJlZW4gcmV3cml0dGVuIHRvIHBhc3MgZXJyb3JfY29kZSBhcmd1bWVudHMsCi0gICAgICAgIC8vIHBlciB0aWNrZXQgIzU2NTMuCi0gICAgICAgIGJvb2wgb3JfcHJlZCA9IChtX29wdGlvbnMgJiBzeW1saW5rX29wdGlvbjo6cmVjdXJzZSkgPT0gc3ltbGlua19vcHRpb246OnJlY3Vyc2UKLSAgICAgICAgICAgICAgICAgICAgICAgfHwgKGVjID09IDAgPyAhaXNfc3ltbGluayhtX3N0YWNrLnRvcCgpLT5zeW1saW5rX3N0YXR1cygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICFpc19zeW1saW5rKG1fc3RhY2sudG9wKCktPnN5bWxpbmtfc3RhdHVzKCplYykpKTsKLSAgICAgICAgaWYgKGVjICE9IDAgJiYgKmVjKQotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYm9vbCBhbmRfcHJlZCA9IG9yX3ByZWQgJiYgKGVjID09IDAgPyBpc19kaXJlY3RvcnkobV9zdGFjay50b3AoKS0+c3RhdHVzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNfZGlyZWN0b3J5KG1fc3RhY2sudG9wKCktPnN0YXR1cygqZWMpKSk7Ci0gICAgICAgIGlmIChlYyAhPSAwICYmICplYykKLSAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGFuZF9wcmVkKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGVjID09IDApCi0gICAgICAgICAgICBtX3N0YWNrLnB1c2goZGlyZWN0b3J5X2l0ZXJhdG9yKG1fc3RhY2sudG9wKCktPnBhdGgoKSkpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtX3N0YWNrLnB1c2goZGlyZWN0b3J5X2l0ZXJhdG9yKG1fc3RhY2sudG9wKCktPnBhdGgoKSwgKmVjKSk7Ci0gICAgICAgICAgICBpZiAoKmVjKQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChtX3N0YWNrLnRvcCgpICE9IGRpcmVjdG9yeV9pdGVyYXRvcigpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9sZXZlbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgbV9zdGFjay5wb3AoKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICB3aGlsZSAoIW1fc3RhY2suZW1wdHkoKSAmJiArK21fc3RhY2sudG9wKCkgPT0gZGlyZWN0b3J5X2l0ZXJhdG9yKCkpCi0gICAgICB7Ci0gICAgICAgIG1fc3RhY2sucG9wKCk7Ci0gICAgICAgIC0tbV9sZXZlbDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpbmxpbmUKLSAgICB2b2lkIHJlY3VyX2Rpcl9pdHJfaW1wOjpwb3AoKQotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9sZXZlbCA+IDAsCi0gICAgICAgICJwb3AoKSBvbiByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIHdpdGggbGV2ZWwgPCAxIik7Ci0KLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgIG1fc3RhY2sucG9wKCk7Ci0gICAgICAgIC0tbV9sZXZlbDsKLSAgICAgIH0KLSAgICAgIHdoaWxlICghbV9zdGFjay5lbXB0eSgpICYmICsrbV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSk7Ci0gICAgfQotICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICBjbGFzcyByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yCi0gICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTwKLSAgICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciwKLSAgICAgICAgZGlyZWN0b3J5X2VudHJ5LAotICAgICAgICBuZG5ib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZyA+Ci0gIHsKLSAgcHVibGljOgotCi0gICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcigpe30gIC8vIGNyZWF0ZXMgdGhlICJlbmQiIGl0ZXJhdG9yCi0KLSAgICBleHBsaWNpdCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmIGRpcl9wYXRoLAotICAgICAgTkROQk9PU1RfU0NPUEVEX0VOVU0oc3ltbGlua19vcHRpb24pIG9wdCA9IHN5bWxpbmtfb3B0aW9uOjpub25lKQotICAgICAgOiBtX2ltcChuZXcgZGV0YWlsOjpyZWN1cl9kaXJfaXRyX2ltcCkKLSAgICB7Ci0gICAgICBtX2ltcC0+bV9vcHRpb25zID0gb3B0OwotICAgICAgbV9pbXAtPm1fc3RhY2sucHVzaChkaXJlY3RvcnlfaXRlcmF0b3IoZGlyX3BhdGgpKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSkKLSAgICAgICAgeyBtX2ltcC5yZXNldCAoKTsgfQotICAgIH0KLQotICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgcGF0aCYgZGlyX3BhdGgsCi0gICAgICBORE5CT09TVF9TQ09QRURfRU5VTShzeW1saW5rX29wdGlvbikgb3B0LAotICAgICAgc3lzdGVtOjplcnJvcl9jb2RlICYgZWMpCi0gICAgOiBtX2ltcChuZXcgZGV0YWlsOjpyZWN1cl9kaXJfaXRyX2ltcCkKLSAgICB7Ci0gICAgICBtX2ltcC0+bV9vcHRpb25zID0gb3B0OwotICAgICAgbV9pbXAtPm1fc3RhY2sucHVzaChkaXJlY3RvcnlfaXRlcmF0b3IoZGlyX3BhdGgsIGVjKSk7Ci0gICAgICBpZiAobV9pbXAtPm1fc3RhY2sudG9wKCkgPT0gZGlyZWN0b3J5X2l0ZXJhdG9yKCkpCi0gICAgICAgIHsgbV9pbXAucmVzZXQgKCk7IH0KLSAgICB9Ci0KLSAgICByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yKGNvbnN0IHBhdGgmIGRpcl9wYXRoLAotICAgICAgc3lzdGVtOjplcnJvcl9jb2RlICYgZWMpCi0gICAgOiBtX2ltcChuZXcgZGV0YWlsOjpyZWN1cl9kaXJfaXRyX2ltcCkKLSAgICB7Ci0gICAgICBtX2ltcC0+bV9vcHRpb25zID0gc3ltbGlua19vcHRpb246Om5vbmU7Ci0gICAgICBtX2ltcC0+bV9zdGFjay5wdXNoKGRpcmVjdG9yeV9pdGVyYXRvcihkaXJfcGF0aCwgZWMpKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay50b3AoKSA9PSBkaXJlY3RvcnlfaXRlcmF0b3IoKSkKLSAgICAgICAgeyBtX2ltcC5yZXNldCAoKTsgfQotICAgIH0KLQotICAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3ImIGluY3JlbWVudChzeXN0ZW06OmVycm9yX2NvZGUmIGVjKQotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksCi0gICAgICAgICJpbmNyZW1lbnQoKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgbV9pbXAtPmluY3JlbWVudCgmZWMpOwotICAgICAgaWYgKG1faW1wLT5tX3N0YWNrLmVtcHR5KCkpCi0gICAgICAgIG1faW1wLnJlc2V0KCk7IC8vIGRvbmUsIHNvIG1ha2UgZW5kIGl0ZXJhdG9yCi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgaW50IGxldmVsKCkgY29uc3QKLSAgICB7IAotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImxldmVsKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiBtX2ltcC0+bV9sZXZlbDsKLSAgICB9Ci0KLSAgICBib29sIG5vX3B1c2hfcGVuZGluZygpIGNvbnN0Ci0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImlzX25vX3B1c2hfcmVxdWVzdGVkKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiAobV9pbXAtPm1fb3B0aW9ucyAmIHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2gpCi0gICAgICAgID09IHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0gICAgfQotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICAgIGJvb2wgbm9fcHVzaF9yZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbm9fcHVzaF9wZW5kaW5nKCk7IH0KLSMgICBlbmRpZgotCi0gICAgdm9pZCBwb3AoKQotICAgIHsgCi0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAicG9wKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIG1faW1wLT5wb3AoKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay5lbXB0eSgpKSBtX2ltcC5yZXNldCgpOyAvLyBkb25lLCBzbyBtYWtlIGVuZCBpdGVyYXRvcgotICAgIH0KLQotICAgIHZvaWQgbm9fcHVzaChib29sIHZhbHVlPXRydWUpCi0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgIm5vX3B1c2goKSBvbiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgaWYgKHZhbHVlKQotICAgICAgICBtX2ltcC0+bV9vcHRpb25zIHw9IHN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0gICAgICBlbHNlCi0gICAgICAgIG1faW1wLT5tX29wdGlvbnMgJj0gfnN5bWxpbmtfb3B0aW9uOjpfZGV0YWlsX25vX3B1c2g7Ci0gICAgfQotCi0gICAgZmlsZV9zdGF0dXMgc3RhdHVzKCkgY29uc3QKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlRfTVNHKG1faW1wLmdldCgpLAotICAgICAgICAic3RhdHVzKCkgb24gZW5kIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IiKTsKLSAgICAgIHJldHVybiBtX2ltcC0+bV9zdGFjay50b3AoKS0+c3RhdHVzKCk7Ci0gICAgfQotCi0gICAgZmlsZV9zdGF0dXMgc3ltbGlua19zdGF0dXMoKSBjb25zdAotICAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVF9NU0cobV9pbXAuZ2V0KCksCi0gICAgICAgICJzeW1saW5rX3N0YXR1cygpIG9uIGVuZCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIik7Ci0gICAgICByZXR1cm4gbV9pbXAtPm1fc3RhY2sudG9wKCktPnN5bWxpbmtfc3RhdHVzKCk7Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0KLSAgICAvLyBzaGFyZWRfcHRyIHByb3ZpZGVzIHNoYWxsb3ctY29weSBzZW1hbnRpY3MgcmVxdWlyZWQgZm9yIElucHV0SXRlcmF0b3JzLgotICAgIC8vIG1faW1wLmdldCgpPT0wIGluZGljYXRlcyB0aGUgZW5kIGl0ZXJhdG9yLgotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBkZXRhaWw6OnJlY3VyX2Rpcl9pdHJfaW1wID4gIG1faW1wOwotCi0gICAgZnJpZW5kIGNsYXNzIG5kbmJvb3N0OjppdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8IAotICAgICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciwKLSAgICAgIGRpcmVjdG9yeV9lbnRyeSwKLSAgICAgIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnID46OnJlZmVyZW5jZQotICAgIGRlcmVmZXJlbmNlKCkgY29uc3QgCi0gICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImRlcmVmZXJlbmNlIG9mIGVuZCByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yIik7Ci0gICAgICByZXR1cm4gKm1faW1wLT5tX3N0YWNrLnRvcCgpOwotICAgIH0KLQotICAgIHZvaWQgaW5jcmVtZW50KCkKLSAgICB7IAotICAgICAgTkROQk9PU1RfQVNTRVJUX01TRyhtX2ltcC5nZXQoKSwKLSAgICAgICAgImluY3JlbWVudCBvZiBlbmQgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciIpOwotICAgICAgbV9pbXAtPmluY3JlbWVudCgwKTsKLSAgICAgIGlmIChtX2ltcC0+bV9zdGFjay5lbXB0eSgpKQotICAgICAgICBtX2ltcC5yZXNldCgpOyAvLyBkb25lLCBzbyBtYWtlIGVuZCBpdGVyYXRvcgotICAgIH0KLQotICAgIGJvb2wgZXF1YWwoY29uc3QgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciYgcmhzKSBjb25zdAotICAgICAgeyByZXR1cm4gbV9pbXAgPT0gcmhzLm1faW1wOyB9Ci0KLSAgfTsKLQotIyBpZiAhZGVmaW5lZChORE5CT09TVF9GSUxFU1lTVEVNX05PX0RFUFJFQ0FURUQpCi0gIHR5cGVkZWYgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciB3cmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvcjsKLSMgZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGZpbGVzeXN0ZW1fZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgCi0gIGNsYXNzIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIGZpbGVzeXN0ZW1fZXJyb3IgOiBwdWJsaWMgc3lzdGVtOjpzeXN0ZW1fZXJyb3IKLSAgewotICAvLyBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9lcnJvcl9oYW5kbGluZy5odG1sIGZvciBkZXNpZ24gcmF0aW9uYWxlCi0KLSAgLy8gYWxsIGZ1bmN0aW9ucyBhcmUgaW5saW5lIHRvIGF2b2lkIGlzc3VlcyB3aXRoIGNyb3NzaW5nIGRsbCBib3VuZGFyaWVzCi0KLSAgcHVibGljOgotICAgIC8vIGNvbXBpbGVyIGdlbmVyYXRlcyBjb3B5IGNvbnN0cnVjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQKLQotICAgIGZpbGVzeXN0ZW1fZXJyb3IoCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHdoYXRfYXJnLCBzeXN0ZW06OmVycm9yX2NvZGUgZWMpCi0gICAgICA6IHN5c3RlbTo6c3lzdGVtX2Vycm9yKGVjLCB3aGF0X2FyZykKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgbV9pbXBfcHRyLnJlc2V0KG5ldyBtX2ltcCk7Ci0gICAgICB9Ci0gICAgICBjYXRjaCAoLi4uKSB7IG1faW1wX3B0ci5yZXNldCgpOyB9Ci0gICAgfQotCi0gICAgZmlsZXN5c3RlbV9lcnJvcigKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgd2hhdF9hcmcsIGNvbnN0IHBhdGgmIHBhdGgxX2FyZywKLSAgICAgIHN5c3RlbTo6ZXJyb3JfY29kZSBlYykKLSAgICAgIDogc3lzdGVtOjpzeXN0ZW1fZXJyb3IoZWMsIHdoYXRfYXJnKQotICAgIHsKLSAgICAgIHRyeQotICAgICAgewotICAgICAgICBtX2ltcF9wdHIucmVzZXQobmV3IG1faW1wKTsKLSAgICAgICAgbV9pbXBfcHRyLT5tX3BhdGgxID0gcGF0aDFfYXJnOwotICAgICAgfQotICAgICAgY2F0Y2ggKC4uLikgeyBtX2ltcF9wdHIucmVzZXQoKTsgfQotICAgIH0KLSAgICAKLSAgICBmaWxlc3lzdGVtX2Vycm9yKAotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiB3aGF0X2FyZywgY29uc3QgcGF0aCYgcGF0aDFfYXJnLAotICAgICAgY29uc3QgcGF0aCYgcGF0aDJfYXJnLCBzeXN0ZW06OmVycm9yX2NvZGUgZWMpCi0gICAgICA6IHN5c3RlbTo6c3lzdGVtX2Vycm9yKGVjLCB3aGF0X2FyZykKLSAgICB7Ci0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgbV9pbXBfcHRyLnJlc2V0KG5ldyBtX2ltcCk7Ci0gICAgICAgIG1faW1wX3B0ci0+bV9wYXRoMSA9IHBhdGgxX2FyZzsKLSAgICAgICAgbV9pbXBfcHRyLT5tX3BhdGgyID0gcGF0aDJfYXJnOwotICAgICAgfQotICAgICAgY2F0Y2ggKC4uLikgeyBtX2ltcF9wdHIucmVzZXQoKTsgfQotICAgIH0KLQotICAgIH5maWxlc3lzdGVtX2Vycm9yKCkgdGhyb3coKSB7fQotCi0gICAgY29uc3QgcGF0aCYgcGF0aDEoKSBjb25zdAotICAgIHsKLSAgICAgIHN0YXRpYyBjb25zdCBwYXRoIGVtcHR5X3BhdGg7Ci0gICAgICByZXR1cm4gbV9pbXBfcHRyLmdldCgpID8gbV9pbXBfcHRyLT5tX3BhdGgxIDogZW1wdHlfcGF0aCA7Ci0gICAgfQotICAgIGNvbnN0IHBhdGgmIHBhdGgyKCkgY29uc3QKLSAgICB7Ci0gICAgICBzdGF0aWMgY29uc3QgcGF0aCBlbXB0eV9wYXRoOwotICAgICAgcmV0dXJuIG1faW1wX3B0ci5nZXQoKSA/IG1faW1wX3B0ci0+bV9wYXRoMiA6IGVtcHR5X3BhdGggOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgewotICAgICAgaWYgKCFtX2ltcF9wdHIuZ2V0KCkpCi0gICAgICAgIHJldHVybiBzeXN0ZW06OnN5c3RlbV9lcnJvcjo6d2hhdCgpOwotCi0gICAgICB0cnkKLSAgICAgIHsKLSAgICAgICAgaWYgKG1faW1wX3B0ci0+bV93aGF0LmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCA9IHN5c3RlbTo6c3lzdGVtX2Vycm9yOjp3aGF0KCk7Ci0gICAgICAgICAgaWYgKCFtX2ltcF9wdHItPm1fcGF0aDEuZW1wdHkoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCArPSAiOiBcIiI7Ci0gICAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCArPSBtX2ltcF9wdHItPm1fcGF0aDEuc3RyaW5nKCk7Ci0gICAgICAgICAgICBtX2ltcF9wdHItPm1fd2hhdCArPSAiXCIiOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoIW1faW1wX3B0ci0+bV9wYXRoMi5lbXB0eSgpKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9ICIsIFwiIjsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9IG1faW1wX3B0ci0+bV9wYXRoMi5zdHJpbmcoKTsKLSAgICAgICAgICAgIG1faW1wX3B0ci0+bV93aGF0ICs9ICJcIiI7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2ltcF9wdHItPm1fd2hhdC5jX3N0cigpOwotICAgICAgfQotICAgICAgY2F0Y2ggKC4uLikKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHN5c3RlbTo6c3lzdGVtX2Vycm9yOjp3aGF0KCk7Ci0gICAgICB9Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAgc3RydWN0IG1faW1wCi0gICAgewotICAgICAgcGF0aCAgICAgICAgIG1fcGF0aDE7IC8vIG1heSBiZSBlbXB0eSgpCi0gICAgICBwYXRoICAgICAgICAgbV9wYXRoMjsgLy8gbWF5IGJlIGVtcHR5KCkKLSAgICAgIHN0ZDo6c3RyaW5nICBtX3doYXQ7ICAvLyBub3QgYnVpbHQgdW50aWwgbmVlZGVkCi0gICAgfTsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxtX2ltcD4gbV9pbXBfcHRyOwotICB9OwotCi0vLyAgdGVzdCBoZWxwZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIE5vdCBwYXJ0IG9mIHRoZSBkb2N1bWVudGVkIGludGVyZmFjZSBzaW5jZSBmYWxzZSBwb3NpdGl2ZXMgYXJlIHBvc3NpYmxlOwotLy8gIHRoZXJlIGlzIG5vIGxhdyB0aGF0IHNheXMgdGhhdCBhbiBPUyB0aGF0IGhhcyBsYXJnZSBzdGF0LnN0X3NpemUKLS8vICBhY3R1YWxseSBzdXBwb3J0cyBsYXJnZSBmaWxlIHNpemVzLgotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTCBib29sIHBvc3NpYmxlX2xhcmdlX2ZpbGVfc2l6ZV9zdXBwb3J0KCk7Ci0gIH0KLQotICB9IC8vIG5hbWVzcGFjZSBmaWxlc3lzdGVtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9wcmVmaXguaHBwIHByYWdtYXMKLSNlbmRpZiAvLyBORE5CT09TVF9GSUxFU1lTVEVNM19PUEVSQVRJT05TX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL3BhdGguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL3BhdGguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGVlNjZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZmlsZXN5c3RlbS9wYXRoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1OCArMCwwIEBACi0vLyAgZmlsZXN5c3RlbSBwYXRoLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAyLTIwMDUsIDIwMDkKLS8vICBDb3B5cmlnaHQgVmxhZGltaXIgUHJ1cyAyMDAyCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgTGlicmFyeSBob21lIHBhZ2U6IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvZmlsZXN5c3RlbQotCi0vLyAgcGF0aDo6c3RlbSgpLCBleHRlbnNpb24oKSwgYW5kIHJlcGxhY2VfZXh0ZW5zaW9uKCkgYXJlIGJhc2VkIG9uCi0vLyAgYmFzZW5hbWUoKSwgZXh0ZW5zaW9uKCksIGFuZCBjaGFuZ2VfZXh0ZW5zaW9uKCkgZnJvbSB0aGUgb3JpZ2luYWwKLS8vICBmaWxlc3lzdGVtL2NvbnZlbmllbmNlLmhwcCBoZWFkZXIgYnkgVmxhZGltaXIgUHJ1cy4KLQotI2lmbmRlZiBORE5CT09TVF9GSUxFU1lTVEVNX1BBVEhfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZJTEVTWVNURU1fUEFUSF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSMgaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgKQotIyAgIGVycm9yIENvbmZpZ3VyYXRpb24gbm90IHN1cHBvcnRlZDogQm9vc3QuRmlsZXN5c3RlbSBWMyBhbmQgbGF0ZXIgcmVxdWlyZXMgc3RkOjp3c3RyaW5nIHN1cHBvcnQKLSMgZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9maWxlc3lzdGVtL3BhdGhfdHJhaXRzLmhwcD4gIC8vIGluY2x1ZGVzIDxjd2NoYXI+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW8vZGV0YWlsL3F1b3RlZF9tYW5pcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxsb2NhbGU+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAvLyBtdXN0IGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotbmFtZXNwYWNlIGZpbGVzeXN0ZW0KLXsKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgY2xhc3MgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIHBhdGgKLSAgewotICBwdWJsaWM6Ci0KLSAgICAvLyAgdmFsdWVfdHlwZSBpcyB0aGUgY2hhcmFjdGVyIHR5cGUgdXNlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBBUEkgdG8KLSAgICAvLyAgcmVwcmVzZW50IHBhdGhzLgotCi0jIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgdHlwZWRlZiB3Y2hhcl90ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RFWFBSIHZhbHVlX3R5cGUgICAgICBwcmVmZXJyZWRfc2VwYXJhdG9yID0gTCdcXCc7Ci0jIGVsc2UgCi0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RFWFBSIHZhbHVlX3R5cGUgICAgICBwcmVmZXJyZWRfc2VwYXJhdG9yID0gJy8nOwotIyBlbmRpZgotICAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4gIHN0cmluZ190eXBlOyAgCi0gICAgdHlwZWRlZiBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ic3RhdGVfdD4gICBjb2RlY3Z0X3R5cGU7Ci0KLQotICAgIC8vICAtLS0tLSBjaGFyYWN0ZXIgZW5jb2RpbmcgY29udmVyc2lvbnMgLS0tLS0KLQotICAgIC8vICBGb2xsb3dpbmcgdGhlIHByaW5jaXBsZSBvZiBsZWFzdCBhc3RvbmlzaG1lbnQsIHBhdGggaW5wdXQgYXJndW1lbnRzCi0gICAgLy8gIHBhc3NlZCB0byBvciBvYnRhaW5lZCBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHZpYSBvYmplY3RzIG9mCi0gICAgLy8gIGNsYXNzIHBhdGggYmVoYXZlIGFzIGlmIHRoZXkgd2VyZSBkaXJlY3RseSBwYXNzZWQgdG8gb3IKLSAgICAvLyAgb2J0YWluZWQgZnJvbSB0aGUgTy9TIEFQSSwgdW5sZXNzIGNvbnZlcnNpb24gaXMgZXhwbGljaXRseSByZXF1ZXN0ZWQuCi0gICAgLy8KLSAgICAvLyAgUE9TSVggc3BlY2ZpZXMgdGhhdCBwYXRoIHN0cmluZ3MgYXJlIHBhc3NlZCB1bmNoYW5nZWQgdG8gYW5kIGZyb20gdGhlCi0gICAgLy8gIEFQSS4gTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIFBPU0lYIGNvbW1hbmQgbGluZSB1dGlsaXRpZXMsCi0gICAgLy8gIHdoaWNoIGNvbnZlcnQgYWNjb3JkaW5nIHRvIGEgbG9jYWxlLgotICAgIC8vCi0gICAgLy8gIFRodXMgZm9yIFBPU0lYLCBjaGFyIHN0cmluZ3MgZG8gbm90IHVuZGVyZ28gY29udmVyc2lvbi4gIHdjaGFyX3Qgc3RyaW5ncwotICAgIC8vICBhcmUgY29udmVydGVkIHRvL2Zyb20gY2hhciB1c2luZyB0aGUgcGF0aCBsb2NhbGUgb3IsIGlmIGEgY29udmVyc2lvbgotICAgIC8vICBhcmd1bWVudCBpcyBnaXZlbiwgdXNpbmcgYSBjb252ZXJzaW9uIG9iamVjdCBtb2RlbGVkIG9uCi0gICAgLy8gIHN0ZDo6d3N0cmluZ19jb252ZXJ0LgotICAgIC8vCi0gICAgLy8gIFRoZSBwYXRoIGxvY2FsZSwgd2hpY2ggaXMgZ2xvYmFsIHRvIHRoZSB0aHJlYWQsIGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZQotICAgIC8vICBpbWJ1ZSgpIGZ1bmN0aW9uLiBJdCBpcyBpbml0aWFsaXplZCB0byBhbiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGxvY2FsZS4KLSAgICAvLyAgCi0gICAgLy8gIEZvciBXaW5kb3dzLCB3Y2hhcl90IHN0cmluZ3MgZG8gbm90IHVuZGVyZ28gY29udmVyc2lvbi4gY2hhciBzdHJpbmdzCi0gICAgLy8gIGFyZSBjb252ZXJ0ZWQgdXNpbmcgdGhlICJBTlNJIiBvciAiT0VNIiBjb2RlIHBhZ2VzLCBhcyBkZXRlcm1pbmVkIGJ5Ci0gICAgLy8gIHRoZSBBcmVGaWxlQXBpc0FOU0koKSBmdW5jdGlvbiwgb3IsIGlmIGEgY29udmVyc2lvbiBhcmd1bWVudCBpcyBnaXZlbiwKLSAgICAvLyAgdXNpbmcgYSBjb252ZXJzaW9uIG9iamVjdCBtb2RlbGVkIG9uIHN0ZDo6d3N0cmluZ19jb252ZXJ0LgotICAgIC8vCi0gICAgLy8gIFNlZSBtX3BhdGhuYW1lIGNvbW1lbnRzIGZvciBmdXJ0aGVyIGltcG9ydGFudCByYXRpb25hbGUuCi0KLSAgICAvLyAgVE9ETzogcnVsZXMgbmVlZGVkIGZvciBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHVzZSAvIG9yIC4KLSAgICAvLyAgZGlmZmVyZW50bHksIG9yIGZvcm1hdCBkaXJlY3RvcnkgcGF0aHMgZGlmZmVyZW50bHkgZnJvbSBmaWxlIHBhdGhzLiAKLSAgICAvLwotICAgIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgLy8KLSAgICAvLyAgTW9yZSB3b3JrIG5lZWRlZDogSG93IHRvIGhhbmRsZSBhbiBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgbWF5IGhhdmUKLSAgICAvLyAgc2xhc2ggY2hhcmFjdGVycyBvciBkb3QgY2hhcmFjdGVycyBpbiB2YWxpZCBmaWxlbmFtZXMsIGVpdGhlciBiZWNhdXNlCi0gICAgLy8gIGl0IGRvZXNuJ3QgZm9sbG93IHRoZSBQT1NJWCBzdGFuZGFyZCwgb3IgYmVjYXVzZSBpdCBhbGxvd3MgTUJDUwotICAgIC8vICBmaWxlbmFtZSBlbmNvZGluZ3MgdGhhdCBtYXkgY29udGFpbiBzbGFzaCBvciBkb3QgY2hhcmFjdGVycy4gRm9yCi0gICAgLy8gIGV4YW1wbGUsIElTTy9JRUMgMjAyMiAoSklTKSBlbmNvZGluZyB3aGljaCBhbGxvd3Mgc3dpdGNoaW5nIHRvCi0gICAgLy8gIEpJUyB4MDIwOC0xOTgzIGVuY29kaW5nLiBBIHZhbGlkIGZpbGVuYW1lIGluIHRoaXMgc2V0IG9mIGVuY29kaW5ncyBpcwotICAgIC8vICAweDFCIDB4MjQgMHg0MiBbc3dpdGNoIHRvIFgwMjA4LTE5ODNdIDB4MjQgMHgyRiBbVSszMDRGIEtpcmFnYW5hIGxldHRlciBLVV0KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl4KLSAgICAvLyAgTm90ZSB0aGF0IDB4MkYgaXMgdGhlIEFTQ0lJIHNsYXNoIGNoYXJhY3RlcgotICAgIC8vCi0gICAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotICAgIC8vICBTdXBwb3J0ZWQgc291cmNlIGFyZ3VtZW50czogaGFsZi1vcGVuIGl0ZXJhdG9yIHJhbmdlLCBjb250YWluZXIsIGMtYXJyYXksCi0gICAgLy8gIGFuZCBzaW5nbGUgcG9pbnRlciB0byBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgotCi0gICAgLy8gIEFsbCBzb3VyY2UgYXJndW1lbnRzIGV4Y2VwdCBwb2ludGVycyB0byBudWxsIHRlcm1pbmF0ZWQgYnl0ZSBzdHJpbmdzIHN1cHBvcnQKLSAgICAvLyAgbXVsdGktYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncyB3aGljaCBtYXkgaGF2ZSBlbWJlZGRlZCBudWxscy4gRW1iZWRkZWQgbnVsbAotICAgIC8vICBzdXBwb3J0IGlzIHJlcXVpcmVkIGZvciBzb21lIEFzaWFuIGxhbmd1YWdlcyBvbiBXaW5kb3dzLgotCi0gICAgLy8gIFtkZWZhdWx0c10gImNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0PWNvZGVjdnQoKSIgZGVmYXVsdCBhcmd1bWVudHMgYXJlIG5vdCB1c2VkCi0gICAgLy8gIGJlY2F1c2Ugc29tZSBjb21waWxlcnMsIHN1Y2ggYXMgTWljcm9zb2Z0IHByaW9yIHRvIFZDKysgMTAsIGRvIG5vdCBoYW5kbGUgZGVmYXVsdHMKLSAgICAvLyAgY29ycmVjdGx5IGluIHRlbXBsYXRlcy4KLQotICAgIC8vICAtLS0tLSAgY29uc3RydWN0b3JzICAtLS0tLQotCi0gICAgcGF0aCgpe30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLQotICAgIHBhdGgoY29uc3QgcGF0aCYgcCkgOiBtX3BhdGhuYW1lKHAubV9wYXRobmFtZSkge30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgcGF0aChTb3VyY2UgY29uc3QmIHNvdXJjZSwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8cGF0aF90cmFpdHM6OmlzX3BhdGhhYmxlPAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGVjYXk8U291cmNlPjo6dHlwZT4gPjo6dHlwZSogPTApCi0gICAgewotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICAvLyAgT3ZlcmxvYWRzIGZvciB0aGUgb3BlcmF0aW5nIHN5c3RlbSBBUEkncyBuYXRpdmUgY2hhcmFjdGVyIHR5cGUuIFJhdGlvbmFsZToKLSAgICAvLyAgICAtIEF2b2lkcyB1c2Ugb2YgY29kZWN2dCgpIGZvciBuYXRpdmUgdmFsdWVfdHlwZSBzdHJpbmdzLiBUaGlzIGxpbWl0cyB0aGUKLSAgICAvLyAgICAgIGltcGFjdCBvZiBsb2NhbGUoIiIpIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzIG9uIFBPU0lYIHN5c3RlbXMgdG8gcHJvZ3JhbXMKLSAgICAvLyAgICAgIHRoYXQgYWN0dWFsbHkgZGVwZW5kIG9uIGxvY2FsZSgiIikuIEl0IGZ1cnRoZXIgZW5zdXJlcyB0aGF0IGV4Y2VwdGlvbnMgdGhyb3duCi0gICAgLy8gICAgICBhcyBhIHJlc3VsdCBvZiBzdWNoIGZhaWx1ZXMgb2NjdXIgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLCBzbyBjYW4gYmUgY2F1Z2h0LgotICAgIC8vICAgICAgVGhpcyBpcyBhIHBhcnRpYWwgcmVzb2x1dGlvbiBvZiB0aWNrZXRzIDQ2ODgsIDUxMDAsIGFuZCA1Mjg5LgotICAgIC8vICAgIC0gQSBzbGlnaHQgb3B0aW1pemF0aW9uIGZvciBhIGNvbW1vbiB1c2UgY2FzZSwgcGFydGljdWxhcmx5IG9uIFBPU0lYIHNpbmNlCi0gICAgLy8gICAgICB2YWx1ZV90eXBlIGlzIGNoYXIgYW5kIHRoYXQgaXMgdGhlIG1vc3QgY29tbW9uIHVzZWFnZS4KLSAgICBwYXRoKGNvbnN0IHZhbHVlX3R5cGUqIHMpIDogbV9wYXRobmFtZShzKSB7fQotICAgIHBhdGgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4mIHMpIDogbV9wYXRobmFtZShzKSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgICBwYXRoKFNvdXJjZSBjb25zdCYgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgICAvLyAgc2VlIFtkZWZhdWx0c10gbm90ZSBhYm92ZSBleHBsYWluaW5nIHdoeSBjb2RlY3Z0KCkgZGVmYXVsdCBhcmd1bWVudHMgYXJlIG5vdCB1c2VkCi0gICAgewotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kKQotICAgIHsgCi0gICAgICBpZiAoYmVnaW4gIT0gZW5kKQotICAgICAgewotICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KLSAgICAgICAgICBzKGJlZ2luLCBlbmQpOwotICAgICAgICBwYXRoX3RyYWl0czo6Y29udmVydChzLmNfc3RyKCksIHMuY19zdHIoKStzLnNpemUoKSwgbV9wYXRobmFtZSwgY29kZWN2dCgpKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoKElucHV0SXRlcmF0b3IgYmVnaW4sIElucHV0SXRlcmF0b3IgZW5kLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgICB7IAotICAgICAgaWYgKGJlZ2luICE9IGVuZCkKLSAgICAgIHsKLSAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGU+Ci0gICAgICAgICAgcyhiZWdpbiwgZW5kKTsKLSAgICAgICAgcGF0aF90cmFpdHM6OmNvbnZlcnQocy5jX3N0cigpLCBzLmNfc3RyKCkrcy5zaXplKCksIG1fcGF0aG5hbWUsIGN2dCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gIC0tLS0tICBhc3NpZ25tZW50cyAgLS0tLS0KLQotICAgIHBhdGgmIG9wZXJhdG9yPShjb25zdCBwYXRoJiBwKQotICAgIHsKLSAgICAgIG1fcGF0aG5hbWUgPSBwLm1fcGF0aG5hbWU7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHZhbHVlX3R5cGUqIHB0cikgIC8vIHJlcXVpcmVkIGluIGNhc2UgcHRyIG92ZXJsYXBzICp0aGlzCi0gICAgewotICAgICAgbV9wYXRobmFtZSA9IHB0cjsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxwYXRoX3RyYWl0czo6aXNfcGF0aGFibGU8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZWNheTxTb3VyY2U+Ojp0eXBlPiwgcGF0aCY+Ojp0eXBlCi0gICAgb3BlcmF0b3I9KFNvdXJjZSBjb25zdCYgc291cmNlKQotICAgIHsKLSAgICAgIG1fcGF0aG5hbWUuY2xlYXIoKTsKLSAgICAgIHBhdGhfdHJhaXRzOjpkaXNwYXRjaChzb3VyY2UsIG1fcGF0aG5hbWUsIGNvZGVjdnQoKSk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgcGF0aCYgYXNzaWduKGNvbnN0IHZhbHVlX3R5cGUqIHB0ciwgY29uc3QgY29kZWN2dF90eXBlJikgIC8vIHJlcXVpcmVkIGluIGNhc2UgcHRyIG92ZXJsYXBzICp0aGlzCi0gICAgewotICAgICAgbV9wYXRobmFtZSA9IHB0cjsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgIHBhdGgmIGFzc2lnbihTb3VyY2UgY29uc3QmIHNvdXJjZSwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gICAgewotICAgICAgbV9wYXRobmFtZS5jbGVhcigpOwotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoJiBhc3NpZ24oSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQpCi0gICAgewotICAgICAgcmV0dXJuIGFzc2lnbihiZWdpbiwgZW5kLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGFzc2lnbihJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gICAgeyAKLSAgICAgIG1fcGF0aG5hbWUuY2xlYXIoKTsKLSAgICAgIGlmIChiZWdpbiAhPSBlbmQpCi0gICAgICB7Ci0gICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgotICAgICAgICAgIHMoYmVnaW4sIGVuZCk7Ci0gICAgICAgIHBhdGhfdHJhaXRzOjpjb252ZXJ0KHMuY19zdHIoKSwgcy5jX3N0cigpK3Muc2l6ZSgpLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgICAgfQotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vICAtLS0tLSAgY29uY2F0ZW5hdGlvbiAgLS0tLS0KLQotICAgIHBhdGgmIG9wZXJhdG9yKz0oY29uc3QgcGF0aCYgcCkgICAgICAgICB7bV9wYXRobmFtZSArPSBwLm1fcGF0aG5hbWU7IHJldHVybiAqdGhpczt9Ci0gICAgcGF0aCYgb3BlcmF0b3IrPShjb25zdCBzdHJpbmdfdHlwZSYgcykgIHttX3BhdGhuYW1lICs9IHM7IHJldHVybiAqdGhpczt9Ci0gICAgcGF0aCYgb3BlcmF0b3IrPShjb25zdCB2YWx1ZV90eXBlKiBwdHIpIHttX3BhdGhuYW1lICs9IHB0cjsgcmV0dXJuICp0aGlzO30KLSAgICBwYXRoJiBvcGVyYXRvcis9KHZhbHVlX3R5cGUgYykgICAgICAgICAge21fcGF0aG5hbWUgKz0gYzsgcmV0dXJuICp0aGlzO30KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTb3VyY2U+Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPHBhdGhfdHJhaXRzOjppc19wYXRoYWJsZTwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRlY2F5PFNvdXJjZT46OnR5cGU+LCBwYXRoJj46OnR5cGUKLSAgICBvcGVyYXRvcis9KFNvdXJjZSBjb25zdCYgc291cmNlKQotICAgIHsKLSAgICAgIHJldHVybiBjb25jYXQoc291cmNlLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8aXNfaW50ZWdyYWw8Q2hhclQ+LCBwYXRoJj46OnR5cGUKLSAgICBvcGVyYXRvcis9KENoYXJUIGMpCi0gICAgewotICAgICAgQ2hhclQgdG1wWzJdOwotICAgICAgdG1wWzBdID0gYzsKLSAgICAgIHRtcFsxXSA9IDA7Ci0gICAgICByZXR1cm4gY29uY2F0KHRtcCwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgIHBhdGgmIGNvbmNhdChTb3VyY2UgY29uc3QmIHNvdXJjZSwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gICAgewotICAgICAgcGF0aF90cmFpdHM6OmRpc3BhdGNoKHNvdXJjZSwgbV9wYXRobmFtZSwgY3Z0KTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoJiBjb25jYXQoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQpCi0gICAgeyAKLSAgICAgIHJldHVybiBjb25jYXQoYmVnaW4sIGVuZCwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgICBwYXRoJiBjb25jYXQoSW5wdXRJdGVyYXRvciBiZWdpbiwgSW5wdXRJdGVyYXRvciBlbmQsIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICAgIHsgCi0gICAgICBpZiAoYmVnaW4gPT0gZW5kKQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KLSAgICAgICAgcyhiZWdpbiwgZW5kKTsKLSAgICAgIHBhdGhfdHJhaXRzOjpjb252ZXJ0KHMuY19zdHIoKSwgcy5jX3N0cigpK3Muc2l6ZSgpLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vICAtLS0tLSAgYXBwZW5kcyAgLS0tLS0KLQotICAgIC8vICBpZiBhIHNlcGFyYXRvciBpcyBhZGRlZCwgaXQgaXMgdGhlIHByZWZlcnJlZCBzZXBhcmF0b3IgZm9yIHRoZSBwbGF0Zm9ybTsKLSAgICAvLyAgc2xhc2ggZm9yIFBPU0lYLCBiYWNrc2xhc2ggZm9yIFdpbmRvd3MKLQotICAgIHBhdGgmIG9wZXJhdG9yLz0oY29uc3QgcGF0aCYgcCk7Ci0KLSAgICBwYXRoJiBvcGVyYXRvci89KGNvbnN0IHZhbHVlX3R5cGUqIHB0cik7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlPgotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxwYXRoX3RyYWl0czo6aXNfcGF0aGFibGU8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZWNheTxTb3VyY2U+Ojp0eXBlPiwgcGF0aCY+Ojp0eXBlCi0gICAgb3BlcmF0b3IvPShTb3VyY2UgY29uc3QmIHNvdXJjZSkKLSAgICB7Ci0gICAgICByZXR1cm4gYXBwZW5kKHNvdXJjZSwgY29kZWN2dCgpKTsKLSAgICB9Ci0KLSAgICBwYXRoJiBhcHBlbmQoY29uc3QgdmFsdWVfdHlwZSogcHRyLCBjb25zdCBjb2RlY3Z0X3R5cGUmKSAgLy8gcmVxdWlyZWQgaW4gY2FzZSBwdHIgb3ZlcmxhcHMgKnRoaXMKLSAgICB7Ci0gICAgICB0aGlzLT5vcGVyYXRvci89KHB0cik7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgICBwYXRoJiBhcHBlbmQoU291cmNlIGNvbnN0JiBzb3VyY2UsIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGFwcGVuZChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCkKLSAgICB7IAotICAgICAgcmV0dXJuIGFwcGVuZChiZWdpbiwgZW5kLCBjb2RlY3Z0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotICAgIHBhdGgmIGFwcGVuZChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpOwotCi0gICAgLy8gIC0tLS0tICBtb2RpZmllcnMgIC0tLS0tCi0KLSAgICB2b2lkICAgY2xlYXIoKSAgICAgICAgICAgICB7IG1fcGF0aG5hbWUuY2xlYXIoKTsgfQotICAgIHBhdGgmICBtYWtlX3ByZWZlcnJlZCgpCi0jICAgaWZkZWYgTkROQk9PU1RfUE9TSVhfQVBJCi0gICAgICB7IHJldHVybiAqdGhpczsgfSAgLy8gUE9TSVggbm8gZWZmZWN0Ci0jICAgZWxzZSAvLyBORE5CT09TVF9XSU5ET1dTX0FQSQotICAgICAgOyAgLy8gY2hhbmdlIHNsYXNoZXMgdG8gYmFja3NsYXNoZXMKLSMgICBlbmRpZgotICAgIHBhdGgmICByZW1vdmVfZmlsZW5hbWUoKTsKLSAgICBwYXRoJiAgcmVwbGFjZV9leHRlbnNpb24oY29uc3QgcGF0aCYgbmV3X2V4dGVuc2lvbiA9IHBhdGgoKSk7Ci0gICAgdm9pZCAgIHN3YXAocGF0aCYgcmhzKSAgICAgeyBtX3BhdGhuYW1lLnN3YXAocmhzLm1fcGF0aG5hbWUpOyB9Ci0KLSAgICAvLyAgLS0tLS0gIG9ic2VydmVycyAgLS0tLS0KLSAgCi0gICAgLy8gIEZvciBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IGZvcm1hdCBmaWxlIHBhdGhzIGRpZmZlcmVudGx5IHRoYW4gZGlyZWN0b3J5Ci0gICAgLy8gIHBhdGhzLCByZXR1cm4gdmFsdWVzIGZyb20gb2JzZXJ2ZXJzIGFyZSBmb3JtYXR0ZWQgYXMgZmlsZSBuYW1lcyB1bmxlc3MgdGhlcmUKLSAgICAvLyAgaXMgYSB0cmFpbGluZyBzZXBhcmF0b3IsIGluIHdoaWNoIGNhc2UgcmV0dXJucyBhcmUgZm9ybWF0dGVkIGFzIGRpcmVjdG9yeQotICAgIC8vICBwYXRocy4gUE9TSVggYW5kIFdpbmRvd3MgbWFrZSBubyBzdWNoIGRpc3RpbmN0aW9uLgotCi0gICAgLy8gIEltcGxlbWVudGF0aW9ucyBhcmUgcGVybWl0dGVkIHRvIHJldHVybiBjb25zdCB2YWx1ZXMgb3IgY29uc3QgcmVmZXJlbmNlcy4KLQotICAgIC8vICBUaGUgc3RyaW5nIG9yIHBhdGggcmV0dXJuZWQgYnkgYW4gb2JzZXJ2ZXIgYXJlIHNwZWNpZmllZCBhcyBiZWluZyBmb3JtYXR0ZWQKLSAgICAvLyAgYXMgIm5hdGl2ZSIgb3IgImdlbmVyaWMiLgotICAgIC8vCi0gICAgLy8gIEZvciBQT1NJWCwgdGhlc2UgYXJlIGFsbCB0aGUgc2FtZSBmb3JtYXQ7IHNsYXNoZXMgYW5kIGJhY2tzbGFzaGVzIGFyZSBhcyBpbnB1dCBhbmQKLSAgICAvLyAgYXJlIG5vdCBtb2RpZmllZC4KLSAgICAvLwotICAgIC8vICBGb3IgV2luZG93cywgICBuYXRpdmU6ICAgIGFzIGlucHV0OyBzbGFzaGVzIGFuZCBiYWNrc2xhc2hlcyBhcmUgbm90IG1vZGlmaWVkOwotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIGZvcm1hdCBvZiB0aGUgaW50ZXJuYWxseSBzdG9yZWQgc3RyaW5nLgotICAgIC8vICAgICAgICAgICAgICAgICBnZW5lcmljOiAgIGJhY2tzbGFzaGVzIGFyZSBjb252ZXJ0ZWQgdG8gc2xhc2hlcwotCi0gICAgLy8gIC0tLS0tICBuYXRpdmUgZm9ybWF0IG9ic2VydmVycyAgLS0tLS0KLQotICAgIGNvbnN0IHN0cmluZ190eXBlJiAgbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9wYXRobmFtZTsgfSAgICAgICAgICAvLyBUaHJvd3M6IG5vdGhpbmcKLSAgICBjb25zdCB2YWx1ZV90eXBlKiAgIGNfc3RyKCkgY29uc3QgIHsgcmV0dXJuIG1fcGF0aG5hbWUuY19zdHIoKTsgfSAgLy8gVGhyb3dzOiBub3RoaW5nCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3RyaW5nPgotICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdDsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmc+Ci0gICAgU3RyaW5nIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3Q7Ci0KLSMgICBpZmRlZiBORE5CT09TVF9XSU5ET1dTX0FQSQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHN0cmluZyhjb2RlY3Z0KCkpOyB9IAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3QKLSAgICB7IAotICAgICAgc3RkOjpzdHJpbmcgdG1wOwotICAgICAgaWYgKCFtX3BhdGhuYW1lLmVtcHR5KCkpCi0gICAgICAgIHBhdGhfdHJhaXRzOjpjb252ZXJ0KCYqbV9wYXRobmFtZS5iZWdpbigpLCAmKm1fcGF0aG5hbWUuYmVnaW4oKSttX3BhdGhuYW1lLnNpemUoKSwKLSAgICAgICAgICB0bXAsIGN2dCk7Ci0gICAgICByZXR1cm4gdG1wOwotICAgIH0KLSAgICAKLSAgICAvLyAgc3RyaW5nX3R5cGUgaXMgc3RkOjp3c3RyaW5nLCBzbyB0aGVyZSBpcyBubyBjb252ZXJzaW9uCi0gICAgY29uc3Qgc3RkOjp3c3RyaW5nJiAgd3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcmICB3c3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLQotIyAgIGVsc2UgICAvLyBORE5CT09TVF9QT1NJWF9BUEkKLSAgICAvLyAgc3RyaW5nX3R5cGUgaXMgc3RkOjpzdHJpbmcsIHNvIHRoZXJlIGlzIG5vIGNvbnZlcnNpb24KLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgIHN0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmKSBjb25zdCB7IHJldHVybiBtX3BhdGhuYW1lOyB9Ci0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcgIHdzdHJpbmcoKSBjb25zdCB7IHJldHVybiB3c3RyaW5nKGNvZGVjdnQoKSk7IH0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcgIHdzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0Ci0gICAgeyAKLSAgICAgIHN0ZDo6d3N0cmluZyB0bXA7Ci0gICAgICBpZiAoIW1fcGF0aG5hbWUuZW1wdHkoKSkKLSAgICAgICAgcGF0aF90cmFpdHM6OmNvbnZlcnQoJiptX3BhdGhuYW1lLmJlZ2luKCksICYqbV9wYXRobmFtZS5iZWdpbigpK21fcGF0aG5hbWUuc2l6ZSgpLAotICAgICAgICAgIHRtcCwgY3Z0KTsKLSAgICAgIHJldHVybiB0bXA7Ci0gICAgfQotCi0jICAgZW5kaWYKLQotICAgIC8vICAtLS0tLSAgZ2VuZXJpYyBmb3JtYXQgb2JzZXJ2ZXJzICAtLS0tLQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN0cmluZz4KLSAgICBTdHJpbmcgZ2VuZXJpY19zdHJpbmcoKSBjb25zdDsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmc+Ci0gICAgU3RyaW5nIGdlbmVyaWNfc3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdDsKLQotIyAgIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgICBnZW5lcmljX3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGdlbmVyaWNfc3RyaW5nKGNvZGVjdnQoKSk7IH0gCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgICBnZW5lcmljX3N0cmluZyhjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3Q7IAotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyAgZ2VuZXJpY193c3RyaW5nKCkgY29uc3Q7Ci0gICAgY29uc3Qgc3RkOjp3c3RyaW5nICBnZW5lcmljX3dzdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJikgY29uc3QgeyByZXR1cm4gZ2VuZXJpY193c3RyaW5nKCk7IH07Ci0KLSMgICBlbHNlIC8vIE5ETkJPT1NUX1BPU0lYX0FQSQotICAgIC8vICBPbiBQT1NJWC1saWtlIHN5c3RlbXMsIHRoZSBnZW5lcmljIGZvcm1hdCBpcyB0aGUgc2FtZSBhcyB0aGUgbmF0aXZlIGZvcm1hdAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiAgZ2VuZXJpY19zdHJpbmcoKSBjb25zdCAgeyByZXR1cm4gbV9wYXRobmFtZTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiAgZ2VuZXJpY19zdHJpbmcoY29uc3QgY29kZWN2dF90eXBlJikgY29uc3QgIHsgcmV0dXJuIG1fcGF0aG5hbWU7IH0KLSAgICBjb25zdCBzdGQ6OndzdHJpbmcgIGdlbmVyaWNfd3N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHdzdHJpbmcoY29kZWN2dCgpKTsgfQotICAgIGNvbnN0IHN0ZDo6d3N0cmluZyAgZ2VuZXJpY193c3RyaW5nKGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdCB7IHJldHVybiB3c3RyaW5nKGN2dCk7IH0KLQotIyAgIGVuZGlmCi0KLSAgICAvLyAgLS0tLS0gIGNvbXBhcmUgIC0tLS0tCi0KLSAgICBpbnQgY29tcGFyZShjb25zdCBwYXRoJiBwKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVDsgIC8vIGdlbmVyaWMsIGxleGljb2dyYXBoaWNhbAotICAgIGludCBjb21wYXJlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHBhdGgocykpOyB9Ci0gICAgaW50IGNvbXBhcmUoY29uc3QgdmFsdWVfdHlwZSogcykgY29uc3QgIHsgcmV0dXJuIGNvbXBhcmUocGF0aChzKSk7IH0KLQotICAgIC8vICAtLS0tLSAgZGVjb21wb3NpdGlvbiAgLS0tLS0KLQotICAgIHBhdGggIHJvb3RfcGF0aCgpIGNvbnN0OyAKLSAgICBwYXRoICByb290X25hbWUoKSBjb25zdDsgICAgICAgICAvLyByZXR1cm5zIDAgb3IgMSBlbGVtZW50IHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIG9uIFBPU0lYLCByb290X25hbWUoKSBpcyBub24tZW1wdHkoKSBmb3IgbmV0d29yayBwYXRocwotICAgIHBhdGggIHJvb3RfZGlyZWN0b3J5KCkgY29uc3Q7ICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotICAgIHBhdGggIHJlbGF0aXZlX3BhdGgoKSBjb25zdDsKLSAgICBwYXRoICBwYXJlbnRfcGF0aCgpIGNvbnN0OwotICAgIHBhdGggIGZpbGVuYW1lKCkgY29uc3Q7ICAgICAgICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotICAgIHBhdGggIHN0ZW0oKSBjb25zdDsgICAgICAgICAgICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotICAgIHBhdGggIGV4dGVuc2lvbigpIGNvbnN0OyAgICAgICAgIC8vIHJldHVybnMgMCBvciAxIGVsZW1lbnQgcGF0aAotCi0gICAgLy8gIC0tLS0tICBxdWVyeSAgLS0tLS0KLQotICAgIGJvb2wgZW1wdHkoKSBjb25zdCAgICAgICAgICAgICAgIHsgcmV0dXJuIG1fcGF0aG5hbWUuZW1wdHkoKTsgfSAvLyBuYW1lIGNvbnNpc3RlbnQgd2l0aCBzdGQgY29udGFpbmVycwotICAgIGJvb2wgaGFzX3Jvb3RfcGF0aCgpIGNvbnN0ICAgICAgIHsgcmV0dXJuIGhhc19yb290X2RpcmVjdG9yeSgpIHx8IGhhc19yb290X25hbWUoKTsgfQotICAgIGJvb2wgaGFzX3Jvb3RfbmFtZSgpIGNvbnN0ICAgICAgIHsgcmV0dXJuICFyb290X25hbWUoKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfcm9vdF9kaXJlY3RvcnkoKSBjb25zdCAgeyByZXR1cm4gIXJvb3RfZGlyZWN0b3J5KCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzX3JlbGF0aXZlX3BhdGgoKSBjb25zdCAgIHsgcmV0dXJuICFyZWxhdGl2ZV9wYXRoKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzX3BhcmVudF9wYXRoKCkgY29uc3QgICAgIHsgcmV0dXJuICFwYXJlbnRfcGF0aCgpLmVtcHR5KCk7IH0KLSAgICBib29sIGhhc19maWxlbmFtZSgpIGNvbnN0ICAgICAgICB7IHJldHVybiAhbV9wYXRobmFtZS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfc3RlbSgpIGNvbnN0ICAgICAgICAgICAgeyByZXR1cm4gIXN0ZW0oKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNfZXh0ZW5zaW9uKCkgY29uc3QgICAgICAgeyByZXR1cm4gIWV4dGVuc2lvbigpLmVtcHR5KCk7IH0KLSAgICBib29sIGlzX2Fic29sdXRlKCkgY29uc3QKLSAgICB7Ci0jICAgICBpZmRlZiBORE5CT09TVF9XSU5ET1dTX0FQSQotICAgICAgcmV0dXJuIGhhc19yb290X25hbWUoKSAmJiBoYXNfcm9vdF9kaXJlY3RvcnkoKTsKLSMgICAgIGVsc2UKLSAgICAgIHJldHVybiBoYXNfcm9vdF9kaXJlY3RvcnkoKTsKLSMgICAgIGVuZGlmCi0gICAgfQotICAgIGJvb2wgaXNfcmVsYXRpdmUoKSBjb25zdCAgICAgICAgIHsgcmV0dXJuICFpc19hYnNvbHV0ZSgpOyB9IAotCi0gICAgLy8gIC0tLS0tICBpdGVyYXRvcnMgIC0tLS0tCi0KLSAgICBjbGFzcyBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIGl0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotCi0gICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKLSAgICBpdGVyYXRvciBlbmQoKSBjb25zdDsKLQotICAgIC8vICAtLS0tLSAgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgIC0tLS0tCi0KLSAgICBzdGF0aWMgc3RkOjpsb2NhbGUgIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpOwotICAgIHN0YXRpYyBjb25zdCAgICAgICAgY29kZWN2dF90eXBlJiBjb2RlY3Z0KCk7Ci0KLSAgICAvLyAgLS0tLS0gIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICAtLS0tLQotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRCkKLSMgICBlcnJvciBib3RoIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVQUkVDQVRFRCBhbmQgTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVEIGFyZSBkZWZpbmVkCi0jIGVuZGlmCi0KLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9OT19ERVBSRUNBVEVEKQotICAgIC8vICByZWNlbnRseSBkZXByZWNhdGVkIGZ1bmN0aW9ucyBzdXBwbGllZCBieSBkZWZhdWx0Ci0gICAgcGF0aCYgIG5vcm1hbGl6ZSgpICAgICAgICAgICAgICB7IHJldHVybiBtX25vcm1hbGl6ZSgpOyB9Ci0gICAgcGF0aCYgIHJlbW92ZV9sZWFmKCkgICAgICAgICAgICB7IHJldHVybiByZW1vdmVfZmlsZW5hbWUoKTsgfQotICAgIHBhdGggICBsZWFmKCkgY29uc3QgICAgICAgICAgICAgeyByZXR1cm4gZmlsZW5hbWUoKTsgfQotICAgIHBhdGggICBicmFuY2hfcGF0aCgpIGNvbnN0ICAgICAgeyByZXR1cm4gcGFyZW50X3BhdGgoKTsgfQotICAgIGJvb2wgICBoYXNfbGVhZigpIGNvbnN0ICAgICAgICAgeyByZXR1cm4gIW1fcGF0aG5hbWUuZW1wdHkoKTsgfQotICAgIGJvb2wgICBoYXNfYnJhbmNoX3BhdGgoKSBjb25zdCAgeyByZXR1cm4gIXBhcmVudF9wYXRoKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgICBpc19jb21wbGV0ZSgpIGNvbnN0ICAgICAgeyByZXR1cm4gaXNfYWJzb2x1dGUoKTsgfQotIyBlbmRpZgotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfRklMRVNZU1RFTV9ERVBSRUNBVEVEKQotICAgIC8vICBkZXByZWNhdGVkIGZ1bmN0aW9ucyB3aXRoIGVub3VnaCBzaWduYXR1cmUgb3Igc2VtYW50aWMgY2hhbmdlcyB0aGF0IHRoZXkgYXJlCi0gICAgLy8gIG5vdCBzdXBwbGllZCBieSBkZWZhdWx0IAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZpbGVfc3RyaW5nKCkgY29uc3QgICAgICAgICAgICAgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGRpcmVjdG9yeV9zdHJpbmcoKSBjb25zdCAgICAgICAgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hdGl2ZV9maWxlX3N0cmluZygpIGNvbnN0ICAgICAgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hdGl2ZV9kaXJlY3Rvcnlfc3RyaW5nKCkgY29uc3QgICB7IHJldHVybiBzdHJpbmcoKTsgfQotICAgIGNvbnN0IHN0cmluZ190eXBlIGV4dGVybmFsX2ZpbGVfc3RyaW5nKCkgY29uc3QgICAgICB7IHJldHVybiBuYXRpdmUoKTsgfQotICAgIGNvbnN0IHN0cmluZ190eXBlIGV4dGVybmFsX2RpcmVjdG9yeV9zdHJpbmcoKSBjb25zdCB7IHJldHVybiBuYXRpdmUoKTsgfQotCi0gICAgLy8gIG9sZGVyIGZ1bmN0aW9ucyBubyBsb25nZXIgc3VwcG9ydGVkCi0gICAgLy90eXBlZGVmIGJvb2wgKCpuYW1lX2NoZWNrKShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICAgIC8vYmFzaWNfcGF0aChjb25zdCBzdHJpbmdfdHlwZSYgc3RyLCBuYW1lX2NoZWNrKSB7IG9wZXJhdG9yLz0oc3RyKTsgfQotICAgIC8vYmFzaWNfcGF0aChjb25zdCB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6dmFsdWVfdHlwZSogcywgbmFtZV9jaGVjaykKLSAgICAvLyAgeyBvcGVyYXRvci89KHMpO30KLSAgICAvL3N0YXRpYyBib29sIGRlZmF1bHRfbmFtZV9jaGVja193cml0YWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9IAotICAgIC8vc3RhdGljIHZvaWQgZGVmYXVsdF9uYW1lX2NoZWNrKG5hbWVfY2hlY2spIHt9Ci0gICAgLy9zdGF0aWMgbmFtZV9jaGVjayBkZWZhdWx0X25hbWVfY2hlY2soKSB7IHJldHVybiAwOyB9Ci0gICAgLy9iYXNpY19wYXRoJiBjYW5vbml6ZSgpOwotIyBlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIHBhdGggcHJpdmF0ZSBtZW1iZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgcHJpdmF0ZToKLSMgICBpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICAgcHJhZ21hIHdhcm5pbmcocHVzaCkgLy8gU2F2ZSB3YXJuaW5nIHNldHRpbmdzCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSkgLy8gZGlzYWJsZSB3YXJuaW5nOiBjbGFzcyAnc3RkOjpiYXNpY19zdHJpbmc8X0VsZW0sX1RyYWl0cyxfQXg+JwotIyAgIGVuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZS4uLgotLyoKLSAgICAgIG1fcGF0aG5hbWUgaGFzIHRoZSB0eXBlLCBlbmNvZGluZywgYW5kIGZvcm1hdCByZXF1aXJlZCBieSB0aGUgbmF0aXZlCi0gICAgICBvcGVyYXRpbmcgc3lzdGVtLiBUaHVzIGZvciBQT1NJWCBhbmQgV2luZG93cyB0aGVyZSBpcyBubyBjb252ZXJzaW9uIGZvcgotICAgICAgcGFzc2luZyBtX3BhdGhuYW1lLmNfc3RyKCkgdG8gdGhlIE8vUyBBUEkgb3Igd2hlbiBvYnRhaW5pbmcgYSBwYXRoIGZyb20gdGhlCi0gICAgICBPL1MgQVBJLiBQT1NJWCBlbmNvZGluZyBpcyB1bnNwZWNpZmllZCBvdGhlciB0aGFuIGZvciBkb3QgYW5kIHNsYXNoCi0gICAgICBjaGFyYWN0ZXJzOyBQT1NJWCBqdXN0IHRyZWF0cyBwYXRocyBhcyBhIHNlcXVlbmNlIG9mIGJ5dGVzLiBXaW5kb3dzCi0gICAgICBlbmNvZGluZyBpcyBVQ1MtMiBvciBVVEYtMTYgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uLgotKi8KLSAgICBzdHJpbmdfdHlwZSAgbV9wYXRobmFtZTsgIC8vIFdpbmRvd3M6IGFzIGlucHV0OyBiYWNrc2xhc2hlcyBOT1QgY29udmVydGVkIHRvIHNsYXNoZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbGFzaGVzIE5PVCBjb252ZXJ0ZWQgdG8gYmFja3NsYXNoZXMKLSMgICBpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICAgcHJhZ21hIHdhcm5pbmcocG9wKSAvLyByZXN0b3JlIHdhcm5pbmcgc2V0dGluZ3MuCi0jICAgZW5kaWYgCi0KLSAgICBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIG1fYXBwZW5kX3NlcGFyYXRvcl9pZl9uZWVkZWQoKTsKLSAgICAvLyAgUmV0dXJuczogSWYgc2VwYXJhdG9yIGlzIHRvIGJlIGFwcGVuZGVkLCBtX3BhdGhuYW1lLnNpemUoKSBiZWZvcmUgYXBwZW5kLiBPdGhlcndpc2UgMC4KLSAgICAvLyAgTm90ZTogQW4gYXBwZW5kIGlzIG5ldmVyIHBlcmZvcm1lZCBpZiBzaXplKCk9PTAsIHNvIGEgcmV0dXJuZWQgMCBpcyB1bmFtYmlndW91cy4KLQotICAgIHZvaWQgbV9lcmFzZV9yZWR1bmRhbnRfc2VwYXJhdG9yKHN0cmluZ190eXBlOjpzaXplX3R5cGUgc2VwX3Bvcyk7Ci0gICAgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBtX3BhcmVudF9wYXRoX2VuZCgpIGNvbnN0OwotCi0gICAgcGF0aCYgbV9ub3JtYWxpemUoKTsKLQotICAgIC8vIFdhcyBxdWFsaWZpZWQ7IGNvbW80MzNiZXRhOCByZXBvcnRzOgotICAgIC8vICAgIHdhcm5pbmcgIzQyNy1EOiBxdWFsaWZpZWQgbmFtZSBpcyBub3QgYWxsb3dlZCBpbiBtZW1iZXIgZGVjbGFyYXRpb24gCi0gICAgZnJpZW5kIGNsYXNzIGl0ZXJhdG9yOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPChjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocyk7Ci0KLSAgICAvLyBzZWUgcGF0aDo6aXRlcmF0b3I6OmluY3JlbWVudC9kZWNyZW1lbnQgY29tbWVudCBiZWxvdwotICAgIHN0YXRpYyB2b2lkIG1fcGF0aF9pdGVyYXRvcl9pbmNyZW1lbnQocGF0aDo6aXRlcmF0b3IgJiBpdCk7Ci0gICAgc3RhdGljIHZvaWQgbV9wYXRoX2l0ZXJhdG9yX2RlY3JlbWVudChwYXRoOjppdGVyYXRvciAmIGl0KTsKLQotICB9OyAgLy8gY2xhc3MgcGF0aAotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICAgICAgaW50IGxleF9jb21wYXJlKHBhdGg6Oml0ZXJhdG9yIGZpcnN0MSwgcGF0aDo6aXRlcmF0b3IgbGFzdDEsCi0gICAgICAgIHBhdGg6Oml0ZXJhdG9yIGZpcnN0MiwgcGF0aDo6aXRlcmF0b3IgbGFzdDIpOwotICB9Ci0KLSMgaWZuZGVmIE5ETkJPT1NUX0ZJTEVTWVNURU1fTk9fREVQUkVDQVRFRAotICB0eXBlZGVmIHBhdGggd3BhdGg7Ci0jIGVuZGlmCi0KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aDo6aXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAKLSAgY2xhc3MgcGF0aDo6aXRlcmF0b3IKLSAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPAotICAgICAgcGF0aDo6aXRlcmF0b3IsCi0gICAgICBwYXRoIGNvbnN0LAotICAgICAgbmRuYm9vc3Q6OmJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZyA+Ci0gIHsKLSAgcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6Oml0ZXJhdG9yX2NvcmVfYWNjZXNzOwotICAgIGZyaWVuZCBjbGFzcyBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6cGF0aDsKLSAgICBmcmllbmQgdm9pZCBtX3BhdGhfaXRlcmF0b3JfaW5jcmVtZW50KHBhdGg6Oml0ZXJhdG9yICYgaXQpOwotICAgIGZyaWVuZCB2b2lkIG1fcGF0aF9pdGVyYXRvcl9kZWNyZW1lbnQocGF0aDo6aXRlcmF0b3IgJiBpdCk7Ci0KLSAgICBjb25zdCBwYXRoJiBkZXJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQotCi0gICAgYm9vbCBlcXVhbChjb25zdCBpdGVyYXRvciAmIHJocykgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gbV9wYXRoX3B0ciA9PSByaHMubV9wYXRoX3B0ciAmJiBtX3BvcyA9PSByaHMubV9wb3M7Ci0gICAgfQotCi0gICAgLy8gaXRlcmF0b3JfZmFjYWRlIGRlcml2ZWQgY2xhc3NlcyBkb24ndCBzZWVtIHRvIGxpa2UgaW1wbGVtZW50YXRpb25zIGluCi0gICAgLy8gc2VwYXJhdGUgdHJhbnNsYXRpb24gdW5pdCBkbGwncywgc28gZm9yd2FyZCB0byBjbGFzcyBwYXRoIHN0YXRpYyBtZW1iZXJzCi0gICAgdm9pZCBpbmNyZW1lbnQoKSB7IG1fcGF0aF9pdGVyYXRvcl9pbmNyZW1lbnQoKnRoaXMpOyB9Ci0gICAgdm9pZCBkZWNyZW1lbnQoKSB7IG1fcGF0aF9pdGVyYXRvcl9kZWNyZW1lbnQoKnRoaXMpOyB9Ci0KLSAgICBwYXRoICAgICAgICAgICAgICAgICAgICBtX2VsZW1lbnQ7ICAgLy8gY3VycmVudCBlbGVtZW50Ci0gICAgY29uc3QgcGF0aCogICAgICAgICAgICAgbV9wYXRoX3B0cjsgIC8vIHBhdGggYmVpbmcgaXRlcmF0ZWQgb3ZlcgotICAgIHN0cmluZ190eXBlOjpzaXplX3R5cGUgIG1fcG9zOyAgICAgICAvLyBwb3NpdGlvbiBvZiBtX2VsZW1lbnQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbV9wYXRoX3B0ci0+bV9wYXRobmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbV9lbGVtZW50IGlzIGltcGxpY2l0IGRvdCwgbV9wb3MgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIG9mIHRoZSBsYXN0IHNlcGFyYXRvciBpbiB0aGUgcGF0aC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5kKCkgaXRlcmF0b3IgaXMgaW5kaWNhdGVkIGJ5IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtX3BvcyA9PSBtX3BhdGhfcHRyLT5tX3BhdGhuYW1lLnNpemUoKQotICB9OyAvLyBwYXRoOjppdGVyYXRvcgotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbi1tZW1iZXIgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIC8vICBzdGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlIHdvdWxkIGluZmluYXRlbHkgcmVjdXJzZSBiZWNhdXNlIHBhdGggaXRlcmF0b3JzCi0gIC8vICB5aWVsZCBwYXRocywgc28gcHJvdmlkZSBhIHBhdGggYXdhcmUgdmVyc2lvbgotICBpbmxpbmUgYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShwYXRoOjppdGVyYXRvciBmaXJzdDEsIHBhdGg6Oml0ZXJhdG9yIGxhc3QxLAotICAgIHBhdGg6Oml0ZXJhdG9yIGZpcnN0MiwgcGF0aDo6aXRlcmF0b3IgbGFzdDIpCi0gICAgeyByZXR1cm4gZGV0YWlsOjpsZXhfY29tcGFyZShmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyKSA8IDA7IH0KLSAgCi0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpICAgICAgICAgICAgICB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgPT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoOjpzdHJpbmdfdHlwZSYgcmhzKSB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgPT0gMDt9IAotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGg6OnN0cmluZ190eXBlJiBsaHMsIGNvbnN0IHBhdGgmIHJocykge3JldHVybiByaHMuY29tcGFyZShsaHMpID09IDA7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aDo6dmFsdWVfdHlwZSogcmhzKSAge3JldHVybiBsaHMuY29tcGFyZShyaHMpID09IDA7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhdGg6OnZhbHVlX3R5cGUqIGxocywgY29uc3QgcGF0aCYgcmhzKSAge3JldHVybiByaHMuY29tcGFyZShsaHMpID09IDA7fQotICAKLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykgICAgICAgICAgICAgIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSAhPSAwO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGg6OnN0cmluZ190eXBlJiByaHMpIHtyZXR1cm4gbGhzLmNvbXBhcmUocmhzKSAhPSAwO30gCi0gIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aDo6c3RyaW5nX3R5cGUmIGxocywgY29uc3QgcGF0aCYgcmhzKSB7cmV0dXJuIHJocy5jb21wYXJlKGxocykgIT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoOjp2YWx1ZV90eXBlKiByaHMpICB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgIT0gMDt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aDo6dmFsdWVfdHlwZSogbGhzLCBjb25zdCBwYXRoJiByaHMpICB7cmV0dXJuIHJocy5jb21wYXJlKGxocykgIT0gMDt9Ci0KLSAgLy8gVE9ETzogd2h5IGRvID09IGFuZCAhPSBoYXZlIGFkZGl0aW9uYWwgb3ZlcmxvYWRzLCBidXQgdGhlIG90aGVycyBkb24ndD8KLQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpICB7cmV0dXJuIGxocy5jb21wYXJlKHJocykgPCAwO30KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykge3JldHVybiAhKHJocyA8IGxocyk7fQotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IHBhdGgmIGxocywgY29uc3QgcGF0aCYgcmhzKSB7cmV0dXJuIHJocyA8IGxoczt9Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpIHtyZXR1cm4gIShsaHMgPCByaHMpO30KLQotICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShjb25zdCBwYXRoJiB4KQotICB7Ci0jIGlmZGVmIE5ETkJPT1NUX1dJTkRPV1NfQVBJCi0gICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0gICAgZm9yKGNvbnN0IHBhdGg6OnZhbHVlX3R5cGUqIGl0ID0geC5jX3N0cigpOyAqaXQ7ICsraXQpCi0gICAgICBoYXNoX2NvbWJpbmUoc2VlZCwgKml0ID09ICcvJyA/IEwnXFwnIDogKml0KTsKLSAgICByZXR1cm4gc2VlZDsKLSMgZWxzZSAgIC8vIE5ETkJPT1NUX1BPU0lYX0FQSQotICAgIHJldHVybiBoYXNoX3JhbmdlKHgubmF0aXZlKCkuYmVnaW4oKSwgeC5uYXRpdmUoKS5lbmQoKSk7Ci0jIGVuZGlmCi0gIH0KLQotICBpbmxpbmUgdm9pZCBzd2FwKHBhdGgmIGxocywgcGF0aCYgcmhzKSAgICAgICAgICAgICAgICAgICB7IGxocy5zd2FwKHJocyk7IH0KLQotICBpbmxpbmUgcGF0aCBvcGVyYXRvci8oY29uc3QgcGF0aCYgbGhzLCBjb25zdCBwYXRoJiByaHMpICB7IHJldHVybiBwYXRoKGxocykgLz0gcmhzOyB9Ci0KLSAgLy8gIGluc2VydGVycyBhbmQgZXh0cmFjdG9ycwotICAvLyAgICB1c2UgbmRuYm9vc3Q6OmlvOjpxdW90ZWQoKSB0byBoYW5kbGUgc3BhY2VzIGluIHBhdGhzCi0gIC8vICAgIHVzZSAnJicgYXMgZXNjYXBlIGNoYXJhY3RlciB0byBlYXNlIHVzZSBmb3IgV2luZG93cyBwYXRocwotCi0gIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHM+Ci0gIGlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYKLSAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3MsIGNvbnN0IHBhdGgmIHApCi0gIHsKLSAgICByZXR1cm4gb3MKLSAgICAgIDw8IG5kbmJvb3N0Ojppbzo6cXVvdGVkKHAudGVtcGxhdGUgc3RyaW5nPHN0ZDo6YmFzaWNfc3RyaW5nPENoYXI+ID4oKSwgc3RhdGljX2Nhc3Q8Q2hhcj4oJyYnKSk7Ci0gIH0KLSAgCi0gIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHM+Ci0gIGlubGluZSBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYKLSAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYgaXMsIHBhdGgmIHApCi0gIHsKLSAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyPiBzdHI7Ci0gICAgaXMgPj4gbmRuYm9vc3Q6OmlvOjpxdW90ZWQoc3RyLCBzdGF0aWNfY2FzdDxDaGFyPignJicpKTsKLSAgICBwID0gc3RyOwotICAgIHJldHVybiBpczsKLSAgfQotICAKLSAgLy8gIG5hbWVfY2hlY2tzCi0KLSAgLy8gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaG9sZG92ZXJzIGZyb20gdmVyc2lvbiAxLiBJdCBpc24ndCBjbGVhciB0aGV5IGhhdmUgbXVjaAotICAvLyAgdXNlZnVsbmVzcywgb3IgaG93IHRvIGdlbmVyYWxpemUgdGhlbSBmb3IgbGF0ZXIgdmVyc2lvbnMuCi0KLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGJvb2wgcG9ydGFibGVfcG9zaXhfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCB3aW5kb3dzX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJiBuYW1lKTsKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGJvb2wgcG9ydGFibGVfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCBwb3J0YWJsZV9kaXJlY3RvcnlfbmFtZShjb25zdCBzdGQ6OnN0cmluZyAmIG5hbWUpOwotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgYm9vbCBwb3J0YWJsZV9maWxlX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJiBuYW1lKTsKLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMIGJvb2wgbmF0aXZlKGNvbnN0IHN0ZDo6c3RyaW5nICYgbmFtZSk7Ci0gCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aCBtZW1iZXIgdGVtcGxhdGUgaW1wbGVtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gIHBhdGgmIHBhdGg6OmFwcGVuZChJbnB1dEl0ZXJhdG9yIGJlZ2luLCBJbnB1dEl0ZXJhdG9yIGVuZCwgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsgCi0gICAgaWYgKGJlZ2luID09IGVuZCkKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNlcF9wb3MobV9hcHBlbmRfc2VwYXJhdG9yX2lmX25lZWRlZCgpKTsKLSAgICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZT4KLSAgICAgIHMoYmVnaW4sIGVuZCk7Ci0gICAgcGF0aF90cmFpdHM6OmNvbnZlcnQocy5jX3N0cigpLCBzLmNfc3RyKCkrcy5zaXplKCksIG1fcGF0aG5hbWUsIGN2dCk7Ci0gICAgaWYgKHNlcF9wb3MpCi0gICAgICBtX2VyYXNlX3JlZHVuZGFudF9zZXBhcmF0b3Ioc2VwX3Bvcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFNvdXJjZT4KLSAgcGF0aCYgcGF0aDo6YXBwZW5kKFNvdXJjZSBjb25zdCYgc291cmNlLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIGlmIChwYXRoX3RyYWl0czo6ZW1wdHkoc291cmNlKSkKLSAgICAgIHJldHVybiAqdGhpczsKLSAgICBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNlcF9wb3MobV9hcHBlbmRfc2VwYXJhdG9yX2lmX25lZWRlZCgpKTsKLSAgICBwYXRoX3RyYWl0czo6ZGlzcGF0Y2goc291cmNlLCBtX3BhdGhuYW1lLCBjdnQpOwotICAgIGlmIChzZXBfcG9zKQotICAgICAgbV9lcmFzZV9yZWR1bmRhbnRfc2VwYXJhdG9yKHNlcF9wb3MpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAgICAgICAgICAgICAgICAgICAgY2xhc3MgcGF0aCBtZW1iZXIgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6c3RyaW5nIHBhdGg6OnN0cmluZzxzdGQ6OnN0cmluZz4oKSBjb25zdAotICAgIHsgcmV0dXJuIHN0cmluZygpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6d3N0cmluZyBwYXRoOjpzdHJpbmc8c3RkOjp3c3RyaW5nPigpIGNvbnN0Ci0gICAgeyByZXR1cm4gd3N0cmluZygpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6c3RyaW5nIHBhdGg6OnN0cmluZzxzdGQ6OnN0cmluZz4oY29uc3QgY29kZWN2dF90eXBlJiBjdnQpIGNvbnN0Ci0gICAgeyByZXR1cm4gc3RyaW5nKGN2dCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjp3c3RyaW5nIHBhdGg6OnN0cmluZzxzdGQ6OndzdHJpbmc+KGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdAotICAgIHsgcmV0dXJuIHdzdHJpbmcoY3Z0KTsgfQotCi0gIHRlbXBsYXRlIDw+IGlubGluZQotICBzdGQ6OnN0cmluZyBwYXRoOjpnZW5lcmljX3N0cmluZzxzdGQ6OnN0cmluZz4oKSBjb25zdAotICAgIHsgcmV0dXJuIGdlbmVyaWNfc3RyaW5nKCk7IH0KLQotICB0ZW1wbGF0ZSA8PiBpbmxpbmUKLSAgc3RkOjp3c3RyaW5nIHBhdGg6OmdlbmVyaWNfc3RyaW5nPHN0ZDo6d3N0cmluZz4oKSBjb25zdAotICAgIHsgcmV0dXJuIGdlbmVyaWNfd3N0cmluZygpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6c3RyaW5nIHBhdGg6OmdlbmVyaWNfc3RyaW5nPHN0ZDo6c3RyaW5nPihjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkgY29uc3QKLSAgICB7IHJldHVybiBnZW5lcmljX3N0cmluZyhjdnQpOyB9Ci0KLSAgdGVtcGxhdGUgPD4gaW5saW5lCi0gIHN0ZDo6d3N0cmluZyBwYXRoOjpnZW5lcmljX3N0cmluZzxzdGQ6OndzdHJpbmc+KGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KSBjb25zdAotICAgIHsgcmV0dXJuIGdlbmVyaWNfd3N0cmluZyhjdnQpOyB9Ci0KLQotfSAgLy8gbmFtZXNwYWNlIGZpbGVzeXN0ZW0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBwb3BzIGFiaV9wcmVmaXguaHBwIHByYWdtYXMKLQotI2VuZGlmICAvLyBORE5CT09TVF9GSUxFU1lTVEVNX1BBVEhfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9maWxlc3lzdGVtL3BhdGhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRlMTNhOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ZpbGVzeXN0ZW0vcGF0aF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLS8vICBmaWxlc3lzdGVtIHBhdGhfdHJhaXRzLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDkKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBMaWJyYXJ5IGhvbWUgcGFnZTogaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9maWxlc3lzdGVtCi0KLSNpZm5kZWYgTkROQk9PU1RfRklMRVNZU1RFTV9QQVRIX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfRklMRVNZU1RFTV9QQVRIX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSMgaWYgZGVmaW5lZCggTkROQk9PU1RfTk9fU1REX1dTVFJJTkcgKQotIyAgIGVycm9yIENvbmZpZ3VyYXRpb24gbm90IHN1cHBvcnRlZDogQm9vc3QuRmlsZXN5c3RlbSBWMyBhbmQgbGF0ZXIgcmVxdWlyZXMgc3RkOjp3c3RyaW5nIHN1cHBvcnQKLSMgZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ZpbGVzeXN0ZW0vY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RlY2F5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+Ci0jaW5jbHVkZSA8Y3djaGFyPiAgLy8gZm9yIG1ic3RhdGVfdAotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxsb2NhbGU+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLS8vICNpbmNsdWRlIDxpb3N0cmVhbT4gICAvLyoqKiogY29tbWVudCBtZSBvdXQgKioqKgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9wcmVmaXguaHBwPiAvLyBtdXN0IGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmaWxlc3lzdGVtIHsKLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wgY29uc3Qgc3lzdGVtOjplcnJvcl9jYXRlZ29yeSYgY29kZWN2dF9lcnJvcl9jYXRlZ29yeSgpOwotICAvLyAgdXNlcyBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0IHVzZWQgZm9yIGVycm9yIGNvZGVzOgotICAvLwotICAvLyAgICBvazogICAgICAgQ29udmVyc2lvbiBzdWNjZXNzZnVsLgotICAvLyAgICBwYXJ0aWFsOiAgTm90IGFsbCBzb3VyY2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQ7IG9uZSBvciBtb3JlIGFkZGl0aW9uYWwgc291cmNlCi0gIC8vICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGFyZSBuZWVkZWQgdG8gcHJvZHVjZSB0aGUgZmluYWwgdGFyZ2V0IGNoYXJhY3Rlciwgb3IgdGhlCi0gIC8vICAgICAgICAgICAgICBzaXplIG9mIHRoZSB0YXJnZXQgaW50ZXJtZWRpYXRlIGJ1ZmZlciB3YXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHJlc3VsdC4KLSAgLy8gICAgZXJyb3I6ICAgIEEgY2hhcmFjdGVyIGluIHRoZSBzb3VyY2UgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byB0aGUgdGFyZ2V0IGVuY29kaW5nLgotICAvLyAgICBub2NvbnY6ICAgVGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGNoYXJhY3RlcnMgaGF2ZSB0aGUgc2FtZSB0eXBlIGFuZCBlbmNvZGluZywgc28gbm8KLSAgLy8gICAgICAgICAgICAgIGNvbnZlcnNpb24gd2FzIG5lY2Vzc2FyeS4KLQotICBjbGFzcyBkaXJlY3RvcnlfZW50cnk7Ci0gIAotbmFtZXNwYWNlIHBhdGhfdHJhaXRzIHsKLSAKLSAgdHlwZWRlZiBzdGQ6OmNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgc3RkOjptYnN0YXRlX3Q+IGNvZGVjdnRfdHlwZTsKLQotICAvLyAgaXNfcGF0aGFibGUgdHlwZSB0cmFpdDsgYWxsb3dzIGRpc2FibGluZyBvdmVyLWFncmVzc2l2ZSBjbGFzcyBwYXRoIG1lbWJlciB0ZW1wbGF0ZXMKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGlzX3BhdGhhYmxlIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsKLQotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxjaGFyKj4gICAgICAgICAgICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8Y29uc3QgY2hhcio+ICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHdjaGFyX3QqPiAgICAgICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxjb25zdCB3Y2hhcl90Kj4gICAgICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8c3RkOjpzdHJpbmc+ICAgICAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHN0ZDo6d3N0cmluZz4gICAgICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxzdGQ6OnZlY3RvcjxjaGFyPiA+ICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8c3RkOjp2ZWN0b3I8d2NoYXJfdD4gPiAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGlzX3BhdGhhYmxlPHN0ZDo6bGlzdDxjaGFyPiA+ICAgICAgIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19wYXRoYWJsZTxzdGQ6Omxpc3Q8d2NoYXJfdD4gPiAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcGF0aGFibGU8ZGlyZWN0b3J5X2VudHJ5PiAgICAgICAgeyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci0KLSAgLy8gIFBhdGhhYmxlIGVtcHR5Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4gaW5saW5lCi0gICAgLy8gZGlzYWJsZV9pZiBhaWRzIGJyb2tlbiBjb21waWxlcnMgKElCTSwgb2xkIEdDQywgZXRjLikgYW5kIGlzIGhhcm1sZXNzIGZvcgotICAgIC8vIGNvbmZvcm1pbmcgY29tcGlsZXJzLiBSZXBsYWNlIGJ5IHBsYWluICJib29sIiBhdCBzb21lIGZ1dHVyZSBkYXRlICgyMDEyPykgCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWY8bmRuYm9vc3Q6OmlzX2FycmF5PENvbnRhaW5lcj4sIGJvb2w+Ojp0eXBlCi0gICAgICBlbXB0eShjb25zdCBDb250YWluZXIgJiBjKQotICAgICAgICB7IHJldHVybiBjLmJlZ2luKCkgPT0gYy5lbmQoKTsgfQotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUKLSAgICBib29sIGVtcHR5KFQgKiBjb25zdCAmIGNfc3RyKQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGNfc3RyKTsKLSAgICByZXR1cm4gISpjX3N0cjsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4gaW5saW5lCi0gICAgIGJvb2wgZW1wdHkoVCAoJngpW05dKQotICAgICAgIHsgcmV0dXJuICF4WzBdOyB9Ci0KLSAgLy8gdmFsdWUgdHlwZXMgZGlmZmVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAvLwotICAvLyAgIEEgZnJvbV9lbmQgYXJndW1lbnQgb2YgMCBpcyBsZXNzIGVmZmljaWVudCB0aGFuIGEga25vd24gZW5kLCBzbyB1c2Ugb25seSBpZiBuZWVkZWQKLSAgCi0gIE5ETkJPT1NUX0ZJTEVTWVNURU1fREVDTAotICB2b2lkIGNvbnZlcnQoY29uc3QgY2hhciogZnJvbSwKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmcm9tX2VuZCwgICAgLy8gMCBmb3IgbnVsbCB0ZXJtaW5hdGVkIE1CQ1MKLSAgICAgICAgICAgICAgICBzdGQ6OndzdHJpbmcgJiB0bywKLSAgICAgICAgICAgICAgICBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCk7Ci0KLSAgTkROQk9PU1RfRklMRVNZU1RFTV9ERUNMCi0gIHZvaWQgY29udmVydChjb25zdCB3Y2hhcl90KiBmcm9tLAotICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIGZyb21fZW5kLCAgLy8gMCBmb3IgbnVsbCB0ZXJtaW5hdGVkIE1CQ1MKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAmIHRvLAotICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KTsKLQotICBpbmxpbmUgCi0gIHZvaWQgY29udmVydChjb25zdCBjaGFyKiBmcm9tLAotICAgICAgICAgICAgICAgIHN0ZDo6d3N0cmluZyAmIHRvLAotICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb20pOwotICAgIGNvbnZlcnQoZnJvbSwgMCwgdG8sIGN2dCk7Ci0gIH0KLQotICBpbmxpbmUgCi0gIHZvaWQgY29udmVydChjb25zdCB3Y2hhcl90KiBmcm9tLAotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLSAgICBORE5CT09TVF9BU1NFUlQoZnJvbSk7Ci0gICAgY29udmVydChmcm9tLCAwLCB0bywgY3Z0KTsKLSAgfQotCi0gIC8vIHZhbHVlIHR5cGVzIHNhbWUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAvLyBjaGFyCi0KLSAgaW5saW5lIAotICB2b2lkIGNvbnZlcnQoY29uc3QgY2hhciogZnJvbSwgY29uc3QgY2hhciogZnJvbV9lbmQsIHN0ZDo6c3RyaW5nICYgdG8sCi0gICAgY29uc3QgY29kZWN2dF90eXBlJikKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tKTsKLSAgICBORE5CT09TVF9BU1NFUlQoZnJvbV9lbmQpOwotICAgIHRvLmFwcGVuZChmcm9tLCBmcm9tX2VuZCk7Ci0gIH0KLQotICBpbmxpbmUgCi0gIHZvaWQgY29udmVydChjb25zdCBjaGFyKiBmcm9tLAotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJikKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tKTsKLSAgICB0byArPSBmcm9tOwotICB9Ci0KLSAgLy8gd2NoYXJfdAotCi0gIGlubGluZSAKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IHdjaGFyX3QqIGZyb20sIGNvbnN0IHdjaGFyX3QqIGZyb21fZW5kLCBzdGQ6OndzdHJpbmcgJiB0bywKLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUmKQotICB7Ci0gICAgTkROQk9PU1RfQVNTRVJUKGZyb20pOwotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tX2VuZCk7Ci0gICAgdG8uYXBwZW5kKGZyb20sIGZyb21fZW5kKTsKLSAgfQotCi0gIGlubGluZSAKLSAgdm9pZCBjb252ZXJ0KGNvbnN0IHdjaGFyX3QqIGZyb20sCi0gICAgICAgICAgICAgICAgc3RkOjp3c3RyaW5nICYgdG8sCi0gICAgICAgICAgICAgICAgY29uc3QgY29kZWN2dF90eXBlJikKLSAgewotICAgIE5ETkJPT1NUX0FTU0VSVChmcm9tKTsKLSAgICB0byArPSBmcm9tOwotICB9Ci0KLSAgLy8gIFNvdXJjZSBkaXNwYXRjaCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gIC8vICBjb250aWd1b3VzIGNvbnRhaW5lcnMKLSAgdGVtcGxhdGUgPGNsYXNzIFU+IGlubGluZQotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIGMsIFUmIHRvLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIGlmIChjLnNpemUoKSkKLSAgICAgIGNvbnZlcnQoJipjLmJlZ2luKCksICYqYy5iZWdpbigpICsgYy5zaXplKCksIHRvLCBjdnQpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBVPiBpbmxpbmUKLSAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgYywgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgaWYgKGMuc2l6ZSgpKQotICAgICAgY29udmVydCgmKmMuYmVnaW4oKSwgJipjLmJlZ2luKCkgKyBjLnNpemUoKSwgdG8sIGN2dCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFU+IGlubGluZQotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qgc3RkOjp2ZWN0b3I8Y2hhcj4mIGMsIFUmIHRvLCBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCkKLSAgewotICAgIGlmIChjLnNpemUoKSkKLSAgICAgIGNvbnZlcnQoJipjLmJlZ2luKCksICYqYy5iZWdpbigpICsgYy5zaXplKCksIHRvLCBjdnQpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBVPiBpbmxpbmUKLSAgICB2b2lkIGRpc3BhdGNoKGNvbnN0IHN0ZDo6dmVjdG9yPHdjaGFyX3Q+JiBjLCBVJiB0bywgY29uc3QgY29kZWN2dF90eXBlJiBjdnQpCi0gIHsKLSAgICBpZiAoYy5zaXplKCkpCi0gICAgICBjb252ZXJ0KCYqYy5iZWdpbigpLCAmKmMuYmVnaW4oKSArIGMuc2l6ZSgpLCB0bywgY3Z0KTsKLSAgfQotCi0gIC8vICBub24tY29udGlndW91cyBjb250YWluZXJzCi0gIHRlbXBsYXRlIDxjbGFzcyBDb250YWluZXIsIGNsYXNzIFU+IGlubGluZQotICAgIC8vIGRpc2FibGVfaWYgYWlkcyBicm9rZW4gY29tcGlsZXJzIChJQk0sIG9sZCBHQ0MsIGV0Yy4pIGFuZCBpcyBoYXJtbGVzcyBmb3IKLSAgICAvLyBjb25mb3JtaW5nIGNvbXBpbGVycy4gUmVwbGFjZSBieSBwbGFpbiAidm9pZCIgYXQgc29tZSBmdXR1cmUgZGF0ZSAoMjAxMj8pIAotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmPG5kbmJvb3N0Ojppc19hcnJheTxDb250YWluZXI+LCB2b2lkPjo6dHlwZQotICAgICAgZGlzcGF0Y2goY29uc3QgQ29udGFpbmVyICYgYywgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0gICAgaWYgKGMuc2l6ZSgpKQotICAgIHsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gcyhjLmJlZ2luKCksIGMuZW5kKCkpOwotICAgICAgY29udmVydChzLmNfc3RyKCksIHMuY19zdHIoKStzLnNpemUoKSwgdG8sIGN2dCk7Ci0gICAgfQotICB9Ci0KLSAgLy8gIGNfc3RyCi0gIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUKLSAgdm9pZCBkaXNwYXRjaChUICogY29uc3QgJiBjX3N0ciwgVSYgdG8sIGNvbnN0IGNvZGVjdnRfdHlwZSYgY3Z0KQotICB7Ci0vLyAgICBzdGQ6OmNvdXQgPDwgImRpc3BhdGNoKCkgY29uc3QgVCAqXG4iOwotICAgIE5ETkJPT1NUX0FTU0VSVChjX3N0cik7Ci0gICAgY29udmVydChjX3N0ciwgdG8sIGN2dCk7Ci0gIH0KLSAgCi0gIC8vICBOb3RlOiB0aGVyZSBpcyBubyBkaXNwYXRjaCBvbiBDLXN0eWxlIGFycmF5cyBiZWNhdXNlIHRoZSBhcnJheSBtYXkKLSAgLy8gIGNvbnRhaW4gYSBzdHJpbmcgc21hbGxlciB0aGFuIHRoZSBhcnJheSBzaXplLiAKLQotICBORE5CT09TVF9GSUxFU1lTVEVNX0RFQ0wKLSAgdm9pZCBkaXNwYXRjaChjb25zdCBkaXJlY3RvcnlfZW50cnkgJiBkZSwKLSMgICAgICAgICAgICAgICAgaWZkZWYgTkROQk9PU1RfV0lORE9XU19BUEkKLSAgICAgICAgICAgICAgICAgICBzdGQ6OndzdHJpbmcgJiB0bywKLSMgICAgICAgICAgICAgICAgZWxzZSAgIAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICYgdG8sCi0jICAgICAgICAgICAgICAgIGVuZGlmCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYpOwotCi0KLX19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGhfdHJhaXRzCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3ByZWZpeC5ocHAgcHJhZ21hcwotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0ZJTEVTWVNURU1fUEFUSF9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmIwOTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEtMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9mdW5jdGlvbgotCi0vLyBXaWxsaWFtIEtlbXBmLCBKZXNzZSBKb25lcyBhbmQgS2FybCBOZWxzb24gd2VyZSBhbGwgdmVyeSBoZWxwZnVsIGluIHRoZQotLy8gZGVzaWduIG9mIHRoaXMgbGlicmFyeS4KLQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+IC8vIHVuYXJ5X2Z1bmN0aW9uLCBiaW5hcnlfZnVuY3Rpb24KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyAxMAotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTCi0KLS8vIEluY2x1ZGUgdGhlIHByb2xvZ3VlIGhlcmUgc28gdGhhdCB0aGUgdXNlIG9mIGZpbGUtbGV2ZWwgaXRlcmF0aW9uCi0vLyBpbiBhbnl0aGluZyB0aGF0IG1heSBiZSBpbmNsdWRlZCBieSBmdW5jdGlvbl90ZW1wbGF0ZS5ocHAgZG9lc24ndCBicmVhawotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9wcm9sb2d1ZS5ocHA+Ci0KLS8vIE9sZGVyIFZpc3VhbCBBZ2UgQysrIHZlcnNpb24gZG8gbm90IGhhbmRsZSB0aGUgZmlsZSBpdGVyYXRpb24gd2VsbAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPj0gNTAwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDwgODAwKQotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gMAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjAuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDEKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24xLmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSAyCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMi5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gMwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjMuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDQKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb240LmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSA1Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNS5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gNgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjYuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDcKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb243LmhwcD4KLSMgIGVuZGlmCi0jICBpZiBORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyA+PSA4Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uOC5ocHA+Ci0jICBlbmRpZgotIyAgaWYgTkROQk9PU1RfRlVOQ1RJT05fTUFYX0FSR1MgPj0gOQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjkuaHBwPgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX0ZVTkNUSU9OX01BWF9BUkdTID49IDEwCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMTAuaHBwPgotIyAgZW5kaWYKLSNlbHNlCi0vLyBXaGF0IGlzIHRoZSAnMycgZm9yPwotIyAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywoMCxORE5CT09TVF9GVU5DVElPTl9NQVhfQVJHUyw8bmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL2Z1bmN0aW9uX2l0ZXJhdGUuaHBwPikpCi0jICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotIyAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL2Z1bmN0aW9uX2l0ZXJhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZnVuY3Rpb25faXRlcmF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NGYyODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZnVuY3Rpb25faXRlcmF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0jIGVycm9yIEJvb3N0LkZ1bmN0aW9uIC0gZG8gbm90IGluY2x1ZGUgdGhpcyBmaWxlIQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvZ2VuX21heWJlX2luY2x1ZGUucGwgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9nZW5fbWF5YmVfaW5jbHVkZS5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNkY2Y4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9nZW5fbWF5YmVfaW5jbHVkZS5wbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotIwotIyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0jCi0jIENvcHlyaWdodCAoQykgMjAwMS0yMDAzIERvdWdsYXMgR3JlZ29yIChncmVnb2RAY3MucnBpLmVkdSkKLSMKLSMgUGVybWlzc2lvbiB0byBjb3B5LCB1c2UsIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBpcyBncmFudGVkCi0jIHByb3ZpZGVkIHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMuCi0jIFBlcm1pc3Npb24gdG8gbW9kaWZ5IHRoZSBjb2RlIGFuZCB0byBkaXN0cmlidXRlIG1vZGlmaWVkIGNvZGUgaXMgZ3JhbnRlZAotIyBwcm92aWRlZCB0aGlzIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbiBhbGwgY29waWVzLCBhbmQgYSBub3RpY2UKLSMgdGhhdCB0aGUgY29kZSB3YXMgbW9kaWZpZWQgaXMgaW5jbHVkZWQgd2l0aCB0aGUgY29weXJpZ2h0IG5vdGljZS4KLSMKLSMgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LAotIyBhbmQgd2l0aCBubyBjbGFpbSBhcyB0byBpdHMgc3VpdGFiaWxpdHkgZm9yIGFueSBwdXJwb3NlLgotIwotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi11c2UgRW5nbGlzaDsKLQotJG1heF9hcmdzID0gJEFSR1ZbMF07Ci0KLW9wZW4gKE9VVCwgIj5tYXliZV9pbmNsdWRlLmhwcCIpIG9yIGRpZSgiQ2Fubm90IHdyaXRlIHRvIG1heWJlX2luY2x1ZGUuaHBwIik7Ci1mb3IoJG9uX2FyZyA9IDA7ICRvbl9hcmcgPD0gJG1heF9hcmdzOyArKyRvbl9hcmcpIHsKLSAgICBpZiAoJG9uX2FyZyA9PSAwKSB7Ci0JcHJpbnQgT1VUICIjaWYiOwotICAgIH0KLSAgICBlbHNlIHsKLQlwcmludCBPVVQgIiNlbGlmIjsKLSAgICB9Ci0gICAgcHJpbnQgT1VUICIgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gJG9uX2FyZ1xuIjsKLSAgICBwcmludCBPVVQgIiMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8kb25fYXJnXG4iOwotICAgIHByaW50IE9VVCAiIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fJG9uX2FyZ1xuIjsKLSAgICBwcmludCBPVVQgIiMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPlxuIjsKLSAgICBwcmludCBPVVQgIiMgIGVuZGlmXG4iOwotfQotcHJpbnQgT1VUICIjZWxzZVxuIjsKLXByaW50IE9VVCAiIyAgZXJyb3IgQ2Fubm90IGhhbmRsZSBCb29zdC5GdW5jdGlvbiBvYmplY3RzIHRoYXQgYWNjZXB0IG1vcmUgdGhhbiAkbWF4X2FyZ3MgYXJndW1lbnRzIVxuIjsKLXByaW50IE9VVCAiI2VuZGlmXG4iOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiOTk4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMy4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDAKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8wCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8wCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzIKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDMKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzUKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDYKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl82Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl82Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA3Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gOAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzgKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDkKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl85Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl85Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxMAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xMAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTEKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xMQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTEKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEyCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzEyCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxMwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzEzCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xMwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTQKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xNAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTQKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDE1Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzE1Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxNgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xNgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMTcKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8xNwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMTcKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDE4Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzE4Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAxOQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8xOQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjAKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yMAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjAKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDIxCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzIxCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyMgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzIyCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yMgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjMKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yMwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjMKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDI0Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzI0Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyNQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yNQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjYKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yNgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjYKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDI3Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzI3Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyOAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8yOAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMjkKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8yOQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMjkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDMwCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzMwCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzMQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzMxCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zMQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzIKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zMgotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzIKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDMzCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzMzCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzNAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zNAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzUKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zNQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzUKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDM2Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzM2Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAzNwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl8zNwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMzgKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl8zOAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fMzgKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDM5Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzM5Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0MAotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQwCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80MAotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDEKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80MQotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDEKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQyCi0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQyCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0MwotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQzCi0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80MwotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDQKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80NAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDQKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQ1Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQ1Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0NgotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80NgotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNDcKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl80NwotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNDcKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbGlmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDQ4Ci0jICBpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OXzQ4Ci0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3RlbXBsYXRlLmhwcD4KLSMgIGVuZGlmCi0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSA0OQotIyAgaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OXzQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl80OQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHA+Ci0jICBlbmRpZgotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gNTAKLSMgIGlmbmRlZiBORE5CT09TVF9GVU5DVElPTl81MAotIyAgICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fNTAKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwPgotIyAgZW5kaWYKLSNlbHNlCi0jICBlcnJvciBDYW5ub3QgaGFuZGxlIEJvb3N0LkZ1bmN0aW9uIG9iamVjdHMgdGhhdCBhY2NlcHQgbW9yZSB0aGFuIDUwIGFyZ3VtZW50cyEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvcHJvbG9ndWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvcHJvbG9ndWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWM2ZThlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZGV0YWlsL3Byb2xvZ3VlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNpZm5kZWYgTkROQk9PU1RfRlVOQ1RJT05fUFJPTE9HVUVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1BST0xPR1VFX0hQUAotIyAgaW5jbHVkZSA8Y2Fzc2VydD4KLSMgIGluY2x1ZGUgPGFsZ29yaXRobT4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvZnVuY3Rpb25hbC5ocHA+IC8vIHVuYXJ5X2Z1bmN0aW9uLCBiaW5hcnlfZnVuY3Rpb24KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fYmFzZS5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9tZW1fZm4uaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX1BST0xPR1VFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTE1ZDYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjRhNjA1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24xMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMGVlMzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbjEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAyLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgMTAKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAzYzJkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDIKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb24zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VjNjJkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uMy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDMKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb240LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb240LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNhMmJlNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDQKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb241LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb241LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1M2U1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDUKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb242LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb242LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI3NDZlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDYKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb243LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb243LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5MmVkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uNy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDcKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb244LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb244LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxN2U1MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uOC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDgKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb245LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb245LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjZDIxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uOS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBCb29zdC5GdW5jdGlvbiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMi0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTIDkKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9kZXRhaWwvbWF5YmVfaW5jbHVkZS5ocHA+Ci0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTkyZWIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fYmFzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MTAgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotCi0vLyAgQ29weXJpZ2h0IERvdWdsYXMgR3JlZ29yIDIwMDEtMjAwNgotLy8gIENvcHlyaWdodCBFbWlsIERvdGNoZXZza2kgMjAwNwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0jaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0JBU0VfSEVBREVSCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0JBU0VfSEVBREVSCi0KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxuZXc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29tcG9zaXRlX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotIyAgaW5jbHVkZSAibmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwIgotI2Vsc2UKLSMgIGluY2x1ZGUgIm5kbmJvb3N0L21wbC9ib29sLmhwcCIKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX2VxdWFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSMgICBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3OTMgKSAvLyBjb21wbGFpbnQgYWJvdXQgbmF0aXZlIGNvZGUgZ2VuZXJhdGlvbgotIyAgIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDEyNyApIC8vICJjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50IgotI2VuZGlmICAgICAgIAotCi0vLyBEZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU1REX05TIHRvIHRoZSBuYW1lc3BhY2UgdGhhdCBjb250YWlucyB0eXBlX2luZm8uCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REX1RZUEVJTkZPCi0vLyBFbWJlZGRlZCBWQysrIGRvZXMgbm90IGhhdmUgdHlwZV9pbmZvIGluIG5hbWVzcGFjZSBzdGQKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9TVERfTlMKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fU1REX05TIHN0ZAotI2VuZGlmCi0KLS8vIEJvcnJvd2VkIGZyb20gQm9vc3QuUHl0aG9uIGxpYnJhcnk6IGRldGVybWluZXMgdGhlIGNhc2VzIHdoZXJlIHdlCi0vLyBuZWVkIHRvIHVzZSBzdGQ6OnR5cGVfaW5mbzo6bmFtZSB0byBjb21wYXJlIGluc3RlYWQgb2Ygb3BlcmF0b3I9PS4KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9OT19UWVBFSUQgKQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTVBBUkVfVFlQRV9JRChYLFkpICgoWCk9PShZKSkKLSNlbGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSAzKSBcCi0gfHwgZGVmaW5lZChfQUlYKSBcCi0gfHwgKCAgIGRlZmluZWQoX19zZ2kpICYmIGRlZmluZWQoX19ob3N0X21pcHMpKQotIyAgaW5jbHVkZSA8Y3N0cmluZz4KLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoWCxZKSBcCi0gICAgIChzdGQ6OnN0cmNtcCgoWCkubmFtZSgpLChZKS5uYW1lKCkpID09IDApCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoWCxZKSAoKFgpPT0oWSkpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8PSAxMzAwIHx8IGRlZmluZWQoX19JQ0wpICYmIF9fSUNMIDw9IDYwMCB8fCBkZWZpbmVkKF9fTVdFUktTX18pICYmIF9fTVdFUktTX18gPCAweDI0MDYgJiYgIWRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9UQVJHRVRfRklYKHgpIHgKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVEFSR0VUX0ZJWCh4KQotI2VuZGlmIC8vIG5vdCBNU1ZDCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1QTApCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLFR5cGUpICAgICAgICAgICAgICBcCi0gICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0OjplbmFibGVfaWZfYzwoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZT46OnR5cGUKLSNlbHNlCi0vLyBCQ0MgZG9lc24ndCByZWNvZ25pemUgdGhpcyBkZXBlbmRzIG9uIGEgdGVtcGxhdGUgYXJndW1lbnQgYW5kIGNvbXBsYWlucwotLy8gYWJvdXQgdGhlIHVzZSBvZiAndHlwZW5hbWUnCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLFR5cGUpICAgICBcCi0gICAgICA6Om5kbmJvb3N0OjplbmFibGVfaWZfYzwoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAoOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwgXAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlPjo6dHlwZQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gIG5hbWVzcGFjZSBkZXRhaWwgewotICAgIG5hbWVzcGFjZSBmdW5jdGlvbiB7Ci0gICAgICBjbGFzcyBYOwotCi0gICAgICAvKioKLSAgICAgICAqIEEgYnVmZmVyIHVzZWQgdG8gc3RvcmUgc21hbGwgZnVuY3Rpb24gb2JqZWN0cyBpbgotICAgICAgICogbmRuYm9vc3Q6OmZ1bmN0aW9uLiBJdCBpcyBhIHVuaW9uIGNvbnRhaW5pbmcgZnVuY3Rpb24gcG9pbnRlcnMsCi0gICAgICAgKiBvYmplY3QgcG9pbnRlcnMsIGFuZCBhIHN0cnVjdHVyZSB0aGF0IHJlc2VtYmxlcyBhIGJvdW5kCi0gICAgICAgKiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlci4KLSAgICAgICAqLwotICAgICAgdW5pb24gZnVuY3Rpb25fYnVmZmVyCi0gICAgICB7Ci0gICAgICAgIC8vIEZvciBwb2ludGVycyB0byBmdW5jdGlvbiBvYmplY3RzCi0gICAgICAgIG11dGFibGUgdm9pZCogb2JqX3B0cjsKLQotICAgICAgICAvLyBGb3IgcG9pbnRlcnMgdG8gc3RkOjp0eXBlX2luZm8gb2JqZWN0cwotICAgICAgICBzdHJ1Y3QgdHlwZV90IHsKLSAgICAgICAgICAvLyAoZ2V0X2Z1bmN0b3JfdHlwZV90YWcsIGNoZWNrX2Z1bmN0b3JfdHlwZV90YWcpLgotICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8qIHR5cGU7Ci0KLSAgICAgICAgICAvLyBXaGV0aGVyIHRoZSB0eXBlIGlzIGNvbnN0LXF1YWxpZmllZC4KLSAgICAgICAgICBib29sIGNvbnN0X3F1YWxpZmllZDsKLSAgICAgICAgICAvLyBXaGV0aGVyIHRoZSB0eXBlIGlzIHZvbGF0aWxlLXF1YWxpZmllZC4KLSAgICAgICAgICBib29sIHZvbGF0aWxlX3F1YWxpZmllZDsKLSAgICAgICAgfSB0eXBlOwotCi0gICAgICAgIC8vIEZvciBmdW5jdGlvbiBwb2ludGVycyBvZiBhbGwga2luZHMKLSAgICAgICAgbXV0YWJsZSB2b2lkICgqZnVuY19wdHIpKCk7Ci0KLSAgICAgICAgLy8gRm9yIGJvdW5kIG1lbWJlciBwb2ludGVycwotICAgICAgICBzdHJ1Y3QgYm91bmRfbWVtZnVuY19wdHJfdCB7Ci0gICAgICAgICAgdm9pZCAoWDo6Km1lbWZ1bmNfcHRyKShpbnQpOwotICAgICAgICAgIHZvaWQqIG9ial9wdHI7Ci0gICAgICAgIH0gYm91bmRfbWVtZnVuY19wdHI7Ci0KLSAgICAgICAgLy8gRm9yIHJlZmVyZW5jZXMgdG8gZnVuY3Rpb24gb2JqZWN0cy4gV2UgZXhwbGljaXRseSBrZWVwCi0gICAgICAgIC8vIHRyYWNrIG9mIHRoZSBjdi1xdWFsaWZpZXJzIG9uIHRoZSBvYmplY3QgcmVmZXJlbmNlZC4KLSAgICAgICAgc3RydWN0IG9ial9yZWZfdCB7Ci0gICAgICAgICAgbXV0YWJsZSB2b2lkKiBvYmpfcHRyOwotICAgICAgICAgIGJvb2wgaXNfY29uc3RfcXVhbGlmaWVkOwotICAgICAgICAgIGJvb2wgaXNfdm9sYXRpbGVfcXVhbGlmaWVkOwotICAgICAgICB9IG9ial9yZWY7Ci0KLSAgICAgICAgLy8gVG8gcmVsYXggYWxpYXNpbmcgY29uc3RyYWludHMKLSAgICAgICAgbXV0YWJsZSBjaGFyIGRhdGE7Ci0gICAgICB9OwotCi0gICAgICAvKioKLSAgICAgICAqIFRoZSB1bnVzYWJsZSBjbGFzcyBpcyBhIHBsYWNlaG9sZGVyIGZvciB1bnVzZWQgZnVuY3Rpb24gYXJndW1lbnRzCi0gICAgICAgKiBJdCBpcyBhbHNvIGNvbXBsZXRlbHkgdW51c2FibGUgZXhjZXB0IHRoYXQgaXQgY29uc3RydWN0YWJsZSBmcm9tCi0gICAgICAgKiBhbnl0aGluZy4gVGhpcyBoZWxwcyBjb21waWxlcnMgd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHRvCi0gICAgICAgKiBoYW5kbGUgQm9vc3QuRnVuY3Rpb24gb2JqZWN0cyByZXR1cm5pbmcgdm9pZC4KLSAgICAgICAqLwotICAgICAgc3RydWN0IHVudXNhYmxlCi0gICAgICB7Ci0gICAgICAgIHVudXNhYmxlKCkge30KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdW51c2FibGUoY29uc3QgVCYpIHt9Ci0gICAgICB9OwotCi0gICAgICAvKiBEZXRlcm1pbmUgdGhlIHJldHVybiB0eXBlLiBUaGlzIHN1cHBvcnRzIGNvbXBpbGVycyB0aGF0IGRvIG5vdCBzdXBwb3J0Ci0gICAgICAgKiB2b2lkIHJldHVybnMgb3IgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBieSBzaWxlbnRseSBjaGFuZ2luZyB0aGUgcmV0dXJuCi0gICAgICAgKiB0eXBlIHRvICJ1bnVzYWJsZSIuCi0gICAgICAgKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBmdW5jdGlvbl9yZXR1cm5fdHlwZSB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rpb25fcmV0dXJuX3R5cGU8dm9pZD4KLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnVzYWJsZSB0eXBlOwotICAgICAgfTsKLQotICAgICAgLy8gVGhlIG9wZXJhdGlvbiB0eXBlIHRvIHBlcmZvcm0gb24gdGhlIGdpdmVuIGZ1bmN0b3IvZnVuY3Rpb24gcG9pbnRlcgotICAgICAgZW51bSBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgewotICAgICAgICBjbG9uZV9mdW5jdG9yX3RhZywKLSAgICAgICAgbW92ZV9mdW5jdG9yX3RhZywKLSAgICAgICAgZGVzdHJveV9mdW5jdG9yX3RhZywKLSAgICAgICAgY2hlY2tfZnVuY3Rvcl90eXBlX3RhZywKLSAgICAgICAgZ2V0X2Z1bmN0b3JfdHlwZV90YWcKLSAgICAgIH07Ci0KLSAgICAgIC8vIFRhZ3MgdXNlZCB0byBkZWNpZGUgYmV0d2VlbiBkaWZmZXJlbnQgdHlwZXMgb2YgZnVuY3Rpb25zCi0gICAgICBzdHJ1Y3QgZnVuY3Rpb25fcHRyX3RhZyB7fTsKLSAgICAgIHN0cnVjdCBmdW5jdGlvbl9vYmpfdGFnIHt9OwotICAgICAgc3RydWN0IG1lbWJlcl9wdHJfdGFnIHt9OwotICAgICAgc3RydWN0IGZ1bmN0aW9uX29ial9yZWZfdGFnIHt9OwotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgotICAgICAgY2xhc3MgZ2V0X2Z1bmN0aW9uX3RhZwotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfcG9pbnRlcjxGPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9wdHJfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9vYmpfdGFnPjo6dHlwZSBwdHJfb3Jfb2JqX3RhZzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfbWVtYmVyX3BvaW50ZXI8Rj46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyX3B0cl90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cl9vcl9vYmpfdGFnPjo6dHlwZSBwdHJfb3Jfb2JqX29yX21lbV90YWc7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8KGlzX3JlZmVyZW5jZV93cmFwcGVyPEY+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX29ial9yZWZfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJfb3Jfb2JqX29yX21lbV90YWc+Ojp0eXBlIG9yX3JlZl90YWc7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBvcl9yZWZfdGFnIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAvLyBUaGUgdHJpdmlhbCBtYW5hZ2VyIGRvZXMgbm90aGluZyBidXQgcmV0dXJuIHRoZSBzYW1lIHBvaW50ZXIgKGlmIHdlCi0gICAgICAvLyBhcmUgY2xvbmluZykgb3IgcmV0dXJuIHRoZSBudWxsIHBvaW50ZXIgKGlmIHdlIGFyZSBkZWxldGluZykuCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgotICAgICAgc3RydWN0IHJlZmVyZW5jZV9tYW5hZ2VyCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2UoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3ApCi0gICAgICAgIHsKLSAgICAgICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgICAgICAgY2FzZSBjbG9uZV9mdW5jdG9yX3RhZzogCi0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9yZWYgPSBpbl9idWZmZXIub2JqX3JlZjsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGNhc2UgbW92ZV9mdW5jdG9yX3RhZzoKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3JlZiA9IGluX2J1ZmZlci5vYmpfcmVmOwotICAgICAgICAgICAgaW5fYnVmZmVyLm9ial9yZWYub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICBjYXNlIGRlc3Ryb3lfZnVuY3Rvcl90YWc6Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9yZWYub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICBjYXNlIGNoZWNrX2Z1bmN0b3JfdHlwZV90YWc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8mIGNoZWNrX3R5cGUgCi0gICAgICAgICAgICAgICAgPSAqb3V0X2J1ZmZlci50eXBlLnR5cGU7Ci0KLSAgICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBoYXZlIHRoZSBzYW1lIHR5cGUuIFdlIGNhbiBhZGQKLSAgICAgICAgICAgICAgLy8gY3YtcXVhbGlmaWVycywgYnV0IHdlIGNhbid0IHRha2UgdGhlbSBhd2F5LgotICAgICAgICAgICAgICBpZiAoTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lEKGNoZWNrX3R5cGUsIE5ETkJPT1NUX1NQX1RZUEVJRChGKSkKLSAgICAgICAgICAgICAgICAgICYmICghaW5fYnVmZmVyLm9ial9yZWYuaXNfY29uc3RfcXVhbGlmaWVkIAotICAgICAgICAgICAgICAgICAgICAgIHx8IG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQpCi0gICAgICAgICAgICAgICAgICAmJiAoIWluX2J1ZmZlci5vYmpfcmVmLmlzX3ZvbGF0aWxlX3F1YWxpZmllZAotICAgICAgICAgICAgICAgICAgICAgIHx8IG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQpKQotICAgICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IGluX2J1ZmZlci5vYmpfcmVmLm9ial9wdHI7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgY2FzZSBnZXRfZnVuY3Rvcl90eXBlX3RhZzoKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBpbl9idWZmZXIub2JqX3JlZi5pc19jb25zdF9xdWFsaWZpZWQ7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gaW5fYnVmZmVyLm9ial9yZWYuaXNfdm9sYXRpbGVfcXVhbGlmaWVkOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgLyoqCi0gICAgICAgKiBEZXRlcm1pbmUgaWYgbmRuYm9vc3Q6OmZ1bmN0aW9uIGNhbiB1c2UgdGhlIHNtYWxsLW9iamVjdAotICAgICAgICogb3B0aW1pemF0aW9uIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdCB0eXBlIEYuCi0gICAgICAgKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb24KLSAgICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UCi0gICAgICAgICAgKGJvb2wsIAotICAgICAgICAgICB2YWx1ZSA9ICgoc2l6ZW9mKEYpIDw9IHNpemVvZihmdW5jdGlvbl9idWZmZXIpICYmCi0gICAgICAgICAgICAgICAgICAgICAoYWxpZ25tZW50X29mPGZ1bmN0aW9uX2J1ZmZlcj46OnZhbHVlIAotICAgICAgICAgICAgICAgICAgICAgICUgYWxpZ25tZW50X29mPEY+Ojp2YWx1ZSA9PSAwKSkpKTsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGLHR5cGVuYW1lIEE+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rvcl93cmFwcGVyOiBwdWJsaWMgRiwgcHVibGljIEEKLSAgICAgIHsKLSAgICAgICAgZnVuY3Rvcl93cmFwcGVyKCBGIGYsIEEgYSApOgotICAgICAgICAgIEYoZiksCi0gICAgICAgICAgQShhKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0b3Jfd3JhcHBlcihjb25zdCBmdW5jdG9yX3dyYXBwZXImIGYpIDoKLSAgICAgICAgICBGKHN0YXRpY19jYXN0PGNvbnN0IEYmPihmKSksCi0gICAgICAgICAgQShzdGF0aWNfY2FzdDxjb25zdCBBJj4oZikpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgLyoqCi0gICAgICAgKiBUaGUgZnVuY3Rvcl9tYW5hZ2VyIGNsYXNzIGNvbnRhaW5zIGEgc3RhdGljIGZ1bmN0aW9uICJtYW5hZ2UiIHdoaWNoCi0gICAgICAgKiBjYW4gY2xvbmUgb3IgZGVzdHJveSB0aGUgZ2l2ZW4gZnVuY3Rpb24vZnVuY3Rpb24gb2JqZWN0IHBvaW50ZXIuCi0gICAgICAgKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICBzdHJ1Y3QgZnVuY3Rvcl9tYW5hZ2VyX2NvbW1vbgotICAgICAgewotICAgICAgICB0eXBlZGVmIEZ1bmN0b3IgZnVuY3Rvcl90eXBlOwotCi0gICAgICAgIC8vIEZ1bmN0aW9uIHBvaW50ZXJzCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VfcHRyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChvcCA9PSBjbG9uZV9mdW5jdG9yX3RhZykKLSAgICAgICAgICAgIG91dF9idWZmZXIuZnVuY19wdHIgPSBpbl9idWZmZXIuZnVuY19wdHI7Ci0gICAgICAgICAgZWxzZSBpZiAob3AgPT0gbW92ZV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgb3V0X2J1ZmZlci5mdW5jX3B0ciA9IGluX2J1ZmZlci5mdW5jX3B0cjsKLSAgICAgICAgICAgIGluX2J1ZmZlci5mdW5jX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBkZXN0cm95X2Z1bmN0b3JfdGFnKQotICAgICAgICAgICAgb3V0X2J1ZmZlci5mdW5jX3B0ciA9IDA7Ci0gICAgICAgICAgZWxzZSBpZiAob3AgPT0gY2hlY2tfZnVuY3Rvcl90eXBlX3RhZykgewotICAgICAgICAgICAgY29uc3QgZGV0YWlsOjpzcF90eXBlaW5mbyYgY2hlY2tfdHlwZSAKLSAgICAgICAgICAgICAgPSAqb3V0X2J1ZmZlci50eXBlLnR5cGU7Ci0gICAgICAgICAgICBpZiAoTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lEKGNoZWNrX3R5cGUsIE5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKSkpCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9ICZpbl9idWZmZXIuZnVuY19wdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIC8qIG9wID09IGdldF9mdW5jdG9yX3R5cGVfdGFnICovIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGdW5jdGlvbiBvYmplY3RzIHRoYXQgZml0IGluIHRoZSBzbWFsbC1vYmplY3QgYnVmZmVyLgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlX3NtYWxsKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChvcCA9PSBjbG9uZV9mdW5jdG9yX3RhZyB8fCBvcCA9PSBtb3ZlX2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBmdW5jdG9yX3R5cGUqIGluX2Z1bmN0b3IgPSAKLSAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmdW5jdG9yX3R5cGUqPigmaW5fYnVmZmVyLmRhdGEpOwotICAgICAgICAgICAgbmV3IChyZWludGVycHJldF9jYXN0PHZvaWQqPigmb3V0X2J1ZmZlci5kYXRhKSkgZnVuY3Rvcl90eXBlKCppbl9mdW5jdG9yKTsKLQotICAgICAgICAgICAgaWYgKG9wID09IG1vdmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBmID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdG9yX3R5cGUqPigmaW5fYnVmZmVyLmRhdGEpOwotICAgICAgICAgICAgICAodm9pZClmOyAvLyBzdXBwcmVzcyB3YXJuaW5nIGFib3V0IHRoZSB2YWx1ZSBvZiBmIG5vdCBiZWluZyB1c2VkIChNU1ZDKQotICAgICAgICAgICAgICBmLT5+RnVuY3RvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gZGVzdHJveV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgLy8gU29tZSBjb21waWxlcnMgKEJvcmxhbmQsIHZjNiwgLi4uKSBhcmUgdW5oYXBweSB3aXRoIH5mdW5jdG9yX3R5cGUuCi0gICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBmID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdG9yX3R5cGUqPigmb3V0X2J1ZmZlci5kYXRhKTsKLSAgICAgICAgICAgICAodm9pZClmOyAvLyBzdXBwcmVzcyB3YXJuaW5nIGFib3V0IHRoZSB2YWx1ZSBvZiBmIG5vdCBiZWluZyB1c2VkIChNU1ZDKQotICAgICAgICAgICAgIGYtPn5GdW5jdG9yKCk7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBjaGVja19mdW5jdG9yX3R5cGVfdGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBkZXRhaWw6OnNwX3R5cGVpbmZvJiBjaGVja190eXBlIAotICAgICAgICAgICAgICA9ICpvdXRfYnVmZmVyLnR5cGUudHlwZTsKLSAgICAgICAgICAgIGlmIChORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoY2hlY2tfdHlwZSwgTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpKSkKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gJmluX2J1ZmZlci5kYXRhOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSAvKiBvcCA9PSBnZXRfZnVuY3Rvcl90eXBlX3RhZyAqLyB7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoRnVuY3Rvcik7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUuY29uc3RfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gZmFsc2U7ICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgc3RydWN0IGZ1bmN0b3JfbWFuYWdlcgotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBGdW5jdG9yIGZ1bmN0b3JfdHlwZTsKLQotICAgICAgICAvLyBGdW5jdGlvbiBwb2ludGVycwotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIGZ1bmN0aW9uX3B0cl90YWcpCi0gICAgICAgIHsKLSAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfY29tbW9uPEZ1bmN0b3I+OjptYW5hZ2VfcHRyKGluX2J1ZmZlcixvdXRfYnVmZmVyLG9wKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZ1bmN0aW9uIG9iamVjdHMgdGhhdCBmaXQgaW4gdGhlIHNtYWxsLW9iamVjdCBidWZmZXIuCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgbXBsOjp0cnVlXykKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9jb21tb248RnVuY3Rvcj46Om1hbmFnZV9zbWFsbChpbl9idWZmZXIsb3V0X2J1ZmZlcixvcCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEZ1bmN0aW9uIG9iamVjdHMgdGhhdCByZXF1aXJlIGhlYXAgYWxsb2NhdGlvbgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIG1wbDo6ZmFsc2VfKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKG9wID09IGNsb25lX2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICAvLyBDbG9uZSB0aGUgZnVuY3RvcgotICAgICAgICAgICAgLy8gR0NDIDIuOTUuMyBnZXRzIHRoZSBDViBxdWFsaWZpZXJzIHdyb25nIGhlcmUsIHNvIHdlCi0gICAgICAgICAgICAvLyBjYW4ndCBkbyB0aGUgc3RhdGljX2Nhc3QgdGhhdCB3ZSBzaG91bGQgZG8uCi0gICAgICAgICAgICAvLyBqZXdpbGxjbzogQ2hhbmdpbmcgdGhpcyB0byBzdGF0aWNfY2FzdCBiZWNhdXNlIEdDQyAyLjk1LjMgaXMKLSAgICAgICAgICAgIC8vIG9ic29sZXRlLgotICAgICAgICAgICAgY29uc3QgZnVuY3Rvcl90eXBlKiBmID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgZnVuY3Rvcl90eXBlKj4oaW5fYnVmZmVyLm9ial9wdHIpOwotICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBuZXdfZiA9IG5ldyBmdW5jdG9yX3R5cGUoKmYpOwotICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gbmV3X2Y7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBtb3ZlX2Z1bmN0b3JfdGFnKSB7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSBpbl9idWZmZXIub2JqX3B0cjsKLSAgICAgICAgICAgIGluX2J1ZmZlci5vYmpfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IGRlc3Ryb3lfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIC8qIENhc3QgZnJvbSB0aGUgdm9pZCBwb2ludGVyIHRvIHRoZSBmdW5jdG9yIHBvaW50ZXIgdHlwZSAqLwotICAgICAgICAgICAgZnVuY3Rvcl90eXBlKiBmID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZnVuY3Rvcl90eXBlKj4ob3V0X2J1ZmZlci5vYmpfcHRyKTsKLSAgICAgICAgICAgIGRlbGV0ZSBmOwotICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gMDsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IGNoZWNrX2Z1bmN0b3JfdHlwZV90YWcpIHsKLSAgICAgICAgICAgIGNvbnN0IGRldGFpbDo6c3BfdHlwZWluZm8mIGNoZWNrX3R5cGUKLSAgICAgICAgICAgICAgPSAqb3V0X2J1ZmZlci50eXBlLnR5cGU7Ci0gICAgICAgICAgICBpZiAoTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lEKGNoZWNrX3R5cGUsIE5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKSkpCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IGluX2J1ZmZlci5vYmpfcHRyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSAvKiBvcCA9PSBnZXRfZnVuY3Rvcl90eXBlX3RhZyAqLyB7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoRnVuY3Rvcik7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUuY29uc3RfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRm9yIGZ1bmN0aW9uIG9iamVjdHMsIHdlIGRldGVybWluZSB3aGV0aGVyIHRoZSBmdW5jdGlvbgotICAgICAgICAvLyBvYmplY3QgY2FuIHVzZSB0aGUgc21hbGwtb2JqZWN0IG9wdGltaXphdGlvbiBidWZmZXIgb3IKLSAgICAgICAgLy8gd2hldGhlciB3ZSBuZWVkIHRvIGFsbG9jYXRlIGl0IG9uIHRoZSBoZWFwLgotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlcihjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3AsIGZ1bmN0aW9uX29ial90YWcpCi0gICAgICAgIHsKLSAgICAgICAgICBtYW5hZ2VyKGluX2J1ZmZlciwgb3V0X2J1ZmZlciwgb3AsCi0gICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPChmdW5jdGlvbl9hbGxvd3Nfc21hbGxfb2JqZWN0X29wdGltaXphdGlvbjxmdW5jdG9yX3R5cGU+Ojp2YWx1ZSk+KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRm9yIG1lbWJlciBwb2ludGVycywgd2UgdXNlIHRoZSBzbWFsbC1vYmplY3Qgb3B0aW1pemF0aW9uIGJ1ZmZlci4KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBtZW1iZXJfcHRyX3RhZykKLSAgICAgICAgewotICAgICAgICAgIG1hbmFnZXIoaW5fYnVmZmVyLCBvdXRfYnVmZmVyLCBvcCwgbXBsOjp0cnVlXygpKTsKLSAgICAgICAgfQotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgIC8qIERpc3BhdGNoIHRvIGFuIGFwcHJvcHJpYXRlIG1hbmFnZXIgYmFzZWQgb24gd2hldGhlciB3ZSBoYXZlIGEKLSAgICAgICAgICAgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0aW9uIG9iamVjdCBwb2ludGVyLiAqLwotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQKLSAgICAgICAgbWFuYWdlKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wKQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfZnVuY3Rpb25fdGFnPGZ1bmN0b3JfdHlwZT46OnR5cGUgdGFnX3R5cGU7Ci0gICAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICAgIGNhc2UgZ2V0X2Z1bmN0b3JfdHlwZV90YWc6Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudHlwZSA9ICZORE5CT09TVF9TUF9UWVBFSUQoZnVuY3Rvcl90eXBlKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBtYW5hZ2VyKGluX2J1ZmZlciwgb3V0X2J1ZmZlciwgb3AsIHRhZ190eXBlKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgc3RydWN0IGZ1bmN0b3JfbWFuYWdlcl9hCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEZ1bmN0b3IgZnVuY3Rvcl90eXBlOwotCi0gICAgICAgIC8vIEZ1bmN0aW9uIHBvaW50ZXJzCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgZnVuY3Rpb25fcHRyX3RhZykKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9jb21tb248RnVuY3Rvcj46Om1hbmFnZV9wdHIoaW5fYnVmZmVyLG91dF9idWZmZXIsb3ApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cyB0aGF0IGZpdCBpbiB0aGUgc21hbGwtb2JqZWN0IGJ1ZmZlci4KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZXIoY29uc3QgZnVuY3Rpb25fYnVmZmVyJiBpbl9idWZmZXIsIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX29wZXJhdGlvbl90eXBlIG9wLCBtcGw6OnRydWVfKQotICAgICAgICB7Ci0gICAgICAgICAgZnVuY3Rvcl9tYW5hZ2VyX2NvbW1vbjxGdW5jdG9yPjo6bWFuYWdlX3NtYWxsKGluX2J1ZmZlcixvdXRfYnVmZmVyLG9wKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cyB0aGF0IHJlcXVpcmUgaGVhcCBhbGxvY2F0aW9uCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgbXBsOjpmYWxzZV8pCi0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3Jfd3JhcHBlcjxGdW5jdG9yLEFsbG9jYXRvcj4gZnVuY3Rvcl93cmFwcGVyX3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBbGxvY2F0b3I6OnRlbXBsYXRlIHJlYmluZDxmdW5jdG9yX3dyYXBwZXJfdHlwZT46Om90aGVyCi0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlOwotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgd3JhcHBlcl9hbGxvY2F0b3JfdHlwZTo6cG9pbnRlciB3cmFwcGVyX2FsbG9jYXRvcl9wb2ludGVyX3R5cGU7Ci0KLSAgICAgICAgICBpZiAob3AgPT0gY2xvbmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIC8vIENsb25lIHRoZSBmdW5jdG9yCi0gICAgICAgICAgICAvLyBHQ0MgMi45NS4zIGdldHMgdGhlIENWIHF1YWxpZmllcnMgd3JvbmcgaGVyZSwgc28gd2UKLSAgICAgICAgICAgIC8vIGNhbid0IGRvIHRoZSBzdGF0aWNfY2FzdCB0aGF0IHdlIHNob3VsZCBkby4KLSAgICAgICAgICAgIGNvbnN0IGZ1bmN0b3Jfd3JhcHBlcl90eXBlKiBmID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgZnVuY3Rvcl93cmFwcGVyX3R5cGUqPihpbl9idWZmZXIub2JqX3B0cik7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlIHdyYXBwZXJfYWxsb2NhdG9yKHN0YXRpY19jYXN0PEFsbG9jYXRvciBjb25zdCAmPigqZikpOwotICAgICAgICAgICAgd3JhcHBlcl9hbGxvY2F0b3JfcG9pbnRlcl90eXBlIGNvcHkgPSB3cmFwcGVyX2FsbG9jYXRvci5hbGxvY2F0ZSgxKTsKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yLmNvbnN0cnVjdChjb3B5LCAqZik7Ci0KLSAgICAgICAgICAgIC8vIEdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBwb2ludGVyIHR5cGUKLSAgICAgICAgICAgIGZ1bmN0b3Jfd3JhcHBlcl90eXBlKiBuZXdfZiA9IHN0YXRpY19jYXN0PGZ1bmN0b3Jfd3JhcHBlcl90eXBlKj4oY29weSk7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLm9ial9wdHIgPSBuZXdfZjsKLSAgICAgICAgICB9IGVsc2UgaWYgKG9wID09IG1vdmVfZnVuY3Rvcl90YWcpIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IGluX2J1ZmZlci5vYmpfcHRyOwotICAgICAgICAgICAgaW5fYnVmZmVyLm9ial9wdHIgPSAwOwotICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT0gZGVzdHJveV9mdW5jdG9yX3RhZykgewotICAgICAgICAgICAgLyogQ2FzdCBmcm9tIHRoZSB2b2lkIHBvaW50ZXIgdG8gdGhlIGZ1bmN0b3Jfd3JhcHBlcl90eXBlICovCi0gICAgICAgICAgICBmdW5jdG9yX3dyYXBwZXJfdHlwZSogdmljdGltID0KLSAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZnVuY3Rvcl93cmFwcGVyX3R5cGUqPihpbl9idWZmZXIub2JqX3B0cik7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlIHdyYXBwZXJfYWxsb2NhdG9yKHN0YXRpY19jYXN0PEFsbG9jYXRvciBjb25zdCAmPigqdmljdGltKSk7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvci5kZXN0cm95KHZpY3RpbSk7Ci0gICAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvci5kZWFsbG9jYXRlKHZpY3RpbSwxKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIGlmIChvcCA9PSBjaGVja19mdW5jdG9yX3R5cGVfdGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBkZXRhaWw6OnNwX3R5cGVpbmZvJiBjaGVja190eXBlIAotICAgICAgICAgICAgICA9ICpvdXRfYnVmZmVyLnR5cGUudHlwZTsKLSAgICAgICAgICAgIGlmIChORE5CT09TVF9GVU5DVElPTl9DT01QQVJFX1RZUEVfSUQoY2hlY2tfdHlwZSwgTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpKSkKLSAgICAgICAgICAgICAgb3V0X2J1ZmZlci5vYmpfcHRyID0gaW5fYnVmZmVyLm9ial9wdHI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIG91dF9idWZmZXIub2JqX3B0ciA9IDA7Ci0gICAgICAgICAgfSBlbHNlIC8qIG9wID09IGdldF9mdW5jdG9yX3R5cGVfdGFnICovIHsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG91dF9idWZmZXIudHlwZS52b2xhdGlsZV9xdWFsaWZpZWQgPSBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3IgZnVuY3Rpb24gb2JqZWN0cywgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZ1bmN0aW9uCi0gICAgICAgIC8vIG9iamVjdCBjYW4gdXNlIHRoZSBzbWFsbC1vYmplY3Qgb3B0aW1pemF0aW9uIGJ1ZmZlciBvcgotICAgICAgICAvLyB3aGV0aGVyIHdlIG5lZWQgdG8gYWxsb2NhdGUgaXQgb24gdGhlIGhlYXAuCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZAotICAgICAgICBtYW5hZ2VyKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCBmdW5jdGlvbl9idWZmZXImIG91dF9idWZmZXIsIAotICAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCwgZnVuY3Rpb25fb2JqX3RhZykKLSAgICAgICAgewotICAgICAgICAgIG1hbmFnZXIoaW5fYnVmZmVyLCBvdXRfYnVmZmVyLCBvcCwKLSAgICAgICAgICAgICAgICAgIG1wbDo6Ym9vbF88KGZ1bmN0aW9uX2FsbG93c19zbWFsbF9vYmplY3Rfb3B0aW1pemF0aW9uPGZ1bmN0b3JfdHlwZT46OnZhbHVlKT4oKSk7Ci0gICAgICAgIH0KLQotICAgICAgcHVibGljOgotICAgICAgICAvKiBEaXNwYXRjaCB0byBhbiBhcHByb3ByaWF0ZSBtYW5hZ2VyIGJhc2VkIG9uIHdoZXRoZXIgd2UgaGF2ZSBhCi0gICAgICAgICAgIGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdGlvbiBvYmplY3QgcG9pbnRlci4gKi8KLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkCi0gICAgICAgIG1hbmFnZShjb25zdCBmdW5jdGlvbl9idWZmZXImIGluX2J1ZmZlciwgZnVuY3Rpb25fYnVmZmVyJiBvdXRfYnVmZmVyLCAKLSAgICAgICAgICAgICAgIGZ1bmN0b3JfbWFuYWdlcl9vcGVyYXRpb25fdHlwZSBvcCkKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2Z1bmN0aW9uX3RhZzxmdW5jdG9yX3R5cGU+Ojp0eXBlIHRhZ190eXBlOwotICAgICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgICBjYXNlIGdldF9mdW5jdG9yX3R5cGVfdGFnOgotICAgICAgICAgICAgb3V0X2J1ZmZlci50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKGZ1bmN0b3JfdHlwZSk7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUuY29uc3RfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICBvdXRfYnVmZmVyLnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbWFuYWdlcihpbl9idWZmZXIsIG91dF9idWZmZXIsIG9wLCB0YWdfdHlwZSgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIC8vIEEgdHlwZSB0aGF0IGlzIG9ubHkgdXNlZCBmb3IgY29tcGFyaXNvbnMgYWdhaW5zdCB6ZXJvCi0gICAgICBzdHJ1Y3QgdXNlbGVzc19jbGVhcl90eXBlIHt9OwotCi0jaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgICAvLyBUaGVzZSByb3V0aW5lcyBwZXJmb3JtIGNvbXBhcmlzb25zIGJldHdlZW4gYSBCb29zdC5GdW5jdGlvbgotICAgICAgLy8gb2JqZWN0IGFuZCBhbiBhcmJpdHJhcnkgZnVuY3Rpb24gb2JqZWN0ICh3aGVuIHRoZSBsYXN0Ci0gICAgICAvLyBwYXJhbWV0ZXIgaXMgbXBsOjpib29sXzxmYWxzZT4pIG9yIGFnYWluc3QgemVybyAod2hlbiB0aGUKLSAgICAgIC8vIGxhc3QgcGFyYW1ldGVyIGlzIG1wbDo6Ym9vbF88dHJ1ZT4pLiBUaGV5IGFyZSBvbmx5IG5lY2Vzc2FyeQotICAgICAgLy8gZm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgU0ZJTkFFLgotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgIGJvb2wKLSAgICAgICAgY29tcGFyZV9lcXVhbChjb25zdCBGdW5jdGlvbiYgZiwgY29uc3QgRnVuY3RvciYsIGludCwgbXBsOjpib29sXzx0cnVlPikKLSAgICAgICAgeyByZXR1cm4gZi5lbXB0eSgpOyB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICBib29sCi0gICAgICAgIGNvbXBhcmVfbm90X2VxdWFsKGNvbnN0IEZ1bmN0aW9uJiBmLCBjb25zdCBGdW5jdG9yJiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPHRydWU+KQotICAgICAgICB7IHJldHVybiAhZi5lbXB0eSgpOyB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICBib29sCi0gICAgICAgIGNvbXBhcmVfZXF1YWwoY29uc3QgRnVuY3Rpb24mIGYsIGNvbnN0IEZ1bmN0b3ImIGcsIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzxmYWxzZT4pCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2VxdWFsKCpmcCwgZyk7Ci0gICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgIGJvb2wKLSAgICAgICAgY29tcGFyZV9lcXVhbChjb25zdCBGdW5jdGlvbiYgZiwgY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4mIGcsCi0gICAgICAgICAgICAgICAgICAgICAgaW50LCBtcGw6OmJvb2xfPGZhbHNlPikKLSAgICAgICAgewotICAgICAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICAgICAgICByZXR1cm4gZnAgPT0gZy5nZXRfcG9pbnRlcigpOwotICAgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgotICAgICAgICBib29sCi0gICAgICAgIGNvbXBhcmVfbm90X2VxdWFsKGNvbnN0IEZ1bmN0aW9uJiBmLCBjb25zdCBGdW5jdG9yJiBnLCBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmJvb2xfPGZhbHNlPikKLSAgICAgICAgewotICAgICAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICAgICAgICByZXR1cm4gIWZ1bmN0aW9uX2VxdWFsKCpmcCwgZyk7Ci0gICAgICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KLSAgICAgICAgYm9vbAotICAgICAgICBjb21wYXJlX25vdF9lcXVhbChjb25zdCBGdW5jdGlvbiYgZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4mIGcsIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzxmYWxzZT4pCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgICAgICAgcmV0dXJuIGZwICE9IGcuZ2V0X3BvaW50ZXIoKTsKLSAgICAgICAgICBlbHNlIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFCi0KLSAgICAgIC8qKgotICAgICAgICogU3RvcmVzIHRoZSAibWFuYWdlciIgcG9ydGlvbiBvZiB0aGUgdnRhYmxlIGZvciBhCi0gICAgICAgKiBuZG5ib29zdDo6ZnVuY3Rpb24gb2JqZWN0LgotICAgICAgICovCi0gICAgICBzdHJ1Y3QgdnRhYmxlX2Jhc2UKLSAgICAgIHsKLSAgICAgICAgdm9pZCAoKm1hbmFnZXIpKGNvbnN0IGZ1bmN0aW9uX2J1ZmZlciYgaW5fYnVmZmVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2J1ZmZlciYgb3V0X2J1ZmZlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdG9yX21hbmFnZXJfb3BlcmF0aW9uX3R5cGUgb3ApOwotICAgICAgfTsKLSAgICB9IC8vIGVuZCBuYW1lc3BhY2UgZnVuY3Rpb24KLSAgfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi0vKioKLSAqIFRoZSBmdW5jdGlvbl9iYXNlIGNsYXNzIGNvbnRhaW5zIHRoZSBiYXNpYyBlbGVtZW50cyBuZWVkZWQgZm9yIHRoZQotICogZnVuY3Rpb24xLCBmdW5jdGlvbjIsIGZ1bmN0aW9uMywgZXRjLiBjbGFzc2VzLiBJdCBpcyBjb21tb24gdG8gYWxsCi0gKiBmdW5jdGlvbnMgKGFuZCBhcyBzdWNoIGNhbiBiZSB1c2VkIHRvIHRlbGwgaWYgd2UgaGF2ZSBvbmUgb2YgdGhlCi0gKiBmdW5jdGlvbk4gb2JqZWN0cykuCi0gKi8KLWNsYXNzIGZ1bmN0aW9uX2Jhc2UKLXsKLXB1YmxpYzoKLSAgZnVuY3Rpb25fYmFzZSgpIDogdnRhYmxlKDApIHsgfQotCi0gIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGZ1bmN0aW9uIGlzIGVtcHR5IChpLmUuLCBoYXMgbm8gdGFyZ2V0KS4gKi8KLSAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuICF2dGFibGU7IH0KLQotICAvKiogUmV0cmlldmUgdGhlIHR5cGUgb2YgdGhlIHN0b3JlZCBmdW5jdGlvbiBvYmplY3QsIG9yIE5ETkJPT1NUX1NQX1RZUEVJRCh2b2lkKQotICAgICAgaWYgdGhpcyBpcyBlbXB0eS4gKi8KLSAgY29uc3QgZGV0YWlsOjpzcF90eXBlaW5mbyYgdGFyZ2V0X3R5cGUoKSBjb25zdAotICB7Ci0gICAgaWYgKCF2dGFibGUpIHJldHVybiBORE5CT09TVF9TUF9UWVBFSUQodm9pZCk7Ci0KLSAgICBkZXRhaWw6OmZ1bmN0aW9uOjpmdW5jdGlvbl9idWZmZXIgdHlwZTsKLSAgICBnZXRfdnRhYmxlKCktPm1hbmFnZXIoZnVuY3RvciwgdHlwZSwgZGV0YWlsOjpmdW5jdGlvbjo6Z2V0X2Z1bmN0b3JfdHlwZV90YWcpOwotICAgIHJldHVybiAqdHlwZS50eXBlLnR5cGU7Ci0gIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIEZ1bmN0b3IqIHRhcmdldCgpCi0gICAgewotICAgICAgaWYgKCF2dGFibGUpIHJldHVybiAwOwotCi0gICAgICBkZXRhaWw6OmZ1bmN0aW9uOjpmdW5jdGlvbl9idWZmZXIgdHlwZV9yZXN1bHQ7Ci0gICAgICB0eXBlX3Jlc3VsdC50eXBlLnR5cGUgPSAmTkROQk9PU1RfU1BfVFlQRUlEKEZ1bmN0b3IpOwotICAgICAgdHlwZV9yZXN1bHQudHlwZS5jb25zdF9xdWFsaWZpZWQgPSBpc19jb25zdDxGdW5jdG9yPjo6dmFsdWU7Ci0gICAgICB0eXBlX3Jlc3VsdC50eXBlLnZvbGF0aWxlX3F1YWxpZmllZCA9IGlzX3ZvbGF0aWxlPEZ1bmN0b3I+Ojp2YWx1ZTsKLSAgICAgIGdldF92dGFibGUoKS0+bWFuYWdlcihmdW5jdG9yLCB0eXBlX3Jlc3VsdCwgCi0gICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjpmdW5jdGlvbjo6Y2hlY2tfZnVuY3Rvcl90eXBlX3RhZyk7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rvcio+KHR5cGVfcmVzdWx0Lm9ial9wdHIpOwotICAgIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgY29uc3QgRnVuY3RvciogdGFyZ2V0KCBGdW5jdG9yICogPSAwICkgY29uc3QKLSNlbHNlCi0gICAgY29uc3QgRnVuY3RvciogdGFyZ2V0KCkgY29uc3QKLSNlbmRpZgotICAgIHsKLSAgICAgIGlmICghdnRhYmxlKSByZXR1cm4gMDsKLQotICAgICAgZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fYnVmZmVyIHR5cGVfcmVzdWx0OwotICAgICAgdHlwZV9yZXN1bHQudHlwZS50eXBlID0gJk5ETkJPT1NUX1NQX1RZUEVJRChGdW5jdG9yKTsKLSAgICAgIHR5cGVfcmVzdWx0LnR5cGUuY29uc3RfcXVhbGlmaWVkID0gdHJ1ZTsKLSAgICAgIHR5cGVfcmVzdWx0LnR5cGUudm9sYXRpbGVfcXVhbGlmaWVkID0gaXNfdm9sYXRpbGU8RnVuY3Rvcj46OnZhbHVlOwotICAgICAgZ2V0X3Z0YWJsZSgpLT5tYW5hZ2VyKGZ1bmN0b3IsIHR5cGVfcmVzdWx0LCAKLSAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmZ1bmN0aW9uOjpjaGVja19mdW5jdG9yX3R5cGVfdGFnKTsKLSAgICAgIC8vIEdDQyAyLjk1LjMgZ2V0cyB0aGUgQ1YgcXVhbGlmaWVycyB3cm9uZyBoZXJlLCBzbyB3ZQotICAgICAgLy8gY2FuJ3QgZG8gdGhlIHN0YXRpY19jYXN0IHRoYXQgd2Ugc2hvdWxkIGRvLgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEZ1bmN0b3IqPih0eXBlX3Jlc3VsdC5vYmpfcHRyKTsKLSAgICB9Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgRj4KLSAgICBib29sIGNvbnRhaW5zKGNvbnN0IEYmIGYpIGNvbnN0Ci0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICBpZiAoY29uc3QgRiogZnAgPSB0aGlzLT50YXJnZXQoIChGKikwICkpCi0jZWxzZQotICAgICAgaWYgKGNvbnN0IEYqIGZwID0gdGhpcy0+dGVtcGxhdGUgdGFyZ2V0PEY+KCkpCi0jZW5kaWYKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2VxdWFsKCpmcCwgZik7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8PSAzCi0gIC8vIEdDQyAzLjMgYW5kIG5ld2VyIGNhbm5vdCBjb3B5IHdpdGggdGhlIGdsb2JhbCBvcGVyYXRvcj09LCBkdWUgdG8KLSAgLy8gcHJvYmxlbXMgd2l0aCBpbnN0YW50aWF0aW9uIG9mIGZ1bmN0aW9uIHJldHVybiB0eXBlcyBiZWZvcmUgaXQKLSAgLy8gaGFzIGJlZW4gdmVyaWZpZWQgdGhhdCB0aGUgYXJndW1lbnQgdHlwZXMgbWF0Y2ggdXAuCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICAgIG9wZXJhdG9yPT0oRnVuY3RvciBnKSBjb25zdAotICAgIHsKLSAgICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgICByZXR1cm4gZnVuY3Rpb25fZXF1YWwoKmZwLCBnKTsKLSAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgICBvcGVyYXRvciE9KEZ1bmN0b3IgZykgY29uc3QKLSAgICB7Ci0gICAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgICAgcmV0dXJuICFmdW5jdGlvbl9lcXVhbCgqZnAsIGcpOwotICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotcHVibGljOiAvLyBzaG91bGQgYmUgcHJvdGVjdGVkLCBidXQgR0NDIDIuOTUuMyB3aWxsIGZhaWwgdG8gYWxsb3cgYWNjZXNzCi0gIGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlKiBnZXRfdnRhYmxlKCkgY29uc3QgewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlKj4oCi0gICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxzdGQ6OnNpemVfdD4odnRhYmxlKSAmIH5zdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oMHgwMSkpOwotICB9Ci0KLSAgYm9vbCBoYXNfdHJpdmlhbF9jb3B5X2FuZF9kZXN0cm95KCkgY29uc3QgewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHN0ZDo6c2l6ZV90Pih2dGFibGUpICYgMHgwMTsKLSAgfQotCi0gIGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlKiB2dGFibGU7Ci0gIG11dGFibGUgZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fYnVmZmVyIGZ1bmN0b3I7Ci19OwotCi0vKioKLSAqIFRoZSBiYWRfZnVuY3Rpb25fY2FsbCBleGNlcHRpb24gY2xhc3MgaXMgdGhyb3duIHdoZW4gYSBuZG5ib29zdDo6ZnVuY3Rpb24KLSAqIG9iamVjdCBpcyBpbnZva2VkCi0gKi8KLWNsYXNzIGJhZF9mdW5jdGlvbl9jYWxsIDogcHVibGljIHN0ZDo6cnVudGltZV9lcnJvcgotewotcHVibGljOgotICBiYWRfZnVuY3Rpb25fY2FsbCgpIDogc3RkOjpydW50aW1lX2Vycm9yKCJjYWxsIHRvIGVtcHR5IG5kbmJvb3N0OjpmdW5jdGlvbiIpIHt9Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLAotICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmZ1bmN0aW9uOjp1c2VsZXNzX2NsZWFyX3R5cGUqKQotewotICByZXR1cm4gZi5lbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OnVzZWxlc3NfY2xlYXJfdHlwZSopCi17Ci0gIHJldHVybiAhZi5lbXB0eSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGRldGFpbDo6ZnVuY3Rpb246OnVzZWxlc3NfY2xlYXJfdHlwZSosCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYpCi17Ci0gIHJldHVybiBmLmVtcHR5KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oZGV0YWlsOjpmdW5jdGlvbjo6dXNlbGVzc19jbGVhcl90eXBlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLXsKLSAgcmV0dXJuICFmLmVtcHR5KCk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotLy8gQ29tcGFyaXNvbnMgYmV0d2VlbiBuZG5ib29zdDo6ZnVuY3Rpb24gb2JqZWN0cyBhbmQgYXJiaXRyYXJ5IGZ1bmN0aW9uIG9iamVjdHMKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgZnVuY3Rpb25fYmFzZSYgZiwgRnVuY3RvciBnKQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPiBpbnRlZ3JhbDsKLSAgICByZXR1cm4gZGV0YWlsOjpmdW5jdGlvbjo6Y29tcGFyZV9lcXVhbChmLCBnLCAwLCBpbnRlZ3JhbCgpKTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEZ1bmN0b3IgZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT4gaW50ZWdyYWw7Ci0gICAgcmV0dXJuIGRldGFpbDo6ZnVuY3Rpb246OmNvbXBhcmVfZXF1YWwoZiwgZywgMCwgaW50ZWdyYWwoKSk7Ci0gIH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLCBGdW5jdG9yIGcpCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88KGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+IGludGVncmFsOwotICAgIHJldHVybiBkZXRhaWw6OmZ1bmN0aW9uOjpjb21wYXJlX25vdF9lcXVhbChmLCBnLCAwLCBpbnRlZ3JhbCgpKTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEZ1bmN0b3IgZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT4gaW50ZWdyYWw7Ci0gICAgcmV0dXJuIGRldGFpbDo6ZnVuY3Rpb246OmNvbXBhcmVfbm90X2VxdWFsKGYsIGcsIDAsIGludGVncmFsKCkpOwotICB9Ci0jZWxzZQotCi0jICBpZiAhKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDMgJiYgX19HTlVDX01JTk9SX18gPD0gMykKLS8vIENvbXBhcmlzb25zIGJldHdlZW4gbmRuYm9vc3Q6OmZ1bmN0aW9uIG9iamVjdHMgYW5kIGFyYml0cmFyeSBmdW5jdGlvbgotLy8gb2JqZWN0cy4gR0NDIDMuMyBhbmQgYmVmb3JlIGhhcyBhbiBvYm5veGlvdXMgYnVnIHRoYXQgcHJldmVudHMgdGhpcwotLy8gZnJvbSB3b3JraW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvcj09KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsIEZ1bmN0b3IgZykKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gZnVuY3Rpb25fZXF1YWwoKmZwLCBnKTsKLSAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yPT0oRnVuY3RvciBnLCBjb25zdCBmdW5jdGlvbl9iYXNlJiBmKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiBmdW5jdGlvbl9lcXVhbChnLCAqZnApOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgb3BlcmF0b3IhPShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLCBGdW5jdG9yIGcpCi0gIHsKLSAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgcmV0dXJuICFmdW5jdGlvbl9lcXVhbCgqZnAsIGcpOwotICAgIGVsc2UgcmV0dXJuIHRydWU7Ci0gIH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvciE9KEZ1bmN0b3IgZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gIWZ1bmN0aW9uX2VxdWFsKGcsICpmcCk7Ci0gICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgfQotIyAgZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgTkROQk9PU1RfRlVOQ1RJT05fRU5BQkxFX0lGX05PVF9JTlRFR1JBTChGdW5jdG9yLCBib29sKQotICBvcGVyYXRvcj09KGNvbnN0IGZ1bmN0aW9uX2Jhc2UmIGYsIHJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0b3I+IGcpCi0gIHsKLSAgICBpZiAoY29uc3QgRnVuY3RvciogZnAgPSBmLnRlbXBsYXRlIHRhcmdldDxGdW5jdG9yPigpKQotICAgICAgcmV0dXJuIGZwID09IGcuZ2V0X3BvaW50ZXIoKTsKLSAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yPT0ocmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4gZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gZy5nZXRfcG9pbnRlcigpID09IGZwOwotICAgIGVsc2UgcmV0dXJuIGZhbHNlOwotICB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gIE5ETkJPT1NUX0ZVTkNUSU9OX0VOQUJMRV9JRl9OT1RfSU5URUdSQUwoRnVuY3RvciwgYm9vbCkKLSAgb3BlcmF0b3IhPShjb25zdCBmdW5jdGlvbl9iYXNlJiBmLCByZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdG9yPiBnKQotICB7Ci0gICAgaWYgKGNvbnN0IEZ1bmN0b3IqIGZwID0gZi50ZW1wbGF0ZSB0YXJnZXQ8RnVuY3Rvcj4oKSkKLSAgICAgIHJldHVybiBmcCAhPSBnLmdldF9wb2ludGVyKCk7Ci0gICAgZWxzZSByZXR1cm4gdHJ1ZTsKLSAgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMKEZ1bmN0b3IsIGJvb2wpCi0gIG9wZXJhdG9yIT0ocmVmZXJlbmNlX3dyYXBwZXI8RnVuY3Rvcj4gZywgY29uc3QgZnVuY3Rpb25fYmFzZSYgZikKLSAgewotICAgIGlmIChjb25zdCBGdW5jdG9yKiBmcCA9IGYudGVtcGxhdGUgdGFyZ2V0PEZ1bmN0b3I+KCkpCi0gICAgICByZXR1cm4gZy5nZXRfcG9pbnRlcigpICE9IGZwOwotICAgIGVsc2UgcmV0dXJuIHRydWU7Ci0gIH0KLQotI2VuZGlmIC8vIENvbXBpbGVyIHN1cHBvcnRpbmcgU0ZJTkFFCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotICBuYW1lc3BhY2UgZnVuY3Rpb24gewotICAgIGlubGluZSBib29sIGhhc19lbXB0eV90YXJnZXQoY29uc3QgZnVuY3Rpb25fYmFzZSogZikKLSAgICB7Ci0gICAgICByZXR1cm4gZi0+ZW1wdHkoKTsKLSAgICB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMTApCi0gICAgaW5saW5lIGJvb2wgaGFzX2VtcHR5X3RhcmdldChjb25zdCB2b2lkKikKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotI2Vsc2UKLSAgICBpbmxpbmUgYm9vbCBoYXNfZW1wdHlfdGFyZ2V0KC4uLikKLSAgICB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotI2VuZGlmCi0gIH0gLy8gZW5kIG5hbWVzcGFjZSBmdW5jdGlvbgotfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotfSAvLyBlbmQgbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9FTkFCTEVfSUZfTk9UX0lOVEVHUkFMCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fQ09NUEFSRV9UWVBFX0lECi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYgICAgICAgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9GVU5DVElPTl9CQVNFX0hFQURFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWJjMzNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLS8vICBDb3B5cmlnaHQgKEMpIERvdWdsYXMgR3JlZ29yIDIwMDgKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0jaWZuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRldEX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fc2dpKSAmJiBkZWZpbmVkKF9DT01QSUxFUl9WRVJTSU9OKSAmJiBfQ09NUElMRVJfVkVSU0lPTiA8PSA3MzAgJiYgIWRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykKLS8vIFdvcmsgYXJvdW5kIGEgY29tcGlsZXIgYnVnLgotLy8gbmRuYm9vc3Q6OnB5dGhvbjo6b2JqZWN0czo6ZnVuY3Rpb24gaGFzIHRvIGJlIHNlZW4gYnkgdGhlIGNvbXBpbGVyIGJlZm9yZSB0aGUKLS8vIG5kbmJvb3N0OjpmdW5jdGlvbiBjbGFzcyB0ZW1wbGF0ZS4KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBweXRob24geyBuYW1lc3BhY2Ugb2JqZWN0cyB7Ci0gIGNsYXNzIGZ1bmN0aW9uOwotfX19Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQgKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICAgICAgICAgICAgICAgICAgICBcCi0gfHwgZGVmaW5lZChORE5CT09TVF9CQ0JfUEFSVElBTF9TUEVDSUFMSVpBVElPTl9CVUcpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSB8fCAhKGRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykgfHwgIWRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IF9fU1VOUFJPX0NDID4gMHg1NDApCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTk9fRlVOQ1RJT05fVFlQRV9TWU5UQVgKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICBjbGFzcyBiYWRfZnVuY3Rpb25fY2FsbDsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OX05PX0ZVTkNUSU9OX1RZUEVfU1lOVEFYKQotICAvLyBQcmVmZXJyZWQgc3ludGF4Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFNpZ25hdHVyZT4gY2xhc3MgZnVuY3Rpb247Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgU2lnbmF0dXJlPgotICBpbmxpbmUgdm9pZCBzd2FwKGZ1bmN0aW9uPFNpZ25hdHVyZT4mIGYxLCBmdW5jdGlvbjxTaWduYXR1cmU+JiBmMikKLSAgewotICAgIGYxLnN3YXAoZjIpOwotICB9Ci0jZW5kaWYgLy8gaGF2ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uCi0KLSAgLy8gUG9ydGFibGUgc3ludGF4Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFI+IGNsYXNzIGZ1bmN0aW9uMDsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDE+IGNsYXNzIGZ1bmN0aW9uMTsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBjbGFzcyBmdW5jdGlvbjI7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+IGNsYXNzIGZ1bmN0aW9uMzsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+IAotICAgIGNsYXNzIGZ1bmN0aW9uNDsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1PiAKLSAgICBjbGFzcyBmdW5jdGlvbjU7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+IAotICAgIGNsYXNzIGZ1bmN0aW9uNjsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+IAotICAgIGNsYXNzIGZ1bmN0aW9uNzsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PiAKLSAgICBjbGFzcyBmdW5jdGlvbjg7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+IAotICAgIGNsYXNzIGZ1bmN0aW9uOTsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwKLSAgICAgICAgICAgdHlwZW5hbWUgVDEwPiAKLSAgICBjbGFzcyBmdW5jdGlvbjEwOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZnVuY3Rpb25fdGVtcGxhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjQyZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90ZW1wbGF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTg1ICswLDAgQEAKLS8vIEJvb3N0LkZ1bmN0aW9uIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAxLTIwMDYKLS8vICBDb3B5cmlnaHQgRW1pbCBEb3RjaGV2c2tpIDIwMDcKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotLy8gTm90ZTogdGhpcyBoZWFkZXIgaXMgYSBoZWFkZXIgdGVtcGxhdGUgYW5kIG11c3QgTk9UIGhhdmUgbXVsdGlwbGUtaW5jbHVzaW9uCi0vLyBwcm90ZWN0aW9uLgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9wcm9sb2d1ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL25vX2V4Y2VwdGlvbnNfc3VwcG9ydC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotIyAgIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDEyNyApIC8vICJjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50IgotI2VuZGlmICAgICAgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTLCB0eXBlbmFtZSBUKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MsIFQpCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fUEFSTShKLEksRCkgTkROQk9PU1RfUFBfQ0FUKFQsSSkgTkROQk9PU1RfUFBfQ0FUKGEsSSkKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9QQVJNUyBORE5CT09TVF9QUF9FTlVNKE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTLE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk0sTkROQk9PU1RfUFBfRU1QVFkpCi0KLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQVJHUyBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUywgYSkKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9BUkdfVFlQRShKLEksRCkgXAotICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChULEkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoYXJnLCBORE5CT09TVF9QUF9JTkMoSSkpLF90eXBlKTsKLQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9BUkdfVFlQRVMgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTLE5ETkJPT1NUX0ZVTkNUSU9OX0FSR19UWVBFLE5ETkJPT1NUX1BQX0VNUFRZKQotCi0vLyBDb21tYSBpZiBub256ZXJvIG51bWJlciBvZiBhcmd1bWVudHMKLSNpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAwCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgLAotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID4gMAotCi0vLyBDbGFzcyBuYW1lcyB1c2VkIGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgY29kZQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiBORE5CT09TVF9KT0lOKGZ1bmN0aW9uLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihmdW5jdGlvbl9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKHZvaWRfZnVuY3Rpb25faW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fT0JKX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGZ1bmN0aW9uX29ial9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX09CSl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTih2b2lkX2Z1bmN0aW9uX29ial9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTl9SRUZfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZnVuY3Rpb25fcmVmX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fUkVGX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKHZvaWRfZnVuY3Rpb25fcmVmX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihmdW5jdGlvbl9tZW1faW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9NRU1CRVJfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZnVuY3Rpb25fdm9pZF9tZW1faW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGdldF9mdW5jdGlvbl9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fT0JKX0lOVk9LRVIgXAotICBORE5CT09TVF9KT0lOKGdldF9mdW5jdGlvbl9vYmpfaW52b2tlcixORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSIFwKLSAgTkROQk9PU1RfSk9JTihnZXRfZnVuY3Rpb25fcmVmX2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9NRU1CRVJfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZ2V0X21lbWJlcl9pbnZva2VyLE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUiBcCi0gIE5ETkJPT1NUX0pPSU4oZ2V0X2ludm9rZXIsTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1ZUQUJMRSBORE5CT09TVF9KT0lOKGJhc2ljX3Z0YWJsZSxORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUykKLQotI2lmbmRlZiBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFIHZvaWQKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9SRVRVUk4oWCkgWAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFIG5kbmJvb3N0OjpkZXRhaWw6OmZ1bmN0aW9uOjp1bnVzYWJsZQotIyAgZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTihYKSBYOyByZXR1cm4gTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRSAoKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gIG5hbWVzcGFjZSBkZXRhaWwgewotICAgIG5hbWVzcGFjZSBmdW5jdGlvbiB7Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25QdHIsCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIFIgaW52b2tlKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3Rpb25fcHRyIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9QQVJNUykKLSAgICAgICAgewotICAgICAgICAgIEZ1bmN0aW9uUHRyIGYgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uUHRyPihmdW5jdGlvbl9wdHIuZnVuY19wdHIpOwotICAgICAgICAgIHJldHVybiBmKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25QdHIsCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRQotICAgICAgICBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBGdW5jdGlvblB0ciBmID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblB0cj4oZnVuY3Rpb25fcHRyLmZ1bmNfcHRyKTsKLSAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9SRVRVUk4oZihORE5CT09TVF9GVU5DVElPTl9BUkdTKSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBSIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBGdW5jdGlvbk9iaiogZjsKLSAgICAgICAgICBpZiAoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSkKLSAgICAgICAgICAgIGYgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uT2JqKj4oJmZ1bmN0aW9uX29ial9wdHIuZGF0YSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPihmdW5jdGlvbl9vYmpfcHRyLm9ial9wdHIpOwotICAgICAgICAgIHJldHVybiAoKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgRnVuY3Rpb25PYmosCi0gICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMKLSAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFCi0gICAgICAgIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBGdW5jdGlvbk9iaiogZjsKLSAgICAgICAgICBpZiAoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSkKLSAgICAgICAgICAgIGYgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uT2JqKj4oJmZ1bmN0aW9uX29ial9wdHIuZGF0YSk7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPihmdW5jdGlvbl9vYmpfcHRyLm9ial9wdHIpOwotICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTigoKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fUkVGX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgc3RhdGljIFIgaW52b2tlKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3Rpb25fb2JqX3B0ciBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpCi0KLSAgICAgICAgewotICAgICAgICAgIEZ1bmN0aW9uT2JqKiBmID0gCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uT2JqKj4oZnVuY3Rpb25fb2JqX3B0ci5vYmpfcHRyKTsKLSAgICAgICAgICByZXR1cm4gKCpmKShORE5CT09TVF9GVU5DVElPTl9BUkdTKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9SRUZfSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRQotICAgICAgICBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9vYmpfcHRyIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9QQVJNUykKLQotICAgICAgICB7Ci0gICAgICAgICAgRnVuY3Rpb25PYmoqIGYgPSAKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25PYmoqPihmdW5jdGlvbl9vYmpfcHRyLm9ial9wdHIpOwotICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTigoKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpKTsKLSAgICAgICAgfQotICAgICAgfTsKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID4gMAotICAgICAgLyogSGFuZGxlIGludm9jYXRpb24gb2YgbWVtYmVyIHBvaW50ZXJzLiAqLwotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIE1lbWJlclB0ciwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSCi0gICAgICB7Ci0gICAgICAgIHN0YXRpYyBSIGludm9rZShmdW5jdGlvbl9idWZmZXImIGZ1bmN0aW9uX29ial9wdHIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk1TKQotCi0gICAgICAgIHsKLSAgICAgICAgICBNZW1iZXJQdHIqIGYgPSAKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWVtYmVyUHRyKj4oJmZ1bmN0aW9uX29ial9wdHIuZGF0YSk7Ci0gICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjptZW1fZm4oKmYpKE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgTWVtYmVyUHRyLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9NRU1CRVJfSU5WT0tFUgotICAgICAgewotICAgICAgICBzdGF0aWMgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9SRVRVUk5fVFlQRQotICAgICAgICBpbnZva2UoZnVuY3Rpb25fYnVmZmVyJiBmdW5jdGlvbl9vYmpfcHRyIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9QQVJNUykKLQotICAgICAgICB7Ci0gICAgICAgICAgTWVtYmVyUHRyKiBmID0gCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PE1lbWJlclB0cio+KCZmdW5jdGlvbl9vYmpfcHRyLmRhdGEpOwotICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1JFVFVSTihuZG5ib29zdDo6bWVtX2ZuKCpmKShORE5CT09TVF9GVU5DVElPTl9BUkdTKSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uUHRyLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICA+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8KGlzX3ZvaWQ8Uj46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlPAotICAgICAgICB0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICAgICAgID4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fT0JKX0lOVk9LRVIKLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8KGlzX3ZvaWQ8Uj46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9WT0lEX0ZVTkNUSU9OX09CSl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX09CSl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIEZ1bmN0aW9uT2JqLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9SRUZfSU5WT0tFUgotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfdm9pZDxSPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fUkVGX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fUkVGX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICB9OwotCi0jaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPiAwCi0gICAgICAvKiBSZXRyaWV2ZSB0aGUgYXBwcm9wcmlhdGUgaW52b2tlciBmb3IgYSBtZW1iZXIgcG9pbnRlci4gICovCi0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgdHlwZW5hbWUgTWVtYmVyUHRyLAotICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TCi0gICAgICAgPgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9NRU1CRVJfSU5WT0tFUgotICAgICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwoaXNfdm9pZDxSPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfTUVNQkVSX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtYmVyUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlclB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgLyogR2l2ZW4gdGhlIHRhZyByZXR1cm5lZCBieSBnZXRfZnVuY3Rpb25fdGFnLCByZXRyaWV2ZSB0aGUKLSAgICAgICAgIGFjdHVhbCBpbnZva2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24KLSAgICAgICAgIG9iamVjdC4gCi0KLSAgICAgICAgIEVhY2ggc3BlY2lhbGl6YXRpb24gY29udGFpbnMgYW4gImFwcGx5IiBuZXN0ZWQgY2xhc3MgdGVtcGxhdGUKLSAgICAgICAgIHRoYXQgYWNjZXB0cyB0aGUgZnVuY3Rpb24gb2JqZWN0LCByZXR1cm4gdHlwZSwgZnVuY3Rpb24KLSAgICAgICAgIGFyZ3VtZW50IHR5cGVzLCBhbmQgYWxsb2NhdG9yLiBUaGUgcmVzdWx0aW5nICJhcHBseSIgY2xhc3MKLSAgICAgICAgIGNvbnRhaW5zIHR3byB0eXBlZGVmcywgImludm9rZXJfdHlwZSIgYW5kICJtYW5hZ2VyX3R5cGUiLAotICAgICAgICAgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgaW52b2tlciBhbmQgbWFuYWdlciB0eXBlcy4gKi8KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhZz4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUiB7IH07Ci0KLSAgICAgIC8qIFJldHJpZXZlIHRoZSBpbnZva2VyIGZvciBhIGZ1bmN0aW9uIHBvaW50ZXIuICovCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8ZnVuY3Rpb25fcHRyX3RhZz4KLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8RnVuY3Rpb25QdHI+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblB0ciwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUywKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBzdHJ1Y3QgYXBwbHlfYQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8RnVuY3Rpb25QdHI+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLSAgICAgIH07Ci0KLSNpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA+IDAKLSAgICAgIC8qIFJldHJpZXZlIHRoZSBpbnZva2VyIGZvciBhIG1lbWJlciBwb2ludGVyLiAqLwotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9JTlZPS0VSPG1lbWJlcl9wdHJfdGFnPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1iZXJQdHIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfTUVNQkVSX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlclB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICBpbnZva2VyX3R5cGU7Ci0KLSAgICAgICAgICB0eXBlZGVmIGZ1bmN0b3JfbWFuYWdlcjxNZW1iZXJQdHI+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1iZXJQdHIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgc3RydWN0IGFwcGx5X2EKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX01FTUJFUl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1iZXJQdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8TWVtYmVyUHRyPiBtYW5hZ2VyX3R5cGU7Ci0gICAgICAgIH07Ci0gICAgICB9OwotI2VuZGlmCi0KLSAgICAgIC8qIFJldHJpZXZlIHRoZSBpbnZva2VyIGZvciBhIGZ1bmN0aW9uIG9iamVjdC4gKi8KLSAgICAgIHRlbXBsYXRlPD4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9HRVRfSU5WT0tFUjxmdW5jdGlvbl9vYmpfdGFnPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgICAgICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9PQkpfSU5WT0tFUjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25PYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgaW52b2tlcl90eXBlOwotCi0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX21hbmFnZXI8RnVuY3Rpb25PYmo+IG1hbmFnZXJfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaiwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUywKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBzdHJ1Y3QgYXBwbHlfYQotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9GVU5DVElPTl9HRVRfRlVOQ1RJT05fT0JKX0lOVk9LRVI8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uT2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgIGludm9rZXJfdHlwZTsKLQotICAgICAgICAgIHR5cGVkZWYgZnVuY3Rvcl9tYW5hZ2VyX2E8RnVuY3Rpb25PYmosIEFsbG9jYXRvcj4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotICAgICAgfTsKLQotICAgICAgLyogUmV0cmlldmUgdGhlIGludm9rZXIgZm9yIGEgcmVmZXJlbmNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0LiAqLwotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9JTlZPS0VSPGZ1bmN0aW9uX29ial9yZWZfdGFnPgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWZXcmFwcGVyLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TPgotICAgICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSZWZXcmFwcGVyOjp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgIGludm9rZXJfdHlwZTsKLQotICAgICAgICAgIHR5cGVkZWYgcmVmZXJlbmNlX21hbmFnZXI8dHlwZW5hbWUgUmVmV3JhcHBlcjo6dHlwZT4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZldyYXBwZXIsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVMsCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgc3RydWN0IGFwcGx5X2EKLSAgICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBSZWZXcmFwcGVyOjp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgIGludm9rZXJfdHlwZTsKLQotICAgICAgICAgIHR5cGVkZWYgcmVmZXJlbmNlX21hbmFnZXI8dHlwZW5hbWUgUmVmV3JhcHBlcjo6dHlwZT4gbWFuYWdlcl90eXBlOwotICAgICAgICB9OwotICAgICAgfTsKLQotCi0gICAgICAvKioKLSAgICAgICAqIHZ0YWJsZSBmb3IgYSBzcGVjaWZpYyBuZG5ib29zdDo6ZnVuY3Rpb24gaW5zdGFuY2UuIFRoaXMKLSAgICAgICAqIHN0cnVjdHVyZSBtdXN0IGJlIGFuIGFnZ3JlZ2F0ZSBzbyB0aGF0IHdlIGNhbiB1c2Ugc3RhdGljCi0gICAgICAgKiBpbml0aWFsaXphdGlvbiBpbiBuZG5ib29zdDo6ZnVuY3Rpb24ncyBhc3NpZ25fdG8gYW5kIGFzc2lnbl90b19hCi0gICAgICAgKiBtZW1iZXJzLiBJdCB0aGVyZWZvcmUgY2Fubm90IGhhdmUgYW55IGNvbnN0cnVjdG9ycywKLSAgICAgICAqIGRlc3RydWN0b3JzLCBiYXNlIGNsYXNzZXMsIGV0Yy4KLSAgICAgICAqLwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgICAgIHN0cnVjdCBORE5CT09TVF9GVU5DVElPTl9WVEFCTEUKLSAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fVk9JRF9SRVRVUk5TCi0gICAgICAgIHR5cGVkZWYgUiAgICAgICAgIHJlc3VsdF90eXBlOwotI2Vsc2UKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmdW5jdGlvbl9yZXR1cm5fdHlwZTxSPjo6dHlwZSByZXN1bHRfdHlwZTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19WT0lEX1JFVFVSTlMKLQotICAgICAgICB0eXBlZGVmIHJlc3VsdF90eXBlICgqaW52b2tlcl90eXBlKShmdW5jdGlvbl9idWZmZXImCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+Ci0gICAgICAgIGJvb2wgYXNzaWduX3RvKEYgZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfZnVuY3Rpb25fdGFnPEY+Ojp0eXBlIHRhZzsKLSAgICAgICAgICByZXR1cm4gYXNzaWduX3RvKGYsIGZ1bmN0b3IsIHRhZygpKTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgYm9vbCBhc3NpZ25fdG9fYShGIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yIGEpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9mdW5jdGlvbl90YWc8Rj46OnR5cGUgdGFnOwotICAgICAgICAgIHJldHVybiBhc3NpZ25fdG9fYShmLCBmdW5jdG9yLCBhLCB0YWcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyKGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGlmIChiYXNlLm1hbmFnZXIpCi0gICAgICAgICAgICBiYXNlLm1hbmFnZXIoZnVuY3RvciwgZnVuY3RvciwgZGVzdHJveV9mdW5jdG9yX3RhZyk7Ci0gICAgICAgIH0KLQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgLy8gRnVuY3Rpb24gcG9pbnRlcnMKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25QdHI+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90byhGdW5jdGlvblB0ciBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIGZ1bmN0aW9uX3B0cl90YWcpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICB0aGlzLT5jbGVhcihmdW5jdG9yKTsKLSAgICAgICAgICBpZiAoZikgewotICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGEgcmVpbnRlcnByZXQgY2FzdCwgYnV0IHNvbWUgY29tcGlsZXJzIGluc2lzdAotICAgICAgICAgICAgLy8gb24gZ2l2aW5nIGN2LXF1YWxpZmllcnMgdG8gZnJlZSBmdW5jdGlvbnMKLSAgICAgICAgICAgIGZ1bmN0b3IuZnVuY19wdHIgPSByZWludGVycHJldF9jYXN0PHZvaWQgKCopKCk+KGYpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25QdHIsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBib29sIAotICAgICAgICBhc3NpZ25fdG9fYShGdW5jdGlvblB0ciBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciwgZnVuY3Rpb25fcHRyX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIHJldHVybiBhc3NpZ25fdG8oZixmdW5jdG9yLGZ1bmN0aW9uX3B0cl90YWcoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNZW1iZXIgcG9pbnRlcnMKLSNpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA+IDAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVtYmVyUHRyPgotICAgICAgICBib29sIGFzc2lnbl90byhNZW1iZXJQdHIgZiwgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBtZW1iZXJfcHRyX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIC8vIERQRyBUQkQ6IEFkZCBleHBsaWNpdCBzdXBwb3J0IGZvciBtZW1iZXIgZnVuY3Rpb24KLSAgICAgICAgICAvLyBvYmplY3RzLCBzbyB3ZSBpbnZva2UgdGhyb3VnaCBtZW1fZm4oKSBidXQgd2UgcmV0YWluIHRoZQotICAgICAgICAgIC8vIHJpZ2h0IHRhcmdldF90eXBlKCkgdmFsdWVzLgotICAgICAgICAgIGlmIChmKSB7Ci0gICAgICAgICAgICB0aGlzLT5hc3NpZ25fdG8obmRuYm9vc3Q6Om1lbV9mbihmKSwgZnVuY3Rvcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZW1iZXJQdHIsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBib29sIGFzc2lnbl90b19hKE1lbWJlclB0ciBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciBhLCBtZW1iZXJfcHRyX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIC8vIERQRyBUQkQ6IEFkZCBleHBsaWNpdCBzdXBwb3J0IGZvciBtZW1iZXIgZnVuY3Rpb24KLSAgICAgICAgICAvLyBvYmplY3RzLCBzbyB3ZSBpbnZva2UgdGhyb3VnaCBtZW1fZm4oKSBidXQgd2UgcmV0YWluIHRoZQotICAgICAgICAgIC8vIHJpZ2h0IHRhcmdldF90eXBlKCkgdmFsdWVzLgotICAgICAgICAgIGlmIChmKSB7Ci0gICAgICAgICAgICB0aGlzLT5hc3NpZ25fdG9fYShuZG5ib29zdDo6bWVtX2ZuKGYpLCBmdW5jdG9yLCBhKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPiAwCi0KLSAgICAgICAgLy8gRnVuY3Rpb24gb2JqZWN0cwotICAgICAgICAvLyBBc3NpZ24gdG8gYSBmdW5jdGlvbiBvYmplY3QgdXNpbmcgdGhlIHNtYWxsIG9iamVjdCBvcHRpbWl6YXRpb24KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmo+Ci0gICAgICAgIHZvaWQgCi0gICAgICAgIGFzc2lnbl9mdW5jdG9yKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgbXBsOjp0cnVlXykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIG5ldyAocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJmZ1bmN0b3IuZGF0YSkpIEZ1bmN0aW9uT2JqKGYpOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uT2JqLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICAgICAgdm9pZCAKLSAgICAgICAgYXNzaWduX2Z1bmN0b3JfYShGdW5jdGlvbk9iaiBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciwgbXBsOjp0cnVlXykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGFzc2lnbl9mdW5jdG9yKGYsZnVuY3RvcixtcGw6OnRydWVfKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQXNzaWduIHRvIGEgZnVuY3Rpb24gb2JqZWN0IGFsbG9jYXRlZCBvbiB0aGUgaGVhcC4KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmo+Ci0gICAgICAgIHZvaWQgCi0gICAgICAgIGFzc2lnbl9mdW5jdG9yKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgbXBsOjpmYWxzZV8pIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICBmdW5jdG9yLm9ial9wdHIgPSBuZXcgRnVuY3Rpb25PYmooZik7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmosdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICB2b2lkIAotICAgICAgICBhc3NpZ25fZnVuY3Rvcl9hKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgQWxsb2NhdG9yIGEsIG1wbDo6ZmFsc2VfKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiBmdW5jdG9yX3dyYXBwZXI8RnVuY3Rpb25PYmosQWxsb2NhdG9yPiBmdW5jdG9yX3dyYXBwZXJfdHlwZTsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jYXRvcjo6dGVtcGxhdGUgcmViaW5kPGZ1bmN0b3Jfd3JhcHBlcl90eXBlPjo6b3RoZXIKLSAgICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3R5cGU7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB3cmFwcGVyX2FsbG9jYXRvcl90eXBlOjpwb2ludGVyIHdyYXBwZXJfYWxsb2NhdG9yX3BvaW50ZXJfdHlwZTsKLSAgICAgICAgICB3cmFwcGVyX2FsbG9jYXRvcl90eXBlIHdyYXBwZXJfYWxsb2NhdG9yKGEpOwotICAgICAgICAgIHdyYXBwZXJfYWxsb2NhdG9yX3BvaW50ZXJfdHlwZSBjb3B5ID0gd3JhcHBlcl9hbGxvY2F0b3IuYWxsb2NhdGUoMSk7Ci0gICAgICAgICAgd3JhcHBlcl9hbGxvY2F0b3IuY29uc3RydWN0KGNvcHksIGZ1bmN0b3Jfd3JhcHBlcl90eXBlKGYsYSkpOwotICAgICAgICAgIGZ1bmN0b3Jfd3JhcHBlcl90eXBlKiBuZXdfZiA9IHN0YXRpY19jYXN0PGZ1bmN0b3Jfd3JhcHBlcl90eXBlKj4oY29weSk7Ci0gICAgICAgICAgZnVuY3Rvci5vYmpfcHRyID0gbmV3X2Y7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaj4KLSAgICAgICAgYm9vbCAKLSAgICAgICAgYXNzaWduX3RvKEZ1bmN0aW9uT2JqIGYsIGZ1bmN0aW9uX2J1ZmZlciYgZnVuY3RvciwgZnVuY3Rpb25fb2JqX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGlmICghbmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb246Omhhc19lbXB0eV90YXJnZXQobmRuYm9vc3Q6OmFkZHJlc3NvZihmKSkpIHsKLSAgICAgICAgICAgIGFzc2lnbl9mdW5jdG9yKGYsIGZ1bmN0b3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzwoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSk+KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmosdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgICAgICBib29sIAotICAgICAgICBhc3NpZ25fdG9fYShGdW5jdGlvbk9iaiBmLCBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciBhLCBmdW5jdGlvbl9vYmpfdGFnKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgaWYgKCFuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6aGFzX2VtcHR5X3RhcmdldChuZG5ib29zdDo6YWRkcmVzc29mKGYpKSkgewotICAgICAgICAgICAgYXNzaWduX2Z1bmN0b3JfYShmLCBmdW5jdG9yLCBhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpib29sXzwoZnVuY3Rpb25fYWxsb3dzX3NtYWxsX29iamVjdF9vcHRpbWl6YXRpb248RnVuY3Rpb25PYmo+Ojp2YWx1ZSk+KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZWZlcmVuY2UgdG8gYSBmdW5jdGlvbiBvYmplY3QKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25PYmo+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90byhjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbk9iaj4mIGYsIAotICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fYnVmZmVyJiBmdW5jdG9yLCBmdW5jdGlvbl9vYmpfcmVmX3RhZykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgIGZ1bmN0b3Iub2JqX3JlZi5vYmpfcHRyID0gKHZvaWQgKikoZi5nZXRfcG9pbnRlcigpKTsKLSAgICAgICAgICBmdW5jdG9yLm9ial9yZWYuaXNfY29uc3RfcXVhbGlmaWVkID0gaXNfY29uc3Q8RnVuY3Rpb25PYmo+Ojp2YWx1ZTsKLSAgICAgICAgICBmdW5jdG9yLm9ial9yZWYuaXNfdm9sYXRpbGVfcXVhbGlmaWVkID0gaXNfdm9sYXRpbGU8RnVuY3Rpb25PYmo+Ojp2YWx1ZTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbk9iaix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgICAgIGJvb2wgCi0gICAgICAgIGFzc2lnbl90b19hKGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPEZ1bmN0aW9uT2JqPiYgZiwgCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbl9idWZmZXImIGZ1bmN0b3IsIEFsbG9jYXRvciwgZnVuY3Rpb25fb2JqX3JlZl90YWcpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gYXNzaWduX3RvKGYsZnVuY3RvcixmdW5jdGlvbl9vYmpfcmVmX3RhZygpKTsKLSAgICAgICAgfQotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgIHZ0YWJsZV9iYXNlIGJhc2U7Ci0gICAgICAgIGludm9rZXJfdHlwZSBpbnZva2VyOwotICAgICAgfTsKLSAgICB9IC8vIGVuZCBuYW1lc3BhY2UgZnVuY3Rpb24KLSAgfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAotCi0gIHRlbXBsYXRlPAotICAgIHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotICA+Ci0gIGNsYXNzIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OIDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEKLQotICAgICwgcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248VDAsUj4KLQotI2VsaWYgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgPT0gMgotCi0gICAgLCBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248VDAsVDEsUj4KLQotI2VuZGlmCi0KLSAgewotICBwdWJsaWM6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotICAgIHR5cGVkZWYgUiAgICAgICAgIHJlc3VsdF90eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6ZnVuY3Rpb25fcmV0dXJuX3R5cGU8Uj46OnR5cGUKLSAgICAgIHJlc3VsdF90eXBlOwotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1ZPSURfUkVUVVJOUwotCi0gIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6TkROQk9PU1RfRlVOQ1RJT05fVlRBQkxFPAotICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+Ci0gICAgICB2dGFibGVfdHlwZTsKLQotICAgIHZ0YWJsZV90eXBlKiBnZXRfdnRhYmxlKCkgY29uc3QgewotICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dnRhYmxlX3R5cGUqPigKLSAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KHZ0YWJsZSkgJiB+c3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KDB4MDEpKTsKLSAgICB9Ci0KLSAgICBzdHJ1Y3QgY2xlYXJfdHlwZSB7fTsKLQotICBwdWJsaWM6Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgYXJncyA9IE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTKTsKLQotICAgIC8vIGFkZCBzaWduYXR1cmUgZm9yIG5kbmJvb3N0OjpsYW1iZGEKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmdzPgotICAgIHN0cnVjdCBzaWcKLSAgICB7Ci0gICAgICB0eXBlZGVmIHJlc3VsdF90eXBlIHR5cGU7Ci0gICAgfTsKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDEKLSAgICB0eXBlZGVmIFQwIGFyZ3VtZW50X3R5cGU7Ci0jZWxpZiBORE5CT09TVF9GVU5DVElPTl9OVU1fQVJHUyA9PSAyCi0gICAgdHlwZWRlZiBUMCBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgVDEgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIGFyaXR5ID0gTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MpOwotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR19UWVBFUwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiBzZWxmX3R5cGU7Ci0KLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTigpIDogZnVuY3Rpb25fYmFzZSgpIHsgfQotCi0gICAgLy8gTVNWQyBjaG9rZXMgaWYgdGhlIGZvbGxvd2luZyB0d28gY29uc3RydWN0b3JzIGFyZSBjb2xsYXBzZWQgaW50bwotICAgIC8vIG9uZSB3aXRoIGEgZGVmYXVsdCBwYXJhbWV0ZXIuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTihGdW5jdG9yIE5ETkJPT1NUX0ZVTkNUSU9OX1RBUkdFVF9GSVgoY29uc3QgJikgZgotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAsdHlwZW5hbWUgZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDAKLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDoKLSAgICAgIGZ1bmN0aW9uX2Jhc2UoKQotICAgIHsKLSAgICAgIHRoaXMtPmFzc2lnbl90byhmKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcix0eXBlbmFtZSBBbGxvY2F0b3I+Ci0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oRnVuY3RvciBORE5CT09TVF9GVU5DVElPTl9UQVJHRVRfRklYKGNvbnN0ICYpIGYsIEFsbG9jYXRvciBhCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICx0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ+Ojp0eXBlID0gMAotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOgotICAgICAgZnVuY3Rpb25fYmFzZSgpCi0gICAgewotICAgICAgdGhpcy0+YXNzaWduX3RvX2EoZixhKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oY2xlYXJfdHlwZSopIDogZnVuY3Rpb25fYmFzZSgpIHsgfQotI2Vsc2UKLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTihpbnQgemVybykgOiBmdW5jdGlvbl9iYXNlKCkKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoemVybyA9PSAwKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OKGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBmKSA6IGZ1bmN0aW9uX2Jhc2UoKQotICAgIHsKLSAgICAgIHRoaXMtPmFzc2lnbl90b19vd24oZik7Ci0gICAgfQotICAgIAotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OKE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiYgZikgOiBmdW5jdGlvbl9iYXNlKCkKLSAgICB7Ci0gICAgICB0aGlzLT5tb3ZlX2Fzc2lnbihmKTsKLSAgICB9Ci0jZW5kaWYKLSAgICAKLSAgICB+TkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04oKSB7IGNsZWFyKCk7IH0KLQotICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoTkROQk9PU1RfRlVOQ1RJT05fUEFSTVMpIGNvbnN0Ci0gICAgewotICAgICAgaWYgKHRoaXMtPmVtcHR5KCkpCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX2Z1bmN0aW9uX2NhbGwoKSk7Ci0KLSAgICAgIHJldHVybiBnZXRfdnRhYmxlKCktPmludm9rZXIKLSAgICAgICAgICAgICAgICh0aGlzLT5mdW5jdG9yIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX0FSR1MpOwotICAgIH0KLQotICAgIC8vIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHdoZW4gdG8gdXNlIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OIGFuZAotICAgIC8vIHdoZW4gdG8gdXNlIHNlbGZfdHlwZSBpcyBvYm5veGlvdXMuIE1TVkMgY2Fubm90IGhhbmRsZSBzZWxmX3R5cGUgYXMKLSAgICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlc2UgYXNzaWdubWVudCBvcGVyYXRvcnMsIGJ1dCBCb3JsYW5kIEMrKyBjYW5ub3QKLSAgICAvLyBoYW5kbGUgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04gYXMgdGhlIHR5cGUgb2YgdGhlIHRlbXBvcmFyeSB0bwotICAgIC8vIGNvbnN0cnVjdC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICB0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgIChuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgIChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mPjo6dHlwZQotI2Vsc2UKLSAgICBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYKLSNlbmRpZgotICAgIG9wZXJhdG9yPShGdW5jdG9yIE5ETkJPT1NUX0ZVTkNUSU9OX1RBUkdFVF9GSVgoY29uc3QgJikgZikKLSAgICB7Ci0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgTkROQk9PU1RfVFJZICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbl90byhmKTsKLSAgICAgIH0gTkROQk9PU1RfQ0FUQ0ggKC4uLikgewotICAgICAgICB2dGFibGUgPSAwOwotICAgICAgICBORE5CT09TVF9SRVRIUk9XOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQ0FUQ0hfRU5ECi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsdHlwZW5hbWUgQWxsb2NhdG9yPgotICAgIHZvaWQgYXNzaWduKEZ1bmN0b3IgTkROQk9PU1RfRlVOQ1RJT05fVEFSR0VUX0ZJWChjb25zdCAmKSBmLCBBbGxvY2F0b3IgYSkKLSAgICB7Ci0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgTkROQk9PU1RfVFJZewotICAgICAgICB0aGlzLT5hc3NpZ25fdG9fYShmLGEpOwotICAgICAgfSBORE5CT09TVF9DQVRDSCAoLi4uKSB7Ci0gICAgICAgIHZ0YWJsZSA9IDA7Ci0gICAgICAgIE5ETkJPT1NUX1JFVEhST1c7Ci0gICAgICB9Ci0gICAgICBORE5CT09TVF9DQVRDSF9FTkQKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG9wZXJhdG9yPShjbGVhcl90eXBlKikKLSAgICB7Ci0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSNlbHNlCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG9wZXJhdG9yPShpbnQgemVybykKLSAgICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoemVybyA9PSAwKTsKLSAgICAgIHRoaXMtPmNsZWFyKCk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25tZW50IGZyb20gYW5vdGhlciBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTgotICAgIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBvcGVyYXRvcj0oY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIGYpCi0gICAgewotICAgICAgaWYgKCZmID09IHRoaXMpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgdGhpcy0+Y2xlYXIoKTsKLSAgICAgIE5ETkJPT1NUX1RSWSB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbl90b19vd24oZik7Ci0gICAgICB9IE5ETkJPT1NUX0NBVENIICguLi4pIHsKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICAgICAgTkROQk9PU1RfUkVUSFJPVzsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0NBVENIX0VORAotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICAKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgICAvLyBNb3ZlIGFzc2lnbm1lbnQgZnJvbSBhbm90aGVyIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OCi0gICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIG9wZXJhdG9yPShORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTiYmIGYpCi0gICAgewotICAgICAgCi0gICAgICBpZiAoJmYgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICB0aGlzLT5jbGVhcigpOwotICAgICAgTkROQk9PU1RfVFJZIHsKLSAgICAgICAgdGhpcy0+bW92ZV9hc3NpZ24oZik7Ci0gICAgICB9IE5ETkJPT1NUX0NBVENIICguLi4pIHsKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICAgICAgTkROQk9PU1RfUkVUSFJPVzsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0NBVENIX0VORAotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSNlbmRpZgotCi0gICAgdm9pZCBzd2FwKE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBvdGhlcikKLSAgICB7Ci0gICAgICBpZiAoJm90aGVyID09IHRoaXMpCi0gICAgICAgIHJldHVybjsKLQotICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04gdG1wOwotICAgICAgdG1wLm1vdmVfYXNzaWduKCp0aGlzKTsKLSAgICAgIHRoaXMtPm1vdmVfYXNzaWduKG90aGVyKTsKLSAgICAgIG90aGVyLm1vdmVfYXNzaWduKHRtcCk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgb3V0IGEgdGFyZ2V0LCBpZiB0aGVyZSBpcyBvbmUKLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICBpZiAodnRhYmxlKSB7Ci0gICAgICAgIGlmICghdGhpcy0+aGFzX3RyaXZpYWxfY29weV9hbmRfZGVzdHJveSgpKQotICAgICAgICAgIGdldF92dGFibGUoKS0+Y2xlYXIodGhpcy0+ZnVuY3Rvcik7Ci0gICAgICAgIHZ0YWJsZSA9IDA7Ci0gICAgICB9Ci0gICAgfQotCi0jaWYgKGRlZmluZWQgX19TVU5QUk9fQ0MpICYmIChfX1NVTlBST19DQyA8PSAweDUzMCkgJiYgIShkZWZpbmVkIE5ETkJPT1NUX05PX0NPTVBJTEVSX0NPTkZJRykKLSAgICAvLyBTdW4gQysrIDUuMyBjYW4ndCBoYW5kbGUgdGhlIHNhZmVfYm9vbCBpZGlvbSwgc28gZG9uJ3QgdXNlIGl0Ci0gICAgb3BlcmF0b3IgYm9vbCAoKSBjb25zdCB7IHJldHVybiAhdGhpcy0+ZW1wdHkoKTsgfQotI2Vsc2UKLSAgcHJpdmF0ZToKLSAgICBzdHJ1Y3QgZHVtbXkgewotICAgICAgdm9pZCBub25udWxsKCkge30KLSAgICB9OwotCi0gICAgdHlwZWRlZiB2b2lkIChkdW1teTo6KnNhZmVfYm9vbCkoKTsKLQotICBwdWJsaWM6Ci0gICAgb3BlcmF0b3Igc2FmZV9ib29sICgpIGNvbnN0Ci0gICAgICB7IHJldHVybiAodGhpcy0+ZW1wdHkoKSk/IDAgOiAmZHVtbXk6Om5vbm51bGw7IH0KLQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKLSAgICAgIHsgcmV0dXJuIHRoaXMtPmVtcHR5KCk7IH0KLSNlbmRpZgotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBhc3NpZ25fdG9fb3duKGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OJiBmKQotICAgIHsKLSAgICAgIGlmICghZi5lbXB0eSgpKSB7Ci0gICAgICAgIHRoaXMtPnZ0YWJsZSA9IGYudnRhYmxlOwotICAgICAgICBpZiAodGhpcy0+aGFzX3RyaXZpYWxfY29weV9hbmRfZGVzdHJveSgpKQotICAgICAgICAgIHRoaXMtPmZ1bmN0b3IgPSBmLmZ1bmN0b3I7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBnZXRfdnRhYmxlKCktPmJhc2UubWFuYWdlcihmLmZ1bmN0b3IsIHRoaXMtPmZ1bmN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb246OmNsb25lX2Z1bmN0b3JfdGFnKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgYXNzaWduX3RvKEZ1bmN0b3IgZikKLSAgICB7Ci0gICAgICB1c2luZyBkZXRhaWw6OmZ1bmN0aW9uOjp2dGFibGVfYmFzZTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZ1bmN0aW9uOjpnZXRfZnVuY3Rpb25fdGFnPEZ1bmN0b3I+Ojp0eXBlIHRhZzsKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjpmdW5jdGlvbjo6TkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8dGFnPiBnZXRfaW52b2tlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludm9rZXI6OgotICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIGFwcGx5PEZ1bmN0b3IsIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTPgotICAgICAgICBoYW5kbGVyX3R5cGU7Ci0gICAgICAKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFuZGxlcl90eXBlOjppbnZva2VyX3R5cGUgaW52b2tlcl90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBoYW5kbGVyX3R5cGU6Om1hbmFnZXJfdHlwZSBtYW5hZ2VyX3R5cGU7Ci0KLSAgICAgIC8vIE5vdGU6IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCB0aGlzIGluaXRpYWxpemF0aW9uIHVzZQotICAgICAgLy8gc3RhdGljIGluaXRpYWxpemF0aW9uLiBPdGhlcndpc2UsIHdlIHdpbGwgaGF2ZSBhIHJhY2UKLSAgICAgIC8vIGNvbmRpdGlvbiBoZXJlIGluIG11bHRpLXRocmVhZGVkIGNvZGUuIFNlZQotICAgICAgLy8gaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5saWIuYm9vc3QuZGV2ZWwvMTY0OTAyLy4KLSAgICAgIHN0YXRpYyBjb25zdCB2dGFibGVfdHlwZSBzdG9yZWRfdnRhYmxlID0gCi0gICAgICAgIHsgeyAmbWFuYWdlcl90eXBlOjptYW5hZ2UgfSwgJmludm9rZXJfdHlwZTo6aW52b2tlIH07Ci0KLSAgICAgIGlmIChzdG9yZWRfdnRhYmxlLmFzc2lnbl90byhmLCBmdW5jdG9yKSkgewotICAgICAgICBzdGQ6OnNpemVfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KCZzdG9yZWRfdnRhYmxlLmJhc2UpOwotICAgICAgICBpZiAobmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I8RnVuY3Rvcj46OnZhbHVlICYmCi0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxGdW5jdG9yPjo6dmFsdWUgJiYKLSAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OmZ1bmN0aW9uX2FsbG93c19zbWFsbF9vYmplY3Rfb3B0aW1pemF0aW9uPEZ1bmN0b3I+Ojp2YWx1ZSkKLSAgICAgICAgICB2YWx1ZSB8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KDB4MDEpOwotICAgICAgICB2dGFibGUgPSByZWludGVycHJldF9jYXN0PGRldGFpbDo6ZnVuY3Rpb246OnZ0YWJsZV9iYXNlICo+KHZhbHVlKTsKLSAgICAgIH0gZWxzZSAKLSAgICAgICAgdnRhYmxlID0gMDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLHR5cGVuYW1lIEFsbG9jYXRvcj4KLSAgICB2b2lkIGFzc2lnbl90b19hKEZ1bmN0b3IgZixBbGxvY2F0b3IgYSkKLSAgICB7Ci0gICAgICB1c2luZyBkZXRhaWw6OmZ1bmN0aW9uOjp2dGFibGVfYmFzZTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZ1bmN0aW9uOjpnZXRfZnVuY3Rpb25fdGFnPEZ1bmN0b3I+Ojp0eXBlIHRhZzsKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjpmdW5jdGlvbjo6TkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVI8dGFnPiBnZXRfaW52b2tlcjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludm9rZXI6OgotICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIGFwcGx5X2E8RnVuY3RvciwgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSAKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRvcj4KLSAgICAgICAgaGFuZGxlcl90eXBlOwotICAgICAgCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGhhbmRsZXJfdHlwZTo6aW52b2tlcl90eXBlIGludm9rZXJfdHlwZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFuZGxlcl90eXBlOjptYW5hZ2VyX3R5cGUgbWFuYWdlcl90eXBlOwotCi0gICAgICAvLyBOb3RlOiBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgdGhpcyBpbml0aWFsaXphdGlvbiB1c2UKLSAgICAgIC8vIHN0YXRpYyBpbml0aWFsaXphdGlvbi4gT3RoZXJ3aXNlLCB3ZSB3aWxsIGhhdmUgYSByYWNlCi0gICAgICAvLyBjb25kaXRpb24gaGVyZSBpbiBtdWx0aS10aHJlYWRlZCBjb2RlLiBTZWUKLSAgICAgIC8vIGh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAubGliLmJvb3N0LmRldmVsLzE2NDkwMi8uCi0gICAgICBzdGF0aWMgY29uc3QgdnRhYmxlX3R5cGUgc3RvcmVkX3Z0YWJsZSA9Ci0gICAgICAgIHsgeyAmbWFuYWdlcl90eXBlOjptYW5hZ2UgfSwgJmludm9rZXJfdHlwZTo6aW52b2tlIH07Ci0KLSAgICAgIGlmIChzdG9yZWRfdnRhYmxlLmFzc2lnbl90b19hKGYsIGZ1bmN0b3IsIGEpKSB7IAotICAgICAgICBzdGQ6OnNpemVfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpzaXplX3Q+KCZzdG9yZWRfdnRhYmxlLmJhc2UpOwotICAgICAgICBpZiAobmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I8RnVuY3Rvcj46OnZhbHVlICYmCi0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxGdW5jdG9yPjo6dmFsdWUgJiYKLSAgICAgICAgICAgIGRldGFpbDo6ZnVuY3Rpb246OmZ1bmN0aW9uX2FsbG93c19zbWFsbF9vYmplY3Rfb3B0aW1pemF0aW9uPEZ1bmN0b3I+Ojp2YWx1ZSkKLSAgICAgICAgICB2YWx1ZSB8PSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oMHgwMSk7Ci0gICAgICAgIHZ0YWJsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZGV0YWlsOjpmdW5jdGlvbjo6dnRhYmxlX2Jhc2UgKj4odmFsdWUpOwotICAgICAgfSBlbHNlIAotICAgICAgICB2dGFibGUgPSAwOwotICAgIH0KLQotICAgIC8vIE1vdmVzIHRoZSB2YWx1ZSBmcm9tIHRoZSBzcGVjaWZpZWQgYXJndW1lbnQgdG8gKnRoaXMuIElmIHRoZSBhcmd1bWVudCAKLSAgICAvLyBoYXMgaXRzIGZ1bmN0aW9uIG9iamVjdCBhbGxvY2F0ZWQgb24gdGhlIGhlYXAsIG1vdmVfYXNzaWduIHdpbGwgcGFzcyAKLSAgICAvLyBpdHMgYnVmZmVyIHRvICp0aGlzLCBhbmQgc2V0IHRoZSBhcmd1bWVudCdzIGJ1ZmZlciBwb2ludGVyIHRvIE5VTEwuIAotICAgIHZvaWQgbW92ZV9hc3NpZ24oTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT04mIGYpIAotICAgIHsgCi0gICAgICBpZiAoJmYgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICBORE5CT09TVF9UUlkgewotICAgICAgICBpZiAoIWYuZW1wdHkoKSkgewotICAgICAgICAgIHRoaXMtPnZ0YWJsZSA9IGYudnRhYmxlOwotICAgICAgICAgIGlmICh0aGlzLT5oYXNfdHJpdmlhbF9jb3B5X2FuZF9kZXN0cm95KCkpCi0gICAgICAgICAgICB0aGlzLT5mdW5jdG9yID0gZi5mdW5jdG9yOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdldF92dGFibGUoKS0+YmFzZS5tYW5hZ2VyKGYuZnVuY3RvciwgdGhpcy0+ZnVuY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbjo6bW92ZV9mdW5jdG9yX3RhZyk7Ci0gICAgICAgICAgZi52dGFibGUgPSAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgIH0gTkROQk9PU1RfQ0FUQ0ggKC4uLikgewotICAgICAgICB2dGFibGUgPSAwOwotICAgICAgICBORE5CT09TVF9SRVRIUk9XOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQ0FUQ0hfRU5ECi0gICAgfQotICB9OwotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci0gIGlubGluZSB2b2lkIHN3YXAoTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgPiYgZjEsCi0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9BUkdTCi0gICAgICAgICAgICAgICAgICAgPiYgZjIpCi0gIHsKLSAgICBmMS5zd2FwKGYyKTsKLSAgfQotCi0vLyBQb2lzb24gY29tcGFyaXNvbnMgYmV0d2VlbiBuZG5ib29zdDo6ZnVuY3Rpb24gb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQSBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUz4KLSAgdm9pZCBvcGVyYXRvcj09KGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OPAotICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+JiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OPAotICAgICAgICAgICAgICAgICAgICAgICAgICBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX1BBUk1TPgotICB2b2lkIG9wZXJhdG9yIT0oY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4mLAotICAgICAgICAgICAgICAgICAgY29uc3QgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT048Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4mICk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTl9OT19GVU5DVElPTl9UWVBFX1NZTlRBWCkKLQotI2lmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTID09IDAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fUEFSVElBTF9TUEVDIFIgKHZvaWQpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTl9QQVJUSUFMX1NQRUMgUiAoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MsVCkpCi0jZW5kaWYKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotICAgICAgICAgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfUEFSTVM+Ci1jbGFzcyBmdW5jdGlvbjxORE5CT09TVF9GVU5DVElPTl9QQVJUSUFMX1NQRUM+Ci0gIDogcHVibGljIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OPFIgTkROQk9PU1RfRlVOQ1RJT05fQ09NTUEgTkROQk9PU1RfRlVOQ1RJT05fVEVNUExBVEVfQVJHUz4KLXsKLSAgdHlwZWRlZiBORE5CT09TVF9GVU5DVElPTl9GVU5DVElPTjxSIE5ETkJPT1NUX0ZVTkNUSU9OX0NPTU1BIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1M+IGJhc2VfdHlwZTsKLSAgdHlwZWRlZiBmdW5jdGlvbiBzZWxmX3R5cGU7Ci0KLSAgc3RydWN0IGNsZWFyX3R5cGUge307Ci0KLXB1YmxpYzoKLQotICBmdW5jdGlvbigpIDogYmFzZV90eXBlKCkge30KLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICBmdW5jdGlvbihGdW5jdG9yIGYKLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgICAgICAgICx0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaW50ZWdyYWw8RnVuY3Rvcj46OnZhbHVlKT46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Pjo6dHlwZSA9IDAKLSNlbmRpZgotICAgICAgICAgICApIDoKLSAgICBiYXNlX3R5cGUoZikKLSAgewotICB9Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3IsdHlwZW5hbWUgQWxsb2NhdG9yPgotICBmdW5jdGlvbihGdW5jdG9yIGYsIEFsbG9jYXRvciBhCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICAgICAgICAgICAsdHlwZW5hbWUgZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2ludGVncmFsPEZ1bmN0b3I+Ojp2YWx1ZSk+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgIGludD46OnR5cGUgPSAwCi0jZW5kaWYKLSAgICAgICAgICAgKSA6Ci0gICAgYmFzZV90eXBlKGYsYSkKLSAgewotICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gIGZ1bmN0aW9uKGNsZWFyX3R5cGUqKSA6IGJhc2VfdHlwZSgpIHt9Ci0jZW5kaWYKLQotICBmdW5jdGlvbihjb25zdCBzZWxmX3R5cGUmIGYpIDogYmFzZV90eXBlKHN0YXRpY19jYXN0PGNvbnN0IGJhc2VfdHlwZSY+KGYpKXt9Ci0KLSAgZnVuY3Rpb24oY29uc3QgYmFzZV90eXBlJiBmKSA6IGJhc2VfdHlwZShzdGF0aWNfY2FzdDxjb25zdCBiYXNlX3R5cGUmPihmKSl7fQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gIC8vIE1vdmUgY29uc3RydWN0b3JzCi0gIGZ1bmN0aW9uKHNlbGZfdHlwZSYmIGYpOiBiYXNlX3R5cGUoc3RhdGljX2Nhc3Q8YmFzZV90eXBlJiY+KGYpKXt9Ci0gIGZ1bmN0aW9uKGJhc2VfdHlwZSYmIGYpOiBiYXNlX3R5cGUoc3RhdGljX2Nhc3Q8YmFzZV90eXBlJiY+KGYpKXt9Ci0jZW5kaWYKLSAgCi0gIHNlbGZfdHlwZSYgb3BlcmF0b3I9KGNvbnN0IHNlbGZfdHlwZSYgZikKLSAgewotICAgIHNlbGZfdHlwZShmKS5zd2FwKCp0aGlzKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICBzZWxmX3R5cGUmIG9wZXJhdG9yPShzZWxmX3R5cGUmJiBmKQotICB7Ci0gICAgc2VsZl90eXBlKHN0YXRpY19jYXN0PHNlbGZfdHlwZSYmPihmKSkuc3dhcCgqdGhpcyk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0jZW5kaWYgIAotCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotICB0eXBlbmFtZSBlbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgIChpc19pbnRlZ3JhbDxGdW5jdG9yPjo6dmFsdWUpPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgIHNlbGZfdHlwZSY+Ojp0eXBlCi0jZWxzZQotICBzZWxmX3R5cGUmCi0jZW5kaWYKLSAgb3BlcmF0b3I9KEZ1bmN0b3IgZikKLSAgewotICAgIHNlbGZfdHlwZShmKS5zd2FwKCp0aGlzKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY2xlYXJfdHlwZSopCi0gIHsKLSAgICB0aGlzLT5jbGVhcigpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotI2VuZGlmCi0KLSAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY29uc3QgYmFzZV90eXBlJiBmKQotICB7Ci0gICAgc2VsZl90eXBlKGYpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICAKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgc2VsZl90eXBlJiBvcGVyYXRvcj0oYmFzZV90eXBlJiYgZikKLSAgewotICAgIHNlbGZfdHlwZShzdGF0aWNfY2FzdDxiYXNlX3R5cGUmJj4oZikpLnN3YXAoKnRoaXMpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotI2VuZGlmIAotfTsKLQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUlRJQUxfU1BFQwotI2VuZGlmIC8vIGhhdmUgcGFydGlhbCBzcGVjaWFsaXphdGlvbgotCi19IC8vIGVuZCBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gQ2xlYW51cCBhZnRlciBvdXJzZWx2ZXMuLi4KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9WVEFCTEUKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9DT01NQQotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fRlVOQ1RJT05fSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1ZPSURfRlVOQ1RJT05fSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9PQkpfSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0ZVTkNUSU9OX1JFRl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9GVU5DVElPTl9SRUZfSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX01FTUJFUl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fVk9JRF9NRU1CRVJfSU5WT0tFUgotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX0dFVF9GVU5DVElPTl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX09CSl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0ZVTkNUSU9OX1JFRl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX01FTV9GVU5DVElPTl9JTlZPS0VSCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fR0VUX0lOVk9LRVIKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9URU1QTEFURV9QQVJNUwotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1MKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9QQVJNUwotI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX1BBUk0KLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9BUkdTCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fQVJHX1RZUEUKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9BUkdfVFlQRVMKLSN1bmRlZiBORE5CT09TVF9GVU5DVElPTl9WT0lEX1JFVFVSTl9UWVBFCi0jdW5kZWYgTkROQk9PU1RfRlVOQ1RJT05fUkVUVVJOCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYgICAgICAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2Z1bmN0aW9uX3R5cGVvZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYzA3NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl90eXBlb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLy8gQm9vc3QuRnVuY3Rpb24gbGlicmFyeSAtIFR5cGVvZiBzdXBwb3J0Ci0vLyAgQ29weXJpZ2h0IChDKSBEb3VnbGFzIEdyZWdvciAyMDA4Ci0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTl9UWVBFT0ZfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OX1RZUEVPRl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi9mdW5jdGlvbl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwPgotCi0jaW5jbHVkZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKG5kbmJvb3N0OjpiYWRfZnVuY3Rpb25fY2FsbCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OX05PX0ZVTkNUSU9OX1RZUEVfU1lOVEFYKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbiwgKHR5cGVuYW1lKSkKLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uMCwgKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb24xLCAodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb24yLCAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uMywgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uNCwgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKG5kbmJvb3N0OjpmdW5jdGlvbjUsIAotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uNiwgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uNywgCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkKLSAgKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb244LCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKQotICAodHlwZW5hbWUpKHR5cGVuYW1lKSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURShuZG5ib29zdDo6ZnVuY3Rpb245LCAKLSAgKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKQotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUobmRuYm9vc3Q6OmZ1bmN0aW9uMTAsIAotICAodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkodHlwZW5hbWUpCi0gICh0eXBlbmFtZSkodHlwZW5hbWUpKHR5cGVuYW1lKSh0eXBlbmFtZSkpCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZ2VuX2Z1bmN0aW9uX04ucGwgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uL2dlbl9mdW5jdGlvbl9OLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Y0NDAxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb24vZ2VuX2Z1bmN0aW9uX04ucGwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLSMKLSMgQm9vc3QuRnVuY3Rpb24gbGlicmFyeQotIwotIyBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwMS0yMDAzLiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLSMgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLSMgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMKLSMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotdXNlIEVuZ2xpc2g7Ci0KLWlmICgkI0FSR1YgPCAwKSB7Ci0gIHByaW50ICJVc2FnZTogcGVybCBnZW5fZnVuY3Rpb25fTiA8bnVtYmVyIG9mIGFyZ3VtZW50cz5cbiI7Ci0gIGV4aXQ7Ci19Ci0KLQotJHRvdGFsTnVtQXJncyA9ICRBUkdWWzBdOwotZm9yICgkbnVtQXJncyA9IDA7ICRudW1BcmdzIDw9ICR0b3RhbE51bUFyZ3M7ICsrJG51bUFyZ3MpIHsKLSAgb3BlbiBPVVQsICI+ZnVuY3Rpb24kbnVtQXJncy5ocHAiOwotICBwcmludCBPVVQgIiNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fTlVNX0FSR1MgJG51bUFyZ3NcbiI7Ci0gIHByaW50IE9VVCAiI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uL2RldGFpbC9tYXliZV9pbmNsdWRlLmhwcD5cbiI7Ci0gIHByaW50IE9VVCAiI3VuZGVmIE5ETkJPT1NUX0ZVTkNUSU9OX05VTV9BUkdTXG4iOwotICBjbG9zZSBPVVQ7Ci19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2U2MTJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDA0LgotLy8gIENvcHlyaWdodCAyMDA1IFBldGVyIERpbW92Ci0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8KLS8vICB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTl9FUVVBTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05fRVFVQUxfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEc+Ci0gIGJvb2wgZnVuY3Rpb25fZXF1YWxfaW1wbChjb25zdCBGJiBmLCBjb25zdCBHJiBnLCBsb25nKQotICB7IHJldHVybiBmID09IGc7IH0KLQotLy8gZnVuY3Rpb25fZXF1YWxfaW1wbCBuZWVkcyB0byBiZSB1bnF1YWxpZmllZCB0byBwaWNrCi0vLyB1c2VyIG92ZXJsb2FkcyBvbiB0d28tcGhhc2UgY29tcGlsZXJzCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lIEc+Ci0gIGJvb2wgZnVuY3Rpb25fZXF1YWwoY29uc3QgRiYgZiwgY29uc3QgRyYgZykKLSAgeyByZXR1cm4gZnVuY3Rpb25fZXF1YWxfaW1wbChmLCBnLCAwKTsgfQotCi19IC8vIGVuZCBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OX0VRVUFMX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZWMxMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzMSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfQ09NUE9ORU5UU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfQ09NUE9ORU5UU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTY1KQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iaXRhbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9mcm9udC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYWR2YW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvam9pbnRfdmlldy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29weS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyLmhwcD4KLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX05PX0NWX0ZVTkNfU1VQUE9SVAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9yZW1vdmUuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29uZmlnLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaWYgICBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCAxMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCAyMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCAzMAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCA0MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHA+Ci0jICAgZWxpZiBORE5CT09TVF9GVF9NQVhfQVJJVFkgPCA1MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHA+Ci0jICAgZW5kaWYKLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NfdHJhbnNmb3JtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcD4KLQotLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLSAgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIAotICB7Ci0KLSAgICB1c2luZyBtcGw6OnBsYWNlaG9sZGVyczo6XzsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBDbGFzc1R5cGVUcmFuc2Zvcm0gPSBhZGRfcmVmZXJlbmNlPF8+ID4gCi0gICAgc3RydWN0IGNvbXBvbmVudHM7Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIAotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+IHN0cnVjdCBjb21wb25lbnRzX2ltcGw7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTY1KQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgT3JpZ1QsIHR5cGVuYW1lIEw+IHN0cnVjdCBjb21wb25lbnRzX2JjYzsKLSNlbmRpZgotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENsYXNzVHlwZVRyYW5zZm9ybT4gCi0gICAgc3RydWN0IGNvbXBvbmVudHMKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTY1KQotICAgICAgOiBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxULCBDbGFzc1R5cGVUcmFuc2Zvcm0+Ci0jZWxzZQotICAgICAgOiBkZXRhaWw6OmNvbXBvbmVudHNfYmNjPHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSxULAotICAgICAgICAgICAgQ2xhc3NUeXBlVHJhbnNmb3JtPgotI2VuZGlmCi0gICAgeyAKLSAgICAgIHR5cGVkZWYgY29tcG9uZW50czxULENsYXNzVHlwZVRyYW5zZm9ybT4gdHlwZTsKLQotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGNvbXBvbmVudHMsKFQsQ2xhc3NUeXBlVHJhbnNmb3JtKSkKLSAgICB9OwotCi0vLyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQotCi0gIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgc3RydWN0IGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZzsgCi0KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OnZlY3RvcjA8PiB0eXBlczsKLSAgICAgIHR5cGVkZWYgdm9pZCBmdW5jdGlvbl9hcml0eTsKLQotICAgICAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PDA+IGJpdHM7Ci0gICAgICB0eXBlZGVmIGRldGFpbDo6Y29uc3RhbnQ8MD4gbWFzazsKLQotICAgICAgdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZQotICAgIDwgdHlwZW5hbWUgQ29tcG9uZW50cwotICAgICwgdHlwZW5hbWUgSWZUYWdnZWQKLSAgICAsIHR5cGVuYW1lIFRoZW5UYWcKLSAgICAsIHR5cGVuYW1lIERlZmF1bHRCYXNlID0gY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgPgotICAgIHN0cnVjdCByZXRhZ2dlZF9pZgotICAgICAgOiBtcGw6OmlmXwotICAgICAgICA8IGRldGFpbDo6cmVwcmVzZW50c19pbXBsPENvbXBvbmVudHMsIElmVGFnZ2VkPgotICAgICAgICAsIGRldGFpbDo6Y2hhbmdlZF90YWc8Q29tcG9uZW50cyxJZlRhZ2dlZCxUaGVuVGFnPgotICAgICAgICAsIERlZmF1bHRCYXNlCi0gICAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLSAgICAvLyBXZSBkZXRlY3QgcGxhaW4gZnVuY3Rpb24gdHlwZXMgYW5kIGZ1bmN0aW9uIHJlZmVyZW5jZXMgYXMgZnVuY3Rpb24gCi0gICAgLy8gcG9pbnRlcnMgYnkgcmVjdXJzaXZlIGluc3RhbnRpYXRpb24gb2YgY29tcG9uZW50c19pbXBsLiAKLSAgICAvLyBUaGUgdGhpcmQgc3BlY2lhbGl6YXRpb24gb2YgY29tcG9uZW50c19pbXBsIG1ha2VzIHN1cmUgdGhlIHJlY3Vyc2lvbiAKLSAgICAvLyB0ZXJtaW5hdGVzICh3aGVuIGFkZGluZyBwb2ludGVycykuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsCi0gICAgICA6IGRldGFpbDo6cmV0YWdnZWRfaWYKLSAgICAgICAgPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxUKixMPgotICAgICAgICAsIHBvaW50ZXJfdGFnLCAvKiAtLT4gKi8gZnVuY3Rpb25fdGFnID4KLSAgICB7IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQmLCBMPgotICAgICAgOiBkZXRhaWw6OnJldGFnZ2VkX2lmCi0gICAgICAgIDwgZGV0YWlsOjpjb21wb25lbnRzX2ltcGw8VCosTD4KLSAgICAgICAgLCBwb2ludGVyX3RhZywgLyogLS0+ICovIHJlZmVyZW5jZV90YWcgPgotICAgIHsgfTsKLQotI2lmICFORE5CT09TVF9GVF9OT19DVl9GVU5DX1NVUFBPUlQKLSAgICAvLyBSZXRyeSB0aGUgdHlwZSB3aXRoIGEgbWVtYmVyIHBvaW50ZXIgYXR0YWNoZWQgdG8gZGV0ZWN0IGN2IGZ1bmN0aW9ucwotICAgIGNsYXNzIGFfY2xhc3M7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjdl9mdW5jX2Jhc2UKLSAgICAgIDogZGV0YWlsOjpyZXRhZ2dlZF9pZjxCYXNlLG1lbWJlcl9wb2ludGVyX3RhZyxmdW5jdGlvbl90YWc+Ci0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICBtcGw6OnJlbW92ZQotICAgICAgICAgIDwgdHlwZW5hbWUgQmFzZTo6dHlwZXMKLSAgICAgICAgICAsIHR5cGVuYW1lIGRldGFpbDo6Y2xhc3NfdHJhbnNmb3JtPGFfY2xhc3MsTD46OnR5cGU+Ojp0eXBlCi0gICAgICB0eXBlczsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqLCBMPgotICAgICAgOiBtcGw6OmlmXwotICAgICAgICA8IGRldGFpbDo6cmVwcmVzZW50c19pbXBsPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxUIGFfY2xhc3M6OiosIEw+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG1lbWJlcl9wb2ludGVyX3RhZyA+Ci0gICAgICAgICwgZGV0YWlsOjpjdl9mdW5jX2Jhc2U8IGRldGFpbDo6Y29tcG9uZW50c19pbXBsPFQgYV9jbGFzczo6KiwgTD4sIFQsIEw+Ci0gICAgICAgICwgY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCBhX2NsYXNzOjoqLCBMPgotICAgICAgOiBjb21wb25lbnRzX25vbl9mdW5jX2Jhc2UKLSAgICB7IH07Ci0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUKiwgTD4KLSAgICAgIDogY29tcG9uZW50c19ub25fZnVuY19iYXNlCi0gICAgeyB9OyAKLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqIGNvbnN0LCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQqLEw+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqIHZvbGF0aWxlLCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQqLEw+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQqIGNvbnN0IHZvbGF0aWxlLCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQqLEw+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19pbXBsPFQgY29uc3QsIEw+IAotICAgICAgOiBjb21wb25lbnRzX2ltcGw8VCxMPgotICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUIHZvbGF0aWxlLCBMPiAKLSAgICAgIDogY29tcG9uZW50c19pbXBsPFQsTD4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCBjb25zdCB2b2xhdGlsZSwgTD4gCi0gICAgICA6IGNvbXBvbmVudHNfaW1wbDxULEw+Ci0gICAgeyB9OwotCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQKLSAgICB7IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCwgQyBjb25zdD4KLSAgICB7IHR5cGVkZWYgVCBjb25zdCAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCwgQyB2b2xhdGlsZT4KLSAgICB7IHR5cGVkZWYgVCB2b2xhdGlsZSAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCwgQyBjb25zdCB2b2xhdGlsZT4KLSAgICB7IHR5cGVkZWYgVCBjb25zdCB2b2xhdGlsZSAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCAmLCBDPgotICAgIHsgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEM+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxUICYsIEMgY29uc3Q+Ci0gICAgeyB0eXBlZGVmIFQgJiB0eXBlOyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MgQz4KLSAgICBzdHJ1Y3QgbWVtYmVyX29ial9wdHJfcmVzdWx0PFQgJiwgQyB2b2xhdGlsZT4KLSAgICB7IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDPgotICAgIHN0cnVjdCBtZW1iZXJfb2JqX3B0cl9yZXN1bHQ8VCAmLCBDIGNvbnN0IHZvbGF0aWxlPgotICAgIHsgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIEMsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IG1lbWJlcl9vYmpfcHRyX2NvbXBvbmVudHMKLSAgICAgIDogbWVtYmVyX29iamVjdF9wb2ludGVyX2Jhc2UKLSAgICB7Ci0gICAgICB0eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPFQgQzo6KiwgTD4gdHlwZTsKLSAgICAgIHR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLQotICAgICAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMT4gZnVuY3Rpb25fYXJpdHk7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjp2ZWN0b3IyPCB0eXBlbmFtZSBkZXRhaWw6Om1lbWJlcl9vYmpfcHRyX3Jlc3VsdDxULEM+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y2xhc3NfdHJhbnNmb3JtPEMsTD46OnR5cGUgPiB0eXBlczsKLSAgICB9OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU2NSkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdmFyaWF0aW9ucyBORE5CT09TVF9GVF9wb2ludGVyfE5ETkJPT1NUX0ZUX21lbWJlcl9wb2ludGVyCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBDLCB0eXBlbmFtZSBMPgotICAgIHN0cnVjdCBjb21wb25lbnRzX2ltcGw8VCBDOjoqLCBMPgotICAgICAgOiBtZW1iZXJfb2JqX3B0cl9jb21wb25lbnRzPFQsQyxMPgotICAgIHsgfTsKLQotI2Vsc2UgIAotIyAgIGRlZmluZSBORE5CT09TVF9GVF92YXJpYXRpb25zIE5ETkJPT1NUX0ZUX3BvaW50ZXIKLQotICAgIC8vIFRoaXMgd29ya2Fyb3VuZCByZW1vdmVzIHRoZSBtZW1iZXIgcG9pbnRlciBmcm9tIHRoZSB0eXBlIHRvIGFsbG93IAotICAgIC8vIGRldGVjdGlvbiBvZiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aCBCQ0MuIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IGNvbXBvbmVudHNfaW1wbDxUIEM6OiosIEw+Ci0gICAgICA6IGRldGFpbDo6cmV0YWdnZWRfaWYKLSAgICAgICAgPCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlICosIEw+Ci0gICAgICAgICwgcG9pbnRlcl90YWcsIC8qIC0tPiAqLyBtZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl90YWcKLSAgICAgICAgLCBtZW1iZXJfb2JqX3B0cl9jb21wb25lbnRzPFQsQyxMPiA+Ci0gICAgeyB9OwotCi0gICAgLy8gQkNDIGxldHMgdXMgdGVzdCB0aGUgY3YtcXVhbGlmaWNhdGlvbiBvZiBhIGZ1bmN0aW9uIHR5cGUgYnkgdGVtcGxhdGUgCi0gICAgLy8gcGFydGlhbCBzcGVjaWFsaXphdGlvbiAtIHNvIHdlIHVzZSB0aGlzIGJ1ZyBmZWF0dXJlIHRvIGZpbmQgb3V0IHRoZSAKLSAgICAvLyBtZW1iZXIgZnVuY3Rpb24ncyBjdi1xdWFsaWZpY2F0aW9uICh1bmZvcnR1bmF0ZWx5IHRoZXJlIGFyZSBzb21lIAotICAgIC8vIGludmlzaWJsZSBtb2RpZmllcnMgdGhhdCBpbXBvc2Ugc29tZSBsaW1pdGF0aW9ucyBvbiB0aGVzZSB0eXBlcyBldmVuIGlmCi0gICAgLy8gd2UgcmVtb3ZlIHRoZSBxdWFsaWZpZXJzLCBTbyB3ZSBjYW5ub3QgZXhwbG9pdCB0aGUgc2FtZSBidWcgdG8gbWFrZSB0aGUgCi0gICAgLy8gbGlicmFyeSB3b3JrIGZvciBjdi1xdWFsaWZpZWQgZnVuY3Rpb24gdHlwZXMpLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBlbmNvZGVfY3YKLSAgICB7IHR5cGVkZWYgY2hhciAoJiB0eXBlKVsxXTsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDEpOyB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBlbmNvZGVfY3Y8VCBjb25zdCAqPgotICAgIHsgdHlwZWRlZiBjaGFyICgmIHR5cGUpWzJdOyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMik7IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGVuY29kZV9jdjxUIHZvbGF0aWxlICo+Ci0gICAgeyB0eXBlZGVmIGNoYXIgKCYgdHlwZSlbM107IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAzKTsgfTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZW5jb2RlX2N2PFQgY29uc3Qgdm9sYXRpbGUgKj4gCi0gICAgeyB0eXBlZGVmIGNoYXIgKCYgdHlwZSlbNF07IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSA0KTsgfTsKLQotICAgIC8vIEZvciBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcnMgd2UgaGF2ZSB0byB1c2UgYSBmdW5jdGlvbiB0ZW1wbGF0ZSAocGFydGlhbAotICAgIC8vIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGZvciBhIG1lbWJlciBwb2ludGVyIGRyb3BzIHRoZSBjdiBxdWFsaWZpY2F0aW9uIAotICAgIC8vIG9mIHRoZSBmdW5jdGlvbiB0eXBlKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgotICAgIHR5cGVuYW1lIGVuY29kZV9jdjxUICo+Ojp0eXBlIG1mcF9jdl90ZXN0ZXIoVCBDOjoqKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBlbmNvZGVfbWZwX2N2Ci0gICAgeyAKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoZGV0YWlsOjptZnBfY3ZfdGVzdGVyKChUKTBMKSkpOyAKLSAgICB9OwotCi0gICAgLy8gQXNzb2NpYXRlIGJpdHMgd2l0aCB0aGUgQ1YgY29kZXMgYWJvdmUuCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3Q+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdGFnX21mcAotICAgICAgOiBkZXRhaWw6OmN2X3RhZ19tZnBfaW1wbAotICAgICAgICA8IDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmVuY29kZV9tZnBfY3Y8VD46OnZhbHVlID4KLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8MT4gOiBub25fY3YgICAgICAgICAgICAgIHsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8Mj4gOiBjb25zdF9ub25fdm9sYXRpbGUgIHsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8Mz4gOiB2b2xhdGlsZV9ub25fY29uc3QgIHsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBjdl90YWdfbWZwX2ltcGw8ND4gOiBjdl9xdWFsaWZpZWQgICAgICAgIHsgfTsKLQotICAgIC8vIE1ldGFmdW5jdGlvbiB0byBkZWNvZGUgdGhlIGN2IGNvZGUgYW5kIGFwcGx5IGl0IHRvIGEgdHlwZS4KLSAgICAvLyBXZSBhZGQgYSBwb2ludGVyLCBiZWNhdXNlIG90aGVyd2lzZSBjdi1xdWFsaWZpZXJzIHdvbid0IHN0aWNrIChhbm90aGVyIGJ1ZykuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgQ1Y+IHN0cnVjdCBkZWNvZGVfY3Y7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZGVjb2RlX2N2PFQsMT4gOiBtcGw6OmlkZW50aXR5PFQgKj4gICAgICAgICAge307Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGRlY29kZV9jdjxULDI+IDogbXBsOjppZGVudGl0eTxUIGNvbnN0ICo+ICAgIHt9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBkZWNvZGVfY3Y8VCwzPiA6IG1wbDo6aWRlbnRpdHk8VCB2b2xhdGlsZSAqPiB7fTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZGVjb2RlX2N2PFQsND4gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbXBsOjppZGVudGl0eTxUIGNvbnN0IHZvbGF0aWxlICo+IHt9OwotCi0gICAgLy8gVGhlIGNsYXNzIHR5cGUgdHJhbnNmb3JtYXRpb24gY29tZXMgYWZ0ZXIgYWRkaW5nIGN2LXF1YWxpZmllcnMuIFdlIGhhdmUKLSAgICAvLyB3cmFwIGl0IHRvIHJlbW92ZSB0aGUgcG9pbnRlciBhZGRlZCBpbiBkZWNvZGVfY3ZfaW1wbC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMPiBzdHJ1Y3QgYmNjX2NsYXNzX3RyYW5zZm9ybV9pbXBsOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+IHN0cnVjdCBiY2NfY2xhc3NfdHJhbnNmb3JtX2ltcGw8VCAqLCBMPgotICAgICAgOiBjbGFzc190cmFuc2Zvcm08VCxMPiAKLSAgICB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBELCB0eXBlbmFtZSBMPiBzdHJ1Y3QgYmNjX2NsYXNzX3RyYW5zZm9ybSAKLSAgICAgIDogYmNjX2NsYXNzX3RyYW5zZm9ybV9pbXBsCi0gICAgICAgIDwgdHlwZW5hbWUgZGVjb2RlX2N2Ci0gICAgICAgICAgPCBUCi0gICAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjplbmNvZGVfbWZwX2N2PEQ+Ojp2YWx1ZSAKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgTAotICAgICAgICA+IAotICAgIHsgfTsKLQotICAgIC8vIEFmdGVyIGV4dHJhY3RpbmcgdGhlIG1lbWJlciBwb2ludGVlIGZyb20gdGhlIHR5cGUgdGhlIGNsYXNzIHR5cGUgaXMgc3RpbGwKLSAgICAvLyBpbiB0aGUgdHlwZSAoc29tZXdoZXJlIC0tIHlvdSB3b24ndCBzZWUgd2l0aCBSVFRJLCB0aGF0IGlzKSBhbmQgdGhhdCB0eXBlCi0gICAgLy8gaXMgZmxhZ2dlZCB1bnVzYWJsZSBhbmQgKm5vdCogaWRlbnRpY2FsIHRvIHRoZSBub25tZW1iZXIgZnVuY3Rpb24gdHlwZS4KLSAgICAvLyBXZSBjYW4sIGhvd2V2ZXIsIGRlY29tcG9zZSB0aGlzIHR5cGUgdmlhIGNvbXBvbmVudHNfaW1wbCBidXQgc3VycHJpc2luZ2x5Ci0gICAgLy8gYSBwb2ludGVyIHRvIHRoZSBjb25zdCBxdWFsaWZpZWQgY2xhc3MgdHlwZSBwb3BzIHVwIGFnYWluIGFzIHRoZSBmaXJzdCAKLSAgICAvLyBwYXJhbWV0ZXIgdHlwZS4gCi0gICAgLy8gV2UgaGF2ZSB0byByZXBsYWNlIHRoaXMgdHlwZSB3aXRoIHRoZSBwcm9wZXJseSBjdi1xdWFsaWZpZWQgYW5kIAotICAgIC8vIHRyYW5zZm9ybWVkIGNsYXNzIHR5cGUsIGludGVncmF0ZSB0aGUgY3YgcXVhbGlmaWNhdGlvbiBpbnRvIHRoZSBiaXRzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIE1GUCwgdHlwZW5hbWUgT3JpZ1QsIHR5cGVuYW1lIEw+Ci0gICAgc3RydWN0IG1mcF9jb21wb25lbnRzOwotCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBPcmlnVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgbWZwX2NvbXBvbmVudHM8QmFzZSxUIEM6OiosT3JpZ1QsTD4gCi0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZnJvbnQ8dHlwZW5hbWUgQmFzZTo6dHlwZXM+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJjY19jbGFzc190cmFuc2Zvcm08QyxPcmlnVCxMPjo6dHlwZSBjbGFzc190eXBlOwotCi0gICAgICB0eXBlZGVmIG1wbDo6dmVjdG9yMjxyZXN1bHRfdHlwZSwgY2xhc3NfdHlwZT4gcmVzdWx0X2FuZF9jbGFzc190eXBlOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICBtcGw6OmFkdmFuY2UKLSAgICAgICAgPCB0eXBlbmFtZSBtcGw6OmJlZ2luPHR5cGVuYW1lIEJhc2U6OnR5cGVzPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6aWZfCi0gICAgICAgICAgPCBtcGw6OmVxdWFsX3RvPCB0eXBlbmFtZSBkZXRhaWw6OmNsYXNzaWZpZXI8T3JpZ1Q+OjpmdW5jdGlvbl9hcml0eQotICAgICAgICAgICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgQmFzZTo6ZnVuY3Rpb25fYXJpdHkgPgotICAgICAgICAgICwgbXBsOjppbnRlZ3JhbF9jPGludCwyPiAsIG1wbDo6aW50ZWdyYWxfYzxpbnQsMT4gCi0gICAgICAgICAgPjo6dHlwZQotICAgICAgICA+Ojp0eXBlCi0gICAgICBmcm9tOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmVuZDx0eXBlbmFtZSBCYXNlOjp0eXBlcz46OnR5cGUgdG87Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjppdGVyYXRvcl9yYW5nZTxmcm9tLHRvPiBwYXJhbV90eXBlczsKLQotICAgICAgdHlwZWRlZiBtcGw6OmpvaW50X3ZpZXc8IHJlc3VsdF9hbmRfY2xhc3NfdHlwZSwgcGFyYW1fdHlwZXM+IHR5cGVzX3ZpZXc7Ci0gICAgcHVibGljOgotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICBtcGw6OnJldmVyc2VfY29weTx0eXBlc192aWV3LCBtcGw6OmZyb250X2luc2VydGVyPCBtcGw6OnZlY3RvcjA8PiA+ID46OnR5cGUgCi0gICAgICB0eXBlczsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgZnVuY3Rpb25fdHlwZXM6OnRhZzwgQmFzZSwgZGV0YWlsOjpjdl90YWdfbWZwPE9yaWdUPiA+OjpiaXRzIAotICAgICAgYml0czsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlOjptYXNrIG1hc2s7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjbGFzc2lmaWVyPE9yaWdUPjo6ZnVuY3Rpb25fYXJpdHkgZnVuY3Rpb25fYXJpdHk7Ci0KLSAgICAgIHR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLSAgICB9OwotCi0gICAgLy8gTm93IHB1dCBpdCBhbGwgdG9nZXRoZXI6IGRldGVjdCBjdi1xdWFsaWZpY2F0aW9uIG9mIGZ1bmN0aW9uIHR5cGVzIGFuZCBkbwotICAgIC8vIHRoZSB3ZWlyZCB0cmFuc2Zvcm1hdGlvbnMgYWJvdmUgZm9yIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBPcmlnVCwgdHlwZW5hbWUgTD4KLSAgICBzdHJ1Y3QgY29tcG9uZW50c19iY2MKLSAgICAgIDogbXBsOjppZl8KLSAgICAgICAgPCBkZXRhaWw6OnJlcHJlc2VudHNfaW1wbDwgZGV0YWlsOjpjb21wb25lbnRzX2ltcGw8VCxMPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBtZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl90YWc+Ci0gICAgICAgICwgZGV0YWlsOjptZnBfY29tcG9uZW50czxkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxULEw+LFQsT3JpZ1QsTD4KLSAgICAgICAgLCBkZXRhaWw6OmNvbXBvbmVudHNfaW1wbDxULEw+Ci0gICAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLSNlbmRpZiAvLyBlbmQgb2YgQk9STEFORCBXT1JLQVJPVU5ECi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfYWxfcGF0aCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwPgotCi0gIH0gfSAvLyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHMpCi0KLX0gLy8gbmFtZXNwYWNlIDo6Ym9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2FzX21wbF9zZXF1ZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwPgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjIwYTBhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NjX25hbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9DT05GSUdfQ0NfTkFNRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTkZJR19DQ19OQU1FU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9GVF9CVUlMVElOX0NDX05BTUVTIFwKLSAgKCggSU1QTElDSVQgICAgICAgICAgICwgaW1wbGljaXRfY2MgLCBORE5CT09TVF9QUF9FTVBUWSAgICAgICAgICAgICAgICApKVwKLSAgKCggQ0RFQ0wgICAgICAgICAgICAgICwgY2RlY2xfY2MgICAgLCBORE5CT09TVF9QUF9JREVOVElUWShfX2NkZWNsICAgKSApKVwKLSAgKCggU1REQ0FMTCAgICAgICAgICAgICwgc3RkY2FsbF9jYyAgLCBORE5CT09TVF9QUF9JREVOVElUWShfX3N0ZGNhbGwgKSApKVwKLSAgKCggUEFTQ0FMICAgICAgICAgICAgICwgcGFzY2FsX2NjICAgLCBORE5CT09TVF9QUF9JREVOVElUWShwYXNjYWwgICAgKSApKVwKLSAgKCggRkFTVENBTEwgICAgICAgICAgICwgZmFzdGNhbGxfY2MgLCBORE5CT09TVF9QUF9JREVOVElUWShfX2Zhc3RjYWxsKSApKVwKLSAgKCggQ0xSQ0FMTCAgICAgICAgICAgICwgY2xyY2FsbF9jYyAgLCBORE5CT09TVF9QUF9JREVOVElUWShfX2NscmNhbGwgKSApKVwKLSAgKCggVEhJU0NBTEwgICAgICAgICAgICwgdGhpc2NhbGxfY2MgLCBORE5CT09TVF9QUF9JREVOVElUWShfX3RoaXNjYWxsKSApKVwKLSAgKCggSU1QTElDSVRfVEhJU0NBTEwgICwgdGhpc2NhbGxfY2MgLCBORE5CT09TVF9QUF9FTVBUWSAgICAgICAgICAgICAgICApKSAKLQotLy8gYXBwZW5kIHVzZXItZGVmaW5lZCBjYyBuYW1lcyB0byBidWlsdGluIG9uZXMKLSNpZmRlZiBORE5CT09TVF9GVF9DQ19OQU1FUyAKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfTkFNRVNfU0VRIE5ETkJPT1NUX0ZUX0JVSUxUSU5fQ0NfTkFNRVMgTkROQk9PU1RfRlRfQ0NfTkFNRVMKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfUFJFUFJPQ0VTU0lORyAxCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19OQU1FU19TRVEgTkROQk9PU1RfRlRfQlVJTFRJTl9DQ19OQU1FUwotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb21waWxlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb21waWxlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MTcwYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29tcGlsZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9DT05GSUdfQ09NUElMRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTkZJR19DT01QSUxFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotCi0jICAgaWYgTkROQk9PU1RfTVNWQyA8IDEzMTAKLSMgICAgIGVycm9yICJ1bnN1cHBvcnRlZCBjb21waWxlciB2ZXJzaW9uIgotIyAgIGVuZGlmCi0KLSMgICBpZmRlZiBORE5CT09TVF9GVF9BVVRPREVURUNUX0NBTExJTkdfQ09OVkVOVElPTlMKLQotICAgICAgLy8gZW5hYmxlIGNscmNhbGwgY2FsbGluZyBjb3ZlbnRpb24gKGNhbGwgdG8gLk5FVCBtYW5hZ2VkIGNvZGUpIHdoZW4KLSAgICAgIC8vIGNvbXBpbGluZyB3aXRoIC9jbHIgCi0jICAgICBpZiBORE5CT09TVF9NU1ZDID49IDE0MDAgJiYgZGVmaW5lZChfX2NwbHVzcGx1c19jbGkpCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19DTFJDQUxMCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19DTFJDQUxMIGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0KLSAgICAgIC8vIEludGVsIHg4NiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY2FsbGluZyBjb252ZW50aW9ucwotIyAgICAgaWZkZWYgX01fSVg4NgotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MgY2FsbGFibGVfYnVpbHRpbgotIyAgICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTQwMAotICAgICAgICAgIC8vIHZlcnNpb24gNy4xIGlzIG1pc3NpbmcgYSBrZXl3b3JkIHRvIHNwZWNpZnkgdGhlIHRoaXNjYWxsIGNjIC4uLgotIyAgICAgICAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19JTVBMSUNJVF9USElTQ0FMTAotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19JTVBMSUNJVF9USElTQ0FMTCBub25fdmFyaWFkaWN8bWVtYmVyfGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgICBpZm5kZWYgTkROQk9PU1RfRlRfQ09ORklHX09LCi0jICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiSU5GT3wgL0dkIC9HciAvR3ogd2lsbCBjb21waWxlciBvcHRpb25zIHdpbGwgY2F1c2UiKQotIyAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIklORk98IGEgY29tcGlsZSBlcnJvci4iKQotIyAgICAgICAgICAgcHJhZ21hIG1lc3NhZ2UoIklORk98IFJlY29uZmlndXJlIEJvb3N0LkZ1bmN0aW9uVHlwZXMgaW4gdGhpcyBjYXNlLiIpCi0jICAgICAgICAgICBwcmFnbWEgbWVzc2FnZSgiSU5GT3wgVGhpcyBtZXNzYWdlIGNhbiBiZSBzdXBwcmVzc2VkIGJ5IGRlZmluaW5nIikKLSMgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJJTkZPfCBORE5CT09TVF9GVF9DT05GSUdfT0suIikKLSMgICAgICAgICBlbmRpZgotIyAgICAgICAgIGVuZGlmCi0jICAgICAgIGVsc2UgCi0gICAgICAgICAgLy8gLi4uaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDgKLSMgICAgICAgICBpZm5kZWYgTkROQk9PU1RfRlRfQ0NfVEhJU0NBTEwKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfVEhJU0NBTEwgbm9uX3ZhcmlhZGljfG1lbWJlcnxjYWxsYWJsZV9idWlsdGluCi0jICAgICAgICAgZW5kaWYKLSMgICAgICAgZW5kaWYKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfSU5URUxfTElOVVgpCi0KLSMgICBpZiBfX0dOVUNfXyA8IDMKLSMgICAgIGVycm9yICJ1bnN1cHBvcnRlZCBjb21waWxlciB2ZXJzaW9uIgotIyAgIGVuZGlmCi0KLSMgICBpZmRlZiBORE5CT09TVF9GVF9BVVRPREVURUNUX0NBTExJTkdfQ09OVkVOVElPTlMKLQotIyAgICAgaWYgZGVmaW5lZChfX2kzODZfXykKLSMgICAgICAgLy8gc2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzkKLSMgICAgICAgLy8gc2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjkzMjgKLSMgICAgICAgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXyxORE5CT09TVF9URVNURURfQVQoNCkpCi0jICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUIAotIyAgICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19JTVBMSUNJVCBtZW1iZXJ8Y2FsbGFibGVfYnVpbHRpbgotIyAgICAgICAgIGVuZGlmCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzIG5vbl9tZW1iZXJ8Y2FsbGFibGVfYnVpbHRpbgotIyAgICAgICBlbHNlCi0jICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzIGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgICAgZW5kaWYKLSMgICAgIGVsc2UKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19JTVBMSUNJVCBjYWxsYWJsZV9idWlsdGluCi0jICAgICAgIGVuZGlmCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSMgICBpZiAoZGVmaW5lZChORE5CT09TVF9GVF9DQ19DREVDTCkgfHwgZGVmaW5lZChORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcykpIFwKLSAgICAgICAgJiYgIWRlZmluZWQoX19jZGVjbCkKLSMgICAgIGRlZmluZSBfX2NkZWNsIF9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpCi0jICAgZW5kaWYKLSMgICBpZiAoZGVmaW5lZChORE5CT09TVF9GVF9DQ19TVERDQUxMKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzKSkgXAotICAgICAgICAmJiAhZGVmaW5lZChfX3N0ZGNhbGwpCi0jICAgICBkZWZpbmUgX19zdGRjYWxsIF9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkKLSMgICBlbmRpZgotIyAgIGlmIChkZWZpbmVkKE5ETkJPT1NUX0ZUX0NDX0ZBU1RDQUxMKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzKSkgXAotICAgICAgICAmJiAhZGVmaW5lZChfX2Zhc3RjYWxsKQotIyAgICAgZGVmaW5lIF9fZmFzdGNhbGwgX19hdHRyaWJ1dGVfXygoX19mYXN0Y2FsbF9fKSkKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLQotIyAgIGlmIF9fQk9STEFORENfXyA8IDB4NTUwCi0jICAgICBlcnJvciAidW5zdXBwb3J0ZWQgY29tcGlsZXIgdmVyc2lvbiIKLSMgICBlbGlmIF9fQk9STEFORENfXyA+IDB4NTY1Ci0jICAgICBwcmFnbWEgbWVzc2FnZSgiV0FSTklORzogbGlicmFyeSB1bnRlc3RlZCB3aXRoIHRoaXMgY29tcGlsZXIgdmVyc2lvbiIpCi0jICAgZW5kaWYKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX0FVVE9ERVRFQ1RfQ0FMTElOR19DT05WRU5USU9OUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NPTU1PTl9YODZfQ0NzIGNhbGxhYmxlX2J1aWx0aW4KLSMgICBlbmRpZgotCi0gICAgLy8gc3ludGFjdGljIHNwZWNpYWxpdGllcyBvZiBjYyBzcGVjaWZpZXIKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfU1lOVEFYKHJlc3VsdCxscGFyZW4sY2Nfc3BlYyx0eXBlX21vZCxuYW1lLHJwYXJlbikgXAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KCkgY2Nfc3BlYygpIGxwYXJlbigpIHR5cGVfbW9kKCkgbmFtZSgpIHJwYXJlbigpCi0jZWxzZQotICAgIC8vIG9ubHkgZW5hYmxlIGRlZmF1bHQgY2FsbGluZyBjb252ZW50aW9uCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUIGNhbGxhYmxlX2J1aWx0aW4KLSNlbmRpZgotCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4NTUzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0NPTkZJR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfRlRfQ09ORklHX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbXBpbGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb25maWcvY2NfbmFtZXMuaHBwPgotCi0vLyBtYXhpbXVtIGFsbG93ZWQgYXJpdHkKLSNpZm5kZWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX01BWF9BUklUWSAyMAotI2VuZGlmCi0KLS8vIHRoZSBtb3N0IGNvbW1vbiBjYWxsaW5nIGNvbnZlbnRpb25zIGZvciB4ODYgYXJjaGl0ZWN0dXJlIGNhbiBiZSBlbmFibGVkIGF0Ci0vLyBvbmNlIGluIHRoZSBjb21waWxlciBjb25maWcKLSNpZmRlZiBORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcwotIyAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19DREVDTAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19DREVDTCBORE5CT09TVF9GVF9DT01NT05fWDg2X0NDcwotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0NDX1NURENBTEwKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQ0NfU1REQ0FMTCBub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9GVF9DQ19GQVNUQ0FMTAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19GQVNUQ0FMTCBub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfQ09NTU9OX1g4Nl9DQ3MKLSMgICBlbmRpZgotI2VuZGlmCi0KLS8vIHdoZXJlIHRvIHBsYWNlIHRoZSBjYyBzcGVjaWZpZXIgKHRoZSBjb21tb24gd2F5KQotI2lmbmRlZiBORE5CT09TVF9GVF9TWU5UQVgKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfU1lOVEFYKHJlc3VsdCxscGFyZW4sY2Nfc3BlYyx0eXBlX21vZCxuYW1lLHJwYXJlbikgXAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KCkgbHBhcmVuKCkgY2Nfc3BlYygpIHR5cGVfbW9kKCkgbmFtZSgpIHJwYXJlbigpCi0jZW5kaWYKLQotLy8gcGFyYW0gZm9yIG51bGxhcnkgZnVuY3Rpb25zCi0vLyBzZXQgdG8gInZvaWQiIGZvciBjb21waWxlcnMgdGhhdCByZXF1aXJlIG51bGxhcnkgZnVuY3Rpb25zIHRvIHJlYWQgCi0vLyAiUiAodm9pZCkiIGluIHRlbXBsYXRlIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLSNpZm5kZWYgTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotI2RlZmluZSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNIAotI2VuZGlmCi0KLS8vIHRoZXJlIGlzIGEgcGVuZGluZyBkZWZlY3QgcmVwb3J0IG9uIGN2IHF1YWxpZmllZCBmdW5jdGlvbiB0eXBlcywgc28gc3VwcG9ydAotLy8gZm9yIHRoZXNlIHR5cGVzIGlzIGRpc2FibGVkLCB1bmxlc3MgZm9yIGNvbXBpbGVycyB3aGVyZSBpdCdzIGtub3duIHRvIHdvcmsKLSNpZm5kZWYgTkROQk9PU1RfRlRfTk9fQ1ZfRlVOQ19TVVBQT1JUCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX05PX0NWX0ZVTkNfU1VQUE9SVCAxCi0jZW5kaWYKLQotLy8gZnVsbCBwcmVwcm9jZXNzaW5nIGltcGxpZXMgcHJlcHJvY2Vzc2luZyBvZiB0aGUgY2NzCi0jaWYgZGVmaW5lZChORE5CT09TVF9GVF9QUkVQUk9DRVNTSU5HX01PREUpICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZUX0NDX1BSRVBST0NFU1NJTkcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX1BSRVBST0NFU1NJTkcgMQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc190cmFuc2Zvcm0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NfdHJhbnNmb3JtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI5NjRkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc190cmFuc2Zvcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU19UUkFOU0ZPUk1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU19UUkFOU0ZPUk1fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbHdheXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIG1wbDo6cGxhY2Vob2xkZXJzOjpfOwotCi0vLyBUcmFuc2Zvcm1hdGlvbiBtZXRhZnVuY3Rpb24gZm9yIHRoZSBjbGFzcyB0eXBlIG9mIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtCi17IHR5cGVkZWYgdHlwZW5hbWUgbXBsOjphcHBseTE8TCxUPjo6dHlwZSB0eXBlOyB9OwotCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8gV2UgY2FuIHNob3J0LWNpcmN1aXQgdGhlIG1lY2hhbmlzbSBpbXBsZW1lbnRlZCBpbiB0aGUgcHJpbWFyeSB0ZW1wbGF0ZSBmb3IgCi0vLyB0aGUgbW9zdCBjb21tb24gbGFtYmRhIGV4cHJlc3Npb24gYW5kIHNhdmUgYm90aCB0aGUgInVuLWxhbWJkYWluZyIgYW5kIHRoZQotLy8gdHlwZSB0cmFpdHMgaW52b2NhdGlvbiAod2Uga25vdyB0aGF0IFQgY2FuIG9ubHkgYmUgYSBjbGFzcyB0eXBlKS4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgbXBsOjppZGVudGl0eTxfPiA+Ci17IHR5cGVkZWYgVCB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NfdHJhbnNmb3JtPCBULCBhZGRfcmVmZXJlbmNlPF8+ID4gCi17IHR5cGVkZWYgVCAmIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc190cmFuc2Zvcm08IFQsIGFkZF9wb2ludGVyPF8+ID4KLXsgdHlwZWRlZiBUICogdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgcmVtb3ZlX2N2PF8+ID4KLXsgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc190cmFuc2Zvcm08IFQsIGFkZF9yZWZlcmVuY2U8IHJlbW92ZV9jdjxfPiA+ID4KLXsgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlICYgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgYWRkX3BvaW50ZXI8IHJlbW92ZV9jdjxfPiA+ID4KLXsgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlICogdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IGNsYXNzX3RyYW5zZm9ybTwgVCwgbXBsOjphbHdheXM8VT4gPgoteyB0eXBlZGVmIFUgdHlwZTsgfTsKLSNlbmRpZgotCi0KLX0gfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmViZDI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU0lGSUVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQ0xBU1NJRklFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcHJvcGVydHlfdGFncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2xhc3NpZmllcjsKLQotdGVtcGxhdGU8c3RkOjpzaXplX3QgUz4gc3RydWN0IGNoYXJfYXJyYXkgeyB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtTXTsgfTsKLQotdGVtcGxhdGU8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRCwgc3RkOjpzaXplX3QgQXJpdHk+IHN0cnVjdCBlbmNvZGVfY2hhcnIKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX2FycmF5PAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmVuY29kZV9jaGFycl9pbXBsPEZsYWdzLENDSUQsQXJpdHk+Ojp2YWx1ZSAKLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotY2hhciBORE5CT09TVF9UVF9ERUNMIGNsYXNzaWZpZXJfaW1wbCguLi4pOwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfcG9pbnRlcnxcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLQotI2RlZmluZSBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfTFBBUkVOLGNjLCogTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9wb2ludGVyKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfTFBBUkVOLGNjLCoqIE5ETkJPT1NUX1BQX0VNUFRZLG5hbWUsTkROQk9PU1RfUFBfUlBBUkVOKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIoY2MsbmFtZSkgTkROQk9PU1RfRlRfU1lOVEFYKCBcCi0gICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsVDA6OioqIE5ETkJPT1NUX1BQX0VNUFRZLG5hbWUsTkROQk9PU1RfUFBfUlBBUkVOKQotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2FsX3BhdGggbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbAotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9sb29wLmhwcD4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGNsYXNzaWZpZXJfYml0cwotewotICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUgdGVzdGVyOwotCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsdmFsdWUgPSAoYml0c190KXNpemVvZigKLSAgICBuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y2xhc3NpZmllcl9pbXBsKCYgdGVzdGVyKSAKLSAgKS0xKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjbGFzc2lmaWVyCi17Ci0gIHR5cGVkZWYgZGV0YWlsOjpjb25zdGFudDwKLSAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpkZWNvZGVfYml0czwKLSAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNsYXNzaWZpZXJfYml0czxUPjo6dmFsdWUKLSAgICA+Ojp0YWdfYml0cyA+IAotICBiaXRzOwotCi0gIHR5cGVkZWYgZGV0YWlsOjpmdWxsX21hc2sgbWFzazsKLSAKLSAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmRlY29kZV9iaXRzPAotICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y2xhc3NpZmllcl9iaXRzPFQ+Ojp2YWx1ZQotICAgID46OmFyaXR5ID4gCi0gIGZ1bmN0aW9uX2FyaXR5OwotfTsKLQotCi0KLX0gfSB9IC8vIG5hbWVzcGFjZSA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkxMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDE3N2EyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkxMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjdlYzUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTEwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MjBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY0MWVlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MTBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDc5OWU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkxMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDExPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkzMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTlmMmIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHkyMF8wLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwYzc4MzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTIwXzEuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzA+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTQwXzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZDk0NmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTMwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzE+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzQ+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzc+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDA+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI0ZTMzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5MzBfMS5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzM+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzY+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzk+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk1MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzYjhmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk1MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL2FyaXR5NDBfMC5ocHA+Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQzPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0ND4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ2PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Nz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ5PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ICwgdHlwZW5hbWUgVDQ4ICwgdHlwZW5hbWUgVDQ5ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1MD4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk1MF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTUwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2QzM2RmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NsYXNzaWZpZXJfaW1wbC9hcml0eTUwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvYXJpdHk0MF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQxPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDI+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Mz4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ0PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDU+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0Nj4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ3PiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyA+Ci10eXBlbmFtZSBlbmNvZGVfY2hhcnI8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDg+IDo6dHlwZQotY2xhc3NpZmllcl9pbXBsKE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ICwgdHlwZW5hbWUgVDQ4ID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OT4gOjp0eXBlCi1jbGFzc2lmaWVyX2ltcGwoTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2KTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDkgPgotdHlwZW5hbWUgZW5jb2RlX2NoYXJyPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUwPiA6OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY2xhc3NpZmllcl9pbXBsL21hc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjMmVjNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jbGFzc2lmaWVyX2ltcGwvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLSNpZiBORE5CT09TVF9GVF9BUklUWV9MT09QX1BSRUZJWAotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DTEFTU0lGSUVSX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQ0xBU1NJRklFUl9JTVBMX01BU1RFUl9IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jZWxpZiBORE5CT09TVF9GVF9BUklUWV9MT09QX0lTX0lURVJBVElORwotCi10ZW1wbGF0ZTwgTkROQk9PU1RfRlRfdHBsYXJncyhORE5CT09TVF9QUF9JREVOVElUWSh0eXBlbmFtZSkpID4KLXR5cGVuYW1lIGVuY29kZV9jaGFycjxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCxORE5CT09TVF9GVF9hcml0eT46OnR5cGUKLWNsYXNzaWZpZXJfaW1wbChORE5CT09TVF9GVF90eXBlKTsKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9TVUZGSVgKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jZWxzZQotIyAgIGVycm9yICJhdHRlbXB0IHRvIHVzZSBhcml0eSBsb29wIG1hc3RlciBmaWxlIHdpdGhvdXQgbG9vcCIKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2FzX21wbF9zZXF1ZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2FzX21wbF9zZXF1ZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YzJhZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19hc19tcGxfc2VxdWVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfQ09NUE9ORU5UU19BU19NUExfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DT01QT05FTlRTX0FTX01QTF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfYmFja19md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV9pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgOiBtcGw6OnNpemUgPHR5cGVuYW1lIFM6OnR5cGVzPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgZW1wdHlfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgIDogbXBsOjplbXB0eSA8dHlwZW5hbWUgUzo6dHlwZXM+Ci0gIHsgfTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBmcm9udF9pbXBsCi08IGZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyA+Ci17Ci0gIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgOiBtcGw6OmZyb250IDx0eXBlbmFtZSBTOjp0eXBlcz4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGJhY2tfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgIDogbXBsOjpiYWNrIDx0eXBlbmFtZSBTOjp0eXBlcz4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGF0X2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMsIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6YXQgPHR5cGVuYW1lIFM6OnR5cGVzLCBOID4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGJlZ2luX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6YmVnaW4gPHR5cGVuYW1lIFM6OnR5cGVzPgotICB7IH07Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgZW5kX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICA6IG1wbDo6ZW5kIDx0eXBlbmFtZSBTOjp0eXBlcz4KLSAgeyB9OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IGNsZWFyX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICBzdHJ1Y3QgYXBwbHkKLSAgICA6IFMKLSAgewotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6Y2xlYXI8IHR5cGVuYW1lIFM6OnR5cGVzID46OnR5cGUgdHlwZXM7Ci0gIH07Ci19OwotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUywgdHlwZW5hbWUgVCA+Ci0gIHN0cnVjdCBhcHBseQotICAgIDogUwotICB7IAotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cHVzaF9mcm9udDwgdHlwZW5hbWUgUzo6dHlwZXMsIFQgPjo6dHlwZSB0eXBlczsKLSAgfTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICBzdHJ1Y3QgYXBwbHkKLSAgICA6IFMKLSAgewotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cG9wX2Zyb250PCB0eXBlbmFtZSBTOjp0eXBlcyA+Ojp0eXBlIHR5cGVzOyAKLSAgfTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGwKLTwgZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnID4KLXsKLSAgdGVtcGxhdGU8IHR5cGVuYW1lIFMsIHR5cGVuYW1lIFQgPgotICBzdHJ1Y3QgYXBwbHkKLSAgICA6IFMKLSAgewotICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cHVzaF9iYWNrPCB0eXBlbmFtZSBTOjp0eXBlcywgVCA+Ojp0eXBlIHR5cGVzOyAKLSAgfTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbAotPCBmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgPgotewotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gIHN0cnVjdCBhcHBseQotICAgIDogUwotICB7Ci0gICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpwb3BfYmFjazwgdHlwZW5hbWUgUzo6dHlwZXMgPjo6dHlwZSB0eXBlczsgCi0gIH07Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIDo6bmRuYm9vc3Q6Om1wbAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM3OTkzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBSLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTwgUiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjwgUiAsIFQwID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzwgUiAsIFQwICwgVDEgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0PCBSICwgVDAgLCBUMSAsIFQyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsND4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNjwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I3PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yODwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yOTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxMDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDEwPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxMTwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ID4gdHlwZXM7Ci19OwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Yjg5NjhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMz4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNjwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyICwgVDMgLCBUNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNzwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw3PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yOTwgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPiA6OnR5cGUgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsOT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTA8IFIsIHR5cGVuYW1lIGNsYXNzX3RyYW5zZm9ybTxUMCBORE5CT09TVF9GVF9jdiwgTD4gOjp0eXBlICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjExPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE1MzBkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTEwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjEyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDEzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxNDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDE2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IxNzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwxOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMTk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDE5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyMDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTIwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNjc2M2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MjBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkxMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjEyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjEzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjE5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMTk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ0OTc5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTIwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDIzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyNDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDI2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IyNzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwyOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMjk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDI5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzMDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTMwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYzM5M2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5MzBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkyMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjIzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjI5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMjk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4NTBhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTMwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzMj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDMzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzNDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzNT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDM2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3IzNzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCwzOD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yMzk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDM5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0MDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTQwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmN2Y0OWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NDBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHkzMF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjMzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjM5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsMzk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk1MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5ZjZiNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk1MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTQwXzAuaHBwPgotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQyPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0Mj4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDM8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQzPiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0NDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ1PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0NT4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDY8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQ2PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I0NzwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ4PCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgPiB0eXBlczsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBMPgotc3RydWN0IGNvbXBvbmVudHNfaW1wbDxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+IHR5cGU7Ci10eXBlZGVmIGNvbXBvbmVudHNfbXBsX3NlcXVlbmNlX3RhZyB0YWc7Ci10eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OnNpemVfdCw0OD4gZnVuY3Rpb25fYXJpdHk7Ci10eXBlZGVmIG1wbDo6dmVjdG9yNDk8IFIgLCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPgotewotdHlwZWRlZiBlbmNvZGVfYml0czxORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZD4gYml0czsKLXR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotdHlwZWRlZiBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4gdHlwZTsKLXR5cGVkZWYgY29tcG9uZW50c19tcGxfc2VxdWVuY2VfdGFnIHRhZzsKLXR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LDQ5PiBmdW5jdGlvbl9hcml0eTsKLXR5cGVkZWYgbXBsOjp2ZWN0b3I1MDwgUiAsIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ID4gdHlwZXM7Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyAsIHR5cGVuYW1lIFQ0OCAsIHR5cGVuYW1lIFQ0OSwgdHlwZW5hbWUgTD4KLXN0cnVjdCBjb21wb25lbnRzX2ltcGw8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3ICwgVDQ4ICwgVDQ5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YsIEw+Ci17Ci10eXBlZGVmIGVuY29kZV9iaXRzPE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotdHlwZWRlZiBjb25zdGFudDxORE5CT09TVF9GVF9mdWxsX21hc2s+IG1hc2s7Ci10eXBlZGVmIGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNTA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjUxPCBSICwgVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgPiB0eXBlczsKLX07Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2NvbXBvbmVudHNfaW1wbC9hcml0eTUwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NTBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzN2E1NmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL2FyaXR5NTBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvYXJpdHk0MF8xLmhwcD4KLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDE+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQyPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDI+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQzPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDM+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ0PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDQ+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ1PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDU+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ2PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDY+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ3PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDc+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ4PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDg+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjQ5PCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNDk+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjUwPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCA+IHR5cGVzOwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYywgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiwgTD4KLXsKLXR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci10eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWFzazsKLXR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLCBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2LCBMPiB0eXBlOwotdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpzaXplX3QsNTA+IGZ1bmN0aW9uX2FyaXR5OwotdHlwZWRlZiBtcGw6OnZlY3RvcjUxPCBSLCB0eXBlbmFtZSBjbGFzc190cmFuc2Zvcm08VDAgTkROQk9PU1RfRlRfY3YsIEw+IDo6dHlwZSAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSA+IHR5cGVzOwotfTsKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY29tcG9uZW50c19pbXBsL21hc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FhZjYzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jb21wb25lbnRzX2ltcGwvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLSNpZiAgIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfUFJFRklYCi0KLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0NPTVBPTkVOVFNfSU1QTF9NQVNURVJfSFBQX0lOQ0xVREVECi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9DT01QT05FTlRTX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jICAgaWYgIU5ETkJPT1NUX0ZUX21mcAotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZXMgXAotICAgICAgICAgIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfRlRfYXJpdHkpIE5ETkJPT1NUX0ZUX3BhcmFtcyhORE5CT09TVF9QUF9FTVBUWSkKLSMgICBlbHNlCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlcyBcCi0gICAgICAgICAgUiwgdHlwZW5hbWUgY2xhc3NfdHJhbnNmb3JtPFQwIE5ETkJPT1NUX0ZUX2N2LCBMPjo6dHlwZSBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX0ZUX2FyaXR5KSkgXAotICAgICAgICAgIE5ETkJPT1NUX0ZUX3BhcmFtcyhORE5CT09TVF9QUF9FTVBUWSkKLQotIyAgIGVuZGlmCi0KLSNlbGlmIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfSVNfSVRFUkFUSU5HCi0KLXRlbXBsYXRlPCBORE5CT09TVF9GVF90cGxhcmdzKE5ETkJPT1NUX1BQX0lERU5USVRZKHR5cGVuYW1lKSksIHR5cGVuYW1lIEw+Ci1zdHJ1Y3QgY29tcG9uZW50c19pbXBsPE5ETkJPT1NUX0ZUX3R5cGUsIEw+Ci17Ci0gIHR5cGVkZWYgZW5jb2RlX2JpdHM8TkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQ+IGJpdHM7Ci0gIHR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBtYXNrOwotCi0gIHR5cGVkZWYgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8TkROQk9PU1RfRlRfdHlwZSwgTD4gdHlwZTsKLSAgdHlwZWRlZiBjb21wb25lbnRzX21wbF9zZXF1ZW5jZV90YWcgdGFnOwotCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6c2l6ZV90LE5ETkJPT1NUX0ZUX2FyaXR5PiBmdW5jdGlvbl9hcml0eTsKLQotICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChtcGw6OnZlY3RvcixORE5CT09TVF9GVF9uKTwgTkROQk9PU1RfRlRfdHlwZXMgPiB0eXBlczsKLX07Ci0KLSNlbGlmIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfU1VGRklYCi0KLSMgICB1bmRlZiBORE5CT09TVF9GVF90eXBlcwotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfbmFtZQotCi0jZWxzZQotIyAgIGVycm9yICJhdHRlbXB0IHRvIHVzZSBhcml0eSBsb29wIG1hc3RlciBmaWxlIHdpdGhvdXQgbG9vcCIKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jdl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvY3ZfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBlN2JmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jdl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9ERVRBSUxfQ1ZfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfQ1ZfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1ODIpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Byb3BlcnR5X3RhZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmICEgKGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU4MikpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHMgCi17IHR5cGVkZWYgbm9uX2N2IHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgJj4gICAgIAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICo+ICAgIAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICogY29uc3Q+IAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICogdm9sYXRpbGU+IAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUICogY29uc3Qgdm9sYXRpbGU+IAoteyB0eXBlZGVmIG5vbl9jdiB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Q+IAoteyB0eXBlZGVmIGNvbnN0X25vbl92b2xhdGlsZSB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0ICY+Ci17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKj4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKiBjb25zdD4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKiB2b2xhdGlsZT4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3QgKiBjb25zdCB2b2xhdGlsZT4gCi17IHR5cGVkZWYgY29uc3Rfbm9uX3ZvbGF0aWxlIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZT4gIAoteyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIHZvbGF0aWxlICY+ICAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqPiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqIGNvbnN0PiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqIHZvbGF0aWxlPiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCB2b2xhdGlsZSAqIGNvbnN0IHZvbGF0aWxlPiAKLXsgdHlwZWRlZiB2b2xhdGlsZV9ub25fY29uc3QgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0IHZvbGF0aWxlPiAgIAoteyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0IHZvbGF0aWxlICY+Ci17IHR5cGVkZWYgY3ZfcXVhbGlmaWVkIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Qgdm9sYXRpbGUgKj4KLXsgdHlwZWRlZiBjdl9xdWFsaWZpZWQgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHM8VCBjb25zdCB2b2xhdGlsZSAqIGNvbnN0PgoteyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0YWc7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGN2X3RyYWl0czxUIGNvbnN0IHZvbGF0aWxlICogdm9sYXRpbGU+Ci17IHR5cGVkZWYgY3ZfcXVhbGlmaWVkIHRhZzsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzPFQgY29uc3Qgdm9sYXRpbGUgKiBjb25zdCB2b2xhdGlsZT4KLXsgdHlwZWRlZiBjdl9xdWFsaWZpZWQgdGFnOyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotI2Vsc2UKLXRlbXBsYXRlPHN0ZDo6c2l6ZV90PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGN2X3RhZ19pbXBsPDE+IHsgdHlwZWRlZiBub25fY3YgdHlwZTt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw8Mj4geyB0eXBlZGVmIGNvbnN0X25vbl92b2xhdGlsZSB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw8Mz4geyB0eXBlZGVmIHZvbGF0aWxlX25vbl9jb25zdCB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgY3ZfdGFnX2ltcGw8ND4geyB0eXBlZGVmIGN2X3F1YWxpZmllZCB0eXBlOyB9OwotCi10eXBlZGVmIGNoYXIgKCYgY2FzZV8xKVsxXTsKLXR5cGVkZWYgY2hhciAoJiBjYXNlXzIpWzJdOwotdHlwZWRlZiBjaGFyICgmIGNhc2VfMylbM107Ci10eXBlZGVmIGNoYXIgKCYgY2FzZV80KVs0XTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV8xIHN3aXRjaF9jdihUICopOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV8yIHN3aXRjaF9jdihUIGNvbnN0ICopOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV8zIHN3aXRjaF9jdihUIHZvbGF0aWxlICopOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2FzZV80IHN3aXRjaF9jdihUIGNvbnN0IHZvbGF0aWxlICopOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUICAgICAgICAgICAgICAgICogcmVmX3RvX3B0cihUICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb25zdCAgICAgICAgICAqIHJlZl90b19wdHIoVCBjb25zdCAmKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgdm9sYXRpbGUgICAgICAgKiByZWZfdG9fcHRyKFQgdm9sYXRpbGUgJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnN0IHZvbGF0aWxlICogcmVmX3RvX3B0cihUIGNvbnN0IHZvbGF0aWxlICYpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUICAgICAgICAgICAgICAgICogcmVmX3RvX3B0cihUICogY29uc3Qgdm9sYXRpbGUgJik7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY3ZfY29kZQotewotICBzdGF0aWMgVCBfdDsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnN3aXRjaF9jdigKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnJlZl90b19wdHIoX3QpICkgKSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzIAotewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpjdl90YWdfaW1wbDwgCi0gICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Y3ZfY29kZTxUPjo6dmFsdWUgPjo6dHlwZQotICB0YWc7Ci0KLSAgLy8gbWF5IHJlcXVpcmUgQm9vc3QuVHlwZVRyYWl0cyBicm9rZW4gY29tcGlsZXIgc3BlY2lhbGl6YXRpb25zCi0gIC8vIHRvIHdvcmsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSAKLSAgICAgICAgICAgICAgPjo6dHlwZSAKLSAgICAgICAgICA+Ojp0eXBlIHR5cGU7IAotfTsKLSNlbmRpZgotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWwKLQotI2VuZGlmCi0gCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MTY0ZDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvYWxpYXNlc19kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLSNkZWZpbmUgY2FsbGFibGVfYnVpbHRpbiBORE5CT09TVF9GVF9jYWxsYWJsZV9idWlsdGluCi0jZGVmaW5lIG1lbWJlciAgICAgICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLSNkZWZpbmUgbm9uX21lbWJlciAgICAgICBORE5CT09TVF9GVF9ub25fbWVtYmVyCi0jZGVmaW5lIHZhcmlhZGljICAgICAgICAgTkROQk9PU1RfRlRfdmFyaWFkaWMKLSNkZWZpbmUgbm9uX3ZhcmlhZGljICAgICBORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvYWxpYXNlc191bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ0ZTU3Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9ucwotCi0jdW5kZWYgY2FsbGFibGVfYnVpbHRpbgotI3VuZGVmIG1lbWJlcgotI3VuZGVmIG5vbl9tZW1iZXIKLSN1bmRlZiB2YXJpYWRpYwotI3VuZGVmIG5vbl92YXJpYWRpYwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjczMzQ0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLS8vIFR5cGUgZW5jb2Rpbmc6Ci0vLwotLy8gYml0IDA6IGNhbGxhYmxlIGJ1aWx0aW4KLS8vIGJpdCAxOiBub24gbWVtYmVyCi0vLyBiaXQgMjogbmFrZWQgZnVuY3Rpb24KLS8vIGJpdCAzOiBwb2ludGVyCi0vLyBiaXQgNDogcmVmZXJlbmNlCi0vLyBiaXQgNTogbWVtYmVyIHBvaW50ZXIKLS8vIGJpdCA2OiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcgotLy8gYml0IDc6IG1lbWJlciBvYmplY3QgcG9pbnRlcgotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3R5cGVfbWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMGZmIC8vIDExMTEgMTExMSAKLSNkZWZpbmUgTkROQk9PU1RfRlRfY2FsbGFibGVfYnVpbHRpbiAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgLy8gMDAwMCAwMDAxCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX25vbl9tZW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyIC8vIDAwMDAgMDAxMAotI2RlZmluZSBORE5CT09TVF9GVF9mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNyAvLyAwMDAwIDAxMTEKLSNkZWZpbmUgTkROQk9PU1RfRlRfcG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMGIgLy8gMDAwMCAxMDExCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3JlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEzIC8vIDAwMDEgMDAxMQotI2RlZmluZSBORE5CT09TVF9GVF9ub25fbWVtYmVyX2NhbGxhYmxlX2J1aWx0aW4gICAgICAgICAgMHgwMDAwMDAwMyAvLyAwMDAwIDAwMTEKLSNkZWZpbmUgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAgLy8gMDAxMCAwMDAwCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyICAgICAgICAgICAgICAweDAwMDAwMDYxIC8vIDAxMTAgMDAwMQotI2RlZmluZSBORE5CT09TVF9GVF9tZW1iZXJfb2JqZWN0X3BvaW50ZXIgICAgICAgICAgICAgICAgMHgwMDAwMDBhMyAvLyAxMDEwIDAwMDEKLSNkZWZpbmUgTkROQk9PU1RfRlRfbWVtYmVyX29iamVjdF9wb2ludGVyX2ZsYWdzICAgICAgICAgIDB4MDAwMDAyYTMKLQotI2RlZmluZSBORE5CT09TVF9GVF92YXJpYWRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAotI2RlZmluZSBORE5CT09TVF9GVF9ub25fdmFyaWFkaWMgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAotI2RlZmluZSBORE5CT09TVF9GVF92YXJpYWRpY19tYXNrICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDMwMAotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZvbGF0aWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCi0KLSNkZWZpbmUgTkROQk9PU1RfRlRfZGVmYXVsdF9jYyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAKLSNkZWZpbmUgTkROQk9PU1RfRlRfY2NfbWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDBmZjgwMDAKLQotI2RlZmluZSBORE5CT09TVF9GVF9raW5kX21hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBmYyAKLQotI2RlZmluZSBORE5CT09TVF9GVF9mbGFnc19tYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMGZmZgotI2RlZmluZSBORE5CT09TVF9GVF9mdWxsX21hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMGZmMGZmZgotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX2FyaXR5X3NoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAyNAotI2RlZmluZSBORE5CT09TVF9GVF9hcml0eV9tYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZjAwMDAwMAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMTIzMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotI3VuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfbWFzawotI3VuZGVmIE5ETkJPT1NUX0ZUX2tpbmRfbWFzawotI3VuZGVmIE5ETkJPT1NUX0ZUX2NhbGxhYmxlX2J1aWx0aW4KLSN1bmRlZiBORE5CT09TVF9GVF9ub25fbWVtYmVyCi0jdW5kZWYgTkROQk9PU1RfRlRfZnVuY3Rpb24KLSN1bmRlZiBORE5CT09TVF9GVF9wb2ludGVyCi0jdW5kZWYgTkROQk9PU1RfRlRfcmVmZXJlbmNlCi0jdW5kZWYgTkROQk9PU1RfRlRfbm9uX21lbWJlcl9jYWxsYWJsZV9idWlsdGluCi0jdW5kZWYgTkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLSN1bmRlZiBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotI3VuZGVmIE5ETkJPT1NUX0ZUX21lbWJlcl9vYmplY3RfcG9pbnRlcgotI3VuZGVmIE5ETkJPT1NUX0ZUX21lbWJlcl9vYmplY3RfcG9pbnRlcl9mbGFncwotCi0jdW5kZWYgTkROQk9PU1RfRlRfdmFyaWFkaWMKLSN1bmRlZiBORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLSN1bmRlZiBORE5CT09TVF9GVF92YXJpYWRpY19tYXNrCi0KLSN1bmRlZiBORE5CT09TVF9GVF9jb25zdAotI3VuZGVmIE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0KLSN1bmRlZiBORE5CT09TVF9GVF9kZWZhdWx0X2NjCi0jdW5kZWYgTkROQk9PU1RfRlRfY2NfbWFzawotCi0jdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3NfbWFzawotI3VuZGVmIE5ETkJPT1NUX0ZUX2Z1bGxfbWFzawotCi0jdW5kZWYgTkROQk9PU1RfRlRfYXJpdHlfbWFzawotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9hcml0eV9sb29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2FyaXR5X2xvb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmI1OTFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2FyaXR5X2xvb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX21mcCAgICAgICAgMCBvciAxIDw9PiBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcj8KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfdHlwZV9uYW1lICBORE5CT09TVF9GVF90eXBlIC0tPiAiUiAoKiAuLi5fdHlwZV9uYW1lKSgpIiAocGFzczIpCi0jZW5kaWYKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotI2lmZGVmIF9fV0FWRV9fCi0jICAgcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAwKQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9BTF9QUkVQUk9DRVNTRUQgXAotICAgICAgICBORE5CT09TVF9GVF9BTF9GSUxFKE5ETkJPT1NUX0ZUX2FsX3BhdGgsTkROQk9PU1RfRlRfRlJPTV9BUklUWSxORE5CT09TVF9GVF9tZnApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfQUxfRklMRShiYXNlX3BhdGgsbWF4X2FyaXR5LG1mcCkgXAotICAgICAgICBORE5CT09TVF9GVF9BTF9GSUxFX0koYmFzZV9wYXRoLG1heF9hcml0eSxtZnApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0FMX0ZJTEVfSShiYXNlX3BhdGgsbWF4X2FyaXR5LG1mcCkgXAotICAgICAgICA8YmFzZV9wYXRoL2FyaXR5ICMjIG1heF9hcml0eSAjIyBfICMjIG1mcC5ocHA+Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9GVF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICAgIGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDEwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDAgCi0jICAgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDIwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDEwCi0jICAgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDMwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDIwCi0jICAgICBlbGlmIE5ETkJPT1NUX0ZUX01BWF9BUklUWSA8IDQwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9GVF9GUk9NX0FSSVRZIDMwCi0jICAgICBlbmRpZgotCi0jICAgICBpZiBORE5CT09TVF9GVF9GUk9NX0FSSVRZCi0jICAgICAgIGluY2x1ZGUgTkROQk9PU1RfRlRfQUxfUFJFUFJPQ0VTU0VECi0jICAgICBlbmRpZgotCi0jICAgZWxpZiAhZGVmaW5lZChORE5CT09TVF9GVF9GUk9NX0FSSVRZKSAvLyBzaW5nbGUgcGFzcyBwcmVwcm9jZXNzaW5nCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfRlJPTV9BUklUWSAwCi0KLSMgICBlbGlmIE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgPiAwICAgICAgIC8vIGFyaXR5MjAgaW5jbHVkZXMgYXJpdHkxMAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGluY2x1ZGUgTkROQk9PU1RfRlRfQUxfUFJFUFJPQ0VTU0VECi0jICAgZW5kaWYKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX0FMX1BSRVBST0NFU1NFRAotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfQUxfRklMRQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX0FMX0ZJTEVfSQotCi0jICAgaWYgTkROQk9PU1RfRlRfTUFYX0FSSVRZID4gTkROQk9PU1RfRlRfRlJPTV9BUklUWQotCi0jICAgICBpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX0FSSVRZX0xPT1BfSFBQX0lOQ0xVREVECi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX0FSSVRZX0xPT1BfSFBQX0lOQ0xVREVECi0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyAgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2V4cGFuZC5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcD4KLSMgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotIyAgICAgZW5kaWYKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRSA8TkROQk9PU1RfRlRfYWxfcGF0aC9tYXN0ZXIuaHBwPgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9QUkVGSVggMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9BTF9JTkNMVURFX0ZJTEUKLSMgICAgIHVuZGVmICBORE5CT09TVF9GVF9BUklUWV9MT09QX1BSRUZJWAotCi0jICAgICBpZiAhTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRQotIyAgICAgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yIE5ETkJPT1NUX0ZUX0FMX0lOQ0xVREVfRklMRQotIyAgICAgZWxzZQotIyAgICAgICBlcnJvciAibG9vcHMgbmVzdGVkIHRvbyBkZWVwbHkiCi0jICAgICBlbmRpZgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfYXJpdHkgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9uICAgICBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfRlRfYXJpdHkpCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlIFwKLSAgICAgICAgICBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsTkROQk9PU1RfRlRfdHlwZV9uYW1lIE5ETkJPT1NUX1BQX0VNUFRZKVwKLSAgICAgICAgICAgICAgIChORE5CT09TVF9GVF9wYXJhbXMoTkROQk9PU1RfUFBfRU1QVFkpIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3RwbGFyZ3MocHJlZngpIFwKLSAgICAgICAgICBwcmVmeCgpIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfRlRfYXJpdHkscHJlZngoKSBUKQotCi0jICAgICBpZiAhTkROQk9PU1RfRlRfbWZwCi0KLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX3BhcmFtcyhwcmVmeCkgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfRlRfYXJpdHksTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMsIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX1BQX1RVUExFX0VBVCgyKSkoIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfRlRfYXJpdHkscHJlZngoKSBUKSAKLSMgICAgIGVsc2UKLQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfRlRfcGFyYW1zKHByZWZ4KSBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKE5ETkJPT1NUX0ZUX2FyaXR5LHByZWZ4KCkgVCkKLQotIyAgICAgZW5kaWYKLQotIyAgICAgaWYgIU5ETkJPT1NUX0ZUX0ZST01fQVJJVFkgCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTIChORE5CT09TVF9GVF9tZnAsIE5ETkJPT1NUX0ZUX01BWF9BUklUWSkKLSMgICAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMgXAotICAgICAgICAgICAgKE5ETkJPT1NUX0ZUX0ZST01fQVJJVFkrMSwgTkROQk9PU1RfRlRfTUFYX0FSSVRZKQotIyAgICAgZW5kaWYKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX0FSSVRZX0xPT1BfSVNfSVRFUkFUSU5HIDEKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jICAgICB1bmRlZiAgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcKLQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfYXJpdHkKLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX3BhcmFtcwotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfdHBsYXJncwotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZQotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9TVUZGSVggMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9BTF9JTkNMVURFX0ZJTEUKLSMgICAgIHVuZGVmICBORE5CT09TVF9GVF9BUklUWV9MT09QX1NVRkZJWAotCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9BTF9JTkNMVURFX0ZJTEUKLSMgICBlbmRpZgotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfRlJPTV9BUklUWQotCi0jZWxzZQotIyAgIGVycm9yICJhdHRlbXB0IHRvIG5lc3QgYXJpdHkgbG9vcHMiCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODAwZTBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvbWFzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotI2lmZGVmIF9fV0FWRV9fCi0vLyB0aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb20gdGhlIG1hc3Rlci5ocHAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLSMgICBwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDApCi0jZW5kaWYKLQotCi0jaWYgIU5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9DQ19MT09QX01BU1RFUl9IUFBfSU5DTFVERUQKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfREVUQUlMX0NDX0xPT1BfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29uZmlnL2NjX25hbWVzLmhwcD4KLQotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9leHBhbmQuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgICBlbmRpZgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfZGVmLmhwcD4KLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfRklMRU5BTUVfMSBcCi0gICAgICAgIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9tYXN0ZXIuaHBwPgotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUyBcCi0gICAgICAgICgwLE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX0ZUX0NDX05BTUVTX1NFUSktMSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCkgJiYgTkROQk9PU1RfRlRfQ0NfUFJFUFJPQ0VTU0lORwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDEKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGltcGxpY2l0X2NjCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfRU1QVFkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9jb25kIGNhbGxhYmxlX2J1aWx0aW4KLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jICAgZWxpZiAhZGVmaW5lZChORE5CT09TVF9GVF9jb25maWdfdmFsaWQpIC8vIGFuZCBnZW5lcmF0aW5nIHByZXByb2Nlc3NlZCBmaWxlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgaWZuZGVmIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZAotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDEKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGltcGxpY2l0X2NjCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfRU1QVFkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jb25kIGNhbGxhYmxlX2J1aWx0aW4KLSNkZWZpbmUgXygpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSN1bmRlZiBfCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jb25kCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jYwotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jb25maWdfdmFsaWQKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbmRpZgotCi0jICAgZWxzZQotIyAgICAgdW5kZWYgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkCi0jICAgZW5kaWYKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwPgotCi0jZWxpZiBORE5CT09TVF9GVF9DQ19QUkVQUk9DRVNTSU5HCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2luZiBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKSxORE5CT09TVF9GVF9DQ19OQU1FU19TRVEpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfY2NfcHBfbmFtZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsMCxORE5CT09TVF9GVF9jY19pbmYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLDEsTkROQk9PU1RfRlRfY2NfaW5mKQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jYyAgICAgICAgIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywyLE5ETkJPT1NUX0ZUX2NjX2luZikKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9GVF9DQ18sTkROQk9PU1RfRlRfY2NfcHBfbmFtZSkKLQotIyAgIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jICAgZW5kaWYKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX3BwX25hbWUKLSMgICB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2MKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfY2NfaW5mCi0KLSNlbHNlIC8vIGlmIGdlbmVyYXRpbmcgcHJlcHJvY2Vzc2VkIGZpbGUKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2luZiBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLE5ETkJPT1NUX0ZUX0NDX05BTUVTX1NFUSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jY19wcF9uYW1lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywwLE5ETkJPT1NUX0ZUX2NjX2luZikKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9DQ19ERUYobmFtZSxpbmRleCkgXAotICAgICAgICBuYW1lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMyxpbmRleCxORE5CT09TVF9GVF9jY19pbmYpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0RFRihORE5CT09TVF9GVF9jY19uYW1lLDEpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX0NDX0RFRihORE5CT09TVF9GVF9jYywyKQotIyAgIHVuZGVmICBORE5CT09TVF9GVF9DQ19ERUYKLQotIyAgIGRlZmluZSBORE5CT09TVF9GVF9jY19jb25kX3YgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX0ZUX0NDXyxORE5CT09TVF9GVF9jY19wcF9uYW1lKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX2NjX2NvbmRfdgotIyAgIHVuZGVmICBORE5CT09TVF9GVF9jY19jb25kX3YKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX3BwX25hbWUKLSMgICB1bmRlZiBORE5CT09TVF9GVF9jY19pbmYKLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotI2RlZmluZSBfKCkKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotI3VuZGVmIF8KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBlbmRpZgotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfY2NfbG9vcC9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTFlYzFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbnMKLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCAxCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGltcGxpY2l0X2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9FTVBUWQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19JTVBMSUNJVAotIyBpZiBORE5CT09TVF9GVF9jb25kCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25maWdfdmFsaWQgMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgZW5kaWYKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19pZCAyCi0jIGRlZmluZSBORE5CT09TVF9GVF9jY19uYW1lIGNkZWNsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShfX2NkZWNsICkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfRlRfQ0NfQ0RFQ0wKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgMwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBzdGRjYWxsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShfX3N0ZGNhbGwgKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19TVERDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgcGFzY2FsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShwYXNjYWwgKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19QQVNDQUwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgNQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBmYXN0Y2FsbF9jYwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfSURFTlRJVFkoX19mYXN0Y2FsbCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgTkROQk9PU1RfRlRfQ0NfRkFTVENBTEwKLSMgaWYgTkROQk9PU1RfRlRfY29uZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkIDEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF9jY19maWxlCi0jIGVuZGlmCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfbmFtZQotIyB1bmRlZiBORE5CT09TVF9GVF9jYwotIyB1bmRlZiBORE5CT09TVF9GVF9jY19pZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgNgotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBjbHJjYWxsX2NjCi0jIGRlZmluZSBORE5CT09TVF9GVF9jYyBORE5CT09TVF9QUF9JREVOVElUWShfX2NscmNhbGwgKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY29uZCBORE5CT09TVF9GVF9DQ19DTFJDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDcKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgdGhpc2NhbGxfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0lERU5USVRZKF9fdGhpc2NhbGwpCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX1RISVNDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2lkIDgKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX25hbWUgdGhpc2NhbGxfY2MKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjIE5ETkJPT1NUX1BQX0VNUFRZCi0jIGRlZmluZSBORE5CT09TVF9GVF9jb25kIE5ETkJPT1NUX0ZUX0NDX0lNUExJQ0lUX1RISVNDQUxMCi0jIGlmIE5ETkJPT1NUX0ZUX2NvbmQKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZCAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfY2NfZmlsZQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9jb25kCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX25hbWUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2MKLSMgdW5kZWYgTkROQk9PU1RfRlRfY2NfaWQKLSMgaWZuZGVmIE5ETkJPT1NUX0ZUX2NvbmZpZ192YWxpZAotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfaWQgMQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2NfbmFtZSBpbXBsaWNpdF9jYwotIyBkZWZpbmUgTkROQk9PU1RfRlRfY2MgTkROQk9PU1RfUFBfRU1QVFkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2NvbmQgMHgwMDAwMDAwMQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZAotIyB1bmRlZiBORE5CT09TVF9GVF9jY19uYW1lCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2lkCi0jIGVsc2UKLSMgdW5kZWYgTkROQk9PU1RfRlRfY29uZmlnX3ZhbGlkCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9sb29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjZlN2JhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1BQX0xPT1BfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9QUF9MT09QX0hQUF9JTkNMVURFRAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2V4cGFuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbi5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0ZUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfbG9vcCA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvbWFzdGVyLmhwcD4KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2xvb3AgXAotICAgICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2NjX2xvb3AvcHJlcHJvY2Vzc2VkLmhwcD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9GVF9hbF9wYXRoKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2ZpbGUgXAotICAgICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9wcmVwcm9jZXNzZWQuaHBwPgotIyAgIGRlZmluZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUgXAotICAgICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2FyaXR5X2xvb3AuaHBwPgotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb24KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbihjYyxuYW1lKSBORE5CT09TVF9GVF9TWU5UQVgoIFwKLSAgICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfRU1QVFksY2MsTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9FTVBUWSkKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3BvaW50ZXIKLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9wb2ludGVyKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsKiBORE5CT09TVF9QUF9FTVBUWSxuYW1lLE5ETkJPT1NUX1BQX1JQQVJFTikKLSMgICBlbmRpZgotIyAgIGlmbmRlZiBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3JlZmVyZW5jZQotIyAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3JlZmVyZW5jZShjYyxuYW1lKSBORE5CT09TVF9GVF9TWU5UQVgoIFwKLSAgICAgIFIgTkROQk9PU1RfUFBfRU1QVFksTkROQk9PU1RfUFBfTFBBUkVOLGNjLCYgTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0jICAgZW5kaWYKLSMgICBpZm5kZWYgTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotIyAgIGRlZmluZSBORE5CT09TVF9GVF90eXBlX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyKGNjLG5hbWUpIE5ETkJPT1NUX0ZUX1NZTlRBWCggXAotICAgICAgUiBORE5CT09TVF9QUF9FTVBUWSxORE5CT09TVF9QUF9MUEFSRU4sY2MsVDA6OiogTkROQk9PU1RfUFBfRU1QVFksbmFtZSxORE5CT09TVF9QUF9SUEFSRU4pCi0jICAgZW5kaWYKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfRlRfbG9vcAotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbgotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcG9pbnRlcgotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcmVmZXJlbmNlCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdmFyaWF0aW9ucwotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLSMgICB1bmRlZiBORE5CT09TVF9GVF9hbF9wYXRoCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfRlRfY2NfZmlsZSkKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfRlRfbG9vcAotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX2NjX2ZpbGUKLQotI2Vsc2UKLQotIyAgIGVycm9yICJhcmd1bWVudCBtaXNzaW5nIgotCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0ZUX2xvb3AKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX3VuZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwPgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvbWFzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyYTViZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF9yZXRhZ19kZWZhdWx0X2NjL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGd1YXJkZWQgZXh0ZXJuYWxseQotCi0jaWZkZWYgX19XQVZFX18KLS8vIHRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbSB0aGUgbWFzdGVyLmhwcCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQotIyAgIHByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfVkFMVUUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9kZWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy9hbGlhc2VzX2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWZUYWc+IHN0cnVjdCBzZWxlY3Rvcl9iaXRzCi0gIHsKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIG5vbl9tZW1iZXJ8bWVtYmVyfG5vbl92YXJpYWRpY3x2YXJpYWRpYwotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMSkKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIHZhbHVlID0gKAotICAgICAgICAoOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxUYWc+Ojp2YWx1ZSAmIE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MpIAotICAgICAgfCAoOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxSZWZUYWc+Ojp2YWx1ZSAmIE5ETkJPT1NUX1BQX1NMT1QoMSkpCi0gICAgKSk7Ci0gIH07Ci0KLSAgdGVtcGxhdGU8Yml0c190IFNlbGVjdG9yQml0cz4gc3RydWN0IGRlZmF1bHRfY2NfdGFnOyAKLSAgCi0gIHRlbXBsYXRlPGNsYXNzIFRhZywgY2xhc3MgUmVmVGFnPiBzdHJ1Y3QgcmV0YWdfZGVmYXVsdF9jYwotICAgIDogZGV0YWlsOjpjb21wb3VuZF90YWcKLSAgICAgIDwgVGFnLCBkZXRhaWw6OmRlZmF1bHRfY2NfdGFnPCAKLSAgICAgICAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpzZWxlY3Rvcl9iaXRzPFRhZyxSZWZUYWc+Ojp2YWx1ZSA+ID4KLSAgeyB9OwotCi0gIHRlbXBsYXRlPGJpdHNfdCBTZWxlY3RvckJpdHM+IHN0cnVjdCBkZWZhdWx0X2NjX3RhZwotICB7Ci0gICAgdHlwZWRlZiBudWxsX3RhZzo6Yml0cyBiaXRzOwotICAgIHR5cGVkZWYgbnVsbF90YWc6Om1hc2sgbWFzazsKLSAgfTsKLQotICBjbGFzcyB0ZXN0X2NsYXNzOwotICB0eXBlZGVmIGNvbnN0YW50PE5ETkJPT1NUX0ZUX2NjX21hc2s+IGNjX21hc2tfY29uc3RhbnQ7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfc2VsZiBcCi0gICAgICA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvbWFzdGVyLmhwcD4KLQotIyAgIGRlZmluZSAgZGVmYXVsdF9jY18gTkROQk9PU1RfRlRfZGVmYXVsdF9jYwotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBkZWZhdWx0X2NjX3xub25fbWVtYmVyfG5vbl92YXJpYWRpYwotIyAgIGRlZmluZSAgTkROQk9PU1RfRlRfdGVzdGVyIHZvaWQgKCp0ZXN0ZXIpKCkKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgTkROQk9PU1RfRlRfc2VsZgotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgZGVmYXVsdF9jY198bm9uX21lbWJlcnx2YXJpYWRpYwotIyAgIGRlZmluZSAgTkROQk9PU1RfRlRfdGVzdGVyIHZvaWQgKCp0ZXN0ZXIpKC4uLikKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgTkROQk9PU1RfRlRfc2VsZgotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgZGVmYXVsdF9jY198bWVtYmVyfG5vbl92YXJpYWRpYwotIyAgIGRlZmluZSAgTkROQk9PU1RfRlRfdGVzdGVyIHZvaWQgKHRlc3RfY2xhc3M6Oip0ZXN0ZXIpKCkKLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgTkROQk9PU1RfRlRfc2VsZgotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgZGVmYXVsdF9jY198bWVtYmVyfHZhcmlhZGljCi0jICAgZGVmaW5lICBORE5CT09TVF9GVF90ZXN0ZXIgdm9pZCAodGVzdF9jbGFzczo6KnRlc3RlcikoLi4uKQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRiBORE5CT09TVF9GVF9zZWxmCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotCi0jICAgdW5kZWYgICBkZWZhdWx0X2NjXwotCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfc2VsZgotCi19IH0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2FsaWFzZXNfdW5kZWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9lbmNvZGluZy91bmRlZi5ocHA+Ci0KLSNlbHNlIC8vIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfVkFMVUUpCi0KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDEpCi0KLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8TkROQk9PU1RfUFBfU0xPVCgxKT4gCi0gIHsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0ZUX3Rlc3RlcjsKLSAgICB0eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj46OmJpdHMsY2NfbWFza19jb25zdGFudD4gYml0czsKLSAgICB0eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLSAgfTsKLQotIyAgIHVuZGVmIE5ETkJPT1NUX0ZUX3Rlc3RlcgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTJiN2U5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3JldGFnX2RlZmF1bHRfY2MvcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBndWFyZGVkIGV4dGVybmFsbHkKLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgewotbmFtZXNwYWNlIGRldGFpbAotewotdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWZUYWc+IHN0cnVjdCBzZWxlY3Rvcl9iaXRzCi17Ci1ORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCB2YWx1ZSA9ICgKLSg6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFRhZz4gOjp2YWx1ZSAmIDB4MDAwMDgwMDApIAotfCAoOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxSZWZUYWc+IDo6dmFsdWUgJiA4MDIpCi0pKTsKLX07Ci10ZW1wbGF0ZTxiaXRzX3QgU2VsZWN0b3JCaXRzPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc7IAotdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBSZWZUYWc+IHN0cnVjdCByZXRhZ19kZWZhdWx0X2NjCi06IGRldGFpbDo6Y29tcG91bmRfdGFnCi08IFRhZywgZGV0YWlsOjpkZWZhdWx0X2NjX3RhZzwgCi06Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpzZWxlY3Rvcl9iaXRzPFRhZyxSZWZUYWc+IDo6dmFsdWUgPiA+Ci17IH07Ci10ZW1wbGF0ZTxiaXRzX3QgU2VsZWN0b3JCaXRzPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWcKLXsKLXR5cGVkZWYgbnVsbF90YWc6OmJpdHMgYml0czsKLXR5cGVkZWYgbnVsbF90YWc6Om1hc2sgbWFzazsKLX07Ci1jbGFzcyB0ZXN0X2NsYXNzOwotdHlwZWRlZiBjb25zdGFudDwweDAwZmY4MDAwPiBjY19tYXNrX2NvbnN0YW50OwotdGVtcGxhdGU8ID4gc3RydWN0IGRlZmF1bHRfY2NfdGFnPDMzMjgyPiAKLXsKLXR5cGVkZWYgdm9pZCAoICp0ZXN0ZXIpKCk7Ci10eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj4gOjpiaXRzLGNjX21hc2tfY29uc3RhbnQ+IGJpdHM7Ci10eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLX07Ci10ZW1wbGF0ZTwgPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8MzMwMjY+IAotewotdHlwZWRlZiB2b2lkICggKnRlc3RlcikoIC4uLiApOwotdHlwZWRlZiBtcGw6OmJpdGFuZF88Y29tcG9uZW50czx0ZXN0ZXI+IDo6Yml0cyxjY19tYXNrX2NvbnN0YW50PiBiaXRzOwotdHlwZWRlZiBjY19tYXNrX2NvbnN0YW50IG1hc2s7Ci19OwotdGVtcGxhdGU8ID4gc3RydWN0IGRlZmF1bHRfY2NfdGFnPDMzMzEyPiAKLXsKLXR5cGVkZWYgdm9pZCAodGVzdF9jbGFzczo6ICp0ZXN0ZXIpKCk7Ci10eXBlZGVmIG1wbDo6Yml0YW5kXzxjb21wb25lbnRzPHRlc3Rlcj4gOjpiaXRzLGNjX21hc2tfY29uc3RhbnQ+IGJpdHM7Ci10eXBlZGVmIGNjX21hc2tfY29uc3RhbnQgbWFzazsKLX07Ci10ZW1wbGF0ZTwgPiBzdHJ1Y3QgZGVmYXVsdF9jY190YWc8MzMwNTY+IAotewotdHlwZWRlZiB2b2lkICh0ZXN0X2NsYXNzOjogKnRlc3RlcikoIC4uLiApOwotdHlwZWRlZiBtcGw6OmJpdGFuZF88Y29tcG9uZW50czx0ZXN0ZXI+IDo6Yml0cyxjY19tYXNrX2NvbnN0YW50PiBiaXRzOwotdHlwZWRlZiBjY19tYXNrX2NvbnN0YW50IG1hc2s7Ci19OwotfSB9IH0gCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL2NjX3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL2NjX3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViODBhMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9jY190YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb25zCi0KLSAgc3RydWN0IE5ETkJPT1NUX0ZUX2NjX25hbWUKLSAgewotICAgIHR5cGVkZWYgZGV0YWlsOjplbmNvZGVfYml0czwwLE5ETkJPT1NUX0ZUX2NjX2lkPiBiaXRzOwotICAgIHR5cGVkZWYgZGV0YWlsOjpjb25zdGFudDxORE5CT09TVF9GVF9jY19tYXNrPiBtYXNrOwotICB9OwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvbWFzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvbWFzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU4NjM0Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGd1YXJkZWQgZXh0ZXJuYWxseQotCi0jaWZkZWYgX19XQVZFX18KLS8vIHRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbSB0aGUgbWFzdGVyLmhwcCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQotIyAgIHByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZUX0NPTkZJR19IUFBfSU5DTFVERUQpCi0jICAgZXJyb3IgInRoaXMgZmlsZSB1c2VkIHdpdGggdHdvLXBhc3MgcHJlcHJvY2Vzc2luZywgb25seSIKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci0KLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljLE5ETkJPT1NUX0ZUX3ZhcmlhZGljX21hc2s+IG5vbl92YXJpYWRpYzsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfdmFyaWFkaWMsTkROQk9PU1RfRlRfdmFyaWFkaWNfbWFzaz4gICAgIHZhcmlhZGljOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCxORE5CT09TVF9GVF9jb25zdD4gICAgICAgICAgICAgICAgICAgICBub25fY29uc3Q7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX2NvbnN0LE5ETkJPT1NUX0ZUX2NvbnN0PiAgICAgICAgY29uc3RfcXVhbGlmaWVkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCxORE5CT09TVF9GVF92b2xhdGlsZT4gICAgICAgICAgICAgICAgICBub25fdm9sYXRpbGU7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX3ZvbGF0aWxlLE5ETkJPT1NUX0ZUX3ZvbGF0aWxlPiAgdm9sYXRpbGVfcXVhbGlmaWVkOyAKLQotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9kZWZhdWx0X2NjLE5ETkJPT1NUX0ZUX2NjX21hc2s+IGRlZmF1bHRfY2M7Ci0KLSNkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfRlRfY29uc3R8TkROQk9PU1RfRlRfdm9sYXRpbGUgCi0jaW5jbHVkZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVCgxKQotCi10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9QUF9TTE9UKDEpPiBub25fY3Y7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX2NvbnN0ICAgLCBORE5CT09TVF9QUF9TTE9UKDEpPiBjb25zdF9ub25fdm9sYXRpbGU7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX3ZvbGF0aWxlLCBORE5CT09TVF9QUF9TTE9UKDEpPiB2b2xhdGlsZV9ub25fY29uc3Q7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPE5ETkJPT1NUX1BQX1NMT1QoMSkgLCBORE5CT09TVF9QUF9TTE9UKDEpPiBjdl9xdWFsaWZpZWQ7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gIHR5cGVkZWYgY29uc3RhbnQ8TkROQk9PU1RfRlRfZnVsbF9tYXNrPiBmdWxsX21hc2s7Ci0KLSAgdGVtcGxhdGUgPGJpdHNfdCBGbGFncywgYml0c190IENDSUQ+IHN0cnVjdCBlbmNvZGVfYml0c19pbXBsCi0gIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJpdHNfdCwgdmFsdWUgPSAKLSAgICAgIEZsYWdzIHwgKE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MgKiBDQ0lEKSA8PCAxICk7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGJpdHNfdCBGbGFncywgYml0c190IENDSUQsIHN0ZDo6c2l6ZV90IEFyaXR5PiAKLSAgc3RydWN0IGVuY29kZV9jaGFycl9pbXBsCi0gIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKHN0ZDo6c2l6ZV90KSgxKwotICAgICAgRmxhZ3MgfCAoTkROQk9PU1RfRlRfZGVmYXVsdF9jYyAqIENDSUQpIDw8IDEgfCBBcml0eSA8PCBORE5CT09TVF9GVF9hcml0eV9zaGlmdAotICAgICkpOwotICB9OwotCi0gIHRlbXBsYXRlIDxiaXRzX3QgQml0cz4gc3RydWN0IGRlY29kZV9iaXRzCi0gIHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCBmbGFncyA9IEJpdHMgJiBORE5CT09TVF9GVF9mbGFnc19tYXNrKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNjX2lkID0gCi0gICAgICAoIChCaXRzICYgTkROQk9PU1RfRlRfZnVsbF9tYXNrKSAvIE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MpID4+IDEgCi0gICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIHRhZ19iaXRzID0gKEJpdHMgJiBORE5CT09TVF9GVF9mdWxsX21hc2spKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgYXJpdHkgPSAoc3RkOjpzaXplX3QpCi0gICAgICAoQml0cyA+PiBORE5CT09TVF9GVF9hcml0eV9zaGlmdCkgCi0gICAgKTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Yml0c190IExIU19iaXRzLCBiaXRzX3QgTEhTX21hc2ssIGJpdHNfdCBSSFNfYml0cywgYml0c190IFJIU19tYXNrPgotICBzdHJ1Y3QgdGFnX2ljZQotICB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIG1hdGNoID0KLSAgICAgIFJIU19iaXRzID09IChMSFNfYml0cyAmIFJIU19tYXNrICYgKFJIU19iaXRzIHx+TkROQk9PU1RfRlRfdHlwZV9tYXNrKSkKLSAgICApOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY29tYmluZWRfYml0cyA9IAotICAgICAgKExIU19iaXRzICYgflJIU19tYXNrKSB8IFJIU19iaXRzCi0gICAgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNvbWJpbmVkX21hc2sgPQotICAgICAgTEhTX21hc2sgfCBSSFNfbWFzawotICAgICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYml0c190LCBleHRyYWN0ZWRfYml0cyA9Ci0gICAgICBMSFNfYml0cyAmIFJIU19tYXNrCi0gICAgKTsKLQotICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX21hc2sgTkROQk9PU1RfRlRfdHlwZV9tYXNrCi0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX2NhbGxhYmxlX2J1aWx0aW4sTkROQk9PU1RfRlRfbWFzaz4gICAgICAgICAgICBjYWxsYWJsZV9idWlsdGluX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbm9uX21lbWJlcl9jYWxsYWJsZV9idWlsdGluLE5ETkJPT1NUX0ZUX21hc2s+IG5vbm1lbWJlcl9jYWxsYWJsZV9idWlsdGluX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfZnVuY3Rpb24sTkROQk9PU1RfRlRfbWFzaz4gICAgICAgZnVuY3Rpb25fdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9yZWZlcmVuY2UsTkROQk9PU1RfRlRfbWFzaz4gICAgICByZWZlcmVuY2VfdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9wb2ludGVyLE5ETkJPT1NUX0ZUX21hc2s+ICAgICAgICBwb2ludGVyX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsTkROQk9PU1RfRlRfbWFzaz4gbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfdGFnOwotICB0eXBlZGVmIHByb3BlcnR5X3RhZzxORE5CT09TVF9GVF9tZW1iZXJfb2JqZWN0X3BvaW50ZXIsTkROQk9PU1RfRlRfbWFzaz4gbWVtYmVyX29iamVjdF9wb2ludGVyX3RhZzsKLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8TkROQk9PU1RfRlRfbWVtYmVyX29iamVjdF9wb2ludGVyX2ZsYWdzLE5ETkJPT1NUX0ZUX2Z1bGxfbWFzaz4gbWVtYmVyX29iamVjdF9wb2ludGVyX2Jhc2U7Ci0gIHR5cGVkZWYgcHJvcGVydHlfdGFnPE5ETkJPT1NUX0ZUX21lbWJlcl9wb2ludGVyLE5ETkJPT1NUX0ZUX21hc2s+IG1lbWJlcl9wb2ludGVyX3RhZzsKLSN1bmRlZiAgTkROQk9PU1RfRlRfbWFzayAKLQotI2RlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfZGVmYXVsdF9jYwotI2luY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMSkKLSNkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfRlRfdHlwZV9tYXNrfE5ETkJPT1NUX0ZUX3ZhcmlhZGljX21hc2t8TkROQk9PU1RfRlRfY2NfbWFzawotI2luY2x1ZGUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoMikKLQotICB0eXBlZGVmIHByb3BlcnR5X3RhZzwgTkROQk9PU1RfUFBfU0xPVCgxKSAsIE5ETkJPT1NUX1BQX1NMT1QoMikgPiBudl9kY2NfZnVuYzsKLQotI2RlZmluZSBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2RlZmF1bHRfY2MKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDEpCi0KLSAgdHlwZWRlZiBwcm9wZXJ0eV90YWc8IE5ETkJPT1NUX1BQX1NMT1QoMSkgLCBORE5CT09TVF9QUF9TTE9UKDIpID4gbnZfZGNjX21mcDsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXMKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdGFncy9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDQ5OTU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3RhZ3MvcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBndWFyZGVkIGV4dGVybmFsbHkKLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgewotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwweDAwMDAwMjAwLDB4MDAwMDAzMDA+IG5vbl92YXJpYWRpYzsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MHgwMDAwMDEwMCwweDAwMDAwMzAwPiB2YXJpYWRpYzsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MCwweDAwMDAwNDAwPiBub25fY29uc3Q7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDA0MDAsMHgwMDAwMDQwMD4gY29uc3RfcXVhbGlmaWVkOwotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwwLDB4MDAwMDA4MDA+IG5vbl92b2xhdGlsZTsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MHgwMDAwMDgwMCwweDAwMDAwODAwPiB2b2xhdGlsZV9xdWFsaWZpZWQ7IAotdHlwZWRlZiBkZXRhaWw6OnByb3BlcnR5X3RhZzwweDAwMDA4MDAwLDB4MDBmZjgwMDA+IGRlZmF1bHRfY2M7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDAgLCAzMDcyPiBub25fY3Y7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDA0MDAgLCAzMDcyPiBjb25zdF9ub25fdm9sYXRpbGU7Ci10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDB4MDAwMDA4MDAsIDMwNzI+IHZvbGF0aWxlX25vbl9jb25zdDsKLXR5cGVkZWYgZGV0YWlsOjpwcm9wZXJ0eV90YWc8MzA3MiAsIDMwNzI+IGN2X3F1YWxpZmllZDsKLW5hbWVzcGFjZSBkZXRhaWwgewotdHlwZWRlZiBjb25zdGFudDwweDAwZmYwZmZmPiBmdWxsX21hc2s7Ci10ZW1wbGF0ZSA8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRD4gc3RydWN0IGVuY29kZV9iaXRzX2ltcGwKLXsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYml0c190LCB2YWx1ZSA9IAotRmxhZ3MgfCAoMHgwMDAwODAwMCAqIENDSUQpIDw8IDEgKTsKLX07Ci10ZW1wbGF0ZSA8Yml0c190IEZsYWdzLCBiaXRzX3QgQ0NJRCwgc3RkOjpzaXplX3QgQXJpdHk+IAotc3RydWN0IGVuY29kZV9jaGFycl9pbXBsCi17Ci1ORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKHN0ZDo6c2l6ZV90KSgxKwotRmxhZ3MgfCAoMHgwMDAwODAwMCAqIENDSUQpIDw8IDEgfCBBcml0eSA8PCAyNAotKSk7Ci19OwotdGVtcGxhdGUgPGJpdHNfdCBCaXRzPiBzdHJ1Y3QgZGVjb2RlX2JpdHMKLXsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGZsYWdzID0gQml0cyAmIDB4MDAwMDBmZmYpOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgY2NfaWQgPSAKLSggKEJpdHMgJiAweDAwZmYwZmZmKSAvIDB4MDAwMDgwMDApID4+IDEgCi0pOwotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJpdHNfdCwgdGFnX2JpdHMgPSAoQml0cyAmIDB4MDBmZjBmZmYpKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgYXJpdHkgPSAoc3RkOjpzaXplX3QpCi0oQml0cyA+PiAyNCkgCi0pOwotfTsKLXRlbXBsYXRlIDxiaXRzX3QgTEhTX2JpdHMsIGJpdHNfdCBMSFNfbWFzaywgYml0c190IFJIU19iaXRzLCBiaXRzX3QgUkhTX21hc2s+Ci1zdHJ1Y3QgdGFnX2ljZQotewotTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIG1hdGNoID0KLVJIU19iaXRzID09IChMSFNfYml0cyAmIFJIU19tYXNrICYgKFJIU19iaXRzIHwgfjB4MDAwMDAwZmYpKQotKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNvbWJpbmVkX2JpdHMgPSAKLShMSFNfYml0cyAmIH5SSFNfbWFzaykgfCBSSFNfYml0cwotKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGNvbWJpbmVkX21hc2sgPQotTEhTX21hc2sgfCBSSFNfbWFzawotKTsKLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChiaXRzX3QsIGV4dHJhY3RlZF9iaXRzID0KLUxIU19iaXRzICYgUkhTX21hc2sKLSk7Ci19OwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDAwMSwweDAwMDAwMGZmPiBjYWxsYWJsZV9idWlsdGluX3RhZzsKLXR5cGVkZWYgcHJvcGVydHlfdGFnPDB4MDAwMDAwMDMsMHgwMDAwMDBmZj4gbm9ubWVtYmVyX2NhbGxhYmxlX2J1aWx0aW5fdGFnOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDAwNywweDAwMDAwMGZmPiBmdW5jdGlvbl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDEzLDB4MDAwMDAwZmY+IHJlZmVyZW5jZV90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMDBiLDB4MDAwMDAwZmY+IHBvaW50ZXJfdGFnOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDA2MSwweDAwMDAwMGZmPiBtZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMGEzLDB4MDAwMDAwZmY+IG1lbWJlcl9vYmplY3RfcG9pbnRlcl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwweDAwMDAwMmEzLDB4MDBmZjBmZmY+IG1lbWJlcl9vYmplY3RfcG9pbnRlcl9iYXNlOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8MHgwMDAwMDAyMCwweDAwMDAwMGZmPiBtZW1iZXJfcG9pbnRlcl90YWc7Ci10eXBlZGVmIHByb3BlcnR5X3RhZzwgMzMyODcgLCAxNjc0NTQ3MSA+IG52X2RjY19mdW5jOwotdHlwZWRlZiBwcm9wZXJ0eV90YWc8IDMzMzc3ICwgMTY3NDU0NzEgPiBudl9kY2NfbWZwOwotfSAKLX0gfSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL21hc3Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MGE1MTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfdmFyaWF0ZV9sb29wL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZkZWYgX19XQVZFX18KLS8vIHRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbSB0aGUgbWFzdGVyLmhwcCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQotIyAgIHByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGVycm9yICJ0aGlzIGZpbGUgaXMgb25seSBmb3IgdHdvLXBhc3MgcHJlcHJvY2Vzc2luZyIKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfVkFMVUUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2V4cGFuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL2VuY29kaW5nL2RlZi5ocHA+Ci0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfbWZwIDAKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb24KLQotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfdmFyaWFkaWMKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBpZiAhTkROQk9PU1RfRlRfTk9fQ1ZfRlVOQ19TVVBQT1JUCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3QKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9mdW5jdGlvbnxORE5CT09TVF9GVF92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdAotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX2Z1bmN0aW9ufE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpY3xORE5CT09TVF9GVF92b2xhdGlsZQotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX2Z1bmN0aW9ufE5ETkJPT1NUX0ZUX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2NvbnN0fE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3R8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZW5kaWYKLQotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgIE5ETkJPT1NUX0ZUX3N5bnRheAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9wb2ludGVyCi0KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX3BvaW50ZXJ8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfcG9pbnRlcnxORE5CT09TVF9GVF92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmICBORE5CT09TVF9GVF9zeW50YXgKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb25fcmVmZXJlbmNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfcmVmZXJlbmNlfE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfcmVmZXJlbmNlfE5ETkJPT1NUX0ZUX3ZhcmlhZGljCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgdW5kZWYgIE5ETkJPT1NUX0ZUX3N5bnRheAotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmICBORE5CT09TVF9GVF9tZnAKLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9tZnAgMQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcgotCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWMKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF92YXJpYWRpYwotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX25vbl92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdAotIyAgIGluY2x1ZGUgX19GSUxFX18KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIFwKLSAgICAgIE5ETkJPT1NUX0ZUX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyfE5ETkJPT1NUX0ZUX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX2NvbnN0Ci0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfbm9uX3ZhcmlhZGljfE5ETkJPT1NUX0ZUX3ZvbGF0aWxlCi0jICAgaW5jbHVkZSBfX0ZJTEVfXwotIyAgIGRlZmluZSAgTkROQk9PU1RfUFBfVkFMVUUgXAotICAgICAgTkROQk9PU1RfRlRfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJ8TkROQk9PU1RfRlRfdmFyaWFkaWN8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF9ub25fdmFyaWFkaWN8TkROQk9PU1RfRlRfY29uc3R8TkROQk9PU1RfRlRfdm9sYXRpbGUKLSMgICBpbmNsdWRlIF9fRklMRV9fCi0jICAgZGVmaW5lICBORE5CT09TVF9QUF9WQUxVRSBcCi0gICAgICBORE5CT09TVF9GVF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcnxORE5CT09TVF9GVF92YXJpYWRpY3xORE5CT09TVF9GVF9jb25zdHxORE5CT09TVF9GVF92b2xhdGlsZQotIyAgIGluY2x1ZGUgX19GSUxFX18KLQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmICBORE5CT09TVF9GVF9zeW50YXgKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSB1bmRlZiAgTkROQk9PU1RfRlRfbWZwCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvZW5jb2RpbmcvdW5kZWYuaHBwPgotI2Vsc2UgCi0KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDEpCi0KLSMgICBkZWZpbmUgIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1NMT1QoMSkgJiBORE5CT09TVF9GVF9raW5kX21hc2sKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UKDIpCi0KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSBpZiAhIShORE5CT09TVF9QUF9TTE9UKDIpICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGlmIChORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLQotIyAgIGlmICggTkROQk9PU1RfUFBfU0xPVCgxKSAmIChORE5CT09TVF9GVF92YXJpYWRpYykgKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jICAgZWxzZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyAgIGVuZGlmCi0KLSMgICBpZiAhKCBORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX3ZvbGF0aWxlKSApCi0jICAgICBpZiAhKCBORE5CT09TVF9QUF9TTE9UKDEpICYgKE5ETkJPT1NUX0ZUX2NvbnN0KSApCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jICAgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3QKLSMgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgaWYgISggTkROQk9PU1RfUFBfU0xPVCgxKSAmIChORE5CT09TVF9GVF9jb25zdCkgKQotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jICAgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3Qgdm9sYXRpbGUKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLU5ETkJPT1NUX1BQX0VYUEFORCgjKSAgIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyBORE5CT09TVF9QUF9TTE9UKDEpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9jdgotTkROQk9PU1RfUFBfRVhQQU5EKCMpICAgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgICB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotTkROQk9PU1RfUFBfRVhQQU5EKCMpIGVuZGlmCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZW5kaWYKLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF92YXJpYXRlX2xvb3AvcHJlcHJvY2Vzc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2NjMGM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX3ZhcmlhdGVfbG9vcC9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgzICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gdGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBmcm9tIHRoZSBtYXN0ZXIuaHBwIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tZnAgMAotIyBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfZnVuY3Rpb24KLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoNTE5ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDUxOQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgyNjMgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNjMKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgIU5ETkJPT1NUX0ZUX05PX0NWX0ZVTkNfU1VQUE9SVAotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgxNTQzICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdAotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMTU0MwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDQgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgxMjg3ICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IGNvbnN0Ci0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAxMjg3Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoNCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI1NjcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNTY3Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoNCAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDIzMTEgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3Ygdm9sYXRpbGUKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDIzMTEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMzU5MSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3Qgdm9sYXRpbGUKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDM1OTEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg0ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMzMzNSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzMzNQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9zeW50YXgKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX3N5bnRheCBORE5CT09TVF9GVF90eXBlX2Z1bmN0aW9uX3BvaW50ZXIKLSMgaWYgISAhICg4ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoNTIzICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDUyMwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDggJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgyNjcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNjcKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgdW5kZWYgTkROQk9PU1RfRlRfc3ludGF4Ci0jIGRlZmluZSBORE5CT09TVF9GVF9zeW50YXggTkROQk9PU1RfRlRfdHlwZV9mdW5jdGlvbl9yZWZlcmVuY2UKLSMgaWYgISAhICgxNiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDUzMSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyA1MzEKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICgxNiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI3NSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDI3NQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9zeW50YXgKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWZwCi0jIGRlZmluZSBORE5CT09TVF9GVF9tZnAgMQotIyBkZWZpbmUgTkROQk9PU1RfRlRfc3ludGF4IE5ETkJPT1NUX0ZUX3R5cGVfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDYwOSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyA2MDkKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDM1MyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiAKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDM1MwotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMTYzMyAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0gTkROQk9PU1RfRlRfTlVMTEFSWV9QQVJBTQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3QKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDE2MzMKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDEzNzcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsIC4uLgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyBkZWZpbmUgTkROQk9PU1RfRlRfY3YgY29uc3QKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2ZsYWdzIDEzNzcKLSMgaW5jbHVkZSBORE5CT09TVF9GVF92YXJpYXRlX2ZpbGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfY3YKLSMgdW5kZWYgTkROQk9PU1RfRlRfZWxsCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgdW5kZWYgTkROQk9PU1RfRlRfZmxhZ3MKLSMgZW5kaWYKLSMgZW5kaWYKLSMgaWYgISAhICg5NiAmIChORE5CT09TVF9GVF92YXJpYXRpb25zKSkKLSMgaWYgKDI2NTcgJiAoTkROQk9PU1RfRlRfY29uZCkpID09IChORE5CT09TVF9GVF9jb25kKQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZWxsCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX05VTExBUllfUEFSQU0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNjU3Ci0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoOTYgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgyNDAxICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbCAuLi4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX251bGxhcnlfcGFyYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2N2IHZvbGF0aWxlCi0jIGRlZmluZSBORE5CT09TVF9GVF9mbGFncyAyNDAxCi0jIGluY2x1ZGUgTkROQk9PU1RfRlRfdmFyaWF0ZV9maWxlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2N2Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX2VsbAotIyB1bmRlZiBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jIGVuZGlmCi0jIGVuZGlmCi0jIGlmICEgISAoOTYgJiAoTkROQk9PU1RfRlRfdmFyaWF0aW9ucykpCi0jIGlmICgzNjgxICYgKE5ETkJPT1NUX0ZUX2NvbmQpKSA9PSAoTkROQk9PU1RfRlRfY29uZCkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX2VsbAotIyBkZWZpbmUgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbSBORE5CT09TVF9GVF9OVUxMQVJZX1BBUkFNCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzY4MQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyBpZiAhICEgKDk2ICYgKE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMpKQotIyBpZiAoMzQyNSAmIChORE5CT09TVF9GVF9jb25kKSkgPT0gKE5ETkJPT1NUX0ZUX2NvbmQpCi0jIGRlZmluZSBORE5CT09TVF9GVF9lbGwgLi4uCi0jIGRlZmluZSBORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtCi0jIGRlZmluZSBORE5CT09TVF9GVF9jdiBjb25zdCB2b2xhdGlsZQotIyBkZWZpbmUgTkROQk9PU1RfRlRfZmxhZ3MgMzQyNQotIyBpbmNsdWRlIE5ETkJPT1NUX0ZUX3ZhcmlhdGVfZmlsZQotIyB1bmRlZiBORE5CT09TVF9GVF9jdgotIyB1bmRlZiBORE5CT09TVF9GVF9lbGwKLSMgdW5kZWYgTkROQk9PU1RfRlRfbnVsbGFyeV9wYXJhbQotIyB1bmRlZiBORE5CT09TVF9GVF9mbGFncwotIyBlbmRpZgotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9GVF9zeW50YXgKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWZwCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9yZXRhZ19kZWZhdWx0X2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTU0OWNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3JldGFnX2RlZmF1bHRfY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9SRVRBR19ERUZBVUxUX0NDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfUkVUQUdfREVGQVVMVF9DQ19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iaXRhbmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0ZUX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9tYXN0ZXIuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvcHBfcmV0YWdfZGVmYXVsdF9jYy9wcmVwcm9jZXNzZWQuaHBwPgotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmE2ZmYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9TWU5USEVTSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfU1lOVEhFU0laRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbmZpZy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL3Byb3BlcnR5X3RhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9jdl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9yZXRhZ19kZWZhdWx0X2NjLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGJpdHNfdCBGbGFncywgYml0c190IENDSUQsIHN0ZDo6c2l6ZV90IFNpemU+Ci1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX28KLXsKLSAgdGVtcGxhdGU8dHlwZW5hbWUgU2VxPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kgeyB9OwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VxLCBiaXRzX3QgQml0cz4KLXN0cnVjdCBzeW50aGVzaXplX2ltcGwKLSAgOiBkZXRhaWw6OnN5bnRoZXNpemVfaW1wbF9vCi0gICAgPCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpkZWNvZGVfYml0czxCaXRzPjo6ZmxhZ3MKLSAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmRlY29kZV9iaXRzPEJpdHM+OjpjY19pZAotICAgICwgOjpuZG5ib29zdDo6bXBsOjpzaXplPFNlcT46OnZhbHVlCi0gICAgPgotICAgIDo6dGVtcGxhdGUgc3ludGhlc2l6ZV9pbXBsX2k8U2VxPgoteyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZXEsIHR5cGVuYW1lIFRhZz4KLXN0cnVjdCBzeW50aGVzaXplX2Z1bmMKLSAgOiBkZXRhaWw6OnN5bnRoZXNpemVfaW1wbAotICAgIDwgU2VxCi0gICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzCi0gICAgICA8IGRldGFpbDo6cmV0YWdfZGVmYXVsdF9jYwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjp0YWc8bnZfZGNjX2Z1bmMsIFRhZz4gPiAKLSAgICAgID46OnZhbHVlIAotICAgID4KLXsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VxLCB0eXBlbmFtZSBUYWc+Ci1zdHJ1Y3Qgc3ludGhlc2l6ZV9tZnAKLSAgOiBkZXRhaWw6OnN5bnRoZXNpemVfaW1wbAotICAgIDwgU2VxIAotICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0cwotICAgICAgPCBkZXRhaWw6OnJldGFnX2RlZmF1bHRfY2MKLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6dGFnCi0gICAgICAgICAgPCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgdHlwZW5hbWUgbXBsOjphdF9jPFNlcSwxPjo6dHlwZSA+Ojp0YWcKLSAgICAgICAgICAsIG52X2RjY19tZnAsIFRhZwotICAgICAgICA+ID4KLSAgICAgID46OnZhbHVlCi0gICAgPgoteyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTLCB0eXBlbmFtZSBSID0gdHlwZW5hbWUgbXBsOjphdF9jPFMsMD46OnR5cGUsCi0gICAgdHlwZW5hbWUgQyA9IHR5cGVuYW1lIG1wbDo6YXRfYzxTLDE+Ojp0eXBlPgotc3RydWN0IHN5bnRoZXNpemVfbW9wCi17Ci0gIHR5cGVkZWYgUiBDOjoqIHR5cGU7Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZUX3ZhcmlhdGlvbnMgTkROQk9PU1RfRlRfZnVuY3Rpb258TkROQk9PU1RfRlRfbWVtYmVyX3BvaW50ZXIKLSNkZWZpbmUgTkROQk9PU1RfRlRfYWxfcGF0aCBuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwPgotCi19IH0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkYjNiZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkxMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzNCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChORE5CT09TVF9GVF9udWxsYXJ5X3BhcmFtIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTApIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTEwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYmIyYzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjYgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpICggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDcpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw4KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxMCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxMSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MjBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFkMmEwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTEwXzAuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDExKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxNCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAxNyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMTkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyMCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxOSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIxID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8xLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Nzc2YzgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTIwXzEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTI3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MTBfMS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTEpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEyID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTIpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDEzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDEzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTQpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE1ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTUpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTcpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE4ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwxNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTgpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDE5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMTkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDE5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDIxID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkzMF8wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDgzOGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzE3ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gbm8gaW5jbHVkZSBndWFyZHMsIHRoaXMgZmlsZSBpcyBpbnRlbmRlZCBmb3IgbXVsdGlwbGUgaW5jbHVzaW9uCi0KLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfc3ludGF4ICAgICB0eXBlIG1hY3JvIHRvIHVzZQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jYyAgICAgICAgIGVtcHR5IG9yIGNjIHNwZWNpZmllciAKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZWxsICAgICAgICBlbXB0eSBvciAiLi4uIgotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9jdiAgICAgICAgIGVtcHR5IG9yIGN2IHF1YWxpZmllcnMKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfZmxhZ3MgICAgICBzaW5nbGUgZGVjaW1hbCBpbnRlZ2VyIGVuY29kaW5nIHRoZSBmbGFncwotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9uICAgICAgICAgIG51bWJlciBvZiBjb21wb25lbnQgdHlwZXMgKGFyaXR5KzEpCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX2FyaXR5ICAgICAgY3VycmVudCBhcml0eQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90eXBlICAgICAgIG1hY3JvIHRoYXQgZXhwYW5kcyB0byB0aGUgdHlwZQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF90cGxhcmdzKHApIHRlbXBsYXRlIGFyZ3VtZW50cyB3aXRoIGdpdmVuIHByZWZpeAotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9wYXJhbXMocCkgIHBhcmFtZXRlcnMgd2l0aCBnaXZlbiBwcmVmaXgKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MjBfMC5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGUoZmxhZ3MsY2MsYXJpdHkpIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KQotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpIG1ha2VfdHlwZV8gIyMgZmxhZ3MgIyMgXyAjIyBjYyAjIyBfICMjIGFyaXR5Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjEpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyMyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDI0ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjQpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyNiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDI3ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjcpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAyOSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMwID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzApCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ODI5ZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5MzBfMS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MjcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkyMF8xLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyMykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDIzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMjkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMjgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwyOSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDI5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTQwXzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NDBfMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZjFjM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NDBfMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MTcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHkzMF8wLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDMzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgMzcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDM5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzOSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NDBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4NWY1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyNyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX3N5bnRheCAgICAgdHlwZSBtYWNybyB0byB1c2UKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY2MgICAgICAgICBlbXB0eSBvciBjYyBzcGVjaWZpZXIgCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2VsbCAgICAgICAgZW1wdHkgb3IgIi4uLiIKLS8vIGlucHV0OiAgTkROQk9PU1RfRlRfY3YgICAgICAgICBlbXB0eSBvciBjdiBxdWFsaWZpZXJzCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2ZsYWdzICAgICAgc2luZ2xlIGRlY2ltYWwgaW50ZWdlciBlbmNvZGluZyB0aGUgZmxhZ3MKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfbiAgICAgICAgICBudW1iZXIgb2YgY29tcG9uZW50IHR5cGVzIChhcml0eSsxKQotLy8gb3V0cHV0OiBORE5CT09TVF9GVF9hcml0eSAgICAgIGN1cnJlbnQgYXJpdHkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHlwZSAgICAgICBtYWNybyB0aGF0IGV4cGFuZHMgdG8gdGhlIHR5cGUKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfdHBsYXJncyhwKSB0ZW1wbGF0ZSBhcmd1bWVudHMgd2l0aCBnaXZlbiBwcmVmaXgKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfcGFyYW1zKHApICBwYXJhbWV0ZXJzIHdpdGggZ2l2ZW4gcHJlZml4Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9hcml0eTMwXzEuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMxKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzMSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzMyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMzKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDMzKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM0KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM2KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzNyA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM2KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM3KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzOCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCwzNykgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCAzOSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsMzgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM5KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDM5KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQwKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NTBfMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI5YjZiNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMTcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8wLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0MiA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDEpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQyKQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxIE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQzID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDIpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDMpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0NSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDQpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ1KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQ2ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQyID4gOjp0eXBlIGl0ZXJfNDM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MyA+IDo6dHlwZSBpdGVyXzQ0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDQgPiA6OnR5cGUgaXRlcl80NTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDUpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDYpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA0OCA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDcpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotdGVtcGxhdGU8IHR5cGVuYW1lIFIgLCB0eXBlbmFtZSBUMCAsIHR5cGVuYW1lIFQxICwgdHlwZW5hbWUgVDIgLCB0eXBlbmFtZSBUMyAsIHR5cGVuYW1lIFQ0ICwgdHlwZW5hbWUgVDUgLCB0eXBlbmFtZSBUNiAsIHR5cGVuYW1lIFQ3ICwgdHlwZW5hbWUgVDggLCB0eXBlbmFtZSBUOSAsIHR5cGVuYW1lIFQxMCAsIHR5cGVuYW1lIFQxMSAsIHR5cGVuYW1lIFQxMiAsIHR5cGVuYW1lIFQxMyAsIHR5cGVuYW1lIFQxNCAsIHR5cGVuYW1lIFQxNSAsIHR5cGVuYW1lIFQxNiAsIHR5cGVuYW1lIFQxNyAsIHR5cGVuYW1lIFQxOCAsIHR5cGVuYW1lIFQxOSAsIHR5cGVuYW1lIFQyMCAsIHR5cGVuYW1lIFQyMSAsIHR5cGVuYW1lIFQyMiAsIHR5cGVuYW1lIFQyMyAsIHR5cGVuYW1lIFQyNCAsIHR5cGVuYW1lIFQyNSAsIHR5cGVuYW1lIFQyNiAsIHR5cGVuYW1lIFQyNyAsIHR5cGVuYW1lIFQyOCAsIHR5cGVuYW1lIFQyOSAsIHR5cGVuYW1lIFQzMCAsIHR5cGVuYW1lIFQzMSAsIHR5cGVuYW1lIFQzMiAsIHR5cGVuYW1lIFQzMyAsIHR5cGVuYW1lIFQzNCAsIHR5cGVuYW1lIFQzNSAsIHR5cGVuYW1lIFQzNiAsIHR5cGVuYW1lIFQzNyAsIHR5cGVuYW1lIFQzOCAsIHR5cGVuYW1lIFQzOSAsIHR5cGVuYW1lIFQ0MCAsIHR5cGVuYW1lIFQ0MSAsIHR5cGVuYW1lIFQ0MiAsIHR5cGVuYW1lIFQ0MyAsIHR5cGVuYW1lIFQ0NCAsIHR5cGVuYW1lIFQ0NSAsIHR5cGVuYW1lIFQ0NiAsIHR5cGVuYW1lIFQ0NyA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ4KQotewotdHlwZWRlZiBORE5CT09TVF9GVF9zeW50YXgoTkROQk9PU1RfRlRfY2MsdHlwZSBORE5CT09TVF9QUF9FTVBUWSkgKFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0ICwgVDI1ICwgVDI2ICwgVDI3ICwgVDI4ICwgVDI5ICwgVDMwICwgVDMxICwgVDMyICwgVDMzICwgVDM0ICwgVDM1ICwgVDM2ICwgVDM3ICwgVDM4ICwgVDM5ICwgVDQwICwgVDQxICwgVDQyICwgVDQzICwgVDQ0ICwgVDQ1ICwgVDQ2ICwgVDQ3IE5ETkJPT1NUX0ZUX2VsbCkgTkROQk9PU1RfRlRfY3YgOwotfTsKLXRlbXBsYXRlPCA+IAotc3RydWN0IHN5bnRoZXNpemVfaW1wbF9vPCBORE5CT09TVF9GVF9mbGFncywgTkROQk9PU1RfRlRfY2NfaWQsIDQ5ID4gCi17IAotdGVtcGxhdGU8dHlwZW5hbWUgUz4gc3RydWN0IHN5bnRoZXNpemVfaW1wbF9pCi17Ci1wcml2YXRlOgotdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmJlZ2luPFM+IDo6dHlwZSBpdGVyXzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8wID4gOjp0eXBlIGl0ZXJfMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEgPiA6OnR5cGUgaXRlcl8yOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMiA+IDo6dHlwZSBpdGVyXzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zID4gOjp0eXBlIGl0ZXJfNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQgPiA6OnR5cGUgaXRlcl81OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNSA+IDo6dHlwZSBpdGVyXzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl82ID4gOjp0eXBlIGl0ZXJfNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzcgPiA6OnR5cGUgaXRlcl84OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOCA+IDo6dHlwZSBpdGVyXzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl85ID4gOjp0eXBlIGl0ZXJfMTA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMCA+IDo6dHlwZSBpdGVyXzExOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTEgPiA6OnR5cGUgaXRlcl8xMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEyID4gOjp0eXBlIGl0ZXJfMTM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMyA+IDo6dHlwZSBpdGVyXzE0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTQgPiA6OnR5cGUgaXRlcl8xNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE1ID4gOjp0eXBlIGl0ZXJfMTY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNiA+IDo6dHlwZSBpdGVyXzE3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTcgPiA6OnR5cGUgaXRlcl8xODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE4ID4gOjp0eXBlIGl0ZXJfMTk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOSA+IDo6dHlwZSBpdGVyXzIwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjAgPiA6OnR5cGUgaXRlcl8yMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIxID4gOjp0eXBlIGl0ZXJfMjI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMiA+IDo6dHlwZSBpdGVyXzIzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjMgPiA6OnR5cGUgaXRlcl8yNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI0ID4gOjp0eXBlIGl0ZXJfMjU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNSA+IDo6dHlwZSBpdGVyXzI2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjYgPiA6OnR5cGUgaXRlcl8yNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI3ID4gOjp0eXBlIGl0ZXJfMjg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOCA+IDo6dHlwZSBpdGVyXzI5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjkgPiA6OnR5cGUgaXRlcl8zMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMwID4gOjp0eXBlIGl0ZXJfMzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMSA+IDo6dHlwZSBpdGVyXzMyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzIgPiA6OnR5cGUgaXRlcl8zMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMzID4gOjp0eXBlIGl0ZXJfMzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNCA+IDo6dHlwZSBpdGVyXzM1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzUgPiA6OnR5cGUgaXRlcl8zNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM2ID4gOjp0eXBlIGl0ZXJfMzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNyA+IDo6dHlwZSBpdGVyXzM4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzggPiA6OnR5cGUgaXRlcl8zOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM5ID4gOjp0eXBlIGl0ZXJfNDA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MCA+IDo6dHlwZSBpdGVyXzQxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDEgPiA6OnR5cGUgaXRlcl80MjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQyID4gOjp0eXBlIGl0ZXJfNDM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MyA+IDo6dHlwZSBpdGVyXzQ0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDQgPiA6OnR5cGUgaXRlcl80NTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ1ID4gOjp0eXBlIGl0ZXJfNDY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NiA+IDo6dHlwZSBpdGVyXzQ3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDcgPiA6OnR5cGUgaXRlcl80ODsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDgpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0+IDo6dHlwZSB0eXBlOwotfTsKLX07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgUiAsIHR5cGVuYW1lIFQwICwgdHlwZW5hbWUgVDEgLCB0eXBlbmFtZSBUMiAsIHR5cGVuYW1lIFQzICwgdHlwZW5hbWUgVDQgLCB0eXBlbmFtZSBUNSAsIHR5cGVuYW1lIFQ2ICwgdHlwZW5hbWUgVDcgLCB0eXBlbmFtZSBUOCAsIHR5cGVuYW1lIFQ5ICwgdHlwZW5hbWUgVDEwICwgdHlwZW5hbWUgVDExICwgdHlwZW5hbWUgVDEyICwgdHlwZW5hbWUgVDEzICwgdHlwZW5hbWUgVDE0ICwgdHlwZW5hbWUgVDE1ICwgdHlwZW5hbWUgVDE2ICwgdHlwZW5hbWUgVDE3ICwgdHlwZW5hbWUgVDE4ICwgdHlwZW5hbWUgVDE5ICwgdHlwZW5hbWUgVDIwICwgdHlwZW5hbWUgVDIxICwgdHlwZW5hbWUgVDIyICwgdHlwZW5hbWUgVDIzICwgdHlwZW5hbWUgVDI0ICwgdHlwZW5hbWUgVDI1ICwgdHlwZW5hbWUgVDI2ICwgdHlwZW5hbWUgVDI3ICwgdHlwZW5hbWUgVDI4ICwgdHlwZW5hbWUgVDI5ICwgdHlwZW5hbWUgVDMwICwgdHlwZW5hbWUgVDMxICwgdHlwZW5hbWUgVDMyICwgdHlwZW5hbWUgVDMzICwgdHlwZW5hbWUgVDM0ICwgdHlwZW5hbWUgVDM1ICwgdHlwZW5hbWUgVDM2ICwgdHlwZW5hbWUgVDM3ICwgdHlwZW5hbWUgVDM4ICwgdHlwZW5hbWUgVDM5ICwgdHlwZW5hbWUgVDQwICwgdHlwZW5hbWUgVDQxICwgdHlwZW5hbWUgVDQyICwgdHlwZW5hbWUgVDQzICwgdHlwZW5hbWUgVDQ0ICwgdHlwZW5hbWUgVDQ1ICwgdHlwZW5hbWUgVDQ2ICwgdHlwZW5hbWUgVDQ3ICwgdHlwZW5hbWUgVDQ4ID4KLXN0cnVjdCBORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDkpCi17Ci10eXBlZGVmIE5ETkJPT1NUX0ZUX3N5bnRheChORE5CT09TVF9GVF9jYyx0eXBlIE5ETkJPT1NUX1BQX0VNUFRZKSAoVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNTAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDggPiA6OnR5cGUgaXRlcl80OTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1MCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAsIFQyNSAsIFQyNiAsIFQyNyAsIFQyOCAsIFQyOSAsIFQzMCAsIFQzMSAsIFQzMiAsIFQzMyAsIFQzNCAsIFQzNSAsIFQzNiAsIFQzNyAsIFQzOCAsIFQzOSAsIFQ0MCAsIFQ0MSAsIFQ0MiAsIFQ0MyAsIFQ0NCAsIFQ0NSAsIFQ0NiAsIFQ0NyAsIFQ0OCAsIFQ0OSBORE5CT09TVF9GVF9lbGwpIE5ETkJPT1NUX0ZUX2N2IDsKLX07Ci10ZW1wbGF0ZTwgPiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCA1MSA+IAoteyAKLXRlbXBsYXRlPHR5cGVuYW1lIFM+IHN0cnVjdCBzeW50aGVzaXplX2ltcGxfaQotewotcHJpdmF0ZToKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPiA6OnR5cGUgaXRlcl8wOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMCA+IDo6dHlwZSBpdGVyXzE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xID4gOjp0eXBlIGl0ZXJfMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIgPiA6OnR5cGUgaXRlcl8zOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMyA+IDo6dHlwZSBpdGVyXzQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80ID4gOjp0eXBlIGl0ZXJfNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzUgPiA6OnR5cGUgaXRlcl82OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNiA+IDo6dHlwZSBpdGVyXzc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl83ID4gOjp0eXBlIGl0ZXJfODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzggPiA6OnR5cGUgaXRlcl85OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfOSA+IDo6dHlwZSBpdGVyXzEwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTAgPiA6OnR5cGUgaXRlcl8xMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzExID4gOjp0eXBlIGl0ZXJfMTI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMiA+IDo6dHlwZSBpdGVyXzEzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTMgPiA6OnR5cGUgaXRlcl8xNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE0ID4gOjp0eXBlIGl0ZXJfMTU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNSA+IDo6dHlwZSBpdGVyXzE2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTYgPiA6OnR5cGUgaXRlcl8xNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE3ID4gOjp0eXBlIGl0ZXJfMTg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xOCA+IDo6dHlwZSBpdGVyXzE5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTkgPiA6OnR5cGUgaXRlcl8yMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIwID4gOjp0eXBlIGl0ZXJfMjE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMSA+IDo6dHlwZSBpdGVyXzIyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjIgPiA6OnR5cGUgaXRlcl8yMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIzID4gOjp0eXBlIGl0ZXJfMjQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNCA+IDo6dHlwZSBpdGVyXzI1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjUgPiA6OnR5cGUgaXRlcl8yNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI2ID4gOjp0eXBlIGl0ZXJfMjc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNyA+IDo6dHlwZSBpdGVyXzI4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjggPiA6OnR5cGUgaXRlcl8yOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI5ID4gOjp0eXBlIGl0ZXJfMzA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMCA+IDo6dHlwZSBpdGVyXzMxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzEgPiA6OnR5cGUgaXRlcl8zMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMyID4gOjp0eXBlIGl0ZXJfMzM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMyA+IDo6dHlwZSBpdGVyXzM0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzQgPiA6OnR5cGUgaXRlcl8zNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM1ID4gOjp0eXBlIGl0ZXJfMzY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNiA+IDo6dHlwZSBpdGVyXzM3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzcgPiA6OnR5cGUgaXRlcl8zODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM4ID4gOjp0eXBlIGl0ZXJfMzk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOSA+IDo6dHlwZSBpdGVyXzQwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDAgPiA6OnR5cGUgaXRlcl80MTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQxID4gOjp0eXBlIGl0ZXJfNDI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MiA+IDo6dHlwZSBpdGVyXzQzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDMgPiA6OnR5cGUgaXRlcl80NDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ0ID4gOjp0eXBlIGl0ZXJfNDU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NSA+IDo6dHlwZSBpdGVyXzQ2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDYgPiA6OnR5cGUgaXRlcl80NzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ3ID4gOjp0eXBlIGl0ZXJfNDg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80OCA+IDo6dHlwZSBpdGVyXzQ5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDkgPiA6OnR5cGUgaXRlcl81MDsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNTApIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81MCA+IDo6dHlwZQotPiA6OnR5cGUgdHlwZTsKLX07Ci19OwotIyB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL2FyaXR5NTBfMS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8xLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNzNkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk1MF8xLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMjcgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBubyBpbmNsdWRlIGd1YXJkcywgdGhpcyBmaWxlIGlzIGludGVuZGVkIGZvciBtdWx0aXBsZSBpbmNsdXNpb24KLQotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9zeW50YXggICAgIHR5cGUgbWFjcm8gdG8gdXNlCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2NjICAgICAgICAgZW1wdHkgb3IgY2Mgc3BlY2lmaWVyIAotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9lbGwgICAgICAgIGVtcHR5IG9yICIuLi4iCi0vLyBpbnB1dDogIE5ETkJPT1NUX0ZUX2N2ICAgICAgICAgZW1wdHkgb3IgY3YgcXVhbGlmaWVycwotLy8gaW5wdXQ6ICBORE5CT09TVF9GVF9mbGFncyAgICAgIHNpbmdsZSBkZWNpbWFsIGludGVnZXIgZW5jb2RpbmcgdGhlIGZsYWdzCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX24gICAgICAgICAgbnVtYmVyIG9mIGNvbXBvbmVudCB0eXBlcyAoYXJpdHkrMSkKLS8vIG91dHB1dDogTkROQk9PU1RfRlRfYXJpdHkgICAgICBjdXJyZW50IGFyaXR5Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3R5cGUgICAgICAgbWFjcm8gdGhhdCBleHBhbmRzIHRvIHRoZSB0eXBlCi0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3RwbGFyZ3MocCkgdGVtcGxhdGUgYXJndW1lbnRzIHdpdGggZ2l2ZW4gcHJlZml4Ci0vLyBvdXRwdXQ6IE5ETkJPT1NUX0ZUX3BhcmFtcyhwKSAgcGFyYW1ldGVycyB3aXRoIGdpdmVuIHByZWZpeAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9zeW50aGVzaXplX2ltcGwvYXJpdHk0MF8xLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi0jIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDIgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQxKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDMgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MikgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0MykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDQgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDMpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDUgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ0KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDYgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NSkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NikKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDcgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDYpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0NykKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDggPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDQ3KSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDcgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNDkgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotcHVibGljOgotdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Ok5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OCkgCi08IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMCA+IDo6dHlwZSAKLSwgdHlwZW5hbWUgZGV0YWlsOjpjdl90cmFpdHM8IAotdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xID4gOjp0eXBlID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl83ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzExID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDggPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw0OSkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNTAgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDggPiA6OnR5cGUgaXRlcl80OTsKLXB1YmxpYzoKLXR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpORE5CT09TVF9GVF9tYWtlX3R5cGUoTkROQk9PU1RfRlRfZmxhZ3MsTkROQk9PU1RfRlRfY2NfaWQsNDkpIAotPCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzAgPiA6OnR5cGUgCi0sIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLXR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMSA+IDo6dHlwZSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl82ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl85ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDkgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBSICwgdHlwZW5hbWUgVDAgLCB0eXBlbmFtZSBUMSAsIHR5cGVuYW1lIFQyICwgdHlwZW5hbWUgVDMgLCB0eXBlbmFtZSBUNCAsIHR5cGVuYW1lIFQ1ICwgdHlwZW5hbWUgVDYgLCB0eXBlbmFtZSBUNyAsIHR5cGVuYW1lIFQ4ICwgdHlwZW5hbWUgVDkgLCB0eXBlbmFtZSBUMTAgLCB0eXBlbmFtZSBUMTEgLCB0eXBlbmFtZSBUMTIgLCB0eXBlbmFtZSBUMTMgLCB0eXBlbmFtZSBUMTQgLCB0eXBlbmFtZSBUMTUgLCB0eXBlbmFtZSBUMTYgLCB0eXBlbmFtZSBUMTcgLCB0eXBlbmFtZSBUMTggLCB0eXBlbmFtZSBUMTkgLCB0eXBlbmFtZSBUMjAgLCB0eXBlbmFtZSBUMjEgLCB0eXBlbmFtZSBUMjIgLCB0eXBlbmFtZSBUMjMgLCB0eXBlbmFtZSBUMjQgLCB0eXBlbmFtZSBUMjUgLCB0eXBlbmFtZSBUMjYgLCB0eXBlbmFtZSBUMjcgLCB0eXBlbmFtZSBUMjggLCB0eXBlbmFtZSBUMjkgLCB0eXBlbmFtZSBUMzAgLCB0eXBlbmFtZSBUMzEgLCB0eXBlbmFtZSBUMzIgLCB0eXBlbmFtZSBUMzMgLCB0eXBlbmFtZSBUMzQgLCB0eXBlbmFtZSBUMzUgLCB0eXBlbmFtZSBUMzYgLCB0eXBlbmFtZSBUMzcgLCB0eXBlbmFtZSBUMzggLCB0eXBlbmFtZSBUMzkgLCB0eXBlbmFtZSBUNDAgLCB0eXBlbmFtZSBUNDEgLCB0eXBlbmFtZSBUNDIgLCB0eXBlbmFtZSBUNDMgLCB0eXBlbmFtZSBUNDQgLCB0eXBlbmFtZSBUNDUgLCB0eXBlbmFtZSBUNDYgLCB0eXBlbmFtZSBUNDcgLCB0eXBlbmFtZSBUNDggLCB0eXBlbmFtZSBUNDkgPgotc3RydWN0IE5ETkJPT1NUX0ZUX21ha2VfdHlwZShORE5CT09TVF9GVF9mbGFncyxORE5CT09TVF9GVF9jY19pZCw1MCkKLXsKLXR5cGVkZWYgTkROQk9PU1RfRlRfc3ludGF4KE5ETkJPT1NUX0ZUX2NjLHR5cGUgTkROQk9PU1RfUFBfRU1QVFkpIChUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLCBUMjUgLCBUMjYgLCBUMjcgLCBUMjggLCBUMjkgLCBUMzAgLCBUMzEgLCBUMzIgLCBUMzMgLCBUMzQgLCBUMzUgLCBUMzYgLCBUMzcgLCBUMzggLCBUMzkgLCBUNDAgLCBUNDEgLCBUNDIgLCBUNDMgLCBUNDQgLCBUNDUgLCBUNDYgLCBUNDcgLCBUNDggLCBUNDkgTkROQk9PU1RfRlRfZWxsKSBORE5CT09TVF9GVF9jdiA7Ci19OwotdGVtcGxhdGU8ID4gCi1zdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX288IE5ETkJPT1NUX0ZUX2ZsYWdzLCBORE5CT09TVF9GVF9jY19pZCwgNTEgPiAKLXsgCi10ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLXsKLXByaXZhdGU6Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6YmVnaW48Uz4gOjp0eXBlIGl0ZXJfMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzAgPiA6OnR5cGUgaXRlcl8xOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMSA+IDo6dHlwZSBpdGVyXzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yID4gOjp0eXBlIGl0ZXJfMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMgPiA6OnR5cGUgaXRlcl80OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNCA+IDo6dHlwZSBpdGVyXzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl81ID4gOjp0eXBlIGl0ZXJfNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzYgPiA6OnR5cGUgaXRlcl83OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNyA+IDo6dHlwZSBpdGVyXzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl84ID4gOjp0eXBlIGl0ZXJfOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzkgPiA6OnR5cGUgaXRlcl8xMDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEwID4gOjp0eXBlIGl0ZXJfMTE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xMSA+IDo6dHlwZSBpdGVyXzEyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTIgPiA6OnR5cGUgaXRlcl8xMzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzEzID4gOjp0eXBlIGl0ZXJfMTQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNCA+IDo6dHlwZSBpdGVyXzE1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTUgPiA6OnR5cGUgaXRlcl8xNjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE2ID4gOjp0eXBlIGl0ZXJfMTc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8xNyA+IDo6dHlwZSBpdGVyXzE4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMTggPiA6OnR5cGUgaXRlcl8xOTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzE5ID4gOjp0eXBlIGl0ZXJfMjA7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMCA+IDo6dHlwZSBpdGVyXzIxOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjEgPiA6OnR5cGUgaXRlcl8yMjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzIyID4gOjp0eXBlIGl0ZXJfMjM7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yMyA+IDo6dHlwZSBpdGVyXzI0OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjQgPiA6OnR5cGUgaXRlcl8yNTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI1ID4gOjp0eXBlIGl0ZXJfMjY7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yNiA+IDo6dHlwZSBpdGVyXzI3OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMjcgPiA6OnR5cGUgaXRlcl8yODsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzI4ID4gOjp0eXBlIGl0ZXJfMjk7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8yOSA+IDo6dHlwZSBpdGVyXzMwOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzAgPiA6OnR5cGUgaXRlcl8zMTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzMxID4gOjp0eXBlIGl0ZXJfMzI7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zMiA+IDo6dHlwZSBpdGVyXzMzOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzMgPiA6OnR5cGUgaXRlcl8zNDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM0ID4gOjp0eXBlIGl0ZXJfMzU7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zNSA+IDo6dHlwZSBpdGVyXzM2OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzYgPiA6OnR5cGUgaXRlcl8zNzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzM3ID4gOjp0eXBlIGl0ZXJfMzg7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl8zOCA+IDo6dHlwZSBpdGVyXzM5OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfMzkgPiA6OnR5cGUgaXRlcl80MDsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQwID4gOjp0eXBlIGl0ZXJfNDE7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80MSA+IDo6dHlwZSBpdGVyXzQyOwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDIgPiA6OnR5cGUgaXRlcl80MzsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQzID4gOjp0eXBlIGl0ZXJfNDQ7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NCA+IDo6dHlwZSBpdGVyXzQ1OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDUgPiA6OnR5cGUgaXRlcl80NjsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ2ID4gOjp0eXBlIGl0ZXJfNDc7Ci10eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDwgaXRlcl80NyA+IDo6dHlwZSBpdGVyXzQ4OwotdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IGl0ZXJfNDggPiA6OnR5cGUgaXRlcl80OTsKLXR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PCBpdGVyXzQ5ID4gOjp0eXBlIGl0ZXJfNTA7Ci1wdWJsaWM6Ci10eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLDUwKSAKLTwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8wID4gOjp0eXBlIAotLCB0eXBlbmFtZSBkZXRhaWw6OmN2X3RyYWl0czwgCi10eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEgPiA6OnR5cGUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl81ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl84ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xMiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzEzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xNSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMTcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8xOCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzE5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjAgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yMSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzIyID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjMgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI1ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjYgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8yNyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzI4ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMjkgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzMxID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzIgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zMyA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM0ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzUgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zNiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzM3ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfMzggPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl8zOSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQwID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDEgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80MiA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQzID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDQgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80NSA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ2ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNDcgPiA6OnR5cGUKLSwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgaXRlcl80OCA+IDo6dHlwZQotLCB0eXBlbmFtZSBtcGw6OmRlcmVmPCBpdGVyXzQ5ID4gOjp0eXBlCi0sIHR5cGVuYW1lIG1wbDo6ZGVyZWY8IGl0ZXJfNTAgPiA6OnR5cGUKLT4gOjp0eXBlIHR5cGU7Ci19OwotfTsKLSMgdW5kZWYgTkROQk9PU1RfRlRfbWFrZV90eXBlCi0jIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemVfaW1wbC9tYXN0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL21hc3Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOGI5Y2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9kZXRhaWwvc3ludGhlc2l6ZV9pbXBsL21hc3Rlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIG5vIGluY2x1ZGUgZ3VhcmRzLCB0aGlzIGZpbGUgaXMgaW50ZW5kZWQgZm9yIG11bHRpcGxlIGluY2x1c2lvbgotCi0jaWYgICBORE5CT09TVF9GVF9BUklUWV9MT09QX1BSRUZJWAotCi0jICAgaWZuZGVmIE5ETkJPT1NUX0ZUX0RFVEFJTF9TWU5USEVTSVpFX0lNUExfTUFTVEVSX0hQUF9JTkNMVURFRAotIyAgIGRlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfU1lOVEhFU0laRV9JTVBMX01BU1RFUl9IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaWRlbnRpdHkuaHBwPgotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfdHlwZV9uYW1lIHR5cGUKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRlRfbWFrZV90eXBlKGZsYWdzLGNjLGFyaXR5KSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GVF9tYWtlX3R5cGVfaW1wbChmbGFncyxjYyxhcml0eSkgbWFrZV90eXBlXyAjIyBmbGFncyAjIyBfICMjIGNjICMjIF8gIyMgYXJpdHkKLSMgICBlbHNlCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZShmbGFncyxjYyxhcml0eSkgTkROQk9PU1RfRlRfbWFrZV90eXBlX2ltcGwoZmxhZ3MsY2MsYXJpdHkpCi1ORE5CT09TVF9QUF9FWFBBTkQoIykgZGVmaW5lIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsKGZsYWdzLGNjLGFyaXR5KSBtYWtlX3R5cGVfICMjIGZsYWdzICMjIF8gIyMgY2MgIyMgXyAjIyBhcml0eQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfRlRfaXRlcihpKSBORE5CT09TVF9QUF9DQVQoaXRlcl8saSkKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9JU19JVEVSQVRJTkcKLQotdGVtcGxhdGU8IE5ETkJPT1NUX0ZUX3RwbGFyZ3MoTkROQk9PU1RfUFBfSURFTlRJVFkodHlwZW5hbWUpKSA+Ci1zdHJ1Y3QgTkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLE5ETkJPT1NUX0ZUX2FyaXR5KQotewotICB0eXBlZGVmIE5ETkJPT1NUX0ZUX3R5cGUgOwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCBzeW50aGVzaXplX2ltcGxfbzwgTkROQk9PU1RfRlRfZmxhZ3MsIE5ETkJPT1NUX0ZUX2NjX2lkLCBORE5CT09TVF9GVF9uID4gCi17IAotICB0ZW1wbGF0ZTx0eXBlbmFtZSBTPiBzdHJ1Y3Qgc3ludGhlc2l6ZV9pbXBsX2kKLSAgewotICBwcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpiZWdpbjxTPjo6dHlwZSBORE5CT09TVF9GVF9pdGVyKDApOwotIyAgIGlmIE5ETkJPT1NUX0ZUX24gPiAxCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oaSkgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8IFwKLSAgICAgICAgICBORE5CT09TVF9GVF9pdGVyKE5ETkJPT1NUX1BQX0RFQyhpKSkgPjo6dHlwZSBORE5CT09TVF9GVF9pdGVyKGkpOwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMSxORE5CT09TVF9GVF9uLTEpCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotIyAgIGVuZGlmCi0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6TkROQk9PU1RfRlRfbWFrZV90eXBlKE5ETkJPT1NUX0ZUX2ZsYWdzLE5ETkJPT1NUX0ZUX2NjX2lkLE5ETkJPT1NUX0ZUX2FyaXR5KSAKLSAgICA8IHR5cGVuYW1lIG1wbDo6ZGVyZWY8IE5ETkJPT1NUX0ZUX2l0ZXIoMCkgPjo6dHlwZSAKLSMgICBpZiBORE5CT09TVF9GVF9tZnAKLSAgICAsIHR5cGVuYW1lIGRldGFpbDo6Y3ZfdHJhaXRzPCAKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6OmRlcmVmPCBORE5CT09TVF9GVF9pdGVyKDEpID46OnR5cGUgPjo6dHlwZQotIyAgIGVuZGlmCi0jICAgaWYgTkROQk9PU1RfRlRfbiA+IChORE5CT09TVF9GVF9tZnArMSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKE5ETkJPT1NUX0ZUX21mcCsxLE5ETkJPT1NUX0ZUX24tMSkKLSMgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhpKSBcCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpkZXJlZjwgTkROQk9PU1RfRlRfaXRlcihpKSA+Ojp0eXBlCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotIyAgIGVuZGlmCi0gICAgPjo6dHlwZSB0eXBlOwotICB9OwotfTsKLQotI2VsaWYgTkROQk9PU1RfRlRfQVJJVFlfTE9PUF9TVUZGSVgKLQotIyAgIGlmZGVmIE5ETkJPT1NUX0ZUX2ZsYWdzCi0jICAgICB1bmRlZiBORE5CT09TVF9GVF9tYWtlX3R5cGUKLSMgICAgIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0jICAgZWxzZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZQotTkROQk9PU1RfUFBfRVhQQU5EKCMpIHVuZGVmIE5ETkJPT1NUX0ZUX21ha2VfdHlwZV9pbXBsCi0jICAgZW5kaWYKLSMgICB1bmRlZiBORE5CT09TVF9GVF9pdGVyCi0jICAgdW5kZWYgTkROQk9PU1RfRlRfdHlwZV9uYW1lCi0KLSNlbHNlCi0jICAgZXJyb3IgImF0dGVtcHQgdG8gdXNlIGFyaXR5IGxvb3AgbWFzdGVyIGZpbGUgd2l0aG91dCBsb29wIgotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3RvX3NlcXVlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3RvX3NlcXVlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1N2VkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC90b19zZXF1ZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1RPX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9ERVRBSUxfVE9fU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXNfc2VxdWVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfY2FsbGFibGVfYnVpbHRpbi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyB3cmFwIGZpcnN0IGFyZ3VtZW50cyBpbiBjb21wb25lbnRzLCBpZiBjYWxsYWJsZSBidWlsdGluIHR5cGUKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdG9fc2VxdWVuY2UKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgbXBsOjpldmFsX2lmCi0gICA8IGlzX2NhbGxhYmxlX2J1aWx0aW48VD4KLSAgICwgdG9fc2VxdWVuY2U8IGNvbXBvbmVudHM8VD4gPgotICAgLCBtcGw6OmlkZW50aXR5PCBUID4KLSAgID46OnR5cGUKLSAgdHlwZTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8gcmVkdWNlIHRlbXBsYXRlIGluc3RhbnRpYXRpb25zLCBpZiBwb3NzaWJsZQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0cnVjdCB0b19zZXF1ZW5jZTwgY29tcG9uZW50czxULFU+ID4gCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29tcG9uZW50czxULFU+Ojp0eXBlcyB0eXBlOwotfTsKLSNlbmRpZgotCi19IH0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9mdW5jdGlvbl90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZnVuY3Rpb25fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NDYyMTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9mdW5jdGlvbl90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9GVU5DVElPTl9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9GVU5DVElPTl9UWVBFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3N5bnRoZXNpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC90b19zZXF1ZW5jZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGVzLCB0eXBlbmFtZSBUYWcgPSBudWxsX3RhZz4gc3RydWN0IGZ1bmN0aW9uX3R5cGUKLSAgICAgIDogZGV0YWlsOjpzeW50aGVzaXplX2Z1bmM8dHlwZW5hbWUgZGV0YWlsOjp0b19zZXF1ZW5jZTxUeXBlcz46OnR5cGUsIFRhZz4KLSAgICB7Ci0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsZnVuY3Rpb25fdHlwZSwoVHlwZXMsVGFnKSkKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmZ1bmN0aW9uX3R5cGUpCi19Ci0KLSNlbmRpZgotIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19jYWxsYWJsZV9idWlsdGluLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfY2FsbGFibGVfYnVpbHRpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYjIyNDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19jYWxsYWJsZV9idWlsdGluLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9JU19DQUxMQUJMRV9CVUlMVElOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9GVF9JU19DQUxMQUJMRV9CVUlMVElOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID0gbnVsbF90YWcgPiAKLSAgICBzdHJ1Y3QgaXNfY2FsbGFibGVfYnVpbHRpbgotICAgICAgOiBmdW5jdGlvbl90eXBlczo6cmVwcmVzZW50cwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPFQ+Ci0gICAgICAgICwgZnVuY3Rpb25fdHlwZXM6OnRhZzxUYWcsIGRldGFpbDo6Y2FsbGFibGVfYnVpbHRpbl90YWc+IAotICAgICAgICA+Ci0gICAgeyAKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixpc19jYWxsYWJsZV9idWlsdGluLChULFRhZykpCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLGZ1bmN0aW9uX3R5cGVzOjppc19jYWxsYWJsZV9idWlsdGluKQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU3NjIxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID0gbnVsbF90YWcgPiAKLSAgICBzdHJ1Y3QgaXNfZnVuY3Rpb24KLSAgICAgIDogZnVuY3Rpb25fdHlwZXM6OnJlcHJlc2VudHMKLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6Y29tcG9uZW50czxUPgotICAgICAgICAsIGZ1bmN0aW9uX3R5cGVzOjp0YWc8VGFnICxkZXRhaWw6OmZ1bmN0aW9uX3RhZz4gCi0gICAgICAgID4KLSAgICB7IAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGlzX2Z1bmN0aW9uLChULFRhZykpCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLGZ1bmN0aW9uX3R5cGVzOjppc19mdW5jdGlvbikKLX0gCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbl9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRmZjUwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2Z1bmN0aW9uX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0vLyAoQykgQ29weXJpZ2h0IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPSBudWxsX3RhZyA+IAotICAgIHN0cnVjdCBpc19mdW5jdGlvbl9wb2ludGVyCi0gICAgICA6IGZ1bmN0aW9uX3R5cGVzOjpyZXByZXNlbnRzCi0gICAgICAgIDwgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VD4KLSAgICAgICAgLCBmdW5jdGlvbl90eXBlczo6dGFnPFRhZyAsZGV0YWlsOjpwb2ludGVyX3RhZz4gCi0gICAgICAgID4KLSAgICB7IAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGlzX2Z1bmN0aW9uX3BvaW50ZXIsKFQsVGFnKSkKLSAgICB9OwotICB9Ci0gIE5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsZnVuY3Rpb25fdHlwZXM6OmlzX2Z1bmN0aW9uX3BvaW50ZXIpCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbl9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9pc19mdW5jdGlvbl9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzUwMjgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfZnVuY3Rpb25fcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9JU19GVU5DVElPTl9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0lTX0ZVTkNUSU9OX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbl90eXBlcy9jb21wb25lbnRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAoteyAKLSAgbmFtZXNwYWNlIGZ1bmN0aW9uX3R5cGVzIAotICB7Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA9IG51bGxfdGFnID4gCi0gICAgc3RydWN0IGlzX2Z1bmN0aW9uX3JlZmVyZW5jZQotICAgICAgOiBmdW5jdGlvbl90eXBlczo6cmVwcmVzZW50cwotICAgICAgICA8IGZ1bmN0aW9uX3R5cGVzOjpjb21wb25lbnRzPFQ+Ci0gICAgICAgICwgZnVuY3Rpb25fdHlwZXM6OnRhZzxUYWcgLGRldGFpbDo6cmVmZXJlbmNlX3RhZz4gPgotICAgIHsgCi0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsaXNfZnVuY3Rpb25fcmVmZXJlbmNlLChULFRhZykpCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLGZ1bmN0aW9uX3R5cGVzOjppc19mdW5jdGlvbl9yZWZlcmVuY2UpCi19IAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wYXJhbWV0ZXJfdHlwZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wYXJhbWV0ZXJfdHlwZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjA0Y2U0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcGFyYW1ldGVyX3R5cGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotLy8gKEMpIENvcHlyaWdodCBUb2JpYXMgU2Nod2luZ2VyCi0vLwotLy8gVXNlIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBib29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gVmVyc2lvbiAxLjAuIChTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVF9QQVJBTUVURVJfVFlQRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX1BBUkFNRVRFUl9UWVBFU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2JsYW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfZnJvbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvaXNfY2FsbGFibGVfYnVpbHRpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvY29tcG9uZW50cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsgCi0gIG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyAKLSAgewotICAgIHVzaW5nIG1wbDo6cGxhY2Vob2xkZXJzOjpfOwotIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBDbGFzc1R5cGVUcmFuc2Zvcm0gPSBhZGRfcmVmZXJlbmNlPF8+ID4KLSAgICBzdHJ1Y3QgcGFyYW1ldGVyX3R5cGVzOwotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENsYXNzVHlwZVRyYW5zZm9ybT4gCi0gICAgICBzdHJ1Y3QgcGFyYW1ldGVyX3R5cGVzX2ltcGwKLSAgICAgICAgOiBtcGw6OnBvcF9mcm9udAotICAgICAgICAgIDwgdHlwZW5hbWUgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VCxDbGFzc1R5cGVUcmFuc2Zvcm0+Ojp0eXBlcyAKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICB7IH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ2xhc3NUeXBlVHJhbnNmb3JtPiBzdHJ1Y3QgcGFyYW1ldGVyX3R5cGVzCi0gICAgICA6IG1wbDo6aWZfCi0gICAgICAgIDwgZnVuY3Rpb25fdHlwZXM6OmlzX2NhbGxhYmxlX2J1aWx0aW48VD4KLSAgICAgICAgLCBkZXRhaWw6OnBhcmFtZXRlcl90eXBlc19pbXBsPFQsQ2xhc3NUeXBlVHJhbnNmb3JtPiwgbmRuYm9vc3Q6OmJsYW5rCi0gICAgICAgID46OnR5cGUKLSAgICB7Ci0gICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIscGFyYW1ldGVyX3R5cGVzLChULENsYXNzVHlwZVRyYW5zZm9ybSkpIAotICAgIH07Ci0gIH0KLSAgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMixmdW5jdGlvbl90eXBlczo6cGFyYW1ldGVyX3R5cGVzKQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcHJvcGVydHlfdGFncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2NjJmY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9wcm9wZXJ0eV90YWdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfREVUQUlMX1RBR1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX0RFVEFJTF9UQUdTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYml0eG9yLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgeyAKLQotbmFtZXNwYWNlIGRldGFpbCAKLXsKLSAgdHlwZWRlZiBsb25nIGJpdHNfdDsKLQotICB0ZW1wbGF0ZTxiaXRzX3QgVmFsdWU+IHN0cnVjdCBjb25zdGFudCAKLSAgICA6IG5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxiaXRzX3QsVmFsdWU+IAotICB7IH07Ci0KLSAgdGVtcGxhdGU8Yml0c190IEJpdHMsIGJpdHNfdCBNYXNrPiBzdHJ1Y3QgcHJvcGVydHlfdGFnIAotICB7Ci0gICAgdHlwZWRlZiBjb25zdGFudDxCaXRzPiBiaXRzOwotICAgIHR5cGVkZWYgY29uc3RhbnQ8TWFzaz4gbWFzazsKLSAgfTsKLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgYml0cyA6IFQ6OmJpdHMgeyB9OwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgbWFzayA6IFQ6Om1hc2sgeyB9OwotCi0gIC8vIGZvcndhcmQgZGVjbGFyYXRpb24sIGRlZmluZWQgaW4gcHBfdGFncwotICB0ZW1wbGF0ZTxiaXRzX3QgQml0cywgYml0c190IENDSUQ+IHN0cnVjdCBlbmNvZGVfYml0c19pbXBsOyAKLQotICAvLyBmb3J3YXJkIGRlY2xhcmF0aW9uLCBkZWZpbmVkIGluIHBwX3RhZ3MKLSAgdGVtcGxhdGU8Yml0c190IExIU19iaXRzLCBiaXRzX3QgTEhTX21hc2ssIAotICAgICAgICAgICBiaXRzX3QgUkhTX2JpdHMsIGJpdHNfdCBSSFNfbWFzaz4gCi0gIHN0cnVjdCB0YWdfaWNlOwotIAotICAvLyBmb3J3YXJkIGRlY2xhcmF0aW9uLCBkZWZpbmVkIGluIHJldGFnX2RlZmF1bHRfY2MgCi0gIHRlbXBsYXRlPGNsYXNzIFRhZywgY2xhc3MgUmVnVGFnID0gVGFnPiBzdHJ1Y3QgcmV0YWdfZGVmYXVsdF9jYzsgCi0gCi0gIHRlbXBsYXRlPGJpdHNfdCBCaXRzLCBiaXRzX3QgQ0NJRD4gc3RydWN0IGVuY29kZV9iaXRzCi0gICAgOiBjb25zdGFudDwgCi0gICAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmVuY29kZV9iaXRzX2ltcGw8Qml0cyxDQ0lEPjo6dmFsdWUgCi0gICAgICA+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBMSFMsIGNsYXNzIFJIUz4gc3RydWN0IGNvbXBvdW5kX3RhZwotICB7Ci0gICAgdHlwZWRlZiBjb25zdGFudDwKLSAgICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnRhZ19pY2UKLSAgICAgICAgPCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPExIUz46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6bWFzazxMSFM+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHM8UkhTPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFJIUz46OnZhbHVlCi0gICAgICAgID46OmNvbWJpbmVkX2JpdHMgCi0gICAgPiBiaXRzOwotCi0gICAgdHlwZWRlZiBjb25zdGFudDwgCi0gICAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjp0YWdfaWNlCi0gICAgICAgIDwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxMSFM+Ojp2YWx1ZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6Om1hc2s8TEhTPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjpiaXRzPFJIUz46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6bWFzazxSSFM+Ojp2YWx1ZQotICAgICAgICA+Ojpjb21iaW5lZF9tYXNrIAotICAgID4gbWFzazsgCi0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEJhc2UsIGNsYXNzIFByb3BPbGQsIGNsYXNzIFByb3BOZXc+Ci0gIHN0cnVjdCBjaGFuZ2VkX3RhZwotICAgIDogQmFzZQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJpdHhvcl8KLSAgICAgICAgPHR5cGVuYW1lIEJhc2U6OmJpdHMsIHR5cGVuYW1lIFByb3BPbGQ6OmJpdHMsIHR5cGVuYW1lIFByb3BOZXc6OmJpdHM+Ci0gICAgYml0czsKLSAgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFF1ZXJ5VGFnPiBzdHJ1Y3QgcmVwcmVzZW50c19pbXBsCi0gICAgOiBuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwKLSAgICAgICAgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6dGFnX2ljZQotICAgICAgICAgIDwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxUYWc+Ojp2YWx1ZQotICAgICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6bWFzazxUYWc+Ojp2YWx1ZQotICAgICAgICAgICwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxRdWVyeVRhZz46OnZhbHVlCi0gICAgICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFF1ZXJ5VGFnPjo6dmFsdWUKLSAgICAgICAgICA+OjptYXRjaAotICAgICAgPgotICB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10eXBlZGVmIGRldGFpbDo6cHJvcGVydHlfdGFnPDAsMD4gbnVsbF90YWc7Ci0KLXRlbXBsYXRlPGNsYXNzIFRhZzEsIGNsYXNzIFRhZzIsIGNsYXNzIFRhZzMgPSBudWxsX3RhZywgY2xhc3MgVGFnNCA9IG51bGxfdGFnPgotc3RydWN0IHRhZwotICA6IGRldGFpbDo6Y29tcG91bmRfdGFnPCBkZXRhaWw6OmNvbXBvdW5kX3RhZzxUYWcxLFRhZzI+LCAKLSAgICAgICAgZGV0YWlsOjpjb21wb3VuZF90YWc8VGFnMyxUYWc0PiA+Ci17IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGU8Y2xhc3MgVGFnMSwgY2xhc3MgVGFnMiwgY2xhc3MgVGFnMz4gc3RydWN0IHRhZzxUYWcxLFRhZzIsVGFnMyxudWxsX3RhZz4KLSAgOiBkZXRhaWw6OmNvbXBvdW5kX3RhZzxkZXRhaWw6OmNvbXBvdW5kX3RhZzxUYWcxLFRhZzI+LFRhZzM+Ci17IH07Ci10ZW1wbGF0ZTxjbGFzcyBUYWcxLCBjbGFzcyBUYWcyPiBzdHJ1Y3QgdGFnPFRhZzEsVGFnMixudWxsX3RhZyxudWxsX3RhZz4KLSAgOiBkZXRhaWw6OmNvbXBvdW5kX3RhZzxUYWcxLFRhZzI+Ci17IH07Ci10ZW1wbGF0ZTxjbGFzcyBUYWcxPiBzdHJ1Y3QgdGFnPFRhZzEsbnVsbF90YWcsbnVsbF90YWcsbnVsbF90YWc+Ci0gIDogVGFnMQoteyB9OwotI2VuZGlmCi0KLQotdGVtcGxhdGU8Y2xhc3MgVGFnLCBjbGFzcyBRdWVyeVRhZz4gc3RydWN0IHJlcHJlc2VudHMKLSAgOiBkZXRhaWw6OnJlcHJlc2VudHNfaW1wbDxUYWcsIGRldGFpbDo6cmV0YWdfZGVmYXVsdF9jYzxRdWVyeVRhZyxUYWc+ID4KLXsgfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBUYWcsIGNsYXNzIFF1ZXJ5VGFnPiBzdHJ1Y3QgZXh0cmFjdAoteyAKLSAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PAotICAgIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OnRhZ19pY2UKLSAgICAgIDwgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXM6OmRldGFpbDo6Yml0czxUYWc+Ojp2YWx1ZQotICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFRhZz46OnZhbHVlCi0gICAgICAsIDo6bmRuYm9vc3Q6OmZ1bmN0aW9uX3R5cGVzOjpkZXRhaWw6OmJpdHM8UXVlcnlUYWc+Ojp2YWx1ZQotICAgICAgLCA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFF1ZXJ5VGFnPjo6dmFsdWUKLSAgICAgID46OmV4dHJhY3RlZF9iaXRzIAotICA+IGJpdHM7Ci0KLSAgdHlwZWRlZiBkZXRhaWw6OmNvbnN0YW50PCAKLSAgICA6Om5kbmJvb3N0OjpmdW5jdGlvbl90eXBlczo6ZGV0YWlsOjptYXNrPFF1ZXJ5VGFnPjo6dmFsdWUKLSAgPiBtYXNrOyAKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXMKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL3ByZXByb2Nlc3NlZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBmdW5jdGlvbl90eXBlcyB7Ci0jZGVmaW5lIE5ETkJPT1NUX0ZUX2NjX2ZpbGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2RldGFpbC9wcF90YWdzL2NjX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvZGV0YWlsL3BwX2xvb3AuaHBwPgotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6ZnVuY3Rpb25fdHlwZXMKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25fdHlwZXMvcmVzdWx0X3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9yZXN1bHRfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZmIxMGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbl90eXBlcy9yZXN1bHRfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgVG9iaWFzIFNjaHdpbmdlcgotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlRfUkVTVUxUX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0ZUX1JFU1VMVF9UWVBFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmxhbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F0LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2lzX2NhbGxhYmxlX2J1aWx0aW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uX3R5cGVzL2NvbXBvbmVudHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotICBuYW1lc3BhY2UgZnVuY3Rpb25fdHlwZXMgCi0gIHsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfdHlwZTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0X3R5cGVfaW1wbAotICAgICAgICA6IG1wbDo6YXRfYwotICAgICAgICAgIDwgdHlwZW5hbWUgZnVuY3Rpb25fdHlwZXM6OmNvbXBvbmVudHM8VD46OnR5cGVzLCAwID4KLSAgICAgIHsgfTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0X3R5cGUKLSAgICAgIDogbXBsOjppZl8KLSAgICAgICAgPCBmdW5jdGlvbl90eXBlczo6aXNfY2FsbGFibGVfYnVpbHRpbjxUPgotICAgICAgICAsIGRldGFpbDo6cmVzdWx0X3R5cGVfaW1wbDxUPiwgbmRuYm9vc3Q6OmJsYW5rCi0gICAgICAgID46OnR5cGUKLSAgICB7IAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlc3VsdF90eXBlLChUKSkgCi0gICAgfTsKLSAgfQotICBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLGZ1bmN0aW9uX3R5cGVzOjpyZXN1bHRfdHlwZSkKLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTQ0NTdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NDggKzAsMCBAQAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDAgQ2FkZW56YSBOZXcgWmVhbGFuZCBMdGQKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnktCi0vLyBpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEJvb3N0IGZ1bmN0aW9uYWwuaHBwIGhlYWRlciBmaWxlCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9mdW5jdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAkSWQ6IGZ1bmN0aW9uYWwuaHBwIDM2MjQ2IDIwMDYtMTItMDIgMTQ6MTc6MjZaIGFuZHJlYXNfaHViZXI2OSAkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9GVU5DVElPTkFMX0hQUAotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgdHJhaXRzIGNsYXNzZXMgYWxsb3cgdXMgdG8gYXZvaWQgdGhlIG5lZWQgZm9yIHB0cl9mdW4KLSAgICAvLyBiZWNhdXNlIHRoZSB0eXBlcyBvZiBhcmd1bWVudHMgYW5kIHRoZSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYW4gYmUgCi0gICAgLy8gZGVkdWNlZC4KLSAgICAvLwotICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCB0eXBlcyBkZWZpbmVkIGluIHVuYXJ5X2Z1bmN0aW9uIGFuZCAKLSAgICAvLyBiaW5hcnlfZnVuY3Rpb24sIHdlIGFkZAotICAgIC8vCi0gICAgLy8gLSBmdW5jdGlvbl90eXBlLCB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4KLSAgICAvLwotICAgIC8vIC0gcGFyYW1fdHlwZSwgdGhlIHR5cGUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgcGFzc2luZyB0aGUgZnVuY3Rpb24gb3IKLSAgICAvLyAgIGZ1bmN0aW9uIG9iamVjdCBhcyBhbiBhcmd1bWVudC4KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgICAgIHN0cnVjdCB1bmFyeV90cmFpdHNfaW1wOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICAgICAgc3RydWN0IHVuYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgZnVuY3Rpb25fdHlwZSAmICAgICAgICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIEE+Ci0gICAgICAgIHN0cnVjdCB1bmFyeV90cmFpdHNfaW1wPFIoKikoQSk+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgUiAoKmZ1bmN0aW9uX3R5cGUpKEEpOwotICAgICAgICAgICAgdHlwZWRlZiBSICgqcGFyYW1fdHlwZSkoQSk7Ci0gICAgICAgICAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIEEgYXJndW1lbnRfdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgICAgICBzdHJ1Y3QgYmluYXJ5X3RyYWl0c19pbXA7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICAgICAgc3RydWN0IGJpbmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBmdW5jdGlvbl90eXBlICYgICAgICAgICAgICAgICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6cmVzdWx0X3R5cGUgICAgICAgICAgcmVzdWx0X3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSAgZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gICAgICAgIHN0cnVjdCBiaW5hcnlfdHJhaXRzX2ltcDxSKCopKEExLEEyKT4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBSICgqZnVuY3Rpb25fdHlwZSkoQTEsQTIpOwotICAgICAgICAgICAgdHlwZWRlZiBSICgqcGFyYW1fdHlwZSkoQTEsQTIpOwotICAgICAgICAgICAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBBMSBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBBMiBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgfTsKLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIHN0cnVjdCB1bmFyeV90cmFpdHMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpmdW5jdGlvbl90eXBlIGZ1bmN0aW9uX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpwYXJhbV90eXBlICAgIHBhcmFtX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW5hcnlfdHJhaXRzX2ltcDxPcGVyYXRpb24qPjo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlOwotICAgIH07IAotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIEE+Ci0gICAgc3RydWN0IHVuYXJ5X3RyYWl0czxSKCopKEEpPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBSICgqZnVuY3Rpb25fdHlwZSkoQSk7Ci0gICAgICAgIHR5cGVkZWYgUiAoKnBhcmFtX3R5cGUpKEEpOwotICAgICAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgQSBhcmd1bWVudF90eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIHN0cnVjdCBiaW5hcnlfdHJhaXRzCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YmluYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OmZ1bmN0aW9uX3R5cGUgICAgICAgIGZ1bmN0aW9uX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpiaW5hcnlfdHJhaXRzX2ltcDxPcGVyYXRpb24qPjo6cGFyYW1fdHlwZSAgICAgICAgICAgcGFyYW1fdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJpbmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpyZXN1bHRfdHlwZSAgICAgICAgICByZXN1bHRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJpbmFyeV90cmFpdHNfaW1wPE9wZXJhdGlvbio+OjpmaXJzdF9hcmd1bWVudF90eXBlICBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YmluYXJ5X3RyYWl0c19pbXA8T3BlcmF0aW9uKj46OnNlY29uZF9hcmd1bWVudF90eXBlIHNlY29uZF9hcmd1bWVudF90eXBlOwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgICBzdHJ1Y3QgYmluYXJ5X3RyYWl0czxSKCopKEExLEEyKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiAoKmZ1bmN0aW9uX3R5cGUpKEExLEEyKTsKLSAgICAgICAgdHlwZWRlZiBSICgqcGFyYW1fdHlwZSkoQTEsQTIpOwotICAgICAgICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgQTEgZmlyc3RfYXJndW1lbnRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBBMiBzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICB9OwotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gSWYgd2UgaGF2ZSBubyBwYXJ0aWFsIHNwZWNpYWxpc2F0aW9uIGF2YWlsYWJsZSwgZGVjYXkgdG8gYSBzaXR1YXRpb24KLSAgICAvLyB0aGF0IGlzIG5vIHdvcnNlIHRoYW4gaW4gdGhlIFN0YW5kYXJkLCBpLmUuLCBwdHJfZnVuIHdpbGwgYmUgcmVxdWlyZWQuCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgc3RydWN0IHVuYXJ5X3RyYWl0cwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fdHlwZTsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBPcGVyYXRpb24mICAgICAgICAgICAgICAgICAgcGFyYW1fdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb246OnJlc3VsdF90eXBlICAgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGU7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBzdHJ1Y3QgYmluYXJ5X3RyYWl0cwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgT3BlcmF0aW9uICYgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6cmVzdWx0X3R5cGUgICAgICAgICAgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlICBmaXJzdF9hcmd1bWVudF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE9wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgc2Vjb25kX2FyZ3VtZW50X3R5cGU7Ci0gICAgfTsgICAgCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotICAgIAotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gdW5hcnlfbmVnYXRlLCBub3QxCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlPgotICAgIGNsYXNzIHVuYXJ5X25lZ2F0ZQotICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIHVuYXJ5X3RyYWl0czxQcmVkaWNhdGU+Ojphcmd1bWVudF90eXBlLGJvb2w+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCB1bmFyeV9uZWdhdGUodHlwZW5hbWUgdW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OnBhcmFtX3R5cGUgeCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHByZWQoeCkKLSAgICAgICAge30KLSAgICAgICAgYm9vbCBvcGVyYXRvcigpKHR5cGVuYW1lIGNhbGxfdHJhaXRzPHR5cGVuYW1lIHVuYXJ5X3RyYWl0czxQcmVkaWNhdGU+Ojphcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIXByZWQoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIHVuYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpmdW5jdGlvbl90eXBlIHByZWQ7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGU+Ci0gICAgdW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4gbm90MShjb25zdCBQcmVkaWNhdGUgJnByZWQpCi0gICAgewotICAgICAgICAvLyBUaGUgY2FzdCBpcyB0byBwbGFjYXRlIEJvcmxhbmQgQysrQnVpbGRlciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCi0gICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgaXQgc2hvdWxkIGJlIG5lY2Vzc2FyeS4KLSAgICAgICAgcmV0dXJuIHVuYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+KCh0eXBlbmFtZSB1bmFyeV90cmFpdHM8UHJlZGljYXRlPjo6cGFyYW1fdHlwZSlwcmVkKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlPgotICAgIHVuYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+IG5vdDEoUHJlZGljYXRlICZwcmVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHVuYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+KHByZWQpOwotICAgIH0KLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gYmluYXJ5X25lZ2F0ZSwgbm90MgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdGVtcGxhdGUgPGNsYXNzIFByZWRpY2F0ZT4KLSAgICBjbGFzcyBiaW5hcnlfbmVnYXRlCi0gICAgICAgIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8UHJlZGljYXRlPjo6Zmlyc3RfYXJndW1lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpzZWNvbmRfYXJndW1lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbD4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGJpbmFyeV9uZWdhdGUodHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpwYXJhbV90eXBlIHgpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBwcmVkKHgpCi0gICAgICAgIHt9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKSh0eXBlbmFtZSBjYWxsX3RyYWl0czx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OmZpcnN0X2FyZ3VtZW50X3R5cGU+OjpwYXJhbV90eXBlIHgsCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPFByZWRpY2F0ZT46OnNlY29uZF9hcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB5KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIXByZWQoeCx5KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxQcmVkaWNhdGU+OjpmdW5jdGlvbl90eXBlIHByZWQ7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGU+Ci0gICAgYmluYXJ5X25lZ2F0ZTxQcmVkaWNhdGU+IG5vdDIoY29uc3QgUHJlZGljYXRlICZwcmVkKQotICAgIHsKLSAgICAgICAgLy8gVGhlIGNhc3QgaXMgdG8gcGxhY2F0ZSBCb3JsYW5kIEMrK0J1aWxkZXIgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLgotICAgICAgICAvLyBJIGRvbid0IHRoaW5rIGl0IHNob3VsZCBiZSBuZWNlc3NhcnkuCi0gICAgICAgIHJldHVybiBiaW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4oKHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8UHJlZGljYXRlPjo6cGFyYW1fdHlwZSlwcmVkKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlPgotICAgIGJpbmFyeV9uZWdhdGU8UHJlZGljYXRlPiBub3QyKFByZWRpY2F0ZSAmcHJlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaW5hcnlfbmVnYXRlPFByZWRpY2F0ZT4ocHJlZCk7Ci0gICAgfQotICAgICAgICAKLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8vIGJpbmRlcjFzdCwgYmluZDFzdAotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBjbGFzcyBiaW5kZXIxc3QKLSAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnNlY29uZF9hcmd1bWVudF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cmVzdWx0X3R5cGU+Ci0gICAgeyAgICAgICAKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgYmluZGVyMXN0KHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cGFyYW1fdHlwZSB4LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmaXJzdF9hcmd1bWVudF90eXBlPjo6cGFyYW1fdHlwZSB5KQotICAgICAgICAgICAgOgotICAgICAgICAgICAgb3AoeCksIHZhbHVlKHkpCi0gICAgICAgIHt9Ci0gICAgICAgIAotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnJlc3VsdF90eXBlCi0gICAgICAgIG9wZXJhdG9yKCkodHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpzZWNvbmRfYXJndW1lbnRfdHlwZT46OnBhcmFtX3R5cGUgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG9wKHZhbHVlLCB4KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmdW5jdGlvbl90eXBlIG9wOwotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZpcnN0X2FyZ3VtZW50X3R5cGUgdmFsdWU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgaW5saW5lIGJpbmRlcjFzdDxPcGVyYXRpb24+IGJpbmQxc3QoY29uc3QgT3BlcmF0aW9uICZvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZpcnN0X2FyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+OjpwYXJhbV90eXBlIHgpCi0gICAgewotICAgICAgICAvLyBUaGUgY2FzdCBpcyB0byBwbGFjYXRlIEJvcmxhbmQgQysrQnVpbGRlciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCi0gICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgaXQgc2hvdWxkIGJlIG5lY2Vzc2FyeS4KLSAgICAgICAgcmV0dXJuIGJpbmRlcjFzdDxPcGVyYXRpb24+KCh0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnBhcmFtX3R5cGUpb3AsIHgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBPcGVyYXRpb24+Ci0gICAgaW5saW5lIGJpbmRlcjFzdDxPcGVyYXRpb24+IGJpbmQxc3QoT3BlcmF0aW9uICZvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjYWxsX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OmZpcnN0X2FyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+OjpwYXJhbV90eXBlIHgpCi0gICAgewotICAgICAgICByZXR1cm4gYmluZGVyMXN0PE9wZXJhdGlvbj4ob3AsIHgpOwotICAgIH0KLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gYmluZGVyMm5kLCBiaW5kMm5kCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIGNsYXNzIGJpbmRlcjJuZAotICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6Zmlyc3RfYXJndW1lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnJlc3VsdF90eXBlPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgYmluZGVyMm5kKHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cGFyYW1fdHlwZSB4LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FsbF90cmFpdHM8dHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpzZWNvbmRfYXJndW1lbnRfdHlwZT46OnBhcmFtX3R5cGUgeSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIG9wKHgpLCB2YWx1ZSh5KQotICAgICAgICB7fQotICAgICAgICAKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpyZXN1bHRfdHlwZQotICAgICAgICBvcGVyYXRvcigpKHR5cGVuYW1lIGNhbGxfdHJhaXRzPHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6Zmlyc3RfYXJndW1lbnRfdHlwZT46OnBhcmFtX3R5cGUgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG9wKHgsIHZhbHVlKTsKLSAgICAgICAgfSAgICAgICAgICAgICAgIAotICAgICAgICAKLSAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpmdW5jdGlvbl90eXBlIG9wOwotICAgICAgICB0eXBlbmFtZSBiaW5hcnlfdHJhaXRzPE9wZXJhdGlvbj46OnNlY29uZF9hcmd1bWVudF90eXBlIHZhbHVlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3BlcmF0aW9uPgotICAgIGlubGluZSBiaW5kZXIybmQ8T3BlcmF0aW9uPiBiaW5kMm5kKGNvbnN0IE9wZXJhdGlvbiAmb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FsbF90cmFpdHM8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgYmluYXJ5X3RyYWl0czxPcGVyYXRpb24+OjpzZWNvbmRfYXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnBhcmFtX3R5cGUgeCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBjYXN0IGlzIHRvIHBsYWNhdGUgQm9ybGFuZCBDKytCdWlsZGVyIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KLSAgICAgICAgLy8gSSBkb24ndCB0aGluayBpdCBzaG91bGQgYmUgbmVjZXNzYXJ5LgotICAgICAgICByZXR1cm4gYmluZGVyMm5kPE9wZXJhdGlvbj4oKHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6cGFyYW1fdHlwZSlvcCwgeCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE9wZXJhdGlvbj4KLSAgICBpbmxpbmUgYmluZGVyMm5kPE9wZXJhdGlvbj4gYmluZDJuZChPcGVyYXRpb24gJm9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNhbGxfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGJpbmFyeV90cmFpdHM8T3BlcmF0aW9uPjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+OjpwYXJhbV90eXBlIHgpCi0gICAgewotICAgICAgICByZXR1cm4gYmluZGVyMm5kPE9wZXJhdGlvbj4ob3AsIHgpOwotICAgIH0KLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gbWVtX2Z1biwgZXRjCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBjbGFzcyBtZW1fZnVuX3QgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxUKiwgUz4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IG1lbV9mdW5fdChTIChUOjoqcCkoKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoVCogcCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLT4qcHRyKSgpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICBTIChUOjoqcHRyKSgpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVCwgY2xhc3MgQT4KLSAgICBjbGFzcyBtZW1fZnVuMV90IDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPFQqLCBBLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzogICAKLSAgICAgICAgZXhwbGljaXQgbWVtX2Z1bjFfdChTIChUOjoqcCkoQSkpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBwdHIocCkKLSAgICAgICAge30KLSAgICAgICAgUyBvcGVyYXRvcigpKFQqIHAsIHR5cGVuYW1lIGNhbGxfdHJhaXRzPEE+OjpwYXJhbV90eXBlIHgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocC0+KnB0cikoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKEEpOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBjbGFzcyBjb25zdF9tZW1fZnVuX3QgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxjb25zdCBUKiwgUz4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5fdChTIChUOjoqcCkoKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoY29uc3QgVCogcCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLT4qcHRyKSgpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICBTIChUOjoqcHRyKSgpIGNvbnN0OyAgICAgICAgCi0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGNsYXNzIGNvbnN0X21lbV9mdW4xX3QgOiBwdWJsaWMgc3RkOjpiaW5hcnlfZnVuY3Rpb248Y29uc3QgVCosIEEsIFM+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBjb25zdF9tZW1fZnVuMV90KFMgKFQ6OipwKShBKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoY29uc3QgVCogcCwgdHlwZW5hbWUgY2FsbF90cmFpdHM8QT46OnBhcmFtX3R5cGUgeCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLT4qcHRyKSh4KTsKLSAgICAgICAgfQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgUyAoVDo6KnB0cikoQSkgY29uc3Q7Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGlubGluZSBtZW1fZnVuX3Q8UyxUPiBtZW1fZnVuKFMgKFQ6OipmKSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbV9mdW5fdDxTLFQ+KGYpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGlubGluZSBtZW1fZnVuMV90PFMsVCxBPiBtZW1fZnVuKFMgKFQ6OipmKShBKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtZW1fZnVuMV90PFMsVCxBPihmKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfQ09OU1QKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGlubGluZSBjb25zdF9tZW1fZnVuX3Q8UyxUPiBtZW1fZnVuKFMgKFQ6OipmKSgpIGNvbnN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X21lbV9mdW5fdDxTLFQ+KGYpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGlubGluZSBjb25zdF9tZW1fZnVuMV90PFMsVCxBPiBtZW1fZnVuKFMgKFQ6OipmKShBKSBjb25zdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9tZW1fZnVuMV90PFMsVCxBPihmKTsKLSAgICB9Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfQ09OU1QKLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgLy8gbWVtX2Z1bl9yZWYsIGV0YwotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIFQ+Ci0gICAgY2xhc3MgbWVtX2Z1bl9yZWZfdCA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQmLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgbWVtX2Z1bl9yZWZfdChTIChUOjoqcCkoKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICBTIG9wZXJhdG9yKCkoVCYgcCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChwLipwdHIpKCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKCk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGNsYXNzIG1lbV9mdW4xX3JlZl90IDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPFQmLCBBLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgbWVtX2Z1bjFfcmVmX3QoUyAoVDo6KnApKEEpKQotICAgICAgICAgICAgOgotICAgICAgICAgICAgcHRyKHApCi0gICAgICAgIHt9Ci0gICAgICAgIFMgb3BlcmF0b3IoKShUJiBwLCB0eXBlbmFtZSBjYWxsX3RyYWl0czxBPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAuKnB0cikoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKEEpOwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIFQ+Ci0gICAgY2xhc3MgY29uc3RfbWVtX2Z1bl9yZWZfdCA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPGNvbnN0IFQmLCBTPgotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl9yZWZfdChTIChUOjoqcCkoKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotICAgICAgICAKLSAgICAgICAgUyBvcGVyYXRvcigpKGNvbnN0IFQgJnApIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAocC4qcHRyKSgpOwotICAgICAgICB9Ci0gICAgICBwcml2YXRlOgotICAgICAgICBTIChUOjoqcHRyKSgpIGNvbnN0OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgUywgY2xhc3MgVCwgY2xhc3MgQT4KLSAgICBjbGFzcyBjb25zdF9tZW1fZnVuMV9yZWZfdCA6IHB1YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxjb25zdCBUJiwgQSwgUz4KLSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3JlZl90KFMgKFQ6OipwKShBKSBjb25zdCkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIHB0cihwKQotICAgICAgICB7fQotCi0gICAgICAgIFMgb3BlcmF0b3IoKShjb25zdCBUJiBwLCB0eXBlbmFtZSBjYWxsX3RyYWl0czxBPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHAuKnB0cikoeCk7Ci0gICAgICAgIH0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFMgKFQ6OipwdHIpKEEpIGNvbnN0OwotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGU8Y2xhc3MgUywgY2xhc3MgVD4KLSAgICBpbmxpbmUgbWVtX2Z1bl9yZWZfdDxTLFQ+IG1lbV9mdW5fcmVmKFMgKFQ6OipmKSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbV9mdW5fcmVmX3Q8UyxUPihmKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBULCBjbGFzcyBBPgotICAgIGlubGluZSBtZW1fZnVuMV9yZWZfdDxTLFQsQT4gbWVtX2Z1bl9yZWYoUyAoVDo6KmYpKEEpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbV9mdW4xX3JlZl90PFMsVCxBPihmKTsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fUE9JTlRFUl9UT19NRU1CRVJfQ09OU1QKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPgotICAgIGlubGluZSBjb25zdF9tZW1fZnVuX3JlZl90PFMsVD4gbWVtX2Z1bl9yZWYoUyAoVDo6KmYpKCkgY29uc3QpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfbWVtX2Z1bl9yZWZfdDxTLFQ+KGYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGNvbnN0X21lbV9mdW4xX3JlZl90PFMsVCxBPiBtZW1fZnVuX3JlZihTIChUOjoqZikoQSkgY29uc3QpCi0gICAgewotICAgICAgICByZXR1cm4gY29uc3RfbWVtX2Z1bjFfcmVmX3Q8UyxULEE+KGYpOwotICAgIH0gICAKLSNlbmRpZiAvLyBORE5CT09TVF9OT19QT0lOVEVSX1RPX01FTUJFUl9DT05TVAotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBwdHJfZnVuCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnLCBjbGFzcyBSZXN1bHQ+Ci0gICAgY2xhc3MgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbiA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPEFyZyxSZXN1bHQ+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uKFJlc3VsdCAoKmYpKEFyZykpCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgICBmdW5jKGYpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgUmVzdWx0IG9wZXJhdG9yKCkodHlwZW5hbWUgY2FsbF90cmFpdHM8QXJnPjo6cGFyYW1fdHlwZSB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuYyh4KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIFJlc3VsdCAoKmZ1bmMpKEFyZyk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBBcmcsIGNsYXNzIFJlc3VsdD4KLSAgICBpbmxpbmUgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxBcmcsUmVzdWx0PiBwdHJfZnVuKFJlc3VsdCAoKmYpKEFyZykpCi0gICAgewotICAgICAgICByZXR1cm4gcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxBcmcsUmVzdWx0PihmKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgUmVzdWx0PgotICAgIGNsYXNzIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPEFyZzEsQXJnMixSZXN1bHQ+Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbihSZXN1bHQgKCpmKShBcmcxLCBBcmcyKSkKLSAgICAgICAgICAgIDoKLSAgICAgICAgICAgIGZ1bmMoZikKLSAgICAgICAge30KLSAgICAgICAgCi0gICAgICAgIFJlc3VsdCBvcGVyYXRvcigpKHR5cGVuYW1lIGNhbGxfdHJhaXRzPEFyZzE+OjpwYXJhbV90eXBlIHgsIHR5cGVuYW1lIGNhbGxfdHJhaXRzPEFyZzI+OjpwYXJhbV90eXBlIHkpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jKHgseSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICBwcml2YXRlOgotICAgICAgICBSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIFJlc3VsdD4KLSAgICBpbmxpbmUgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248QXJnMSxBcmcyLFJlc3VsdD4gcHRyX2Z1bihSZXN1bHQgKCpmKShBcmcxLCBBcmcyKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbjxBcmcxLEFyZzIsUmVzdWx0PihmKTsKLSAgICB9Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjNjhiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcD4KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2Zsb2F0X2Z1bmN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvZmxvYXRfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxYWI2Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvZmxvYXRfZnVuY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0ZMT0FUX0ZVTkNUSU9OU19IUFApCi0jZGVmaW5lIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9ERVRBSUxfRkxPQVRfRlVOQ1RJT05TX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vIFNldCBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIHRvIDEgZm9yIGxpYnJhcmllcyBrbm93biB0byBoYXZlCi0vLyBzdWZmaWNpZW50bHkgZ29vZCBmbG9hdGluZyBwb2ludCBzdXBwb3J0IHRvIG5vdCByZXF1aXJlIGFueQotLy8gd29ya2Fyb3VuZHMuCi0vLwotLy8gV2hlbiBzZXQgdG8gMCwgdGhlIGxpYnJhcnkgdHJpZXMgdG8gYXV0b21hdGljYWxseQotLy8gdXNlIHRoZSBiZXN0IGF2YWlsYWJsZSBpbXBsZW1lbnRhdGlvbi4gVGhpcyBub3JtYWxseSB3b3JrcyB3ZWxsLCBidXQKLS8vIGJyZWFrcyB3aGVuIGFtYmlndWl0aWVzIGFyZSBjcmVhdGVkIGJ5IG9kZCBuYW1lc3BhY2luZyBvZiB0aGUgZnVuY3Rpb25zLgotLy8KLS8vIE5vdGUgdGhhdCBpZiB0aGlzIGlzIHNldCB0byAwLCB0aGUgbGlicmFyeSBzaG91bGQgc3RpbGwgdGFrZSBmdWxsCi0vLyBhZHZhbnRhZ2Ugb2YgdGhlIHBsYXRmb3JtJ3MgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydC4KLQotI2lmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAwCi0jZWxpZiBkZWZpbmVkKF9fTElCQ09NT19fKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX19TVERfUldDT01QSUxFUl9IX18pIHx8IGRlZmluZWQoX1JXU1REX1ZFUikKLS8vIFJvZ3VlIFdhdmUgbGlicmFyeToKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyAwCi0jZWxpZiBkZWZpbmVkKF9MSUJDUFBfVkVSU0lPTikKLS8vIGxpYmMrKwotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDEKLSNlbGlmIGRlZmluZWQoX19HTElCQ1BQX18pIHx8IGRlZmluZWQoX19HTElCQ1hYX18pCi0vLyBHTlUgbGlic3RkYysrIDMKLSMgICBpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA0Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDEKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkKLS8vIGdlbmVyaWMgU0dJIFNUTAotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX19NU0xfQ1BQX18pCi0vLyBNU0wgc3RhbmRhcmQgbGliOgotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIGRlZmluZWQoX19JQk1DUFBfXykKLS8vIFZBQ1BQIHN0ZCBsaWIgKHByb2JhYmx5IGNvbmZvcm1hbnQgZm9yIG11Y2ggZWFybGllciB2ZXJzaW9uKS4KLSMgICBpZiBfX0lCTUNQUF9fID49IDEyMTAKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMQotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKE1TSVBMX0NPTVBJTEVfSCkKLS8vIE1vZGVuYSBDKysgc3RhbmRhcmQgbGlicmFyeQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbGlmIChkZWZpbmVkKF9ZVkFMUykgJiYgIWRlZmluZWQoX19JQk1DUFBfXykpIHx8IGRlZmluZWQoX0NQUExJQl9WRVIpCi0vLyBEaW5rdW13YXJlIExpYnJhcnkgKHRoaXMgaGFzIHRvIGFwcGVhciBhZnRlciBhbnkgcG9zc2libGUgcmVwbGFjZW1lbnQgbGlicmFyaWVzKToKLSMgICBpZiBfQ1BQTElCX1ZFUiA+PSA0MDUKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMQotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMgMAotIyAgIGVuZGlmCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTIDAKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUwotCi0vLyBUaGUgc3RhbmRhcmQgbGlicmFyeSBpcyBrbm93biB0byBiZSBjb21wbGlhbnQsIHNvIGRvbid0IHVzZSB0aGUKLS8vIGNvbmZpZ3VyYXRpb24gbWVjaGFuaXNtLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgc3RydWN0IGNhbGxfbGRleHAgewotICAgICAgICAgICAgdHlwZWRlZiBGbG9hdCBmbG9hdF90eXBlOwotICAgICAgICAgICAgaW5saW5lIEZsb2F0IG9wZXJhdG9yKCkoRmxvYXQgeCwgaW50IHkpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpsZGV4cCh4LCB5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIHN0cnVjdCBjYWxsX2ZyZXhwIHsKLSAgICAgICAgICAgIHR5cGVkZWYgRmxvYXQgZmxvYXRfdHlwZTsKLSAgICAgICAgICAgIGlubGluZSBGbG9hdCBvcGVyYXRvcigpKEZsb2F0IHgsIGludCogeSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OmZyZXhwKHgsIHkpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBGbG9hdCB0eXBlOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2Vsc2UgLy8gTkROQk9PU1RfSEFTSF9DT05GT1JNQU5UX0ZMT0FUUyA9PSAwCi0KLS8vIFRoZSBDKysgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCB0aGUgQyBmbG9hdCBmdW5jdGlvbnMgYXJlIG92ZXJsb2FyZGVkCi0vLyBmb3IgZmxvYXQsIGRvdWJsZSBhbmQgbG9uZyBkb3VibGUgaW4gdGhlIHN0ZCBuYW1lc3BhY2UsIGJ1dCBzb21lIG9mIHRoZSBvbGRlcgotLy8gbGlicmFyeSBpbXBsZW1lbnRhdGlvbnMgZG9uJ3Qgc3VwcG9ydCB0aGlzLiBPbiBzb21lIHRoYXQgZG9uJ3QsIHRoZSBDOTkKLS8vIGZsb2F0IGZ1bmN0aW9ucyAoZnJleHBmLCBmcmV4cGwsIGV0Yy4pIGFyZSBhdmFpbGFibGUuCi0vLwotLy8gVGhlIGZvbGxvd2luZyB0cmllcyB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB3aGljaCBhcmUgYXZhaWxhYmxlLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7Ci0KLSAgICAgICAgLy8gUmV0dXJuZWQgYnkgZHVtbXkgdmVyc2lvbnMgb2YgdGhlIGZsb2F0IGZ1bmN0aW9ucy4KLSAgICAKLSAgICAgICAgc3RydWN0IG5vdF9mb3VuZCB7Ci0gICAgICAgICAgICAvLyBJbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIGZsb2F0IGFuZCBsb25nIGRvdWJsZSBpbiBvcmRlciB0byBhdm9pZAotICAgICAgICAgICAgLy8gYSBjb21waWxlIGVycm9yIHdoZW4gdGhlIGR1bW15IGZsb2F0IGZ1bmN0aW9ucyBhcmUgdXNlZC4KLQotICAgICAgICAgICAgaW5saW5lIG9wZXJhdG9yIGZsb2F0KCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgICAgICAgICAgaW5saW5lIG9wZXJhdG9yIGxvbmcgZG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQotICAgICAgICB9OwotICAgICAgICAgIAotICAgICAgICAvLyBBIHR5cGUgZm9yIGRldGVjdGluZyB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb25zLgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXM7Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBpczxmbG9hdD4geyBjaGFyIHhbMTBdOyB9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXM8ZG91YmxlPiB7IGNoYXIgeFsyMF07IH07Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBpczxsb25nIGRvdWJsZT4geyBjaGFyIHhbMzBdOyB9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXM8bmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpub3RfZm91bmQ+IHsgY2hhciB4WzQwXTsgfTsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBVc2VkIHRvIGNvbnZlcnQgdGhlIHJldHVybiB0eXBlIG9mIGEgZnVuY3Rpb24gdG8gYSB0eXBlIGZvciBzaXplb2YuCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlzPFQ+IGZsb2F0X3R5cGUoVCk7Ci0KLSAgICAgICAgLy8gY2FsbF9sZGV4cAotICAgICAgICAvLwotICAgICAgICAvLyBUaGlzIHdpbGwgZ2V0IHNwZWNpYWxpemVkIGZvciBmbG9hdCBhbmQgbG9uZyBkb3VibGUKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4gc3RydWN0IGNhbGxfbGRleHAKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBkb3VibGUgZmxvYXRfdHlwZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5saW5lIGRvdWJsZSBvcGVyYXRvcigpKGRvdWJsZSBhLCBpbnQgYikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgICAgIHJldHVybiBsZGV4cChhLCBiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvLyBjYWxsX2ZyZXhwCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoaXMgd2lsbCBnZXQgc3BlY2lhbGl6ZWQgZm9yIGZsb2F0IGFuZCBsb25nIGRvdWJsZQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4gc3RydWN0IGNhbGxfZnJleHAKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBkb3VibGUgZmxvYXRfdHlwZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5saW5lIGRvdWJsZSBvcGVyYXRvcigpKGRvdWJsZSBhLCBpbnQqIGIpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJleHAoYSwgYik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfQotfQotICAgICAgICAgICAgCi0vLyBBIG5hbWVzcGFjZSBmb3IgZHVtbXkgZnVuY3Rpb25zIHRvIGRldGVjdCB3aGVuIHRoZSBhY3R1YWwgZnVuY3Rpb24gd2Ugd2FudAotLy8gaXNuJ3QgYXZhaWxhYmxlLiBsZGV4cGwsIGxkZXhwZiBldGMuIG1pZ2h0IGJlIGFkZGVkIHRieSB0aGUgbWFjcm9zIGJlbG93LgotLy8KLS8vIEFGQUlDVCB0aGVzZSBoYXZlIHRvIGJlIG91dHNpZGUgb2YgdGhlIGJvb3N0IG5hbWVzcGFjZSwgYXMgaWYgdGhleSdyZSBpbgotLy8gdGhlIGJvb3N0IG5hbWVzcGFjZSB0aGV5J2xsIGFsd2F5cyBiZSBwcmVmZXJhYmxlIHRvIGFueSBvdGhlciBmdW5jdGlvbgotLy8gKHNpbmNlIHRoZSBhcmd1bWVudHMgYXJlIGJ1aWx0IGluIHR5cGVzLCBBREwgY2FuJ3QgYmUgdXNlZCkuCi0KLW5hbWVzcGFjZSBuZG5ib29zdF9oYXNoX2RldGVjdF9mbG9hdF9mdW5jdGlvbnMgewotICAgIHRlbXBsYXRlIDxjbGFzcyBGbG9hdD4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpub3RfZm91bmQgbGRleHAoRmxvYXQsIGludCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEZsb2F0PiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Om5vdF9mb3VuZCBmcmV4cChGbG9hdCwgaW50Kik7ICAgIAotfQotCi0vLyBNYWNyb3MgZm9yIGdlbmVyYXRpbmcgc3BlY2lhbGl6YXRpb25zIG9mIGNhbGxfbGRleHAgYW5kIGNhbGxfZnJleHAuCi0vLwotLy8gY2hlY2tfY3BwIGFuZCBjaGVja19jOTkgY2hlY2sgaWYgdGhlIEMrKyBvciBDOTkgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUuCi0vLwotLy8gVGhlbiB0aGUgY2FsbF8qIGZ1bmN0aW9ucyBzZWxlY3QgYW4gYXBwcm9wcmlhdGUgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gSSB1c2VkIGM5OV9mdW5jIGluIGEgZmV3IHBsYWNlcyBqdXN0IHRvIGdldCBhIHVuaXF1ZSBuYW1lLgotLy8KLS8vIEltcG9ydGFudDogd2hlbiB1c2luZyAndXNpbmcgbmFtZXNwYWNlJyBhdCBuYW1lc3BhY2UgbGV2ZWwsIGluY2x1ZGUgYXMKLS8vIGxpdHRsZSBhcyBwb3NzaWJsZSBpbiB0aGF0IG5hbWVzcGFjZSwgYXMgVmlzdWFsIEMrKyBoYXMgYW4gb2RkIGJ1ZyB3aGljaAotLy8gY2FuIGNhdXNlIHRoZSBuYW1lc3BhY2UgdG8gYmUgaW1wb3J0ZWQgYXQgdGhlIGdsb2JhbCBsZXZlbC4gVGhpcyBzZWVtcyB0bwotLy8gaGFwcGVuIG1haW5seSB3aGVuIHRoZXJlJ3MgYSB0ZW1wbGF0ZSBpbiB0aGUgc2FtZSBuYW1lc2FwY2UuCi0KLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX0ZVTkMoY3BwX2Z1bmMsIGM5OV9mdW5jLCB0eXBlMSwgdHlwZTIpICAgIFwKLW5hbWVzcGFjZSBuZG5ib29zdF9oYXNoX2RldGVjdF9mbG9hdF9mdW5jdGlvbnMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmxvYXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Om5vdF9mb3VuZCBjOTlfZnVuYyhGbG9hdCwgdHlwZTIpOyAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW5hbWVzcGFjZSBuZG5ib29zdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmFtZXNwYWNlIGM5OV9mdW5jIyNfZGV0ZWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBuZG5ib29zdF9oYXNoX2RldGVjdF9mbG9hdF9mdW5jdGlvbnM7ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0cnVjdCBjaGVjayB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBzdGF0aWMgdHlwZTEgeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBzdGF0aWMgdHlwZTIgeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgY3BwID0gICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZsb2F0X3R5cGUoY3BwX2Z1bmMoeCx5KSkpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihpczx0eXBlMT4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgYzk5ID0gICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZsb2F0X3R5cGUoYzk5X2Z1bmMoeCx5KSkpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihpczx0eXBlMT4pKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgeD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfYzk5XyMjYzk5X2Z1bmMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6Y2FsbF8jI2NwcF9mdW5jPGRvdWJsZT4ge307ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfYzk5XyMjYzk5X2Z1bmM8dHJ1ZT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZTEgZmxvYXRfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGlubGluZSB0eXBlMSBvcGVyYXRvcigpKHR5cGUxIGEsIFQgYikgIGNvbnN0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gYzk5X2Z1bmMoYSwgYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgeD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfY3BwXyMjYzk5X2Z1bmMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGNhbGxfYzk5XyMjYzk5X2Z1bmM8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNoX2RldGFpbDo6Yzk5X2Z1bmMjI19kZXRlY3Q6OmNoZWNrOjpjOTkgICAgIFwKLSAgICAgICAgICAgID4ge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfY3BwXyMjYzk5X2Z1bmM8dHJ1ZT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZTEgZmxvYXRfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGlubGluZSB0eXBlMSBvcGVyYXRvcigpKHR5cGUxIGEsIFQgYikgIGNvbnN0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gY3BwX2Z1bmMoYSwgYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGNhbGxfIyNjcHBfZnVuYzx0eXBlMT4gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGNhbGxfY3BwXyMjYzk5X2Z1bmM8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNoX2RldGFpbDo6Yzk5X2Z1bmMjI19kZXRlY3Q6OmNoZWNrOjpjcHAgICAgIFwKLSAgICAgICAgICAgID4ge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0KLQotI2RlZmluZSBORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfTUFDUk8oY3BwX2Z1bmMsIGM5OV9mdW5jLCB0eXBlMSwgdHlwZTIpICAgXAotbmFtZXNwYWNlIG5kbmJvb3N0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdHJ1Y3QgY2FsbF8jI2NwcF9mdW5jPHR5cGUxPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlMSBmbG9hdF90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgaW5saW5lIHR5cGUxIG9wZXJhdG9yKCkodHlwZTEgeCwgdHlwZTIgeSkgY29uc3QgeyAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiBjOTlfZnVuYyh4LCB5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0jaWYgZGVmaW5lZChsZGV4cGYpCi1ORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfTUFDUk8obGRleHAsIGxkZXhwZiwgZmxvYXQsIGludCkKLSNlbHNlCi1ORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfRlVOQyhsZGV4cCwgbGRleHBmLCBmbG9hdCwgaW50KQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKGxkZXhwbCkKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9NQUNSTyhsZGV4cCwgbGRleHBsLCBsb25nIGRvdWJsZSwgaW50KQotI2Vsc2UKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9GVU5DKGxkZXhwLCBsZGV4cGwsIGxvbmcgZG91YmxlLCBpbnQpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoZnJleHBmKQotTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX01BQ1JPKGZyZXhwLCBmcmV4cGYsIGZsb2F0LCBpbnQqKQotI2Vsc2UKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9GVU5DKGZyZXhwLCBmcmV4cGYsIGZsb2F0LCBpbnQqKQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKGZyZXhwbCkKLU5ETkJPT1NUX0hBU0hfQ0FMTF9GTE9BVF9NQUNSTyhmcmV4cCwgZnJleHBsLCBsb25nIGRvdWJsZSwgaW50KikKLSNlbHNlCi1ORE5CT09TVF9IQVNIX0NBTExfRkxPQVRfRlVOQyhmcmV4cCwgZnJleHBsLCBsb25nIGRvdWJsZSwgaW50KikKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX01BQ1JPCi0jdW5kZWYgTkROQk9PU1RfSEFTSF9DQUxMX0ZMT0FUX0ZVTkMKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdDEsIHR5cGVuYW1lIEZsb2F0Mj4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGVfaW1wbCB7Ci0gICAgICAgICAgICB0eXBlZGVmIGRvdWJsZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBzZWxlY3RfaGFzaF90eXBlX2ltcGw8ZmxvYXQsIGZsb2F0PiB7Ci0gICAgICAgICAgICB0eXBlZGVmIGZsb2F0IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IHNlbGVjdF9oYXNoX3R5cGVfaW1wbDxsb25nIGRvdWJsZSwgbG9uZyBkb3VibGU+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsKLSAgICAgICAgfTsKLQotCi0gICAgICAgIC8vIHNlbGVjdF9oYXNoX3R5cGUKLSAgICAgICAgLy8KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgc3VwcG9ydCBmb3IgYSBwYXJ0aWN1bGFyIGZsb2F0aW5nIHBvaW50IHR5cGUsIHVzZSB0aGF0Ci0gICAgICAgIC8vIG90aGVyd2lzZSB1c2UgZG91YmxlICh0aGVyZSdzIGFsd2F5cyBzdXBwb3J0IGZvciBkb3VibGUpLgotICAgICAgICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIHN0cnVjdCBzZWxlY3RfaGFzaF90eXBlIDogc2VsZWN0X2hhc2hfdHlwZV9pbXBsPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2FsbF9sZGV4cDxGbG9hdD46OmZsb2F0X3R5cGUsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjYWxsX2ZyZXhwPEZsb2F0Pjo6ZmxvYXRfdHlwZQotICAgICAgICAgICAgPiB7fTsgICAgICAgICAgICAKLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9IQVNIX0NPTkZPUk1BTlRfRkxPQVRTCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2hhc2hfZmxvYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2hhc2hfZmxvYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Njg3M2FlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9oYXNoX2Zsb2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMTIgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0hBU0hfRkxPQVRfSEVBREVSKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0hBU0hfRkxPQVRfSEVBREVSCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZGV0YWlsL2Zsb2F0X2Z1bmN0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19sb2cyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI2lmIE5ETkJPT1NUX01TVkMgPj0gMTQwMAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjI5NCkgLy8gSWxsLWRlZmluZWQgZm9yLWxvb3A6IGluaXRpYWwgY29uZGl0aW9uIGRvZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBzYXRpc2Z5IHRlc3QuIExvb3AgYm9keSBub3QgZXhlY3V0ZWQKLSNlbmRpZgotI2VuZGlmCi0KLS8vIENhbiB3ZSB1c2UgZnBjbGFzc2lmeT8KLQotLy8gU1RMcG9ydAotI2lmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWSAwCi0KLS8vIEdOVSBsaWJzdGRjKysgMwotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLSMgIGlmIChkZWZpbmVkKF9fVVNFX0lTT0M5OSkgfHwgZGVmaW5lZChfR0xJQkNYWF9VU0VfQzk5X01BVEgpKSAmJiBcCi0gICAgICAhKGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pKQotIyAgICBkZWZpbmUgTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWSAxCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZIDAKLSMgIGVuZGlmCi0KLS8vIEV2ZXJ5dGhpbmcgZWxzZQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9IQVNIX1VTRV9GUENMQVNTSUZZIDAKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIGlubGluZSB2b2lkIGhhc2hfZmxvYXRfY29tYmluZShzdGQ6OnNpemVfdCYgc2VlZCwgc3RkOjpzaXplX3QgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNlZWQgXj0gdmFsdWUgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gQmluYXJ5IGhhc2ggZnVuY3Rpb24KLSAgICAgICAgLy8KLSAgICAgICAgLy8gT25seSB1c2VkIGZvciBmbG9hdHMgd2l0aCBrbm93biBpZWM1NTkgZmxvYXRzLCBhbmQgY2VydGFpbiB2YWx1ZXMgaW4KLSAgICAgICAgLy8gbnVtZXJpY19saW1pdHMKLQotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9iaW5hcnkoY2hhciogcHRyLCBzdGQ6OnNpemVfdCBsZW5ndGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgICAgICBpZiAobGVuZ3RoID49IHNpemVvZihzdGQ6OnNpemVfdCkpIHsKLSAgICAgICAgICAgICAgICBzZWVkID0gKihzdGQ6OnNpemVfdCopIHB0cjsKLSAgICAgICAgICAgICAgICBsZW5ndGggLT0gc2l6ZW9mKHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgICAgICAgICBwdHIgKz0gc2l6ZW9mKHN0ZDo6c2l6ZV90KTsKLQotICAgICAgICAgICAgICAgIHdoaWxlKGxlbmd0aCA+PSBzaXplb2Yoc3RkOjpzaXplX3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1ZmZlciA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZidWZmZXIsIHB0ciwgc2l6ZW9mKHN0ZDo6c2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgICAgIGhhc2hfZmxvYXRfY29tYmluZShzZWVkLCBidWZmZXIpOwotICAgICAgICAgICAgICAgICAgICBsZW5ndGggLT0gc2l6ZW9mKHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgICAgICAgICAgICAgcHRyICs9IHNpemVvZihzdGQ6OnNpemVfdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1ZmZlciA9IDA7Ci0gICAgICAgICAgICAgICAgc3RkOjptZW1jcHkoJmJ1ZmZlciwgcHRyLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgIGhhc2hfZmxvYXRfY29tYmluZShzZWVkLCBidWZmZXIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gc2VlZDsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChGbG9hdCB2LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmlzX2llYzU1OSAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjpkaWdpdHMgPT0gMjQgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6cmFkaXggPT0gMiAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjptYXhfZXhwb25lbnQgPT0gMTI4LAotICAgICAgICAgICAgICAgIGludD46OnR5cGUKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfYmluYXJ5KChjaGFyKikgJnYsIDQpOwotICAgICAgICB9Ci0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX2ltcGwoRmxvYXQgdiwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+Ojppc19pZWM1NTkgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6ZGlnaXRzID09IDUzICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OnJhZGl4ID09IDIgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6bWF4X2V4cG9uZW50ID09IDEwMjQsCi0gICAgICAgICAgICAgICAgaW50Pjo6dHlwZQotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaF9iaW5hcnkoKGNoYXIqKSAmdiwgOCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX2ltcGwoRmxvYXQgdiwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+Ojppc19pZWM1NTkgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6ZGlnaXRzID09IDY0ICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OnJhZGl4ID09IDIgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6bWF4X2V4cG9uZW50ID09IDE2Mzg0LAotICAgICAgICAgICAgICAgIGludD46OnR5cGUKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfYmluYXJ5KChjaGFyKikgJnYsIDEwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChGbG9hdCB2LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OmlzX2llYzU1OSAmJgotICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXQ+OjpkaWdpdHMgPT0gMTEzICYmCi0gICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdD46OnJhZGl4ID09IDIgJiYKLSAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0Pjo6bWF4X2V4cG9uZW50ID09IDE2Mzg0LAotICAgICAgICAgICAgICAgIGludD46OnR5cGUKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfYmluYXJ5KChjaGFyKikgJnYsIDE2KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBQb3J0YWJsZSBoYXNoIGZ1bmN0aW9uCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIHRoZSBiaW5hcnkgaGFzaCBmdW5jdGlvbiBpc24ndCBzdXBwb3J0ZWQuCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX2ltcGwyKFQgdikKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpjYWxsX2ZyZXhwPFQ+IGZyZXhwOwotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpjYWxsX2xkZXhwPFQ+IGxkZXhwOwotCi0gICAgICAgICAgICBpbnQgZXhwID0gMDsKLQotICAgICAgICAgICAgdiA9IGZyZXhwKHYsICZleHApOwotCi0gICAgICAgICAgICAvLyBBIHBvc3RpdmUgdmFsdWUgaXMgZWFzaWVyIHRvIGhhc2gsIHNvIGNvbWJpbmUgdGhlCi0gICAgICAgICAgICAvLyBzaWduIHdpdGggdGhlIGV4cG9uZW50IGFuZCB1c2UgdGhlIGFic29sdXRlIHZhbHVlLgotICAgICAgICAgICAgaWYodiA8IDApIHsKLSAgICAgICAgICAgICAgICB2ID0gLXY7Ci0gICAgICAgICAgICAgICAgZXhwICs9IGxpbWl0czxUPjo6bWF4X2V4cG9uZW50IC0KLSAgICAgICAgICAgICAgICAgICAgbGltaXRzPFQ+OjptaW5fZXhwb25lbnQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHYgPSBsZGV4cCh2LCBsaW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHMpOwotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pih2KTsKLSAgICAgICAgICAgIHYgLT0gc3RhdGljX2Nhc3Q8VD4oc2VlZCk7Ci0KLSAgICAgICAgICAgIC8vIGNlaWxpbmcoZGlnaXRzKFQpICogbG9nMihyYWRpeChUKSkvIGRpZ2l0cyhzaXplX3QpKSAtIDE7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCBsZW5ndGgKLSAgICAgICAgICAgICAgICA9IChsaW1pdHM8VD46OmRpZ2l0cyAqCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6c3RhdGljX2xvZzI8bGltaXRzPFQ+OjpyYWRpeD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICArIGxpbWl0czxzdGQ6OnNpemVfdD46OmRpZ2l0cyAtIDEpCi0gICAgICAgICAgICAgICAgLyBsaW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHM7Ci0KLSAgICAgICAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2ID0gbGRleHAodiwgbGltaXRzPHN0ZDo6c2l6ZV90Pjo6ZGlnaXRzKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBwYXJ0ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYpOwotICAgICAgICAgICAgICAgIHYgLT0gc3RhdGljX2Nhc3Q8VD4ocGFydCk7Ci0gICAgICAgICAgICAgICAgaGFzaF9mbG9hdF9jb21iaW5lKHNlZWQsIHBhcnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBoYXNoX2Zsb2F0X2NvbWJpbmUoc2VlZCwgZXhwKTsKLQotICAgICAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU0hfREVUQUlMX1RFU1RfV0lUSE9VVF9HRU5FUklDKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfaW1wbChUIHYsIC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHNlbGVjdF9oYXNoX3R5cGU8VD46OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIHJldHVybiBmbG9hdF9oYXNoX2ltcGwyKHN0YXRpY19jYXN0PHR5cGU+KHYpKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfQotfQotCi0jaWYgTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBmbG9hdF9oYXNoX3ZhbHVlKFQgdikKLSAgICAgICAgewotI2lmIGRlZmluZWQoZnBjbGFzc2lmeSkKLSAgICAgICAgICAgIHN3aXRjaCAoZnBjbGFzc2lmeSh2KSkKLSNlbGlmIE5ETkJPT1NUX0hBU0hfQ09ORk9STUFOVF9GTE9BVFMKLSAgICAgICAgICAgIHN3aXRjaCAoc3RkOjpmcGNsYXNzaWZ5KHYpKQotI2Vsc2UKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICBzd2l0Y2ggKGZwY2xhc3NpZnkodikpCi0jZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgRlBfWkVSTzoKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGNhc2UgRlBfSU5GSU5JVEU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChzdGQ6OnNpemVfdCkodiA+IDAgPyAtMSA6IC0yKTsKLSAgICAgICAgICAgIGNhc2UgRlBfTkFOOgotICAgICAgICAgICAgICAgIHJldHVybiAoc3RkOjpzaXplX3QpKC0zKTsKLSAgICAgICAgICAgIGNhc2UgRlBfTk9STUFMOgotICAgICAgICAgICAgY2FzZSBGUF9TVUJOT1JNQUw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0X2hhc2hfaW1wbCh2LCAwKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi0jZWxzZSAvLyAhTkROQk9PU1RfSEFTSF9VU0VfRlBDTEFTU0lGWQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBpbmxpbmUgYm9vbCBpc196ZXJvKFQgdikKLSAgICAgICAgewotI2lmICFkZWZpbmVkKF9fR05VQ19fKQotICAgICAgICAgICAgcmV0dXJuIHYgPT0gMDsKLSNlbHNlCi0gICAgICAgICAgICAvLyBHQ0MncyAnLVdmbG9hdC1lcXVhbCcgd2lsbCBjb21wbGFpbiBhYm91dCBjb21wYXJpbmcKLSAgICAgICAgICAgIC8vIHYgdG8gMCwgYnV0IGJlY2F1c2UgaXQgZGlzYWJsZXMgd2FybmluZ3MgZm9yIHN5c3RlbQotICAgICAgICAgICAgLy8gaGVhZGVycyBpdCB3b24ndCBjb21wbGFpbiBpZiB5b3UgdXNlIHN0ZDo6ZXF1YWxfdG8gdG8KLSAgICAgICAgICAgIC8vIGNvbXBhcmUgd2l0aCAwLiBSZXN1bHRpbmcgaW4gdGhpcyBzaWxsaW5lc3M6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjplcXVhbF90bzxUPigpKHYsIDApOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGZsb2F0X2hhc2hfdmFsdWUoVCB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjppc196ZXJvKHYpID8gMCA6IGZsb2F0X2hhc2hfaW1wbCh2LCAwKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0hBU0hfVVNFX0ZQQ0xBU1NJRlkKLQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfVVNFX0ZQQ0xBU1NJRlkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9kZXRhaWwvbGltaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9saW1pdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjViM2JlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9saW1pdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwNS0yMDA5IERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIE9uIHNvbWUgcGxhdGZvcm1zIHN0ZDo6bGltaXRzIGdpdmVzIGluY29ycmVjdCB2YWx1ZXMgZm9yIGxvbmcgZG91YmxlLgotLy8gVGhpcyB0cmllcyB0byB3b3JrIGFyb3VuZCB0aGVtLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0RFVEFJTF9MSU1JVFNfSEVBREVSKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfREVUQUlMX0xJTUlUU19IRUFERVIKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotCi0vLyBPbiBPcGVuQlNELCBudW1lcmljX2xpbWl0cyBpcyBub3QgcmVsaWFibGUgZm9yIGxvbmcgZG91YmxlcywgYnV0Ci0vLyB0aGUgbWFjcm9zIGRlZmluZWQgaW4gPGZsb2F0Lmg+IGFyZSBhbmQgc3VwcG9ydCBsb25nIGRvdWJsZSB3aGVuIFNUTHBvcnQKLS8vIGRvZXNuJ3QuCi0KLSNpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9TVExQX05PX0xPTkdfRE9VQkxFKQotI2luY2x1ZGUgPGZsb2F0Lmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IGxpbWl0cyA6IHN0ZDo6bnVtZXJpY19saW1pdHM8VD4ge307Ci0KLSNpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9TVExQX05PX0xPTkdfRE9VQkxFKQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgbGltaXRzPGxvbmcgZG91YmxlPgotICAgICAgICAgICAgIDogc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGRvdWJsZT4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGxvbmcgZG91YmxlIGVwc2lsb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExEQkxfRVBTSUxPTjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdGljIGxvbmcgZG91YmxlIChtYXgpKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBMREJMX01BWDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdGljIGxvbmcgZG91YmxlIChtaW4pKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBMREJMX01JTjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgZGlnaXRzID0gTERCTF9NQU5UX0RJRyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtYXhfZXhwb25lbnQgPSBMREJMX01BWF9FWFApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWluX2V4cG9uZW50ID0gTERCTF9NSU5fRVhQKTsKLSNpZiBkZWZpbmVkKF9TVExQX05PX0xPTkdfRE9VQkxFKQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgcmFkaXggPSBGTFRfUkFESVgpOwotI2VuZGlmCi0gICAgICAgIH07Ci0jZW5kaWYgLy8gX19PcGVuQlNEX18KLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZXh0ZW5zaW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9leHRlbnNpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA3OTEzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9leHRlbnNpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBCYXNlZCBvbiBQZXRlciBEaW1vdidzIHByb3Bvc2FsCi0vLyAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAwNS9uMTc1Ni5wZGYKLS8vICBpc3N1ZSA2LjE4LiAKLQotLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBleHRlbnNpb25zIHRvIHRoZSBzdGFuZGFyZC4KLS8vIEl0J3MgdW5kb2N1bWVudGVkLCBzbyB5b3Ugc2hvdWxkbid0IHVzZSBpdC4uLi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9FWFRFTlNJT05TX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0VYVEVOU0lPTlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2NvbnRhaW5lcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZKQotIyAgIGluY2x1ZGUgPGFycmF5PgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFVQTEUpCi0jICAgaW5jbHVkZSA8dHVwbGU+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9NRU1PUlkpCi0jICAgaW5jbHVkZSA8bWVtb3J5PgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQj4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6cGFpcjxBLCBCPiBjb25zdCYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjp2ZWN0b3I8VCwgQT4gY29uc3QmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bGlzdDxULCBBPiBjb25zdCYgdik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OmRlcXVlPFQsIEE+IGNvbnN0JiB2KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6c2V0PEssIEMsIEE+IGNvbnN0JiB2KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bXVsdGlzZXQ8SywgQywgQT4gY29uc3QmIHYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBULCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjptYXA8SywgVCwgQywgQT4gY29uc3QmIHYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBULCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjptdWx0aW1hcDxLLCBULCBDLCBBPiBjb25zdCYgdik7Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6Y29tcGxleDxUPiBjb25zdCYpOwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnBhaXI8QSwgQj4gY29uc3QmIHYpCi0gICAgewotICAgICAgICBzdGQ6OnNpemVfdCBzZWVkID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6Omhhc2hfY29tYmluZShzZWVkLCB2LmZpcnN0KTsKLSAgICAgICAgbmRuYm9vc3Q6Omhhc2hfY29tYmluZShzZWVkLCB2LnNlY29uZCk7Ci0gICAgICAgIHJldHVybiBzZWVkOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjp2ZWN0b3I8VCwgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bGlzdDxULCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpkZXF1ZTxULCBBPiBjb25zdCYgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBDLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpzZXQ8SywgQywgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bXVsdGlzZXQ8SywgQywgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSywgY2xhc3MgVCwgY2xhc3MgQywgY2xhc3MgQT4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6bWFwPEssIFQsIEMsIEE+IGNvbnN0JiB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHYuYmVnaW4oKSwgdi5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEMsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6Om11bHRpbWFwPEssIFQsIEMsIEE+IGNvbnN0JiB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3JhbmdlKHYuYmVnaW4oKSwgdi5lbmQoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OmNvbXBsZXg8VD4gY29uc3QmIHYpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6aGFzaDxUPiBoYXNoZXI7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSBoYXNoZXIodi5pbWFnKCkpOwotICAgICAgICBzZWVkIF49IGhhc2hlcih2LnJlYWwoKSkgKyAoc2VlZDw8NikgKyAoc2VlZD4+Mik7Ci0gICAgICAgIHJldHVybiBzZWVkOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWSkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6YXJyYXk8VCwgTj4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfcmFuZ2Uodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9UVVBMRSkKLSAgICBuYW1lc3BhY2UgaGFzaF9kZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgSSwgdHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwoSSA9PSBzdGQ6OnR1cGxlX3NpemU8VD46OnZhbHVlKSwKLSAgICAgICAgICAgICAgICB2b2lkPjo6dHlwZQotICAgICAgICAgICAgaGFzaF9jb21iaW5lX3R1cGxlKHN0ZDo6c2l6ZV90JiwgVCBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBJLCB0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPChJIDwgc3RkOjp0dXBsZV9zaXplPFQ+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgdm9pZD46OnR5cGUKLSAgICAgICAgICAgIGhhc2hfY29tYmluZV90dXBsZShzdGQ6OnNpemVfdCYgc2VlZCwgVCBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfY29tYmluZShzZWVkLCBzdGQ6OmdldDxJPih2KSk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfY29tYmluZV90dXBsZTxJICsgMT4oc2VlZCwgdik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdHVwbGUoVCBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfY29tYmluZV90dXBsZTwwPihzZWVkLCB2KTsKLSAgICAgICAgICAgIHJldHVybiBzZWVkOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKHN0ZDo6dHVwbGU8VC4uLj4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpoYXNoX3R1cGxlKHYpOwotICAgIH0KLSNlbHNlCi0KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnR1cGxlPD4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpoYXNoX3R1cGxlKHYpOwotICAgIH0KLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNIX1RVUExFX0YoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnR1cGxlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgID4gY29uc3QmIHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfdHVwbGUodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIDExLCBORE5CT09TVF9IQVNIX1RVUExFX0YsIF8pCi0jICAgdW5kZWYgTkROQk9PU1RfSEFTSF9UVVBMRV9GCi0jZW5kaWYKLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIpCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjpzaGFyZWRfcHRyPFQ+IGNvbnN0JiB4KSB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh4LmdldCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVsZXRlcj4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnVuaXF1ZV9wdHI8VCwgRGVsZXRlcj4gY29uc3QmIHgpIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHguZ2V0KCkpOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8KLSAgICAvLyBjYWxsX2hhc2hfaW1wbAotICAgIC8vCi0KLSAgICAvLyBPbiBjb21waWxlcnMgd2l0aG91dCBmdW5jdGlvbiB0ZW1wbGF0ZSBvcmRlcmluZywgdGhpcyBkZWFscyB3aXRoIGFycmF5cy4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Ym9vbCBJc0FycmF5PgotICAgICAgICBzdHJ1Y3QgY2FsbF9oYXNoX2ltcGwKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgc3RkOjpzaXplX3QgY2FsbChUIGNvbnN0JiB2KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIG5kbmJvb3N0OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaF92YWx1ZSh2KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBjYWxsX2hhc2hfaW1wbDx0cnVlPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJyYXk+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgICAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGNhbGwoQXJyYXkgY29uc3QmIHYpCi0jZWxzZQotICAgICAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBjYWxsKEFycmF5JiB2KQotI2VuZGlmCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZSA9IHNpemVvZih2KSAvIHNpemVvZigqdik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2LCB2ICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IGNhbGxfaGFzaAotICAgICAgICAgICAgOiBwdWJsaWMgY2FsbF9oYXNoX2ltcGw8bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZT4KLSAgICAgICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbm5lcjxUPgotICAgICAgICB7Ci0gICAgICAgIH07Ci0gICAgfQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAvLwotICAgIC8vIG5kbmJvb3N0OjpoYXNoCi0gICAgLy8KLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaGFzaAotICAgICAgICA6IHN0ZDo6dW5hcnlfZnVuY3Rpb248VCwgc3RkOjpzaXplX3Q+Ci0gICAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKQotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQgY29uc3QmIHZhbCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGhhc2hfdmFsdWUodmFsKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShUIGNvbnN0JiB2YWwpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6Y2FsbF9oYXNoPFQ+OjpjYWxsKHZhbCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgIH07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIDw9IDB4ODQ4KQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCB1bnNpZ25lZCBpbnQgbj4gc3RydWN0IGhhc2g8VFtuXT4KLSAgICAgICAgOiBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFRbbl0sIHN0ZDo6c2l6ZV90PgotICAgIHsKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBUKiB2YWwpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9yYW5nZSh2YWwsIHZhbCtuKTsKLSAgICAgICAgfQotICAgIH07Ci0jZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0gICAgLy8gT24gY29tcGlsZXJzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgbmRuYm9vc3Q6Omhhc2g8VD4KLSAgICAvLyBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIHRvIGRlYWwgd2l0aCBwb2ludGVycywgc28ganVzdAotICAgIC8vIG5lZWQgdG8gc3VwcGx5IHRoZSBub24tcG9pbnRlciB2ZXJzaW9uIG9mIGhhc2hfaW1wbC4KLQotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgSXNQb2ludGVyPgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsOwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw8ZmFsc2U+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgICAgICAgICAgOiBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQsIHN0ZDo6c2l6ZV90PgotICAgICAgICAgICAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HKQotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCBjb25zdCYgdmFsKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hfdmFsdWUodmFsKTsKLSAgICAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCBjb25zdCYgdmFsKSBjb25zdAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hfZGV0YWlsOjpjYWxsX2hhc2g8VD46OmNhbGwodmFsKTsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSNlbHNlIC8vIFZpc3VhbCBDKysgNi41Ci0KLSAgICAgICAgLy8gVmlzdWFsIEMrKyA2LjUgaGFzIHByb2JsZW1zIHdpdGggbmVzdGVkIG1lbWJlciBmdW5jdGlvbnMgYW5kCi0gICAgICAgIC8vIGFwcGx5aW5nIGNvbnN0IHRvIGNvbnN0IHR5cGVzIGluIHRlbXBsYXRlcy4gU28gd2UgZ2V0IHRoaXM6Ci0KLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgSXNDb25zdD4KLSAgICAgICAgc3RydWN0IGhhc2hfaW1wbF9tc3ZjCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxULCBzdGQ6OnNpemVfdD4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQgY29uc3QmIHZhbCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6Y2FsbF9oYXNoPFQgY29uc3Q+OjpjYWxsKHZhbCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShUJiB2YWwpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaF9kZXRhaWw6OmNhbGxfaGFzaDxUPjo6Y2FsbCh2YWwpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IGhhc2hfaW1wbF9tc3ZjPHRydWU+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxULCBzdGQ6OnNpemVfdD4KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQmIHZhbCkgY29uc3QKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNoX2RldGFpbDo6Y2FsbF9oYXNoPFQ+OjpjYWxsKHZhbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsX21zdmMyCi0gICAgICAgICAgICA6IHB1YmxpYyBoYXNoX2ltcGxfbXN2YzxuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlPgotICAgICAgICAgICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbm5lcjxUPiB7fTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw8ZmFsc2U+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIDogcHVibGljIGhhc2hfaW1wbF9tc3ZjMjxUPiB7fTsKLSAgICAgICAgfTsKLQotI2VuZGlmIC8vIFZpc3VhbCBDKysgNi41Ci0gICAgfQotI2VuZGlmICAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQyODU2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBCYXNlZCBvbiBQZXRlciBEaW1vdidzIHByb3Bvc2FsCi0vLyAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAwNS9uMTc1Ni5wZGYKLS8vICBpc3N1ZSA2LjE4LiAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9IQVNIX0hQUCkKLSNkZWZpbmUgTkROQk9PU1RfRlVOQ1RJT05BTF9IQVNIX0hBU0hfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvaGFzaF9md2QuaHBwPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2RldGFpbC9oYXNoX2Zsb2F0LmhwcD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYKQotI2luY2x1ZGUgPHR5cGVpbmRleD4KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0jZGVmaW5lIE5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFMgc3RyaW5nX2NoYXJfdHJhaXRzCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9IQVNIX0NIQVJfVFJBSVRTIGNoYXJfdHJhaXRzCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGhhc2hfZGV0YWlsCi0gICAgewotICAgICAgICBzdHJ1Y3QgZW5hYmxlX2hhc2hfdmFsdWUgeyB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7IH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBiYXNpY19udW1iZXJzIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGxvbmdfbnVtYmVyczsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB1bG9uZ19udW1iZXJzOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGZsb2F0X251bWJlcnMge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8Ym9vbD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8Y2hhcj4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8dW5zaWduZWQgY2hhcj4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8c2lnbmVkIGNoYXI+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPHNob3J0PiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczx1bnNpZ25lZCBzaG9ydD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8aW50PiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgYmFzaWNfbnVtYmVyczx1bnNpZ25lZCBpbnQ+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPGxvbmc+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBiYXNpY19udW1iZXJzPHVuc2lnbmVkIGxvbmc+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGJhc2ljX251bWJlcnM8d2NoYXJfdD4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSNlbmRpZgotCi0gICAgICAgIC8vIGxvbmdfbnVtYmVycyBpcyBkZWZpbmVkIGxpa2UgdGhpcyB0byBhbGxvdyBmb3Igc2VwYXJhdGUKLSAgICAgICAgLy8gc3BlY2lhbGl6YXRpb24gZm9yIGxvbmdfbG9uZyBhbmQgaW50MTI4X3R5cGUsIGluIGNhc2UKLSAgICAgICAgLy8gdGhleSBjb25mbGljdC4KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBsb25nX251bWJlcnMyIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHVsb25nX251bWJlcnMyIHt9OwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGxvbmdfbnVtYmVycyA6IGxvbmdfbnVtYmVyczI8VD4ge307Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdWxvbmdfbnVtYmVycyA6IHVsb25nX251bWJlcnMyPFQ+IHt9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HKQotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgbG9uZ19udW1iZXJzPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHVsb25nX251bWJlcnM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfSU5UMTI4KQotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgbG9uZ19udW1iZXJzMjxuZG5ib29zdDo6aW50MTI4X3R5cGU+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCB1bG9uZ19udW1iZXJzMjxuZG5ib29zdDo6dWludDEyOF90eXBlPiA6Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmVuYWJsZV9oYXNoX3ZhbHVlIHt9OwotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGZsb2F0X251bWJlcnM8ZmxvYXQ+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBmbG9hdF9udW1iZXJzPGRvdWJsZT4gOgotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjplbmFibGVfaGFzaF92YWx1ZSB7fTsKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGZsb2F0X251bWJlcnM8bG9uZyBkb3VibGU+IDoKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZW5hYmxlX2hhc2hfdmFsdWUge307Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpiYXNpY19udW1iZXJzPFQ+Ojp0eXBlIGhhc2hfdmFsdWUoVCk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpsb25nX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OnVsb25nX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWY8bmRuYm9vc3Q6OmlzX2VudW08VD4sIHN0ZDo6c2l6ZV90Pjo6dHlwZQotICAgICAgICBoYXNoX3ZhbHVlKFQpOwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgPD0gMHg4NDgpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCogY29uc3QmKTsKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCopOwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORykKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgdW5zaWduZWQgTiA+Ci0gICAgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShjb25zdCBUICgmeClbTl0pOwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQsIHVuc2lnbmVkIE4gPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCAoJngpW05dKTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoCi0gICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoLCBzdGQ6Ok5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFM8Q2g+LCBBPiBjb25zdCYpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6Omhhc2hfZGV0YWlsOjpmbG9hdF9udW1iZXJzPFQ+Ojp0eXBlIGhhc2hfdmFsdWUoVCk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYKQotICAgIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoc3RkOjp0eXBlX2luZGV4KTsKLSNlbmRpZgotCi0gICAgLy8gSW1wbGVtZW50YXRpb24KLQotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlX3NpZ25lZChUIHZhbCkKLSAgICAgICAgewotICAgICAgICAgICAgIGNvbnN0IGludCBzaXplX3RfYml0cyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjpkaWdpdHM7Ci0gICAgICAgICAgICAgLy8gY2VpbGluZyhzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgLyBzaXplX3RfYml0cykgLSAxCi0gICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgLSAxKQotICAgICAgICAgICAgICAgICAvIHNpemVfdF9iaXRzOwotCi0gICAgICAgICAgICAgc3RkOjpzaXplX3Qgc2VlZCA9IDA7Ci0gICAgICAgICAgICAgVCBwb3NpdGl2ZSA9IHZhbCA8IDAgPyAtMSAtIHZhbCA6IHZhbDsKLQotICAgICAgICAgICAgIC8vIEhvcGVmdWxseSwgdGhpcyBsb29wIGNhbiBiZSB1bnJvbGxlZC4KLSAgICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSBsZW5ndGggKiBzaXplX3RfYml0czsgaSA+IDA7IGkgLT0gc2l6ZV90X2JpdHMpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBzZWVkIF49IChzdGQ6OnNpemVfdCkgKHBvc2l0aXZlID4+IGkpICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBzZWVkIF49IChzdGQ6OnNpemVfdCkgdmFsICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotCi0gICAgICAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWVfdW5zaWduZWQoVCB2YWwpCi0gICAgICAgIHsKLSAgICAgICAgICAgICBjb25zdCBpbnQgc2l6ZV90X2JpdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6ZGlnaXRzOwotICAgICAgICAgICAgIC8vIGNlaWxpbmcoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIC8gc2l6ZV90X2JpdHMpIC0gMQotICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIC0gMSkKLSAgICAgICAgICAgICAgICAgLyBzaXplX3RfYml0czsKLQotICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgICAgICAgLy8gSG9wZWZ1bGx5LCB0aGlzIGxvb3AgY2FuIGJlIHVucm9sbGVkLgotICAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IGxlbmd0aCAqIHNpemVfdF9iaXRzOyBpID4gMDsgaSAtPSBzaXplX3RfYml0cykKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHNlZWQgXj0gKHN0ZDo6c2l6ZV90KSAodmFsID4+IGkpICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBzZWVkIF49IChzdGQ6OnNpemVfdCkgdmFsICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotCi0gICAgICAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmJhc2ljX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUIHYpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHYpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6bG9uZ19udW1iZXJzPFQ+Ojp0eXBlIGhhc2hfdmFsdWUoVCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc2hfZGV0YWlsOjpoYXNoX3ZhbHVlX3NpZ25lZCh2KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OnVsb25nX251bWJlcnM8VD46OnR5cGUgaGFzaF92YWx1ZShUIHYpCi0gICAgewotICAgICAgICByZXR1cm4gaGFzaF9kZXRhaWw6Omhhc2hfdmFsdWVfdW5zaWduZWQodik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxuZG5ib29zdDo6aXNfZW51bTxUPiwgc3RkOjpzaXplX3Q+Ojp0eXBlCi0gICAgICAgIGhhc2hfdmFsdWUoVCB2KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90Pih2KTsKLSAgICB9Ci0KLSAgICAvLyBJbXBsZW1lbnRhdGlvbiBieSBBbGJlcnRvIEJhcmJhdGkgYW5kIERhdmUgSGFycmlzLgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIDw9IDB4ODQ4KQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKFQqIGNvbnN0JiB2KQotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RkOjpzaXplX3QgaGFzaF92YWx1ZShUKiB2KQotI2VuZGlmCi0gICAgewotI2lmIGRlZmluZWQoX19WTVMpICYmIF9fSU5JVElBTF9QT0lOVEVSX1NJWkUgPT0gNjQKLSAgICAvLyBmb3Igc29tZSByZWFzb24gcHRyZGlmZl90IG9uIE9wZW5WTVMgY29tcGlsZXIgd2l0aAotICAgIC8vIDY0IGJpdCBpcyBub3QgNjQgYml0ICEhIQotICAgICAgICBzdGQ6OnNpemVfdCB4ID0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KAotICAgICAgICAgICByZWludGVycHJldF9jYXN0PGxvbmcgbG9uZyBpbnQ+KHYpKTsKLSNlbHNlCi0gICAgICAgIHN0ZDo6c2l6ZV90IHggPSBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oCi0gICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHYpKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4geCArICh4ID4+IDMpOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI2lmIE5ETkJPT1NUX01TVkMgPD0gMTQwMAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI2NykgLy8gJ2FyZ3VtZW50JyA6IGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ3Vuc2lnbmVkIGludCcsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBtaXNndWlkZWQgYXR0ZW1wdCB0byBkZXRlY3QgNjQtYml0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmNvbXBhdGFiaWxpdHkuCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lIHZvaWQgaGFzaF9jb21iaW5lKHN0ZDo6c2l6ZV90JiBzZWVkLCBUJiB2KQotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgdm9pZCBoYXNoX2NvbWJpbmUoc3RkOjpzaXplX3QmIHNlZWQsIFQgY29uc3QmIHYpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpoYXNoPFQ+IGhhc2hlcjsKLSAgICAgICAgc2VlZCBePSBoYXNoZXIodikgKyAweDllMzc3OWI5ICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdD4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9yYW5nZShJdCBmaXJzdCwgSXQgbGFzdCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgIGZvcig7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGhhc2hfY29tYmluZShzZWVkLCAqZmlyc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0PgotICAgIGlubGluZSB2b2lkIGhhc2hfcmFuZ2Uoc3RkOjpzaXplX3QmIHNlZWQsIEl0IGZpcnN0LCBJdCBsYXN0KQotICAgIHsKLSAgICAgICAgZm9yKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLSAgICAgICAgewotICAgICAgICAgICAgaGFzaF9jb21iaW5lKHNlZWQsICpmaXJzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9yYW5nZShUKiBmaXJzdCwgVCogbGFzdCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IHNlZWQgPSAwOwotCi0gICAgICAgIGZvcig7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNoPFQ+IGhhc2hlcjsKLSAgICAgICAgICAgIHNlZWQgXj0gaGFzaGVyKCpmaXJzdCkgKyAweDllMzc3OWI5ICsgKHNlZWQ8PDYpICsgKHNlZWQ+PjIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHNlZWQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgaW5saW5lIHZvaWQgaGFzaF9yYW5nZShzdGQ6OnNpemVfdCYgc2VlZCwgVCogZmlyc3QsIFQqIGxhc3QpCi0gICAgewotICAgICAgICBmb3IoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzaDxUPiBoYXNoZXI7Ci0gICAgICAgICAgICBzZWVkIF49IGhhc2hlcigqZmlyc3QpICsgMHg5ZTM3NzliOSArIChzZWVkPDw2KSArIChzZWVkPj4yKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcpCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQsIHVuc2lnbmVkIE4gPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKGNvbnN0IFQgKCZ4KVtOXSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBoYXNoX3JhbmdlKHgsIHggKyBOKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgdW5zaWduZWQgTiA+Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoVCAoJngpW05dKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc2hfcmFuZ2UoeCwgeCArIE4pOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoLCBjbGFzcyBBPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKAotICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaCwgc3RkOjpORE5CT09TVF9IQVNIX0NIQVJfVFJBSVRTPENoPiwgQT4gY29uc3QmIHYpCi0gICAgewotICAgICAgICByZXR1cm4gaGFzaF9yYW5nZSh2LmJlZ2luKCksIHYuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpoYXNoX2RldGFpbDo6ZmxvYXRfbnVtYmVyczxUPjo6dHlwZSBoYXNoX3ZhbHVlKFQgdikKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF9kZXRhaWw6OmZsb2F0X2hhc2hfdmFsdWUodik7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVJTkRFWCkKLSAgICBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF92YWx1ZShzdGQ6OnR5cGVfaW5kZXggdikKLSAgICB7Ci0gICAgICAgIHJldHVybiB2Lmhhc2hfY29kZSgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8KLSAgICAvLyBuZG5ib29zdDo6aGFzaAotICAgIC8vCi0gICAgCi0gICAgLy8gRGVmaW5lIHRoZSBzcGVjaWFsaXphdGlvbnMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkLiBUaGUgZ2VuZXJhbCBwdXJwb3NlCi0gICAgLy8gbmRuYm9vc3Q6Omhhc2ggaXMgZGVmaW5lZCBsYXRlciBpbiBleHRlbnNpb25zLmhwcCBpZgotICAgIC8vIE5ETkJPT1NUX0hBU0hfTk9fRVhURU5TSU9OUyBpcyBub3QgZGVmaW5lZC4KLSAgICAKLSAgICAvLyBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUgLSBkZWZpbmUgYSBzcGVjaWFsaXphdGlvbiBmb3IgYSB0eXBlIHdoaWNoIGlzCi0gICAgLy8gcGFzc2VkIGJ5IGNvcHkuCi0gICAgLy8KLSAgICAvLyBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGIC0gZGVmaW5lIGEgc3BlY2lhbGl6YXRpb24gZm9yIGEgdHlwZSB3aGljaCBpcwotICAgIC8vIHBhc3NlZCBieSBjb3B5LgotICAgIC8vCi0gICAgLy8gVGhlc2UgYXJlIHVuZGVmaW5lZCBsYXRlci4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKHR5cGUpIFwKLSAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzaDx0eXBlPiBcCi0gICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGUsIHN0ZDo6c2l6ZV90PiBcCi0gICAgeyBcCi0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkodHlwZSB2KSBjb25zdCBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHYpOyBcCi0gICAgICAgIH0gXAotICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFX1JFRih0eXBlKSBcCi0gICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc2g8dHlwZT4gXAotICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjx0eXBlLCBzdGQ6OnNpemVfdD4gXAotICAgIHsgXAotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKHR5cGUgY29uc3QmIHYpIGNvbnN0IFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7IFwKLSAgICAgICAgfSBcCi0gICAgfTsKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh0eXBlKSBcCi0gICAgdGVtcGxhdGUgPD4gc3RydWN0IGhhc2g8dHlwZT4gXAotICAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjx0eXBlLCBzdGQ6OnNpemVfdD4gXAotICAgIHsgXAotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKHR5cGUgdikgY29uc3QgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2KTsgXAotICAgICAgICB9IFwKLSAgICB9OyBcCi0gICAgXAotICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNoPGNvbnN0IHR5cGU+IFwKLSAgICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248Y29uc3QgdHlwZSwgc3RkOjpzaXplX3Q+IFwKLSAgICB7IFwKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKShjb25zdCB0eXBlIHYpIGNvbnN0IFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7IFwKLSAgICAgICAgfSBcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGKHR5cGUpIFwKLSAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgaGFzaDx0eXBlPiBcCi0gICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPHR5cGUsIHN0ZDo6c2l6ZV90PiBcCi0gICAgeyBcCi0gICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkodHlwZSBjb25zdCYgdikgY29uc3QgXAotICAgICAgICB7IFwKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2KTsgXAotICAgICAgICB9IFwKLSAgICB9OyBcCi0gICAgXAotICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBoYXNoPGNvbnN0IHR5cGU+IFwKLSAgICAgICAgIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248Y29uc3QgdHlwZSwgc3RkOjpzaXplX3Q+IFwKLSAgICB7IFwKLSAgICAgICAgc3RkOjpzaXplX3Qgb3BlcmF0b3IoKSh0eXBlIGNvbnN0JiB2KSBjb25zdCBcCi0gICAgICAgIHsgXAotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoX3ZhbHVlKHYpOyBcCi0gICAgICAgIH0gXAotICAgIH07Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShib29sKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShjaGFyKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShzaWduZWQgY2hhcikKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUodW5zaWduZWQgY2hhcikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUod2NoYXJfdCkKLSNlbmRpZgotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShzaG9ydCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUodW5zaWduZWQgc2hvcnQpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGludCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUodW5zaWduZWQgaW50KQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShsb25nKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRSh1bnNpZ25lZCBsb25nKQotCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGZsb2F0KQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShkb3VibGUpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKGxvbmcgZG91YmxlKQotCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFX1JFRihzdGQ6OnN0cmluZykKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfV1NUUklORykKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkVfUkVGKHN0ZDo6d3N0cmluZykKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTE9OR19MT05HKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpCi0gICAgTkROQk9PU1RfSEFTSF9TUEVDSUFMSVpFKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0lOVDEyOCkKLSAgICBORE5CT09TVF9IQVNIX1NQRUNJQUxJWkUobmRuYm9vc3Q6OmludDEyOF90eXBlKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShuZG5ib29zdDo6dWludDEyOF90eXBlKQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRUlOREVYKQotICAgIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRShzdGQ6OnR5cGVfaW5kZXgpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfU1BFQ0lBTElaRV9SRUYKLQotLy8gU3BlY2lhbGl6aW5nIG5kbmJvb3N0OjpoYXNoIGZvciBwb2ludGVycy4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgaGFzaDxUKj4KLSAgICAgICAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxUKiwgc3RkOjpzaXplX3Q+Ci0gICAgewotICAgICAgICBzdGQ6OnNpemVfdCBvcGVyYXRvcigpKFQqIHYpIGNvbnN0Ci0gICAgICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgPD0gMHg1OTApCi0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Omhhc2hfdmFsdWUodik7Ci0jZWxzZQotICAgICAgICAgICAgc3RkOjpzaXplX3QgeCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHN0ZDo6cHRyZGlmZl90Pih2KSk7Ci0KLSAgICAgICAgICAgIHJldHVybiB4ICsgKHggPj4gMyk7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgIH07Ci0KLSNlbHNlCi0KLSAgICAvLyBGb3IgY29tcGlsZXJzIHdpdGhvdXQgcGFydGlhbCBzcGVjaWFsaXphdGlvbiwgd2UgZGVmaW5lIGEKLSAgICAvLyBuZG5ib29zdDo6aGFzaCBmb3IgYWxsIHJlbWFpbmluZyB0eXBlcy4gQnV0IGhhc2hfaW1wbCBpcyBvbmx5IGRlZmluZWQKLSAgICAvLyBmb3IgcG9pbnRlcnMgaW4gJ2V4dGVuc2lvbnMuaHBwJyAtIHNvIHdoZW4gTkROQk9PU1RfSEFTSF9OT19FWFRFTlNJT05TCi0gICAgLy8gaXMgZGVmaW5lZCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgY29tcGlsZSBlcnJvciBmb3IgdHlwZXMgbm90IHN1cHBvcnRlZAotICAgIC8vIGluIHRoZSBzdGFuZGFyZC4KLQotICAgIG5hbWVzcGFjZSBoYXNoX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGJvb2wgSXNQb2ludGVyPgotICAgICAgICBzdHJ1Y3QgaGFzaF9pbXBsOwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBoYXNoX2ltcGw8dHJ1ZT4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIKLSAgICAgICAgICAgICAgICA6IHB1YmxpYyBzdGQ6OnVuYXJ5X2Z1bmN0aW9uPFQsIHN0ZDo6c2l6ZV90PgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoVCB2YWwpIGNvbnN0Ci0gICAgICAgICAgICAgICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSA1OTApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6aGFzaF92YWx1ZSh2YWwpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgeCA9IHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHZhbCkpOwotCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB4ICsgKHggPj4gMyk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaGFzaAotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aGFzaF9kZXRhaWw6Omhhc2hfaW1wbDxuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ci0gICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBpbm5lcjxUPgotICAgIHsKLSAgICB9OwotCi0jZW5kaWYKLX0KLQotI3VuZGVmIE5ETkJPT1NUX0hBU0hfQ0hBUl9UUkFJVFMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9IQVNIX0hQUAotCi0vLyBJbmNsdWRlIHRoaXMgb3V0c2lkZSBvZiB0aGUgaW5jbHVkZSBndWFyZHMgaW4gY2FzZSB0aGUgZmlsZSBpcyBpbmNsdWRlZAotLy8gdHdpY2UgLSBvbmNlIHdpdGggTkROQk9PU1RfSEFTSF9OT19FWFRFTlNJT05TIGRlZmluZWQsIGFuZCB0aGVuIHdpdGggaXQKLS8vIHVuZGVmaW5lZC4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU0hfTk9fRVhURU5TSU9OUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9FWFRFTlNJT05TX0hQUCkKLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2gvZXh0ZW5zaW9ucy5ocHA+Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2hfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoL2hhc2hfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBkMjcxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDA1LTIwMDkgRGFuaWVsIEphbWVzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBCYXNlZCBvbiBQZXRlciBEaW1vdidzIHByb3Bvc2FsCi0vLyAgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAwNS9uMTc1Ni5wZGYKLS8vICBpc3N1ZSA2LjE4LiAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0ZVTkNUSU9OQUxfSEFTSF9GV0RfSFBQKQotI2RlZmluZSBORE5CT09TVF9GVU5DVElPTkFMX0hBU0hfRldEX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaGFzaDsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIGhhc2hfY29tYmluZShzdGQ6OnNpemVfdCYgc2VlZCwgVCYgdik7Ci0jZWxzZQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIGhhc2hfY29tYmluZShzdGQ6OnNpemVfdCYgc2VlZCwgVCBjb25zdCYgdik7Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdD4gc3RkOjpzaXplX3QgaGFzaF9yYW5nZShJdCwgSXQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBJdD4gdm9pZCBoYXNoX3JhbmdlKHN0ZDo6c2l6ZV90JiwgSXQsIEl0KTsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgc3RkOjpzaXplX3QgaGFzaF9yYW5nZShUKiwgVCopOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBoYXNoX3JhbmdlKHN0ZDo6c2l6ZV90JiwgVCosIFQqKTsKLSNlbmRpZgotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjkzZDBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IDIwMDUtMjAwOSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaC9oYXNoX2Z3ZC5ocHA+Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvZ2V0X3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9nZXRfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NDQzYzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9nZXRfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgYW5kIERhdmlkIEFicmFoYW1zIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIEdFVF9QT0lOVEVSX05ETkJPT1NUX0RXQTIwMDIxMjE5X0hQUAotI2RlZmluZSBHRVRfUE9JTlRFUl9ORE5CT09TVF9EV0EyMDAyMTIxOV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIEluIG9yZGVyIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIEJvb3N0LlRSMQotLy8gd2UgbWFrZSBzdXJlIHRoYXQgb3VyIGluY2x1ZGUgb2YgPG1lbW9yeT4gZG9lc24ndCB0cnkgdG8KLS8vIHB1bGwgaW4gdGhlIFRSMSBoZWFkZXJzOiB0aGF0J3Mgd2h5IHdlIHVzZSB0aGlzIGhlYWRlciAKLS8vIHJhdGhlciB0aGFuIGluY2x1ZGluZyA8bWVtb3J5PiBkaXJlY3RseToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHA+ICAvLyBzdGQ6OmF1dG9fcHRyCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotCi0vLyBnZXRfcG9pbnRlcihwKSBleHRyYWN0cyBhIC0+KiBjYXBhYmxlIHBvaW50ZXIgZnJvbSBwCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IFQgKiBnZXRfcG9pbnRlcihUICogcCkKLXsKLSAgICByZXR1cm4gcDsKLX0KLQotLy8gZ2V0X3BvaW50ZXIoc2hhcmVkX3B0cjxUPiBjb25zdCAmIHApIGhhcyBiZWVuIG1vdmVkIHRvIHNoYXJlZF9wdHIuaHBwCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IFQgKiBnZXRfcG9pbnRlcihzdGQ6OmF1dG9fcHRyPFQ+IGNvbnN0JiBwKQotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IFQgKiBnZXRfcG9pbnRlciggc3RkOjp1bmlxdWVfcHRyPFQ+IGNvbnN0JiBwICkKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gVCAqIGdldF9wb2ludGVyKCBzdGQ6OnNoYXJlZF9wdHI8VD4gY29uc3QmIHAgKQotewotICAgIHJldHVybiBwLmdldCgpOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIEdFVF9QT0lOVEVSX05ETkJPT1NUX0RXQTIwMDIxMjE5X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbmRpcmVjdF9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbmRpcmVjdF9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjhiMmY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW5kaXJlY3RfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLSNpZm5kZWYgSU5ESVJFQ1RfUkVGRVJFTkNFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLSMgZGVmaW5lIElORElSRUNUX1JFRkVSRU5DRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCi0KLS8vCi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcwotLy8gc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyB0eXBlbmFtZSBpbmRpcmVjdF9yZWZlcmVuY2U8UD46OnR5cGUgcHJvdmlkZXMgdGhlIHR5cGUgb2YgKnAuCi0vLwotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pdGVyYXRvci9kb2MvcG9pbnRlZS5odG1sCi0vLwotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pc19pbmNyZW1lbnRhYmxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wb2ludGVlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgdGVtcGxhdGUgPGNsYXNzIFA+Ci0gIHN0cnVjdCBzbWFydF9wdHJfcmVmZXJlbmNlCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnBvaW50ZWU8UD46OnR5cGUmIHR5cGU7Ci0gIH07Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQPgotc3RydWN0IGluZGlyZWN0X3JlZmVyZW5jZQotICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlPFA+Ci0gICAgICAsIGl0ZXJhdG9yX3JlZmVyZW5jZTxQPgotICAgICAgLCBkZXRhaWw6OnNtYXJ0X3B0cl9yZWZlcmVuY2U8UD4KLSAgICA+Ci17Ci19OwotICAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBJTkRJUkVDVF9SRUZFUkVOQ0VfTkROQk9PU1RfRFdBMjAwNDE1X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OWM0NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MSArMCwwIEBACi0vLyAgYm9vc3QgaW50ZWdlci5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIGFuZCBEYXJ5bGUgV2Fsa2VyIDE5OTkuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludGVnZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgIDIyIFNlcCAwMSAgQWRkZWQgdmFsdWUtYmFzZWQgaW50ZWdlciB0ZW1wbGF0ZXMuIChEYXJ5bGUgV2Fsa2VyKQotLy8gICAwMSBBcHIgMDEgIE1vZGlmaWVkIHRvIHVzZSBuZXcgPG5kbmJvb3N0L2xpbWl0cy5ocHA+IGhlYWRlci4gKEpvaG4gTWFkZG9jaykKLS8vICAgMzAgSnVsIDAwICBBZGQgdHlwZW5hbWUgc3ludGF4IGZpeCAoSmVucyBNYXVyZXIpCi0vLyAgIDI4IEF1ZyA5OSAgSW5pdGlhbCB2ZXJzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5URUdFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXJfZndkLmhwcD4gIC8vIHNlbGYgaW5jbHVkZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwPiAgLy8gZm9yIG5kbmJvb3N0Ojo6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0cwotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+ICAgICAgICAgIC8vIGZvciA6OnN0ZDo6bnVtZXJpY19saW1pdHMKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gICAgICAgICAvLyBmb3IgbmRuYm9vc3Q6OmludDY0X3QgYW5kIE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotLy8KLS8vIFdlIHNpbXBseSBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciBvbiBnY2Mgd2l0aG91dCBnZXR0aW5nIGNvcGlvdXMgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLwotLy8gbmRuYm9vc3QvaW50ZWdlci5ocHA6Nzc6MzA6IHdhcm5pbmc6IHVzZSBvZiBDOTkgbG9uZyBsb25nIGludGVnZXIgY29uc3RhbnQKLS8vCi0vLyBBbmQgeWV0IHRoZXJlIGlzIG5vIG90aGVyIHJlYXNvbmFibGUgaW1wbGVtZW50YXRpb24sIHNvIHdlIGRlY2xhcmUgdGhpcyBhIHN5c3RlbSBoZWFkZXIKLS8vIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICAvLyAgSGVscGVyIHRlbXBsYXRlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAvLyAgZmFzdCBpbnRlZ2VycyBmcm9tIGxlYXN0IGludGVnZXJzCi0gIC8vICBpbnRfZmFzdF90PD4gd29ya3MgY29ycmVjdGx5IGZvciB1bnNpZ25lZCB0b28sIGluIHNwaXRlIG9mIHRoZSBuYW1lLgotICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGVhc3RJbnQgPgotICBzdHJ1Y3QgaW50X2Zhc3RfdCAKLSAgeyAKLSAgICAgdHlwZWRlZiBMZWFzdEludCBmYXN0OyAKLSAgICAgdHlwZWRlZiBmYXN0ICAgICB0eXBlOwotICB9OyAvLyBpbXBzIG1heSBzcGVjaWFsaXplCi0KLSAgbmFtZXNwYWNlIGRldGFpbHsKLQotICAvLyAgY29udmVydCBjYXRlZ29yeSB0byB0eXBlIAotICB0ZW1wbGF0ZTwgaW50IENhdGVnb3J5ID4gc3RydWN0IGludF9sZWFzdF9oZWxwZXIge307IC8vIGRlZmF1bHQgaXMgZW1wdHkKLSAgdGVtcGxhdGU8IGludCBDYXRlZ29yeSA+IHN0cnVjdCB1aW50X2xlYXN0X2hlbHBlciB7fTsgLy8gZGVmYXVsdCBpcyBlbXB0eQotCi0gIC8vICBzcGVjaWFsaXphdG9uczogMT1sb25nLCAyPWludCwgMz1zaG9ydCwgND1zaWduZWQgY2hhciwKLSAgLy8gICAgIDY9dW5zaWduZWQgbG9uZywgNz11bnNpZ25lZCBpbnQsIDg9dW5zaWduZWQgc2hvcnQsIDk9dW5zaWduZWQgY2hhcgotICAvLyAgbm8gc3BlY2lhbGl6YXRpb25zIGZvciAwIGFuZCA1OiByZXF1ZXN0cyBmb3IgYSB0eXBlID4gbG9uZyBhcmUgaW4gZXJyb3IKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8MT4geyB0eXBlZGVmIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsZWFzdDsgfTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICB0ZW1wbGF0ZTw+IHN0cnVjdCBpbnRfbGVhc3RfaGVscGVyPDE+IHsgdHlwZWRlZiBfX2ludDY0IGxlYXN0OyB9OwotI2VuZGlmCi0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8Mj4geyB0eXBlZGVmIGxvbmcgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8Mz4geyB0eXBlZGVmIGludCBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgaW50X2xlYXN0X2hlbHBlcjw0PiB7IHR5cGVkZWYgc2hvcnQgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IGludF9sZWFzdF9oZWxwZXI8NT4geyB0eXBlZGVmIHNpZ25lZCBjaGFyIGxlYXN0OyB9OwotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8MT4geyB0eXBlZGVmIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgbGVhc3Q7IH07Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8MT4geyB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgbGVhc3Q7IH07Ci0jZW5kaWYKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8Mj4geyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IHVpbnRfbGVhc3RfaGVscGVyPDM+IHsgdHlwZWRlZiB1bnNpZ25lZCBpbnQgbGVhc3Q7IH07Ci0gIHRlbXBsYXRlPD4gc3RydWN0IHVpbnRfbGVhc3RfaGVscGVyPDQ+IHsgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBsZWFzdDsgfTsKLSAgdGVtcGxhdGU8PiBzdHJ1Y3QgdWludF9sZWFzdF9oZWxwZXI8NT4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgbGVhc3Q7IH07Ci0KLSAgdGVtcGxhdGUgPGludCBCaXRzPgotICBzdHJ1Y3QgZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVye307Ci0gIHRlbXBsYXRlIDxpbnQgQml0cz4KLSAgc3RydWN0IGV4YWN0X3Vuc2lnbmVkX2Jhc2VfaGVscGVye307Ci0KLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3NpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2Yoc2lnbmVkIGNoYXIpKiBDSEFSX0JJVD4geyB0eXBlZGVmIHNpZ25lZCBjaGFyIGV4YWN0OyB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKHVuc2lnbmVkIGNoYXIpKiBDSEFSX0JJVD4geyB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgZXhhY3Q7IH07Ci0jaWYgVVNIUlRfTUFYICE9IFVDSEFSX01BWAotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZihzaG9ydCkqIENIQVJfQklUPiB7IHR5cGVkZWYgc2hvcnQgZXhhY3Q7IH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF91bnNpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YodW5zaWduZWQgc2hvcnQpKiBDSEFSX0JJVD4geyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGV4YWN0OyB9OwotI2VuZGlmCi0jaWYgVUlOVF9NQVggIT0gVVNIUlRfTUFYCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF9zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKGludCkqIENIQVJfQklUPiB7IHR5cGVkZWYgaW50IGV4YWN0OyB9OwotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKHVuc2lnbmVkIGludCkqIENIQVJfQklUPiB7IHR5cGVkZWYgdW5zaWduZWQgaW50IGV4YWN0OyB9OwotI2VuZGlmCi0jaWYgVUxPTkdfTUFYICE9IFVJTlRfTUFYCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF9zaWduZWRfYmFzZV9oZWxwZXI8c2l6ZW9mKGxvbmcpKiBDSEFSX0JJVD4geyB0eXBlZGVmIGxvbmcgZXhhY3Q7IH07Ci0gIHRlbXBsYXRlIDw+IHN0cnVjdCBleGFjdF91bnNpZ25lZF9iYXNlX2hlbHBlcjxzaXplb2YodW5zaWduZWQgbG9uZykqIENIQVJfQklUPiB7IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBleGFjdDsgfTsKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiZcCi0gICAoKGRlZmluZWQoVUxMT05HX01BWCkgJiYgKFVMTE9OR19NQVggIT0gVUxPTkdfTUFYKSkgfHxcCi0gICAgKGRlZmluZWQoVUxPTkdfTE9OR19NQVgpICYmIChVTE9OR19MT05HX01BWCAhPSBVTE9OR19NQVgpKSB8fFwKLSAgICAoZGVmaW5lZChVTE9OR0xPTkdfTUFYKSAmJiAoVUxPTkdMT05HX01BWCAhPSBVTE9OR19NQVgpKSB8fFwKLSAgICAoZGVmaW5lZChfVUxMT05HX01BWCkgJiYgKF9VTExPTkdfTUFYICE9IFVMT05HX01BWCkpKQotICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgZXhhY3Rfc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpKiBDSEFSX0JJVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBleGFjdDsgfTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGV4YWN0X3Vuc2lnbmVkX2Jhc2VfaGVscGVyPHNpemVvZihuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKSogQ0hBUl9CSVQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlIGV4YWN0OyB9OwotI2VuZGlmCi0KLQotICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAvLyAgaW50ZWdlciB0ZW1wbGF0ZXMgc3BlY2lmeWluZyBudW1iZXIgb2YgYml0cyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAvLyAgc2lnbmVkCi0gIHRlbXBsYXRlPCBpbnQgQml0cyA+ICAgLy8gYml0cyAoaW5jbHVkaW5nIHNpZ24pIHJlcXVpcmVkCi0gIHN0cnVjdCBpbnRfdCA6IHB1YmxpYyBkZXRhaWw6OmV4YWN0X3NpZ25lZF9iYXNlX2hlbHBlcjxCaXRzPgotICB7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRyhCaXRzIDw9IChpbnQpKHNpemVvZihuZG5ib29zdDo6aW50bWF4X3QpICogQ0hBUl9CSVQpLAotICAgICAgICAgIk5vIHN1aXRhYmxlIHNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBiaXRzIGlzIGF2YWlsYWJsZS4iKTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjppbnRfbGVhc3RfaGVscGVyCi0gICAgICAgIDwKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICAgICAgICAgKEJpdHMgPD0gKGludCkoc2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkgKiBDSEFSX0JJVCkpICsKLSNlbHNlCi0gICAgICAgICAgIDEgKwotI2VuZGlmCi0gICAgICAgICAgKEJpdHMtMSA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZz46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzLTEgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPGludD46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzLTEgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMtMSA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8c2lnbmVkIGNoYXI+OjpkaWdpdHMpCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X2Zhc3RfdDxsZWFzdD46OnR5cGUgIGZhc3Q7Ci0gIH07Ci0KLSAgLy8gIHVuc2lnbmVkCi0gIHRlbXBsYXRlPCBpbnQgQml0cyA+ICAgLy8gYml0cyByZXF1aXJlZAotICBzdHJ1Y3QgdWludF90IDogcHVibGljIGRldGFpbDo6ZXhhY3RfdW5zaWduZWRfYmFzZV9oZWxwZXI8Qml0cz4KLSAgewotICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRyhCaXRzIDw9IChpbnQpKHNpemVvZihuZG5ib29zdDo6dWludG1heF90KSAqIENIQVJfQklUKSwKLSAgICAgICAgICJObyBzdWl0YWJsZSB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBiaXRzIGlzIGF2YWlsYWJsZS4iKTsKLSNpZiAoZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DT0RFR0VBUl9fKSkgJiYgZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKQotICAgICAvLyBJdCdzIHJlYWxseSBub3QgY2xlYXIgd2h5IHRoaXMgd29ya2Fyb3VuZCBzaG91bGQgYmUgbmVlZGVkLi4uIHNocnVnIEkgZ3Vlc3MhICBKTQotICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBzID0gCi0gICAgICAgICAgIDYgKwotICAgICAgICAgIChCaXRzIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBzaG9ydD46OmRpZ2l0cykgKwotICAgICAgICAgIChCaXRzIDw9IDo6c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBjaGFyPjo6ZGlnaXRzKSk7Ci0gICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjppbnRfbGVhc3RfaGVscGVyPCA6Om5kbmJvb3N0Ojp1aW50X3Q8Qml0cz46OnM+OjpsZWFzdCBsZWFzdDsKLSNlbHNlCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dWludF9sZWFzdF9oZWxwZXIKLSAgICAgICAgPCAKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICAgICAgICAgKEJpdHMgPD0gKGludCkoc2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkgKiBDSEFSX0JJVCkpICsKLSNlbHNlCi0gICAgICAgICAgIDEgKwotI2VuZGlmCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjpkaWdpdHMpICsKLSAgICAgICAgICAoQml0cyA8PSA6OnN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIHNob3J0Pjo6ZGlnaXRzKSArCi0gICAgICAgICAgKEJpdHMgPD0gOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+OjpkaWdpdHMpCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSNlbmRpZgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRfZmFzdF90PGxlYXN0Pjo6dHlwZSAgZmFzdDsKLSAgICAgIC8vIGludF9mYXN0X3Q8PiB3b3JrcyBjb3JyZWN0bHkgZm9yIHVuc2lnbmVkIHRvbywgaW4gc3BpdGUgb2YgdGhlIG5hbWUuCi0gIH07Ci0KLSAgLy8gIGludGVnZXIgdGVtcGxhdGVzIHNwZWNpZnlpbmcgZXh0cmVtZSB2YWx1ZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgLy8gIHNpZ25lZAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgdGVtcGxhdGU8IG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBNYXhWYWx1ZSA+ICAgLy8gbWF4aW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbHNlCi0gIHRlbXBsYXRlPCBsb25nIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2VuZGlmCi0gIHN0cnVjdCBpbnRfbWF4X3ZhbHVlX3QgCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjppbnRfbGVhc3RfaGVscGVyCi0gICAgICAgIDwKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT46OmNvbnN0X21heCkgKwotI2Vsc2UKLSAgICAgICAgICAgMSArCi0jZW5kaWYKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8bG9uZz46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxpbnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c2hvcnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8c2lnbmVkIGNoYXI+Ojpjb25zdF9tYXgpCi0gICAgICAgID46OmxlYXN0ICBsZWFzdDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X2Zhc3RfdDxsZWFzdD46OnR5cGUgIGZhc3Q7Ci0gIH07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gIHRlbXBsYXRlPCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgTWluVmFsdWUgPiAgIC8vIG1pbmltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZWxzZQotICB0ZW1wbGF0ZTwgbG9uZyBNaW5WYWx1ZSA+ICAgLy8gbWluaW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbmRpZgotICBzdHJ1Y3QgaW50X21pbl92YWx1ZV90IAotICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6aW50X2xlYXN0X2hlbHBlcgotICAgICAgICA8Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICAgICAgIChNaW5WYWx1ZSA+PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+Ojpjb25zdF9taW4pICsKLSNlbHNlCi0gICAgICAgICAgIDEgKwotI2VuZGlmCi0gICAgICAgICAgKE1pblZhbHVlID49IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPGxvbmc+Ojpjb25zdF9taW4pICsKLSAgICAgICAgICAoTWluVmFsdWUgPj0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8aW50Pjo6Y29uc3RfbWluKSArCi0gICAgICAgICAgKE1pblZhbHVlID49IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHNob3J0Pjo6Y29uc3RfbWluKSArCi0gICAgICAgICAgKE1pblZhbHVlID49IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHNpZ25lZCBjaGFyPjo6Y29uc3RfbWluKQotICAgICAgICA+OjpsZWFzdCAgbGVhc3Q7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGludF9mYXN0X3Q8bGVhc3Q+Ojp0eXBlICBmYXN0OwotICB9OwotCi0gIC8vICB1bnNpZ25lZAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgdGVtcGxhdGU8IG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgTWF4VmFsdWUgPiAgIC8vIG1pbmltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZWxzZQotICB0ZW1wbGF0ZTwgdW5zaWduZWQgbG9uZyBNYXhWYWx1ZSA+ICAgLy8gbWluaW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbmRpZgotICBzdHJ1Y3QgdWludF92YWx1ZV90IAotICB7Ci0jaWYgKGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fQ09ERUdFQVJfXykpCi0gICAgIC8vIEl0J3MgcmVhbGx5IG5vdCBjbGVhciB3aHkgdGhpcyB3b3JrYXJvdW5kIHNob3VsZCBiZSBuZWVkZWQuLi4gc2hydWcgSSBndWVzcyEgIEpNCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UKQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCB3aGljaCA9IAotICAgICAgICAgICAxICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgbG9uZz46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBpbnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgY2hhcj46OmNvbnN0X21heCkpOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmludF9sZWFzdF9oZWxwZXI8IDo6bmRuYm9vc3Q6OnVpbnRfdmFsdWVfdDxNYXhWYWx1ZT46OndoaWNoPjo6bGVhc3QgbGVhc3Q7Ci0jZWxzZSAvLyBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHdoaWNoID0gCi0gICAgICAgICAgIDEgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGxvbmc+Ojpjb25zdF9tYXgpICsKLSAgICAgICAgICAoTWF4VmFsdWUgPD0gOjpuZG5ib29zdDo6aW50ZWdlcl90cmFpdHM8dW5zaWduZWQgaW50Pjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIHNob3J0Pjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGNoYXI+Ojpjb25zdF9tYXgpKTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1aW50X2xlYXN0X2hlbHBlcjwgOjpuZG5ib29zdDo6dWludF92YWx1ZV90PE1heFZhbHVlPjo6d2hpY2g+OjpsZWFzdCBsZWFzdDsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0jZWxzZQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVpbnRfbGVhc3RfaGVscGVyCi0gICAgICAgIDwgCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPjo6Y29uc3RfbWF4KSArCi0jZWxzZQotICAgICAgICAgICAxICsKLSNlbmRpZgotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBsb25nPjo6Y29uc3RfbWF4KSArCi0gICAgICAgICAgKE1heFZhbHVlIDw9IDo6bmRuYm9vc3Q6OmludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGludD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBzaG9ydD46OmNvbnN0X21heCkgKwotICAgICAgICAgIChNYXhWYWx1ZSA8PSA6Om5kbmJvb3N0OjppbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBjaGFyPjo6Y29uc3RfbWF4KQotICAgICAgICA+OjpsZWFzdCAgbGVhc3Q7Ci0jZW5kaWYKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X2Zhc3RfdDxsZWFzdD46OnR5cGUgIGZhc3Q7Ci0gIH07Ci0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9JTlRFR0VSX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyL2ludGVnZXJfbWFzay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4M2VhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0vLyAgQm9vc3QgaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBEYXJ5bGUgV2Fsa2VyIDIwMDEuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIHVwZGF0ZXMsIGRvY3VtZW50YXRpb24sIGFuZCByZXZpc2lvbiBoaXN0b3J5LiAKLQotI2lmbmRlZiBORE5CT09TVF9JTlRFR0VSX0lOVEVHRVJfTUFTS19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9JTlRFR0VSX01BU0tfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX2Z3ZC5ocHA+ICAvLyBzZWxmIGluY2x1ZGUKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgLy8gZm9yIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPiAgLy8gZm9yIG5kbmJvb3N0Ojp1aW50X3QKLQotI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBmb3IgVUNIQVJfTUFYLCBldGMuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4gIC8vIGZvciBzdGQ6Om51bWVyaWNfbGltaXRzCi0KLS8vCi0vLyBXZSBzaW1wbHkgY2Fubm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgb24gZ2NjIHdpdGhvdXQgZ2V0dGluZyBjb3Bpb3VzIHdhcm5pbmdzIG9mIHRoZSBraW5kOgotLy8KLS8vIG5kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcDo5MzozNTogd2FybmluZzogdXNlIG9mIEM5OSBsb25nIGxvbmcgaW50ZWdlciBjb25zdGFudAotLy8KLS8vIEFuZCB5ZXQgdGhlcmUgaXMgbm8gb3RoZXIgcmVhc29uYWJsZSBpbXBsZW1lbnRhdGlvbiwgc28gd2UgZGVjbGFyZSB0aGlzIGEgc3lzdGVtIGhlYWRlcgotLy8gdG8gc3VwcHJlc3MgdGhlc2Ugd2FybmluZ3MuCi0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA0KQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0KLS8vICBTcGVjaWZpZWQgc2luZ2xlLWJpdCBtYXNrIGNsYXNzIGRlY2xhcmF0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgKExvd2VzdCBiaXQgc3RhcnRzIGNvdW50aW5nIGF0IDAuKQotCi10ZW1wbGF0ZSA8IHN0ZDo6c2l6ZV90IEJpdCA+Ci1zdHJ1Y3QgaGlnaF9iaXRfbWFza190Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1aW50X3Q8KEJpdCArIDEpPjo6bGVhc3QgIGxlYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdWludF90PChCaXQgKyAxKT46OmZhc3QgICBmYXN0OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBsZWFzdCwgaGlnaF9iaXQgPSAobGVhc3QoIDF1ICkgPDwgQml0KSApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggZmFzdCwgaGlnaF9iaXRfZmFzdCA9IChmYXN0KCAxdSApIDw8IEJpdCkgKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggc3RkOjpzaXplX3QsIGJpdF9wb3NpdGlvbiA9IEJpdCApOwotCi19OyAgLy8gbmRuYm9vc3Q6OmhpZ2hfYml0X21hc2tfdAotCi0KLS8vICBTcGVjaWZpZWQgYml0LWJsb2NrIG1hc2sgY2xhc3MgZGVjbGFyYXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0vLyAgTWFrZXMgbWFza3MgZm9yIHRoZSBsb3dlc3QgTiBiaXRzCi0vLyAgKFNwZWNpYWxpemF0aW9ucyBhcmUgbmVlZGVkIHdoZW4gTiBmaWxscyB1cCBhIHR5cGUuKQotCi10ZW1wbGF0ZSA8IHN0ZDo6c2l6ZV90IEJpdHMgPgotc3RydWN0IGxvd19iaXRzX21hc2tfdAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdWludF90PEJpdHM+OjpsZWFzdCAgbGVhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB1aW50X3Q8Qml0cz46OmZhc3QgICBmYXN0OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBsZWFzdCwgc2lnX2JpdHMgPSAofiggfihsZWFzdCggMHUgKSkgPDwgQml0cyApKSApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggZmFzdCwgc2lnX2JpdHNfZmFzdCA9IGZhc3Qoc2lnX2JpdHMpICk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIHN0ZDo6c2l6ZV90LCBiaXRfY291bnQgPSBCaXRzICk7Ci0KLX07ICAvLyBuZG5ib29zdDo6bG93X2JpdHNfbWFza190Ci0KLQotI2RlZmluZSBORE5CT09TVF9MT1dfQklUU19NQVNLX1NQRUNJQUxJWkUoIFR5cGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHRlbXBsYXRlIDwgID4gIHN0cnVjdCBsb3dfYml0c19tYXNrX3Q8IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZT46OmRpZ2l0cyA+ICB7IFwKLSAgICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlPiAgICAgICAgICAgbGltaXRzX3R5cGU7ICAgICAgICAgICAgICAgICAgXAotICAgICAgdHlwZWRlZiB1aW50X3Q8bGltaXRzX3R5cGU6OmRpZ2l0cz46OmxlYXN0ICBsZWFzdDsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB0eXBlZGVmIHVpbnRfdDxsaW1pdHNfdHlwZTo6ZGlnaXRzPjo6ZmFzdCAgIGZhc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggbGVhc3QsIHNpZ19iaXRzID0gKH4oIGxlYXN0KDB1KSApKSApOyAgICAgICAgICAgICAgXAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBmYXN0LCBzaWdfYml0c19mYXN0ID0gZmFzdChzaWdfYml0cykgKTsgICAgICAgICAgICBcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIHN0ZDo6c2l6ZV90LCBiaXRfY291bnQgPSBsaW1pdHNfdHlwZTo6ZGlnaXRzICk7ICAgIFwKLSAgfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ1KSAgLy8gJ2luaXRpYWxpemluZycgOiBjb252ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ2NvbnN0IG5kbmJvb3N0Ojpsb3dfYml0c19tYXNrX3Q8OD46OmxlYXN0Jywgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCi0jZW5kaWYKLQotTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCB1bnNpZ25lZCBjaGFyICk7Ci0KLSNpZiBVU0hSVF9NQVggPiBVQ0hBUl9NQVgKLU5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRSggdW5zaWduZWQgc2hvcnQgKTsKLSNlbmRpZgotCi0jaWYgVUlOVF9NQVggPiBVU0hSVF9NQVgKLU5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRSggdW5zaWduZWQgaW50ICk7Ci0jZW5kaWYKLQotI2lmIFVMT05HX01BWCA+IFVJTlRfTUFYCi1ORE5CT09TVF9MT1dfQklUU19NQVNLX1NQRUNJQUxJWkUoIHVuc2lnbmVkIGxvbmcgKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICNpZiAoKGRlZmluZWQoVUxMT05HX01BWCkgJiYgKFVMTE9OR19NQVggPiBVTE9OR19NQVgpKSB8fFwKLSAgICAgICAgKGRlZmluZWQoVUxPTkdfTE9OR19NQVgpICYmIChVTE9OR19MT05HX01BWCA+IFVMT05HX01BWCkpIHx8XAotICAgICAgICAoZGVmaW5lZChVTE9OR0xPTkdfTUFYKSAmJiAoVUxPTkdMT05HX01BWCA+IFVMT05HX01BWCkpIHx8XAotICAgICAgICAoZGVmaW5lZChfVUxMT05HX01BWCkgJiYgKF9VTExPTkdfTUFYID4gVUxPTkdfTUFYKSkpCi0gICAgTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlICk7Ci0gICAgI2VuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAjaWYgMTg0NDY3NDQwNzM3MDk1NTE2MTV1aTY0ID4gVUxPTkdfTUFYCi0gICAgTkROQk9PU1RfTE9XX0JJVFNfTUFTS19TUEVDSUFMSVpFKCB1bnNpZ25lZCBfX2ludDY0ICk7Ci0gICAgI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0xPV19CSVRTX01BU0tfU1BFQ0lBTElaRQotCi0KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfSU5URUdFUl9JTlRFR0VSX01BU0tfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19sb2cyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE0MGYzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8vIC0tLS0tLS0tLS0tLS0tIEJvb3N0IHN0YXRpY19sb2cyLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERhcnlsZSBXYWxrZXIuCi0vLyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAzIFZlc2EgS2Fydm9uZW4uCi0vLyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAzIEdlbm5hcm8gUHJvdGEuCi0vLwotLy8gICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgICAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRlZ2VyIGZvciBkb2N1bWVudGF0aW9uLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5URUdFUl9TVEFUSUNfTE9HMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9TVEFUSUNfTE9HMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2ludGVnZXJfZndkLmhwcCIgLy8gZm9yIG5kbmJvb3N0OjppbnRtYXhfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAgbmFtZXNwYWNlIHN0YXRpY19sb2cyX2ltcGwgewotCi0gICAgIC8vIGNob29zZV9pbml0aWFsX248PgotICAgICAvLwotICAgICAvLyBSZWN1cnNpdmVseSBkb3VibGVzIGl0cyBpbnRlZ2VyIGFyZ3VtZW50LCB1bnRpbCBpdAotICAgICAvLyBiZWNvbWVzID49IG9mIHRoZSAid2lkdGgiIChDOTksIDYuMi42LjJwNCkgb2YKLSAgICAgLy8gc3RhdGljX2xvZzJfYXJndW1lbnRfdHlwZS4KLSAgICAgLy8KLSAgICAgLy8gVXNlZCB0byBnZXQgdGhlIG1heGltdW0gcG93ZXIgb2YgdHdvIGxlc3MgdGhlbiB0aGUgd2lkdGguCi0gICAgIC8vCi0gICAgIC8vIEV4YW1wbGU6IGlmIG9uIHlvdXIgcGxhdGZvcm0gYXJndW1lbnRfdHlwZSBoYXMgNDggdmFsdWUKLSAgICAgLy8gICAgICAgICAgYml0cyBpdCB5aWVsZHMgbj0zMi4KLSAgICAgLy8KLSAgICAgLy8gSXQncyBlYXN5IHRvIHByb3ZlIHRoYXQsIHN0YXJ0aW5nIGZyb20gc3VjaCBhIHZhbHVlCi0gICAgIC8vIG9mIG4sIHRoZSBjb3JlIGFsZ29yaXRobSB3b3JrcyBjb3JyZWN0bHkgZm9yIGFueSB3aWR0aAotICAgICAvLyBvZiBzdGF0aWNfbG9nMl9hcmd1bWVudF90eXBlIGFuZCB0aGF0IHJlY3Vyc2lvbiBhbHdheXMKLSAgICAgLy8gdGVybWluYXRlcyB3aXRoIHggPSAxIGFuZCBuID0gMCAoc2VlIHRoZSBhbGdvcml0aG0ncwotICAgICAvLyBpbnZhcmlhbnQpLgotCi0gICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZTsKLSAgICAgdHlwZWRlZiBuZG5ib29zdDo6c3RhdGljX2xvZzJfcmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgdGVtcGxhdGUgPHJlc3VsdF90eXBlIG4+Ci0gICAgIHN0cnVjdCBjaG9vc2VfaW5pdGlhbF9uIHsKLQotICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGMgPSAoYXJndW1lbnRfdHlwZSgxKSA8PCBuIDw8IG4pICE9IDApOwotICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgIHJlc3VsdF90eXBlLAotICAgICAgICAgICAgIHZhbHVlID0gIWMqbiArIGNob29zZV9pbml0aWFsX248MipjKm4+Ojp2YWx1ZQotICAgICAgICAgKTsKLQotICAgICB9OwotCi0gICAgIHRlbXBsYXRlIDw+Ci0gICAgIHN0cnVjdCBjaG9vc2VfaW5pdGlhbF9uPDA+IHsKLSAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChyZXN1bHRfdHlwZSwgdmFsdWUgPSAwKTsKLSAgICAgfTsKLQotCi0KLSAgICAgLy8gc3RhcnQgY29tcHV0aW5nIGZyb20gbl96ZXJvIC0gbXVzdCBiZSBhIHBvd2VyIG9mIHR3bwotICAgICBjb25zdCByZXN1bHRfdHlwZSBuX3plcm8gPSAxNjsKLSAgICAgY29uc3QgcmVzdWx0X3R5cGUgaW5pdGlhbF9uID0gY2hvb3NlX2luaXRpYWxfbjxuX3plcm8+Ojp2YWx1ZTsKLQotICAgICAvLyBzdGF0aWNfbG9nMl9pbXBsPD4KLSAgICAgLy8KLSAgICAgLy8gKiBJbnZhcmlhbnQ6Ci0gICAgIC8vICAgICAgICAgICAgICAgICAybgotICAgICAvLyAgMSA8PSB4ICYmIHggPCAyICAgIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlY3Vyc2lvbgotICAgICAvLyAgICAgICAgICAgICAgICAgICAgIChzZWUgYWxzbyBjaG9vc2VfaW5pdGlhbF9uPD4pCi0gICAgIC8vCi0gICAgIC8vICogVHlwZSByZXF1aXJlbWVudHM6Ci0gICAgIC8vCi0gICAgIC8vICAgYXJndW1lbnRfdHlwZSBtYXliZSBhbnkgdW5zaWduZWQgdHlwZSB3aXRoIGF0IGxlYXN0IG5femVybyArIDEKLSAgICAgLy8gICB2YWx1ZSBiaXRzLiAoTm90ZTogSWYgbGFyZ2VyIHR5cGVzIHdpbGwgYmUgc3RhbmRhcmRpemVkIC1lLmcuCi0gICAgIC8vICAgdW5zaWduZWQgbG9uZyBsb25nLSB0aGVuIHRoZSBhcmd1bWVudF90eXBlIHR5cGVkZWYgY2FuIGJlCi0gICAgIC8vICAgY2hhbmdlZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgcmVzdCBvZiB0aGUgY29kZS4pCi0gICAgIC8vCi0KLSAgICAgdGVtcGxhdGUgPGFyZ3VtZW50X3R5cGUgeCwgcmVzdWx0X3R5cGUgbiA9IGluaXRpYWxfbj4KLSAgICAgc3RydWN0IHN0YXRpY19sb2cyX2ltcGwgewotCi0gICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgYyA9ICh4ID4+IG4pID4gMCk7IC8vIHggPj0gMioqbiA/Ci0gICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgICAgICAgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgdmFsdWUgPSBjKm4gKyAoc3RhdGljX2xvZzJfaW1wbDwgKHg+PmMqbiksIG4vMiA+Ojp2YWx1ZSkKLSAgICAgICAgICk7Ci0KLSAgICAgfTsKLQotICAgICB0ZW1wbGF0ZSA8PgotICAgICBzdHJ1Y3Qgc3RhdGljX2xvZzJfaW1wbDwxLCAwPiB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChyZXN1bHRfdHlwZSwgdmFsdWUgPSAwKTsKLSAgICAgfTsKLQotICAgICB9Ci0gfSAvLyBkZXRhaWwKLQotCi0KLSAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIC8vIHN0YXRpY19sb2cyPHg+Ci0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gdGVtcGxhdGUgPHN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGUgeD4KLSBzdHJ1Y3Qgc3RhdGljX2xvZzIgewotCi0gICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgIHN0YXRpY19sb2cyX3Jlc3VsdF90eXBlLAotICAgICAgICAgdmFsdWUgPSBkZXRhaWw6OnN0YXRpY19sb2cyX2ltcGw6OnN0YXRpY19sb2cyX2ltcGw8eD46OnZhbHVlCi0gICAgICk7Ci0KLSB9OwotCi0KLSB0ZW1wbGF0ZSA8PgotIHN0cnVjdCBzdGF0aWNfbG9nMjwwPiB7IH07Ci0KLX0KLQotCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXJfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlcl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmM2ZTY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50ZWdlcl9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8vICBCb29zdCBpbnRlZ2VyX2Z3ZC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMgYW5kIERhcnlsZSBXYWxrZXIgMjAwMS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRlZ2VyIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVHRVJfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRFR0VSX0ZXRF9IUFAKLQotI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBmb3IgVUNIQVJfTUFYLCBldGMuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIGZvciBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+ICAvLyBmb3Igc3RkOjpudW1lcmljX2xpbWl0cwotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgLy8gRm9yIGludG1heF90Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19JTlRFR1JBTF9JTlQ2NF9UCi0gICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBzdGF0aWNfbG9nMl9hcmd1bWVudF90eXBlOwotICAgICB0eXBlZGVmICAgICAgICAgIGludCAgc3RhdGljX2xvZzJfcmVzdWx0X3R5cGU7Ci0gICAgIHR5cGVkZWYgbG9uZyAgICAgICAgICBzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZTsKLSAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHN0YXRpY19taW5fbWF4X3Vuc2lnbmVkX3R5cGU7Ci0jZWxzZQotICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50bWF4X3Qgc3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZTsKLSAgICAgdHlwZWRlZiBuZG5ib29zdDo6aW50bWF4X3QgIHN0YXRpY19taW5fbWF4X3NpZ25lZF90eXBlOwotICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50bWF4X3Qgc3RhdGljX2xvZzJfYXJndW1lbnRfdHlwZTsKLSAgICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgIHN0YXRpY19sb2cyX3Jlc3VsdF90eXBlOwotI2VuZGlmCi0KLS8vICBGcm9tIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE9ubHkgaGFzIHR5cGVkZWZzIG9yIHVzaW5nIHN0YXRlbWVudHMsIHdpdGggI2NvbmRpdGlvbmFscwotCi0KLS8vICBGcm9tIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDwgY2xhc3MgVCA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM7Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgYm9vbCA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IGNoYXIgPjsKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCBzaWduZWQgY2hhciA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHVuc2lnbmVkIGNoYXIgPjsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCB3Y2hhcl90ID47Ci0jZW5kaWYKLQotdGVtcGxhdGUgPCAgPgotICAgIGNsYXNzIGludGVnZXJfdHJhaXRzPCBzaG9ydCA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHVuc2lnbmVkIHNob3J0ID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgaW50ID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgdW5zaWduZWQgaW50ID47Ci0KLXRlbXBsYXRlIDwgID4KLSAgICBjbGFzcyBpbnRlZ2VyX3RyYWl0czwgbG9uZyA+OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgY2xhc3MgaW50ZWdlcl90cmFpdHM8IHVuc2lnbmVkIGxvbmcgPjsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLXRlbXBsYXRlIDwgID4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+OwotCi10ZW1wbGF0ZSA8ICA+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSA+OwotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi10ZW1wbGF0ZSA8ICA+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czxfX2ludDY0PjsKLQotdGVtcGxhdGUgPCAgPgotY2xhc3MgaW50ZWdlcl90cmFpdHM8dW5zaWduZWQgX19pbnQ2ND47Ci0jZW5kaWYKLQotCi0vLyAgRnJvbSA8bmRuYm9vc3QvaW50ZWdlci5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExlYXN0SW50ID4KLSAgICBzdHJ1Y3QgaW50X2Zhc3RfdDsKLQotdGVtcGxhdGU8IGludCBCaXRzID4KLSAgICBzdHJ1Y3QgaW50X3Q7Ci0KLXRlbXBsYXRlPCBpbnQgQml0cyA+Ci0gICAgc3RydWN0IHVpbnRfdDsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2Vsc2UKLSAgdGVtcGxhdGU8IGxvbmcgTWF4VmFsdWUgPiAgIC8vIG1heGltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZW5kaWYKLSAgICBzdHJ1Y3QgaW50X21heF92YWx1ZV90OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIE1pblZhbHVlID4gICAvLyBtaW5pbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2Vsc2UKLSAgdGVtcGxhdGU8IGxvbmcgTWluVmFsdWUgPiAgIC8vIG1pbmltdW0gdmFsdWUgdG8gcmVxdWlyZSBzdXBwb3J0Ci0jZW5kaWYKLSAgICBzdHJ1Y3QgaW50X21pbl92YWx1ZV90OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5URUdSQUxfSU5UNjRfVCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICB0ZW1wbGF0ZTwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBNYXhWYWx1ZSA+ICAgLy8gbWF4aW11bSB2YWx1ZSB0byByZXF1aXJlIHN1cHBvcnQKLSNlbHNlCi0gIHRlbXBsYXRlPCB1bnNpZ25lZCBsb25nIE1heFZhbHVlID4gICAvLyBtYXhpbXVtIHZhbHVlIHRvIHJlcXVpcmUgc3VwcG9ydAotI2VuZGlmCi0gICAgc3RydWN0IHVpbnRfdmFsdWVfdDsKLQotCi0vLyAgRnJvbSA8bmRuYm9vc3QvaW50ZWdlci9pbnRlZ2VyX21hc2suaHBwPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8IHN0ZDo6c2l6ZV90IEJpdCA+Ci0gICAgc3RydWN0IGhpZ2hfYml0X21hc2tfdDsKLQotdGVtcGxhdGUgPCBzdGQ6OnNpemVfdCBCaXRzID4KLSAgICBzdHJ1Y3QgbG93X2JpdHNfbWFza190OwotCi10ZW1wbGF0ZSA8ICA+Ci0gICAgc3RydWN0IGxvd19iaXRzX21hc2tfdDwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+OjpkaWdpdHMgPjsKLQotLy8gIEZyb20gPG5kbmJvb3N0L2ludGVnZXIvc3RhdGljX2xvZzIuaHBwPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGUgPHN0YXRpY19sb2cyX2FyZ3VtZW50X3R5cGUgVmFsdWUgPgotICAgIHN0cnVjdCBzdGF0aWNfbG9nMjsKLQotdGVtcGxhdGUgPD4gc3RydWN0IHN0YXRpY19sb2cyPDB1PjsKLQotCi0vLyAgRnJvbSA8bmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbWluX21heC5ocHA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfc2lnbmVkX3R5cGUgVmFsdWUxLCBzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZSBWYWx1ZTI+Ci0gICAgc3RydWN0IHN0YXRpY19zaWduZWRfbWluOwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfc2lnbmVkX3R5cGUgVmFsdWUxLCBzdGF0aWNfbWluX21heF9zaWduZWRfdHlwZSBWYWx1ZTI+Ci0gICAgc3RydWN0IHN0YXRpY19zaWduZWRfbWF4OwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZSBWYWx1ZTEsIHN0YXRpY19taW5fbWF4X3Vuc2lnbmVkX3R5cGUgVmFsdWUyPgotICAgIHN0cnVjdCBzdGF0aWNfdW5zaWduZWRfbWluOwotCi10ZW1wbGF0ZSA8c3RhdGljX21pbl9tYXhfdW5zaWduZWRfdHlwZSBWYWx1ZTEsIHN0YXRpY19taW5fbWF4X3Vuc2lnbmVkX3R5cGUgVmFsdWUyPgotICAgIHN0cnVjdCBzdGF0aWNfdW5zaWduZWRfbWF4OwotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX0lOVEVHRVJfRldEX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhhNmFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MSArMCwwIEBACi0vKiBib29zdCBpbnRlZ2VyX3RyYWl0cy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMAotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqICRJZDogaW50ZWdlcl90cmFpdHMuaHBwIDgzMzgxIDIwMTMtMDMtMDkgMjI6NTU6MDVaIGVyaWNfbmllYmxlciAkCi0gKgotICogSWRlYSBieSBCZW1hbiBEYXdlcywgRWQgQnJleSwgU3RldmUgQ2xlYXJ5LCBhbmQgTmF0aGFuIE15ZXJzCi0gKi8KLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludGVnZXIgZm9yIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9JTlRFR0VSX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLS8vIFRoZXNlIGFyZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIG5vdCBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLS8vIHdlIG5lZWQgd2NoYXIuaCBmb3IgV0NIQVJfTUFYL01JTiBidXQgbm90IGFsbCBwbGF0Zm9ybXMgcHJvdmlkZSBpdCwKLS8vIGFuZCBzb21lIG1heSBoYXZlIDx3Y2hhci5oPiBidXQgbm90IDxjd2NoYXI+IC4uLgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKSAmJiAoIWRlZmluZWQoTkROQk9PU1RfTk9fQ1dDSEFSKSB8fCBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX1FOWF9fKSkKLSNpbmNsdWRlIDx3Y2hhci5oPgotI2VuZGlmCi0KLS8vCi0vLyBXZSBzaW1wbHkgY2Fubm90IGluY2x1ZGUgdGhpcyBoZWFkZXIgb24gZ2NjIHdpdGhvdXQgZ2V0dGluZyBjb3Bpb3VzIHdhcm5pbmdzIG9mIHRoZSBraW5kOgotLy8KLS8vIC4uLy4uLy4uL2Jvb3N0L2ludGVnZXJfdHJhaXRzLmhwcDoxNjQ6NjY6IHdhcm5pbmc6IHVzZSBvZiBDOTkgbG9uZyBsb25nIGludGVnZXIgY29uc3RhbnQKLS8vCi0vLyBBbmQgeWV0IHRoZXJlIGlzIG5vIG90aGVyIHJlYXNvbmFibGUgaW1wbGVtZW50YXRpb24sIHNvIHdlIGRlY2xhcmUgdGhpcyBhIHN5c3RlbSBoZWFkZXIKLS8vIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIGludGVnZXJfdHJhaXRzIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLXsKLXB1YmxpYzoKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVncmFsID0gZmFsc2UpOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci10ZW1wbGF0ZTxjbGFzcyBULCBUIG1pbl92YWwsIFQgbWF4X3ZhbD4KLWNsYXNzIGludGVnZXJfdHJhaXRzX2Jhc2UKLXsKLXB1YmxpYzoKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVncmFsID0gdHJ1ZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCBjb25zdF9taW4gPSBtaW5fdmFsKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIGNvbnN0X21heCA9IG1heF92YWwpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotLy8gIEEgZGVmaW5pdGlvbiBpcyByZXF1aXJlZCBldmVuIGZvciBpbnRlZ3JhbCBzdGF0aWMgY29uc3RhbnRzCi10ZW1wbGF0ZTxjbGFzcyBULCBUIG1pbl92YWwsIFQgbWF4X3ZhbD4KLWNvbnN0IGJvb2wgaW50ZWdlcl90cmFpdHNfYmFzZTxULCBtaW5fdmFsLCBtYXhfdmFsPjo6aXNfaW50ZWdyYWw7Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIFQgbWluX3ZhbCwgVCBtYXhfdmFsPgotY29uc3QgVCBpbnRlZ2VyX3RyYWl0c19iYXNlPFQsIG1pbl92YWwsIG1heF92YWw+Ojpjb25zdF9taW47Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIFQgbWluX3ZhbCwgVCBtYXhfdmFsPgotY29uc3QgVCBpbnRlZ2VyX3RyYWl0c19iYXNlPFQsIG1pbl92YWwsIG1heF92YWw+Ojpjb25zdF9tYXg7Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPGJvb2w+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8Ym9vbD4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTxib29sLCBmYWxzZSwgdHJ1ZT4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8Y2hhcj4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxjaGFyPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPGNoYXIsIENIQVJfTUlOLCBDSEFSX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8c2lnbmVkIGNoYXI+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8c2lnbmVkIGNoYXI+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8c2lnbmVkIGNoYXIsIFNDSEFSX01JTiwgU0NIQVJfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czx1bnNpZ25lZCBjaGFyPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8dW5zaWduZWQgY2hhciwgMCwgVUNIQVJfTUFYPgoteyB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czx3Y2hhcl90PgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPHdjaGFyX3Q+LAotICAgIC8vIERvbid0IHRydXN0IFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYIHdpdGggTWFjIE9TIFgncyBuYXRpdmUKLSAgICAvLyBsaWJyYXJ5OiB0aGV5IGFyZSB3cm9uZyEKLSNpZiBkZWZpbmVkKFdDSEFSX01JTikgJiYgZGVmaW5lZChXQ0hBUl9NQVgpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPHdjaGFyX3QsIFdDSEFSX01JTiwgV0NIQVJfTUFYPgotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgKGRlZmluZWQoX19CRU9TX18pICYmIGRlZmluZWQoX19HTlVDX18pKQotICAgIC8vIE5vIFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYLCB3aGFyX3QgaXMgc2hvcnQgYW5kIHVuc2lnbmVkOgotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8d2NoYXJfdCwgMCwgMHhmZmZmPgotI2VsaWYgKGRlZmluZWQoX19zZ2kpICYmICghZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgX19TR0lfU1RMX1BPUlQgPCAweDQwMCkpXAotICAgIHx8IChkZWZpbmVkIF9fQVBQTEVfXylcCi0gICAgfHwgKGRlZmluZWQoX19PcGVuQlNEX18pICYmIGRlZmluZWQoX19HTlVDX18pKVwKLSAgICB8fCAoZGVmaW5lZChfX05ldEJTRF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSlcCi0gICAgfHwgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIGRlZmluZWQoX19HTlVDX18pKVwKLSAgICB8fCAoZGVmaW5lZChfX0RyYWdvbkZseV9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSlcCi0gICAgfHwgKGRlZmluZWQoX19ocHV4KSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gMykgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpKQotICAgIC8vIE5vIFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYLCB3Y2hhcl90IGhhcyB0aGUgc2FtZSByYW5nZSBhcyBpbnQuCi0gICAgLy8gIC0gU0dJIE1JUFNwcm8gd2l0aCBuYXRpdmUgbGlicmFyeQotICAgIC8vICAtIGdjYyAzLnggb24gSFAtVVgKLSAgICAvLyAgLSBNYWMgT1MgWCB3aXRoIG5hdGl2ZSBsaWJyYXJ5Ci0gICAgLy8gIC0gZ2NjIG9uIEZyZWVCU0QsIE9wZW5CU0QgYW5kIE5ldEJTRAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8d2NoYXJfdCwgSU5UX01JTiwgSU5UX01BWD4KLSNlbGlmIGRlZmluZWQoX19ocHV4KSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gMikgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpCi0gICAgLy8gTm8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVgsIHdjaGFyX3QgaGFzIHRoZSBzYW1lIHJhbmdlIGFzIHVuc2lnbmVkIGludC4KLSAgICAvLyAgLSBnY2MgMi45NS54IG9uIEhQLVVYCi0gICAgLy8gKGFsc28sIHN0ZDo6bnVtZXJpY19saW1pdHM8d2NoYXJfdD4gYXBwZWFycyB0byByZXR1cm4gdGhlIHdyb25nIHZhbHVlcykuCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTx3Y2hhcl90LCAwLCBVSU5UX01BWD4KLSNlbHNlCi0jZXJyb3IgTm8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVggcHJlc2VudCwgcGxlYXNlIGFkanVzdCBpbnRlZ2VyX3RyYWl0czw+IGZvciB5b3VyIGNvbXBpbGVyLgotI2VuZGlmCi17IH07Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8c2hvcnQ+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8c2hvcnQsIFNIUlRfTUlOLCBTSFJUX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8dW5zaWduZWQgc2hvcnQsIDAsIFVTSFJUX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8aW50PgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPGludD4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTxpbnQsIElOVF9NSU4sIElOVF9NQVg+Ci17IH07Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPHVuc2lnbmVkIGludD4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8dW5zaWduZWQgaW50LCAwLCBVSU5UX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8bG9uZz4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czxsb25nPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPGxvbmcsIExPTkdfTUlOLCBMT05HX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8dW5zaWduZWQgbG9uZz4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPHVuc2lnbmVkIGxvbmcsIDAsIFVMT05HX01BWD4KLXsgfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpCi0jaWYgZGVmaW5lZChVTExPTkdfTUFYKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCBMTE9OR19NSU4sIExMT05HX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIDAsIFVMTE9OR19NQVg+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoVUxPTkdfTE9OR19NQVgpICYmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LCAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgTE9OR19MT05HX01JTiwgTE9OR19MT05HX01BWD57IH07Ci10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgMCwgVUxPTkdfTE9OR19NQVg+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoVUxPTkdMT05HX01BWCkgJiYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgTE9OR0xPTkdfTUlOLCBMT05HTE9OR19NQVg+Ci17IH07Ci0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCAwLCBVTE9OR0xPTkdfTUFYPgoteyB9OwotCi0jZWxpZiBkZWZpbmVkKF9MTE9OR19NQVgpICYmIGRlZmluZWQoX0MyKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0KLXRlbXBsYXRlPD4KLWNsYXNzIGludGVnZXJfdHJhaXRzPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCAtX0xMT05HX01BWCAtIF9DMiwgX0xMT05HX01BWD4KLXsgfTsKLQotdGVtcGxhdGU8PgotY2xhc3MgaW50ZWdlcl90cmFpdHM8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIDAsIF9VTExPTkdfTUFYPgoteyB9OwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0vLwotLy8gd2UgaGF2ZSBsb25nIGxvbmcgYnV0IG5vIGNvbnN0YW50cywgdGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIHdpdGggZ2NjIGluIC1hbnNpIG1vZGUsCi0vLyB3ZSdsbCBqdXN0IGhhdmUgdG8gd29yayBvdXQgdGhlIHZhbHVlcyBmb3Igb3Vyc2VsdmVzIChhc3N1bWVzIDIncyBjb21wbGltZW50IHJlcHJlc2VudGF0aW9uKToKLS8vCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+Ci0gIDogcHVibGljIHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiwKLSAgICBwdWJsaWMgZGV0YWlsOjppbnRlZ2VyX3RyYWl0c19iYXNlPCA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgKDFMTCA8PCAoc2l6ZW9mKDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSAqIENIQVJfQklUIC0gMSkpLCB+KDFMTCA8PCAoc2l6ZW9mKDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKSAqIENIQVJfQklUIC0gMSkpPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPgotICA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPCA6Om5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+LAotICAgIHB1YmxpYyBkZXRhaWw6OmludGVnZXJfdHJhaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSwgMCwgfjB1TEw+Ci17IH07Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgX19pbnQ2ND4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgX19pbnQ2ND4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgX19pbnQ2NCwgX0k2NF9NSU4sIF9JNjRfTUFYPgoteyB9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBpbnRlZ2VyX3RyYWl0czwgdW5zaWduZWQgX19pbnQ2ND4KLSAgOiBwdWJsaWMgc3RkOjpudW1lcmljX2xpbWl0czwgdW5zaWduZWQgX19pbnQ2ND4sCi0gICAgcHVibGljIGRldGFpbDo6aW50ZWdlcl90cmFpdHNfYmFzZTwgdW5zaWduZWQgX19pbnQ2NCwgMCwgX1VJNjRfTUFYPgoteyB9OwotCi0jZW5kaWYKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLyogTkROQk9PU1RfSU5URUdFUl9UUkFJVFNfSFBQICovCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTdjZTA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgIDIwMDYtMjAxMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfQ09ORklHX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9DT05GSUdfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0KLSAgICNwcmFnbWEgd2FybmluZyAocHVzaCkKLSAgIC8vCi0gICAvLydmdW5jdGlvbicgOiByZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cAotICAgLy9BIGZ1bmN0aW9uIGZvdW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgKEtvZW5pZyBsb29rdXApIHdhcyBldmVudHVhbGx5Ci0gICAvL2Nob3NlbiBieSBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgLy8KLSAgIC8vSW4gVmlzdWFsIEMrKyAuTkVUIGFuZCBlYXJsaWVyIGNvbXBpbGVycywgYSBkaWZmZXJlbnQgZnVuY3Rpb24gd291bGQgaGF2ZQotICAgLy9iZWVuIGNhbGxlZC4gVG8gcGljayB0aGUgb3JpZ2luYWwgZnVuY3Rpb24sIHVzZSBhbiBleHBsaWNpdGx5IHF1YWxpZmllZCBuYW1lLgotICAgLy8KLQotICAgLy93YXJuaW5nIEM0Mjc1OiBub24gZGxsLWludGVyZmFjZSBjbGFzcyAneCcgdXNlZCBhcyBiYXNlIGZvcgotICAgLy9kbGwtaW50ZXJmYWNlIGNsYXNzICdZJwotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDI3NSkKLSAgIC8vd2FybmluZyBDNDI1MTogJ3gnIDogY2xhc3MgJ3knIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0bwotICAgLy9iZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgJ3onCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MjUxKQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDY3NSkKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ5OTYpCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0NTAzKQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDI4NCkgLy8gb2RkIHJldHVybiB0eXBlIGZvciBvcGVyYXRvci0+Ci0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MjQ0KSAvLyBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1MjEpIC8vLy9EaXNhYmxlICJtdWx0aXBsZSBjb3B5IGNvbnN0cnVjdG9ycyBzcGVjaWZpZWQiCi0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0NTIyKQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDE0NikKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQyNjcpIC8vY29udmVyc2lvbiBmcm9tICdYJyB0byAnWScsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDEyNykgLy9jb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci0gICAjcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0NzA2KSAvL2Fzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24KLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1NDEpIC8vJ3R5cGVpZCcgdXNlZCBvbiBwb2x5bW9ycGhpYyB0eXBlICduZG5ib29zdDo6ZXhjZXB0aW9uJyB3aXRoIC9HUi0KLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ1MTIpIC8vJ3R5cGVpZCcgdXNlZCBvbiBwb2x5bW9ycGhpYyB0eXBlICduZG5ib29zdDo6ZXhjZXB0aW9uJyB3aXRoIC9HUi0KLSNlbmRpZgotCi0vLyNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1VTRV9JVEVSQVRPUl9GQUNBREUKLS8vI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfVVNFX0lURVJBVE9SX0VOQUJMRV9JRl9DT05WRVJUSUJMRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWExMjE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhICAyMDA2LTIwMTIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50cnVzaXZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX01TVkMKLSAgICNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmRhNWI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzU3ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDExLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIHNhbXBsZS5oCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLSAgICNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfREVUQUlMU19JTkNMVURFRAotICAgI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9ERVRBSUxTX0lOQ0xVREVECi0KLSAgICAgICNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSAgICAgICNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3ByZXByb2Nlc3Nvci5ocHA+Ci0gICAgICAjaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9tcGwuaHBwPgotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvbW92ZS5ocHA+Ci0KLSAgICAgIC8vTWFyayB0aGF0IHdlIGRvbid0IHN1cHBvcnQgMCBhcmcgY2FsbHMgZHVlIHRvIGNvbXBpbGVyIElDRSBpbiBHQ0MgMy40LzQuMC80LjEgYW5kCi0gICAgICAvL3dyb25nIFNGSU5BRSBmb3IgR0NDIDQuMi80LjMKLSAgICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pICYmICgoX19HTlVDX18qMTAwICsgX19HTlVDX01JTk9SX18qMTApID49IDM0MCkgJiYgKChfX0dOVUNfXyoxMDAgKyBfX0dOVUNfTUlOT1JfXyoxMCkgPD0gNDMwKQotICAgICAgI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF8wX0FSR1NfVU5TVVBQT1JURUQKLSAgICAgICNlbGlmIGRlZmluZWQoTkROQk9PU1RfSU5URUwpICYmIChORE5CT09TVF9JTlRFTCA8IDEyMDAgKQotICAgICAgI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF8wX0FSR1NfVU5TVVBQT1JURUQKLSAgICAgICNlbmRpZgotCi0gICAgICBuYW1lc3BhY2UgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aCB7Ci0KLSAgICAgIHN0cnVjdCBkb250X2NhcmUKLSAgICAgIHsKLSAgICAgICAgIGRvbnRfY2FyZSguLi4pOwotICAgICAgfTsKLQotICAgICAgc3RydWN0IHByaXZhdGVfdHlwZQotICAgICAgewotICAgICAgICAgc3RhdGljIHByaXZhdGVfdHlwZSBwOwotICAgICAgICAgcHJpdmF0ZV90eXBlIGNvbnN0ICZvcGVyYXRvciwoaW50KSBjb25zdDsKLSAgICAgIH07Ci0KLSAgICAgIHR5cGVkZWYgY2hhciB5ZXNfdHlwZTsgICAgICAgICAgICAvLyBzaXplb2YoeWVzX3R5cGUpID09IDEKLSAgICAgIHN0cnVjdCBub190eXBleyBjaGFyIGR1bW15WzJdOyB9OyAvLyBzaXplb2Yobm9fdHlwZSkgID09IDIKLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIG5vX3R5cGUgaXNfcHJpdmF0ZV90eXBlKFQgY29uc3QgJik7Ci0gICAgICB5ZXNfdHlwZSBpc19wcml2YXRlX3R5cGUocHJpdmF0ZV90eXBlIGNvbnN0ICYpOwotCi0gICAgICB9ICAvL2Jvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGgKLQotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSAgICNlbmRpZiAgIC8vTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfREVUQUlMU19JTkNMVURFRAotCi0jZWxzZSAvLyFORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLQotICAgI2lmbmRlZiAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRQotICAgI2Vycm9yICJORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FIG5vdCBkZWZpbmVkISIKLSAgICNlbmRpZgotCi0gICAjaWZuZGVmICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOCi0gICAjZXJyb3IgIk5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4gbm90IGRlZmluZWQhIgotICAgI2VuZGlmCi0KLSAgICNpZm5kZWYgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfRU5ECi0gICAjZXJyb3IgIk5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfRU5EIG5vdCBkZWZpbmVkISIKLSAgICNlbmRpZgotCi0gICAjaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUKCkgIT0gMAotICAgI2Vycm9yICJORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlQoKSBtdXN0IGJlIHplcm8gKDApIgotICAgI2VuZGlmCi0KLSAgICNpZiBORE5CT09TVF9QUF9JVEVSQVRJT04oKSA9PSAwCi0KLSAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4KLQotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci0gICAgICBjbGFzcyBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9uYW1lZF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICB7Ci0gICAgICAgICBzdHJ1Y3QgQmFzZU1peGluCi0gICAgICAgICB7Ci0gICAgICAgICAgICB2b2lkIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUoKTsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHN0cnVjdCBCYXNlIDogcHVibGljIDo6bmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpyZW1vdmVfY3Y8VHlwZT46OnR5cGUsIHB1YmxpYyBCYXNlTWl4aW4geyBCYXNlKCk7IH07Ci0gICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCB0PiBjbGFzcyBIZWxwZXJ7fTsKLQotICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gICAgICAgICBzdGF0aWMgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSAgZGVkdWNlCi0gICAgICAgICAgICAoVSosIEhlbHBlcjx2b2lkIChCYXNlTWl4aW46OiopKCksICZVOjpORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FPiogPSAwKTsKLSAgICAgICAgIHN0YXRpYyBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSBkZWR1Y2UoLi4uKTsKLQotICAgICAgICAgcHVibGljOgotICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPQotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlKSA9PSBzaXplb2YoZGVkdWNlKChCYXNlKikoMCkpKTsKLSAgICAgIH07Ci0KLSAgICAgICNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGJvb2wgSGFzRnVuYwotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9URU1QTEFURV9QQVJBTV9WT0lEX0RFRkFVTFQsIF8pPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksIF9pbXBsKTsKLSAgICAgICAgIC8vIQotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4gTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpLCBjbGFzcyBQKT4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLCBfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIGZhbHNlIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgUCk+Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotICAgICAgICAgfTsKLSAgICAgICAgIC8vIQotCi0gICAgICAgICAjaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IChfTVNDX1ZFUiA8IDE2MDApCi0KLSAgICAgICAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRCkKLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICAgICA8RnVuLCB0cnVlIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoTkROQk9PU1RfUFBfU1VCKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpLCBORE5CT09TVF9JTlRSVVNJVkVfUFBfSURFTlRJVFksIHZvaWQpPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy9NYXJrIHRoYXQgd2UgZG9uJ3Qgc3VwcG9ydCAwIGFyZyBjYWxscyBkdWUgdG8gY29tcGlsZXIgSUNFIGluIEdDQyAzLjQvNC4wLzQuMSBhbmQKLSAgICAgICAgICAgICAgIC8vd3JvbmcgU0ZJTkFFIGZvciBHQ0MgNC4yLzQuMwotICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgI2Vsc2UgLy9kZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRCkKLQotICAgICAgICAgICAgLy9TcGVjaWFsIGNhc2UgZm9yIDAgYXJncwotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEYKLSAgICAgICAgICAgICAgICAgICwgc3RkOjpzaXplX3QgTiA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKG5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGVjbHZhbDxGPigpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSAoKSwgMCkpPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6eWVzX3R5cGUgZHVtbXk7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSkoaW50KTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIC8vRm9yIGJ1Z2d5IGNvbXBpbGVycyBsaWtlIE1TVkMgNy4xKyAoKEYqKTApLT5mdW5jKCkgZG9lcyBub3QKLSAgICAgICAgICAgIC8vU0ZJTkFFLW91dCB0aGUgemVyb2FyZ19jaGVja2VyXyBpbnN0YW50aWF0aW9uIGJ1dCBzaXplb2YgeWllbGRzIHRvIDAuCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBGPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKTxGLCAwPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSBkdW1teTsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKShpbnQpOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuPgotICAgICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICAgICA8RnVuLCB0cnVlIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoTkROQk9PU1RfUFBfU1VCKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0goKSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpLCBORE5CT09TVF9JTlRSVVNJVkVfUFBfSURFTlRJVFksIHZvaWQpPgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9QUF9DQVQoemVyb2FyZ19jaGVja2VyXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSk8VT4KLSAgICAgICAgICAgICAgICAgIFRlc3QoTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPFU+Kik7Ci0KLSAgICAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgICAgICAgICAgc3RhdGljIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Om5vX3R5cGUgVGVzdCguLi4pOwotCi0gICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihUZXN0PCBGdW4gPigwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgI2VuZGlmICAgLy9kZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIXzBfQVJHU19VTlNVUFBPUlRFRCkKLQotICAgICAgICAgI2Vsc2UgLy8jaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IChfTVNDX1ZFUiA8IDE2MDApCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4+Ci0gICAgICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgICAgIDxGdW4sIHRydWUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9TVUIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSwgdm9pZCk+Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgICAgc3RhdGljIGRlY2x0eXBlKCBuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8RnVuPigpLk5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSgpKQotICAgICAgICAgICAgICAgICAgVGVzdChGdW4qKTsKLQotICAgICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgICAgICAgIHN0YXRpYyBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlIFRlc3QoLi4uKTsKLQotICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YoVGVzdDxGdW4+KDApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Onllc190eXBlKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfVkVSIDwgMTYwMCkKLQotICAgICAgI2Vsc2UgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGJvb2wgSGFzRnVuYywgY2xhc3MgLi4uQXJncz4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLF9pbXBsKTsKLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuLCBjbGFzcyAuLi5BcmdzPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICA8RnVuLCBmYWxzZSwgQXJncy4uLj4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Ci0gICAgICAgICB9OwotCi0gICAgICAgICAvL1NwZWNpYWwgY2FzZSBmb3IgMCBhcmdzCi0gICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRgotICAgICAgICAgICAgICAgLCBzdGQ6OnNpemVfdCBOID0KLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZigobmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkZWNsdmFsPEY+KCkuCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICgpLCAwKSk+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSBkdW1teTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKShpbnQpOwotICAgICAgICAgfTsKLQotICAgICAgICAgLy9Gb3IgYnVnZ3kgY29tcGlsZXJzIGxpa2UgTVNWQyA3LjErICgoRiopMCktPmZ1bmMoKSBkb2VzIG5vdAotICAgICAgICAgLy9TRklOQUUtb3V0IHRoZSB6ZXJvYXJnX2NoZWNrZXJfIGluc3RhbnRpYXRpb24gYnV0IHNpemVvZiB5aWVsZHMgdG8gMC4KLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEY+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPEYsIDA+Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlIGR1bW15OwotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpKGludCk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIHRydWU+Ci0gICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1BQX0NBVCh6ZXJvYXJnX2NoZWNrZXJfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgICAgPFU+IFRlc3QoTkROQk9PU1RfUFBfQ0FUKHplcm9hcmdfY2hlY2tlcl8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPFU+Kik7Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgICAgICAgc3RhdGljIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6Om5vX3R5cGUgVGVzdCguLi4pOwotCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihUZXN0PCBGdW4gPigwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjp5ZXNfdHlwZSk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGNsYXNzIC4uLkRvbnRDYXJlcz4KLSAgICAgICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoIGZ1bndyYXBfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICkKLSAgICAgICAgICAgIDogRnVuCi0gICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoIGZ1bndyYXBfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICkoKTsKLSAgICAgICAgICAgIHVzaW5nIEZ1bjo6TkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRTsKLQotICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6cHJpdmF0ZV90eXBlCi0gICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FCi0gICAgICAgICAgICAgICAgICAoIERvbnRDYXJlcy4uLikgIGNvbnN0OwotICAgICAgICAgfTsKLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuLCBjbGFzcyAuLi5BcmdzPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfQ0FUKGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpLCBfaW1wbCkKLSAgICAgICAgICAgIDxGdW4sIHRydWUgLCBBcmdzLi4uPgotICAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICAgICAgICAgIHN0cnVjdCBtYWtlX2RvbnRjYXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6OmRvbnRfY2FyZSB0eXBlOwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoIGZ1bndyYXBfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICkKLSAgICAgICAgICAgICAgIDxGdW4sIHR5cGVuYW1lIG1ha2VfZG9udGNhcmU8QXJncz46OnR5cGUuLi4+IEZ1bldyYXA7Ci0KLSAgICAgICAgICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0gKHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjpub190eXBlKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6OmlzX3ByaXZhdGVfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8IEZ1bldyYXAgPigpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGVjbHZhbDxBcmdzPigpLi4uICksIDApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW4sIGNsYXNzIC4uLkFyZ3M+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKCBoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgOiBwdWJsaWMgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSxfaW1wbCkKLSAgICAgICAgICAgICAgIDwgRnVuCi0gICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVCggaGFzX21lbWJlcl9mdW5jdGlvbl9uYW1lZF8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FICk8RnVuPjo6dmFsdWUKLSAgICAgICAgICAgICAgICwgQXJncy4uLiA+Ci0gICAgICAgICB7fTsKLQotICAgICAgI2VuZGlmICAgLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX1BFUkZFQ1RfRk9SV0FSRElORykKLQotICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQKLQotICAgI2Vsc2UgICAvL05ETkJPT1NUX1BQX0lURVJBVElPTigpID09IDAKLQotICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcpCi0KLSAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4KLQotICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfQ0FUKGZ1bndyYXAsIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoXywgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSkpCi0gICAgICAgICAgICA6IEZ1bgotICAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoZnVud3JhcCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSkoKTsKLQotICAgICAgICAgICAgdXNpbmcgRnVuOjpORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FOwotICAgICAgICAgICAgbmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6cHJpdmF0ZV90eXBlCi0gICAgICAgICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FCi0gICAgICAgICAgICAgICAgICAoIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkKLSAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZCi0gICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0X2ludHJ1c2l2ZV9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGg6OmRvbnRfY2FyZSkpICBjb25zdDsKLSAgICAgICAgIH07Ci0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1biBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgY2xhc3MgUCk+Ci0gICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSksX2ltcGwpCi0gICAgICAgICAgICA8RnVuLCB0cnVlCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgUCkKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcoIE5ETkJPT1NUX1BQX1NVQihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB2b2lkKT4KLSAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9QUF9DQVQoZnVud3JhcCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSk8RnVuPgotICAgICAgICAgICAgICAgICAgICAgRnVuV3JhcDsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0KLSAgICAgICAgICAgIChzaXplb2YobmRuYm9vc3RfaW50cnVzaXZlX2hhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aDo6bm9fdHlwZSkgPT0KLSAgICAgICAgICAgICAgIHNpemVvZihuZG5ib29zdF9pbnRydXNpdmVfaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoOjppc19wcml2YXRlX3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICggIChuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRlY2x2YWw8RnVuV3JhcD4oKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTkROQk9PU1RfUFBfRU5VTSggTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9ERUNMVkFMLCBfKSApLCAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApOwotICAgICAgICAgfTsKLQotICAgICAgICAgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQKLSAgICAgICNlbmRpZiAgIC8vI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcpCi0KLSAgICNlbmRpZiAgIC8vTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gMAotCi0gICAjaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpCi0KLSAgICAgICNpZiAhZGVmaW5lZChORE5CT09TVF9JTlRSVVNJVkVfUEVSRkVDVF9GT1JXQVJESU5HKQotCi0gICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOCi0KLSAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bgotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9URU1QTEFURV9QQVJBTV9WT0lEX0RFRkFVTFQsIF8pPgotICAgICAgICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKQotICAgICAgICAgICAgOiBwdWJsaWMgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfLCBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FKSwgX2ltcGwpCi0gICAgICAgICAgICAgICA8RnVuLCBORE5CT09TVF9QUF9DQVQoaGFzX21lbWJlcl9mdW5jdGlvbl9uYW1lZF8sIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUpPEZ1bj46OnZhbHVlCi0gICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIKCksIFApID4KLSAgICAgICAgIHt9OwotCi0gICAgICAgICBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORAotCi0gICAgICAjZW5kaWYgLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfSU5UUlVTSVZFX1BFUkZFQ1RfRk9SV0FSRElORykKLQotICAgICAgI3VuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUKLSAgICAgICN1bmRlZiBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOCi0gICAgICAjdW5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQKLQotICAgI2VuZGlmICAgLy8jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpCi0KLSNlbmRpZiAgIC8vIU5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21lbW9yeV91dGlsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9tZW1vcnlfdXRpbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkODhlZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21lbW9yeV91dGlsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IFBhYmxvIEhhbHBlcm4gMjAwOS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDExLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX0FMTE9DQVRPUl9NRU1PUllfVVRJTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0FMTE9DQVRPUl9NRU1PUllfVVRJTF9IUFAKLQotI2lmIChkZWZpbmVkIF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgaW50cnVzaXZlIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUKiBhZGRyZXNzb2YoVCYgb2JqKQotewotICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPgotICAgICAgKHN0YXRpY19jYXN0PHZvaWQqPgotICAgICAgICAgKGNvbnN0X2Nhc3Q8Y2hhcio+Ci0gICAgICAgICAgICAoJnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciY+KG9iaikpCi0gICAgICAgICApCi0gICAgICApOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHVudm9pZCB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHVudm9pZDx2b2lkPiB7IHN0cnVjdCB0eXBlIHsgfTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB1bnZvaWQ8Y29uc3Qgdm9pZD4geyBzdHJ1Y3QgdHlwZSB7IH07IH07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IExvd1ByaW9yaXR5Q29udmVyc2lvbgotewotICAgIC8vIENvbnZlcnRpYmxlIGZyb20gVCB3aXRoIHVzZXItZGVmaW5lZC1jb252ZXJzaW9uIHJhbmsuCi0gICAgTG93UHJpb3JpdHlDb252ZXJzaW9uKGNvbnN0IFQmKSB7IH0KLX07Ci0KLS8vIEluZnJhc3RydWN0dXJlIGZvciBwcm92aWRpbmcgYSBkZWZhdWx0IHR5cGUgZm9yIFQ6OlROQU1FIGlmIGFic2VudC4KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0lOU1RBTlRJQVRFX0RFRkFVTFRfVFlQRV9UTVBMVChUTkFNRSkgICAgICAgICAgICAgIFwKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWZhdWx0VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHN0cnVjdCBib29zdF9pbnRydXNpdmVfZGVmYXVsdF90eXBlXyAjIyBUTkFNRSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjpUTkFNRSopOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBpbnQgdGVzdChuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIExvd1ByaW9yaXR5Q29udmVyc2lvbjxpbnQ+LCB2b2lkKik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0cnVjdCBEZWZhdWx0V3JhcCB7IHR5cGVkZWYgRGVmYXVsdFR5cGUgVE5BTUU7IH07ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8VD4oMCwgMCkpKTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjppZl9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDx2YWx1ZSwgVCwgRGVmYXVsdFdyYXA+Ojp0eXBlOjpUTkFNRSB0eXBlOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWZhdWx0VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHN0cnVjdCBib29zdF9pbnRydXNpdmVfZXZhbF9kZWZhdWx0X3R5cGVfICMjIFROQU1FICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjpUTkFNRSopOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBpbnQgdGVzdChuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIExvd1ByaW9yaXR5Q29udmVyc2lvbjxpbnQ+LCB2b2lkKik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0cnVjdCBEZWZhdWx0V3JhcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHsgdHlwZWRlZiB0eXBlbmFtZSBEZWZhdWx0VHlwZTo6dHlwZSBUTkFNRTsgfTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8VD4oMCwgMCkpKTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpldmFsX2lmX2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDwgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmlkZW50aXR5PFQ+ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICwgOjpuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmlkZW50aXR5PERlZmF1bHRXcmFwPiAgICAgICAgICAgIFwKLSAgICAgICAgICAgID46OnR5cGU6OlROQU1FIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX09CVEFJTl9UWVBFX1dJVEhfREVGQVVMVChJTlNUQU5USUFUSU9OX05TX1BSRUZJWCwgVCwgVE5BTUUsIFRJTVBMKSAgIFwKLSAgICAgIHR5cGVuYW1lIElOU1RBTlRJQVRJT05fTlNfUFJFRklYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGJvb3N0X2ludHJ1c2l2ZV9kZWZhdWx0X3R5cGVfICMjIFROQU1FPCBULCBUSU1QTCA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX09CVEFJTl9UWVBFX1dJVEhfRVZBTF9ERUZBVUxUKElOU1RBTlRJQVRJT05fTlNfUFJFRklYLCBULCBUTkFNRSwgVElNUEwpIFwKLSAgICAgIHR5cGVuYW1lIElOU1RBTlRJQVRJT05fTlNfUFJFRklYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGJvb3N0X2ludHJ1c2l2ZV9ldmFsX2RlZmF1bHRfdHlwZV8gIyMgVE5BTUU8IFQsIFRJTVBMID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vCi0KLX19fSAgIC8vbmFtZXNwYWNlIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfRlVOQ05BTUUgcG9pbnRlcl90bwotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpbnRydXNpdmUgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQgICB9fX0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgMSwgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSBzdGF0aWNfY2FzdF9mcm9tCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9IQVNfTUVNQkVSX0ZVTkNUSU9OX0NBTExBQkxFX1dJVEhfTlNfQkVHSU4gbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGludHJ1c2l2ZSB7IG5hbWVzcGFjZSBkZXRhaWwgewotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0VORCAgIH19fQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCAxLCA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9oYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGguaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX0ZVTkNOQU1FIGNvbnN0X2Nhc3RfZnJvbQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpbnRydXNpdmUgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQgICB9fX0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgMSwgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9GVU5DTkFNRSBkeW5hbWljX2Nhc3RfZnJvbQotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfSEFTX01FTUJFUl9GVU5DVElPTl9DQUxMQUJMRV9XSVRIX05TX0JFR0lOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpbnRydXNpdmUgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0hBU19NRU1CRVJfRlVOQ1RJT05fQ0FMTEFCTEVfV0lUSF9OU19FTkQgICB9fX0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCAoMCwgMSwgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgaW50cnVzaXZlIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi1ORE5CT09TVF9JTlRSVVNJVkVfSU5TVEFOVElBVEVfREVGQVVMVF9UWVBFX1RNUExUKGVsZW1lbnRfdHlwZSkKLU5ETkJPT1NUX0lOVFJVU0lWRV9JTlNUQU5USUFURV9ERUZBVUxUX1RZUEVfVE1QTFQoZGlmZmVyZW5jZV90eXBlKQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vL3N0cnVjdCBmaXJzdF9wYXJhbQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGZpcnN0X3BhcmFtCi17ICB0eXBlZGVmIHZvaWQgdHlwZTsgICB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0gICB0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZS4uLj4gY2xhc3MgVGVtcGxhdGVDbGFzcywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgIHN0cnVjdCBmaXJzdF9wYXJhbTwgVGVtcGxhdGVDbGFzczxULCBBcmdzLi4uPiA+Ci0gICB7Ci0gICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgIH07Ci0KLSNlbHNlIC8vQysrMDMgY29tcGlsZXJzCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHRlbXBsYXRlIDwgdGVtcGxhdGUgPHR5cGVuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcobiwgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0lERU5USVRZLCB0eXBlbmFtZSkgPiAgIFwKLSAgICAgICAgICAgIGNsYXNzIFRlbXBsYXRlQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4gICAgICAgICAgICAgICAgIFwKLSAgIHN0cnVjdCBmaXJzdF9wYXJhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIDwgVGVtcGxhdGVDbGFzczxUIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIFApPiA+ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHR5cGVkZWYgVCB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIC8vCi0gICAjZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyAoMCwgTkROQk9PU1RfSU5UUlVTSVZFX01BWF9DT05TVFJVQ1RPUl9QQVJBTUVURVJTKQotICAgI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLSNlbmRpZiAgIC8vIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vc3RydWN0IHR5cGVfcmViaW5kX21vZGUKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVD4KLXN0cnVjdCB0eXBlX2hhc19yZWJpbmQKLXsKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPgotICAgI2lmICFkZWZpbmVkIChfX1NVTlBST19DQykKLSAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjp0ZW1wbGF0ZSByZWJpbmQ8VD4qKTsKLSAgICNlbHNlCi0gICBzdGF0aWMgY2hhciB0ZXN0KGludCwgdHlwZW5hbWUgWDo6cmViaW5kPFQ+Kik7Ci0gICAjZW5kaWYKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+Ci0gICBzdGF0aWMgaW50IHRlc3QobmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpMb3dQcmlvcml0eUNvbnZlcnNpb248aW50Piwgdm9pZCopOwotCi0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICgxID09IHNpemVvZih0ZXN0PFB0cj4oMCwgMCkpKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHIsIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdHlwZV9oYXNfcmViaW5kX290aGVyCi17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KLSAgICNpZiAhZGVmaW5lZCAoX19TVU5QUk9fQ0MpCi0gICBzdGF0aWMgY2hhciB0ZXN0KGludCwgdHlwZW5hbWUgWDo6dGVtcGxhdGUgcmViaW5kPFQ+OjpvdGhlciopOwotICAgI2Vsc2UKLSAgIHN0YXRpYyBjaGFyIHRlc3QoaW50LCB0eXBlbmFtZSBYOjpyZWJpbmQ8VD46Om90aGVyKik7Ci0gICAjZW5kaWYKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+Ci0gICBzdGF0aWMgaW50IHRlc3QobmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjpMb3dQcmlvcml0eUNvbnZlcnNpb248aW50Piwgdm9pZCopOwotCi0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICgxID09IHNpemVvZih0ZXN0PFB0cj4oMCwgMCkpKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHIsIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRfbW9kZQotewotICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZWJpbmQgPSAgICAgICAodW5zaWduZWQgaW50KXR5cGVfaGFzX3JlYmluZDxQdHIsIFQ+Ojp2YWx1ZTsKLSAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmViaW5kX290aGVyID0gKHVuc2lnbmVkIGludCl0eXBlX2hhc19yZWJpbmRfb3RoZXI8UHRyLCBUPjo6dmFsdWU7Ci0gICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1vZGUgPSAgICAgICAgIHJlYmluZCArIHJlYmluZCpyZWJpbmRfb3RoZXI7Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vc3RydWN0IHR5cGVfcmViaW5kZXIKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVSwgdW5zaWduZWQgaW50IFJlYmluZE1vZGUgPSB0eXBlX3JlYmluZF9tb2RlPFB0ciwgVT46Om1vZGU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgcG9pbnRlcl90cmFpdHM8UHRyPjo6cmViaW5kIGlmIFB0ciBoYXMKLS8vIGl0cyBvd24gcmViaW5kOjpvdGhlciB0eXBlIChDKyswMykKLXRlbXBsYXRlIDx0eXBlbmFtZSBQdHIsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjwgUHRyLCBVLCAydSA+Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFB0cjo6dGVtcGxhdGUgcmViaW5kPFU+OjpvdGhlciB0eXBlOwotfTsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgcG9pbnRlcl90cmFpdHM8UHRyPjo6cmViaW5kIGlmIFB0ciBoYXMKLS8vIGl0cyBvd24gcmViaW5kIHRlbXBsYXRlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFB0ciwgdHlwZW5hbWUgVT4KLXN0cnVjdCB0eXBlX3JlYmluZGVyPCBQdHIsIFUsIDF1ID4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUHRyOjp0ZW1wbGF0ZSByZWJpbmQ8VT4gdHlwZTsKLX07Ci0KLS8vIFNwZWNpYWxpemF0aW9uIG9mIHBvaW50ZXJfdHJhaXRzPFB0cj46OnJlYmluZCBpZiBQdHIgZG9lcyBub3QKLS8vIGhhdmUgaXRzIG93biByZWJpbmQgdGVtcGxhdGUgYnV0IGhhcyBhIHRoZSBmb3JtIFB0cjxjbGFzcyBULAotLy8gT3RoZXJBcmdzPiwgd2hlcmUgT3RoZXJBcmdzIGNvbXByaXNlcyB6ZXJvIG9yIG1vcmUgdHlwZSBwYXJhbWV0ZXJzLgotLy8gTWFueSBwb2ludGVycyBmaXQgdGhpcyBmb3JtLCBoZW5jZSBtYW55IHBvaW50ZXJzIHdpbGwgZ2V0IGEKLS8vIHJlYXNvbmFibGUgZGVmYXVsdCBmb3IgcmViaW5kLgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotdGVtcGxhdGUgPHRlbXBsYXRlIDxjbGFzcywgY2xhc3MuLi4+IGNsYXNzIFB0ciwgdHlwZW5hbWUgVCwgY2xhc3MuLi4gVG4sIGNsYXNzIFU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjxQdHI8VCwgVG4uLi4+LCBVLCAwdSA+Ci17Ci0gICB0eXBlZGVmIFB0cjxVLCBUbi4uLj4gdHlwZTsKLX07Ci0KLS8vTmVlZGVkIGZvciBub24tY29uZm9ybWluZyBjb21waWxlcnMgbGlrZSBHQ0MgNC4zCi10ZW1wbGF0ZSA8dGVtcGxhdGUgPGNsYXNzPiBjbGFzcyBQdHIsIHR5cGVuYW1lIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgdHlwZV9yZWJpbmRlcjxQdHI8VD4sIFUsIDB1ID4KLXsKLSAgIHR5cGVkZWYgUHRyPFU+IHR5cGU7Ci19OwotCi0jZWxzZSAvL0MrKzAzIGNvbXBpbGVycwotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8IHRlbXBsYXRlIDx0eXBlbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKG4sIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSwgdHlwZW5hbWUpID4gICBcCi0gICAgICAgICAgIGNsYXNzIFB0ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsIHR5cGVuYW1lIFQgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCkgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsIGNsYXNzIFU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdHlwZV9yZWJpbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICA8IFB0cjxUIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIFApPiwgVSwgMHUgPiAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICB0eXBlZGVmIFB0cjxVIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIFApPiB0eXBlOyAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vLwotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDAsIE5ETkJPT1NUX0lOVFJVU0lWRV9NQVhfQ09OU1RSVUNUT1JfUEFSQU1FVEVSUykKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotCi0jZW5kaWYgICAvLyFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotfSAgLy9uYW1lc3BhY2UgZGV0YWlsIHsKLX0gIC8vbmFtZXNwYWNlIGludHJ1c2l2ZSB7Ci19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8gISBkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9BTExPQ0FUT1JfTUVNT1JZX1VUSUxfSFBQKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZlMzQwYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4MyArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAgMjAwNi0yMDEyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gICAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gICAgICAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfTVBMX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX01QTF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGludHJ1c2l2ZSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdHlwZWRlZiBjaGFyIG9uZTsKLXN0cnVjdCB0d28ge29uZSBfWzJdO307Ci0KLXRlbXBsYXRlPCBib29sIENfID4KLXN0cnVjdCBib29sXwotewotICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBDXzsKLX07Ci0KLXR5cGVkZWYgYm9vbF88dHJ1ZT4gICAgICAgIHRydWVfOwotdHlwZWRlZiBib29sXzxmYWxzZT4gICAgICAgZmFsc2VfOwotCi10eXBlZGVmIHRydWVfICB0cnVlX3R5cGU7Ci10eXBlZGVmIGZhbHNlXyBmYWxzZV90eXBlOwotCi10eXBlZGVmIGNoYXIgeWVzX3R5cGU7Ci1zdHJ1Y3Qgbm9fdHlwZQotewotICAgY2hhciBwYWRkaW5nWzhdOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgQiwgY2xhc3MgVCA9IHZvaWQ+Ci1zdHJ1Y3QgZW5hYmxlX2lmX2MgewotICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGVuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSB2b2lkPgotc3RydWN0IGVuYWJsZV9pZiA6IHB1YmxpYyBlbmFibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD57fTsKLQotdGVtcGxhdGU8Y2xhc3MgRiwgY2xhc3MgUGFyYW0+Ci1zdHJ1Y3QgYXBwbHkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8UGFyYW0+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLWNsYXNzIGlzX2NvbnZlcnRpYmxlCi17Ci0gICB0eXBlZGVmIGNoYXIgdHJ1ZV90OwotICAgY2xhc3MgZmFsc2VfdCB7IGNoYXIgZHVtbXlbMl07IH07Ci0gICBzdGF0aWMgdHJ1ZV90IGRpc3BhdGNoKFUpOwotICAgc3RhdGljIGZhbHNlX3QgZGlzcGF0Y2goLi4uKTsKLSAgIHN0YXRpYyBjb25zdCBUICZ0cmlnZ2VyKCk7Ci0gICBwdWJsaWM6Ci0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihkaXNwYXRjaCh0cmlnZ2VyKCkpKSA9PSBzaXplb2YodHJ1ZV90KTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYwotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGlmX2M8ZmFsc2UsVDEsVDI+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBDCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGlmX2M8MCAhPSBDOjp2YWx1ZSwgVDEsIFQyPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMKLSAgICAsIHR5cGVuYW1lIEYxCi0gICAgLCB0eXBlbmFtZSBGMgotICAgID4KLXN0cnVjdCBldmFsX2lmX2MKLSAgICA6IGlmX2M8QyxGMSxGMj46OnR5cGUKLXt9OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEMKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBldmFsX2lmCi0gICAgOiBpZl88QyxUMSxUMj46OnR5cGUKLXt9OwotCi0vLyBpZGVudGl0eSBpcyBhbiBleHRlbnNpb246IGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBzdGFuZGFyZC4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlkZW50aXR5Ci17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IGRlZmluZWQoX19CT1JMQU5EQ18pCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9ERUNMIF9fY2RlY2wKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9ERUNMCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRfXykgJiYgIWRlZmluZWQoX1dJTjY0KSAmJiAhZGVmaW5lZChVTkRFUl9DRSkKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsCi17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi0vLyBzZWUgYm9vc3QgdGlja2V0ICM0MDk0Ci0vLyBhdm9pZCBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGwKLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSICgqKSgpPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoKikoLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9URVNUX01TQ19GVU5DX1NJR1MKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19zdGRjYWxsKikoKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNpZm5kZWYgX01BTkFHRUQKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19mYXN0Y2FsbCopKCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19jZGVjbCopKCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2NkZWNsKikoLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi0vLyBzZWUgYm9vc3QgdGlja2V0ICM0MDk0Ci0vLyBhdm9pZCBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGwKLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoKikoVDApPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKCopKFQwLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX0lOVFJVU0lWRV9UVF9URVNUX01TQ19GVU5DX1NJR1MKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fc3RkY2FsbCopKFQwKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNpZm5kZWYgX01BTkFHRUQKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fZmFzdGNhbGwqKShUMCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fY2RlY2wqKShUMCk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19jZGVjbCopKFQwLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi0vLyBzZWUgYm9vc3QgdGlja2V0ICM0MDk0Ci0vLyBhdm9pZCBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGwKLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1RUX1RFU1RfTVNDX0ZVTkNfU0lHUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKCopKFQwLCBUMSk+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKCopKFQwLCBUMS4uLik+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7ICB9OwotCi0jZWxzZSAvLyBORE5CT09TVF9JTlRSVVNJVkVfVFRfVEVTVF9NU0NfRlVOQ19TSUdTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCBjbGFzcyBUMCwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8UiAoX19zdGRjYWxsKikoVDAsIFQxKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNpZm5kZWYgX01BTkFHRUQKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwLCBjbGFzcyBUMT4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2Zhc3RjYWxsKikoVDAsIFQxKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgY2xhc3MgVDAsIGNsYXNzIFQxPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbl9pbXBsPFIgKF9fY2RlY2wqKShUMCwgVDEpPgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyAgfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIGNsYXNzIFQwLCBjbGFzcyBUMT4KLXN0cnVjdCBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxSIChfX2NkZWNsKikoVDAsIFQxLi4uKT4KLXsgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgIH07Ci0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfdW5hcnlfb3JfYmluYXJ5X2Z1bmN0aW9uX2ltcGw8VCY+Ci17ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3VuYXJ5X29yX2JpbmFyeV9mdW5jdGlvbgoteyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBpc191bmFyeV9vcl9iaW5hcnlfZnVuY3Rpb25faW1wbDxUPjo6dmFsdWU7ICAgfTsKLQotLy9uZG5ib29zdDo6YWxpZ25tZW50X29mIHlpZWxkcyB0byAxMEsgbGluZXMgb2YgcHJlcHJvY2Vzc2VkIGNvZGUsIHNvIHdlCi0vL25lZWQgYW4gYWx0ZXJuYXRpdmUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgYWxpZ25tZW50X29mOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhbGlnbm1lbnRfb2ZfaGFjawotewotICAgIGNoYXIgYzsKLSAgICBUIHQ7Ci0gICAgYWxpZ25tZW50X29mX2hhY2soKTsKLX07Ci0KLXRlbXBsYXRlIDx1bnNpZ25lZCBBLCB1bnNpZ25lZCBTPgotc3RydWN0IGFsaWdubWVudF9sb2dpYwotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gQSA8IFMgPyBBIDogUzsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBhbGlnbm1lbnRfb2YKLXsKLSAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCB2YWx1ZSA9IGFsaWdubWVudF9sb2dpYwotICAgICAgICAgICAgPCBzaXplb2YoYWxpZ25tZW50X29mX2hhY2s8VD4pIC0gc2l6ZW9mKFQpCi0gICAgICAgICAgICAsIHNpemVvZihUKQotICAgICAgICAgICAgPjo6dmFsdWU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0cnVjdCBpc19zYW1lCi17Ci0gICB0eXBlZGVmIGNoYXIgeWVzX3R5cGU7Ci0gICBzdHJ1Y3Qgbm9fdHlwZQotICAgewotICAgICAgY2hhciBwYWRkaW5nWzhdOwotICAgfTsKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci0gICBzdGF0aWMgeWVzX3R5cGUgaXNfc2FtZV90ZXN0ZXIoViosIFYqKTsKLSAgIHN0YXRpYyBub190eXBlIGlzX3NhbWVfdGVzdGVyKC4uLik7Ci0KLSAgIHN0YXRpYyBUICp0OwotICAgc3RhdGljIFUgKnU7Ci0KLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gc2l6ZW9mKHllc190eXBlKSA9PSBzaXplb2YoaXNfc2FtZV90ZXN0ZXIodCx1KSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9jb25zdAoteyAgdHlwZWRlZiBjb25zdCBUIHR5cGU7ICAgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY29uc3QKLXsgIHR5cGVkZWYgIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jb25zdDxjb25zdCBUPgoteyAgdHlwZWRlZiBUIHR5cGU7ICAgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY3YKLXsgIHR5cGVkZWYgIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jdjxjb25zdCBUPgoteyAgdHlwZWRlZiBUIHR5cGU7ICAgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY3Y8Y29uc3Qgdm9sYXRpbGUgVD4KLXsgIHR5cGVkZWYgVCB0eXBlOyAgIH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2N2PHZvbGF0aWxlIFQ+Ci17ICB0eXBlZGVmIFQgdHlwZTsgICB9OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlbW92ZV9yZWZlcmVuY2UKLXsKLSAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCByZW1vdmVfcmVmZXJlbmNlPFQmPgotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDbGFzcz4KLWNsYXNzIGlzX2VtcHR5X2NsYXNzCi17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgIHN0cnVjdCBlbXB0eV9oZWxwZXJfdDEgOiBwdWJsaWMgVAotICAgewotICAgICAgZW1wdHlfaGVscGVyX3QxKCk7Ci0gICAgICBpbnQgaVsyNTZdOwotICAgfTsKLQotICAgc3RydWN0IGVtcHR5X2hlbHBlcl90MgotICAgeyBpbnQgaVsyNTZdOyB9OwotCi0gICBwdWJsaWM6Ci0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihlbXB0eV9oZWxwZXJfdDE8Q2xhc3M+KSA9PSBzaXplb2YoZW1wdHlfaGVscGVyX3QyKTsKLX07Ci0KLXRlbXBsYXRlPHN0ZDo6c2l6ZV90IFM+Ci1zdHJ1Y3QgbHNfemVyb3MKLXsKLSAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCB2YWx1ZSA9IChTICYgc3RkOjpzaXplX3QoMSkpID8gMCA6ICgxICsgbHNfemVyb3M8KFM+PjF1KT46OnZhbHVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsc196ZXJvczwwPgotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gMDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsc196ZXJvczwxPgotewotICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gMDsKLX07Ci0KLX0gLy9uYW1lc3BhY2UgZGV0YWlsCi19IC8vbmFtZXNwYWNlIGludHJ1c2l2ZQotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9NUExfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvcHJlcHJvY2Vzc29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9wcmVwcm9jZXNzb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGY4YTM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9wcmVwcm9jZXNzb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMDgtMjAxMi4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2ludHJ1c2l2ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX1BSRVBST0NFU1NPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX0RFVEFJTF9QUkVQUk9DRVNTT1JfSFBQCi0KLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jICBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbl9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9NQVhfQ09OU1RSVUNUT1JfUEFSQU1FVEVSUyAxMAotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9JREVOVElUWSh6LCBuLCBkYXRhKSBkYXRhCi0KLSNkZWZpbmUgTkROQk9PU1RfSU5UUlVTSVZFX1BQX0RFQ0xWQUwoeiwgbiwgZGF0YSkgXAotbmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkZWNsdmFsPCBORE5CT09TVF9QUF9DQVQoUCwgbikgPigpIFwKLS8vIQotCi0jZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9QUF9URU1QTEFURV9QQVJBTV9WT0lEX0RFRkFVTFQoeiwgbiwgZGF0YSkgICBcCi0gIE5ETkJPT1NUX1BQX0NBVChjbGFzcyBQLCBuKSA9IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8vIQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX1BSRVBST0NFU1NPUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY3M2IxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwNS0yMDEyLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW50ZXJwcm9jZXNzIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfV1JLUk5EX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfREVUQUlMX1dSS1JORF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2ludHJ1c2l2ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAjZGVmaW5lIE5ETkJPT1NUX0lOVFJVU0lWRV9QRVJGRUNUX0ZPUldBUkRJTkcKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmICAgLy8jaWZuZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ERVRBSUxfV1JLUk5EX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvcG9pbnRlcl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pbnRydXNpdmUvcG9pbnRlcl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTAxZmY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW50cnVzaXZlL3BvaW50ZXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IFBhYmxvIEhhbHBlcm4gMjAwOS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDExLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pbnRydXNpdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU5UUlVTSVZFX1BPSU5URVJfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9JTlRSVVNJVkVfUE9JTlRFUl9UUkFJVFNfSFBQCi0KLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jICBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50cnVzaXZlL2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL21lbW9yeV91dGlsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBpbnRydXNpdmUgewotCi0vLyEgcG9pbnRlcl90cmFpdHMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEMrKzExIHN0ZDo6cG9pbnRlcl90cmFpdHMgY2xhc3Mgd2l0aCBzb21lCi0vLyEgZXh0ZW5zaW9ucyBsaWtlIGNhc3RpbmdzLgotLy8hCi0vLyEgcG9pbnRlcl90cmFpdHMgc3VwcGxpZXMgYSB1bmlmb3JtIGludGVyZmFjZSB0byBjZXJ0YWluIGF0dHJpYnV0ZXMgb2YgcG9pbnRlci1saWtlIHR5cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFB0cj4KLXN0cnVjdCBwb2ludGVyX3RyYWl0cwotewotICAgI2lmZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ET1hZR0VOX0lOVk9LRUQKLSAgICAgIC8vIVRoZSBwb2ludGVyIHR5cGUKLSAgICAgIC8vIXF1ZXJpZWQgYnkgdGhpcyBwb2ludGVyX3RyYWl0cyBpbnN0YW50aWF0aW9uCi0gICAgICB0eXBlZGVmIFB0ciAgICAgICAgICAgICBwb2ludGVyOwotCi0gICAgICAvLyFQdHI6OmVsZW1lbnRfdHlwZSBpZiBzdWNoIGEgdHlwZSBleGlzdHM7IG90aGVyd2lzZSwgVCBpZiBQdHIgaXMgYSBjbGFzcwotICAgICAgLy8hdGVtcGxhdGUgaW5zdGFudGlhdGlvbiBvZiB0aGUgZm9ybSBTb21lUG9pbnRlcjxULCBBcmdzPiwgd2hlcmUgQXJncyBpcyB6ZXJvIG9yCi0gICAgICAvLyFtb3JlIHR5cGUgYXJndW1lbnRzIDsgb3RoZXJ3aXNlICwgdGhlIHNwZWNpYWxpemF0aW9uIGlzIGlsbC1mb3JtZWQuCi0gICAgICB0eXBlZGVmIHVuc3BlY2lmaWVkX3R5cGUgZWxlbWVudF90eXBlOwotCi0gICAgICAvLyFQdHI6OmRpZmZlcmVuY2VfdHlwZSBpZiBzdWNoIGEgdHlwZSBleGlzdHM7IG90aGVyd2lzZSwKLSAgICAgIC8vIXN0ZDo6cHRyZGlmZl90LgotICAgICAgdHlwZWRlZiB1bnNwZWNpZmllZF90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgLy8hUHRyOjpyZWJpbmQ8VT4gaWYgc3VjaCBhIHR5cGUgZXhpc3RzOyBvdGhlcndpc2UsIFNvbWVQb2ludGVyPFUsIEFyZ3M+IGlmIFB0ciBpcwotICAgICAgLy8hYSBjbGFzcyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBmb3JtIFNvbWVQb2ludGVyPFQsIEFyZ3M+LCB3aGVyZSBBcmdzIGlzIHplcm8gb3IKLSAgICAgIC8vIW1vcmUgdHlwZSBhcmd1bWVudHMgOyBvdGhlcndpc2UsIHRoZSBpbnN0YW50aWF0aW9uIG9mIHJlYmluZCBpcyBpbGwtZm9ybWVkLgotICAgICAgLy8hCi0gICAgICAvLyFGb3IgcG9ydGFibGUgY29kZSBmb3IgQysrMDMgYW5kIEMrKzExLCA8cHJlPnR5cGVuYW1lIHJlYmluZF9wb2ludGVyPFU+Ojp0eXBlPC9wcmU+Ci0gICAgICAvLyFzaGFsbCBiZSB1c2VkIGluc3RlYWQgb2YgcmViaW5kPFU+IHRvIG9idGFpbiBhIHBvaW50ZXIgdG8gVS4KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiB1c2luZyByZWJpbmQgPSB1bnNwZWNpZmllZDsKLQotICAgICAgLy8hUHRyOjpyZWJpbmQ8VT4gaWYgc3VjaCBhIHR5cGUgZXhpc3RzOyBvdGhlcndpc2UsIFNvbWVQb2ludGVyPFUsIEFyZ3M+IGlmIFB0ciBpcwotICAgICAgLy8hYSBjbGFzcyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIG9mIHRoZSBmb3JtIFNvbWVQb2ludGVyPFQsIEFyZ3M+LCB3aGVyZSBBcmdzIGlzIHplcm8gb3IKLSAgICAgIC8vIW1vcmUgdHlwZSBhcmd1bWVudHMgOyBvdGhlcndpc2UsIHRoZSBpbnN0YW50aWF0aW9uIG9mIHJlYmluZCBpcyBpbGwtZm9ybWVkLgotICAgICAgLy8hCi0gICAgICB0eXBlZGVmIGVsZW1lbnRfdHlwZSAmcmVmZXJlbmNlOwotICAgI2Vsc2UKLSAgICAgIHR5cGVkZWYgUHRyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICAgICAvLwotICAgICAgdHlwZWRlZiBORE5CT09TVF9JTlRSVVNJVkVfT0JUQUlOX1RZUEVfV0lUSF9FVkFMX0RFRkFVTFQKLSAgICAgICAgICggbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjosIFB0ciwgZWxlbWVudF90eXBlCi0gICAgICAgICAsIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6Zmlyc3RfcGFyYW08UHRyPikgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3R5cGU7Ci0gICAgICAvLwotICAgICAgdHlwZWRlZiBORE5CT09TVF9JTlRSVVNJVkVfT0JUQUlOX1RZUEVfV0lUSF9ERUZBVUxUCi0gICAgICAgICAobmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjosIFB0ciwgZGlmZmVyZW5jZV90eXBlLCBzdGQ6OnB0cmRpZmZfdCkgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAvLwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnVudm9pZDxlbGVtZW50X3R5cGU+Ojp0eXBlJiAgcmVmZXJlbmNlOwotICAgICAgLy8KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgcmViaW5kX3BvaW50ZXIKLSAgICAgIHsKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjp0eXBlX3JlYmluZGVyPFB0ciwgVT46OnR5cGUgIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUykKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiB1c2luZyByZWJpbmQgPSB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnR5cGVfcmViaW5kZXI8UHRyLCBVPjo6dHlwZTsKLSAgICAgICNlbmRpZgotICAgI2VuZGlmICAgLy8jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVEVNUExBVEVfQUxJQVNFUykKLQotICAgLy8hIDxiPlJlbWFyazwvYj46IElmIGVsZW1lbnRfdHlwZSBpcyAocG9zc2libHkgY3YtcXVhbGlmaWVkKSB2b2lkLCByIHR5cGUgaXMgdW5zcGVjaWZpZWQ7IG90aGVyd2lzZSwKLSAgIC8vISAgIGl0IGlzIGVsZW1lbnRfdHlwZSAmLgotICAgLy8hCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IEEgZGVyZWZlcmVuY2VhYmxlIHBvaW50ZXIgdG8gciBvYnRhaW5lZCBieSBjYWxsaW5nIFB0cjo6cG9pbnRlcl90byhyKS4KLSAgIC8vISAgIE5vbi1zdGFuZGFyZCBleHRlbnNpb246IElmIHN1Y2ggZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QsIHJldHVybnMgcG9pbnRlcihhZGRyZXNzb2YocikpOwotICAgc3RhdGljIHBvaW50ZXIgcG9pbnRlcl90byhyZWZlcmVuY2UgcikKLSAgIHsKLSAgICAgIC8vTm9uLXN0YW5kYXJkIGV4dGVuc2lvbiwgaXQgZG9lcyBub3QgcmVxdWlyZSBQdHI6OnBvaW50ZXJfdG8uIElmIG5vdCBwcmVzZW50Ci0gICAgICAvL3RyaWVzIHRvIGNvbnZlcnRzICZyIHRvIHBvaW50ZXIuCi0gICAgICBjb25zdCBib29sIHZhbHVlID0gbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjoKLSAgICAgICAgIGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF9wb2ludGVyX3RvCi0gICAgICAgICAgICA8UHRyLCB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnVudm9pZDxlbGVtZW50X3R5cGUgJj46OnR5cGU+Ojp2YWx1ZTsKLSAgICAgIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHZhbHVlPiBmbGFnOwotICAgICAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzOjpwcml2X3BvaW50ZXJfdG8oZmxhZywgcik7Ci0gICB9Ci0KLSAgIC8vISA8Yj5SZW1hcms8L2I+OiBOb24tc3RhbmRhcmQgZXh0ZW5zaW9uLgotICAgLy8hCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IEEgZGVyZWZlcmVuY2VhYmxlIHBvaW50ZXIgdG8gciBvYnRhaW5lZCBieSBjYWxsaW5nIFB0cjo6c3RhdGljX2Nhc3RfZnJvbShyKS4KLSAgIC8vISAgIElmIHN1Y2ggZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QsIHJldHVybnMgcG9pbnRlcl90byhzdGF0aWNfY2FzdDxlbGVtZW50X3R5cGUmPigqdXB0cikpCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgc3RhdGljX2Nhc3RfZnJvbShjb25zdCBVUHRyICZ1cHRyKQotICAgewotICAgICAgY29uc3QgYm9vbCB2YWx1ZSA9IG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6Ci0gICAgICAgICBoYXNfbWVtYmVyX2Z1bmN0aW9uX2NhbGxhYmxlX3dpdGhfc3RhdGljX2Nhc3RfZnJvbQotICAgICAgICAgICAgPFB0ciwgY29uc3QgVVB0cj46OnZhbHVlOwotICAgICAgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdmFsdWU+IGZsYWc7Ci0gICAgICByZXR1cm4gcG9pbnRlcl90cmFpdHM6OnByaXZfc3RhdGljX2Nhc3RfZnJvbShmbGFnLCB1cHRyKTsKLSAgIH0KLQotICAgLy8hIDxiPlJlbWFyazwvYj46IE5vbi1zdGFuZGFyZCBleHRlbnNpb24uCi0gICAvLyEKLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogQSBkZXJlZmVyZW5jZWFibGUgcG9pbnRlciB0byByIG9idGFpbmVkIGJ5IGNhbGxpbmcgUHRyOjpjb25zdF9jYXN0X2Zyb20ocikuCi0gICAvLyEgICBJZiBzdWNoIGZ1bmN0aW9uIGRvZXMgbm90IGV4aXN0LCByZXR1cm5zIHBvaW50ZXJfdG8oY29uc3RfY2FzdDxlbGVtZW50X3R5cGUmPigqdXB0cikpCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgY29uc3RfY2FzdF9mcm9tKGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7Ci0gICAgICBjb25zdCBib29sIHZhbHVlID0gbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjoKLSAgICAgICAgIGhhc19tZW1iZXJfZnVuY3Rpb25fY2FsbGFibGVfd2l0aF9jb25zdF9jYXN0X2Zyb20KLSAgICAgICAgICAgIDxQdHIsIGNvbnN0IFVQdHI+Ojp2YWx1ZTsKLSAgICAgIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHZhbHVlPiBmbGFnOwotICAgICAgcmV0dXJuIHBvaW50ZXJfdHJhaXRzOjpwcml2X2NvbnN0X2Nhc3RfZnJvbShmbGFnLCB1cHRyKTsKLSAgIH0KLQotICAgLy8hIDxiPlJlbWFyazwvYj46IE5vbi1zdGFuZGFyZCBleHRlbnNpb24uCi0gICAvLyEKLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogQSBkZXJlZmVyZW5jZWFibGUgcG9pbnRlciB0byByIG9idGFpbmVkIGJ5IGNhbGxpbmcgUHRyOjpkeW5hbWljX2Nhc3RfZnJvbShyKS4KLSAgIC8vISAgIElmIHN1Y2ggZnVuY3Rpb24gZG9lcyBub3QgZXhpc3QsIHJldHVybnMgcG9pbnRlcl90bygqZHluYW1pY19jYXN0PGVsZW1lbnRfdHlwZSo+KCYqdXB0cikpCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgZHluYW1pY19jYXN0X2Zyb20oY29uc3QgVVB0ciAmdXB0cikKLSAgIHsKLSAgICAgIGNvbnN0IGJvb2wgdmFsdWUgPSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OgotICAgICAgICAgaGFzX21lbWJlcl9mdW5jdGlvbl9jYWxsYWJsZV93aXRoX2R5bmFtaWNfY2FzdF9mcm9tCi0gICAgICAgICAgICA8UHRyLCBjb25zdCBVUHRyPjo6dmFsdWU7Ci0gICAgICA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB2YWx1ZT4gZmxhZzsKLSAgICAgIHJldHVybiBwb2ludGVyX3RyYWl0czo6cHJpdl9keW5hbWljX2Nhc3RfZnJvbShmbGFnLCB1cHRyKTsKLSAgIH0KLQotICAgLy8vQGNvbmQKLSAgIHByaXZhdGU6Ci0gICAvL3ByaXZfdG9fcmF3X3BvaW50ZXIKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RhdGljIFQqIHRvX3Jhd19wb2ludGVyKFQqIHApCi0gICB7ICByZXR1cm4gcDsgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUG9pbnRlcj4KLSAgIHN0YXRpYyB0eXBlbmFtZSBwb2ludGVyX3RyYWl0czxQb2ludGVyPjo6ZWxlbWVudF90eXBlKgotICAgICAgdG9fcmF3X3BvaW50ZXIoY29uc3QgUG9pbnRlciAmcCkKLSAgIHsgIHJldHVybiBwb2ludGVyX3RyYWl0czo6dG9fcmF3X3BvaW50ZXIocC5vcGVyYXRvci0+KCkpOyAgfQotCi0gICAvL3ByaXZfcG9pbnRlcl90bwotICAgc3RhdGljIHBvaW50ZXIgcHJpdl9wb2ludGVyX3RvKG5kbmJvb3N0Ojp0cnVlX3R5cGUsIHR5cGVuYW1lIG5kbmJvb3N0OjppbnRydXNpdmU6OmRldGFpbDo6dW52b2lkPGVsZW1lbnRfdHlwZT46OnR5cGUmIHIpCi0gICAgICB7IHJldHVybiBQdHI6OnBvaW50ZXJfdG8ocik7IH0KLQotICAgc3RhdGljIHBvaW50ZXIgcHJpdl9wb2ludGVyX3RvKG5kbmJvb3N0OjpmYWxzZV90eXBlLCB0eXBlbmFtZSBuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OnVudm9pZDxlbGVtZW50X3R5cGU+Ojp0eXBlJiByKQotICAgICAgeyByZXR1cm4gcG9pbnRlcihuZG5ib29zdDo6aW50cnVzaXZlOjpkZXRhaWw6OmFkZHJlc3NvZihyKSk7IH0KLQotICAgLy9wcml2X3N0YXRpY19jYXN0X2Zyb20KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X3N0YXRpY19jYXN0X2Zyb20obmRuYm9vc3Q6OnRydWVfdHlwZSwgY29uc3QgVVB0ciAmdXB0cikKLSAgIHsgcmV0dXJuIFB0cjo6c3RhdGljX2Nhc3RfZnJvbSh1cHRyKTsgfQotCi0gICB0ZW1wbGF0ZTxjbGFzcyBVUHRyPgotICAgc3RhdGljIHBvaW50ZXIgcHJpdl9zdGF0aWNfY2FzdF9mcm9tKG5kbmJvb3N0OjpmYWxzZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyAgcmV0dXJuIHBvaW50ZXJfdG8oKnN0YXRpY19jYXN0PGVsZW1lbnRfdHlwZSo+KHRvX3Jhd19wb2ludGVyKHVwdHIpKSk7ICB9Ci0KLSAgIC8vcHJpdl9jb25zdF9jYXN0X2Zyb20KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X2NvbnN0X2Nhc3RfZnJvbShuZG5ib29zdDo6dHJ1ZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyByZXR1cm4gUHRyOjpjb25zdF9jYXN0X2Zyb20odXB0cik7IH0KLQotICAgdGVtcGxhdGU8Y2xhc3MgVVB0cj4KLSAgIHN0YXRpYyBwb2ludGVyIHByaXZfY29uc3RfY2FzdF9mcm9tKG5kbmJvb3N0OjpmYWxzZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyAgcmV0dXJuIHBvaW50ZXJfdG8oY29uc3RfY2FzdDxlbGVtZW50X3R5cGUmPigqdXB0cikpOyAgfQotCi0gICAvL3ByaXZfZHluYW1pY19jYXN0X2Zyb20KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X2R5bmFtaWNfY2FzdF9mcm9tKG5kbmJvb3N0Ojp0cnVlX3R5cGUsIGNvbnN0IFVQdHIgJnVwdHIpCi0gICB7IHJldHVybiBQdHI6OmR5bmFtaWNfY2FzdF9mcm9tKHVwdHIpOyB9Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFVQdHI+Ci0gICBzdGF0aWMgcG9pbnRlciBwcml2X2R5bmFtaWNfY2FzdF9mcm9tKG5kbmJvb3N0OjpmYWxzZV90eXBlLCBjb25zdCBVUHRyICZ1cHRyKQotICAgeyAgcmV0dXJuIHBvaW50ZXJfdG8oKmR5bmFtaWNfY2FzdDxlbGVtZW50X3R5cGUqPigmKnVwdHIpKTsgIH0KLSAgIC8vL0BlbmRjb25kCi19OwotCi0vLy9AY29uZAotCi0vLyBSZW1vdmUgY3YgcXVhbGlmaWNhdGlvbiBmcm9tIFB0ciBwYXJhbWV0ZXIgdG8gcG9pbnRlcl90cmFpdHM6Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzPGNvbnN0IFB0cj4gOiBwb2ludGVyX3RyYWl0czxQdHI+IHt9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFB0cj4KLXN0cnVjdCBwb2ludGVyX3RyYWl0czx2b2xhdGlsZSBQdHI+IDogcG9pbnRlcl90cmFpdHM8UHRyPiB7IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUHRyPgotc3RydWN0IHBvaW50ZXJfdHJhaXRzPGNvbnN0IHZvbGF0aWxlIFB0cj4gOiBwb2ludGVyX3RyYWl0czxQdHI+IHsgfTsKLS8vIFJlbW92ZSByZWZlcmVuY2UgZnJvbSBQdHIgcGFyYW1ldGVyIHRvIHBvaW50ZXJfdHJhaXRzOgotdGVtcGxhdGUgPHR5cGVuYW1lIFB0cj4KLXN0cnVjdCBwb2ludGVyX3RyYWl0czxQdHImPiA6IHBvaW50ZXJfdHJhaXRzPFB0cj4geyB9OwotCi0vLy9AZW5kY29uZAotCi0vLyEgU3BlY2lhbGl6YXRpb24gb2YgcG9pbnRlcl90cmFpdHMgZm9yIHJhdyBwb2ludGVycwotLy8hCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBwb2ludGVyX3RyYWl0czxUKj4KLXsKLSAgIHR5cGVkZWYgVCAgICAgICAgICAgIGVsZW1lbnRfdHlwZTsKLSAgIHR5cGVkZWYgVCogICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLQotICAgI2lmZGVmIE5ETkJPT1NUX0lOVFJVU0lWRV9ET1hZR0VOX0lOVk9LRUQKLSAgICAgIHR5cGVkZWYgVCAmICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICAgIC8vIXR5cGVkZWYgZm9yIDxwcmU+VSAqPC9wcmU+Ci0gICAgICAvLyEKLSAgICAgIC8vIUZvciBwb3J0YWJsZSBjb2RlIGZvciBDKyswMyBhbmQgQysrMTEsIDxwcmU+dHlwZW5hbWUgcmViaW5kX3BvaW50ZXI8VT46OnR5cGU8L3ByZT4KLSAgICAgIC8vIXNoYWxsIGJlIHVzZWQgaW5zdGVhZCBvZiByZWJpbmQ8VT4gdG8gb2J0YWluIGEgcG9pbnRlciB0byBVLgotICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+IHVzaW5nIHJlYmluZCA9IFUqOwotICAgI2Vsc2UKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjp1bnZvaWQ8ZWxlbWVudF90eXBlPjo6dHlwZSYgcmVmZXJlbmNlOwotICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1RFTVBMQVRFX0FMSUFTRVMpCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gdXNpbmcgcmViaW5kID0gVSo7Ci0gICAgICAjZW5kaWYKLSAgICNlbmRpZgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RydWN0IHJlYmluZF9wb2ludGVyCi0gICB7ICB0eXBlZGVmIFUqIHR5cGU7ICB9OwotCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IGFkZHJlc3NvZihyKQotICAgLy8hCi0gICBzdGF0aWMgcG9pbnRlciBwb2ludGVyX3RvKHJlZmVyZW5jZSByKQotICAgeyByZXR1cm4gbmRuYm9vc3Q6OmludHJ1c2l2ZTo6ZGV0YWlsOjphZGRyZXNzb2Yocik7IH0KLQotICAgLy8hIDxiPlJldHVybnM8L2I+OiBzdGF0aWNfY2FzdDxwb2ludGVyPih1cHRyKQotICAgLy8hCi0gICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgc3RhdGljIHBvaW50ZXIgc3RhdGljX2Nhc3RfZnJvbShVICp1cHRyKQotICAgeyAgcmV0dXJuIHN0YXRpY19jYXN0PHBvaW50ZXI+KHVwdHIpOyAgfQotCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IGNvbnN0X2Nhc3Q8cG9pbnRlcj4odXB0cikKLSAgIC8vIQotICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgIHN0YXRpYyBwb2ludGVyIGNvbnN0X2Nhc3RfZnJvbShVICp1cHRyKQotICAgeyAgcmV0dXJuIGNvbnN0X2Nhc3Q8cG9pbnRlcj4odXB0cik7ICB9Ci0KLSAgIC8vISA8Yj5SZXR1cm5zPC9iPjogZHluYW1pY19jYXN0PHBvaW50ZXI+KHVwdHIpCi0gICAvLyEKLSAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICBzdGF0aWMgcG9pbnRlciBkeW5hbWljX2Nhc3RfZnJvbShVICp1cHRyKQotICAgeyAgcmV0dXJuIGR5bmFtaWNfY2FzdDxwb2ludGVyPih1cHRyKTsgIH0KLX07Ci0KLX0gIC8vbmFtZXNwYWNlIGNvbnRhaW5lciB7Ci19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRydXNpdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8gISBkZWZpbmVkKE5ETkJPT1NUX0lOVFJVU0lWRV9QT0lOVEVSX1RSQUlUU19IUFApCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvL2RldGFpbC9xdW90ZWRfbWFuaXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pby9kZXRhaWwvcXVvdGVkX21hbmlwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI3OTA5Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvL2RldGFpbC9xdW90ZWRfbWFuaXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8vICBuZG5ib29zdC9pby9xdW90ZWRfbWFuaXAuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMTAKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLS8vICBMaWJyYXJ5IGhvbWUgcGFnZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAKLQotI2lmbmRlZiBORE5CT09TVF9JT19RVU9URURfTUFOSVAKLSNkZWZpbmUgTkROQk9PU1RfSU9fUVVPVEVEX01BTklQCi0KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8aW9zPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxuZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgbmFtZXNwYWNlIGlvCi0gIHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsgdGVtcGxhdGUgPGNsYXNzIFN0cmluZywgY2xhc3MgQ2hhcj4gc3RydWN0IHF1b3RlZF9wcm94eTsgfQotCi0gICAgLy8gIC0tLS0tLS0tLS0tLSAgcHVibGljIGludGVyZmFjZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vICBtYW5pcHVsYXRvciBmb3IgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiBjb25zdCAmLCBDaGFyPgotICAgICAgICBxdW90ZWQoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mIHMsCi0gICAgICAgICAgICAgICBDaGFyIGVzY2FwZT0nXFwnLCBDaGFyIGRlbGltPSdcIicpOwotCi0gICAgLy8gIG1hbmlwdWxhdG9yIGZvciBub24tY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmCi0gICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiAmLCBDaGFyPgotICAgICAgICBxdW90ZWQoc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mIHMsCi0gICAgICAgICAgICAgICBDaGFyIGVzY2FwZT0nXFwnLCBDaGFyIGRlbGltPSdcIicpOwotCi0gICAgLy8gIG1hbmlwdWxhdG9yIGZvciBjb25zdCBDLXN0cmluZyoKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhcj4KLSAgICAgIGRldGFpbDo6cXVvdGVkX3Byb3h5PGNvbnN0IENoYXIqLCBDaGFyPgotICAgICAgICBxdW90ZWQoY29uc3QgQ2hhciogcywgQ2hhciBlc2NhcGU9J1xcJywgQ2hhciBkZWxpbT0nXCInKTsKLQotICAgIC8vICAtLS0tLS0tLS0tLSAgaW1wbGVtZW50YXRpb24gZGV0YWlscyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBuYW1lc3BhY2UgZGV0YWlsCi0gICAgewotICAgICAgLy8gIHByb3h5IHVzZWQgYXMgYW4gYXJndW1lbnQgcGFjayAKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmcsIGNsYXNzIENoYXI+Ci0gICAgICBzdHJ1Y3QgcXVvdGVkX3Byb3h5Ci0gICAgICB7Ci0gICAgICAgIFN0cmluZyAgc3RyaW5nOwotICAgICAgICBDaGFyICAgIGVzY2FwZTsKLSAgICAgICAgQ2hhciAgICBkZWxpbTsKLQotICAgICAgICBxdW90ZWRfcHJveHkoU3RyaW5nIHNfLCBDaGFyIGVzY2FwZV8sIENoYXIgZGVsaW1fKQotICAgICAgICAgIDogc3RyaW5nKHNfKSwgZXNjYXBlKGVzY2FwZV8pLCBkZWxpbShkZWxpbV8pIHt9Ci0gICAgICBwcml2YXRlOgotICAgICAgICAvLyBTdHJpbmcgbWF5IGJlIGEgY29uc3QgdHlwZSwgc28gZGlzYWJsZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvcgotICAgICAgICBxdW90ZWRfcHJveHkmIG9wZXJhdG9yPShjb25zdCBxdW90ZWRfcHJveHkmKTsgIC8vID0gZGVsZXRlZAotICAgICAgfTsKLQotICAgICAgLy8gIGFic3RyYWN0IGF3YXkgZGlmZmVyZW5jZSBiZXR3ZWVuIHByb3hpZXMgd2l0aCBjb25zdCBvciBub24tY29uc3QgYmFzaWNfc3RyaW5ncwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYKLSAgICAgIGJhc2ljX3N0cmluZ19pbnNlcnRlcl9pbXAoc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIFRyYWl0cz4mIG9zLAotICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiBjb25zdCAmIHN0cmluZywgQ2hhciBlc2NhcGUsIENoYXIgZGVsaW0pCi0gICAgICB7Ci0gICAgICAgIG9zIDw8IGRlbGltOwotICAgICAgICB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgICBlbmRfaXQgPSBzdHJpbmcuZW5kKCk7Ci0gICAgICAgIGZvciAodHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgICAgaXQgPSBzdHJpbmcuYmVnaW4oKTsKLSAgICAgICAgICBpdCAhPSBlbmRfaXQ7Ci0gICAgICAgICAgKytpdCApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoKml0ID09IGRlbGltIHx8ICppdCA9PSBlc2NhcGUpCi0gICAgICAgICAgICBvcyA8PCBlc2NhcGU7Ci0gICAgICAgICAgb3MgPDwgKml0OwotICAgICAgICB9Ci0gICAgICAgIG9zIDw8IGRlbGltOwotICAgICAgICByZXR1cm4gb3M7Ci0gICAgICB9Ci0KLSAgICAgIC8vICBpbnNlcnRlciBmb3IgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmIHByb3hpZXMKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotICAgICAgaW5saW5lCi0gICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3MsIAotICAgICAgICBjb25zdCBxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4gY29uc3QgJiwgQ2hhcj4mIHByb3h5KQotICAgICAgewotICAgICAgICByZXR1cm4gYmFzaWNfc3RyaW5nX2luc2VydGVyX2ltcChvcywgcHJveHkuc3RyaW5nLCBwcm94eS5lc2NhcGUsIHByb3h5LmRlbGltKTsKLSAgICAgIH0KLQotICAgICAgLy8gIGluc2VydGVyIGZvciBub24tY29uc3Qgc3RkOjpiYXNpY19zdHJpbmcmIHByb3hpZXMKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotICAgICAgaW5saW5lCi0gICAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgVHJhaXRzPiYgb3MsIAotICAgICAgICBjb25zdCBxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mLCBDaGFyPiYgcHJveHkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBiYXNpY19zdHJpbmdfaW5zZXJ0ZXJfaW1wKG9zLCBwcm94eS5zdHJpbmcsIHByb3h5LmVzY2FwZSwgcHJveHkuZGVsaW0pOwotICAgICAgfQotIAotICAgICAgLy8gIGluc2VydGVyIGZvciBjb25zdCBDLXN0cmluZyogcHJveGllcwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cz4KLSAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBUcmFpdHM+JiBvcywgCi0gICAgICAgIGNvbnN0IHF1b3RlZF9wcm94eTxjb25zdCBDaGFyKiwgQ2hhcj4mIHByb3h5KQotICAgICAgewotICAgICAgICBvcyA8PCBwcm94eS5kZWxpbTsKLSAgICAgICAgZm9yIChjb25zdCBDaGFyKiBpdCA9IHByb3h5LnN0cmluZzsKLSAgICAgICAgICAqaXQ7Ci0gICAgICAgICAgKytpdCApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoKml0ID09IHByb3h5LmRlbGltIHx8ICppdCA9PSBwcm94eS5lc2NhcGUpCi0gICAgICAgICAgICBvcyA8PCBwcm94eS5lc2NhcGU7Ci0gICAgICAgICAgb3MgPDwgKml0OwotICAgICAgICB9Ci0gICAgICAgIG9zIDw8IHByb3h5LmRlbGltOwotICAgICAgICByZXR1cm4gb3M7Ci0gICAgICB9Ci0KLSAgICAgIC8vICBleHRyYWN0b3IgZm9yIG5vbi1jb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYgcHJveGllcwotICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci0gICAgICBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhciwgVHJhaXRzPiYgaXMsIAotICAgICAgICBjb25zdCBxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mLCBDaGFyPiYgcHJveHkpCi0gICAgICB7Ci0gICAgICAgIHByb3h5LnN0cmluZy5jbGVhcigpOwotICAgICAgICBDaGFyIGM7Ci0gICAgICAgIGlzID4+IGM7Ci0gICAgICAgIGlmIChjICE9IHByb3h5LmRlbGltKQotICAgICAgICB7Ci0gICAgICAgICAgaXMudW5nZXQoKTsKLSAgICAgICAgICBpcyA+PiBwcm94eS5zdHJpbmc7Ci0gICAgICAgICAgcmV0dXJuIGlzOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAgICBuZG5ib29zdDo6aW86Omlvc19mbGFnc19zYXZlciBpZnMoaXMpOwotICAgICAgICAgIGlzID4+IHN0ZDo6bm9za2lwd3M7Ci0gICAgICAgICAgZm9yICg7OykgIAotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlzID4+IGM7Ci0gICAgICAgICAgICBpZiAoIWlzLmdvb2QoKSkgIC8vIGNvcGUgd2l0aCBJL08gZXJyb3JzIG9yIGVuZC1vZi1maWxlCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGMgPT0gcHJveHkuZXNjYXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBpcyA+PiBjOwotICAgICAgICAgICAgICBpZiAoIWlzLmdvb2QoKSkgIC8vIGNvcGUgd2l0aCBJL08gZXJyb3JzIG9yIGVuZC1vZi1maWxlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09IHByb3h5LmRlbGltKQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHByb3h5LnN0cmluZyArPSBjOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaXM7Ci0gICAgICB9Ci0KLSAgICB9ICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgICAvLyAgbWFuaXB1bGF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nJgotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jPgotICAgIGlubGluZSBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiBjb25zdCAmLCBDaGFyPgotICAgIHF1b3RlZChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYgcywgQ2hhciBlc2NhcGUsIENoYXIgZGVsaW0pCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6cXVvdGVkX3Byb3h5PHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2M+IGNvbnN0ICYsIENoYXI+Ci0gICAgICAgIChzLCBlc2NhcGUsIGRlbGltKTsKLSAgICB9Ci0KLSAgICAvLyAgbWFuaXB1bGF0b3IgaW1wbGVtZW50YXRpb24gZm9yIG5vbi1jb25zdCBzdGQ6OmJhc2ljX3N0cmluZyYKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLSAgICBpbmxpbmUgZGV0YWlsOjpxdW90ZWRfcHJveHk8c3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4gJiwgQ2hhcj4KLSAgICBxdW90ZWQoc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvYz4mIHMsIENoYXIgZXNjYXBlLCBDaGFyIGRlbGltKQotICAgIHsKLSAgICAgIHJldHVybiBkZXRhaWw6OnF1b3RlZF9wcm94eTxzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jPiYsIENoYXI+Ci0gICAgICAgIChzLCBlc2NhcGUsIGRlbGltKTsKLSAgICB9Ci0KLSAgICAvLyAgbWFuaXB1bGF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnN0IEMtc3RyaW5nKgotICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyPgotICAgIGlubGluZSBkZXRhaWw6OnF1b3RlZF9wcm94eTxjb25zdCBDaGFyKiwgQ2hhcj4KLSAgICBxdW90ZWQoY29uc3QgQ2hhciogcywgQ2hhciBlc2NhcGUsIENoYXIgZGVsaW0pCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6cXVvdGVkX3Byb3h5PGNvbnN0IENoYXIqLCBDaGFyPiAocywgZXNjYXBlLCBkZWxpbSk7Ci0gICAgfQotCi0gIH0gIC8vIG5hbWVzcGFjZSBpbwotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9JT19RVU9URURfTUFOSVAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW8vaW9zX3N0YXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW8vaW9zX3N0YXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBkODAyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvL2lvc19zdGF0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzkgKzAsMCBAQAotLy8gIEJvb3N0IGlvL2lvc19zdGF0ZS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDAyLCAyMDA1IERhcnlsZSBXYWxrZXIuICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbgotLy8gIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nCi0vLyAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0IDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ+LikKLQotLy8gIFNlZSA8aHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pby8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT19JT1NfU1RBVEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lPX0lPU19TVEFURV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvX2Z3ZC5ocHA+ICAvLyBzZWxmIGluY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxpb3M+ICAgICAgICAvLyBmb3Igc3RkOjppb3NfYmFzZSwgc3RkOjpiYXNpY19pb3MsIGV0Yy4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2luY2x1ZGUgPGxvY2FsZT4gICAgIC8vIGZvciBzdGQ6OmxvY2FsZQotI2VuZGlmCi0jaW5jbHVkZSA8b3N0cmVhbT4gICAgLy8gZm9yIHN0ZDo6YmFzaWNfb3N0cmVhbQotI2luY2x1ZGUgPHN0cmVhbWJ1Zj4gIC8vIGZvciBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZgotI2luY2x1ZGUgPHN0cmluZz4gICAgIC8vIGZvciBzdGQ6OmNoYXJfdHJhaXRzCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci1uYW1lc3BhY2UgaW8KLXsKLQotCi0vLyAgQmFzaWMgc3RyZWFtIHN0YXRlIHNhdmVyIGNsYXNzIGRlY2xhcmF0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1jbGFzcyBpb3NfZmxhZ3Nfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgICAgICAgICAgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBpb3NfZmxhZ3Nfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5mbGFncygpICkKLSAgICAgICAge30KLSAgICBpb3NfZmxhZ3Nfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZmxhZ3MoYSkgKQotICAgICAgICB7fQotICAgIH5pb3NfZmxhZ3Nfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5mbGFncyggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0KLSAgICBpb3NfZmxhZ3Nfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3NfZmxhZ3Nfc2F2ZXImKTsKLX07Ci0KLWNsYXNzIGlvc19wcmVjaXNpb25fc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgOjpzdGQ6OnN0cmVhbXNpemUgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGlvc19wcmVjaXNpb25fc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wcmVjaXNpb24oKSApCi0gICAgICAgIHt9Ci0gICAgaW9zX3ByZWNpc2lvbl9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wcmVjaXNpb24oYSkgKQotICAgICAgICB7fQotICAgIH5pb3NfcHJlY2lzaW9uX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8ucHJlY2lzaW9uKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLQotICAgIGlvc19wcmVjaXNpb25fc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3NfcHJlY2lzaW9uX3NhdmVyJik7Ci19OwotCi1jbGFzcyBpb3Nfd2lkdGhfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgOjpzdGQ6OnN0cmVhbXNpemUgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGlvc193aWR0aF9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLndpZHRoKCkgKQotICAgICAgICB7fQotICAgIGlvc193aWR0aF9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy53aWR0aChhKSApCi0gICAgICAgIHt9Ci0gICAgfmlvc193aWR0aF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLndpZHRoKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBpb3Nfd2lkdGhfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBpb3Nfd2lkdGhfc2F2ZXImKTsKLX07Ci0KLQotLy8gIEFkdmFuY2VkIHN0cmVhbSBzdGF0ZSBzYXZlciBjbGFzcyB0ZW1wbGF0ZSBkZWNsYXJhdGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPgotY2xhc3MgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19pb3M8Q2gsIFRyPiAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZTo6aW9zdGF0ZSAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5yZHN0YXRlKCkgKQotICAgICAgICB7fQotICAgIGJhc2ljX2lvc19pb3N0YXRlX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLnJkc3RhdGUoKSApCi0gICAgICAgIHsgcy5jbGVhcihhKTsgfQotICAgIH5iYXNpY19pb3NfaW9zdGF0ZV9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLmNsZWFyKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2lvc19pb3N0YXRlX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2U6Omlvc3RhdGUgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5leGNlcHRpb25zKCkgKQotICAgICAgICB7fQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpKQotICAgIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGEgKQotI2Vsc2UKLSAgICBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBhc3BlY3RfdHlwZSBjb25zdCAmYSApCi0jZW5kaWYKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZXhjZXB0aW9ucygpICkKLSAgICAgICAgeyBzLmV4Y2VwdGlvbnMoYSk7IH0KLSAgICB+YmFzaWNfaW9zX2V4Y2VwdGlvbl9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICAgICAgeyBzX3NhdmVfLmV4Y2VwdGlvbnMoIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfdGllX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gICAgICAgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+ICogIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc190aWVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy50aWUoKSApCi0gICAgICAgIHt9Ci0gICAgYmFzaWNfaW9zX3RpZV9zYXZlciggc3RhdGVfdHlwZSAmcywgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy50aWUoYSkgKQotICAgICAgICB7fQotICAgIH5iYXNpY19pb3NfdGllX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8udGllKCBhX3NhdmVfICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgc19zYXZlXzsKLSAgICBhc3BlY3RfdHlwZSBjb25zdCAgYV9zYXZlXzsKLSAgICBiYXNpY19pb3NfdGllX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfaW9zX3RpZV9zYXZlciYpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPgotY2xhc3MgYmFzaWNfaW9zX3JkYnVmX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gICAgICAgICAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiAqICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBiYXNpY19pb3NfcmRidWZfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5yZGJ1ZigpICkKLSAgICAgICAge30KLSAgICBiYXNpY19pb3NfcmRidWZfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMucmRidWYoYSkgKQotICAgICAgICB7fQotICAgIH5iYXNpY19pb3NfcmRidWZfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5yZGJ1ZiggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgYmFzaWNfaW9zX3JkYnVmX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfaW9zX3JkYnVmX3NhdmVyJik7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfZmlsbF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6OmJhc2ljX2lvczxDaCwgVHI+ICAgICAgICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RhdGVfdHlwZTo6Y2hhcl90eXBlICBhc3BlY3RfdHlwZTsKLQotICAgIGV4cGxpY2l0ICBiYXNpY19pb3NfZmlsbF9zYXZlciggc3RhdGVfdHlwZSAmcyApCi0gICAgICAgIDogc19zYXZlXyggcyApLCBhX3NhdmVfKCBzLmZpbGwoKSApCi0gICAgICAgIHt9Ci0gICAgYmFzaWNfaW9zX2ZpbGxfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZmlsbChhKSApCi0gICAgICAgIHt9Ci0gICAgfmJhc2ljX2lvc19maWxsX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8uZmlsbCggYV9zYXZlXyApOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgIHNfc2F2ZV87Ci0gICAgYXNwZWN0X3R5cGUgY29uc3QgIGFfc2F2ZV87Ci0gICAgYmFzaWNfaW9zX2ZpbGxfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfZmlsbF9zYXZlciYpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA+Ci1jbGFzcyBiYXNpY19pb3NfbG9jYWxlX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6YmFzaWNfaW9zPENoLCBUcj4gc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIDo6c3RkOjpsb2NhbGUgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBiYXNpY19pb3NfbG9jYWxlX3NhdmVyKCBzdGF0ZV90eXBlICZzICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuZ2V0bG9jKCkgKQotICAgICAgICB7fQotICAgIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGFzcGVjdF90eXBlIGNvbnN0ICZhICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGFfc2F2ZV8oIHMuaW1idWUoYSkgKQotICAgICAgICB7fQotICAgIH5iYXNpY19pb3NfbG9jYWxlX3NhdmVyKCkKLSAgICAgICAgeyB0aGlzLT5yZXN0b3JlKCk7IH0KLQotICAgIHZvaWQgIHJlc3RvcmUoKQotICAgICAgICB7IHNfc2F2ZV8uaW1idWUoIGFfc2F2ZV8gKTsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXImIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3NfbG9jYWxlX3NhdmVyJik7Ci19OwotI2VuZGlmCi0KLQotLy8gIFVzZXItZGVmaW5lZCBzdHJlYW0gc3RhdGUgc2F2ZXIgY2xhc3MgZGVjbGFyYXRpb25zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgaW9zX2l3b3JkX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2UgIHN0YXRlX3R5cGU7Ci0gICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgIGluZGV4X3R5cGU7Ci0gICAgdHlwZWRlZiBsb25nICAgICAgICAgICAgIGFzcGVjdF90eXBlOwotCi0gICAgZXhwbGljaXQgaW9zX2l3b3JkX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBpbmRleF90eXBlIGkgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5pd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAge30KLSAgICBpb3NfaXdvcmRfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGluZGV4X3R5cGUgaSwgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5pd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAgeyBzLml3b3JkKGkpID0gYTsgfQotICAgIH5pb3NfaXdvcmRfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5pd29yZCggaV9zYXZlXyApID0gYV9zYXZlXzsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGluZGV4X3R5cGUgY29uc3QgICBpX3NhdmVfOwotCi0gICAgaW9zX2l3b3JkX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgaW9zX2l3b3JkX3NhdmVyJik7Ci19OwotCi1jbGFzcyBpb3NfcHdvcmRfc2F2ZXIKLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIDo6c3RkOjppb3NfYmFzZSAgc3RhdGVfdHlwZTsKLSAgICB0eXBlZGVmIGludCAgICAgICAgICAgICAgaW5kZXhfdHlwZTsKLSAgICB0eXBlZGVmIHZvaWQgKiAgICAgICAgICAgYXNwZWN0X3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgaW9zX3B3b3JkX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBpbmRleF90eXBlIGkgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAge30KLSAgICBpb3NfcHdvcmRfc2F2ZXIoIHN0YXRlX3R5cGUgJnMsIGluZGV4X3R5cGUgaSwgYXNwZWN0X3R5cGUgY29uc3QgJmEgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYV9zYXZlXyggcy5wd29yZChpKSApLCBpX3NhdmVfKCBpICkKLSAgICAgICAgeyBzLnB3b3JkKGkpID0gYTsgfQotICAgIH5pb3NfcHdvcmRfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgICAgIHsgc19zYXZlXy5wd29yZCggaV9zYXZlXyApID0gYV9zYXZlXzsgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICBzX3NhdmVfOwotICAgIGFzcGVjdF90eXBlIGNvbnN0ICBhX3NhdmVfOwotICAgIGluZGV4X3R5cGUgY29uc3QgICBpX3NhdmVfOwotCi0gICAgaW9zX3B3b3JkX3NhdmVyIG9wZXJhdG9yPShjb25zdCBpb3NfcHdvcmRfc2F2ZXImKTsKLX07Ci0KLQotLy8gIENvbWJpbmVkIHN0cmVhbSBzdGF0ZSBzYXZlciBjbGFzcyAodGVtcGxhdGUpIGRlY2xhcmF0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgaW9zX2Jhc2VfYWxsX3NhdmVyCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiA6OnN0ZDo6aW9zX2Jhc2UgIHN0YXRlX3R5cGU7Ci0KLSAgICBleHBsaWNpdCAgaW9zX2Jhc2VfYWxsX3NhdmVyKCBzdGF0ZV90eXBlICZzICkKLSAgICAgICAgOiBzX3NhdmVfKCBzICksIGExX3NhdmVfKCBzLmZsYWdzKCkgKSwgYTJfc2F2ZV8oIHMucHJlY2lzaW9uKCkgKQotICAgICAgICAsIGEzX3NhdmVfKCBzLndpZHRoKCkgKQotICAgICAgICB7fQotCi0gICAgfmlvc19iYXNlX2FsbF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAgIHNfc2F2ZV8ud2lkdGgoIGEzX3NhdmVfICk7Ci0gICAgICAgIHNfc2F2ZV8ucHJlY2lzaW9uKCBhMl9zYXZlXyApOwotICAgICAgICBzX3NhdmVfLmZsYWdzKCBhMV9zYXZlXyApOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlICYgICAgICAgICAgICAgICAgc19zYXZlXzsKLSAgICBzdGF0ZV90eXBlOjpmbXRmbGFncyBjb25zdCAgYTFfc2F2ZV87Ci0gICAgOjpzdGQ6OnN0cmVhbXNpemUgY29uc3QgICAgIGEyX3NhdmVfOwotICAgIDo6c3RkOjpzdHJlYW1zaXplIGNvbnN0ICAgICBhM19zYXZlXzsKLQotICAgIGlvc19iYXNlX2FsbF9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGlvc19iYXNlX2FsbF9zYXZlciYpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBDaCwgY2xhc3MgVHIgPgotY2xhc3MgYmFzaWNfaW9zX2FsbF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6OmJhc2ljX2lvczxDaCwgVHI+ICBzdGF0ZV90eXBlOwotCi0gICAgZXhwbGljaXQgIGJhc2ljX2lvc19hbGxfc2F2ZXIoIHN0YXRlX3R5cGUgJnMgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgYTFfc2F2ZV8oIHMuZmxhZ3MoKSApLCBhMl9zYXZlXyggcy5wcmVjaXNpb24oKSApCi0gICAgICAgICwgYTNfc2F2ZV8oIHMud2lkdGgoKSApLCBhNF9zYXZlXyggcy5yZHN0YXRlKCkgKQotICAgICAgICAsIGE1X3NhdmVfKCBzLmV4Y2VwdGlvbnMoKSApLCBhNl9zYXZlXyggcy50aWUoKSApCi0gICAgICAgICwgYTdfc2F2ZV8oIHMucmRidWYoKSApLCBhOF9zYXZlXyggcy5maWxsKCkgKQotICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgICAgLCBhOV9zYXZlXyggcy5nZXRsb2MoKSApCi0gICAgICAgICNlbmRpZgotICAgICAgICB7fQotCi0gICAgfmJhc2ljX2lvc19hbGxfc2F2ZXIoKQotICAgICAgICB7IHRoaXMtPnJlc3RvcmUoKTsgfQotCi0gICAgdm9pZCAgcmVzdG9yZSgpCi0gICAgewotICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgICAgc19zYXZlXy5pbWJ1ZSggYTlfc2F2ZV8gKTsKLSAgICAgICAgI2VuZGlmCi0gICAgICAgIHNfc2F2ZV8uZmlsbCggYThfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5yZGJ1ZiggYTdfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy50aWUoIGE2X3NhdmVfICk7Ci0gICAgICAgIHNfc2F2ZV8uZXhjZXB0aW9ucyggYTVfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5jbGVhciggYTRfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy53aWR0aCggYTNfc2F2ZV8gKTsKLSAgICAgICAgc19zYXZlXy5wcmVjaXNpb24oIGEyX3NhdmVfICk7Ci0gICAgICAgIHNfc2F2ZV8uZmxhZ3MoIGExX3NhdmVfICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRlX3R5cGUgJiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzX3NhdmVfOwotICAgIHR5cGVuYW1lIHN0YXRlX3R5cGU6OmZtdGZsYWdzIGNvbnN0ICAgICBhMV9zYXZlXzsKLSAgICA6OnN0ZDo6c3RyZWFtc2l6ZSBjb25zdCAgICAgICAgICAgICAgICAgYTJfc2F2ZV87Ci0gICAgOjpzdGQ6OnN0cmVhbXNpemUgY29uc3QgICAgICAgICAgICAgICAgIGEzX3NhdmVfOwotICAgIHR5cGVuYW1lIHN0YXRlX3R5cGU6Omlvc3RhdGUgY29uc3QgICAgICBhNF9zYXZlXzsKLSAgICB0eXBlbmFtZSBzdGF0ZV90eXBlOjppb3N0YXRlIGNvbnN0ICAgICAgYTVfc2F2ZV87Ci0gICAgOjpzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiAqIGNvbnN0ICAgIGE2X3NhdmVfOwotICAgIDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiAqIGNvbnN0ICBhN19zYXZlXzsKLSAgICB0eXBlbmFtZSBzdGF0ZV90eXBlOjpjaGFyX3R5cGUgY29uc3QgICAgYThfc2F2ZV87Ci0gICAgI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICAgOjpzdGQ6OmxvY2FsZSBjb25zdCAgICAgICAgICAgICAgICAgICAgIGE5X3NhdmVfOwotICAgICNlbmRpZgotCi0gICAgYmFzaWNfaW9zX2FsbF9zYXZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2lvc19hbGxfc2F2ZXImKTsKLX07Ci0KLWNsYXNzIGlvc19hbGxfd29yZF9zYXZlcgotewotcHVibGljOgotICAgIHR5cGVkZWYgOjpzdGQ6Omlvc19iYXNlICBzdGF0ZV90eXBlOwotICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgICBpbmRleF90eXBlOwotCi0gICAgaW9zX2FsbF93b3JkX3NhdmVyKCBzdGF0ZV90eXBlICZzLCBpbmRleF90eXBlIGkgKQotICAgICAgICA6IHNfc2F2ZV8oIHMgKSwgaV9zYXZlXyggaSApLCBhMV9zYXZlXyggcy5pd29yZChpKSApCi0gICAgICAgICwgYTJfc2F2ZV8oIHMucHdvcmQoaSkgKQotICAgICAgICB7fQotCi0gICAgfmlvc19hbGxfd29yZF9zYXZlcigpCi0gICAgICAgIHsgdGhpcy0+cmVzdG9yZSgpOyB9Ci0KLSAgICB2b2lkICByZXN0b3JlKCkKLSAgICB7Ci0gICAgICAgIHNfc2F2ZV8ucHdvcmQoIGlfc2F2ZV8gKSA9IGEyX3NhdmVfOwotICAgICAgICBzX3NhdmVfLml3b3JkKCBpX3NhdmVfICkgPSBhMV9zYXZlXzsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGVfdHlwZSAmICAgICAgc19zYXZlXzsKLSAgICBpbmRleF90eXBlIGNvbnN0ICBpX3NhdmVfOwotICAgIGxvbmcgY29uc3QgICAgICAgIGExX3NhdmVfOwotICAgIHZvaWQgKiBjb25zdCAgICAgIGEyX3NhdmVfOwotCi0gICAgaW9zX2FsbF93b3JkX3NhdmVyJiBvcGVyYXRvcj0oY29uc3QgaW9zX2FsbF93b3JkX3NhdmVyJik7Ci19OwotCi0KLX0gIC8vIG5hbWVzcGFjZSBpbwotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmICAvLyBORE5CT09TVF9JT19JT1NfU1RBVEVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NWE1OGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLy8gIEJvb3N0IGlvX2Z3ZC5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDAyIERhcnlsZSBXYWxrZXIuICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdAotLy8gIHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0IDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ+LikKLQotLy8gIFNlZSA8aHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pby8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT19GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0lPX0ZXRF9IUFAKLQotI2luY2x1ZGUgPGlvc2Z3ZD4gIC8vIGZvciBzdGQ6OmNoYXJfdHJhaXRzIChkZWNsYXJhdGlvbikKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLW5hbWVzcGFjZSBpbwotewotCi0KLS8vICBGcm9tIDxuZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIGlvc19mbGFnc19zYXZlcjsKLWNsYXNzIGlvc19wcmVjaXNpb25fc2F2ZXI7Ci1jbGFzcyBpb3Nfd2lkdGhfc2F2ZXI7Ci1jbGFzcyBpb3NfYmFzZV9hbGxfc2F2ZXI7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc190aWVfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19yZGJ1Zl9zYXZlcjsKLXRlbXBsYXRlIDwgdHlwZW5hbWUgQ2gsIGNsYXNzIFRyID0gOjpzdGQ6OmNoYXJfdHJhaXRzPENoPiA+Ci0gICAgY2xhc3MgYmFzaWNfaW9zX2ZpbGxfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXI7Ci10ZW1wbGF0ZSA8IHR5cGVuYW1lIENoLCBjbGFzcyBUciA9IDo6c3RkOjpjaGFyX3RyYWl0czxDaD4gPgotICAgIGNsYXNzIGJhc2ljX2lvc19hbGxfc2F2ZXI7Ci0KLXR5cGVkZWYgYmFzaWNfaW9zX2lvc3RhdGVfc2F2ZXI8Y2hhcj4gICAgICAgIGlvc19pb3N0YXRlX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfaW9zdGF0ZV9zYXZlcjx3Y2hhcl90PiAgICB3aW9zX2lvc3RhdGVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19leGNlcHRpb25fc2F2ZXI8Y2hhcj4gICAgICBpb3NfZXhjZXB0aW9uX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfZXhjZXB0aW9uX3NhdmVyPHdjaGFyX3Q+ICB3aW9zX2V4Y2VwdGlvbl9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX3RpZV9zYXZlcjxjaGFyPiAgICAgICAgICAgIGlvc190aWVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc190aWVfc2F2ZXI8d2NoYXJfdD4gICAgICAgIHdpb3NfdGllX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfcmRidWZfc2F2ZXI8Y2hhcj4gICAgICAgICAgaW9zX3JkYnVmX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfcmRidWZfc2F2ZXI8d2NoYXJfdD4gICAgICB3aW9zX3JkYnVmX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfZmlsbF9zYXZlcjxjaGFyPiAgICAgICAgICAgaW9zX2ZpbGxfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19maWxsX3NhdmVyPHdjaGFyX3Q+ICAgICAgIHdpb3NfZmlsbF9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX2xvY2FsZV9zYXZlcjxjaGFyPiAgICAgICAgIGlvc19sb2NhbGVfc2F2ZXI7Ci10eXBlZGVmIGJhc2ljX2lvc19sb2NhbGVfc2F2ZXI8d2NoYXJfdD4gICAgIHdpb3NfbG9jYWxlX3NhdmVyOwotdHlwZWRlZiBiYXNpY19pb3NfYWxsX3NhdmVyPGNoYXI+ICAgICAgICAgICAgaW9zX2FsbF9zYXZlcjsKLXR5cGVkZWYgYmFzaWNfaW9zX2FsbF9zYXZlcjx3Y2hhcl90PiAgICAgICAgd2lvc19hbGxfc2F2ZXI7Ci0KLWNsYXNzIGlvc19pd29yZF9zYXZlcjsKLWNsYXNzIGlvc19wd29yZF9zYXZlcjsKLWNsYXNzIGlvc19hbGxfd29yZF9zYXZlcjsKLQotCi19ICAvLyBuYW1lc3BhY2UgaW8KLX0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfSU9fRldEX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVhNDI1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnMgY2F0ZWdvcnkgYW5kIG1vZGUgdGFncyBmb3IgY2xhc3NpZnlpbmcgZmlsdGVycywgZGV2aWNlcyBhbmQgCi0vLyBzdGFuZGFyZCBzdHJlYW0gYW5kIHN0cmVhbSBidWZmZXJzIHR5cGVzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DQVRFR09SSUVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ0FURUdPUklFU19IUFBfSU5DTFVERUQgCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1UYWdzIGZvciBkaXNwYXRjaCBhY2NvcmRpbmcgdG8gaS9vIG1vZGUtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotc3RydWN0IGFueV90YWcgeyB9OwotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCB0d29fc2VxdWVuY2UgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyB9Ci1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IHJhbmRvbV9hY2Nlc3MgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyB9Ci1uYW1lc3BhY2UgZGV0YWlsIHsgc3RydWN0IG9uZV9oZWFkIDogdmlydHVhbCBhbnlfdGFnIHsgfTsgfQotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCB0d29faGVhZCA6IHZpcnR1YWwgYW55X3RhZyB7IH07IH0KLXN0cnVjdCBpbnB1dCA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci1zdHJ1Y3Qgb3V0cHV0IDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBiaWRpcmVjdGlvbmFsIDogdmlydHVhbCBpbnB1dCwgdmlydHVhbCBvdXRwdXQsIGRldGFpbDo6dHdvX3NlcXVlbmNlIHsgfTsKLXN0cnVjdCBkdWFsX3VzZSA6IHZpcnR1YWwgaW5wdXQsIHZpcnR1YWwgb3V0cHV0IHsgfTsgLy8gUHNldWRvLW1vZGUuCi1zdHJ1Y3QgaW5wdXRfc2Vla2FibGUgOiB2aXJ0dWFsIGlucHV0LCB2aXJ0dWFsIGRldGFpbDo6cmFuZG9tX2FjY2VzcyB7IH07Ci1zdHJ1Y3Qgb3V0cHV0X3NlZWthYmxlIDogdmlydHVhbCBvdXRwdXQsIHZpcnR1YWwgZGV0YWlsOjpyYW5kb21fYWNjZXNzIHsgfTsKLXN0cnVjdCBzZWVrYWJsZQotICAgIDogdmlydHVhbCBpbnB1dF9zZWVrYWJsZSwgCi0gICAgICB2aXJ0dWFsIG91dHB1dF9zZWVrYWJsZSwKLSAgICAgIGRldGFpbDo6b25lX2hlYWQKLSAgICB7IH07Ci1zdHJ1Y3QgZHVhbF9zZWVrYWJsZQotICAgIDogdmlydHVhbCBpbnB1dF9zZWVrYWJsZSwKLSAgICAgIHZpcnR1YWwgb3V0cHV0X3NlZWthYmxlLAotICAgICAgZGV0YWlsOjp0d29faGVhZAotICAgIHsgfTsgIAotc3RydWN0IGJpZGlyZWN0aW9uYWxfc2Vla2FibGUKLSAgICA6IGlucHV0X3NlZWthYmxlLCBvdXRwdXRfc2Vla2FibGUsCi0gICAgICBiaWRpcmVjdGlvbmFsLCBkZXRhaWw6OnR3b19oZWFkCi0gICAgeyB9OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVRhZ3MgZm9yIHVzZSBhcyBpL28gY2F0ZWdvcmllcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1zdHJ1Y3QgZGV2aWNlX3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci1zdHJ1Y3QgZmlsdGVyX3RhZyA6IHZpcnR1YWwgYW55X3RhZyB7IH07Ci0KLSAgICAvLyAKLSAgICAvLyBUYWdzIGZvciBvcHRpb25hbCBiZWhhdmlvci4KLSAgICAvLwotCi1zdHJ1Y3QgcGVla2FibGVfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsgICAgICAgIC8vIERldmljZXMuCi1zdHJ1Y3QgY2xvc2FibGVfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBmbHVzaGFibGVfdGFnIDogdmlydHVhbCBhbnlfdGFnIHsgfTsKLXN0cnVjdCBsb2NhbGl6YWJsZV90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9Owotc3RydWN0IG9wdGltYWxseV9idWZmZXJlZF90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9Owotc3RydWN0IGRpcmVjdF90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyAgICAgICAgICAvLyBEZXZpY2VzLgotc3RydWN0IG11bHRpY2hhcl90YWcgOiB2aXJ0dWFsIGFueV90YWcgeyB9OyAgICAgICAvLyBGaWx0ZXJzLgotCi1zdHJ1Y3Qgc291cmNlX3RhZyA6IGRldmljZV90YWcsIGlucHV0IHsgfTsKLXN0cnVjdCBzaW5rX3RhZyA6IGRldmljZV90YWcsIG91dHB1dCB7IH07Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9kZXZpY2VfdGFnIDogZGV2aWNlX3RhZywgYmlkaXJlY3Rpb25hbCB7IH07Ci1zdHJ1Y3Qgc2Vla2FibGVfZGV2aWNlX3RhZyA6IHZpcnR1YWwgZGV2aWNlX3RhZywgc2Vla2FibGUgeyB9OwotCi1zdHJ1Y3QgaW5wdXRfZmlsdGVyX3RhZyA6IGZpbHRlcl90YWcsIGlucHV0IHsgfTsKLXN0cnVjdCBvdXRwdXRfZmlsdGVyX3RhZyA6IGZpbHRlcl90YWcsIG91dHB1dCB7IH07Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9maWx0ZXJfdGFnIDogZmlsdGVyX3RhZywgYmlkaXJlY3Rpb25hbCB7IH07Ci1zdHJ1Y3Qgc2Vla2FibGVfZmlsdGVyX3RhZyA6IGZpbHRlcl90YWcsIHNlZWthYmxlIHsgfTsKLXN0cnVjdCBkdWFsX3VzZV9maWx0ZXJfdGFnIDogZmlsdGVyX3RhZywgZHVhbF91c2UgeyB9OwotCi1zdHJ1Y3QgbXVsdGljaGFyX2lucHV0X2ZpbHRlcl90YWcKLSAgICA6IG11bHRpY2hhcl90YWcsCi0gICAgICBpbnB1dF9maWx0ZXJfdGFnCi0gICAgeyB9Owotc3RydWN0IG11bHRpY2hhcl9vdXRwdXRfZmlsdGVyX3RhZwotICAgIDogbXVsdGljaGFyX3RhZywKLSAgICAgIG91dHB1dF9maWx0ZXJfdGFnCi0gICAgeyB9Owotc3RydWN0IG11bHRpY2hhcl9iaWRpcmVjdGlvbmFsX2ZpbHRlcl90YWcKLSAgICA6IG11bHRpY2hhcl90YWcsCi0gICAgICBiaWRpcmVjdGlvbmFsX2ZpbHRlcl90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgbXVsdGljaGFyX3NlZWthYmxlX2ZpbHRlcl90YWcKLSAgICA6IG11bHRpY2hhcl90YWcsCi0gICAgICBzZWVrYWJsZV9maWx0ZXJfdGFnCi0gICAgeyB9Owotc3RydWN0IG11bHRpY2hhcl9kdWFsX3VzZV9maWx0ZXJfdGFnIAotICAgIDogbXVsdGljaGFyX3RhZywgCi0gICAgICBkdWFsX3VzZV9maWx0ZXJfdGFnCi0gICAgeyB9OwotCi0gICAgLy8KLSAgICAvLyBUYWdzIGZvciBzdGFuZGFyZCBzdHJlYW1zIGFuZCBzdHJlYW1idWZzLgotICAgIC8vCi0KLXN0cnVjdCBzdGRfaW9fdGFnIDogdmlydHVhbCBsb2NhbGl6YWJsZV90YWcgeyB9Owotc3RydWN0IGlzdHJlYW1fdGFnCi0gICAgOiB2aXJ0dWFsIGRldmljZV90YWcsCi0gICAgICB2aXJ0dWFsIHBlZWthYmxlX3RhZywKLSAgICAgIHZpcnR1YWwgc3RkX2lvX3RhZwotICAgIHsgfTsKLXN0cnVjdCBvc3RyZWFtX3RhZwotICAgIDogdmlydHVhbCBkZXZpY2VfdGFnLAotICAgICAgdmlydHVhbCBzdGRfaW9fdGFnCi0gICAgeyB9Owotc3RydWN0IGlvc3RyZWFtX3RhZwotICAgIDogaXN0cmVhbV90YWcsCi0gICAgICBvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBzdHJlYW1idWZfdGFnCi0gICAgOiBkZXZpY2VfdGFnLAotICAgICAgcGVla2FibGVfdGFnLAotICAgICAgc3RkX2lvX3RhZwotICAgIHsgfTsKLXN0cnVjdCBpZnN0cmVhbV90YWcKLSAgICA6IGlucHV0X3NlZWthYmxlLAotICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgaXN0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3Qgb2ZzdHJlYW1fdGFnCi0gICAgOiBvdXRwdXRfc2Vla2FibGUsCi0gICAgICBjbG9zYWJsZV90YWcsCi0gICAgICBvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBmc3RyZWFtX3RhZwotICAgIDogc2Vla2FibGUsCi0gICAgICBjbG9zYWJsZV90YWcsCi0gICAgICBpb3N0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgZmlsZWJ1Zl90YWcKLSAgICA6IHNlZWthYmxlLAotICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgc3RyZWFtYnVmX3RhZwotICAgIHsgfTsKLXN0cnVjdCBpc3RyaW5nc3RyZWFtX3RhZwotICAgIDogaW5wdXRfc2Vla2FibGUsCi0gICAgICBpc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBvc3RyaW5nc3RyZWFtX3RhZwotICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgb3N0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3Qgc3RyaW5nc3RyZWFtX3RhZwotICAgIDogZHVhbF9zZWVrYWJsZSwKLSAgICAgIGlvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBzdHJpbmdidWZfdGFnCi0gICAgOiBkdWFsX3NlZWthYmxlLAotICAgICAgc3RyZWFtYnVmX3RhZwotICAgIHsgfTsKLXN0cnVjdCBnZW5lcmljX2lzdHJlYW1fdGFnIAotICAgIDogaW5wdXRfc2Vla2FibGUsCi0gICAgICBpc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBnZW5lcmljX29zdHJlYW1fdGFnIAotICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgb3N0cmVhbV90YWcKLSAgICB7IH07Ci1zdHJ1Y3QgZ2VuZXJpY19pb3N0cmVhbV90YWcgCi0gICAgOiBzZWVrYWJsZSwKLSAgICAgIGlvc3RyZWFtX3RhZwotICAgIHsgfTsKLXN0cnVjdCBnZW5lcmljX3N0cmVhbWJ1Zl90YWcgCi0gICAgOiBzZWVrYWJsZSwKLSAgICAgIHN0cmVhbWJ1Zl90YWcKLSAgICB7IH07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0FURUdPUklFU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBmYWM0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGFpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuYXJ5X2Z1bmN0aW9uLgotI2luY2x1ZGUgPGl0ZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWR2YW5jZS4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLCBhdXRvX3B0ci4KLSNpbmNsdWRlIDx0eXBlaW5mbz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZ2ljX2Vycm9yLCBvdXRfb2ZfcmFuZ2UuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQywgdGVtcGxhdGUgZnJpZW5kcywKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+ICAgICAgICAgIC8vIE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FjY2Vzc19jb250cm9sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4gLy8gcHVic3luYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL251bGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgICAgICAvLyBpc19maWx0ZXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+ICAgLy8gVkM2LjUgcmVxdWlyZXMgdGhpcwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKSAgICAgICAgLy8gI2luY2x1ZGUgb3JkZXIKLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jZW5kaWYKLQotLy8gU29tZXRpbWVzIHR5cGVfaW5mbyBvYmplY3RzIG11c3QgYmUgY29tcGFyZWQgYnkgbmFtZS4gQm9ycm93ZWQgZnJvbQotLy8gQm9vc3QuUHl0aG9uIGFuZCBCb29zdC5GdW5jdGlvbi4KLSNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gMykgfHwgXAotICAgICBkZWZpbmVkKF9BSVgpIHx8IFwKLSAgICAoZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfX2hvc3RfbWlwcykpIHx8IFwKLSAgICAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiBkZWZpbmVkKF9fSUNDKSkgXAotICAgIC8qKi8KLSMgaW5jbHVkZSA8Y3N0cmluZz4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QQVJFX1RZUEVfSUQoWCxZKSBcCi0gICAgIChzdGQ6OnN0cmNtcCgoWCkubmFtZSgpLChZKS5uYW1lKCkpID09IDApCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTVBBUkVfVFlQRV9JRChYLFkpICgoWCk9PShZKSkKLSNlbmRpZgotCi0vLyBEZXByZWNhdGVkCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QT05FTlRfVFlQRShjaGFpbiwgaW5kZXgpIFwKLSAgICBjaGFpbi5jb21wb25lbnRfdHlwZSggaW5kZXggKSBcCi0gICAgLyoqLwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTVBPTkVOVChjaGFpbiwgaW5kZXgsIHRhcmdldCkgXAotICAgIGNoYWluLmNvbXBvbmVudDwgdGFyZ2V0ID4oIGluZGV4ICkgXAotICAgIC8qKi8KLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NUE9ORU5UKGNoYWluLCBpbmRleCwgdGFyZ2V0KSBcCi0gICAgY2hhaW4uY29tcG9uZW50KCBpbmRleCwgOjpuZG5ib29zdDo6dHlwZTwgdGFyZ2V0ID4oKSApIFwKLSAgICAvKiovCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNoYWluIGFuZCB3Y2hhaW4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbj4gY2xhc3MgY2hhaW5fY2xpZW50OwotCi0vLwotLy8gQ29uY2VwdCBuYW1lOiBDaGFpbi4KLS8vIERlc2NyaXB0aW9uOiBSZXByZXNlbnRzIGEgY2hhaW4gb2Ygc3RyZWFtIGJ1ZmZlcnMgd2hpY2ggcHJvdmlkZXMgYWNjZXNzCi0vLyAgICAgdG8gdGhlIGZpcnN0IGJ1ZmZlciBpbiB0aGUgY2hhaW4gYW5kIHNlbmRzIG5vdGlmaWNhdGlvbnMgd2hlbiB0aGUKLS8vICAgICBzdHJlYW1idWZzIGFyZSBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gY2hhaW4uCi0vLyBSZWZpbmVzOiBDbG9zYWJsZSBkZXZpY2Ugd2l0aCBtb2RlIGVxdWFsIHRvIHR5cGVuYW1lIENoYWluOjptb2RlLgotLy8gTW9kZWxzOiBjaGFpbiwgY29udmVydGluZ19jaGFpbi4KLS8vIEV4YW1wbGU6Ci0vLwotLy8gICAgY2xhc3MgY2hhaW4gewotLy8gICAgcHVibGljOgotLy8gICAgICAgIHR5cGVkZWYgeHh4IGNoYWluX3R5cGU7Ci0vLyAgICAgICAgdHlwZWRlZiB4eHggY2xpZW50X3R5cGU7Ci0vLyAgICAgICAgdHlwZWRlZiB4eHggbW9kZTsKLS8vICAgICAgICBib29sIGlzX2NvbXBsZXRlKCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgLy8gUmVhZHkgZm9yIGkvby4KLS8vICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotLy8gICAgICAgIHZvaWQgcHVzaCggY29uc3QgVCYgdCwgICAgICAgICAgICAgICAgICAgICAvLyBBZGRzIGEgc3RyZWFtIGJ1ZmZlciB0bwotLy8gICAgICAgICAgICAgICAgICAgc3RyZWFtc2l6ZSwgICAgICAgICAgICAgICAgICAgICAvLyBjaGFpbiwgYmFzZWQgb24gdCwgd2l0aAotLy8gICAgICAgICAgICAgICAgICAgc3RyZWFtc2l6ZSApOyAgICAgICAgICAgICAgICAgICAvLyBnaXZlbiBidWZmZXIgYW5kIHB1dGJhY2sKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHNpemVzLiBQYXNzIC0xIHRvCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QgZGVmYXVsdCBzaXplLgotLy8gICAgcHJvdGVjdGVkOgotLy8gICAgICAgIHZvaWQgcmVnaXN0ZXJfY2xpZW50KGNsaWVudF90eXBlKiBjbGllbnQpOyAvLyBBc3NvY2lhdGUgY2xpZW50LgotLy8gICAgICAgIHZvaWQgbm90aWZ5KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RpZnkgY2xpZW50LgotLy8gICAgfTsKLS8vCi0KLS8vCi0vLyBEZXNjcmlwdGlvbjogUmVwcmVzZW50cyBhIGNoYWluIG9mIGZpbHRlcnMgd2l0aCBhbiBvcHRpb25hbCBkZXZpY2UgYXQgdGhlCi0vLyAgICAgIGVuZC4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIFNlbGYgLSBBIGNsYXNzIGRlcml2aW5nIGZyb20gdGhlIGN1cnJlbnQgaW5zdGFudGlhdGlvbiBvZiB0aGlzIHRlbXBsYXRlLgotLy8gICAgICAgICAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIHRoZSBDdXJpb3VzbHkgUmVjdXJyaW5nIFRlbXBsYXRlIFBhdHRlcm4uCi0vLyAgICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgICBUciAtIFRoZSBjaGFyYWN0ZXIgdHJhaXRzIHR5cGUuCi0vLyAgICAgIEFsbG9jIC0gVGhlIGFsbG9jYXRvciB0eXBlLgotLy8gICAgICBNb2RlIC0gQSBtb2RlIHRhZy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotY2xhc3MgY2hhaW5fYmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTUJVRl9UWVBFREVGUyhUcikKLSAgICB0eXBlZGVmIEFsbG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwotICAgIHR5cGVkZWYgTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGRldmljZV90YWcKLSAgICAgICAgeyB9OwotICAgIHR5cGVkZWYgY2hhaW5fY2xpZW50PFNlbGY+ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X3R5cGU7Ci0gICAgZnJpZW5kIGNsYXNzIGNoYWluX2NsaWVudDxTZWxmPjsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBsaW5rZWRfc3RyZWFtYnVmPENoPiAgICAgICAgICAgICAgICAgICBzdHJlYW1idWZfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6bGlzdDxzdHJlYW1idWZfdHlwZSo+ICAgICAgICAgICAgIGxpc3RfdHlwZTsKLSAgICB0eXBlZGVmIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT4gIG15X3R5cGU7Ci1wcm90ZWN0ZWQ6Ci0gICAgY2hhaW5fYmFzZSgpIDogcGltcGxfKG5ldyBjaGFpbl9pbXBsKSB7IH0KLSAgICBjaGFpbl9iYXNlKGNvbnN0IGNoYWluX2Jhc2UmIHJocyk6IHBpbXBsXyhyaHMucGltcGxfKSB7IH0KLXB1YmxpYzoKLQotICAgIC8vIGR1YWxfdXNlIGlzIGEgcHNldWRvLW1vZGUgdG8gZmFjaWxpdGF0ZSBmaWx0ZXIgd3JpdGluZywgCi0gICAgLy8gbm90IGEgZ2VudWluZSBtb2RlLgotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBkdWFsX3VzZT46OnZhbHVlKSk7Ci0KLSAgICAvLy0tLS0tLS0tLS1CdWZmZXIgc2l6aW5nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBTZXRzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgY3JlYXRlZCBmb3IgdGhlIGRldmljZXMgdG8gYmUgYWRkZWQgdG8gdGhpcwotICAgIC8vIGNoYWluLiBEb2VzIG5vdCBhZmZlY3QgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBmb3IgZGV2aWNlcyBhbHJlYWR5Ci0gICAgLy8gYWRkZWQuCi0gICAgdm9pZCBzZXRfZGV2aWNlX2J1ZmZlcl9zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICAgICAgeyBwaW1wbF8tPmRldmljZV9idWZmZXJfc2l6ZV8gPSBuOyB9Ci0KLSAgICAvLyBTZXRzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgY3JlYXRlZCBmb3IgdGhlIGZpbHRlcnMgdG8gYmUgYWRkZWQKLSAgICAvLyB0byB0aGlzIGNoYWluLiBEb2VzIG5vdCBhZmZlY3QgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBmb3IgZmlsdGVycyBhbHJlYWR5Ci0gICAgLy8gYWRkZWQuCi0gICAgdm9pZCBzZXRfZmlsdGVyX2J1ZmZlcl9zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICAgICAgeyBwaW1wbF8tPmZpbHRlcl9idWZmZXJfc2l6ZV8gPSBuOyB9Ci0KLSAgICAvLyBTZXRzIHRoZSBzaXplIG9mIHRoZSBwdXRiYWNrIGJ1ZmZlciBmb3IgZmlsdGVycyBhbmQgZGV2aWNlcyB0byBiZSBhZGRlZAotICAgIC8vIHRvIHRoaXMgY2hhaW4uIERvZXMgbm90IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGZvciBmaWx0ZXJzIG9yCi0gICAgLy8gZGV2aWNlcyBhbHJlYWR5IGFkZGVkLgotICAgIHZvaWQgc2V0X3BiYWNrX3NpemUoc3RkOjpzdHJlYW1zaXplIG4pIAotICAgICAgICB7IHBpbXBsXy0+cGJhY2tfc2l6ZV8gPSBuOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS1EZXZpY2UgaW50ZXJmYWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayhzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSk7Ci0KLSAgICAvLy0tLS0tLS0tLS1EaXJlY3QgY29tcG9uZW50IGFjY2Vzcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoaW50IG4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihuKSA+PSBzaXplKCkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6b3V0X29mX3JhbmdlKCJiYWQgY2hhaW4gb2Zmc2V0IikpOwotICAgICAgICByZXR1cm4gKCpuZG5ib29zdDo6bmV4dChsaXN0KCkuYmVnaW4oKSwgbikpLT5jb21wb25lbnRfdHlwZSgpOwotICAgIH0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLSAgICAvLyBEZXByZWNhdGVkLgotICAgIHRlbXBsYXRlPGludCBOPgotICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvJiBjb21wb25lbnRfdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGNvbXBvbmVudF90eXBlKE4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbikgY29uc3QgeyByZXR1cm4gY29tcG9uZW50KG4sIG5kbmJvb3N0Ojp0eXBlPFQ+KCkpOyB9Ci0KLSAgICAvLyBEZXByZWNhdGVkLgotICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUPiAKLSAgICBUKiBjb21wb25lbnQoKSBjb25zdCB7IHJldHVybiBjb21wb25lbnQ8VD4oTik7IH0KLSNlbmRpZgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgIHByaXZhdGU6Ci0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbiwgbmRuYm9vc3Q6OnR5cGU8VD4pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihuKSA+PSBzaXplKCkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6b3V0X29mX3JhbmdlKCJiYWQgY2hhaW4gb2Zmc2V0IikpOwotICAgICAgICBzdHJlYW1idWZfdHlwZSogbGluayA9ICpuZG5ib29zdDo6bmV4dChsaXN0KCkuYmVnaW4oKSwgbik7Ci0gICAgICAgIGlmIChORE5CT09TVF9JT1NUUkVBTVNfQ09NUEFSRV9UWVBFX0lEKGxpbmstPmNvbXBvbmVudF90eXBlKCksIHR5cGVpZChUKSkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGxpbmstPmNvbXBvbmVudF9pbXBsKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci1wdWJsaWM6Ci0KLSAgICAvLy0tLS0tLS0tLS1Db250YWluZXItbGlrZSBpbnRlcmZhY2UtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3RfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICBzdHJlYW1idWZfdHlwZSYgZnJvbnQoKSB7IHJldHVybiAqbGlzdCgpLmZyb250KCk7IH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0gocHVzaCwgbW9kZSwgY2hhcl90eXBlLCBwdXNoX2ltcGwpCi0gICAgdm9pZCBwb3AoKTsKLSAgICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gbGlzdCgpLmVtcHR5KCk7IH0KLSAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGxpc3QoKS5zaXplKCk7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAvLy0tLS0tLS0tLS1BZGRpdGlvbmFsIGkvbyBmdW5jdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFpbiBpcyBub24tZW1wdHkgYW5kIGl0cyBmaW5hbCBsaW5rCi0gICAgLy8gaXMgYSBzb3VyY2Ugb3Igc2luaywgaS5lLiwgaWYgaXQgaXMgcmVhZHkgdG8gcGVyZm9ybSBpL28uCi0gICAgYm9vbCBpc19jb21wbGV0ZSgpIGNvbnN0OwotICAgIGJvb2wgYXV0b19jbG9zZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSk7Ci0gICAgYm9vbCBzeW5jKCkgeyByZXR1cm4gZnJvbnQoKS5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpICE9IC0xOyB9Ci0gICAgYm9vbCBzdHJpY3Rfc3luYygpOwotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgcHVzaF9pbXBsKGNvbnN0IFQmIHQsIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IC0xLCAKLSAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcGJhY2tfc2l6ZSA9IC0xKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFQ+Ojp0eXBlICBjYXRlZ29yeTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB1bndyYXBfaW9zPFQ+Ojp0eXBlICAgICAgICAgICAgICBjb21wb25lbnRfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBzdHJlYW1fYnVmZmVyPAotICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSksCi0gICAgICAgICAgICAgICAgICAgIEFsbG9jLCBNb2RlCi0gICAgICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3Q7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdF90eXBlOjppdGVyYXRvciAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBNb2RlPjo6dmFsdWUpKTsKLSAgICAgICAgaWYgKGlzX2NvbXBsZXRlKCkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6bG9naWNfZXJyb3IoImNoYWluIGNvbXBsZXRlIikpOwotICAgICAgICBzdHJlYW1idWZfdHlwZSogcHJldiA9ICFlbXB0eSgpID8gbGlzdCgpLmJhY2soKSA6IDA7Ci0gICAgICAgIGJ1ZmZlcl9zaXplID0KLSAgICAgICAgICAgIGJ1ZmZlcl9zaXplICE9IC0xID8KLSAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSA6Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKHQpOwotICAgICAgICBwYmFja19zaXplID0KLSAgICAgICAgICAgIHBiYWNrX3NpemUgIT0gLTEgPwotICAgICAgICAgICAgICAgIHBiYWNrX3NpemUgOgotICAgICAgICAgICAgICAgIHBpbXBsXy0+cGJhY2tfc2l6ZV87Ci0gICAgICAgIHN0ZDo6YXV0b19wdHI8c3RyZWFtYnVmX3Q+Ci0gICAgICAgICAgICBidWYobmV3IHN0cmVhbWJ1Zl90KHQsIGJ1ZmZlcl9zaXplLCBwYmFja19zaXplKSk7Ci0gICAgICAgIGxpc3QoKS5wdXNoX2JhY2soYnVmLmdldCgpKTsKLSAgICAgICAgYnVmLnJlbGVhc2UoKTsKLSAgICAgICAgaWYgKGlzX2RldmljZTxjb21wb25lbnRfdHlwZT46OnZhbHVlKSB7Ci0gICAgICAgICAgICBwaW1wbF8tPmZsYWdzXyB8PSBmX2NvbXBsZXRlIHwgZl9vcGVuOwotICAgICAgICAgICAgZm9yICggaXRlcmF0b3IgZmlyc3QgPSBsaXN0KCkuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBsaXN0KCkuZW5kKCk7Ci0gICAgICAgICAgICAgICAgICBmaXJzdCAhPSBsYXN0OwotICAgICAgICAgICAgICAgICAgKytmaXJzdCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKCpmaXJzdCktPnNldF9uZWVkc19jbG9zZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwcmV2KSBwcmV2LT5zZXRfbmV4dChsaXN0KCkuYmFjaygpKTsKLSAgICAgICAgbm90aWZ5KCk7Ci0gICAgfQotCi0gICAgbGlzdF90eXBlJiBsaXN0KCkgeyByZXR1cm4gcGltcGxfLT5saW5rc187IH0KLSAgICBjb25zdCBsaXN0X3R5cGUmIGxpc3QoKSBjb25zdCB7IHJldHVybiBwaW1wbF8tPmxpbmtzXzsgfQotICAgIHZvaWQgcmVnaXN0ZXJfY2xpZW50KGNsaWVudF90eXBlKiBjbGllbnQpIHsgcGltcGxfLT5jbGllbnRfID0gY2xpZW50OyB9Ci0gICAgdm9pZCBub3RpZnkoKSB7IGlmIChwaW1wbF8tPmNsaWVudF8pIHBpbXBsXy0+Y2xpZW50Xy0+bm90aWZ5KCk7IH0KLQotICAgIC8vLS0tLS0tLS0tLU5lc3RlZCBjbGFzc2VzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHN0YXRpYyB2b2lkIGNsb3NlKHN0cmVhbWJ1Zl90eXBlKiBiLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG0pCi0gICAgewotICAgICAgICBpZiAobSA9PSBORE5CT09TVF9JT1M6Om91dCAmJiBpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkKLSAgICAgICAgICAgIGItPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7Ci0gICAgICAgIGItPmNsb3NlKG0pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9uZXh0KHN0cmVhbWJ1Zl90eXBlKiBiLCBzdHJlYW1idWZfdHlwZSogbmV4dCkKLSAgICB7IGItPnNldF9uZXh0KG5leHQpOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYXV0b19jbG9zZShzdHJlYW1idWZfdHlwZSogYiwgYm9vbCBjbG9zZSkKLSAgICB7IGItPnNldF9hdXRvX2Nsb3NlKGNsb3NlKTsgfQotCi0gICAgc3RydWN0IGNsb3NlciAgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjxzdHJlYW1idWZfdHlwZSosIHZvaWQ+ICB7Ci0gICAgICAgIGNsb3NlcihORE5CT09TVF9JT1M6Om9wZW5tb2RlIG0pIDogbW9kZV8obSkgeyB9Ci0gICAgICAgIHZvaWQgb3BlcmF0b3IoKSAoc3RyZWFtYnVmX3R5cGUqIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsb3NlKGIsIG1vZGVfKTsKLSAgICAgICAgfQotICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGVfOwotICAgIH07Ci0gICAgZnJpZW5kIHN0cnVjdCBjbG9zZXI7Ci0KLSAgICBlbnVtIGZsYWdzIHsKLSAgICAgICAgZl9jb21wbGV0ZSA9IDEsCi0gICAgICAgIGZfb3BlbiA9IDIsCi0gICAgICAgIGZfYXV0b19jbG9zZSA9IDQKLSAgICB9OwotCi0gICAgc3RydWN0IGNoYWluX2ltcGwgewotICAgICAgICBjaGFpbl9pbXBsKCkKLSAgICAgICAgICAgIDogY2xpZW50XygwKSwgZGV2aWNlX2J1ZmZlcl9zaXplXyhkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSksCi0gICAgICAgICAgICAgIGZpbHRlcl9idWZmZXJfc2l6ZV8oZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUpLAotICAgICAgICAgICAgICBwYmFja19zaXplXyhkZWZhdWx0X3BiYWNrX2J1ZmZlcl9zaXplKSwKLSAgICAgICAgICAgICAgZmxhZ3NfKGZfYXV0b19jbG9zZSkKLSAgICAgICAgICAgIHsgfQotICAgICAgICB+Y2hhaW5faW1wbCgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsgY2xvc2UoKTsgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgICAgICAgICB0cnkgeyByZXNldCgpOyB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICAgICAgfQotICAgICAgICB2b2lkIGNsb3NlKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoKGZsYWdzXyAmIGZfb3BlbikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBmbGFnc18gJj0gfmZfb3BlbjsKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2J1ZmZlcjwgYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIE1vZGU+ID4gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChmbGFnc18gJiBmX2NvbXBsZXRlKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBudWxsLm9wZW4oYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIE1vZGU+KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2V0X25leHQobGlua3NfLmJhY2soKSwgJm51bGwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGxpbmtzXy5mcm9udCgpLT5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlX2ZvcmVhY2goCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NfLnJiZWdpbigpLCBsaW5rc18ucmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZXIoTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfZm9yZWFjaCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NfLmJlZ2luKCksIGxpbmtzXy5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlcihORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9mb3JlYWNoKAotICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NfLmJlZ2luKCksIGxpbmtzXy5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZXIoTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB2b2lkIHJlc2V0KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3RfdHlwZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICAgICAgICAgICAgZm9yICggaXRlcmF0b3IgZmlyc3QgPSBsaW5rc18uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gbGlua3NfLmVuZCgpOwotICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ICE9IGxhc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgKytmaXJzdCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoIChmbGFnc18gJiBmX2NvbXBsZXRlKSA9PSAwIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKGZsYWdzXyAmIGZfYXV0b19jbG9zZSkgPT0gMCApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldF9hdXRvX2Nsb3NlKCpmaXJzdCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVhbWJ1Zl90eXBlKiBidWYgPSAwOwotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN3YXAoYnVmLCAqZmlyc3QpOwotICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaW5rc18uY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBmbGFnc18gJj0gfmZfY29tcGxldGU7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfICY9IH5mX29wZW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGxpc3RfdHlwZSAgICAgICAgbGlua3NfOwotICAgICAgICBjbGllbnRfdHlwZSogICAgIGNsaWVudF87Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAgZGV2aWNlX2J1ZmZlcl9zaXplXywKLSAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfYnVmZmVyX3NpemVfLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBiYWNrX3NpemVfOwotICAgICAgICBpbnQgICAgICAgICAgICAgIGZsYWdzXzsKLSAgICB9OwotICAgIGZyaWVuZCBzdHJ1Y3QgY2hhaW5faW1wbDsKLQotICAgIC8vLS0tLS0tLS0tLU1lbWJlciBkYXRhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotcHJpdmF0ZToKLSAgICBzaGFyZWRfcHRyPGNoYWluX2ltcGw+IHBpbXBsXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4obmFtZSwgY2F0ZWdvcnkpCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBhIHRlbXBsYXRlIGRlcml2ZWQgZnJvbSBjaGFpbl9iYXNlIGFwcHJvcHJpYXRlIGZvciBhCi0vLyAgICAgIHBhcnRpY3VsYXIgaS9vIGNhdGVnb3J5LiBUaGUgdGVtcGxhdGUgaGFzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgIFRyIC0gVGhlIGNoYXJhY3RlciB0cmFpdHMgdHlwZS4KLS8vICAgICAgQWxsb2MgLSBUaGUgYWxsb2NhdG9yIHR5cGUuCi0vLyBNYWNybyBwYXJhbWV0ZXJzOgotLy8gICAgICBuYW1lXyAtIFRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBkZWZpbmVkLgotLy8gICAgICBjYXRlZ29yeV8gLSBUaGUgaS9vIGNhdGVnb3J5IG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBkZWZpbmVkLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4obmFtZV8sIGRlZmF1bHRfY2hhcl8pIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBkZWZhdWx0X2NoYXJfLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFRyID0gTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKENoKSwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+IFwKLSAgICBjbGFzcyBuYW1lXyA6IHB1YmxpYyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNoYWluX2Jhc2U8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoLCBUciwgQWxsb2MsIE1vZGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgID4gXAotICAgIHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBkZXZpY2VfdGFnLCBNb2RlIHsgfTsgXAotICAgICAgICB0eXBlZGVmIE1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7IFwKLSAgICBwcml2YXRlOiBcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbl9iYXNlPCBcCi0gICAgICAgICAgICAgICAgICAgIG5hbWVfPE1vZGUsIENoLCBUciwgQWxsb2M+LCBcCi0gICAgICAgICAgICAgICAgICAgIENoLCBUciwgQWxsb2MsIE1vZGUgXAotICAgICAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIENoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsgXAotICAgICAgICB0eXBlZGVmIFRyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOyBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlICAgICAgICAgaW50X3R5cGU7IFwKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5cGUgICAgICAgICBvZmZfdHlwZTsgXAotICAgICAgICBuYW1lXygpIHsgfSBcCi0gICAgICAgIG5hbWVfKGNvbnN0IG5hbWVfJiByaHMpIDogYmFzZV90eXBlKHJocykgeyB9IFwKLSAgICAgICAgbmFtZV8mIG9wZXJhdG9yPShjb25zdCBuYW1lXyYgcmhzKSBcCi0gICAgICAgIHsgYmFzZV90eXBlOjpvcGVyYXRvcj0ocmhzKTsgcmV0dXJuICp0aGlzOyB9IFwKLSAgICB9OyBcCi0gICAgLyoqLwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4oY2hhaW4sIGNoYXIpCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTF9DSEFJTih3Y2hhaW4sIHdjaGFyX3QpCi0jdW5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0xfQ0hBSU4KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY2hhaW5fY2xpZW50LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjaGFpbl9jbGllbnQKLS8vIERlc2NyaXB0aW9uOiBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgcHJvdmlkZSBhY2Nlc3MgdG8gYW4gdW5kZXJseWluZyBjaGFpbgotLy8gICAgICB1c2luZyBhbiBpbnRlcmZhY2Ugc2ltaWxhciB0byB0aGUgY2hhaW5zLgotLy8gU3ViY2xhc3NlczogdGhlIHZhcmlvdXMgc3RyZWFtIGFuZCBzdHJlYW0gYnVmZmVyIHRlbXBsYXRlcy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbj4KLWNsYXNzIGNoYWluX2NsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaGFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYWluX3R5cGU6OmNoYXJfdHlwZSAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFpbl90eXBlOjp0cmFpdHNfdHlwZSAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFpbl90eXBlOjpzaXplX3R5cGUgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhaW5fdHlwZTo6bW9kZSAgICAgICAgIG1vZGU7Ci0KLSAgICBjaGFpbl9jbGllbnQoY2hhaW5fdHlwZSogY2huID0gMCkgOiBjaGFpbl8oY2huICkgeyB9Ci0gICAgY2hhaW5fY2xpZW50KGNoYWluX2NsaWVudCogY2xpZW50KSA6IGNoYWluXyhjbGllbnQtPmNoYWluXykgeyB9Ci0gICAgdmlydHVhbCB+Y2hhaW5fY2xpZW50KCkgeyB9Ci0KLSAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyYgY29tcG9uZW50X3R5cGUoaW50IG4pIGNvbnN0Ci0gICAgeyByZXR1cm4gY2hhaW5fLT5jb21wb25lbnRfdHlwZShuKTsgfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgIC8vIERlcHJlY2F0ZWQuCi0gICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBjb21wb25lbnRfdHlwZTxOPigpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbikgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBjb21wb25lbnQ8VD4obik7IH0KLQotICAgIC8vIERlcHJlY2F0ZWQuCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFQ+Ci0gICAgVCogY29tcG9uZW50KCkgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPk5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBjb21wb25lbnQ8TiwgVD4oKTsgfQotI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIGNvbXBvbmVudChpbnQgbiwgbmRuYm9vc3Q6OnR5cGU8VD4gdCkgY29uc3QKLSAgICB7IHJldHVybiBjaGFpbl8tPmNvbXBvbmVudChuLCB0KTsgfQotI2VuZGlmCi0KLSAgICBib29sIGlzX2NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gY2hhaW5fLT5pc19jb21wbGV0ZSgpOyB9Ci0gICAgYm9vbCBhdXRvX2Nsb3NlKCkgY29uc3QgeyByZXR1cm4gY2hhaW5fLT5hdXRvX2Nsb3NlKCk7IH0KLSAgICB2b2lkIHNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpIHsgY2hhaW5fLT5zZXRfYXV0b19jbG9zZShjbG9zZSk7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCkgeyByZXR1cm4gY2hhaW5fLT5zdHJpY3Rfc3luYygpOyB9Ci0gICAgdm9pZCBzZXRfZGV2aWNlX2J1ZmZlcl9zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IGNoYWluXy0+c2V0X2RldmljZV9idWZmZXJfc2l6ZShuKTsgfQotICAgIHZvaWQgc2V0X2ZpbHRlcl9idWZmZXJfc2l6ZShzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyBjaGFpbl8tPnNldF9maWx0ZXJfYnVmZmVyX3NpemUobik7IH0KLSAgICB2b2lkIHNldF9wYmFja19zaXplKHN0ZDo6c3RyZWFtc2l6ZSBuKSB7IGNoYWluXy0+c2V0X3BiYWNrX3NpemUobik7IH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0gocHVzaCwgbW9kZSwgY2hhcl90eXBlLCBwdXNoX2ltcGwpCi0gICAgdm9pZCBwb3AoKSB7IGNoYWluXy0+cG9wKCk7IH0KLSAgICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gY2hhaW5fLT5lbXB0eSgpOyB9Ci0gICAgc2l6ZV90eXBlIHNpemUoKSB7IHJldHVybiBjaGFpbl8tPnNpemUoKTsgfQotICAgIHZvaWQgcmVzZXQoKSB7IGNoYWluXy0+cmVzZXQoKTsgfQotCi0gICAgLy8gUmV0dXJucyBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgY2hhaW4uCi0gICAgY2hhaW5fdHlwZSBmaWx0ZXJzKCkgeyByZXR1cm4gKmNoYWluXzsgfQotICAgIGNoYWluX3R5cGUgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuICpjaGFpbl87IH0KLXByb3RlY3RlZDoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgcHVzaF9pbXBsKGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpCi0gICAgeyBjaGFpbl8tPnB1c2godCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkpOyB9Ci0gICAgY2hhaW5fdHlwZSYgcmVmKCkgeyByZXR1cm4gKmNoYWluXzsgfQotICAgIHZvaWQgc2V0X2NoYWluKGNoYWluX3R5cGUqIGMpCi0gICAgeyBjaGFpbl8gPSBjOyBjaGFpbl8tPnJlZ2lzdGVyX2NsaWVudCh0aGlzKTsgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKSAmJiBcCi0gICAgKCFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUywgdHlwZW5hbWUgQywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQSwgdHlwZW5hbWUgTT4KLSAgICBmcmllbmQgY2xhc3MgY2hhaW5fYmFzZTsKLSNlbHNlCi0gICAgcHVibGljOgotI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeSgpIHsgfQotcHJpdmF0ZToKLSAgICBjaGFpbl90eXBlKiBjaGFpbl87Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgY2hhaW5fYmFzZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBpb3N0cmVhbXM6OnJlYWQoKmxpc3QoKS5mcm9udCgpLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZSgqbGlzdCgpLmZyb250KCksIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgc3RkOjpzdHJlYW1wb3MgY2hhaW5fYmFzZTxTZWxmLCBDaCwgVHIsIEFsbG9jLCBNb2RlPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSkKLXsgcmV0dXJuIGlvc3RyZWFtczo6c2VlaygqbGlzdCgpLmZyb250KCksIG9mZiwgd2F5KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+OjpyZXNldCgpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBwaW1wbF8tPmNsb3NlKCk7Ci0gICAgcGltcGxfLT5yZXNldCgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotYm9vbCBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+Ojppc19jb21wbGV0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChwaW1wbF8tPmZsYWdzXyAmIGZfY29tcGxldGUpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1ib29sIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OmF1dG9fY2xvc2UoKSBjb25zdAotewotICAgIHJldHVybiAocGltcGxfLT5mbGFnc18gJiBmX2F1dG9fY2xvc2UpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNlbGYsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGNoYWluX2Jhc2U8U2VsZiwgQ2gsIFRyLCBBbGxvYywgTW9kZT46OnNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpCi17Ci0gICAgcGltcGxfLT5mbGFnc18gPQotICAgICAgICAocGltcGxfLT5mbGFnc18gJiB+Zl9hdXRvX2Nsb3NlKSB8Ci0gICAgICAgIChjbG9zZSA/IGZfYXV0b19jbG9zZSA6IDApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotYm9vbCBjaGFpbl9iYXNlPFNlbGYsIENoLCBUciwgQWxsb2MsIE1vZGU+OjpzdHJpY3Rfc3luYygpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0X3R5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgICBmb3IgKCBpdGVyYXRvciBmaXJzdCA9IGxpc3QoKS5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgIGxhc3QgPSBsaXN0KCkuZW5kKCk7Ci0gICAgICAgICAgZmlyc3QgIT0gbGFzdDsKLSAgICAgICAgICArK2ZpcnN0ICkKLSAgICB7Ci0gICAgICAgIGJvb2wgcyA9ICgqZmlyc3QpLT5zdHJpY3Rfc3luYygpOwotICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgczsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU2VsZiwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgY2hhaW5fYmFzZTxTZWxmLCBDaCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9wKCkKLXsKLSAgICBORE5CT09TVF9BU1NFUlQoIWVtcHR5KCkpOwotICAgIGlmIChhdXRvX2Nsb3NlKCkpCi0gICAgICAgIHBpbXBsXy0+Y2xvc2UoKTsKLSAgICBzdHJlYW1idWZfdHlwZSogYnVmID0gMDsKLSAgICBzdGQ6OnN3YXAoYnVmLCBsaXN0KCkuYmFjaygpKTsKLSAgICBidWYtPnNldF9hdXRvX2Nsb3NlKGZhbHNlKTsKLSAgICBidWYtPnNldF9uZXh0KDApOwotICAgIGRlbGV0ZSBidWY7Ci0gICAgbGlzdCgpLnBvcF9iYWNrKCk7Ci0gICAgcGltcGxfLT5mbGFnc18gJj0gfmZfY29tcGxldGU7Ci0gICAgaWYgKGF1dG9fY2xvc2UoKSB8fCBsaXN0KCkuZW1wdHkoKSkKLSAgICAgICAgcGltcGxfLT5mbGFnc18gJj0gfmZfb3BlbjsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hBSU5fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NTEzZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW8+ICAvLyBFT0YuCi0jaW5jbHVkZSA8c3RyaW5nPiAgLy8gc3RkOjpjaGFyX3RyYWl0cy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0jIGluY2x1ZGUgPGN3Y2hhcj4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OndpbnRfdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLyBEaW5rdW13YXJlIHRoYXQgY29tZXMgd2l0aCBRTlggTW9tZW50aWNzIDYuMy4wLCA0LjAuMiwgaW5jb3JyZWN0bHkgZGVmaW5lcwotLy8gdGhlIEVPRiBhbmQgV0VPRiBtYWNyb3MgdG8gbm90IHN0ZDo6IHF1YWxpZnkgdGhlIHdpbnRfdCB0eXBlIChhbmQgc28gZG9lcwotLy8gU3VuIEMrKyA1LjggKyBTVExwb3J0IDQpLiBGaXggYnkgcGxhY2luZyB0aGUgZGVmIGluIHRoaXMgc2NvcGUuCi0vLyBOT1RFOiBVc2UgTkROQk9PU1RfV09SS0FST1VORD8KLSNpZiAoZGVmaW5lZChfX1FOWF9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCKSkgIFwKLSAgICB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQotdXNpbmcgOjpzdGQ6OndpbnRfdDsKLSNlbmRpZgotCi1jb25zdCBpbnQgV09VTERfQkxPQ0sgPSAoaW50KSAoRU9GIC0gMSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotY29uc3Qgc3RkOjp3aW50X3QgV1dPVUxEX0JMT0NLID0gKHN0ZDo6d2ludF90KSAoV0VPRiAtIDEpOwotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RydWN0IGNoYXJfdHJhaXRzOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2hhcl90cmFpdHM8Y2hhcj4gOiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcikgewotICAgIHN0YXRpYyBjaGFyIG5ld2xpbmUoKSB7IHJldHVybiAnXG4nOyB9Ci0gICAgc3RhdGljIGludCBnb29kKCkgeyByZXR1cm4gJ1xuJzsgfQotICAgIHN0YXRpYyBpbnQgd291bGRfYmxvY2soKSB7IHJldHVybiBXT1VMRF9CTE9DSzsgfQotICAgIHN0YXRpYyBib29sIGlzX2dvb2QoaW50IGMpIHsgcmV0dXJuIGMgIT0gRU9GICYmIGMgIT0gV09VTERfQkxPQ0s7IH0KLSAgICBzdGF0aWMgYm9vbCBpc19lb2YoaW50IGMpIHsgcmV0dXJuIGMgPT0gRU9GOyB9Ci0gICAgc3RhdGljIGJvb2wgd291bGRfYmxvY2soaW50IGMpIHsgcmV0dXJuIGMgPT0gV09VTERfQkxPQ0s7IH0KLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotdGVtcGxhdGU8Pgotc3RydWN0IGNoYXJfdHJhaXRzPHdjaGFyX3Q+IDogc3RkOjpjaGFyX3RyYWl0czx3Y2hhcl90PiB7Ci0gICAgc3RhdGljIHdjaGFyX3QgbmV3bGluZSgpIHsgcmV0dXJuIEwnXG4nOyB9Ci0gICAgc3RhdGljIHN0ZDo6d2ludF90IGdvb2QoKSB7IHJldHVybiBMJ1xuJzsgfQotICAgIHN0YXRpYyBzdGQ6OndpbnRfdCB3b3VsZF9ibG9jaygpIHsgcmV0dXJuIFdXT1VMRF9CTE9DSzsgfQotICAgIHN0YXRpYyBib29sIGlzX2dvb2Qoc3RkOjp3aW50X3QgYykgeyByZXR1cm4gYyAhPSBXRU9GICYmIGMgIT0gV1dPVUxEX0JMT0NLOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNfZW9mKHN0ZDo6d2ludF90IGMpIHsgcmV0dXJuIGMgPT0gV0VPRjsgfQotICAgIHN0YXRpYyBib29sIHdvdWxkX2Jsb2NrKHN0ZDo6d2ludF90IGMpIHsgcmV0dXJuIGMgPT0gV1dPVUxEX0JMT0NLOyB9Ci19OwotI2VuZGlmCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGVja2VkX29wZXJhdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2hlY2tlZF9vcGVyYXRpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEyNzA2NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jaGVja2VkX29wZXJhdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBpbXBsZW1lbnRhdGlvbnMgb2YgZ2V0LCByZWFkLCBwdXQsIHdyaXRlIGFuZCBzZWVrIHdoaWNoCi0vLyBjaGVjayBhIGRldmljZSdzIG1vZGUgYXQgcnVudGltZSBpbnN0ZWFkIG9mIGNvbXBpbGUgdGltZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIRUNLRURfT1BFUkFUSU9OU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEVDS0VEX09QRVJBVElPTlNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvdW5yZWFjaGFibGVfcmV0dXJuLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZ2V0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcHV0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IHJlYWRfd3JpdGVfaWZfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgc2Vla19pZl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0X2lmKFQmIHQpCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpkaXNwYXRjaDxULCBpbnB1dCwgb3V0cHV0Pjo6dHlwZSB0YWc7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF93cml0ZV9pZl9pbXBsPHRhZz46OmdldCh0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXJlYWRfaWYoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmRpc3BhdGNoPFQsIGlucHV0LCBvdXRwdXQ+Ojp0eXBlIHRhZzsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX3dyaXRlX2lmX2ltcGw8dGFnPjo6cmVhZCh0LCBzLCBuKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWJvb2wgcHV0X2lmKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZGlzcGF0Y2g8VCwgb3V0cHV0LCBpbnB1dD46OnR5cGUgdGFnOwotICAgIHJldHVybiBkZXRhaWw6OnJlYWRfd3JpdGVfaWZfaW1wbDx0YWc+OjpwdXQodCwgYyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHdyaXRlX2lmCi0gICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpkaXNwYXRjaDxULCBvdXRwdXQsIGlucHV0Pjo6dHlwZSB0YWc7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF93cml0ZV9pZl9pbXBsPHRhZz46OndyaXRlKHQsIHMsIG4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6c3RyZWFtcG9zCi1zZWVrX2lmKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgCi0gICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLXsgCi0gICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRpc3BhdGNoPFQsIHJhbmRvbV9hY2Nlc3MsIGFueV90YWc+Ojp0eXBlIHRhZzsKLSAgICByZXR1cm4gc2Vla19pZl9pbXBsPHRhZz46OnNlZWsodCwgb2ZmLCB3YXksIHdoaWNoKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tU3BlY2lhbGl6YXRpb25zIG9mIHJlYWRfd3JpdGVfaWZfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX3dyaXRlX2lmX2ltcGw8aW5wdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBnZXQoVCYgdCkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OmdldCh0KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZCh0LCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF93cml0ZSgpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oZmFsc2UpIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZShUJiwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiwgc3RkOjpzdHJlYW1zaXplKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3dyaXRlKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF93cml0ZV9pZl9pbXBsPG91dHB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGdldChUJikKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICByZWFkKFQmLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqLCBzdGQ6OnN0cmVhbXNpemUpCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfcmVhZCgpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpwdXQodCwgYyk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZSggVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCAKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6d3JpdGUodCwgcywgbik7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tU3BlY2lhbGl6YXRpb25zIG9mIHNlZWtfaWZfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2lmX2ltcGw8cmFuZG9tX2FjY2Vzcz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIAotICAgIHNlZWsoIFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnNlZWsodCwgb2ZmLCB3YXksIHdoaWNoKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfaWZfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MgCi0gICAgc2VlayhUJiwgc3RyZWFtX29mZnNldCwgTkROQk9PU1RfSU9TOjpzZWVrZGlyLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlKQotICAgIHsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3NlZWsoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKHN0ZDo6c3RyZWFtcG9zKCkpIH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ0hFQ0tFRF9PUEVSQVRJT05TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGRlNDU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2Nsb3NlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0xPU0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DTE9TRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIE5ETkJPT1NUX0lPUwotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2UoVCYgdCk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotICAgIAotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlX2FsbChUJiB0KQoteyAKLSAgICB0cnkgewotICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZSh0LCBORE5CT09TVF9JT1M6OmluKTsKLSAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHQsIE5ETkJPT1NUX0lPUzo6b3V0KTsKLSAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgdGhyb3c7Ci0gICAgfQotICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHQsIE5ETkJPT1NUX0lPUzo6b3V0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLXZvaWQgY2xvc2VfYWxsKFQmIHQsIFNpbmsmIHNuaykKLXsgCi0gICAgdHJ5IHsKLSAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodCwgc25rLCBORE5CT09TVF9JT1M6OmluKTsKLSAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHQsIHNuaywgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgICAgICB9IGNhdGNoICguLi4pIHsgfQotICAgICAgICB0aHJvdzsKLSAgICB9Ci0gICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodCwgc25rLCBORE5CT09TVF9JT1M6Om91dCk7Ci19Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuIAotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvY2xvc2UuaHBwPgotI2Vsc2UgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNsb3NlX2ltcGw7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlKFQmIHQpIHsgZGV0YWlsOjpjbG9zZV9hbGwodCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgCi0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NUUklDVAotICAgIE5ETkJPT1NUX0FTU0VSVCh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluIHx8IHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KTsKLSNlbHNlCi0gICAgaWYgKHdoaWNoID09IChORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQpKSB7Ci0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgZGV0YWlsOjpjbG9zZV9pbXBsPFQ+OjpjbG9zZShkZXRhaWw6OnVud3JhcCh0KSwgd2hpY2gpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLXZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyAKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1RSSUNUCi0gICAgTkROQk9PU1RfQVNTRVJUKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gfHwgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpOwotI2Vsc2UKLSAgICBpZiAod2hpY2ggPT0gKE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCkpIHsKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwodCwgc25rKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGRldGFpbDo6Y2xvc2VfaW1wbDxUPjo6Y2xvc2UoZGV0YWlsOjp1bndyYXAodCksIHNuaywgd2hpY2gpOyAKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjbG9zZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXN0cnVjdCBjbG9zZV9ib29zdF9zdHJlYW0geyB9Owotc3RydWN0IGNsb3NlX2ZpbHRlcmluZ19zdHJlYW0geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNsb3NlX3RhZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgIHVud3JhcHBlZDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwKLSAgICAgICAgICAgICAgICBtcGw6Om5vdF88IGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBjbG9zYWJsZV90YWc+ID4sCi0gICAgICAgICAgICAgICAgYW55X3RhZywKLSAgICAgICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfYm9vc3Rfc3RyZWFtPHVud3JhcHBlZD4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2Jvb3N0X3N0cmVhbV9idWZmZXI8dW53cmFwcGVkPgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgY2xvc2VfYm9vc3Rfc3RyZWFtLAotICAgICAgICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgICAgICBpc19maWx0ZXJpbmdfc3RyZWFtPHVud3JhcHBlZD4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2ZpbHRlcmluZ19zdHJlYW1idWY8dW53cmFwcGVkPgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgY2xvc2VfZmlsdGVyaW5nX3N0cmVhbSwKLSAgICAgICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBkdWFsX3VzZT4KLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIHR3b19zZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2xvc2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgY2xvc2VfaW1wbDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNsb3NlX3RhZzxUPjo6dHlwZT4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICBpb3N0cmVhbXM6OmZsdXNoKHQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KSB7Ci0gICAgICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICAgICAgaW9zdHJlYW1zOjpmbHVzaCh0LCBuYik7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDxjbG9zZV9ib29zdF9zdHJlYW0+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQpCi0gICAgewotICAgICAgICB0LmNsb3NlKCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgIHQuY2xvc2UoKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xvc2VfaW1wbDxjbG9zZV9maWx0ZXJpbmdfc3RyZWFtPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgY29uc3QgYm9vbCBpbiA9ICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgaWYgKGluID09ICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSAmJiB0LmlzX2NvbXBsZXRlKCkpCi0gICAgICAgICAgICB0LnBvcCgpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPGNsb3NhYmxlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIGNvbnN0IGJvb2wgaW4gPSAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGlucHV0Pjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICFpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWU7Ci0gICAgICAgIGlmIChpbiA9PSAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikpCi0gICAgICAgICAgICB0LmNsb3NlKCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgY29uc3QgYm9vbCBpbiA9ICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgaWYgKGluID09ICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSkgewotICAgICAgICAgICAgbm9uX2Jsb2NraW5nX2FkYXB0ZXI8U2luaz4gbmIoc25rKTsKLSAgICAgICAgICAgIHQuY2xvc2UobmIpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8dHdvX3NlcXVlbmNlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSB7IHQuY2xvc2Uod2hpY2gpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICB0LmNsb3NlKG5iLCB3aGljaCk7Ci0gICAgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0xPU0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb2RlX2NvbnZlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb2RlX2NvbnZlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyYzI5ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29kZV9jb252ZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDI1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBtYWNoaW5lcnkgZm9yIHBlcmZvcm1pbmcgY29kZSBjb252ZXJzaW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFX0NPTlZFUlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVfQ09OVkVSVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TKSB8fCBcCi0gICAgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFKSBcCi0gICAgLyoqLwotIyBlcnJvciBjb2RlIGNvbnZlcnNpb24gbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtCi0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgIC8vIG1heC4KLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZW1jcHkuCi0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgIC8vIERFRFVDRURfVFlQRU5BTUUsIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAgLy8gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2NvbmNlcHRfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RpcmVjdF9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hvbGRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hlbHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kb3VibGVfb2JqZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIGZhaWx1cmUsIG9wZW5tb2RlLCBpbnQgdHlwZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9vcHRpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+IC8vIEJvcmxhbmQgNS54Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1zdHJ1Y3QgY29kZV9jb252ZXJzaW9uX2Vycm9yIDogTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgewotICAgIGNvZGVfY29udmVyc2lvbl9lcnJvcigpIAotICAgICAgICA6IE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJjb2RlIGNvbnZlcnNpb24gZXJyb3IiKQotICAgICAgICB7IH0KLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzdHJuY3B5X2lmX3NhbWUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBIZWxwZXIgdGVtcGxhdGUgZm9yIHN0cm5jcHlfaWZfc2FtZSwgYmVsb3cuCi10ZW1wbGF0ZTxib29sIEI+Ci1zdHJ1Y3Qgc3RybmNweV9pZl9zYW1lX2ltcGw7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzdHJuY3B5X2lmX3NhbWVfaW1wbDx0cnVlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci0gICAgc3RhdGljIENoKiBjb3B5KENoKiB0Z3QsIGNvbnN0IENoKiBzcmMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhDaCk6OmNvcHkodGd0LCBzcmMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc3RybmNweV9pZl9zYW1lX2ltcGw8ZmFsc2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcmMsIHR5cGVuYW1lIFRndD4KLSAgICBzdGF0aWMgVGd0KiBjb3B5KFRndCogdGd0LCBjb25zdCBTcmMqLCBzdGQ6OnN0cmVhbXNpemUpIHsgcmV0dXJuIHRndDsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU3JjLCB0eXBlbmFtZSBUZ3Q+Ci1UZ3QqIHN0cm5jcHlfaWZfc2FtZShUZ3QqIHRndCwgY29uc3QgU3JjKiBzcmMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHR5cGVkZWYgc3RybmNweV9pZl9zYW1lX2ltcGw8aXNfc2FtZTxTcmMsIFRndD46OnZhbHVlPiBpbXBsOwotICAgIHJldHVybiBpbXBsOjpjb3B5KHRndCwgc3JjLCBuKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29udmVyc2lvbl9idWZmZXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gQnVmZmVyIGFuZCBjb252ZXJzaW9uIHN0YXRlIGZvciByZWFkaW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgQ29kZWN2dCwgdHlwZW5hbWUgQWxsb2M+Ci1jbGFzcyBjb252ZXJzaW9uX2J1ZmZlciAKLSAgICA6IHB1YmxpYyBidWZmZXI8Ci0gICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpjb2RlY3Z0X2V4dGVybjxDb2RlY3Z0Pjo6dHlwZSwKLSAgICAgICAgICAgICAgICAgQWxsb2MKLSAgICAgICAgICAgICA+IAotewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29kZWN2dDo6c3RhdGVfdHlwZSBzdGF0ZV90eXBlOwotICAgIGNvbnZlcnNpb25fYnVmZmVyKCkgCi0gICAgICAgIDogYnVmZmVyPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6Y29kZWN2dF9leHRlcm48Q29kZWN2dD46OnR5cGUsCi0gICAgICAgICAgICAgIEFsbG9jCi0gICAgICAgICAgPigwKSAKLSAgICB7IAotICAgICAgICByZXNldCgpOyAKLSAgICB9Ci0gICAgc3RhdGVfdHlwZSYgc3RhdGUoKSB7IHJldHVybiBzdGF0ZV87IH0KLSAgICB2b2lkIHJlc2V0KCkgCi0gICAgeyAKLSAgICAgICAgaWYgKHRoaXMtPnNpemUoKSkgCi0gICAgICAgICAgICB0aGlzLT5zZXQoMCwgMCk7Ci0gICAgICAgIHN0YXRlXyA9IHN0YXRlX3R5cGUoKTsgCi0gICAgfQotcHJpdmF0ZToKLSAgICBzdGF0ZV90eXBlIHN0YXRlXzsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNvbnZlcnRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIENvbnRhaW5zIG1lbWJlciBkYXRhLCBvcGVuL2lzX29wZW4vY2xvc2UgYW5kIGJ1ZmZlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgQ29kZWN2dCwgdHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3QgY29kZV9jb252ZXJ0ZXJfaW1wbCB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjb2RlY3Z0X2V4dGVybjxDb2RlY3Z0Pjo6dHlwZSAgICAgICAgICBleHRlcm5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPERldmljZT46OnR5cGUgICAgICAgICAgICAgIGRldmljZV9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGRldmljZV9jYXRlZ29yeSwgaW5wdXQ+ICAgICAgICAgIGNhbl9yZWFkOwotICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8ZGV2aWNlX2NhdGVnb3J5LCBvdXRwdXQ+ICAgICAgICAgY2FuX3dyaXRlOwotICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8ZGV2aWNlX2NhdGVnb3J5LCBiaWRpcmVjdGlvbmFsPiAgaXNfYmlkaXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAgLy8gRGlzYW1iaWd1YXRpb24gZm9yIFRydTY0LgotICAgICAgICAgICAgICAgIGlzX2JpZGlyLCBiaWRpcmVjdGlvbmFsLAotICAgICAgICAgICAgICAgIGNhbl9yZWFkLCBpbnB1dCwKLSAgICAgICAgICAgICAgICBjYW5fd3JpdGUsIG91dHB1dAotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTsgICAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19kaXJlY3Q8RGV2aWNlPiwKLSAgICAgICAgICAgICAgICBkaXJlY3RfYWRhcHRlcjxEZXZpY2U+LAotICAgICAgICAgICAgICAgIERldmljZQotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3R5cGU7Ci0gICAgdHlwZWRlZiBvcHRpb25hbDwgY29uY2VwdF9hZGFwdGVyPGRldmljZV90eXBlPiA+ICAgICAgICBzdG9yYWdlX3R5cGU7Ci0gICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZTxkZXZpY2VfY2F0ZWdvcnksIHR3b19zZXF1ZW5jZT4gICBpc19kb3VibGU7Ci0gICAgdHlwZWRlZiBjb252ZXJzaW9uX2J1ZmZlcjxDb2RlY3Z0LCBBbGxvYz4gICAgICAgICAgICAgICBidWZmZXJfdHlwZTsKLQotICAgIGNvZGVfY29udmVydGVyX2ltcGwoKSA6IGN2dF8oKSwgZmxhZ3NfKDApIHsgfQotCi0gICAgfmNvZGVfY29udmVydGVyX2ltcGwoKQotICAgIHsgCi0gICAgICAgIHRyeSB7IAotICAgICAgICAgICAgaWYgKGZsYWdzXyAmIGZfb3BlbikgY2xvc2UoKTsgCi0gICAgICAgIH0gY2F0Y2ggKC4uLikgeyAvKiAqLyB9IAotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHZvaWQgb3Blbihjb25zdCBUJiBkZXYsIGludCBidWZmZXJfc2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmIChmbGFnc18gJiBmX29wZW4pCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJhbHJlYWR5IG9wZW4iKSk7Ci0gICAgICAgIGlmIChidWZmZXJfc2l6ZSA9PSAtMSkKLSAgICAgICAgICAgIGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemU7Ci0gICAgICAgIGludCBtYXhfbGVuZ3RoID0gY3Z0Xy5nZXQoKS5tYXhfbGVuZ3RoKCk7Ci0gICAgICAgIGJ1ZmZlcl9zaXplID0gKHN0ZDo6bWF4KShidWZmZXJfc2l6ZSwgMiAqIG1heF9sZW5ndGgpOwotICAgICAgICBpZiAoY2FuX3JlYWQ6OnZhbHVlKSB7Ci0gICAgICAgICAgICBidWZfLmZpcnN0KCkucmVzaXplKGJ1ZmZlcl9zaXplKTsKLSAgICAgICAgICAgIGJ1Zl8uZmlyc3QoKS5zZXQoMCwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNhbl93cml0ZTo6dmFsdWUgJiYgIWlzX2RvdWJsZTo6dmFsdWUpIHsKLSAgICAgICAgICAgIGJ1Zl8uc2Vjb25kKCkucmVzaXplKGJ1ZmZlcl9zaXplKTsKLSAgICAgICAgICAgIGJ1Zl8uc2Vjb25kKCkuc2V0KDAsIDApOwotICAgICAgICB9Ci0gICAgICAgIGRldl8ucmVzZXQoY29uY2VwdF9hZGFwdGVyPGRldmljZV90eXBlPihkZXYpKTsKLSAgICAgICAgZmxhZ3NfID0gZl9vcGVuOwotICAgIH0KLQotICAgIHZvaWQgY2xvc2UoKQotICAgIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnRoaXMsIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqdGhpcywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gJiYgKGZsYWdzXyAmIGZfaW5wdXRfY2xvc2VkKSA9PSAwKSB7Ci0gICAgICAgICAgICBmbGFnc18gfD0gZl9pbnB1dF9jbG9zZWQ7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNsb3NlKGRldigpLCBORE5CT09TVF9JT1M6OmluKTsKLSAgICAgICAgfQotICAgICAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQgJiYgKGZsYWdzXyAmIGZfb3V0cHV0X2Nsb3NlZCkgPT0gMCkgewotICAgICAgICAgICAgZmxhZ3NfIHw9IGZfb3V0cHV0X2Nsb3NlZDsKLSAgICAgICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpmbHVzaF9idWZmZXIoYnVmXy5zZWNvbmQoKSwgZGV2KCksIGNhbl93cml0ZTo6dmFsdWUpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXYoKSwgTkROQk9PU1RfSU9TOjpvdXQpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9yZXNldChkZXZfKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfcmVzZXQoYnVmXy5maXJzdCgpKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfcmVzZXQoYnVmXy5zZWNvbmQoKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBib29sIGlzX29wZW4oKSBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYgZl9vcGVuKSAhPSAwO30KLQotICAgIGRldmljZV90eXBlJiBkZXYoKSB7IHJldHVybiAqKmRldl87IH0KLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9vcGVuICAgICAgICAgICAgID0gMSwKLSAgICAgICAgZl9pbnB1dF9jbG9zZWQgICAgID0gZl9vcGVuIDw8IDEsCi0gICAgICAgIGZfb3V0cHV0X2Nsb3NlZCAgICA9IGZfaW5wdXRfY2xvc2VkIDw8IDEKLSAgICB9OwotCi0gICAgY29kZWN2dF9ob2xkZXI8Q29kZWN2dD4gIGN2dF87Ci0gICAgc3RvcmFnZV90eXBlICAgICAgICAgICAgIGRldl87Ci0gICAgZG91YmxlX29iamVjdDwKLSAgICAgICAgYnVmZmVyX3R5cGUsIAotICAgICAgICBpc19kb3VibGUKLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgYnVmXzsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgZmxhZ3NfOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29udmVydGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09OVkVSVEVSX1BBUkFNUygpICwgaW50IGJ1ZmZlcl9zaXplID0gLTEKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlZFUlRFUl9BUkdTKCkgLCBidWZmZXJfc2l6ZQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIENvZGVjdnQsIHR5cGVuYW1lIEFsbG9jPgotc3RydWN0IGNvZGVfY29udmVydGVyX2Jhc2UgewotICAgIHR5cGVkZWYgZGV0YWlsOjpjb2RlX2NvbnZlcnRlcl9pbXBsPAotICAgICAgICAgICAgICAgIERldmljZSwgQ29kZWN2dCwgQWxsb2MKLSAgICAgICAgICAgID4gaW1wbF90eXBlOwotICAgIGNvZGVfY29udmVydGVyX2Jhc2UoKSA6IHBpbXBsXyhuZXcgaW1wbF90eXBlKSB7IH0KLSAgICBzaGFyZWRfcHRyPGltcGxfdHlwZT4gcGltcGxfOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIERldmljZSwgCi0gICAgICAgICAgdHlwZW5hbWUgQ29kZWN2dCA9IGRldGFpbDo6ZGVmYXVsdF9jb2RlY3Z0LCAKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGNvZGVfY29udmVydGVyIAotICAgIDogcHJvdGVjdGVkIGNvZGVfY29udmVydGVyX2Jhc2U8RGV2aWNlLCBDb2RlY3Z0LCBBbGxvYz4KLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmNvZGVfY29udmVydGVyX2ltcGw8Ci0gICAgICAgICAgICAgICAgRGV2aWNlLCBDb2RlY3Z0LCBBbGxvYwotICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsX3R5cGU6OmRldmljZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF90eXBlOjpidWZmZXJfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Y29kZWN2dF9ob2xkZXI8Q29kZWN2dD46OmNvZGVjdnRfdHlwZSAgY29kZWN2dF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb2RlY3Z0X2ludGVybjxDb2RlY3Z0Pjo6dHlwZSAgICAgICAgICBpbnRlcm5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Y29kZWN2dF9leHRlcm48Q29kZWN2dD46OnR5cGUgICAgICAgICAgZXh0ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmNvZGVjdnRfc3RhdGU8Q29kZWN2dD46OnR5cGUgICAgICAgICAgIHN0YXRlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBpbnRlcm5fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsgICAgCi0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IGltcGxfdHlwZTo6bW9kZSwgZGV2aWNlX3RhZywgY2xvc2FibGVfdGFnLCBsb2NhbGl6YWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19zYW1lPAotICAgICAgICAgICAgZXh0ZXJuX3R5cGUsIAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICA+Ojp2YWx1ZQotICAgICkpOwotcHVibGljOgotICAgIGNvZGVfY29udmVydGVyKCkgeyB9Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotICAgIGNvZGVfY29udmVydGVyKGNvZGVfY29udmVydGVyJiByaHMpIAotICAgICAgICA6IGNvZGVfY29udmVydGVyX2Jhc2U8RGV2aWNlLCBDb2RlY3Z0LCBBbGxvYz4ocmhzKQotICAgICAgICB7IH0KLSAgICBjb2RlX2NvbnZlcnRlcihjb25zdCBjb2RlX2NvbnZlcnRlciYgcmhzKSAKLSAgICAgICAgOiBjb2RlX2NvbnZlcnRlcl9iYXNlPERldmljZSwgQ29kZWN2dCwgQWxsb2M+KHJocykKLSAgICAgICAgeyB9Ci0jZW5kaWYKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRCggY29kZV9jb252ZXJ0ZXIsIG9wZW5faW1wbCwgRGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ09OVkVSVEVSX1BBUkFNUywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DT05WRVJURVJfQVJHUyApCi0KLSAgICAgICAgLy8gZnN0cmVhbS1saWtlIGludGVyZmFjZS4KLQotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnBpbXBsXy0+aXNfb3BlbigpOyB9Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IGltcGwoKS5jbG9zZSh3aGljaCk7IH0KLQotICAgICAgICAvLyBEZXZpY2UgaW50ZXJmYWNlLgotCi0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiwgc3RkOjpzdHJlYW1zaXplKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiwgc3RkOjpzdHJlYW1zaXplKTsKLSAgICB2b2lkIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsb2MpIHsgaW1wbCgpLmN2dF8uaW1idWUobG9jKTsgfQotCi0gICAgICAgIC8vIERpcmVjdCBkZXZpY2UgYWNjZXNzLgotCi0gICAgRGV2aWNlJiBvcGVyYXRvciooKSB7IHJldHVybiBkZXRhaWw6OnVud3JhcF9kaXJlY3QoZGV2KCkpOyB9Ci0gICAgRGV2aWNlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJmRldGFpbDo6dW53cmFwX2RpcmVjdChkZXYoKSk7IH0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gLy8gVXNlZCBmb3IgZm9yd2FyZGluZy4KLSAgICB2b2lkIG9wZW5faW1wbChjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19DT05WRVJURVJfUEFSQU1TKCkpIAotICAgIHsgCi0gICAgICAgIGltcGwoKS5vcGVuKHQgTkROQk9PU1RfSU9TVFJFQU1TX0NPTlZFUlRFUl9BUkdTKCkpOyAKLSAgICB9Ci0KLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUmIGN2dCgpIHsgcmV0dXJuIGltcGwoKS5jdnRfLmdldCgpOyB9Ci0gICAgZGV2aWNlX3R5cGUmIGRldigpIHsgcmV0dXJuIGltcGwoKS5kZXYoKTsgfQotICAgIGJ1ZmZlcl90eXBlJiBpbigpIHsgcmV0dXJuIGltcGwoKS5idWZfLmZpcnN0KCk7IH0KLSAgICBidWZmZXJfdHlwZSYgb3V0KCkgeyByZXR1cm4gaW1wbCgpLmJ1Zl8uc2Vjb25kKCk7IH0KLSAgICBpbXBsX3R5cGUmIGltcGwoKSB7IHJldHVybiAqdGhpcy0+cGltcGxfOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgY29udmVydGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBJbXBsZW1lbnRhdGlvbiBub3RlOiBpZiBlbmQgb2Ygc3RyZWFtIGNvbnRhaW5zIGEgcGFydGlhbCBjaGFyYWN0ZXIsCi0vLyBpdCBpcyBpZ25vcmVkLgotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBDb2RldnQsIHR5cGVuYW1lIEFsbG9jPgotc3RkOjpzdHJlYW1zaXplIGNvZGVfY29udmVydGVyPERldmljZSwgQ29kZXZ0LCBBbGxvYz46OnJlYWQKLSAgICAoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICBjb25zdCBleHRlcm5fdHlwZSogICBuZXh0OyAgICAgICAgLy8gTmV4dCBleHRlcm5hbCBjaGFyLgotICAgIGludGVybl90eXBlKiAgICAgICAgIG5pbnQ7ICAgICAgICAvLyBOZXh0IGludGVybmFsIGNoYXIuCi0gICAgc3RkOjpzdHJlYW1zaXplICAgICAgdG90YWwgPSAwOyAgIC8vIENoYXJhY3RlcnMgcmVhZC4KLSAgICBpbnQgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXI+Ojpnb29kKCk7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgcGFydGlhbCA9IGZhbHNlOwotICAgIGJ1ZmZlcl90eXBlJiAgICAgICAgIGJ1ZiA9IGluKCk7Ci0KLSAgICBkbyB7Ci0KLSAgICAgICAgLy8gRmlsbCBidWZmZXIuCi0gICAgICAgIGlmIChidWYucHRyKCkgPT0gYnVmLmVwdHIoKSB8fCBwYXJ0aWFsKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBidWYuZmlsbChkZXYoKSk7Ci0gICAgICAgICAgICBpZiAoYnVmLnB0cigpID09IGJ1Zi5lcHRyKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBwYXJ0aWFsID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb252ZXJ0LgotICAgICAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0IHJlc3VsdCA9Ci0gICAgICAgICAgICBjdnQoKS5pbiggYnVmLnN0YXRlKCksCi0gICAgICAgICAgICAgICAgICAgICAgYnVmLnB0cigpLCBidWYuZXB0cigpLCBuZXh0LAotICAgICAgICAgICAgICAgICAgICAgIHMgKyB0b3RhbCwgcyArIG4sIG5pbnQgKTsKLSAgICAgICAgYnVmLnB0cigpICs9IG5leHQgLSBidWYucHRyKCk7Ci0gICAgICAgIHRvdGFsID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihuaW50IC0gcyk7Ci0KLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6cGFydGlhbDoKLSAgICAgICAgICAgIHBhcnRpYWwgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6Om9rOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6Om5vY29udjoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bWluPHN0ZDo6c3RyZWFtc2l6ZT4obmV4dCAtIGJ1Zi5wdHIoKSwgbiAtIHRvdGFsKTsKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnN0cm5jcHlfaWZfc2FtZShzICsgdG90YWwsIGJ1Zi5wdHIoKSwgYW10KTsKLSAgICAgICAgICAgICAgICB0b3RhbCArPSBhbXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6ZXJyb3I6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBidWYuc3RhdGUoKSA9IHN0YXRlX3R5cGUoKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY29kZV9jb252ZXJzaW9uX2Vycm9yKCkpOwotICAgICAgICB9Ci0KLSAgICB9IHdoaWxlICh0b3RhbCA8IG4gJiYgc3RhdHVzICE9IEVPRiAmJiBzdGF0dXMgIT0gV09VTERfQkxPQ0spOwotCi0gICAgcmV0dXJuIHRvdGFsID09IDAgJiYgc3RhdHVzID09IEVPRiA/IC0xIDogdG90YWw7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgQ29kZXZ0LCB0eXBlbmFtZSBBbGxvYz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb2RlX2NvbnZlcnRlcjxEZXZpY2UsIENvZGV2dCwgQWxsb2M+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIGJ1ZmZlcl90eXBlJiAgICAgICAgYnVmID0gb3V0KCk7Ci0gICAgZXh0ZXJuX3R5cGUqICAgICAgICBuZXh0OyAgICAgICAgICAgICAgLy8gTmV4dCBleHRlcm5hbCBjaGFyLgotICAgIGNvbnN0IGludGVybl90eXBlKiAgbmludDsgICAgICAgICAgICAgIC8vIE5leHQgaW50ZXJuYWwgY2hhci4KLSAgICBzdGQ6OnN0cmVhbXNpemUgICAgIHRvdGFsID0gMDsgICAgICAgICAvLyBDaGFyYWN0ZXJzIHdyaXR0ZW4uCi0gICAgYm9vbCAgICAgICAgICAgICAgICBwYXJ0aWFsID0gZmFsc2U7Ci0KLSAgICB3aGlsZSAodG90YWwgPCBuKSB7Ci0KLSAgICAgICAgLy8gRW1wdHkgYnVmZmVyLgotICAgICAgICBpZiAoYnVmLmVwdHIoKSA9PSBidWYuZW5kKCkgfHwgcGFydGlhbCkgewotICAgICAgICAgICAgaWYgKCFidWYuZmx1c2goZGV2KCkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcGFydGlhbCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgCi0gICAgICAgIC8vIENvbnZlcnQuCi0gICAgICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQgcmVzdWx0ID0KLSAgICAgICAgICAgIGN2dCgpLm91dCggYnVmLnN0YXRlKCksCi0gICAgICAgICAgICAgICAgICAgICAgIHMgKyB0b3RhbCwgcyArIG4sIG5pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5lcHRyKCksIGJ1Zi5lbmQoKSwgbmV4dCApOwotICAgICAgICBpbnQgcHJvZ3Jlc3MgPSAoaW50KSAobmV4dCAtIGJ1Zi5lcHRyKCkpOwotICAgICAgICBidWYuZXB0cigpICs9IHByb2dyZXNzOwotCi0gICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6OnBhcnRpYWw6Ci0gICAgICAgICAgICBwYXJ0aWFsID0gdHJ1ZTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIHN0ZDo6Y29kZWN2dF9iYXNlOjpvazoKLSAgICAgICAgICAgIHRvdGFsID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihuaW50IC0gcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBzdGQ6OmNvZGVjdnRfYmFzZTo6bm9jb252OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICAgICAgc3RkOjptaW48c3RkOjpzdHJlYW1zaXplPiggbmludCAtIHRvdGFsIC0gcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5lbmQoKSAtIGJ1Zi5lcHRyKCkgKTsKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnN0cm5jcHlfaWZfc2FtZShidWYuZXB0cigpLCBzICsgdG90YWwsIGFtdCk7Ci0gICAgICAgICAgICAgICAgdG90YWwgKz0gYW10OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugc3RkOjpjb2RlY3Z0X2Jhc2U6OmVycm9yOgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnVmLnN0YXRlKCkgPSBzdGF0ZV90eXBlKCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNvZGVfY29udmVyc2lvbl9lcnJvcigpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdG90YWw7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gQm9ybGFuZCA1LngKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVfQ09OVkVSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29tYmluZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21iaW5lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZmY2Y2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21iaW5lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gVG8gZG86IGFkZCBzdXBwb3J0IGZvciByYW5kb20tYWNjZXNzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT01CSU5FX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NQklORV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5PX1NURF9MT0NBTEUsIERFRFVDRURfVFlQRU5BTUUuCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgaW5jbHVkZSA8bG9jYWxlPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPiAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+ICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPiAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4gIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4gCi0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjb21iaW5lZF9kZXZpY2UuCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgRGV2aWNlIGRlZmluZWQgaW4gdGVybXMgb2YgYSBTb3VyY2UvU2luayBwYWlyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgU291cmNlIC0gQSBtb2RlbCBvZiBTb3VyY2UsIHdpdGggdGhlIHNhbWUgY2hhcl90eXBlIGFuZCB0cmFpdHNfdHlwZQotLy8gICAgICAgICAgYXMgU2luay4KLS8vICAgICAgU2luayAtIEEgbW9kZWwgb2YgU2luaywgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYW5kIHRyYWl0c190eXBlCi0vLyAgICAgICAgICBhcyBTb3VyY2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotY2xhc3MgY29tYmluZWRfZGV2aWNlIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxTb3VyY2U+Ojp0eXBlICBpbl9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFNpbms+Ojp0eXBlICAgIG91dF9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTaW5rPjo6dHlwZSAgIHNpbmtfY2hhcl90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNvdXJjZT46OnR5cGUgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGJpZGlyZWN0aW9uYWwsIAotICAgICAgICAgIGRldmljZV90YWcsIAotICAgICAgICAgIGNsb3NhYmxlX3RhZywgCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2RldmljZTxTb3VyY2U+Ojp2YWx1ZSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19kZXZpY2U8U2luaz46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxpbl9jYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPG91dF9jYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19zYW1lPGNoYXJfdHlwZSwgc2lua19jaGFyX3R5cGU+Ojp2YWx1ZSkpOwotICAgIGNvbWJpbmVkX2RldmljZShjb25zdCBTb3VyY2UmIHNyYywgY29uc3QgU2luayYgc25rKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlKTsKLSAgICAjaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgICAgICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKTsKLSAgICAjZW5kaWYKLXByaXZhdGU6Ci0gICAgU291cmNlICBzcmNfOwotICAgIFNpbmsgICAgc2lua187Ci19OwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogY29tYmluZWRfZmlsdGVyLgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIERldmljZSBkZWZpbmVkIGluIHRlcm1zIG9mIGEgU291cmNlL1NpbmsgcGFpci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIElucHV0RmlsdGVyIC0gQSBtb2RlbCBvZiBJbnB1dEZpbHRlciwgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYXMgCi0vLyAgICAgICAgICBPdXRwdXRGaWx0ZXIuCi0vLyAgICAgIE91dHB1dEZpbHRlciAtIEEgbW9kZWwgb2YgT3V0cHV0RmlsdGVyLCB3aXRoIHRoZSBzYW1lIGNoYXJfdHlwZSBhcyAKLS8vICAgICAgICAgIElucHV0RmlsdGVyLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBPdXRwdXRGaWx0ZXI+Ci1jbGFzcyBjb21iaW5lZF9maWx0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPElucHV0RmlsdGVyPjo6dHlwZSAgICBpbl9jYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPE91dHB1dEZpbHRlcj46OnR5cGUgICBvdXRfY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8T3V0cHV0RmlsdGVyPjo6dHlwZSAgb3V0cHV0X2NoYXJfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxJbnB1dEZpbHRlcj46OnR5cGUgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG11bHRpY2hhcl9iaWRpcmVjdGlvbmFsX2ZpbHRlcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLCAKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPElucHV0RmlsdGVyPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPE91dHB1dEZpbHRlcj46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxpbl9jYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSkpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPG91dF9jYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19zYW1lPGNoYXJfdHlwZSwgb3V0cHV0X2NoYXJfdHlwZT46OnZhbHVlKSk7Ci0gICAgY29tYmluZWRfZmlsdGVyKGNvbnN0IElucHV0RmlsdGVyJiBpbiwgY29uc3QgT3V0cHV0RmlsdGVyJiBvdXQpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKFNvdXJjZSYgc3JjLCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnJlYWQoaW5fLCBzcmMsIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gbmRuYm9vc3Q6Omlvc3RyZWFtczo6d3JpdGUob3V0Xywgc25rLCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKSB7Ci0gICAgICAgICAgICBpZiAoaXNfY29udmVydGlibGU8aW5fY2F0ZWdvcnksIGR1YWxfdXNlPjo6dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OmNsb3NlKGluXywgc25rLCBORE5CT09TVF9JT1M6OmluKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwoaW5fLCBzbmspOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgaWYgKGlzX2NvbnZlcnRpYmxlPG91dF9jYXRlZ29yeSwgZHVhbF91c2U+Ojp2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y2xvc2Uob3V0Xywgc25rLCBORE5CT09TVF9JT1M6Om91dCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKG91dF8sIHNuayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0gICAgICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYyk7Ci0gICAgI2VuZGlmCi1wcml2YXRlOgotICAgIElucHV0RmlsdGVyICAgaW5fOwotICAgIE91dHB1dEZpbHRlciAgb3V0XzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEluLCB0eXBlbmFtZSBPdXQ+Ci1zdHJ1Y3QgY29tYmluYXRpb25fdHJhaXRzIAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfZGV2aWNlPEluPiwKLSAgICAgICAgICBjb21iaW5lZF9kZXZpY2U8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxJbj46OnR5cGUsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxPdXQ+Ojp0eXBlCi0gICAgICAgICAgPiwKLSAgICAgICAgICBjb21iaW5lZF9maWx0ZXI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxJbj46OnR5cGUsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxPdXQ+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPgotICAgIHsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgSW4sIHR5cGVuYW1lIE91dD4KLXN0cnVjdCBjb21iaW5hdGlvbiA6IGRldGFpbDo6Y29tYmluYXRpb25fdHJhaXRzPEluLCBPdXQ+Ojp0eXBlIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Y29tYmluYXRpb25fdHJhaXRzPEluLCBPdXQ+Ojp0eXBlICBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OndyYXBwZWRfdHlwZTxJbj46OnR5cGUgICAgICAgICAgaW5fdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6d3JhcHBlZF90eXBlPE91dD46OnR5cGUgICAgICAgICBvdXRfdHlwZTsKLSAgICBjb21iaW5hdGlvbihjb25zdCBpbl90eXBlJiBpbiwgY29uc3Qgb3V0X3R5cGUmIG91dCkKLSAgICAgICAgOiBiYXNlX3R5cGUoaW4sIG91dCkgeyB9Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gV29ya2Fyb3VuZCBmb3IgVkM2IEVUSSBidWcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbiwgdHlwZW5hbWUgT3V0Pgotc3RydWN0IGNvbWJpbmVfdHJhaXRzIHsKLSAgICB0eXBlZGVmIGNvbWJpbmF0aW9uPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxJbj46OnR5cGUsIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxPdXQ+Ojp0eXBlCi0gICAgICAgICAgICA+IHR5cGU7Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogY29tYmluZS4KLS8vIERlc2NyaXB0aW9uOiBUYWtlcyBhIFNvdXJjZS9TaW5rIHBhaXIgb3IgSW5wdXRGaWx0ZXIvT3V0cHV0RmlsdGVyIHBhaXIgYW5kCi0vLyAgICAgIHJldHVybnMgYSBTb3VyY2Ugb3IgRmlsdGVyIHdoaWNoIHBlcmZvcm1zIGlucHV0IHVzaW5nIHRoZSBmaXJzdCBtZW1iZXIKLS8vICAgICAgb2YgdGhlIHBhaXIgYW5kIG91dHB1dCB1c2luZyB0aGUgc2Vjb25kIG1lbWJlciBvZiB0aGUgcGFpci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEluIC0gQSBtb2RlbCBvZiBTb3VyY2Ugb3IgSW5wdXRGaWx0ZXIsIHdpdGggdGhlIHNhbWUgY2hhcl90eXBlIGFzIE91dC4KLS8vICAgICAgT3V0IC0gQSBtb2RlbCBvZiBTaW5rIG9yIE91dHB1dEZpbHRlciwgd2l0aCB0aGUgc2FtZSBjaGFyX3R5cGUgYXMgSW4uCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgSW4sIHR5cGVuYW1lIE91dD4KLXR5cGVuYW1lIGRldGFpbDo6Y29tYmluZV90cmFpdHM8SW4sIE91dD46OnR5cGUKLWNvbWJpbmUoY29uc3QgSW4mIGluLCBjb25zdCBPdXQmIG91dCkgCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb21iaW5lX3RyYWl0czxJbiwgT3V0Pjo6dHlwZSByZXR1cm5fdHlwZTsKLSAgICByZXR1cm4gcmV0dXJuX3R5cGUoaW4sIG91dCk7IAotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGNvbWJpbmVkX2RldmljZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotaW5saW5lIGNvbWJpbmVkX2RldmljZTxTb3VyY2UsIFNpbms+Ojpjb21iaW5lZF9kZXZpY2UKLSAgICAoY29uc3QgU291cmNlJiBzcmMsIGNvbnN0IFNpbmsmIHNuaykKLSAgICA6IHNyY18oc3JjKSwgc2lua18oc25rKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZQotY29tYmluZWRfZGV2aWNlPFNvdXJjZSwgU2luaz46OnJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZChzcmNfLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplCi1jb21iaW5lZF9kZXZpY2U8U291cmNlLCBTaW5rPjo6d3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6d3JpdGUoc2lua18sIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLWlubGluZSB2b2lkCi1jb21iaW5lZF9kZXZpY2U8U291cmNlLCBTaW5rPjo6Y2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgCi0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHNyY18pOyAKLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHNpbmtfKTsgCi19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNvbWJpbmVkX2RldmljZTxTb3VyY2UsIFNpbms+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKQotICAgIHsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShzcmNfLCBsb2MpOwotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKHNpbmtfLCBsb2MpOwotICAgIH0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZmlsdGVyX3BhaXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEZpbHRlciwgdHlwZW5hbWUgT3V0cHV0RmlsdGVyPgotaW5saW5lIGNvbWJpbmVkX2ZpbHRlcjxJbnB1dEZpbHRlciwgT3V0cHV0RmlsdGVyPjo6Y29tYmluZWRfZmlsdGVyCi0gICAgKGNvbnN0IElucHV0RmlsdGVyJiBpbiwgY29uc3QgT3V0cHV0RmlsdGVyJiBvdXQpIDogaW5fKGluKSwgb3V0XyhvdXQpCi0gICAgeyB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBPdXRwdXRGaWx0ZXI+Ci0gICAgdm9pZCBjb21iaW5lZF9maWx0ZXI8SW5wdXRGaWx0ZXIsIE91dHB1dEZpbHRlcj46OmltYnVlCi0gICAgICAgIChjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKQotICAgIHsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShpbl8sIGxvYyk7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUob3V0XywgbG9jKTsKLSAgICB9Ci0jZW5kaWYKLQotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT01CSU5FX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29tcG9zZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21wb3NlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ1NWRkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb21wb3NlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5NCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gTm90ZTogYmlkaXJlY3Rpb25hbCBzdHJlYW1zIGFyZSBub3Qgc3VwcG9ydGVkLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT01QT1NFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09NUE9TRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgIC8vIHBhaXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBERURVQ0VEX1RZUEVOQU1FLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAvLyBtb2RlX29mLCBpc19kaXJlY3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGaXJzdCwgCi0gICAgICAgICAgdHlwZW5hbWUgU2Vjb25kLAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0TW9kZSA9IAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1vZGVfb2Y8Rmlyc3Q+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIFNlY29uZE1vZGUgPSAKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtb2RlX29mPFNlY29uZD46OnR5cGUgPgotc3RydWN0IGNvbXBvc2l0ZV9tb2RlCi0gICAgOiBzZWxlY3Q8Ci0gICAgICAgICAgaXNfY29udmVydGlibGU8U2Vjb25kTW9kZSwgRmlyc3RNb2RlPiwgRmlyc3RNb2RlLAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEZpcnN0TW9kZSwgU2Vjb25kTW9kZT4sIFNlY29uZE1vZGUsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8U2Vjb25kTW9kZSwgaW5wdXQ+LCAgICAgaW5wdXQsCi0gICAgICAgICAgZWxzZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Ci0gICAgICA+Ci0gICAgeyB9OwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogY29tcG9zaXRlX2RldmljZS4KLS8vIERlc2NyaXB0aW9uOiBQcm92aWRlcyBhIERldmljZSB2aWV3IG9mIGEgRmlsdGVyLCBEZXZpY2UgcGFpci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEZpbHRlciAtIEEgbW9kZWwgb2YgRmlsdGVyLgotLy8gICAgICBEZXZpY2UgLSBBbiBpbmRpcmVjdCBtb2RlbCBvZiBEZXZpY2UuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIEZpbHRlciwKLSAgICAgICAgICB0eXBlbmFtZSBEZXZpY2UsCi0gICAgICAgICAgdHlwZW5hbWUgTW9kZSA9Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY29tcG9zaXRlX21vZGU8RmlsdGVyLCBEZXZpY2U+Ojp0eXBlID4KLWNsYXNzIGNvbXBvc2l0ZV9kZXZpY2UgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxEZXZpY2U+Ojp0eXBlICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPEZpbHRlcj46OnR5cGUgICAgICAgICAgICAgICAgICBmaWx0ZXJfbW9kZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSAgICAgICAgICAgICAgICAgIGRldmljZV9tb2RlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAgLy8gRGlzYW1iaWd1YXRpb24gZm9yIFRydTY0LgotICAgICAgICAgICAgICAgIGlzX2RpcmVjdDxEZXZpY2U+LCAgZGlyZWN0X2FkYXB0ZXI8RGV2aWNlPiwKLSAgICAgICAgICAgICAgICBpc19zdGRfaW88RGV2aWNlPiwgIERldmljZSYsCi0gICAgICAgICAgICAgICAgZWxzZV8sICAgICAgICAgICAgICBEZXZpY2UKLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19maWx0ZXI8RmlsdGVyPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZGV2aWNlPERldmljZT46OnZhbHVlKTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIGNvbXBvc2l0ZV9kZXZpY2UoY29uc3QgRmlsdGVyJiBmbHQsIHBhcmFtX3R5cGUgZGV2KTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotCi0gICAgdm9pZCBjbG9zZSgpOwotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCk7Ci0gICAgYm9vbCBmbHVzaCgpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3Q7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+IC8vIEF2b2lkIGRlcGVuZGVuY3kgb24gPGxvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYgbG9jKQotICAgIHsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShmaWx0ZXJfLCBsb2MpOwotICAgICAgICBpb3N0cmVhbXM6OmltYnVlKGRldmljZV8sIGxvYyk7Ci0gICAgfQotCi0gICAgRmlsdGVyJiBmaXJzdCgpIHsgcmV0dXJuIGZpbHRlcl87IH0KLSAgICBEZXZpY2UmIHNlY29uZCgpIHsgcmV0dXJuIGRldmljZV87IH0KLXByaXZhdGU6Ci0gICAgRmlsdGVyICAgICAgZmlsdGVyXzsKLSAgICB2YWx1ZV90eXBlICBkZXZpY2VfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGNvbXBvc2l0ZV9kZXZpY2UuCi0vLyBEZXNjcmlwdGlvbjogUHJvdmlkZXMgYSBEZXZpY2UgdmlldyBvZiBhIEZpbHRlciwgRGV2aWNlIHBhaXIuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBGaWx0ZXIgLSBBIG1vZGVsIG9mIEZpbHRlci4KLS8vICAgICAgRGV2aWNlIC0gQW4gaW5kaXJlY3QgbW9kZWwgb2YgRGV2aWNlLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBGaWx0ZXIxLCAKLSAgICAgICAgICB0eXBlbmFtZSBGaWx0ZXIyLAotICAgICAgICAgIHR5cGVuYW1lIE1vZGUgPQotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNvbXBvc2l0ZV9tb2RlPEZpbHRlcjEsIEZpbHRlcjI+Ojp0eXBlID4KLWNsYXNzIGNvbXBvc2l0ZV9maWx0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHJlZmVyZW5jZV93cmFwcGVyPEZpbHRlcjI+ICAgICAgICAgICBmaWx0ZXJfcmVmOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxGaWx0ZXIxPjo6dHlwZSAgICAgIGZpcnN0X21vZGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPEZpbHRlcjI+Ojp0eXBlICAgICAgc2Vjb25kX21vZGU7Ci0KLSAgICAvLyBBIGR1YWwtdXNlIGZpbHRlciBjYW5ub3QgYmUgY29tcG9zZWQgd2l0aCBhIHJlYWQtd3JpdGUgZmlsdGVyCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgIShpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBpbnB1dD46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkgfHwKLSAgICAgICAgIChpc19jb252ZXJ0aWJsZTxzZWNvbmRfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkKLSAgICApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgICEoaXNfY29udmVydGlibGU8c2Vjb25kX21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpIHx8Ci0gICAgICAgICEoaXNfY29udmVydGlibGU8Zmlyc3RfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgfHwKLSAgICAgICAgIShpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkgfHwKLSAgICAgICAgIChpc19jb252ZXJ0aWJsZTxmaXJzdF9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKQotICAgICk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19maWx0ZXI8RmlsdGVyMT46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2ZpbHRlcjxGaWx0ZXIyPjo6dmFsdWUpOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcjE+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogTW9kZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIGNvbXBvc2l0ZV9maWx0ZXIoY29uc3QgRmlsdGVyMSYgZmlsdGVyMSwgY29uc3QgRmlsdGVyMiYgZmlsdGVyMikKLSAgICAgICAgOiBmaWx0ZXIxXyhmaWx0ZXIxKSwgZmlsdGVyMl8oZmlsdGVyMikKLSAgICAgICAgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBjb21wb3NpdGVfZGV2aWNlPGZpbHRlcl9yZWYsIFNvdXJjZT4gY21wKG5kbmJvb3N0OjpyZWYoZmlsdGVyMl8pLCBzcmMpOwotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKGZpbHRlcjFfLCBjbXAsIHMsIG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIHNuaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8ZmlsdGVyX3JlZiwgU2luaz4gY21wKG5kbmJvb3N0OjpyZWYoZmlsdGVyMl8pLCBzbmspOwotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZShmaWx0ZXIxXywgY21wLCBzLCBuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayggRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsKLSAgICAgICAgY29tcG9zaXRlX2RldmljZTxmaWx0ZXJfcmVmLCBEZXZpY2U+IGNtcChuZG5ib29zdDo6cmVmKGZpbHRlcjJfKSwgZGV2KTsKLSAgICAgICAgcmV0dXJuIGlvc3RyZWFtczo6c2VlayhmaWx0ZXIxXywgY21wLCBvZmYsIHdheSwgd2hpY2gpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2KQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPjo6dmFsdWUpKTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZGV2aWNlIGJ5IGNvbXBvc2luZyB0aGUgc2Vjb25kIGZpbHRlcjJfIHdpdGggZGV2LgotICAgICAgICBjb21wb3NpdGVfZGV2aWNlPGZpbHRlcl9yZWYsIERldmljZT4gY21wKG5kbmJvb3N0OjpyZWYoZmlsdGVyMl8pLCBkZXYpOwotCi0gICAgICAgIC8vIENsb3NlIGlucHV0IHNlcXVlbmNlcyBpbiByZXZlcnNlIG9yZGVyIGFuZCBvdXRwdXQgc2VxdWVuY2VzIGluIAotICAgICAgICAvLyBmb3J3YXJkIG9yZGVyCi0gICAgICAgIGlmICghaXNfY29udmVydGlibGU8Zmlyc3RfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSkgewotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMl8sIGRldiwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjFfLCBjbXAsIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIxXywgY21wLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjJfLCBkZXYsIE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc19jb252ZXJ0aWJsZTxzZWNvbmRfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgewotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMl8sIGRldiwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjFfLCBjbXAsIE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMV8sIGNtcCwgTkROQk9PU1RfSU9TOjpvdXQpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIyXywgZGV2LCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAgICAgICAoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT46OnZhbHVlKSB8fAotICAgICAgICAgICAgKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBkdWFsX3VzZT46OnZhbHVlKQotICAgICAgICApOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBkZXZpY2UgYnkgY29tcG9zaW5nIHRoZSBzZWNvbmQgZmlsdGVyMl8gd2l0aCBkZXYuCi0gICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8ZmlsdGVyX3JlZiwgRGV2aWNlPiBjbXAobmRuYm9vc3Q6OnJlZihmaWx0ZXIyXyksIGRldik7Ci0KLSAgICAgICAgLy8gQ2xvc2UgaW5wdXQgc2VxdWVuY2VzIGluIHJldmVyc2Ugb3JkZXIKLSAgICAgICAgaWYgKCB3aGljaCA9PSBORE5CT09TVF9JT1M6OmluICYmCi0gICAgICAgICAgICAgKCAhaXNfY29udmVydGlibGU8Zmlyc3RfbW9kZSwgZHVhbF91c2U+Ojp2YWx1ZSB8fAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPHNlY29uZF9tb2RlLCBpbnB1dD46OnZhbHVlICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXIyXywgZGV2LCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMV8sIGNtcCwgTkROQk9PU1RfSU9TOjppbikKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDbG9zZSBvdXRwdXQgc2VxdWVuY2VzIGluIGZvcndhcmQgb3JkZXIKLSAgICAgICAgaWYgKCB3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCAmJgotICAgICAgICAgICAgICggIWlzX2NvbnZlcnRpYmxlPGZpcnN0X21vZGUsIGR1YWxfdXNlPjo6dmFsdWUgfHwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxzZWNvbmRfbW9kZSwgb3V0cHV0Pjo6dmFsdWUgKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcjFfLCBjbXAsIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZmlsdGVyMl8sIGRldiwgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIGJvb2wgZmx1c2goRGV2aWNlJiBkZXYpCi0gICAgewotICAgICAgICBjb21wb3NpdGVfZGV2aWNlPEZpbHRlcjIsIERldmljZT4gY21wKGZpbHRlcjJfLCBkZXYpOwotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpmbHVzaChmaWx0ZXIxXywgY21wKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgZmlyc3QgPSBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoZmlsdGVyMV8pOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgc2Vjb25kID0gaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKGZpbHRlcjJfKTsKLSAgICAgICAgcmV0dXJuIGZpcnN0IDwgc2Vjb25kID8gc2Vjb25kIDogZmlyc3Q7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPiAvLyBBdm9pZCBkZXBlbmRlbmN5IG9uIDxsb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykKLSAgICB7ICAgLy8gVG8gZG86IGNvbnNpZGVyIHVzaW5nIFJBSUkuCi0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoZmlsdGVyMV8sIGxvYyk7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoZmlsdGVyMl8sIGxvYyk7Ci0gICAgfQotCi0gICAgRmlsdGVyMSYgZmlyc3QoKSB7IHJldHVybiBmaWx0ZXIxXzsgfQotICAgIEZpbHRlcjImIHNlY29uZCgpIHsgcmV0dXJuIGZpbHRlcjJfOyB9Ci1wcml2YXRlOgotICAgIEZpbHRlcjEgIGZpbHRlcjFfOwotICAgIEZpbHRlcjIgIGZpbHRlcjJfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLXN0cnVjdCBjb21wb3NpdGVfdHJhaXRzCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19kZXZpY2U8RmlsdGVyT3JEZXZpY2U+LAotICAgICAgICAgIGNvbXBvc2l0ZV9kZXZpY2U8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4sCi0gICAgICAgICAgY29tcG9zaXRlX2ZpbHRlcjxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPgotICAgICAgPgotICAgIHsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLXN0cnVjdCBjb21wb3NpdGUgOiBkZXRhaWw6OmNvbXBvc2l0ZV90cmFpdHM8RmlsdGVyLCBGaWx0ZXJPckRldmljZT46OnR5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPEZpbHRlck9yRGV2aWNlPjo6dHlwZSBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpjb21wb3NpdGVfdHJhaXRzPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ojp0eXBlIGJhc2U7Ci0gICAgY29tcG9zaXRlKGNvbnN0IEZpbHRlciYgZmx0LCBwYXJhbV90eXBlIGRldikKLSAgICAgICAgOiBiYXNlKGZsdCwgZGV2KQotICAgICAgICB7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBjb21wb3NlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgd29ya2Fyb3VuZHMgYXJlIHBhdHRlcm5lZCBhZnRlciByZXNvbHZlLmhwcC4gSXQgaGFzIG5vdAotLy8geWV0IGJlZW4gY29uZmlybWVkIHRoYXQgdGhleSBhcmUgbmVjZXNzYXJ5LgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPgotY29tcG9zZSggY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlck9yRGV2aWNlJiBmb2QKLSAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShGaWx0ZXJPckRldmljZSkgKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+KGZpbHRlciwgZm9kKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+ID4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4mIHNiKQoteyByZXR1cm4gY29tcG9zaXRlPCBGaWx0ZXIsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPihmaWx0ZXIsIHNiKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiA+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiYgaXMpCi17IHJldHVybiBjb21wb3NpdGU8IEZpbHRlciwgc3RkOjpiYXNpY19pc3RyZWFtPENoLCBUcj4gPihmaWx0ZXIsIGlzKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiYgb3MpCi17IHJldHVybiBjb21wb3NpdGU8IEZpbHRlciwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPihmaWx0ZXIsIG9zKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLWNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjpiYXNpY19pb3N0cmVhbTxDaCwgVHI+JiBpbykKLXsgcmV0dXJuIGNvbXBvc2l0ZTwgRmlsdGVyLCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPihmaWx0ZXIsIGlvKTsgfQotCi0jIGVsc2UgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NlKCBjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyT3JEZXZpY2UmIGZvZAotICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKEZpbHRlck9yRGV2aWNlKSApCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4oZmlsdGVyLCBmb2QpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6c3RyZWFtYnVmPgotY29tcG9zZShjb25zdCBGaWx0ZXImIGZpbHRlciwgc3RkOjpzdHJlYW1idWYmIHNiKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgc3RkOjpzdHJlYW1idWY+KGZpbHRlciwgc2IpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6aXN0cmVhbT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6aXN0cmVhbSYgaXMpCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBzdGQ6OmlzdHJlYW0+KGZpbHRlciwgaXMpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6b3N0cmVhbT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6b3N0cmVhbSYgb3MpCi17IHJldHVybiBjb21wb3NpdGU8RmlsdGVyLCBzdGQ6Om9zdHJlYW0+KGZpbHRlciwgb3MpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6aW9zdHJlYW0+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBzdGQ6Omlvc3RyZWFtJiBpbykKLXsgcmV0dXJuIGNvbXBvc2l0ZTxGaWx0ZXIsIHN0ZDo6aW9zdHJlYW0+KGZpbHRlciwgaW8pOyB9Ci0KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFN0cmVhbT4KLWNvbXBvc2l0ZTxGaWx0ZXIsIFN0cmVhbT4KLWNvbXBvc2UoY29uc3QgRmlsdGVyJiBmbHQsIGNvbnN0IFN0cmVhbSYgc3RybSwgbXBsOjp0cnVlXykKLXsgICAvLyBCYWQgb3ZlcmxvYWQgcmVzb2x1dGlvbi4KLSAgICByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgU3RyZWFtPihmbHQsIGNvbnN0X2Nhc3Q8U3RyZWFtJj4oc3RybSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIEZpbHRlck9yRGV2aWNlPgotY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NlKGNvbnN0IEZpbHRlciYgZmx0LCBjb25zdCBGaWx0ZXJPckRldmljZSYgZm9kLCBtcGw6OmZhbHNlXykKLXsgcmV0dXJuIGNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPihmbHQsIGZvZCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2l0ZTxGaWx0ZXIsIEZpbHRlck9yRGV2aWNlPgotY29tcG9zZSggY29uc3QgRmlsdGVyJiBmbHQsIGNvbnN0IEZpbHRlck9yRGV2aWNlJiBmb2QKLSAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSApCi17IHJldHVybiBjb21wb3NlKGZsdCwgZm9kLCBpc19zdGRfaW88RmlsdGVyT3JEZXZpY2U+KCkpOyB9Ci0KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiBcCi0gICAgICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICYmIFwKLSAgICAgIWRlZmluZWQoX19HTlVDX18pIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRmlsdGVyT3JEZXZpY2U+Ci1jb21wb3NpdGU8RmlsdGVyLCBGaWx0ZXJPckRldmljZT4KLWNvbXBvc2UgKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJPckRldmljZSYgZm9kKQoteyByZXR1cm4gY29tcG9zaXRlPEZpbHRlciwgRmlsdGVyT3JEZXZpY2U+KGZpbHRlciwgZm9kKTsgfQotCi0jIGVuZGlmIC8vIEJvcmxhbmQgNS54LCBWQzYtNy4wIG9yIEdDQyAyLjl4IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBjb21wb3NpdGVfZGV2aWNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIE1vZGU+Ci1jb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6Y29tcG9zaXRlX2RldmljZQotICAgIChjb25zdCBGaWx0ZXImIGZsdCwgcGFyYW1fdHlwZSBkZXYpCi0gICAgOiBmaWx0ZXJfKGZsdCksIGRldmljZV8oZGV2KQotICAgIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OnJlYWQKLSAgICAoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGlvc3RyZWFtczo6cmVhZChmaWx0ZXJfLCBkZXZpY2VfLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBpb3N0cmVhbXM6OndyaXRlKGZpbHRlcl8sIGRldmljZV8sIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotc3RkOjpzdHJlYW1wb3MgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OnNlZWsKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17IHJldHVybiBpb3N0cmVhbXM6OnNlZWsoZmlsdGVyXywgZGV2aWNlXywgb2ZmLCB3YXksIHdoaWNoKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLXZvaWQgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OmNsb3NlKCkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8TW9kZSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGZpbHRlcl9tb2RlLCBkdWFsX3VzZT46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGRldmljZV9tb2RlLCBpbnB1dD46OnZhbHVlKSB8fAotICAgICAgICAhKGlzX2NvbnZlcnRpYmxlPGRldmljZV9tb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkKLSAgICApOwotCi0gICAgLy8gQ2xvc2UgaW5wdXQgc2VxdWVuY2VzIGluIHJldmVyc2Ugb3JkZXIgYW5kIG91dHB1dCBzZXF1ZW5jZXMgCi0gICAgLy8gaW4gZm9yd2FyZCBvcmRlcgotICAgIGlmICghaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZGV2aWNlXywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfSBlbHNlIGlmIChpc19jb252ZXJ0aWJsZTxkZXZpY2VfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgewotICAgICAgICBkZXRhaWw6OmV4ZWN1dGVfYWxsKAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgZGV0YWlsOjpjYWxsX2Nsb3NlKGZpbHRlcl8sIGRldmljZV8sIE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZGV2aWNlXywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLXZvaWQgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OmNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCEoaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGR1YWxfdXNlPjo6dmFsdWUpKTsKLQotICAgIC8vIENsb3NlIGlucHV0IHNlcXVlbmNlcyBpbiByZXZlcnNlIG9yZGVyCi0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6OmluKSAKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICAvLyBDbG9zZSBvdXRwdXQgc2VxdWVuY2VzIGluIGZvcndhcmQgb3JkZXIKLSAgICBpZiAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZShmaWx0ZXJfLCBkZXZpY2VfLCBORE5CT09TVF9JT1M6Om91dCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2UoZGV2aWNlXywgTkROQk9PU1RfSU9TOjpvdXQpCi0gICAgICAgICk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgTW9kZT4KLWJvb2wgY29tcG9zaXRlX2RldmljZTxGaWx0ZXIsIERldmljZSwgTW9kZT46OmZsdXNoKCkKLXsKLSAgICBib29sIHIxID0gaW9zdHJlYW1zOjpmbHVzaChmaWx0ZXJfLCBkZXZpY2VfKTsKLSAgICBib29sIHIyID0gaW9zdHJlYW1zOjpmbHVzaChkZXZpY2VfKTsKLSAgICByZXR1cm4gcjEgJiYgcjI7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBNb2RlPgotc3RkOjpzdHJlYW1zaXplCi1jb21wb3NpdGVfZGV2aWNlPEZpbHRlciwgRGV2aWNlLCBNb2RlPjo6b3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0Ci17IHJldHVybiBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoZGV2aWNlXyk7IH0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09NUE9TRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU3MzRlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb25jZXB0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTkNFUFRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09OQ0VQVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE5ETkJPT1NUX01TVkMKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGVmYXVsdF9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb25zIG9mIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIGRldmljZSBjb25jZXB0cy0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9BUkcoY2hhcik+Ci1zdHJ1Y3QgZGV2aWNlIHsKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICB2b2lkIGNsb3NlKCkKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIH0KLQotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSkKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPE1vZGUsIHR3b19zZXF1ZW5jZT46OnZhbHVlKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJikgeyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyh3Y2hhcl90KT4KLXN0cnVjdCB3ZGV2aWNlIDogZGV2aWNlPE1vZGUsIENoPiB7IH07Ci0KLXR5cGVkZWYgZGV2aWNlPGlucHV0PiAgICBzb3VyY2U7Ci10eXBlZGVmIHdkZXZpY2U8aW5wdXQ+ICAgd3NvdXJjZTsKLXR5cGVkZWYgZGV2aWNlPG91dHB1dD4gICBzaW5rOwotdHlwZWRlZiB3ZGV2aWNlPG91dHB1dD4gIHdzaW5rOwotCi0vLy0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbnMgb2YgaGVscGVyIHRlbXBsYXRlcyBmb3Igc2ltcGxlIGZpbHRlciBjb25jZXB0cy0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyhjaGFyKT4KLXN0cnVjdCBmaWx0ZXIgewotICAgIHR5cGVkZWYgQ2ggY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnCi0gICAgICAgIHsgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYpCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2UgZGV0YWlsOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8TW9kZSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoIWlzX2NvbnZlcnRpYmxlPE1vZGUsIGR1YWxfdXNlPjo6dmFsdWUpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgICAgIChpc19jb252ZXJ0aWJsZTxNb2RlLCB0d29fc2VxdWVuY2U+Ojp2YWx1ZSkgfHwKLSAgICAgICAgICAgIChpc19jb252ZXJ0aWJsZTxNb2RlLCBkdWFsX3VzZT46OnZhbHVlKQotICAgICAgICApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2FsZT4KLSAgICB2b2lkIGltYnVlKGNvbnN0IExvY2FsZSYpIHsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9BUkcod2NoYXJfdCk+Ci1zdHJ1Y3Qgd2ZpbHRlciA6IGZpbHRlcjxNb2RlLCBDaD4geyB9OwotCi10eXBlZGVmIGZpbHRlcjxpbnB1dD4gICAgICBpbnB1dF9maWx0ZXI7Ci10eXBlZGVmIHdmaWx0ZXI8aW5wdXQ+ICAgICBpbnB1dF93ZmlsdGVyOwotdHlwZWRlZiBmaWx0ZXI8b3V0cHV0PiAgICAgb3V0cHV0X2ZpbHRlcjsKLXR5cGVkZWYgd2ZpbHRlcjxvdXRwdXQ+ICAgIG91dHB1dF93ZmlsdGVyOwotdHlwZWRlZiBmaWx0ZXI8c2Vla2FibGU+ICAgc2Vla2FibGVfZmlsdGVyOwotdHlwZWRlZiB3ZmlsdGVyPHNlZWthYmxlPiAgc2Vla2FibGVfd2ZpbHRlcjsKLXR5cGVkZWYgZmlsdGVyPGR1YWxfdXNlPiAgIGR1YWxfdXNlX2ZpbHRlcjsKLXR5cGVkZWYgd2ZpbHRlcjxkdWFsX3VzZT4gIGR1YWxfdXNlX3dmaWx0ZXI7Ci0gICAgICAgIAotLy8tLS0tLS1EZWZpbml0aW9ucyBvZiBoZWxwZXIgdGVtcGxhdGVzIGZvciBtdWx0aS1jaGFyYWN0ZXIgZmlsdGVyIGNuY2VwdHMtLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2ggPSBjaGFyPgotc3RydWN0IG11bHRpY2hhcl9maWx0ZXIgOiBmaWx0ZXI8TW9kZSwgQ2g+IHsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBmaWx0ZXI8TW9kZSwgQ2g+OjpjYXRlZ29yeSwgbXVsdGljaGFyX3RhZyB7IH07Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCA9IHdjaGFyX3Q+Ci1zdHJ1Y3QgbXVsdGljaGFyX3dmaWx0ZXIgOiBtdWx0aWNoYXJfZmlsdGVyPE1vZGUsIENoPiB7IH07Ci0KLXR5cGVkZWYgbXVsdGljaGFyX2ZpbHRlcjxpbnB1dD4gICAgICBtdWx0aWNoYXJfaW5wdXRfZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfd2ZpbHRlcjxpbnB1dD4gICAgIG11bHRpY2hhcl9pbnB1dF93ZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfZmlsdGVyPG91dHB1dD4gICAgIG11bHRpY2hhcl9vdXRwdXRfZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfd2ZpbHRlcjxvdXRwdXQ+ICAgIG11bHRpY2hhcl9vdXRwdXRfd2ZpbHRlcjsKLXR5cGVkZWYgbXVsdGljaGFyX2ZpbHRlcjxkdWFsX3VzZT4gICBtdWx0aWNoYXJfZHVhbF91c2VfZmlsdGVyOwotdHlwZWRlZiBtdWx0aWNoYXJfd2ZpbHRlcjxkdWFsX3VzZT4gIG11bHRpY2hhcl9kdWFsX3VzZV93ZmlsdGVyOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NPTkNFUFRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MzkzZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBjb25zdGFudHMgdXNlZCBieSBsaWJyYXJ5LgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT05TVEFOVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT05TVEFOVFNfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfREVWSUNFX0JVRkZFUl9TSVpFCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9ERVZJQ0VfQlVGRkVSX1NJWkUgNDA5NgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfRklMVEVSX0JVRkZFUl9TSVpFCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9GSUxURVJfQlVGRkVSX1NJWkUgMTI4Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9QQkFDS19CVUZGRVJfU0laRQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfUEJBQ0tfQlVGRkVSX1NJWkUgNAotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAvLyBzdHJlYW1zaXplLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotY29uc3Qgc3RkOjpzdHJlYW1zaXplIGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplID0gCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfREVWSUNFX0JVRkZFUl9TSVpFOyAKLWNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBkZWZhdWx0X2ZpbHRlcl9idWZmZXJfc2l6ZSA9IAotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0ZJTFRFUl9CVUZGRVJfU0laRTsKLWNvbnN0IHN0ZDo6c3RyZWFtc2l6ZSBkZWZhdWx0X3BiYWNrX2J1ZmZlcl9zaXplID0gCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRkFVTFRfUEJBQ0tfQlVGRkVSX1NJWkU7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09OU1RBTlRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvY29weS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb3B5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIxMWM1Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9jb3B5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1MiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnM6IFRoZSBmdW5jdGlvbiB0ZW1wbGF0ZSBjb3B5LCB3aGljaCByZWFkcyBkYXRhIGZyb20gYSBTb3VyY2UgCi0vLyBhbmQgd3JpdGVzIGl0IHRvIGEgU2luayB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSBpcyByZWFjaGVkLCByZXR1cm5pbmcgCi0vLyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdHJhbnNmZXJlZC4KLQotLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsaWNhdGVkIGJ5IHRoZSBuZWVkIHRvIGhhbmRsZSBzbWFydCBhZGFwdGVycwotLy8gYW5kIGRpcmVjdCBkZXZpY2VzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DT1BZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09QWV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgcHRyZGlmZl90IGlzIGluIHN0ZC4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29weSwgbWluLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwdHJkaWZmX3QuCi0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhaXIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcD4gICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2VuYWJsZV9pZl9zdHJlYW0uaHBwPiAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAvLyBmYWlsdXJlLCBzdHJlYW1zaXplLiAgICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29sdmUuaHBwPiAgICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+ICAvLyByZWFkLCB3cml0ZSwgY2xvc2UuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4gIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPiAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBmb3VyIG92ZXJsb2FkcyBvZiBjb3B5X2ltcGwoKSBvcHRpbWl6ZSAKLSAgICAvLyBjb3B5aW5nIGluIHRoZSBjYXNlIHRoYXQgb25lIG9yIGJvdGggb2YgdGhlIHR3byBkZXZpY2VzCi0gICAgLy8gbW9kZWxzIERpcmVjdCAoc2VlIAotICAgIC8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zL2RvYy9pbmRleC5odG1sP3BhdGg9NC4xLjEuNCkKLQotLy8gQ29weSBmcm9tIGEgZGlyZWN0IHNvdXJjZSB0byBhIGRpcmVjdCBzaW5rCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKCBTb3VyY2UmIHNyYywgU2luayYgc25rLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAvKiBidWZmZXJfc2l6ZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6dHJ1ZV8sIG1wbDo6dHJ1ZV8gKQoteyAgIAotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+ICAgIHBhaXJfdHlwZTsKLSAgICBwYWlyX3R5cGUgcDEgPSBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKHNyYyk7Ci0gICAgcGFpcl90eXBlIHAyID0gaW9zdHJlYW1zOjpvdXRwdXRfc2VxdWVuY2Uoc25rKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgdG90YWwgPSAKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPigKLSAgICAgICAgICAgIChzdGQ6Om1pbikocDEuc2Vjb25kIC0gcDEuZmlyc3QsIHAyLnNlY29uZCAtIHAyLmZpcnN0KQotICAgICAgICApOwotICAgIHN0ZDo6Y29weShwMS5maXJzdCwgcDEuZmlyc3QgKyB0b3RhbCwgcDIuZmlyc3QpOwotICAgIHJldHVybiB0b3RhbDsKLX0KLQotLy8gQ29weSBmcm9tIGEgZGlyZWN0IHNvdXJjZSB0byBhbiBpbmRpcmVjdCBzaW5rCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKCBTb3VyY2UmIHNyYywgU2luayYgc25rLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAvKiBidWZmZXJfc2l6ZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6dHJ1ZV8sIG1wbDo6ZmFsc2VfICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFNvdXJjZT46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiAgICBwYWlyX3R5cGU7Ci0gICAgcGFpcl90eXBlIHAgPSBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKHNyYyk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHNpemUsIHRvdGFsOwotICAgIGZvciAoIHRvdGFsID0gMCwgc2l6ZSA9IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4ocC5zZWNvbmQgLSBwLmZpcnN0KTsKLSAgICAgICAgICB0b3RhbCA8IHNpemU7ICkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6d3JpdGUoc25rLCBwLmZpcnN0ICsgdG90YWwsIHNpemUgLSB0b3RhbCk7IAotICAgICAgICB0b3RhbCArPSBhbXQ7Ci0gICAgfQotICAgIHJldHVybiB0b3RhbDsKLX0KLQotLy8gQ29weSBmcm9tIGFuIGluZGlyZWN0IHNvdXJjZSB0byBhIGRpcmVjdCBzaW5rCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKCBTb3VyY2UmIHNyYywgU2luayYgc25rLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfLCBtcGw6OnRydWVfICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gICAgcGFpcl90eXBlOwotICAgIGRldGFpbDo6YmFzaWNfYnVmZmVyPGNoYXJfdHlwZT4gIGJ1ZihidWZmZXJfc2l6ZSk7Ci0gICAgcGFpcl90eXBlICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHNuay5vdXRwdXRfc2VxdWVuY2UoKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgICAgICAgICAgICAgICAgICB0b3RhbCA9IDA7Ci0gICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgY2FwYWNpdHkgPSBwLnNlY29uZCAtIHAuZmlyc3Q7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IAotICAgICAgICAgICAgaW9zdHJlYW1zOjpyZWFkKAotICAgICAgICAgICAgICAgIHNyYywgCi0gICAgICAgICAgICAgICAgYnVmLmRhdGEoKSwKLSAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSA8IGNhcGFjaXR5IC0gdG90YWwgPwotICAgICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZSA6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oY2FwYWNpdHkgLSB0b3RhbCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIGlmIChhbXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RkOjpjb3B5KGJ1Zi5kYXRhKCksIGJ1Zi5kYXRhKCkgKyBhbXQsIHAuZmlyc3QgKyB0b3RhbCk7Ci0gICAgICAgIHRvdGFsICs9IGFtdDsKLSAgICB9Ci0gICAgcmV0dXJuIHRvdGFsOwotfQotCi0vLyBDb3B5IGZyb20gYW4gaW5kaXJlY3Qgc291cmNlIHRvIGFuIGluZGlyZWN0IHNpbmsKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZSBjb3B5X2ltcGwoIFNvdXJjZSYgc3JjLCBTaW5rJiBzbmssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjpmYWxzZV8sIG1wbDo6ZmFsc2VfICkKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgZGV0YWlsOjpiYXNpY19idWZmZXI8Y2hhcl90eXBlPiAgYnVmKGJ1ZmZlcl9zaXplKTsKLSAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiAgICAgICBuYihzbmspOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgICAgICAgICAgICAgIHRvdGFsID0gMDsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFkb25lKSB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQ7Ci0gICAgICAgIGRvbmUgPSAoYW10ID0gaW9zdHJlYW1zOjpyZWFkKHNyYywgYnVmLmRhdGEoKSwgYnVmZmVyX3NpemUpKSA9PSAtMTsKLSAgICAgICAgaWYgKGFtdCAhPSAtMSkgewotICAgICAgICAgICAgaW9zdHJlYW1zOjp3cml0ZShuYiwgYnVmLmRhdGEoKSwgYW10KTsKLSAgICAgICAgICAgIHRvdGFsICs9IGFtdDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdG90YWw7Ci19Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIG9iamVjdCBpcyB1c2VkIHdpdGggCi0gICAgLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlKCkgaW4gdGhlIHByaW1hcnkgCi0gICAgLy8gb3ZlcmxvYWQgb2YgY29weV9pbXBsKCksIGJlbG93Ci0KLS8vIEZ1bmN0aW9uIG9iamVjdCB0aGF0IGRlbGVnYXRlcyB0byBvbmUgb2YgdGhlIGFib3ZlIGZvdXIgCi0vLyBvdmVybG9hZHMgb2YgY29tcGxfaW1wbCgpCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1jbGFzcyBjb3B5X29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0X3R5cGU7Ci0gICAgY29weV9vcGVyYXRpb24oU291cmNlJiBzcmMsIFNpbmsmIHNuaywgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplKQotICAgICAgICA6IHNyY18oc3JjKSwgc25rXyhzbmspLCBidWZmZXJfc2l6ZV8oYnVmZmVyX3NpemUpCi0gICAgICAgIHsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcGVyYXRvcigpKCkgCi0gICAgewotICAgICAgICByZXR1cm4gY29weV9pbXBsKCBzcmNfLCBzbmtfLCBidWZmZXJfc2l6ZV8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICBpc19kaXJlY3Q8U291cmNlPigpLCBpc19kaXJlY3Q8U2luaz4oKSApOwotICAgIH0KLXByaXZhdGU6Ci0gICAgY29weV9vcGVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBjb3B5X29wZXJhdGlvbiYpOwotICAgIFNvdXJjZSYgICAgICAgICAgc3JjXzsKLSAgICBTaW5rJiAgICAgICAgICAgIHNua187Ci0gICAgc3RkOjpzdHJlYW1zaXplICBidWZmZXJfc2l6ZV87Ci19OwotCi0vLyBQcmltYXJ5IG92ZXJsb2FkIG9mIGNvcHlfaW1wbC4gRGVsZWdhdGVzIHRvIG9uZSBvZiB0aGUgYWJvdmUgZm91ciAKLS8vIG92ZXJsb2FkcyBvZiBjb21wbF9pbXBsKCksIGRlcGVuZGluZyBvbiB3aGljaCBvZiB0aGUgdHdvIGdpdmVuIAotLy8gZGV2aWNlcywgaWYgYW55LCBtb2RlbHMgRGlyZWN0IChzZWUgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcy9kb2MvaW5kZXguaHRtbD9wYXRoPTQuMS4xLjQpCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2UsIHR5cGVuYW1lIFNpbms+Ci1zdGQ6OnN0cmVhbXNpemUgY29weV9pbXBsKFNvdXJjZSBzcmMsIFNpbmsgc25rLCBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlICBzcmNfY2hhcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTaW5rPjo6dHlwZSAgICBzbmtfY2hhcjsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19zYW1lPHNyY19jaGFyLCBzbmtfY2hhcj46OnZhbHVlKSk7Ci0gICAgcmV0dXJuIGRldGFpbDo6ZXhlY3V0ZV9hbGwoCi0gICAgICAgICAgICAgICBjb3B5X29wZXJhdGlvbjxTb3VyY2UsIFNpbms+KHNyYywgc25rLCBidWZmZXJfc2l6ZSksCi0gICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2VfYWxsKHNyYyksCi0gICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2VfYWxsKHNuaykKLSAgICAgICAgICAgKTsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgY29weS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBPdmVybG9hZCBvZiBjb3B5KCkgZm9yIHRoZSBjYXNlIHdoZXJlIG5laXRoZXIgdGhlIHNvdXJjZSBub3IgdGhlIHNpbmsgaXMKLS8vIGEgc3RhbmRhcmQgc3RyZWFtIG9yIHN0cmVhbSBidWZmZXIKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZQotY29weSggY29uc3QgU291cmNlJiBzcmMsIGNvbnN0IFNpbmsmIHNuaywKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oU291cmNlKQotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFNpbmspICkKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgcmV0dXJuIGRldGFpbDo6Y29weV9pbXBsKCBkZXRhaWw6OnJlc29sdmU8aW5wdXQsIGNoYXJfdHlwZT4oc3JjKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OnJlc29sdmU8b3V0cHV0LCBjaGFyX3R5cGU+KHNuayksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemUgKTsgCi19Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE92ZXJsb2FkIG9mIGNvcHkoKSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIHNvdXJjZSwgYnV0IG5vdCB0aGUgc2luaywgaXMKLS8vIGEgc3RhbmRhcmQgc3RyZWFtIG9yIHN0cmVhbSBidWZmZXIKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZQotY29weSggU291cmNlJiBzcmMsIGNvbnN0IFNpbmsmIHNuaywKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTb3VyY2UpCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oU2luaykgKSAKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8U291cmNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgcmV0dXJuIGRldGFpbDo6Y29weV9pbXBsKCBkZXRhaWw6OndyYXAoc3JjKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OnJlc29sdmU8b3V0cHV0LCBjaGFyX3R5cGU+KHNuayksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemUgKTsKLX0KLQotLy8gT3ZlcmxvYWQgb2YgY29weSgpIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgc2luaywgYnV0IG5vdCB0aGUgc291cmNlLCBpcwotLy8gYSBzdGFuZGFyZCBzdHJlYW0gb3Igc3RyZWFtIGJ1ZmZlcgotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBTaW5rPgotc3RkOjpzdHJlYW1zaXplCi1jb3B5KCBjb25zdCBTb3VyY2UmIHNyYywgU2luayYgc25rLAotICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShTb3VyY2UpCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTaW5rKSApIAoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTb3VyY2U+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICByZXR1cm4gZGV0YWlsOjpjb3B5X2ltcGwoIGRldGFpbDo6cmVzb2x2ZTxpbnB1dCwgY2hhcl90eXBlPihzcmMpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6d3JhcChzbmspLCBidWZmZXJfc2l6ZSApOwotfQotCi0vLyBPdmVybG9hZCBvZiBjb3B5KCkgZm9yIHRoZSBjYXNlIHdoZXJlIG5laXRoZXIgdGhlIHNvdXJjZSBub3IgdGhlIHNpbmsgaXMKLS8vIGEgc3RhbmRhcmQgc3RyZWFtIG9yIHN0cmVhbSBidWZmZXIKLXRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZSwgdHlwZW5hbWUgU2luaz4KLXN0ZDo6c3RyZWFtc2l6ZQotY29weSggU291cmNlJiBzcmMsIFNpbmsmIHNuaywKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTb3VyY2UpCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRU5BQkxFX0lGX1NUUkVBTShTaW5rKSApIAoteyAKLSAgICByZXR1cm4gZGV0YWlsOjpjb3B5X2ltcGwoZGV0YWlsOjp3cmFwKHNyYyksIGRldGFpbDo6d3JhcChzbmspLCBidWZmZXJfc2l6ZSk7Ci19Ci0KLSNlbmRpZiAvLyAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09QWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hYnNvbHV0ZV9wYXRoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hYnNvbHV0ZV9wYXRoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA5NDdlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWJzb2x1dGVfcGF0aC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwCi0gKiBEYXRlOiAgICAgICAgVGh1IERlYyAwNiAxMzoyMTo1NCBNU1QgMjAwNwotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGVmaW5lcyB0aGUgZnVuY3Rpb24gbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjphYnNvbHV0ZV9wYXRoLCB1c2VkIGZvciAKLSAqIGRlYnVnIG91dHB1dCBmb3IgbWFwcGVkIGZpbGVzLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BQlNPTFVURV9QQVRIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FCU09MVVRFX1BBVEhfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSMgaW5jbHVkZSA8Y2N0eXBlPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jdXJyZW50X2RpcmVjdG9yeS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gUmVzb2x2ZXMgdGhlIGdpdmVuIHBhdGggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLWlubGluZSBzdGQ6OnN0cmluZyBhYnNvbHV0ZV9wYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKQotewotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgcmV0dXJuIHBhdGguc2l6ZSgpICYmIChwYXRoWzBdID09ICcvJyB8fCBwYXRoWzBdID09ICdcXCcpIHx8Ci0gICAgICAgICAgIHBhdGguc2l6ZSgpID4gMSAmJiBzdGQ6OmlzYWxwaGEocGF0aFswXSkgJiYgcGF0aFsxXSA9PSAnOicgPwotICAgICAgICAgICAgICAgcGF0aCA6Ci0gICAgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSgpICsgJ1xcJyArIHBhdGg7Ci0jZWxzZSAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICByZXR1cm4gcGF0aC5zaXplKCkgJiYgKHBhdGhbMF0gPT0gJy8nKSA/Ci0gICAgICAgIHBhdGggOgotICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSgpICsgJy8nICsgcGF0aDsKLSNlbmRpZiAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLX0KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FCU09MVVRFX1BBVEhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FjY2Vzc19jb250cm9sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA2YWZhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIENvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZSBhY2Nlc3NfY29udHJvbCwgd2hpY2gKLS8vIGFsbG93cyB0aGUgdHlwZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgcHJvdmlkZWQgYmFzZSBjbGFzcyB0byBiZSBzcGVjaWZpZWQgCi0vLyB1c2luZyBhIHRlbXBsYXRlIHBhcmFtZXRlci4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BQ0NFU1NfQ09OVFJPTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FDQ0VTU19DT05UUk9MX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1zdHJ1Y3QgcHJvdGVjdGVkXyB7IH07ICAvLyBSZXByZXNlbnRzIHByb3RlY3RlZCBpbmhlcml0YW5jZS4KLXN0cnVjdCBwdWJsaWNfIHsgfTsgICAgIC8vIFJlcHJlc2VudHMgcHVibGljIGluaGVyaXRhbmNlLgotCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gSW1wbGVtZW50cyBwcm90ZWN0ZWQgaW5oZXJpdGFuY2UuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdHJ1Y3QgcHJvdF8gOiBwcm90ZWN0ZWQgVSAKLSAgICB7IAotICAgICAgICBwcm90XygpIHsgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPiBwcm90XyhWIHYpIDogVSh2KSB7IH0KLSAgICB9OwotCi0gICAgLy8gSW1wbGVtZW50cyBwdWJsaWMgaW5oZXJpdGFuY2UuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RydWN0IHB1Yl8gOiBwdWJsaWMgVSB7IAotICAgICAgICBwdWJfKCkgeyB9Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IHB1Yl8oViB2KSA6IFUodikgeyB9Ci0gICAgfTsKLQotLy8KLS8vIFVzZWQgdG8gZGVkdWNlIHRoZSBiYXNlIHR5cGUgZm9yIHRoZSB0ZW1wbGF0ZSBhY2Nlc3NfY29udHJvbC4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3M+Ci1zdHJ1Y3QgYWNjZXNzX2NvbnRyb2xfYmFzZSB7Ci0gICAgdHlwZWRlZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRfYWNjZXNzX3NwZWNpZmllcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPAotICAgICAgICAgICAgICAgICAgICBBY2Nlc3MsIHByb3RlY3RlZF8KLSAgICAgICAgICAgICAgICA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RfPFQ+LAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8Ci0gICAgICAgICAgICAgICAgICAgIEFjY2VzcywgcHVibGljXwotICAgICAgICAgICAgICAgID4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHViXzxUPiwKLSAgICAgICAgICAgICAgICBlbHNlXywgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZF9hY2Nlc3Nfc3BlY2lmaWVyCi0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGFjY2Vzc19jb250cm9sLgotLy8gRGVzY3JpcHRpb246IEFsbG93cyB0aGUgdHlwZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgcHJvdmlkZWQgYmFzZSBjbGFzcwotLy8gICAgICB0byBiZSBzcGVjaWZpZWQgdXNpbmcgYW4gaW50IHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEJhc2UgLSBUaGUgY2xhc3MgZnJvbSB3aGljaCB0byBpbmhlcml0IChpbmRpcmVjdGx5LikKLS8vICAgICAgQWNjZXNzIC0gVGhlIHR5cGUgb2YgYWNjZXNzIGRlc2lyZWQuIE11c3QgYmUgb25lIG9mIHRoZSAKLS8vICAgICAgICAgIHZhbHVlcyBhY2Nlc3NfYmFzZTo6cHJvdCBvciBhY2Nlc3NfYmFzZTo6cHViLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3MsCi0gICAgICAgICAgdHlwZW5hbWUgQmFzZSA9IC8vIFZDNiB3b3JrYXJhb3VuZCAoQ29tcGlsZXIgRXJyb3IgQzI1MTYpCi0gICAgICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6YWNjZXNzX2NvbnRyb2xfYmFzZTxULCBBY2Nlc3M+Ojp0eXBlID4KLXN0cnVjdCBhY2Nlc3NfY29udHJvbCA6IHB1YmxpYyBCYXNlIHsgCi0gICAgYWNjZXNzX2NvbnRyb2woKSB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBleHBsaWNpdCBhY2Nlc3NfY29udHJvbChVIHUpIDogQmFzZSh1KSB7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQUNDRVNTX0NPTlRST0xfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9jb25jZXB0X2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvY29uY2VwdF9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE4MmJlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9jb25jZXB0X2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09OQ0VQVF9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkNFUFRfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRklOQUUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbmNlcHRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+ICAgICAgICAvLyBwdWJzeW5jLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3VucmVhY2hhYmxlX3JldHVybi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9udWxsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDYXRlZ29yeT4gc3RydWN0IGRldmljZV93cmFwcGVyX2ltcGw7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDYXRlZ29yeT4gc3RydWN0IGZsdF93cmFwcGVyX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBjb25jZXB0X2FkYXB0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dmFsdWVfdHlwZTxUPjo6dHlwZSAgICAgICB2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGlzcGF0Y2g8VCwgaW5wdXQsIG91dHB1dD46OnR5cGUgIGlucHV0X3RhZzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRpc3BhdGNoPFQsIG91dHB1dCwgaW5wdXQ+Ojp0eXBlICBvdXRwdXRfdGFnOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX2RldmljZTxUPiwKLSAgICAgICAgICAgICAgICBkZXZpY2Vfd3JhcHBlcl9pbXBsPGlucHV0X3RhZz4sCi0gICAgICAgICAgICAgICAgZmx0X3dyYXBwZXJfaW1wbDxpbnB1dF90YWc+Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaW1wbDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19kZXZpY2U8VD4sCi0gICAgICAgICAgICAgICAgZGV2aWNlX3dyYXBwZXJfaW1wbDxvdXRwdXRfdGFnPiwKLSAgICAgICAgICAgICAgICBmbHRfd3JhcHBlcl9pbXBsPG91dHB1dF90YWc+Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ltcGw7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgaXNfZGV2aWNlPFQ+LAotICAgICAgICAgICAgICAgIGRldmljZV93cmFwcGVyX2ltcGw8YW55X3RhZz4sCi0gICAgICAgICAgICAgICAgZmx0X3dyYXBwZXJfaW1wbDxhbnlfdGFnPgotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueV9pbXBsOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlICAgICAgICAgICAgICBjYXRlZ29yeTsKLQotICAgIGV4cGxpY2l0IGNvbmNlcHRfYWRhcHRlcihjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxUPiYgcmVmKSA6IHRfKHJlZi5nZXQoKSkKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfc3RkX2lvPFQ+Ojp2YWx1ZSk7IH0KLSAgICBleHBsaWNpdCBjb25jZXB0X2FkYXB0ZXIoY29uc3QgVCYgdCkgOiB0Xyh0KQotICAgIHsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghaXNfc3RkX2lvPFQ+Ojp2YWx1ZSk7IH0KLQotICAgIFQmIG9wZXJhdG9yKigpIHsgcmV0dXJuIHRfOyB9Ci0gICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZ0XzsgfQotCi0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0aGlzLT5yZWFkKHMsIG4sIChiYXNpY19udWxsX3NvdXJjZTxjaGFyX3R5cGU+KikgMCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuLCBTb3VyY2UqIHNyYykKLSAgICB7IHJldHVybiBpbnB1dF9pbXBsOjpyZWFkKHRfLCBzcmMsIHMsIG4pOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0aGlzLT53cml0ZShzLCBuLCAoYmFzaWNfbnVsbF9zaW5rPGNoYXJfdHlwZT4qKSAwKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbiwgU2luayogc25rKQotICAgIHsgcmV0dXJuIG91dHB1dF9pbXBsOjp3cml0ZSh0Xywgc25rLCBzLCBuKTsgfQotCi0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgeyAKLSAgICAgICAgcmV0dXJuIHRoaXMtPnNlZWsoIG9mZiwgd2F5LCB3aGljaCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzaWNfbnVsbF9kZXZpY2U8Y2hhcl90eXBlLCBzZWVrYWJsZT4qKSAwKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIERldmljZSogZGV2ICkKLSAgICB7IHJldHVybiBhbnlfaW1wbDo6c2Vlayh0XywgZGV2LCBvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgeyB0aGlzLT5jbG9zZSh3aGljaCwgKGJhc2ljX251bGxfZGV2aWNlPGNoYXJfdHlwZSwgc2Vla2FibGU+KikgMCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIERldmljZSogZGV2KQotICAgIHsgYW55X2ltcGw6OmNsb3NlKHRfLCBkZXYsIHdoaWNoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIGJvb2wgZmx1c2goIERldmljZSogZGV2ICkKLSAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gYW55X2ltcGw6OmZsdXNoKHRfLCBkZXYpOwotICAgICAgICBpZiAoZGV2ICYmIGRldi0+TkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKSA9PSAtMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2FsZT4gLy8gQXZvaWQgZGVwZW5kZW5jeSBvbiA8bG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJiBsb2MpIHsgaW9zdHJlYW1zOjppbWJ1ZSh0XywgbG9jKTsgfQotCi0gICAgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoKSBjb25zdAotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZSh0Xyk7IH0KLXB1YmxpYzoKLSAgICBjb25jZXB0X2FkYXB0ZXImIG9wZXJhdG9yPShjb25zdCBjb25jZXB0X2FkYXB0ZXImKTsKLSAgICB2YWx1ZV90eXBlIHRfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1TcGVjaWFsaXphdGlvbnMgb2YgZGV2aWNlX3dyYXBwZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IGRldmljZV93cmFwcGVyX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIAotICAgIHNlZWsoIERldmljZSYgZGV2LCBEdW1teSosIHN0cmVhbV9vZmZzZXQgb2ZmLCAKLSAgICAgICAgICBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLSAgICB7IAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPERldmljZT46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIHJldHVybiBzZWVrKGRldiwgb2ZmLCB3YXksIHdoaWNoLCBjYXRlZ29yeSgpKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyAKLSAgICBzZWVrKCBEZXZpY2UmLCBzdHJlYW1fb2Zmc2V0LCBORE5CT09TVF9JT1M6OnNlZWtkaXIsIAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUsIGFueV90YWcgKQotICAgIHsgCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9zZWVrKCkpOwotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyAKLSAgICBzZWVrKCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIAotICAgICAgICAgIHJhbmRvbV9hY2Nlc3MgKQotICAgIHsgCi0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OnNlZWsoZGV2LCBvZmYsIHdheSwgd2hpY2gpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyB2b2lkIGNsb3NlKERldmljZSYgZGV2LCBEdW1teSosIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgeyBpb3N0cmVhbXM6OmNsb3NlKGRldiwgd2hpY2gpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyBib29sIGZsdXNoKERldmljZSYgZGV2LCBEdW1teSopCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpmbHVzaChkZXYpOyB9Ci19OwotCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXZpY2Vfd3JhcHBlcl9pbXBsPGlucHV0PiA6IGRldmljZV93cmFwcGVyX2ltcGw8YW55X3RhZz4gIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICByZWFkKCBEZXZpY2UmIGRldiwgRHVtbXkqLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSogcywKLSAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKGRldiwgcywgbik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZSggRGV2aWNlJiwgRHVtbXkqLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSosCi0gICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSApCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfd3JpdGUoKSk7Ci0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKDApIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXZpY2Vfd3JhcHBlcl9pbXBsPG91dHB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgRHVtbXk+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoRGV2aWNlJiwgRHVtbXkqLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSosIHN0ZDo6c3RyZWFtc2l6ZSkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIER1bW15PgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgCi0gICAgd3JpdGUoIERldmljZSYgZGV2LCBEdW1teSosIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlKiBzLAotICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZShkZXYsIHMsIG4pOyB9Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVNwZWNpYWxpemF0aW9ucyBvZiBmbHRfd3JhcHBlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx0X3dyYXBwZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zCi0gICAgc2VlayggRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPEZpbHRlcj46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIHJldHVybiBzZWVrKGYsIGRldiwgb2ZmLCB3YXksIHdoaWNoLCBjYXRlZ29yeSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3MKLSAgICBzZWVrKCBGaWx0ZXImLCBEZXZpY2UqLCBzdHJlYW1fb2Zmc2V0LAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSwgYW55X3RhZyApCi0gICAgeyBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGNhbnRfc2VlaygpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zCi0gICAgc2VlayggRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwKLSAgICAgICAgICByYW5kb21fYWNjZXNzIHRhZyApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPEZpbHRlcj46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIHJldHVybiBzZWVrKGYsIGRldiwgb2ZmLCB3YXksIHdoaWNoLCB0YWcsIGNhdGVnb3J5KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgRGV2aWNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcwotICAgIHNlZWsoIEZpbHRlciYgZiwgRGV2aWNlKiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLAotICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUsCi0gICAgICAgICAgcmFuZG9tX2FjY2VzcywgYW55X3RhZyApCi0gICAgeyByZXR1cm4gZi5zZWVrKCpkZXYsIG9mZiwgd2F5KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zCi0gICAgc2VlayggRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCwKLSAgICAgICAgICByYW5kb21fYWNjZXNzLCB0d29fc2VxdWVuY2UgKQotICAgIHsgcmV0dXJuIGYuc2VlaygqZGV2LCBvZmYsIHdheSwgd2hpY2gpOyAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHZvaWQgY2xvc2UoRmlsdGVyJiBmLCBEZXZpY2UqIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7IGlvc3RyZWFtczo6Y2xvc2UoZiwgKmRldiwgd2hpY2gpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgYm9vbCBmbHVzaChGaWx0ZXImIGYsIERldmljZSogZGV2KQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6Zmx1c2goZiwgKmRldik7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHRfd3JhcHBlcl9pbXBsPGlucHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoIEZpbHRlciYgZiwgU291cmNlKiBzcmMsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlKiBzLAotICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnJlYWQoZiwgKnNyYywgcywgbik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU2luaz4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIAotICAgIHdyaXRlKCBGaWx0ZXImLCBTaW5rKiwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUqLCAKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplICkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF93cml0ZSgpKTsKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oMCkgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsdF93cmFwcGVyX2ltcGw8b3V0cHV0PiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoRmlsdGVyJiwgU291cmNlKiwgdHlwZW5hbWUgY2hhcl90eXBlX29mPEZpbHRlcj46OnR5cGUqLHN0ZDo6c3RyZWFtc2l6ZSkKLSAgICB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1VOUkVBQ0hBQkxFX1JFVFVSTigwKSB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSAKLSAgICB3cml0ZSggRmlsdGVyJiBmLCBTaW5rKiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlKiBzLAotICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgbiApCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZShmLCAqc25rLCBzLCBuKTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09OQ0VQVF9BREFQVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGV2aWNlX2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGV2aWNlX2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTgyYzdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RldmljZV9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmRldmljZV9hZGFwdGVyLAotICogYSBjb252ZW5pZW5jZSBiYXNlIGNsYXNzIGZvciBkZXZpY2UgYWRhcHRlcnMuCi0gKgotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHAKLSAqIERhdGU6ICAgICAgICBNb24gTm92IDI2IDE0OjM1OjQ4IE1TVCAyMDA3Ci0gKiAKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ERVZJQ0VfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ERVZJQ0VfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBkZXZpY2VfYWRhcHRlciB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp2YWx1ZV90eXBlPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnBhcmFtX3R5cGU8VD46OnR5cGUgcGFyYW1fdHlwZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBkZXZpY2VfYWRhcHRlcihwYXJhbV90eXBlIHQpIDogdF8odCkgeyB9Ci0gICAgVCYgY29tcG9uZW50KCkgeyByZXR1cm4gdF87IH0KLQotICAgIHZvaWQgY2xvc2UoKSAKLSAgICB7Ci0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHRfKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAotICAgIHsgCi0gICAgICAgIGlvc3RyZWFtczo6Y2xvc2UodF8sIHdoaWNoKTsgCi0gICAgfQotCi0gICAgYm9vbCBmbHVzaCgpIAotICAgIHsgCi0gICAgICAgIHJldHVybiBpb3N0cmVhbXM6OmZsdXNoKHRfKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPiAvLyBBdm9pZCBkZXBlbmRlbmN5IG9uIDxsb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykgeyBpb3N0cmVhbXM6OmltYnVlKHRfLCBsb2MpOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0IAotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZSh0Xyk7IH0KLXB1YmxpYzoKLSAgICB2YWx1ZV90eXBlIHRfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFVklDRV9BREFQVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZGlyZWN0X2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWVlYmY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RpcmVjdF9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgLy8gU0ZJTkFFLCBNU1ZDLCBwdXQgcHRyZGlmZl90IGluIHN0ZC4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAvLyBjb3B5LCBtaW4uCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgLy8gcHRyZGlmZl90LgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcD4gICAgICAgIC8vIGZvcndhcmRpbmcuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4gIC8vIGxvY2FsZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RvdWJsZV9vYmplY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLCBzZWVrZGlyLCBpbnQgdHlwZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgLy8gbW9kZV9vZiwgaXNfZGlyZWN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fYmluYXJ5X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gLy8gVkM3LjEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBkaXJlY3RfYWRhcHRlcl9iYXNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFB1dCBhbGwgaW5pdGlhbGl6YXRpb24gaW4gYmFzZSBjbGFzcyB0byBmYWNpbGlhdGUgZm9yd2FyZGluZy4KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLWNsYXNzIGRpcmVjdF9hZGFwdGVyX2Jhc2UgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERpcmVjdD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RGlyZWN0Pjo6dHlwZSAgICAgICBtb2RlX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG1vZGVfdHlwZSwKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotICAgICAgICAgICwgbG9jYWxpemFibGVfdGFnCi0gICAgICAgICAgI2VuZGlmCi0gICAgICAgIHsgfTsKLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBkaXJlY3RfYWRhcHRlcl9iYXNlKGNvbnN0IERpcmVjdCYgZCk7Ci0gICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgdHdvX3NlcXVlbmNlPiBpc19kb3VibGU7Ci0gICAgc3RydWN0IHBvaW50ZXJzIHsKLSAgICAgICAgY2hhcl90eXBlICpiZWcsICpwdHIsICplbmQ7Ci0gICAgfTsKLSAgICB2b2lkIGluaXRfaW5wdXQobXBsOjp0cnVlXyk7Ci0gICAgdm9pZCBpbml0X2lucHV0KG1wbDo6ZmFsc2VfKSB7IH0KLSAgICB2b2lkIGluaXRfb3V0cHV0KG1wbDo6dHJ1ZV8pOwotICAgIHZvaWQgaW5pdF9vdXRwdXQobXBsOjpmYWxzZV8pIHsgfQotICAgIGRvdWJsZV9vYmplY3Q8cG9pbnRlcnMsIGlzX2RvdWJsZT4gIHB0cnNfOwotICAgIERpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotY2xhc3MgZGlyZWN0X2FkYXB0ZXIgOiBwcml2YXRlIGRpcmVjdF9hZGFwdGVyX2Jhc2U8RGlyZWN0PiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+ICAgICAgYmFzZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpwb2ludGVycyAgICAgcG9pbnRlcnM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmlzX2RvdWJsZSAgICBpc19kb3VibGU7Ci0gICAgdXNpbmcgYmFzZV90eXBlOjpwdHJzXzsKLSAgICB1c2luZyBiYXNlX3R5cGU6OmRfOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgY2F0ZWdvcnk7Ci0KLSAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzEwKQotICAgIGRpcmVjdF9hZGFwdGVyKGNvbnN0IERpcmVjdCYgZCkgOiBiYXNlX3R5cGUoZCkgeyB9ICAgCi0gICAgZGlyZWN0X2FkYXB0ZXIoY29uc3QgZGlyZWN0X2FkYXB0ZXImIGQpIDogYmFzZV90eXBlKGQpIHsgfQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgxLCBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpCi0jZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RydWN0IGlzX2RpcmVjdAotICAgICAgICA6IG1wbDo6b3JfPCAKLSAgICAgICAgICAgICAgaXNfc2FtZTxVLCBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+ID4sIAotICAgICAgICAgICAgICBpc19zYW1lPFUsIERpcmVjdD4gCi0gICAgICAgICAgPgotICAgICAgICB7IH07Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBkaXJlY3RfYWRhcHRlcihjb25zdCBVJiB1KSAKLSAgICAgICAgOiBiYXNlX3R5cGUoZm9yd2FyZCh1LCBpc19kaXJlY3Q8VT4oKSkpCi0gICAgICAgIHsgfQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgyLCBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhuKSBcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgdHlwZW5hbWUgUCk+IFwKLSAgICBkaXJlY3RfYWRhcHRlcihORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMobiwgY29uc3QgUCwgJnApKSBcCi0gICAgICAgIDogYmFzZV90eXBlKERpcmVjdChORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSkpIFwKLSAgICAgICAgeyB9IFwKLSAgICAvKiovCi0jaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSN1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwotCi0gICAgICAgIC8vIERldmljZSBpbnRlcmZhY2UuCi0KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCwgTkROQk9PU1RfSU9TOjpzZWVrZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKTsKLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmKTsKLSNlbmRpZgotCi0gICAgICAgIC8vIERpcmVjdCBkZXZpY2UgYWNjZXNzLgotCi0gICAgRGlyZWN0JiBvcGVyYXRvciooKSB7IHJldHVybiBkXzsgfQotICAgIERpcmVjdCogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZkXzsgfQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMxMCkKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdGF0aWMgRGlyZWN0IGZvcndhcmQoY29uc3QgVSYgdSwgbXBsOjp0cnVlXykgeyByZXR1cm4gdTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIERpcmVjdCBmb3J3YXJkKGNvbnN0IFUmIHUsIG1wbDo6ZmFsc2VfKSB7IHJldHVybiBEaXJlY3QodSk7IH0KLSNlbmRpZgotfTsKLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygd3JhcF9kaXJlY3QgYW5kIHVud3JhcF9kaXJlY3QtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotc3RydWN0IHdyYXBfZGlyZWN0X3RyYWl0cyAKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2RpcmVjdDxEZXZpY2U+LAotICAgICAgICAgIGRpcmVjdF9hZGFwdGVyPERldmljZT4sCi0gICAgICAgICAgRGV2aWNlCi0gICAgICA+Ci0gICAgeyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci10eXBlbmFtZSB3cmFwX2RpcmVjdF90cmFpdHM8RGV2aWNlPjo6dHlwZQotaW5saW5lIHdyYXBfZGlyZWN0KERldmljZSBkZXYpIAoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHdyYXBfZGlyZWN0X3RyYWl0czxEZXZpY2U+Ojp0eXBlIHR5cGU7Ci0gICAgcmV0dXJuIHR5cGUoZGV2KTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWlubGluZSBEZXZpY2UmIHVud3JhcF9kaXJlY3QoRGV2aWNlJiBkKSB7IHJldHVybiBkOyB9ICAKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotaW5saW5lIERldmljZSYgdW53cmFwX2RpcmVjdChkaXJlY3RfYWRhcHRlcjxEZXZpY2U+JiBkKSB7IHJldHVybiAqZDsgfSAgCi0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBkaXJlY3RfYWRhcHRlcl9iYXNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLWRpcmVjdF9hZGFwdGVyX2Jhc2U8RGlyZWN0Pjo6ZGlyZWN0X2FkYXB0ZXJfYmFzZShjb25zdCBEaXJlY3QmIGQpIDogZF8oZCkKLXsKLSAgICBpbml0X2lucHV0KGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD4oKSk7Ci0gICAgaW5pdF9vdXRwdXQoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD4oKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLXZvaWQgZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+Ojppbml0X2lucHV0KG1wbDo6dHJ1ZV8pIAotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBzZXEgPSBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKGRfKTsKLSAgICBwdHJzXy5maXJzdCgpLmJlZyA9IHNlcS5maXJzdDsKLSAgICBwdHJzXy5maXJzdCgpLnB0ciA9IHNlcS5maXJzdDsKLSAgICBwdHJzXy5maXJzdCgpLmVuZCA9IHNlcS5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLXZvaWQgZGlyZWN0X2FkYXB0ZXJfYmFzZTxEaXJlY3Q+Ojppbml0X291dHB1dChtcGw6OnRydWVfKSAKLXsKLSAgICBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gc2VxID0gaW9zdHJlYW1zOjpvdXRwdXRfc2VxdWVuY2UoZF8pOwotICAgIHB0cnNfLnNlY29uZCgpLmJlZyA9IHNlcS5maXJzdDsKLSAgICBwdHJzXy5zZWNvbmQoKS5wdHIgPSBzZXEuZmlyc3Q7Ci0gICAgcHRyc18uc2Vjb25kKCkuZW5kID0gc2VxLnNlY29uZDsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGRpcmVjdF9hZGFwdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBwb2ludGVycyYgZ2V0ID0gcHRyc18uZmlyc3QoKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgYXZhaWwgPSAKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihnZXQuZW5kIC0gZ2V0LnB0cik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IChzdGQ6Om1pbikobiwgYXZhaWwpOwotICAgIHN0ZDo6Y29weShnZXQucHRyLCBnZXQucHRyICsgcmVzdWx0LCBzKTsKLSAgICBnZXQucHRyICs9IHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0PgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgcG9pbnRlcnMmIHB1dCA9IHB0cnNfLnNlY29uZCgpOwotICAgIGlmIChuID4gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihwdXQuZW5kIC0gcHV0LnB0cikpCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24od3JpdGVfYXJlYV9leGhhdXN0ZWQoKSk7Ci0gICAgc3RkOjpjb3B5KHMsIHMgKyBuLCBwdXQucHRyKTsKLSAgICBwdXQucHRyICs9IG47Ci0gICAgcmV0dXJuIG47Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERpcmVjdD4KLWlubGluZSBzdGQ6OnN0cmVhbXBvcyBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjpzZWVrCi0gICAgKCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIHBvaW50ZXJzJiBnZXQgPSBwdHJzXy5maXJzdCgpOwotICAgIHBvaW50ZXJzJiBwdXQgPSBwdHJzXy5zZWNvbmQoKTsKLSAgICBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6Y3VyICYmIGdldC5wdHIgIT0gcHV0LnB0cikKLSAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgIHB0cmRpZmZfdCBuZXh0ID0gMDsKLSAgICBpZiAoKHdoaWNoICYgTkROQk9PU1RfSU9TOjppbikgfHwgIWlzX2RvdWJsZTo6dmFsdWUpIHsKLSAgICAgICAgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmJlZykKLSAgICAgICAgICAgIG5leHQgPSBvZmY7IAotICAgICAgICBlbHNlIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIpCi0gICAgICAgICAgICBuZXh0ID0gZ2V0LnB0ciAtIGdldC5iZWcgKyBvZmY7IAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXh0ID0gZ2V0LmVuZCAtIGdldC5iZWcgKyBvZmY7IAotICAgICAgICBpZiAobmV4dCA+PSAwICYmIG5leHQgPD0gZ2V0LmVuZCAtIGdldC5iZWcpCi0gICAgICAgICAgICBnZXQucHRyID0gZ2V0LmJlZyArIG5leHQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgfQotICAgIGlmICgod2hpY2ggJiBORE5CT09TVF9JT1M6Om91dCkgJiYgaXNfZG91YmxlOjp2YWx1ZSkgewotICAgICAgICBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6YmVnKQotICAgICAgICAgICAgbmV4dCA9IG9mZjsgCi0gICAgICAgIGVsc2UgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmN1cikKLSAgICAgICAgICAgIG5leHQgPSBwdXQucHRyIC0gcHV0LmJlZyArIG9mZjsgCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5leHQgPSBwdXQuZW5kIC0gcHV0LmJlZyArIG9mZjsgCi0gICAgICAgIGlmIChuZXh0ID49IDAgJiYgbmV4dCA8PSBwdXQuZW5kIC0gcHV0LmJlZykKLSAgICAgICAgICAgIHB1dC5wdHIgPSBwdXQuYmVnICsgbmV4dDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihuZXh0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGlyZWN0Pgotdm9pZCBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjpjbG9zZSgpIAoteyAKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIHR3b19zZXF1ZW5jZT46OnZhbHVlKSk7Ci0gICAgZGV0YWlsOjpjbG9zZV9hbGwoZF8pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci12b2lkIGRpcmVjdF9hZGFwdGVyPERpcmVjdD46OmNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAoteyAKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKChpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgdHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpjbG9zZShkXywgd2hpY2gpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEaXJlY3Q+Ci0gICAgdm9pZCBkaXJlY3RfYWRhcHRlcjxEaXJlY3Q+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKSAKLSAgICB7IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmltYnVlKGRfLCBsb2MpOyB9Ci0jZW5kaWYKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVJFQ1RfQURBUFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2ZpbHRlcl9hZGFwdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2ZpbHRlcl9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjNGM0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogRGVmaW5lcyB0aGUgY2xhc3MgdGVtcGxhdGUgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpmaWx0ZXJfYWRhcHRlciwKLSAqIGEgY29udmVuaWVuY2UgYmFzZSBjbGFzcyBmb3IgZmlsdGVyIGFkYXB0ZXJzLgotICoKLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZmlsdGVyX2FkYXB0ZXIuaHBwCi0gKiBEYXRlOiAgICAgICAgTW9uIE5vdiAyNiAxNDozNTo0OCBNU1QgMjAwNwotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTFRFUl9BREFQVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTFRFUl9BREFQVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGZpbHRlcl9hZGFwdGVyIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnZhbHVlX3R5cGU8VD46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxUPjo6dHlwZSBwYXJhbV90eXBlOwotcHVibGljOgotICAgIGV4cGxpY2l0IGZpbHRlcl9hZGFwdGVyKHBhcmFtX3R5cGUgdCkgOiB0Xyh0KSB7IH0KLSAgICBUJiBjb21wb25lbnQoKSB7IHJldHVybiB0XzsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYpIAotICAgIHsgCi0gICAgICAgIGRldGFpbDo6Y2xvc2VfYWxsKHRfLCBkZXYpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBjbG9zZShEZXZpY2UmIGRldiwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi0gICAgeyAKLSAgICAgICAgaW9zdHJlYW1zOjpjbG9zZSh0XywgZGV2LCB3aGljaCk7IAotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGZsdXNoKERldmljZSYgZGV2KSAKLSAgICB7IAotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpmbHVzaCh0XywgZGV2KTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPiAvLyBBdm9pZCBkZXBlbmRlbmN5IG9uIDxsb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykgeyBpb3N0cmVhbXM6OmltYnVlKHRfLCBsb2MpOyB9Ci0KLSAgICBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZSgpIGNvbnN0IAotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6b3B0aW1hbF9idWZmZXJfc2l6ZSh0Xyk7IH0KLXB1YmxpYzoKLSAgICB2YWx1ZV90eXBlIHRfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZJTFRFUl9BREFQVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbW9kZV9hZGFwdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL21vZGVfYWRhcHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZDViNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbW9kZV9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX01PREVfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9NT0RFX0FEQVBURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLS8vIENvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZSBtb2RlX2FkYXB0ZXIsIHdoaWNoIGFsbG93cwotLy8gYSBmaWx0ZXIgb3IgZGV2aWNlIHRvIGZ1bmN0aW9uIGFzIGlmIGl0IGhhcyBhIGRpZmZlcmVudCBpL28gbW9kZSB0aGFuIHRoYXQKLS8vIGRlZHVjZWQgYnkgdGhlIG1ldGFmdW5jdGlvbiBtb2RlX29mLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLCBzZWVrZGlyLCBpbnQgdHlwZXMuIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4gCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgVD4KLWNsYXNzIG1vZGVfYWRhcHRlciB7Ci1wcml2YXRlOgotICAgIHN0cnVjdCBlbXB0eV9iYXNlIHsgfTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHdyYXBwZWRfdHlwZTxUPjo6dHlwZSAgY29tcG9uZW50X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgCi0gICAgICAgIDogTW9kZSwgCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBtcGw6OmlmXzxpc19maWx0ZXI8VD4sIGZpbHRlcl90YWcsIGRldmljZV90YWc+LAotICAgICAgICAgIG1wbDo6aWZfPGlzX2ZpbHRlcjxUPiwgbXVsdGljaGFyX3RhZywgZW1wdHlfYmFzZT4sCi0gICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgY2xvc2FibGVfdGFnLCAvLyBWQzYgY2FuJ3Qgc2VlIG1lbWJlciBjbG9zZSgpIQotICAgICAgICAgICNlbmRpZgotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgbW9kZV9hZGFwdGVyKGNvbnN0IGNvbXBvbmVudF90eXBlJiB0KSA6IHRfKHQpIHsgfQotCi0gICAgICAgIC8vIERldmljZSBtZW1iZXIgZnVuY3Rpb25zLgotCi0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHZvaWQgY2xvc2UoKTsKLSAgICB2b2lkIGNsb3NlKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotI2VuZGlmCi0KLSAgICAgICAgLy8gRmlsdGVyIG1lbWJlciBmdW5jdGlvbnMuCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjpyZWFkKHRfLCBzcmMsIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gaW9zdHJlYW1zOjp3cml0ZSh0Xywgc25rLCBzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5KQotICAgIHsgcmV0dXJuIGlvc3RyZWFtczo6c2Vlayh0XywgZGV2LCBvZmYsIHdheSk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnNlZWsodF8sIGRldiwgb2ZmLCB3YXksIHdoaWNoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYpCi0gICAgeyBkZXRhaWw6OmNsb3NlX2FsbCh0XywgZGV2KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgeyBpb3N0cmVhbXM6OmNsb3NlKHRfLCBkZXYsIHdoaWNoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9jYWxlPgotICAgIHZvaWQgaW1idWUoY29uc3QgTG9jYWxlJiBsb2MpCi0gICAgeyBpb3N0cmVhbXM6OmltYnVlKHRfLCBsb2MpOyB9Ci1wcml2YXRlOgotICAgIGNvbXBvbmVudF90eXBlIHRfOwotfTsKLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIG1vZGVfYWRhcHRlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotc3RkOjpzdHJlYW1zaXplIG1vZGVfYWRhcHRlcjxNb2RlLCBUPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cmVhZCh0Xywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgVD4KLXN0ZDo6c3RyZWFtc2l6ZSBtb2RlX2FkYXB0ZXI8TW9kZSwgVD46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBuZG5ib29zdDo6aW9zdHJlYW1zOjp3cml0ZSh0Xywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgVD4KLXN0ZDo6c3RyZWFtcG9zIG1vZGVfYWRhcHRlcjxNb2RlLCBUPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgcmV0dXJuIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnNlZWsodF8sIG9mZiwgd2F5LCB3aGljaCk7IH0KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotICAgIHZvaWQgbW9kZV9hZGFwdGVyPE1vZGUsIFQ+OjpjbG9zZSgpIAotICAgIHsgZGV0YWlsOjpjbG9zZV9hbGwodF8pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBUPgotICAgIHZvaWQgbW9kZV9hZGFwdGVyPE1vZGUsIFQ+OjpjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSAKLSAgICB7IGlvc3RyZWFtczo6Y2xvc2UodF8sIHdoaWNoKTsgfQotI2VuZGlmCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9NT0RFX0FEQVBURVJfSFBQX0lOQ0xVREVEIC8vLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmEwNzBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL25vbl9ibG9ja2luZ19hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTk9OX0JMT0NLSU5HX0FEQVBURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTk9OX0JMT0NLSU5HX0FEQVBURVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAvLyBzdHJlYW1zaXplLCBzZWVrZGlyLCBvcGVubW9kZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1jbGFzcyBub25fYmxvY2tpbmdfYWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogbW9kZV9vZjxEZXZpY2U+Ojp0eXBlLCBkZXZpY2VfdGFnCi0gICAgICAgIHsgfTsKLSAgICBleHBsaWNpdCBub25fYmxvY2tpbmdfYWRhcHRlcihEZXZpY2UmIGRldikgOiBkZXZpY2VfKGRldikgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IAotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gMDsKLSAgICAgICAgd2hpbGUgKHJlc3VsdCA8IG4pIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSBpb3N0cmVhbXM6OnJlYWQoZGV2aWNlXywgcywgbik7Ci0gICAgICAgICAgICBpZiAoYW10ID09IC0xKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyAKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IDA7Ci0gICAgICAgIHdoaWxlIChyZXN1bHQgPCBuKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjp3cml0ZShkZXZpY2VfLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgIHJlc3VsdCArPSBhbXQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsgICAgCi0gICAgfQotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IHJldHVybiBpb3N0cmVhbXM6OnNlZWsoZGV2aWNlXywgb2ZmLCB3YXksIHdoaWNoKTsgfQotcHVibGljOgotICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyJiBvcGVyYXRvcj0oY29uc3Qgbm9uX2Jsb2NraW5nX2FkYXB0ZXImKTsKLSAgICBEZXZpY2UmIGRldmljZV87Ci19OwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZSBpb3N0cmVhbXMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTk9OX0JMT0NLSU5HX0FEQVBURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9vdXRwdXRfaXRlcmF0b3JfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9vdXRwdXRfaXRlcmF0b3JfYWRhcHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YjY5MjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvb3V0cHV0X2l0ZXJhdG9yX2FkYXB0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9PVVRQVVRfSVRFUkFUT1JfQURBUFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9PVVRQVVRfSVRFUkFUT1JfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgLy8gY29weS4KLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPiAvLyB0YWdzLgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgT3V0SXQ+Ci1jbGFzcyBvdXRwdXRfaXRlcmF0b3JfYWRhcHRlciB7Ci1wdWJsaWM6Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgICB0eXBlZGVmIENoICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzaW5rX3RhZyAgY2F0ZWdvcnk7Ci0gICAgZXhwbGljaXQgb3V0cHV0X2l0ZXJhdG9yX2FkYXB0ZXIoT3V0SXQgb3V0KSA6IG91dF8ob3V0KSB7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikgCi0gICAgeyAKLSAgICAgICAgc3RkOjpjb3B5KHMsIHMgKyBuLCBvdXRfKTsgCi0gICAgICAgIHJldHVybiBuOyAKLSAgICB9Ci1wcml2YXRlOgotICAgIE91dEl0IG91dF87Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfT1VUUFVUX0lURVJBVE9SX0FEQVBURVJfSFBQX0lOQ0xVREVEIC8vLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvcmFuZ2VfYWRhcHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc4OTQ4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1JBTkdFX0FEQVBURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUkFOR0VfQURBUFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB0cmRpZmZfdC4KLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJlYW1zaXplLCBzdHJlYW1vZmYuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2l0ZXJhdG9yLmhwcD4gICAgICAgICAgICAgLy8gbmRuYm9vc3Q6Oml0ZXJhdG9yX3RyYWl0cy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFVzZWQgZm9yIHNpbXVsYXRlZCB0YWcgZGlzcGF0Y2guCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmF2ZXJzYWw+IHN0cnVjdCByYW5nZV9hZGFwdGVyX2ltcGw7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiByYW5nZV9hZGFwdGVyCi0vLyBEZXNjcmlwdGlvbjogRGV2aWNlIGJhc2VkIG9uIGFuIGluc3RhbmNlIG9mIG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgTW9kZSAtIEEgbW9kZSB0YWcuCi0vLyAgICAgUmFuZ2UgLSBBbiBpbnN0YW5jZSBvZiBpdGVyYXRvcl9yYW5nZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBSYW5nZT4KLWNsYXNzIHJhbmdlX2FkYXB0ZXIgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFJhbmdlOjppdGVyYXRvciAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPGl0ZXJhdG9yPiAgaXRlcl90cmFpdHM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX3RyYWl0czo6aXRlcmF0b3JfY2F0ZWdvcnkgICBpdGVyX2NhdDsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFJhbmdlOjp2YWx1ZV90eXBlICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBNb2RlLCBkZXZpY2VfdGFnIHsgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgaXRlcl9jYXQsCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcKLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZwotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOwotICAgIHR5cGVkZWYgcmFuZ2VfYWRhcHRlcl9pbXBsPHRhZz4gICAgICAgICAgICAgICAgICAgaW1wbDsKLQotICAgIGV4cGxpY2l0IHJhbmdlX2FkYXB0ZXIoY29uc3QgUmFuZ2UmIHJuZyk7Ci0gICAgcmFuZ2VfYWRhcHRlcihpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXkpOwotcHJpdmF0ZToKLSAgICBpdGVyYXRvciBmaXJzdF8sIGN1cl8sIGxhc3RfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByYW5nZV9hZGFwdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1yYW5nZV9hZGFwdGVyPE1vZGUsIFJhbmdlPjo6cmFuZ2VfYWRhcHRlcihjb25zdCBSYW5nZSYgcm5nKQotICAgIDogZmlyc3RfKHJuZy5iZWdpbigpKSwgY3VyXyhybmcuYmVnaW4oKSksIGxhc3RfKHJuZy5lbmQoKSkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFJhbmdlPgotcmFuZ2VfYWRhcHRlcjxNb2RlLCBSYW5nZT46OnJhbmdlX2FkYXB0ZXIoaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QpCi0gICAgOiBmaXJzdF8oZmlyc3QpLCBjdXJfKGZpcnN0KSwgbGFzdF8obGFzdCkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIFJhbmdlPgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSByYW5nZV9hZGFwdGVyPE1vZGUsIFJhbmdlPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW1wbDo6cmVhZChjdXJfLCBsYXN0Xywgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHJhbmdlX2FkYXB0ZXI8TW9kZSwgUmFuZ2U+Ojp3cml0ZQotICAgIChjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQoteyByZXR1cm4gaW1wbDo6d3JpdGUoY3VyXywgbGFzdF8sIHMsIG4pOyB9Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgUmFuZ2U+Ci1zdGQ6OnN0cmVhbXBvcyByYW5nZV9hZGFwdGVyPE1vZGUsIFJhbmdlPjo6c2VlawotICAgIChzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSkKLXsgCi0gICAgaW1wbDo6c2VlayhmaXJzdF8sIGN1cl8sIGxhc3RfLCBvZmYsIHdheSk7IAotICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24oY3VyXyAtIGZpcnN0Xyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgcmFuZ2VfYWRhcHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCByYW5nZV9hZGFwdGVyX2ltcGw8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIENoPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgICAoSXRlciYgY3VyLCBJdGVyJiBsYXN0LCBDaCogcyxzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZW0gPSBuOyAvLyBOby4gb2YgY2hhcnMgcmVtYWluaW5nLgotICAgICAgICB3aGlsZSAoY3VyICE9IGxhc3QgJiYgcmVtLS0gPiAwKSAqcysrID0gKmN1cisrOwotICAgICAgICByZXR1cm4gbiAtIHJlbSAhPSAwID8gbiAtIHJlbSA6IC0xOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIENoPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgKEl0ZXImIGN1ciwgSXRlciYgbGFzdCwgY29uc3QgQ2gqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgd2hpbGUgKGN1ciAhPSBsYXN0ICYmIG4tLSA+IDApICpjdXIrKyA9ICpzKys7Ci0gICAgICAgIGlmIChjdXIgPT0gbGFzdCAmJiBuID4gMCkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24od3JpdGVfYXJlYV9leGhhdXN0ZWQoKSk7Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByYW5nZV9hZGFwdGVyX2ltcGw8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsIHR5cGVuYW1lIENoPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgICAoSXRlciYgY3VyLCBJdGVyJiBsYXN0LCBDaCogcyxzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAKLSAgICAgICAgICAgIChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihsYXN0IC0gY3VyKSwgbik7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICBzdGQ6OmNvcHkoY3VyLCBjdXIgKyByZXN1bHQsIHMpOwotICAgICAgICBjdXIgKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyLCB0eXBlbmFtZSBDaD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIHdyaXRlCi0gICAgICAgIChJdGVyJiBjdXIsIEl0ZXImIGxhc3QsIGNvbnN0IENoKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBjb3VudCA9Ci0gICAgICAgICAgICAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obGFzdCAtIGN1ciksIG4pOwotICAgICAgICBzdGQ6OmNvcHkocywgcyArIGNvdW50LCBjdXIpOwotICAgICAgICBjdXIgKz0gY291bnQ7Ci0gICAgICAgIGlmIChjb3VudCA8IG4pIAotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbih3cml0ZV9hcmVhX2V4aGF1c3RlZCgpKTsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLSAgICBzdGF0aWMgdm9pZCBzZWVrCi0gICAgICAgICggSXRlciYgZmlyc3QsIEl0ZXImIGN1ciwgSXRlciYgbGFzdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSApCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBzd2l0Y2ggKHdheSkgewotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6YmVnOgotICAgICAgICAgICAgaWYgKG9mZiA+IGxhc3QgLSBmaXJzdCB8fCBvZmYgPCAwKQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgICAgICAgICBjdXIgPSBmaXJzdCArIG9mZjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6Y3VyOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90IG5ld29mZiA9IGN1ciAtIGZpcnN0ICsgb2ZmOwotICAgICAgICAgICAgICAgIGlmIChuZXdvZmYgPiBsYXN0IC0gZmlyc3QgfHwgbmV3b2ZmIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgICAgICAgICBjdXIgKz0gb2ZmOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6ZW5kOgotICAgICAgICAgICAgaWYgKGxhc3QgLSBmaXJzdCArIG9mZiA8IDAgfHwgb2ZmID4gMCkKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgICAgICAgICAgY3VyID0gbGFzdCArIG9mZjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUkFOR0VfQURBUFRFUl9IUFBfSU5DTFVERUQgLy8tLS0tLS0tLS0tLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkZF9mYWNldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRkX2ZhY2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJhYTUzNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRkX2ZhY2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBCb3Jyb3dlZCBmcm9tIDxuZG5ib29zdC9hcmNoaXZlL2FkZF9mYWNldC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9BRERfRkFDRVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQUREX0ZBQ0VUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQi4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBhZGRfZmFjZXQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIERvZXMgU1RMcG9ydCB1c2VzIG9sZCBEaW5rdW13YXJlIGxvY2FsZT8KLSNpZiAoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkgJiYgXAotICAgIGRlZmluZWQoX1NUTFBfTk9fT1dOX0lPU1RSRUFNUykgXAotICAgIC8qKi8KLSMgIGlmIChkZWZpbmVkKF9ZVkFMUykgJiYgIWRlZmluZWQoX19JQk1DUFBfXykpIHx8IGRlZmluZWQoX0NQUExJQl9WRVIpCi0jICAgIGRlZmluZSBORE5CT09TVF9JT1NUUkVNU19TVExQT1JUX1dJVEhfT0xEX0RJTktVTVdBUkUKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBGYWNldD4KLWlubGluZSBzdGQ6OmxvY2FsZSBhZGRfZmFjZXQoY29uc3Qgc3RkOjpsb2NhbGUgJmwsIEZhY2V0ICogZikKLXsKLSAgICByZXR1cm4KLSAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsID09IDEpIHx8IFwKLSAgICAgICAgICAgIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFTVNfU1RMUE9SVF9XSVRIX09MRF9ESU5LVU1XQVJFKSBcCi0gICAgICAgICAgICAvKiovCi0gICAgICAgICAgICBzdGQ6OmxvY2FsZShzdGQ6Ol9BZGRmYWMobCwgZikpOwotICAgICAgICAjZWxzZQotICAgICAgICAgICAgLy8gc3RhbmRhcmQgY29tcGF0aWJsZQotICAgICAgICAgICAgc3RkOjpsb2NhbGUobCwgZik7Ci0gICAgICAgICNlbmRpZgotfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQUREX0ZBQ0VUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MWZhMjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQk9PTF9UUkFJVF9ERUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQk9PTF9UUkFJVF9ERUZfSFBQX0lOQ0xVREVEICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RlbXBsYXRlX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSAKLS8vIAotLy8gTWFjcm8gbmFtZTogTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGCi0vLyBEZXNjcmlwdGlvbjogVXNlZCB0byBnZW5lcmF0ZSB0aGUgdHJhaXRzIGNsYXNzZXMgaXNfaXN0cmVhbSwgaXNfb3N0cmVhbSwKLS8vICAgICAgZXRjLgotLy8KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgyKSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19UUkFJVF9OQU1FU1BBQ0UodHJhaXQpCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1RSQUlUX05BTUVTUEFDRSh0cmFpdCkgTkROQk9PU1RfUFBfQ0FUKHRyYWl0LCBfaW1wbF8pOjogCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKHRyYWl0LCB0eXBlLCBhcml0eSkgXAotICAgIG5hbWVzcGFjZSBORE5CT09TVF9QUF9DQVQodHJhaXQsIF9pbXBsXykgeyBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfUEFSQU1TKGFyaXR5LCBUKSBcCi0gICAgICB0eXBlX3RyYWl0czo6eWVzX3R5cGUgaGVscGVyIFwKLSAgICAgICAgICAoY29uc3Qgdm9sYXRpbGUgdHlwZSBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfQVJHUyhhcml0eSwgVCkqKTsgXAotICAgICAgdHlwZV90cmFpdHM6Om5vX3R5cGUgaGVscGVyKC4uLik7IFwKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICAgIHN0cnVjdCBpbXBsIHsgXAotICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBcCi0gICAgICAgICAgIChzaXplb2YoTkROQk9PU1RfSU9TVFJFQU1TX1RSQUlUX05BTUVTUEFDRSh0cmFpdCkgXAotICAgICAgICAgICAgICBoZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkgPT0gXAotICAgICAgICAgICAgICAgIHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7IFwKLSAgICAgIH07IFwKLSAgICB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgc3RydWN0IHRyYWl0IFwKLSAgICAgICAgOiBtcGw6OmJvb2xfPE5ETkJPT1NUX1BQX0NBVCh0cmFpdCwgX2ltcGxfKTo6aW1wbDxUPjo6dmFsdWU+IFwKLSAgICB7IE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgdHJhaXQsIChUKSkgfTsgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CT09MX1RSQUlUX0RFRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIwODFhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9TVEFUSUNfQ09OU0FOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBVPgotc3RydWN0IGZvcndhcmRfaW1wbCB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKCAhaXNfc2FtZTwgVSwgRGV2aWNlID46OnZhbHVlICYmCi0gICAgICAgICAgIWlzX3NhbWU8IFUsIHJlZmVyZW5jZV93cmFwcGVyPERldmljZT4gPjo6dmFsdWUgKSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgZm9yd2FyZAotICAgIDogbXBsOjpib29sXzxmb3J3YXJkX2ltcGw8RGV2aWNlLCBVPjo6dmFsdWU+Ci0gICAgeyB9OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg1ZjFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fU1RSRUFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vZm9yd2FyZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRGV2aWNlLAotICAgICAgICAgIHR5cGVuYW1lIFRyID0KLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICAgICAgICApLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0KLSAgICAgICAgICAgICAgc3RkOjphbGxvY2F0b3I8Ci0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlCi0gICAgICAgICAgICAgID4gPgotc3RydWN0IHN0cmVhbSA6IGRldGFpbDo6c3RyZWFtX2Jhc2U8RGV2aWNlLCBUciwgQWxsb2M+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSwKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZGV0YWlsOjpzdHJlYW1fdHJhaXRzPERldmljZSwgVHI+OjpzdHJlYW1fdGFnCi0gICAgICAgIHsgfTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICBkZXRhaWw6OnN0cmVhbV90cmFpdHM8Ci0gICAgICAgICAgICAgICAgRGV2aWNlLCBUcgotICAgICAgICAgICAgPjo6c3RyZWFtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV90eXBlOwotcHVibGljOgotICAgIHN0cmVhbSgpIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHN0cmVhbShjb25zdCBVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHN0cmVhbShjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICBzdHJlYW0oY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICBzdHJlYW0oVTAmIHUwKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICBzdHJlYW0oVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgc3RyZWFtKFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwLCB1MSwgdTIpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3Blbihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxEZXZpY2UsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3BlbihVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPERldmljZSwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3BlbihVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW4oVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8RGV2aWNlLCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICBib29sIGlzX29wZW4oKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuaXNfb3BlbigpOyB9Ci0gICAgdm9pZCBjbG9zZSgpIHsgdGhpcy0+bWVtYmVyLmNsb3NlKCk7IH0KLSAgICBib29sIGF1dG9fY2xvc2UoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuYXV0b19jbG9zZSgpOyB9Ci0gICAgdm9pZCBzZXRfYXV0b19jbG9zZShib29sIGNsb3NlKSB7IHRoaXMtPm1lbWJlci5zZXRfYXV0b19jbG9zZShjbG9zZSk7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCkgeyByZXR1cm4gdGhpcy0+bWVtYmVyLnN0cmljdF9zeW5jKCk7IH0KLSAgICBEZXZpY2UmIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzLT5tZW1iZXI7IH0KLSAgICBEZXZpY2UqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmKnRoaXMtPm1lbWJlcjsgfQotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKHUwKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6ZmFsc2VfLCBVMCYgdTApCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oZGV0YWlsOjp3cmFwKHUwKSk7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBjb25zdCBVMCYgdTApCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oRGV2aWNlKGNvbnN0X2Nhc3Q8VTAmPih1MCkpKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihEZXZpY2UodTApKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4odTAsIHUxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKERldmljZShjb25zdF9jYXN0PFUwJj4odTApLCB1MSkpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgdGhpcy0+Y2xlYXIoKTsgCi0gICAgICAgIHRoaXMtPm1lbWJlci5vcGVuKERldmljZSh1MCwgdTEpKTsKLSAgICB9Ci0jZW5kaWYgLy8gIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4odTAsIHUxLCB1Mik7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIHRoaXMtPmNsZWFyKCk7IAotICAgICAgICB0aGlzLT5tZW1iZXIub3BlbihEZXZpY2UoY29uc3RfY2FzdDxVMCY+KHUwKSwgdTEsIHUyKSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3Blbl9pbXBsKG1wbDo6dHJ1ZV8sIFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oRGV2aWNlKHUwLCB1MSwgdTIpKTsKLSAgICB9Ci0jZW5kaWYKLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtX2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnJva2VuX292ZXJsb2FkX3Jlc29sdXRpb24vc3RyZWFtX2J1ZmZlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0OWMxY2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL3N0cmVhbV9idWZmZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fU1RSRUFNX0JVRkZFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9mb3J3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIAotICAgICAgICAgIHR5cGVuYW1lIFRyID0gCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUygKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIAotICAgICAgICAgICAgICApLAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gCi0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgCi0gICAgICAgICAgICAgID4sCi0gICAgICAgICAgdHlwZW5hbWUgTW9kZSA9IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbW9kZV9vZjxUPjo6dHlwZSA+Ci1jbGFzcyBzdHJlYW1fYnVmZmVyCi0gICAgOiBwdWJsaWMgZGV0YWlsOjpzdHJlYW1fYnVmZmVyX3RyYWl0czxULCBUciwgQWxsb2MsIE1vZGU+Ojp0eXBlCi17Ci1wcml2YXRlOgotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxUPjo6dHlwZSwgTW9kZQotICAgICAgICA+Ojp2YWx1ZQotICAgICkpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBkZXRhaWw6OnN0cmVhbV9idWZmZXJfdHJhaXRzPAotICAgICAgICAgICAgICAgIFQsIFRyLCBBbGxvYywgTW9kZQotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IE1vZGUsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIHN0cmVhbWJ1Zl90YWcKLSAgICAgICAgeyB9OwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpCi0gICAgc3RyZWFtX2J1ZmZlcigpIHsgfQotICAgIH5zdHJlYW1fYnVmZmVyKCkKLSAgICB7IAotICAgICAgICB0cnkgeyAKLSAgICAgICAgICAgIGlmICh0aGlzLT5pc19vcGVuKCkgJiYgdGhpcy0+YXV0b19jbG9zZSgpKSAKLSAgICAgICAgICAgICAgICB0aGlzLT5jbG9zZSgpOyAKLSAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0gCi0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHN0cmVhbV9idWZmZXIoY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgc3RyZWFtX2J1ZmZlcihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgc3RyZWFtX2J1ZmZlcihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICBzdHJlYW1fYnVmZmVyKFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHN0cmVhbV9idWZmZXIoVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHN0cmVhbV9idWZmZXIoVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSwgdTIpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICAgIHZvaWQgb3Blbihjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSkKLSAgICB7Ci0gICAgICAgIG9wZW5faW1wbChkZXRhaWw6OmZvcndhcmQ8VCwgVTA+KCksIHUwLCB1MSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxLCBjb25zdCBVMiYgdTIpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEsIHUyKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwPgotICAgIHZvaWQgb3BlbihVMCYgdTApCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMT4KLSAgICB2b2lkIG9wZW4oVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBvcGVuX2ltcGwoZGV0YWlsOjpmb3J3YXJkPFQsIFUwPigpLCB1MCwgdTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyPgotICAgIHZvaWQgb3BlbihVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgb3Blbl9pbXBsKGRldGFpbDo6Zm9yd2FyZDxULCBVMD4oKSwgdTAsIHUxLCB1Mik7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICBUJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpcy0+Y29tcG9uZW50KCk7IH0KLSAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gdGhpcy0+Y29tcG9uZW50KCk7IH0KLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIGNvbnN0IFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3Blbihjb25zdF9jYXN0PFUwJj4odTApLCAtMSwgLTEpOwotICAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIFUwJiB1MCkKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3BlbihkZXRhaWw6OndyYXAodTApLCAtMSwgLTEpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTA+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgY29uc3QgVTAmIHUwKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKFQoY29uc3RfY2FzdDxVMCY+KHUwKSksIC0xLCAtMSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMD4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBVMCYgdTApCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVCh1MCksIC0xLCAtMSk7Ci0gICAgfQotI2VuZGlmIC8vICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjpmYWxzZV8sIGNvbnN0IFUwJiB1MCwgY29uc3QgVTEmIHUxKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKHUwLCB1MSwgLTEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVChjb25zdF9jYXN0PFUwJj4odTApLCB1MSksIC0xLCAtMSk7Ci0gICAgfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgVTAmIHUwLCBjb25zdCBVMSYgdTEpCi0gICAgewotICAgICAgICBiYXNlX3R5cGU6Om9wZW4oVCh1MCwgdTEpLCAtMSwgLTEpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OmZhbHNlXywgY29uc3QgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3Blbih1MCwgdTEsIHUyKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMj4KLSAgICB2b2lkIG9wZW5faW1wbChtcGw6OnRydWVfLCBjb25zdCBVMCYgdTAsIGNvbnN0IFUxJiB1MSwgY29uc3QgVTImIHUyKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpvcGVuKFQoY29uc3RfY2FzdDxVMCY+KHUwKSwgdTEsIHUyKSwgLTEsIC0xKTsKLSAgICB9Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUwLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTI+Ci0gICAgdm9pZCBvcGVuX2ltcGwobXBsOjp0cnVlXywgVTAmIHUwLCBjb25zdCBVMSYgdTEsIGNvbnN0IFUyJiB1MikKLSAgICB7Ci0gICAgICAgIGJhc2VfdHlwZTo6b3BlbihUKHUwLCB1MSwgdTIpLCAtMSwgLTEpOwotICAgIH0KLSNlbmRpZiAvLyAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdm9pZCBjaGVja19vcGVuKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLT5pc19vcGVuKCkpIAotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYWxyZWFkeSBvcGVuIikpOwotICAgIH0KLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTl9TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmViNWY2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYnVmZmVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JVRkZFUlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQlVGRkVSU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2FwLgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgIC8vIG1lbWJlciB0ZW1wbGF0ZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgICAgLy8gc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgICAgIC8vIGludF90eXBlX29mLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGVja2VkX29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tQnVmZmVycy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJ1ZmZlcgotLy8gRGVzY3JpcHRpb246IENoYXJhY3RlciBidWZmZXIuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgIEFsbG9jIC0gVGhlIEFsbG9jYXRvciB0eXBlLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBiYXNpY19idWZmZXIgewotcHJpdmF0ZToKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2M6OnRlbXBsYXRlIHJlYmluZDxDaD46Om90aGVyIGFsbG9jYXRvcl90eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIHN0ZDo6YWxsb2NhdG9yPENoPiBhbGxvY2F0b3JfdHlwZTsKLSNlbmRpZgotcHVibGljOgotICAgIGJhc2ljX2J1ZmZlcigpOwotICAgIGJhc2ljX2J1ZmZlcihpbnQgYnVmZmVyX3NpemUpOwotICAgIH5iYXNpY19idWZmZXIoKTsKLSAgICB2b2lkIHJlc2l6ZShpbnQgYnVmZmVyX3NpemUpOwotICAgIENoKiBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGJ1Zl87IH0KLSAgICBDaCogZW5kKCkgY29uc3QgeyByZXR1cm4gYnVmXyArIHNpemVfOyB9Ci0gICAgQ2gqIGRhdGEoKSBjb25zdCB7IHJldHVybiBidWZfOyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBzaXplXzsgfQotICAgIHZvaWQgc3dhcChiYXNpY19idWZmZXImIHJocyk7Ci1wcml2YXRlOgotICAgIC8vIERpc2FsbG93IGNvcHlpbmcgYW5kIGFzc2lnbm1lbnQuCi0gICAgYmFzaWNfYnVmZmVyKGNvbnN0IGJhc2ljX2J1ZmZlciYpOwotICAgIGJhc2ljX2J1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX2J1ZmZlciYpOwotICAgIENoKiAgICAgICAgICAgICAgYnVmXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgIHNpemVfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotdm9pZCBzd2FwKGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+JiBsaHMsIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+JiByaHMpCi17IGxocy5zd2FwKHJocyk7IH0KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJ1ZmZlcgotLy8gRGVzY3JpcHRpb246IENoYXJhY3RlciBidWZmZXIgd2l0aCB0d28gcG9pbnRlcnMgYWNjZXNzaWJsZSB2aWEgcHRyKCkgYW5kCi0vLyAgICAgIGVwdHIoKS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgQ2ggLSBBIGNoYXJhY3RlciB0eXBlLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBidWZmZXIgOiBwdWJsaWMgYmFzaWNfYnVmZmVyPENoLCBBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPENoPiB0cmFpdHNfdHlwZTsKLSAgICB1c2luZyBiYXNlOjpyZXNpemU7IAotICAgIHVzaW5nIGJhc2U6OmRhdGE7IAotICAgIHVzaW5nIGJhc2U6OnNpemU7Ci0gICAgdHlwZWRlZiBDaCogY29uc3QgY29uc3RfcG9pbnRlcjsKLSAgICBidWZmZXIoaW50IGJ1ZmZlcl9zaXplKTsKLSAgICBDaCogJiBwdHIoKSB7IHJldHVybiBwdHJfOyB9Ci0gICAgY29uc3RfcG9pbnRlciYgcHRyKCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQotICAgIENoKiAmIGVwdHIoKSB7IHJldHVybiBlcHRyXzsgfQotICAgIGNvbnN0X3BvaW50ZXImIGVwdHIoKSBjb25zdCB7IHJldHVybiBlcHRyXzsgfQotICAgIHZvaWQgc2V0KHN0ZDo6c3RyZWFtc2l6ZSBwdHIsIHN0ZDo6c3RyZWFtc2l6ZSBlbmQpOwotICAgIHZvaWQgc3dhcChidWZmZXImIHJocyk7Ci0KLSAgICAvLyBSZXR1cm5zIGFuIGludF90eXBlIGFzIGEgc3RhdHVzIGNvZGUuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHR5cGVuYW1lIGludF90eXBlX29mPFNvdXJjZT46OnR5cGUgZmlsbChTb3VyY2UmIHNyYykgCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUga2VlcDsKLSAgICAgICAgaWYgKChrZWVwID0gc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihlcHRyXyAtIHB0cl8pKSA+IDApCi0gICAgICAgICAgICB0cmFpdHNfdHlwZTo6bW92ZSh0aGlzLT5kYXRhKCksIHB0cl8sIGtlZXApOwotICAgICAgICBzZXQoMCwga2VlcCk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6cmVhZChzcmMsIHRoaXMtPmRhdGEoKSArIGtlZXAsIHRoaXMtPnNpemUoKSAtIGtlZXApOwotICAgICAgICBpZiAocmVzdWx0ICE9IC0xKQotICAgICAgICAgICAgdGhpcy0+c2V0KDAsIGtlZXAgKyByZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0ID09IC0xID8KLSAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSA6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID09IDAgPwotICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soKSA6Ci0gICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjpnb29kKCk7Ci0KLSAgICB9Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgb25lIG9yIG1vcmUgY2hhcmFjdGVycyB3ZXJlIHdyaXR0ZW4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmIGRlc3QpIAotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oZXB0cl8gLSBwdHJfKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGVfaWYoZGVzdCwgcHRyXywgYW10KTsKLSAgICAgICAgaWYgKHJlc3VsdCA8IGFtdCkgewotICAgICAgICAgICAgdHJhaXRzX3R5cGU6Om1vdmUoIHRoaXMtPmRhdGEoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyXyArIHJlc3VsdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW10IC0gcmVzdWx0ICk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy0+c2V0KDAsIGFtdCAtIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMDsKLSAgICB9Ci1wcml2YXRlOgotICAgIENoICpwdHJfLCAqZXB0cl87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIHN3YXAoYnVmZmVyPENoLCBBbGxvYz4mIGxocywgYnVmZmVyPENoLCBBbGxvYz4mIHJocykKLXsgbGhzLnN3YXAocmhzKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgYmFzaWNfYnVmZmVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19idWZmZXI8Q2gsIEFsbG9jPjo6YmFzaWNfYnVmZmVyKCkgOiBidWZfKDApLCBzaXplXygwKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfYnVmZmVyPENoLCBBbGxvYz46OmJhc2ljX2J1ZmZlcihpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBidWZfKHN0YXRpY19jYXN0PENoKj4oYWxsb2NhdG9yX3R5cGUoKS5hbGxvY2F0ZShidWZmZXJfc2l6ZSwgMCkpKSwgCi0gICAgICBzaXplXyhidWZmZXJfc2l6ZSkgLy8gQ2FzdCBmb3IgU3VuUHJvIDUuMy4KLSAgICB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotaW5saW5lIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+Ojp+YmFzaWNfYnVmZmVyKCkKLXsKLSAgICBpZiAoYnVmXykgewotICAgICAgICBhbGxvY2F0b3JfdHlwZSgpLmRlYWxsb2NhdGUoYnVmXywKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQWxsb2M6OnNpemVfdHlwZT4oc2l6ZV8pKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLWlubGluZSB2b2lkIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+OjpyZXNpemUoaW50IGJ1ZmZlcl9zaXplKQotewotICAgIGlmIChzaXplXyAhPSBidWZmZXJfc2l6ZSkgewotICAgICAgICBiYXNpY19idWZmZXI8Q2gsIEFsbG9jPiB0ZW1wKGJ1ZmZlcl9zaXplKTsKLSAgICAgICAgc3RkOjpzd2FwKHNpemVfLCB0ZW1wLnNpemVfKTsKLSAgICAgICAgc3RkOjpzd2FwKGJ1Zl8sIHRlbXAuYnVmXyk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIGJhc2ljX2J1ZmZlcjxDaCwgQWxsb2M+Ojpzd2FwKGJhc2ljX2J1ZmZlciYgcmhzKSAKLXsgCi0gICAgc3RkOjpzd2FwKGJ1Zl8sIHJocy5idWZfKTsgCi0gICAgc3RkOjpzd2FwKHNpemVfLCByaHMuc2l6ZV8pOyAKLX0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGJ1ZmZlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEFsbG9jPgotYnVmZmVyPENoLCBBbGxvYz46OmJ1ZmZlcihpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBiYXNpY19idWZmZXI8Q2gsIEFsbG9jPihidWZmZXJfc2l6ZSkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYz4KLWlubGluZSB2b2lkIGJ1ZmZlcjxDaCwgQWxsb2M+OjpzZXQoc3RkOjpzdHJlYW1zaXplIHB0ciwgc3RkOjpzdHJlYW1zaXplIGVuZCkKLXsgCi0gICAgcHRyXyA9IGRhdGEoKSArIHB0cjsgCi0gICAgZXB0cl8gPSBkYXRhKCkgKyBlbmQ7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgQWxsb2M+Ci1pbmxpbmUgdm9pZCBidWZmZXI8Q2gsIEFsbG9jPjo6c3dhcChidWZmZXImIHJocykgCi17IAotICAgIGJhc2U6OnN3YXAocmhzKTsgCi0gICAgc3RkOjpzd2FwKHB0cl8sIHJocy5wdHJfKTsgCi0gICAgc3RkOjpzd2FwKGVwdHJfLCByaHMuZXB0cl8pOyAKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0JVRkZFUlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NhbGxfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxN2MxYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9WQUxVRV9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1ZBTFVFX1RZUEVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcGFyYW1fdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc19zdGRfaW88VD4sIFQmLCBjb25zdCBUJj46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdmFsdWVfdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxpc19zdGRfaW88VD4sIFQmLCBUPjo6dHlwZSB0eXBlOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1ZBTFVFX1RZUEVfSFBQX0lOQ0xVREVEIC8vLS0tLS0tLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YWFmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gUHJvdmlkZXMgc3RkOjpjaGFyX3RyYWl0cyBmb3IgbGlicmFyaWVzIHdpdGhvdXQgdGVtcGxhdGVkIHN0cmVhbXMuIFNob3VsZCBub3QKLS8vIGJlIGNvbmZ1c2VkIHdpdGggPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+LCB3aGljaCBkZWZpbmVzIHRoZQotLy8gdGVtcGxhdGUgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2hhcl90cmFpdHMuCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE1ha2Ugc3VyZSBzaXplX3QgaXMgaW4gc3RkLgotIyBpbmNsdWRlIDxjc3RkZGVmPgotIyBpbmNsdWRlIDxjc3RyaW5nPgotIyBpbmNsdWRlIDxjc3RkaW8+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaCkgc3RkOjpjaGFyX3RyYWl0czwgY2ggPgotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaCkgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFyX3RyYWl0cwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBjaGFyX3RyYWl0cyAgewotICAgIHR5cGVkZWYgY2hhciAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIGludCAgICAgICAgICAgICBpbnRfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtcG9zICBwb3NfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6c3RyZWFtb2ZmICBvZmZfdHlwZTsKLQotICAgIC8vIE5vdGU6IHRoaXMgbWF5IG5vdCBiZSBub3QgY29uZm9ybWluZywgc2luY2UgaXQgdHJlYXRzIGNoYXJzIGFzIHVuc2lnbmVkLAotICAgIC8vIGJ1dCBpcyBvbmx5IHVzZWQgdG8gdGVzdCBmb3IgZXF1YWxpdHkuCi0gICAgc3RhdGljIGludCBjb21wYXJlKGNvbnN0IGNoYXIqIGxocywgY29uc3QgY2hhciogcmhzLCBzdGQ6OnNpemVfdCBuKQotICAgIHsgcmV0dXJuIHN0ZDo6c3RybmNtcChsaHMsIHJocywgbik7IH0KLSAgICBzdGF0aWMgY2hhciogY29weShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHN0ZDo6c2l6ZV90IG4pCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHN0ZDo6bWVtY3B5KGRlc3QsIHNyYywgbikpOyB9Ci0gICAgc3RhdGljIGNoYXIqIG1vdmUoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzdGQ6OnNpemVfdCBuKQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihzdGQ6Om1lbW1vdmUoZGVzdCwgc3JjLCBuKSk7IH0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZmluZChjb25zdCBjaGFyKiBzLCBzdGQ6OnNpemVfdCBuLCBjb25zdCBjaGFyJiBjKQotICAgIHsgcmV0dXJuIChjb25zdCBjaGFyKikgKGNvbnN0IHZvaWQqKSBzdGQ6Om1lbWNocihzLCBjLCBuKTsgfQotICAgIHN0YXRpYyBjaGFyIHRvX2NoYXJfdHlwZShjb25zdCBpbnQmIGMpIHsgcmV0dXJuIGM7IH0KLSAgICBzdGF0aWMgaW50IHRvX2ludF90eXBlKGNvbnN0IGNoYXImIGMpIHsgcmV0dXJuIGM7IH0KLSAgICBzdGF0aWMgYm9vbCBlcV9pbnRfdHlwZShjb25zdCBpbnQmIGxocywgY29uc3QgaW50JiByaHMpCi0gICAgeyByZXR1cm4gbGhzID09IHJoczsgfQotICAgIHN0YXRpYyBpbnQgZW9mKCkgeyByZXR1cm4gRU9GOyB9Ci0gICAgc3RhdGljIGludCBub3RfZW9mKGNvbnN0IGludCYgYykgeyByZXR1cm4gYyAhPSBFT0YgPyBjIDogJ1xuJzsgfQotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NIQVJfVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaGVscGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMWExYzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaGVscGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgdGhlIHRlbXBsYXRlIGNvZGVjdnRfaGVscGVyLCB1c2VmdWwgZm9yCi0vLyBkZWZpbmluZyBzcGVjaWFsaXphdGlvbnMgb2Ygc3RkOjpjb2RlY3Z0IHdoZXJlIHN0YXRlX3R5cGUgIT0gbWJzdGF0ZV90LgotLy8gQ29tcGVuc2F0ZXMgZm9yIHRoZSBmYWN0IHRoYXQgc29tZSBzdGFuZGFyZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucyAKLS8vIGRvIG5vdCBkZXJpdmUgdGhlIHByaW1pYXJ5IGNvZGVjdnQgdGVtcGxhdGUgZnJvbSBsb2NhbGU6OmZhY2V0IG9yIAotLy8gcHJvdmlkZSB0aGUgY29ycmVjdCBtZW1iZXIgdHlwZXMgYW5kIGZ1bmN0aW9ucy4KLQotLy8gVXNhZ2U6IAotLy8KLS8vIC8vIEluIGdsb2JhbCBuYW1lc3BhY2U6Ci0vLyBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9TUEVDKG15c3RhdGUpCi0vLwotLy8gLy8gSW4gdXNlciBuYW1lc3BhY2U6Ci0vLyB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcm4sIHR5cGVuYW1lIEV4dGVybj4KLS8vIHN0cnVjdCBteWNvZGVjdnQgOiBjb2RlY3Z0X2hlbHBlcjxJbnRlcm4sIEV4dGVybiwgU3RhdGU+IHsgLi4uIH07Ci0vLwotLy8gLy8gT3I6Ci0vLyBzdHJ1Y3QgbXljb2RlY3Z0IDogY29kZWN2dF9oZWxwZXI8d2NoYXJfdCwgY2hhciwgU3RhdGU+IHsgLi4uIH07Ci0vLyAKLS8vIEV0Yy4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPREVDVlRfSEVMUEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPREVDVlRfSEVMUEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBQdXQgc2l6ZV90IGluIHN0ZCwgTkROQk9PU1RfTVNWQywgRGlua3VtLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgLy8gbWluLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAvLyBzaXplX3QuCi0jaW5jbHVkZSA8bG9jYWxlPiAgICAgICAgICAgIC8vIGxvY2FsZSwgY29kZWN2dF9iYXNlLCBjb2RlY3Z0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgdHJhaXRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiwgPT0gMSkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9pbnRlcm4geyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmludGVybl90eXBlIHR5cGU7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9leHRlcm4geyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmV4dGVybl90eXBlIHR5cGU7IH07Ci0KLSNlbHNlIC8vICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiwgPT0gMSkgLy8tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9pbnRlcm4geyB0eXBlZGVmIHR5cGVuYW1lIFQ6OmZyb21fdHlwZSB0eXBlOyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNvZGVjdnRfZXh0ZXJuIHsgdHlwZWRlZiB0eXBlbmFtZSBUOjp0b190eXBlIHR5cGU7IH07Ci0KLSNlbmRpZiAvLyAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsID09IDEpIC8vLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY29kZWN2dF9zdGF0ZSB7IHR5cGVkZWYgdHlwZW5hbWUgVDo6c3RhdGVfdHlwZSB0eXBlOyB9OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBjb2RlY3Z0X2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTikgfHwgXAotICAgIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0VNUFRZX1BSSU1BUllfQ09ERUNWVF9ERUZJTklUSU9OKSB8fCBcCi0gICAgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFKSBcCi0gICAgLyoqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVybiwgdHlwZW5hbWUgRXh0ZXJuLCB0eXBlbmFtZSBTdGF0ZT4KLXN0cnVjdCBjb2RlY3Z0X2ltcGwgOiBzdGQ6OmxvY2FsZTo6ZmFjZXQsIHN0ZDo6Y29kZWN2dF9iYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEludGVybiAgaW50ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiBFeHRlcm4gIGV4dGVybl90eXBlOwotICAgIHR5cGVkZWYgU3RhdGUgICBzdGF0ZV90eXBlOwotCi0gICAgY29kZWN2dF9pbXBsKHN0ZDo6c2l6ZV90IHJlZnMgPSAwKSA6IHN0ZDo6bG9jYWxlOjpmYWNldChyZWZzKSB7IH0gCi0KLSAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0gICAgaW4oIFN0YXRlJiBzdGF0ZSwgY29uc3QgRXh0ZXJuKiBmaXJzdDEsIGNvbnN0IEV4dGVybiogbGFzdDEsCi0gICAgICAgIGNvbnN0IEV4dGVybiomIG5leHQxLCBJbnRlcm4qIGZpcnN0MiwgSW50ZXJuKiBsYXN0MiwKLSAgICAgICAgSW50ZXJuKiYgbmV4dDIgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvX2luKHN0YXRlLCBmaXJzdDEsIGxhc3QxLCBuZXh0MSwgZmlyc3QyLCBsYXN0MiwgbmV4dDIpOwotICAgIH0KLQotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICBvdXQoIFN0YXRlJiBzdGF0ZSwgY29uc3QgSW50ZXJuKiBmaXJzdDEsIGNvbnN0IEludGVybiogbGFzdDEsCi0gICAgICAgICBjb25zdCBJbnRlcm4qJiBuZXh0MSwgRXh0ZXJuKiBmaXJzdDIsIEV4dGVybiogbGFzdDIsCi0gICAgICAgICBFeHRlcm4qJiBuZXh0MiApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZG9fb3V0KHN0YXRlLCBmaXJzdDEsIGxhc3QxLCBuZXh0MSwgZmlyc3QyLCBsYXN0MiwgbmV4dDIpOwotICAgIH0KLQotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICB1bnNoaWZ0KFN0YXRlJiBzdGF0ZSwgRXh0ZXJuKiBmaXJzdDIsIEV4dGVybiogbGFzdDIsIEV4dGVybiomIG5leHQyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvX3Vuc2hpZnQoc3RhdGUsIGZpcnN0MiwgbGFzdDIsIG5leHQyKTsKLSAgICB9Ci0KLSAgICBib29sIGFsd2F5c19ub2NvbnYoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGRvX2Fsd2F5c19ub2NvbnYoKTsgfQotCi0gICAgaW50IG1heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGRvX21heF9sZW5ndGgoKTsgfQotCi0gICAgaW50IGVuY29kaW5nKCkgY29uc3QgdGhyb3coKSB7IHJldHVybiBkb19lbmNvZGluZygpOyB9Ci0KLSAgICBpbnQgbGVuZ3RoKCBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIgU3RhdGUmIHN0YXRlLCAKLSAgICAgICAgICAgICAgICBjb25zdCBFeHRlcm4qIGZpcnN0MSwgY29uc3QgRXh0ZXJuKiBsYXN0MSwKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBsZW4yICkgY29uc3QgdGhyb3coKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRvX2xlbmd0aChzdGF0ZSwgZmlyc3QxLCBsYXN0MSwgbGVuMik7Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIHN0ZDo6Y29kZWN2dF9iYXNlOjpyZXN1bHQKLSAgICB2aXJ0dWFsIGRvX2luKCBTdGF0ZSYsIGNvbnN0IEV4dGVybiosIGNvbnN0IEV4dGVybiosIGNvbnN0IEV4dGVybiomLCAKLSAgICAgICAgICAgICAgICAgICBJbnRlcm4qLCBJbnRlcm4qLCBJbnRlcm4qJiApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om5vY29udjsKLSAgICB9Ci0KLSAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0gICAgdmlydHVhbCBkb19vdXQoIFN0YXRlJiwgY29uc3QgSW50ZXJuKiwgY29uc3QgSW50ZXJuKiwgY29uc3QgSW50ZXJuKiYsIAotICAgICAgICAgICAgICAgICAgICBFeHRlcm4qLCBFeHRlcm4qLCBFeHRlcm4qJiApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om5vY29udjsKLSAgICB9Ci0KLSAgICBzdGQ6OmNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0gICAgdmlydHVhbCBkb191bnNoaWZ0KFN0YXRlJiwgRXh0ZXJuKiwgRXh0ZXJuKiwgRXh0ZXJuKiYpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpjb2RlY3Z0X2Jhc2U6Om9rOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBkb19hbHdheXNfbm9jb252KCkgY29uc3QgdGhyb3coKSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2aXJ0dWFsIGludCBkb19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAxOyB9Ci0KLSAgICB2aXJ0dWFsIGludCBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBpbnQgZG9fbGVuZ3RoKCBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIgU3RhdGUmLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVybiogZmlyc3QxLCBjb25zdCBFeHRlcm4qIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbGVuMiApIGNvbnN0IHRocm93KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PihsYXN0MSAtIGZpcnN0MSksIGxlbjIpOwotICAgIH0KLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vIG5vIHByaW1hcnkgY29kZWN2dCBkZWZpbml0aW9uLCBlbXB0eSBkZWZpbml0aW9uLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgTkROQk9PU1RfSU9TVFJFQU1TX0NPREVDVlRfU1BFQy0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fUFJJTUFSWV9DT0RFQ1ZUX0RFRklOSVRJT04pIHx8IFwKLSAgICBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19FTVBUWV9QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTikgXAotICAgIC8qKi8KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9TUEVDKHN0YXRlKSBcCi0gICAgbmFtZXNwYWNlIHN0ZCB7IFwKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJuLCB0eXBlbmFtZSBFeHRlcm4+IFwKLSAgICAgICAgY2xhc3MgY29kZWN2dDxJbnRlcm4sIEV4dGVybiwgc3RhdGU+IFwKLSAgICAgICAgICAgIDogcHVibGljIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjb2RlY3Z0X2ltcGw8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm4sIEV4dGVybiwgc3RhdGUgXAotICAgICAgICAgICAgICAgICAgICAgPiBcCi0gICAgICAgIHsgXAotICAgICAgICBwdWJsaWM6IFwKLSAgICAgICAgICAgIGNvZGVjdnQoc3RkOjpzaXplX3QgcmVmcyA9IDApIFwKLSAgICAgICAgICAgICAgICA6IDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjb2RlY3Z0X2ltcGw8IFwKLSAgICAgICAgICAgICAgICAgICAgICBJbnRlcm4sIEV4dGVybiwgc3RhdGUgXAotICAgICAgICAgICAgICAgICAgPihyZWZzKSBcCi0gICAgICAgICAgICAgICAgeyB9IFwKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6OmxvY2FsZTo6aWQgaWQ7IFwKLSAgICAgICAgfTsgXAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcm4sIHR5cGVuYW1lIEV4dGVybj4gXAotICAgICAgICBzdGQ6OmxvY2FsZTo6aWQgY29kZWN2dDxJbnRlcm4sIEV4dGVybiwgc3RhdGU+OjppZDsgXAotICAgIH0gXAotICAgIC8qKi8KLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19DT0RFQ1ZUX1NQRUMoc3RhdGUpIFwKLSAgICBuYW1lc3BhY2Ugc3RkIHsgXAotICAgICAgICB0ZW1wbGF0ZTw+IFwKLSAgICAgICAgY2xhc3MgY29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGF0ZT4gXAotICAgICAgICAgICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNvZGVjdnRfaW1wbDwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QsIGNoYXIsIHN0YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgID4gXAotICAgICAgICB7IFwKLSAgICAgICAgcHVibGljOiBcCi0gICAgICAgICAgICBjb2RlY3Z0KHN0ZDo6c2l6ZV90IHJlZnMgPSAwKSBcCi0gICAgICAgICAgICAgICAgOiA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y29kZWN2dF9pbXBsPCBcCi0gICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCwgY2hhciwgc3RhdGUgXAotICAgICAgICAgICAgICAgICAgPihyZWZzKSBcCi0gICAgICAgICAgICAgICAgeyB9IFwKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6OmxvY2FsZTo6aWQgaWQ7IFwKLSAgICAgICAgfTsgXAotICAgICAgICB0ZW1wbGF0ZTw+IFwKLSAgICAgICAgc3RkOjpsb2NhbGU6OmlkIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgc3RhdGU+OjppZDsgXAotICAgIH0gXAotICAgIC8qKi8KLSMgZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9TUEVDKHN0YXRlKQotI2VuZGlmIC8vIG5vIHByaW1hcnkgY29kZWN2dCBkZWZpbml0aW9uLCBvciBlbXB0eSBkZWZpbml0aW9uLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNvZGVjdnRfaGVscGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJuLCB0eXBlbmFtZSBFeHRlcm4sIHR5cGVuYW1lIFN0YXRlPgotc3RydWN0IGNvZGVjdnRfaGVscGVyIDogc3RkOjpjb2RlY3Z0PEludGVybiwgRXh0ZXJuLCBTdGF0ZT4geyAKLSAgICB0eXBlZGVmIEludGVybiAgaW50ZXJuX3R5cGU7Ci0gICAgdHlwZWRlZiBFeHRlcm4gIGV4dGVybl90eXBlOwotICAgIHR5cGVkZWYgU3RhdGUgICBzdGF0ZV90eXBlOwotICAgIGNvZGVjdnRfaGVscGVyKHN0ZDo6c2l6ZV90IHJlZnMgPSAwKSAKLSAgICAjaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX05PX0NPREVDVlRfQ1RPUl9GUk9NX1NJWkVfVCkKLSAgICAgICAgOiBzdGQ6OmNvZGVjdnQ8SW50ZXJuLCBFeHRlcm4sIFN0YXRlPihyZWZzKQotICAgICNlbHNlCi0gICAgICAgIDogc3RkOjpjb2RlY3Z0PEludGVybiwgRXh0ZXJuLCBTdGF0ZT4oKQotICAgICNlbmRpZgotICAgICAgICB7IH0KLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fQ09ERUNWVF9NQVhfTEVOR1RICi0gICAgaW50IG1heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIGRvX21heF9sZW5ndGgoKTsgfQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgaW50IGRvX21heF9sZW5ndGgoKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuIDE7IH0KLSNlbmRpZgotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPREVDVlRfSEVMUEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaG9sZGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb2RlY3Z0X2hvbGRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNWU5MjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvZGVjdnRfaG9sZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyBtYWNoaW5lcnkgZm9yIHBlcmZvcm1pbmcgY29kZSBjb252ZXJzaW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ERUNWVF9IT0xERVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ERUNWVF9IT0xERVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8Y3djaGFyPiAgICAgICAgICAgIC8vIG1ic3RhdGVfdC4KLSNpbmNsdWRlIDxsb2NhbGU+ICAgICAgICAgICAgLy8gY29kZWN2dCwgbG9jYWxlLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBIQVNfTUFDUk9fVVNFX0ZBQ0VULgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBkZWZhdWx0X2NvZGVjdnQgeyAKLSAgICB0eXBlZGVmIHdjaGFyX3QgICAgICAgICBpbnRlcm5fdHlwZSwgZnJvbV90eXBlOwotICAgIHR5cGVkZWYgY2hhciAgICAgICAgICAgIGV4dGVybl90eXBlLCB0b190eXBlOwotICAgIHR5cGVkZWYgc3RkOjptYnN0YXRlX3QgIHN0YXRlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlY3Z0Pgotc3RydWN0IGNvZGVjdnRfaG9sZGVyIHsKLSAgICB0eXBlZGVmIENvZGVjdnQgY29kZWN2dF90eXBlOwotICAgIGNvbnN0IGNvZGVjdnRfdHlwZSYgZ2V0KCkgY29uc3QgeyByZXR1cm4gY29kZWN2dF87IH0KLSAgICB2b2lkIGltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJikgeyB9Ci0gICAgQ29kZWN2dCBjb2RlY3Z0XzsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjb2RlY3Z0X2hvbGRlcjxkZWZhdWx0X2NvZGVjdnQ+IHsKLSAgICB0eXBlZGVmIHN0ZDo6Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBzdGQ6Om1ic3RhdGVfdD4gY29kZWN2dF90eXBlOwotICAgIGNvZGVjdnRfaG9sZGVyKCkgeyByZXNldF9jb2RlY3Z0KCk7IH0KLSAgICBjb25zdCBjb2RlY3Z0X3R5cGUmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpjb2RlY3Z0XzsgfQotICAgIHZvaWQgaW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYykgCi0gICAgeyAKLSAgICAgICAgbG9jXyA9IGxvYzsKLSAgICAgICAgcmVzZXRfY29kZWN2dCgpOwotICAgIH0KLSAgICB2b2lkIHJlc2V0X2NvZGVjdnQoKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgI2lmbmRlZiBORE5CT09TVF9IQVNfTUFDUk9fVVNFX0ZBQ0VUCi0gICAgICAgICAgICBjb2RlY3Z0XyA9ICYgdXNlX2ZhY2V0PCBjb2RlY3Z0X3R5cGUgPihsb2NfKTsKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgIGNvZGVjdnRfID0gJiBfVVNFKGxvY18sIGNvZGVjdnRfdHlwZSk7Ci0gICAgICAgICNlbmRpZgotICAgIH0KLSAgICBzdGQ6OmxvY2FsZSBsb2NfOyAvLyBQcmV2ZW50IGNvZGVjdnRfIGZyb20gYmVpbmcgZnJlZWQuCi0gICAgY29uc3QgY29kZWN2dF90eXBlKiBjb2RlY3Z0XzsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT0RFQ1ZUX0hPTERFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5ZjgwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQWRhcHRlZCBmcm9tIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4gYW5kIGZyb20KLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbCwgYnkgSm9obiBNYWRkb2NrLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQVVUT19MSU5LX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0FVVE9fTElOS19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfRVhURVJOQUxfTElCX05BTUUpCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgXAotICAgICB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgXAotICAgICB8fCAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBkZWZpbmVkKF9XSU4zMikgJiYgKF9fTVdFUktTX18gPj0gMHgzMDAwKSkgXAotICAgICB8fCAoZGVmaW5lZChfX0lDTCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmIChfTVNDX1ZFUiA+PSAxMjAwKSkgXAotICAgICAvKiovCi0jICBwcmFnbWEgY29tbWVudChsaWIsIE5ETkJPT1NUX0VYVEVSTkFMX0xJQl9OQU1FKQotIyBlbmRpZgotIyB1bmRlZiBORE5CT09TVF9FWFRFUk5BTF9MSUJfTkFNRQotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRW5hYmxlIGF1dG9tYXRpYyBsaWJyYXJ5IHZhcmlhbnQgc2VsZWN0aW9uLS0tLS0tLS0tLS0tLS0tLS8vIAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1NPVVJDRSkgJiYgXAotICAgICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmIFwKLSAgICAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfTk9fTElCKSBcCi0gICAgLyoqLwotCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX0xJQl9OQU1FIG5kbmJvb3N0X2lvc3RyZWFtcwotCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdC4KLSMgaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jIGVuZGlmCi0KLS8vIEFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgdGhhdCBkb2VzIHRoZSB3b3JrLgotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNlbmRpZiAgLy8gYXV0by1saW5raW5nIGRpc2FibGVkCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQVVUT19MSU5LX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9iemlwMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2J6aXAyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYyY2E2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2J6aXAyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPiBhbmQgZnJvbQotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieSBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlpJUDJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0JaSVAyX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9CWklQMl9CSU5BUlkpCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgXAotICAgICBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgXAotICAgICAoZGVmaW5lZChfX01XRVJLU19fKSAmJiBkZWZpbmVkKF9XSU4zMikgJiYgKF9fTVdFUktTX18gPj0gMHgzMDAwKSkgfHwgXAotICAgICAoZGVmaW5lZChfX0lDTCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmIChfTVNDX1ZFUiA+PSAxMjAwKSkgXAotICAgICAvKiovCi0KLS8vIFNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIC5saWIgZmlsZS4KLSMgIHByYWdtYSBjb21tZW50KGxpYiwgTkROQk9PU1RfU1RSSU5HSVpFKE5ETkJPT1NUX0JaSVAyX0JJTkFSWSkpCi0jIGVuZGlmCi0jZWxzZSAKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1NPVVJDRSkgJiYgXAotICAgICAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiBcCi0gICAgICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19MSUIpIFwKLSAgICAgLyoqLwotCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdC4KLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF9iemlwMgotCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdC4KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19EWU5fTElOSykKLSMgICBkZWZpbmUgTkROQk9PU1RfRFlOX0xJTksKLSMgIGVuZGlmCi0KLS8vIEFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgdGhhdCBkb2VzIHRoZSB3b3JrLgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jIGVuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlpJUDJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9jb2RlY3Z0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhNDViMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQ09ERUNWVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQ09ERUNWVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgIAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVN1cHBvcnQgZm9yIGNvZGVjdnQgd2l0aCB1c2VyLWRlZmluZWQgc3RhdGUgdHlwZXMtLS0tLS0tLS0vLwotCi0jaWYgZGVmaW5lZChfX01TTF9DUFBfXykgfHwgZGVmaW5lZChfX0xJQkNPTU9fXykgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX1NUTFBPUlRfVkVSU0lPTiwgPD0gMHg0NTApIFwKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfTk9fUFJJTUFSWV9DT0RFQ1ZUX0RFRklOSVRJT04KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX1NUTFBPUlRfVkVSU0lPTiwgPiAweDQ1MCkgXAotICAgIC8qKi8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19FTVBUWV9QUklNQVJZX0NPREVDVlRfREVGSU5JVElPTgotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tQ2hlY2sgZm9yIGNvZGVjdnQgY3RvciB0YWtpbmcgYSByZWZlcmVuY2UgY291bnQtLS0tLS0tLS0tLS8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDUpKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA8IDB4NDYxKSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX0NPREVDVlRfQ1RPUl9GUk9NX1NJWkVfVAotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tTm9ybWFsaXplIGNvZGVjdnQ6Omxlbmd0aC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZiAhZGVmaW5lZChfX01TTF9DUFBfXykgJiYgIWRlZmluZWQoX19MSUJDT01PX18pICYmIFwKLSAgICAoIWRlZmluZWQoTkROQk9PU1RfUldTVERfVkVSKSB8fCBORE5CT09TVF9SV1NURF9WRVIgPCAweDA0MDEwMzAwKSAmJiBcCi0gICAgKCFkZWZpbmVkKF9fTUFDSF9fKSB8fCAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSkKLSAgICAvKiovCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIgY29uc3QKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQ09ERUNWVF9DVl9RVUFMSUZJRVIKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUNoZWNrIGZvciBjb2RlY3Z0OjptYXhfbGVuZ3RoLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA8IDB4NDYxKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX0NPREVDVlRfTUFYX0xFTkdUSAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1QdXQgbWJzdGF0ZV90IGFuZCBjb2RlY3Z0IGluIHN0ZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0jIGluY2x1ZGUgPGxvY2FsZT4KLSNlbmRpZgotCi0vLyBGcm9tIFJvYmVydCBSYW1leSdzIHZlcnNpb24gb2YgdXRmOF9jb2RlY3Z0X2ZhY2V0LgotbmFtZXNwYWNlIHN0ZCB7IAotCi0jaWYgZGVmaW5lZChfX0xJQkNPTU9fXykKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSNlbGlmIGRlZmluZWQoX19TR0lfU1RMX1BPUlQpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotICAgIHVzaW5nIDo6Y29kZWN2dDsKLSAgICB1c2luZyA6Om1ic3RhdGVfdDsKLSNlbmRpZgotCi19IC8vIEVuZCBuYW1lc3BhY2Ugc3RkLgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19DT0RFQ1ZUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjVmMDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+ICAvLyBORE5CT09TVF9XT1JLQVJPVU5ELgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpICAgIC8vIENvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQuCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEzMCkgICAgLy8gTG9naWNhbCBvcGVyYXRpb24gb24gYWRkcmVzcyBvZiBzdHJpbmcgY29uc3RhbnQuCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIyNCkgICAgLy8gUGFyYW1ldGVyIHByZXZpb3VzbHkgZGVmaW5lZCBhcyB0eXBlLgotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpICAgIC8vIENvbnZlcnNpb246IHBvc3NpYmxlIGxvc3Mgb2YgZGF0YS4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEyKSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcwNikgICAgLy8gQXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbi4KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KSAgIC8vIHNpemVvZiBhcHBsaWVkIHRvIGFuIGV4cHJlc3Npb24gd2l0aCBhbiBvcGVyYXRvci4KLSMgZW5kaWYKLSNlbHNlCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotIyAgcHJhZ21hIHdhcm4gLTgwMDggICAgIC8vIENvbmRpdGlvbiBhbHdheXMgdHJ1ZS9mYWxzZS4KLSMgIHByYWdtYSB3YXJuIC04MDY2ICAgICAvLyBVbnJlYWNoYWJsZSBjb2RlLgotIyAgcHJhZ21hIHdhcm4gLTgwNzEgICAgIC8vIENvbnZlcnNpb24gbWF5IGxvc2Ugc2lnbmlmaWNhbnQgZGlnaXRzLgotIyAgcHJhZ21hIHdhcm4gLTgwNzIgICAgIC8vIFN1c3BpY2lvdXMgcG9pbnRlciBhcml0aG1ldGljLgotIyAgcHJhZ21hIHdhcm4gLTgwODAgICAgIC8vIGlkZW50aWZpZXIgZGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQuCi0jIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZHluX2xpbmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZDkyMmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQWRhcHRlZCBmcm9tIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvc2VwYXJhdGVfY29tcGlsYXRpb24uaHRtbCwgYnkKLS8vIEpvaG4gTWFkZG9jay4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19EWU5fTElOS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRFlOX0xJTktfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1FbmFibGUgZHluYW1pYyBsaW5raW5nIG9uIHdpbmRvd3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8gCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfREVDTFNQRUMgCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19EWU5fTElOSykKLSMgIGlmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TT1VSQ0UKLSMgICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0jICBlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotIyAgZW5kaWYgIAotIyBlbmRpZiAgCi0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRFlOX0xJTktfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNDNjNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbHNlCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotIyAgcHJhZ21hIHdhcm4gLjgwMDggICAgIC8vIENvbmRpdGlvbiBhbHdheXMgdHJ1ZS9mYWxzZS4KLSMgIHByYWdtYSB3YXJuIC44MDY2ICAgICAvLyBVbnJlYWNoYWJsZSBjb2RlLgotIyAgcHJhZ21hIHdhcm4gLjgwNzEgICAgIC8vIENvbnZlcnNpb24gbWF5IGxvc2Ugc2lnbmlmaWNhbnQgZGlnaXRzLgotIyAgcHJhZ21hIHdhcm4gLjgwNzIgICAgIC8vIFN1c3BpY2lvdXMgcG9pbnRlciBhcml0aG1ldGljLgotIyAgcHJhZ21hIHdhcm4gLjgwODAgICAgIC8vIGlkZW50aWZpZXIgZGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQuCi0jIGVuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZnBvcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Zwb3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmI5NjU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZnBvcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwCi0gKiBEYXRlOiAgICAgICAgVGh1IERlYyAwNiAxMzoyMTo1NCBNU1QgMjAwNwotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogRGVmaW5lcyB0aGUgcHJlcHJvY2Vzc29yIHN5bWJvbCBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUyBmb3IKLSAqIHBsYXRmb3JtcyB0aGF0IHVzZSB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RkOjpmcG9zIGZyb20gdGhlIERpbmt1bXdhcmUgCi0gKiBTdGFuZGFyZCBMaWJyYXJ5LgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRlBPU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfRlBPU19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSMgaWYgKGRlZmluZWQoX1lWQUxTKSB8fCBkZWZpbmVkKF9DUFBMSUJfVkVSKSkgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmIFwKLSAgICAgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TCi0jIGVuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0ZQT1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2djYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2djYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ODUzNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9nY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEFkYXB0ZWQgZnJvbSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+IGFuZCBmcm9tCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9tb3JlL3NlcGFyYXRlX2NvbXBpbGF0aW9uLmh0bWwsIGJ5IEpvaG4gTWFkZG9jay4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19HQ0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX0lOVEVMLgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfSU5URUwpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR0NDIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0dDQ19XT1JLQVJPVU5EX0dVQVJEIDEKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR0NDX1dPUktBUk9VTkRfR1VBUkQgMAotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M4M2FlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2xpbWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19MSU1JVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0xJTUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSAzCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0VYRUNVVEVfQVJJVFkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRVhFQ1VURV9BUklUWSA1Ci0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfTElNSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMzVjNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPiBhbmQgZnJvbQotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieSBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9nY2MuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OKQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgfHwgXAotICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgfHwgXAotICAgICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIHx8IFwKLSAgICAgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JT1NUUkVBTVNfR0NDLCA8PSAyOTUpIFwKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotIyBlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9ydGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9ydGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzliODE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvcnRsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBEZWZpbmVzIHByZXByb2Nlc3NvciBzeW1ib2xzIGV4cGFuZGluZyB0byB0aGUgbmFtZXMgb2YgZnVuY3Rpb25zIGluIHRoZSAKLSAqIEMgcnVudGltZSBsaWJyYXJ5IHVzZWQgdG8gYWNjZXNzIGZpbGUgZGVzY3JpcHRvcnMgYW5kIHRvIHRoZSB0eXBlIHVzZWQKLSAqIHRvIHN0b3JlIGZpbGUgb2Zmc2V0cyBmb3Igc2Vla2luZy4KLSAqIAotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3J0bC5ocHAKLSAqIERhdGU6ICAgICAgICBXZWQgRGVjIDI2IDExOjU4OjExIE1TVCAyMDA3Ci0gKiAKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfUlRMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19SVExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotCi0vLyBIYW5kbGUgb3BlbiwgY2xvc2UsIHJlYWQsIGFuZCB3cml0ZQotI2lmZGVmIF9fQk9STEFORENfXwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JUTCh4KSBORE5CT09TVF9KT0lOKF9ydGxfLCB4KQotI2VsaWYgZGVmaW5lZCBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JUTCh4KSBORE5CT09TVF9KT0lOKF8sIHgpCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1JUTCh4KSA6OnggIC8vIERpc3Rpbmd1aXNoIGZyb20gbWVtYmVyIGZ1bmN0aW9uIG5hbWVkIHgKLSNlbmRpZgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfT1BFTiAgIE5ETkJPT1NUX0lPU1RSRUFNU19SVEwob3BlbikKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX0NMT1NFICBORE5CT09TVF9JT1NUUkVBTVNfUlRMKGNsb3NlKQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfUkVBRCAgIE5ETkJPT1NUX0lPU1RSRUFNU19SVEwocmVhZCkKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1dSSVRFICBORE5CT09TVF9JT1NUUkVBTVNfUlRMKHdyaXRlKQotCi0vLyBIYW5kbGUgbHNlZWssIG9mZl90LCBmdHJ1bmNhdGUsIGFuZCBzdGF0Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSMgaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBkZWZpbmVkKF9fTVNWQ1JUX18pIC8vIE1TVkMsIE1pbkdXCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NFRUsgICAgX2xzZWVraTY0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX09GRlNFVCAgX19pbnQ2NAotIyBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm9ybGFuZCwgTWV0cm93ZXJrcywgLi4uCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NFRUsgICAgbHNlZWsgIAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9PRkZTRVQgIGxvbmcKLSMgZW5kaWYKLSNlbHNlIC8vIE5vbi13aW5kb3dzCi0jIGlmIGRlZmluZWQoX0xBUkdFRklMRTY0X1NPVVJDRSkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiBcCi0gICAgICAgICAoIWRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpIHx8IF9GSUxFX09GRlNFVF9CSVRTICE9IDY0KSB8fCBcCi0gICAgIGRlZmluZWQoX0FJWCkgJiYgIWRlZmluZWQoX0xBUkdFX0ZJTEVTKSB8fCBcCi0gICAgIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0hBU19MQVJHRV9GSUxFX0VYVEVOU0lPTlMpCi0gICAgIC8qKi8KLQotICAgIC8qIFN5c3RlbXMgd2l0aCB0cmFuc2l0aW9uYWwgZXh0ZW5zaW9ucyBmb3IgbGFyZ2UgZmlsZSBzdXBwb3J0ICovCi0KLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU0VFSyAgICAgIGxzZWVrNjQKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfVFJVTkNBVEUgIGZ0cnVuY2F0ZTY0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX01NQVAgICAgICBtbWFwNjQKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRkRfU1RBVCAgICAgIHN0YXQ2NAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9GU1RBVCAgICAgZnN0YXQ2NAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9PRkZTRVQgICAgb2ZmNjRfdAotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NFRUsgICAgICBsc2VlawotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9UUlVOQ0FURSAgZnRydW5jYXRlCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX01NQVAgICAgICBtbWFwCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX1NUQVQgICAgICBzdGF0Ci0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZEX0ZTVEFUICAgICBmc3RhdAotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GRF9PRkZTRVQgICAgb2ZmX3QKLSMgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19SVExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3VucmVhY2hhYmxlX3JldHVybi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3VucmVhY2hhYmxlX3JldHVybi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZTg1NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy91bnJlYWNoYWJsZV9yZXR1cm4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDEwIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9VTlJFQUNIQUJMRV9SRVRVUk5fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVU5SRUFDSEFCTEVfUkVUVVJOX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gSWYgQm9vc3QuRXhjZXB0aW9uIGhhcyBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fR05VQ19fKQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVU5SRUFDSEFCTEVfUkVUVVJOKHgpIFwKLSAgICBORE5CT09TVF9VTlJFQUNIQUJMRV9SRVRVUk4oeCkKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19VTlJFQUNIQUJMRV9SRVRVUk4oeCkgXAotICAgIHJldHVybiB4OwotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmVhZDNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieQotLy8gSm9obiBNYWRkb2NrLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1dJREVfU1RSRUFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfV0lERV9TVFJFQU1TX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgIAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVRlbXBsYXRlZCBzdHJlYW0gc3VwcG9ydC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyBGcm9tIG5kbmJvb3N0L2R5bmFtaWNfYml0c2V0LmhwcDsgdGhhbmtzIHRvIE1hdHRoaWFzIFRyb3llciBmb3IgY3JheSBwYXRjaC4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkgJiYgXAotICAgICFkZWZpbmVkIChfX1NUTF9VU0VfTkVXX0lPU1RSRUFNUykgJiYgIWRlZmluZWQoX19jcmF5eDEpIFwKLSAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgZW5kaWYKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tV2lkZSBzdHJlYW0gc3VwcG9ydC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTKSB8fCBcCi0gICAgIGRlZmluZWQgKE5ETkJPT1NUX05PX1NURF9XU1RSRUFNQlVGKSAmJiBcCi0gICAgICggIWRlZmluZWQoX19NU0xfQ1BQX18pIHx8IGRlZmluZWQoX01TTF9OT19XQ0hBUlRfQ1BQX1NVUFBPUlQpICkgXAotICAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotIyBlbmRpZgotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAgIAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUxvY2FsZSBzdXBwb3J0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSB8fCBcCi0gICAgIGRlZmluZWQoX19DWUdXSU5fXykgJiYgXAotICAgICAoICFkZWZpbmVkKF9fTVNMX0NQUF9fKSB8fCBkZWZpbmVkKF9NU0xfTk9fV0NIQVJUX0NQUF9TVVBQT1JUKSApIFwKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLSMgZW5kaWYKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19MT0NBTEUKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfV0lERV9TVFJFQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aW5kb3dzX3Bvc2l4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZDljNDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aW5kb3dzX3Bvc2l4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIChDKSBDb3B5cmlnaHQgMjAwMiwgMjAwMyBCZW1hbiBEYXdlcyAgIEJvb3N0LkZpbGVzeXN0ZW0KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1dJTkRPV1NfUE9TSVhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09ORklHX1dJTkRPV1NfUE9TSVhfSFBQX0lOQ0xVREVECi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRnJvbSBuZG5ib29zdC9saWJzL2ZpbGVzeXN0ZW0vc3JjL3BhdGhfcG9zaXhfd2luZG93cy5jcHAtLS0tLS8vCi0KLS8vIE5ETkJPT1NUX0lPU1RSRUFNU19QT1NJWCBvciBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUyBzcGVjaWZ5IHdoaWNoIEFQSSB0byB1c2UuCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX0lPU1RSRUFNU19QT1NJWCApCi0jIGlmIChkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoV0lOMzIpKSAmJiBcCi0gICAgICFkZWZpbmVkKF9fQ1lHV0lOX18pIFwKLSAgICAgLyoqLwotIyAgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUE9TSVgKLSMgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19XSU5ET1dTX1BPU0lYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy96bGliLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvemxpYi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZGY1MGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy96bGliLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBBZGFwdGVkIGZyb20gPG5kbmJvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwPiBhbmQgZnJvbQotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sLCBieSBKb2huIE1hZGRvY2suCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfWkxJQl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT05GSUdfWkxJQl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9TVFJJTkdJWkUuCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1pMSUJfQklOQVJZKQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IFwKLSAgICAgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IFwKLSAgICAgKGRlZmluZWQoX19NV0VSS1NfXykgJiYgZGVmaW5lZChfV0lOMzIpICYmIChfX01XRVJLU19fID49IDB4MzAwMCkpIHx8IFwKLSAgICAgKGRlZmluZWQoX19JQ0wpICYmIGRlZmluZWQoX01TQ19FWFRFTlNJT05TKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkpIFwKLSAgICAgLyoqLwotCi0vLyBTcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSAubGliIGZpbGUuCi0jICBwcmFnbWEgY29tbWVudChsaWIsIE5ETkJPT1NUX1NUUklOR0laRShORE5CT09TVF9aTElCX0JJTkFSWSkpCi0jIGVuZGlmCi0jZWxzZSAKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1NPVVJDRSkgJiYgXAotICAgICAhZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKSAmJiBcCi0gICAgICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19OT19MSUIpIFwKLSAgICAgLyoqLwotCi0vLyBTZXQgdGhlIG5hbWUgb2Ygb3VyIGxpYnJhcnksIHRoaXMgd2lsbCBnZXQgdW5kZWYnZWQgYnkgYXV0b19saW5rLmhwcAotLy8gb25jZSBpdCdzIGRvbmUgd2l0aCBpdC4KLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF96bGliCi0KLS8vIElmIHdlJ3JlIGltcG9ydGluZyBjb2RlIGZyb20gYSBkbGwsIHRoZW4gdGVsbCBhdXRvX2xpbmsuaHBwIGFib3V0IGl0LgotIyAgaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX0RZTl9MSU5LKQotIyAgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotIyAgZW5kaWYKLQotLy8gQW5kIGluY2x1ZGUgdGhlIGhlYWRlciB0aGF0IGRvZXMgdGhlIHdvcmsuCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSMgZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPTkZJR19aTElCX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvdW50ZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvdW50ZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzA1ODk4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb3VudGVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfQ09VTlRFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DT1VOVEVEX0FSUkFZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4uCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgICAgLy8gc3RyZWFtc2l6ZS4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWNsYXNzIGNvdW50ZWRfYXJyYXlfc291cmNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHNvdXJjZV90YWcgIGNhdGVnb3J5OwotICAgIGNvdW50ZWRfYXJyYXlfc291cmNlKGNvbnN0IENoKiBidWYsIHN0ZDo6c3RyZWFtc2l6ZSBzaXplKSAKLSAgICAgICAgOiBidWZfKGJ1ZiksIHB0cl8oMCksIGVuZF8oc2l6ZSkKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoQ2gqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IChzdGQ6Om1pbikobiwgZW5kXyAtIHB0cl8pOwotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKTo6Y29weQotICAgICAgICAgICAgKHMsIGJ1Zl8gKyBwdHJfLCByZXN1bHQpOwotICAgICAgICBwdHJfICs9IHJlc3VsdDsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIGNvdW50KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQotcHJpdmF0ZToKLSAgICBjb25zdCBDaCogICAgICAgIGJ1Zl87Ci0gICAgc3RkOjpzdHJlYW1zaXplICBwdHJfLCBlbmRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgY291bnRlZF9hcnJheV9zaW5rIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzaW5rX3RhZyAgY2F0ZWdvcnk7Ci0gICAgY291bnRlZF9hcnJheV9zaW5rKENoKiBidWYsIHN0ZDo6c3RyZWFtc2l6ZSBzaXplKSAKLSAgICAgICAgOiBidWZfKGJ1ZiksIHB0cl8oMCksIGVuZF8oc2l6ZSkKLSAgICAgICAgeyB9Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBDaCogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gKHN0ZDo6bWluKShuLCBlbmRfIC0gcHRyXyk7Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpOjpjb3B5Ci0gICAgICAgICAgICAoYnVmXyArIHB0cl8sIHMsIHJlc3VsdCk7Ci0gICAgICAgIHB0cl8gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgY291bnQoKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci1wcml2YXRlOgotICAgIENoKiAgICAgICAgICAgICAgYnVmXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgIHB0cl8sIGVuZF87Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NPVU5URURfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY3VycmVudF9kaXJlY3RvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2N1cnJlbnRfZGlyZWN0b3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRhNjk1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY3VycmVudF9kaXJlY3RvcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcAotICogRGF0ZTogICAgICAgIFRodSBEZWMgMDYgMTM6MjE6NTQgTVNUIDIwMDcKLSAqIENvcHlyaWdodDogICAyMDA3LTIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIGZ1bmN0aW9uIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y3VycmVudF9kaXJlY3RvcnksIHVzZWQgYnkgCi0gKiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmFic29sdXRlX3BhdGguCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NVUlJFTlRfRElSRUNUT1JZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0NVUlJFTlRfRElSRUNUT1JZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIG1ha2Ugc3VyZSBzaXplX3QgaXMgaW4gc3RkLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAvLyBzaXplX3QKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3lzdGVtX2ZhaWx1cmUuaHBwPgotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0jIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOICAvLyBFeGNsdWRlIHJhcmVseS11c2VkIHN0dWZmIGZyb20gV2luZG93cyBoZWFkZXJzCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAgLy8gc3lzY29uZi4KLSNlbmRpZgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Ci1pbmxpbmUgc3RkOjpzdHJpbmcgY3VycmVudF9kaXJlY3RvcnkoKQotewotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgRFdPUkQgICAgICAgICAgICAgICBsZW5ndGg7Ci0gICAgYmFzaWNfYnVmZmVyPGNoYXI+ICBidWYoTUFYX1BBVEgpOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGxlbmd0aCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeUEoYnVmLnNpemUoKSwgYnVmLmRhdGEoKSk7Ci0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgdGhyb3dfc3lzdGVtX2ZhaWx1cmUoImZhaWxlZCBkZXRlcm1pbmluZyBjdXJyZW50IGRpcmVjdG9yeSIpOwotICAgICAgICBpZiAobGVuZ3RoIDwgc3RhdGljX2Nhc3Q8RFdPUkQ+KGJ1Zi5zaXplKCkpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGJ1Zi5yZXNpemUoYnVmLnNpemUoKSAqIDIpOwotICAgIH0KLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmLmRhdGEoKSwgbGVuZ3RoKTsKLSNlbHNlIC8vICNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGJhc2ljX2J1ZmZlcjxjaGFyPiBidWYocGF0aGNvbmYoIi4iLCBfUENfUEFUSF9NQVgpKTsKLSAgICBpZiAoIWdldGN3ZChidWYuZGF0YSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1Zi5zaXplKCkpKSkKLSAgICAgICAgdGhyb3dfc3lzdGVtX2ZhaWx1cmUoImZhaWxlZCBkZXRlcm1pbmluZyBjdXJyZW50IGRpcmVjdG9yeSIpOwotICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWYuZGF0YSgpKTsKLSNlbmRpZiAvLyAjaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLX0KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DVVJSRU5UX0RJUkVDVE9SWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kZWZhdWx0X2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGVmYXVsdF9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODVhYWU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kZWZhdWx0X2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFRkFVTFRfQVJHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RFRkFVTFRfQVJHX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGQVVMVF9BUkcoYXJnKSBtcGw6OmlkZW50aXR5PCBhcmcgPjo6dHlwZQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZBVUxUX0FSRyhhcmcpIGFyZwotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfREVGQVVMVF9BUkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3ZTkyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVNQQVRDSF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVNQQVRDSF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUuIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4gICAgICAgICAvLyBjYXRlZ29yeV9vZi4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPiAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+ICAgICAgICAgCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMge25hbWVzcGFjZSBkZXRhaWwgewotICAgIAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIsCi0gICAgICAgICAgdHlwZW5hbWUgVGFnMyA9IG1wbDo6dm9pZF8sIHR5cGVuYW1lIFRhZzQgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIFRhZzUgPSBtcGw6OnZvaWRfLCB0eXBlbmFtZSBUYWc2ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXRlZ29yeSA9IAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNhdGVnb3J5X29mPFQ+Ojp0eXBlID4KLXN0cnVjdCBkaXNwYXRjaCAKLSAgICA6IGlvc3RyZWFtczo6c2VsZWN0PCAgLy8gRGlzYW1iaWd1YXRpb24gZm9yIFRydTY0LgotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdGVnb3J5LCBUYWcxPiwgVGFnMSwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXRlZ29yeSwgVGFnMj4sIFRhZzIsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0ZWdvcnksIFRhZzM+LCBUYWczLAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdGVnb3J5LCBUYWc0PiwgVGFnNCwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXRlZ29yeSwgVGFnNT4sIFRhZzUsCi0gICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0ZWdvcnksIFRhZzY+LCBUYWc2Ci0gICAgICA+Ci0gICAgeyB9OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRElTUEFUQ0hfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZG91YmxlX29iamVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZG91YmxlX29iamVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMjNmN2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RvdWJsZV9vYmplY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3MgdGVtcGxhdGUgCi0vLyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmRvdWJsZV9vYmplY3QsIHdoaWNoIGlzIHNpbWlsYXIgdG8gY29tcHJlc3NlZCBwYWlyCi0vLyBleGNlcHQgdGhhdCBib3RoIG1lbWJlcnMgb2YgdGhlIHBhaXIgaGF2ZSB0aGUgc2FtZSB0eXBlLCBhbmQgCi0vLyBjb21wcmVzc2lvbiBvY2N1cnMgb25seSBpZiByZXF1ZXN0ZWQgdXNpbmcgYSBib29sZWFuIHRlbXBsYXRlCi0vLyBwYXJhbWV0ZXIuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ET1VCTEVfT0JKRUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RPVUJMRV9PQkpFQ1RfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAvLyBzd2FwLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPiAweDMwMDMpCi0jIGluY2x1ZGUgPG1zbF91dGlsaXR5PgotI2Vsc2UKLSMgaW5jbHVkZSA8bmRuYm9vc3QvY2FsbF90cmFpdHMuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHNpbmdsZV9vYmplY3RfaG9sZGVyIHsKLXB1YmxpYzoKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sID4gMHgzMDAzKQotICAgIHR5cGVkZWYgTWV0cm93ZXJrczo6Y2FsbF90cmFpdHM8VD4gICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpwYXJhbV90eXBlICAgICAgIHBhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cmVmZXJlbmNlICAgICAgICByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6Y29uc3RfcmVmZXJlbmNlICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgc2luZ2xlX29iamVjdF9ob2xkZXIoKSB7IH0KLSAgICBzaW5nbGVfb2JqZWN0X2hvbGRlcihwYXJhbV90eXBlIHQpIDogZmlyc3RfKHQpIHsgfQotICAgIHJlZmVyZW5jZSBmaXJzdCgpIHsgcmV0dXJuIGZpcnN0XzsgfQotICAgIGNvbnN0X3JlZmVyZW5jZSBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0XzsgfQotICAgIHJlZmVyZW5jZSBzZWNvbmQoKSB7IHJldHVybiBmaXJzdF87IH0KLSAgICBjb25zdF9yZWZlcmVuY2Ugc2Vjb25kKCkgY29uc3QgeyByZXR1cm4gZmlyc3RfOyB9Ci0gICAgdm9pZCBzd2FwKHNpbmdsZV9vYmplY3RfaG9sZGVyJiBvKQotICAgIHsgc3RkOjpzd2FwKGZpcnN0Xywgby5maXJzdF8pOyB9Ci1wcml2YXRlOgotICAgIFQgZmlyc3RfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBkb3VibGVfb2JqZWN0X2hvbGRlciB7Ci1wdWJsaWM6Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA+IDB4MzAwMykKLSAgICB0eXBlZGVmIE1ldHJvd2Vya3M6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjpjYWxsX3RyYWl0czxUPiAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cGFyYW1fdHlwZSAgICAgICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnJlZmVyZW5jZSAgICAgICAgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmNvbnN0X3JlZmVyZW5jZSAgY29uc3RfcmVmZXJlbmNlOwotICAgIGRvdWJsZV9vYmplY3RfaG9sZGVyKCkgeyB9Ci0gICAgZG91YmxlX29iamVjdF9ob2xkZXIocGFyYW1fdHlwZSB0MSwgcGFyYW1fdHlwZSB0MikKLSAgICAgICAgOiBmaXJzdF8odDEpLCBzZWNvbmRfKHQyKSB7IH0KLSAgICByZWZlcmVuY2UgZmlyc3QoKSB7IHJldHVybiBmaXJzdF87IH0KLSAgICBjb25zdF9yZWZlcmVuY2UgZmlyc3QoKSBjb25zdCB7IHJldHVybiBmaXJzdF87IH0KLSAgICByZWZlcmVuY2Ugc2Vjb25kKCkgeyByZXR1cm4gc2Vjb25kXzsgfQotICAgIGNvbnN0X3JlZmVyZW5jZSBzZWNvbmQoKSBjb25zdCB7IHJldHVybiBzZWNvbmRfOyB9Ci0gICAgdm9pZCBzd2FwKGRvdWJsZV9vYmplY3RfaG9sZGVyJiBkKQotICAgIHsgCi0gICAgICAgIHN0ZDo6c3dhcChmaXJzdF8sIGQuZmlyc3RfKTsgCi0gICAgICAgIHN0ZDo6c3dhcChzZWNvbmRfLCBkLnNlY29uZF8pOyAKLSAgICB9Ci1wcml2YXRlOgotICAgIFQgZmlyc3RfLCBzZWNvbmRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSXNEb3VibGU+Ci1jbGFzcyBkb3VibGVfb2JqZWN0IAotICAgIDogcHVibGljIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICBJc0RvdWJsZSwgCi0gICAgICAgICAgICAgICAgIGRvdWJsZV9vYmplY3RfaG9sZGVyPFQ+LCAKLSAgICAgICAgICAgICAgICAgc2luZ2xlX29iamVjdF9ob2xkZXI8VD4KLSAgICAgICAgICAgICA+Ojp0eXBlCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBJc0RvdWJsZSwgCi0gICAgICAgICAgICAgICAgZG91YmxlX29iamVjdF9ob2xkZXI8VD4sIAotICAgICAgICAgICAgICAgIHNpbmdsZV9vYmplY3RfaG9sZGVyPFQ+Ci0gICAgICAgICAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA+IDB4MzAwMykKLSAgICB0eXBlZGVmIE1ldHJvd2Vya3M6OmNhbGxfdHJhaXRzPFQ+ICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjpjYWxsX3RyYWl0czxUPiAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cGFyYW1fdHlwZSAgICAgICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OnJlZmVyZW5jZSAgICAgICAgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmNvbnN0X3JlZmVyZW5jZSAgY29uc3RfcmVmZXJlbmNlOwotICAgIGRvdWJsZV9vYmplY3QoKSA6IGJhc2VfdHlwZSgpIHt9Ci0gICAgZG91YmxlX29iamVjdChwYXJhbV90eXBlIHQxLCBwYXJhbV90eXBlIHQyKQotICAgICAgICA6IGJhc2VfdHlwZSh0MSwgdDIpIHsgfQotICAgIGJvb2wgaXNfZG91YmxlKCkgY29uc3QgeyByZXR1cm4gSXNEb3VibGU6OnZhbHVlOyB9Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRE9VQkxFX09CSkVDVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lbmFibGVfaWZfc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk2ZGZlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VOQUJMRV9JRl9TVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRU5BQkxFX0lGX1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX05PX1NGSU5BRS4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+ICAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwPiAgLy8gaXNfc3RkX2lvLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTIpKQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0VOQUJMRV9JRl9TVFJFQU0oVCkgXAotICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjwgbmRuYm9vc3Q6Omlvc3RyZWFtczo6aXNfc3RkX2lvPFQ+ID46OnR5cGUqID0gMCBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpIFwKLSAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmPCBuZG5ib29zdDo6aW9zdHJlYW1zOjppc19zdGRfaW88VD4gPjo6dHlwZSogPSAwIFwKLSAgICAvKiovCi0jZWxzZSAKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFQpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VOQUJMRV9JRl9TVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ4OTE5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FUlJPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9FUlJPUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZS4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgY2FudF9yZWFkKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgibm8gcmVhZCBhY2Nlc3MiKTsgfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgY2FudF93cml0ZSgpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoIm5vIHdyaXRlIGFjY2VzcyIpOyB9Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSBjYW50X3NlZWsoKSAKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJubyByYW5kb20gYWNjZXNzIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIGJhZF9yZWFkKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIHJlYWQiKTsgfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgYmFkX3B1dGJhY2soKSAKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJwdXRiYWNrIGJ1ZmZlciBmdWxsIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIGJhZF93cml0ZSgpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCB3cml0ZSIpOyB9Ci0KLWlubGluZSBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSB3cml0ZV9hcmVhX2V4aGF1c3RlZCgpIAoteyByZXR1cm4gTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoIndyaXRlIGFyZWEgZXhoYXVzdGVkIik7IH0KLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIGJhZF9zZWVrKCkgCi17IHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIHNlZWsiKTsgfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRVJST1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMjQwYzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHAKLSAqIERhdGU6ICAgICAgICBUaHUgRGVjIDA2IDEzOjIxOjU0IE1TVCAyMDA3Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLQotICogRGVmaW5lcyB0aGUgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0ZW1wbGF0ZSAKLSAqIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9hbGwoKSBhbmQgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlIAotICogbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpleGVjdXRlX2ZvcmVhY2goKS4KLSAqCi0gKiBleGVjdXRlX2FsbCgpIGludm9rZXMgYSBwcmltYXJ5IG9wZXJhdGlvbiBhbmQgcGVyZm9ybXMgYSBzZXF1ZW5jZSBvZiBjbGVhbnVwIAotICogb3BlcmF0aW9ucywgcmV0dXJuaW5nIHRoZSByZXN1bHQgb2YgdGhlIHByaW1hcnkgb3BlcmF0aW9uIGlmIG5vIGV4Y2VwdGlvbnMKLSAqIGFyZSB0aHJvd24uIElmIG9uZSBvZiB0aGUgb3BlcmF0aW9ucyB0aHJvd3MgYW4gZXhjZXB0aW9uLCBwZXJmb3JtcyB0aGUKLSAqIHJlbWFpbmluZyBvcGVyYXRpb25zIGFuZCByZXRocm93cyB0aGUgaW5pdGlhbCBleGNlcHRpb24uCi0gKgotICogZXhlY3V0ZV9mb3JlYWNoKCkgaXMgYSB2YXJpYW50IG9mIHN0ZDo6Zm9yZWFjaCB3aGljaCBpbnZva2VzIGEgZnVuY3Rpb24gCi0gKiBvYmplY3QgZm9yIGVhY2ggaXRlbSBpbiBhIHNlcXVlbmNlLCBjYXRjaGluZyBhbGwgZXhlY3B0aW9ucyBhbmQgcmV0aHJvd2luZwotICogdGhlIGZpcnN0IGNhdWdodCBleGNlcHRpb24gYWZ0ZXIgdGhlIGZ1bmN0aW9uIG9iamVjdCBoYXMgYmVlbiBpbnZva2VkIG9uIGVhY2gKLSAqIGl0ZW0uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0VYRUNVVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRVhFQ1VURV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9saW1pdHMuaHBwPiAgIC8vIE1BWF9FWEVDVVRFX0FSSVRZCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvcmVzdWx0X29mLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBIZWxwZXIgZm9yIGNsYXNzIHRlbXBsYXRlIGV4ZWN1dGVfdHJhaXRzLgotdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0Pgotc3RydWN0IGV4ZWN1dGVfdHJhaXRzX2ltcGwgewotICAgIHR5cGVkZWYgUmVzdWx0IHJlc3VsdF90eXBlOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgIHN0YXRpYyBSZXN1bHQgZXhlY3V0ZShPcCBvcCkgeyByZXR1cm4gb3AoKTsgfQotfTsKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9yIHZvaWQgcmV0dXJuLiBGb3Igc2ltcGxpY2l0eSwgZXhlY3V0ZSgpIHJldHVybnMgaW50IAotLy8gZm9yIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHZvaWQuIFRoaXMgY291bGQgYmUgYXZvaWRlZCB3aXRoIGFkZGl0aW9uYWwgd29yay4KLXRlbXBsYXRlPD4KLXN0cnVjdCBleGVjdXRlX3RyYWl0c19pbXBsPHZvaWQ+IHsKLSAgICB0eXBlZGVmIGludCByZXN1bHRfdHlwZTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICBzdGF0aWMgaW50IGV4ZWN1dGUoT3Agb3ApIHsgb3AoKTsgcmV0dXJuIDA7IH0KLX07Ci0KLS8vIERlZHVjZXMgdGhlIHJlc3VsdCB0eXBlIG9mIE9wIGFuZCBhbGxvd3MgdW5pZm9ybSB0cmVhdG1lbnQgb2Ygb3BlcmF0aW9ucyAKLS8vIHJldHVybmluZyB2b2lkIGFuZCBub24tdm9pZC4KLXRlbXBsYXRlPCB0eXBlbmFtZSBPcCwgCi0gICAgICAgICAgdHlwZW5hbWUgUmVzdWx0ID0gLy8gVkM2LjUgd29ya2Fyb3VuZC4KLSAgICAgICAgICAgICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1JFU1VMVF9PRikgJiYgXAotICAgICAgICAgICAgICAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1OTIpKQotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlc3VsdF9vZjxPcCgpPjo6dHlwZQotICAgICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBPcDo6cmVzdWx0X3R5cGUKLSAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgPgotc3RydWN0IGV4ZWN1dGVfdHJhaXRzIAotICAgIDogZXhlY3V0ZV90cmFpdHNfaW1wbDxSZXN1bHQ+Ci0gICAgeyB9OwotCi0vLyBJbXBsZW1lbnRhdGlvbiB3aXRoIG5vIGNsZWFudXAgb3BlcmF0aW9ucy4KLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotdHlwZW5hbWUgZXhlY3V0ZV90cmFpdHM8T3A+OjpyZXN1bHRfdHlwZSAKLWV4ZWN1dGVfYWxsKE9wIG9wKSAKLXsgCi0gICAgcmV0dXJuIGV4ZWN1dGVfdHJhaXRzPE9wPjo6ZXhlY3V0ZShvcCk7Ci19Ci0KLS8vIEltcGxlbWVudGF0aW9uIHdpdGggb25lIG9yIG1vcmUgY2xlYW51cCBvcGVyYXRpb25zCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pIFwKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wLCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB0eXBlbmFtZSBDKT4gXAotICAgdHlwZW5hbWUgZXhlY3V0ZV90cmFpdHM8T3A+OjpyZXN1bHRfdHlwZSBcCi0gICBleGVjdXRlX2FsbChPcCBvcCwgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKG4sIEMsIGMpKSBcCi0gICB7IFwKLSAgICAgICB0eXBlbmFtZSBleGVjdXRlX3RyYWl0czxPcD46OnJlc3VsdF90eXBlIHI7IFwKLSAgICAgICB0cnkgeyBcCi0gICAgICAgICAgIHIgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfYWxsKCBcCi0gICAgICAgICAgICAgICAgICAgb3AgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfREVDKG4pLCBjKSBcCi0gICAgICAgICAgICAgICApOyBcCi0gICAgICAgfSBjYXRjaCAoLi4uKSB7IFwKLSAgICAgICAgICAgdHJ5IHsgXAotICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGMsIE5ETkJPT1NUX1BQX0RFQyhuKSkoKTsgXAotICAgICAgICAgICB9IGNhdGNoICguLi4pIHsgfSBcCi0gICAgICAgICAgIHRocm93OyBcCi0gICAgICAgfSBcCi0gICAgICAgTkROQk9PU1RfUFBfQ0FUKGMsIE5ETkJPT1NUX1BQX0RFQyhuKSkoKTsgXAotICAgICAgIHJldHVybiByOyBcCi0gICB9IFwKLSAgIC8qKi8KLQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDEsIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRVhFQ1VURV9BUklUWSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0xPQ0FMX0lURVJBVEUoKQotI3VuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPCi0KLXRlbXBsYXRlPGNsYXNzIEluSXQsIGNsYXNzIE9wPgotT3AgZXhlY3V0ZV9mb3JlYWNoKEluSXQgZmlyc3QsIEluSXQgbGFzdCwgT3Agb3ApCi17Ci0gICAgaWYgKGZpcnN0ID09IGxhc3QpCi0gICAgICAgIHJldHVybiBvcDsKLSAgICB0cnkgewotICAgICAgICBvcCgqZmlyc3QpOwotICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgKytmaXJzdDsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6ZXhlY3V0ZV9mb3JlYWNoKGZpcnN0LCBsYXN0LCBvcCk7Ci0gICAgICAgIH0gY2F0Y2ggKC4uLikgeyB9Ci0gICAgICAgIHRocm93OwotICAgIH0KLSAgICArK2ZpcnN0OwotICAgIHJldHVybiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmV4ZWN1dGVfZm9yZWFjaChmaXJzdCwgbGFzdCwgb3ApOwotfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRVhFQ1VURV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9maWxlX2hhbmRsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZmlsZV9oYW5kbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjM1ZDFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9maWxlX2hhbmRsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0gKgotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZmlsZV9oYW5kbGUuaHBwCi0gKiBEYXRlOiAgICAgICAgU3VuIEp1biAyMiAxNDoyMzoxMiBNRFQgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDggQ29kZVJhZ2UsIExMQwotICogQXV0aG9yOiAgICAgIEpvbmF0aGFuIFR1cmthbmlzCi0gKiBDb250YWN0OiAgICAgdHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbQotICoKLSAqIERlZmluZXMgdGhlIHR5cGUgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpmaWxlX2hhbmRsZSwgcmVwcmVzZW50aW5nIGFuCi0gKiBvcGVyYXRpbmcgc3lzdGVtIGZpbGUgaGFuZGxlLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GSUxFX0hBTkRMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GSUxFX0hBTkRMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHR5cGVkZWYgdm9pZCogIGZpbGVfaGFuZGxlOyAgLy8gQS5rLmEuIEhBTkRMRQotI2Vsc2UKLSAgICB0eXBlZGVmIGludCAgICBmaWxlX2hhbmRsZTsKLSNlbmRpZgotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRklMRV9IQU5ETEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NWI5MDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRk9SV0FSRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GT1JXQVJEX0hQUF9JTkNMVURFRCAgIAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgICAgICAKLSAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLCBORE5CT09TVF9OT19TRklOQUUKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0vLy0tLS0tLU1hY3JvcyBmb3IgZGVmaW5pbmcgZm9yd2FyZGluZyBjb25zdHJ1Y3RvcnMgYW5kIG9wZW4gb3ZlcmxvYWRzLS0tLS0tLS0vLwotICAgIAotLy8KLS8vIE1hY3JvOiBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRChjbGFzcywgaW1wbCwgZGV2aWNlLCBwYXJhbXMsIGFyZ3MpCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBjb25zdHJ1Y3RvcnMgYW5kIG92ZXJsb2FkcyBvZiAnb3Blbicgd2hpY2ggY29uc3RydWN0Ci0vLyAgICAgIGEgZGV2aWNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgYXJndW1lbnQgbGlzdCBhbmQgcGFzcyBpdCB0byB0aGUgc3BlY2lmaWVkCi0vLyAgICAgIGhlbHBlciBmdW5jdGlvbgotLy8gICBjbGFzcyAtIFRoZSBjbGFzcyBuYW1lCi0vLyAgIGltcGwgLSBUaGUgaGVscGVyIGZ1bmN0aW9uCi0vLyAgIGRldmljZSAtIFRoZSBkZXZpY2UgdHlwZQotLy8gICBwYXJhbXMgLSBUaGUgbGlzdCBvZiBmb3JtYWwgcGFyYW1ldGVycyB0cmFpbGluZyB0aGUgZGV2aWNlIHBhcmFtZXRlciBpbgotLy8gICAgIHRoZSBoZWxwZXIgZnVuY3Rpb24ncyBzaWduYXR1cmUKLS8vICAgcGFyYW1zIC0gVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgaGVscGVyIGZ1bmN0aW9uLCBmb2xsb3dpbmcgdGhlCi0vLyAgICAgZGV2aWNlIGFyZ3VtZW50Ci0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRChjbGFzcywgaW1wbCwgZGV2aWNlLCBwYXJhbXMsIGFyZ3MpIFwKLSAgICBjbGFzcyhjb25zdCBkZXZpY2UmIHQgcGFyYW1zKCkpIFwKLSAgICB7IHRoaXMtPmltcGwoOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OndyYXAodCkgYXJncygpKTsgfSBcCi0gICAgY2xhc3MoZGV2aWNlJiB0IHBhcmFtcygpKSBcCi0gICAgeyB0aGlzLT5pbXBsKDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjp3cmFwKHQpIGFyZ3MoKSk7IH0gXAotICAgIGNsYXNzKGNvbnN0IDo6bmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPGRldmljZT4mIHJlZiBwYXJhbXMoKSkgXAotICAgIHsgdGhpcy0+aW1wbChyZWYgYXJncygpKTsgfSBcCi0gICAgdm9pZCBvcGVuKGNvbnN0IGRldmljZSYgdCBwYXJhbXMoKSkgXAotICAgIHsgdGhpcy0+aW1wbCg6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6d3JhcCh0KSBhcmdzKCkpOyB9IFwKLSAgICB2b2lkIG9wZW4oZGV2aWNlJiB0IHBhcmFtcygpKSBcCi0gICAgeyB0aGlzLT5pbXBsKDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjp3cmFwKHQpIGFyZ3MoKSk7IH0gXAotICAgIHZvaWQgb3Blbihjb25zdCA6Om5kbmJvb3N0OjpyZWZlcmVuY2Vfd3JhcHBlcjxkZXZpY2U+JiByZWYgcGFyYW1zKCkpIFwKLSAgICB7IHRoaXMtPmltcGwocmVmIGFyZ3MoKSk7IH0gXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKCBcCi0gICAgICAgIDEsIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpLCBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0NUT1IsIChjbGFzcywgaW1wbCwgZGV2aWNlKSBcCi0gICAgKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oIFwKLSAgICAgICAgMSwgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSksIFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfRk4sIChjbGFzcywgaW1wbCwgZGV2aWNlKSBcCi0gICAgKSBcCi0gICAgLyoqLwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0NUT1JfSSh6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgdHlwZW5hbWUgVSkgPiBcCi0gICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCB0dXBsZSkgXAotICAgICggVTEwMCYgdTEwMCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMobikpIFwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgY29uc3QgVSwgJnUpIFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NBTUUoVTEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB0dXBsZSkpKSBcCi0gICAgeyB0aGlzLT5ORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIHR1cGxlKSBcCi0gICAgICAoIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpIFwKLSAgICAgICAgKCB1MTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgTkROQk9PU1RfUFBfREVDKG4pLCB1KSkgKTsgfSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfRk5fSSh6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgdHlwZW5hbWUgVSkgPiBcCi0gICAgdm9pZCBvcGVuIFwKLSAgICAoIFUxMDAmIHUxMDAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKG4pKSBcCi0gICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWih6LCBORE5CT09TVF9QUF9ERUMobiksIGNvbnN0IFUsICZ1KSBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TQU1FKFUxMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpKSkgXAotICAgIHsgdGhpcy0+TkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB0dXBsZSkgXAotICAgICAgKCB1MTAwIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0RFQyhuKSkgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIE5ETkJPT1NUX1BQX0RFQyhuKSwgdSkgKTsgfSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0NUT1JfSSh6LCBuLCB0dXBsZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GT1JXQVJESU5HX0ZOX0koeiwgbiwgdHVwbGUpCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfQ1RPUih6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgVSk+IFwKLSAgICBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHR1cGxlKSBcCi0gICAgKE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIG4sIGNvbnN0IFUsICZ1KSBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TQU1FKFUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHR1cGxlKSkpIFwKLSAgICB7IHRoaXMtPk5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgdHVwbGUpIFwKLSAgICAgICggTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB0dXBsZSkgXAotICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB1KSkgKTsgfSBcCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX0ZPUldBUkRJTkdfQ1RPUl9JKHosIG4sIHR1cGxlKSBcCi0gICAgLyoqLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19GTih6LCBuLCB0dXBsZSkgXAotICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgVSk+IFwKLSAgICB2b2lkIG9wZW4oTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgbiwgY29uc3QgVSwgJnUpIFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NBTUUoVTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgdHVwbGUpKSkgXAotICAgIHsgdGhpcy0+TkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB0dXBsZSkgXAotICAgICAgKCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHR1cGxlKSBcCi0gICAgICAgIChORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHUpKSApOyB9IFwKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRElOR19GTl9JKHosIG4sIHR1cGxlKSBcCi0gICAgLyoqLwotCi0vLyBEaXNhYmxlIGZvcndhcmRpbmcgY29uc3RydWN0b3JzIGlmIGZpcnN0IHBhcmFtZXRlciB0eXBlIGlzIHRoZSBzYW1lCi0vLyBhcyB0aGUgZGV2aWNlIHR5cGUKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MikpCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TQU1FKGRldmljZSwgcGFyYW0pIFwKLSAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmPCBuZG5ib29zdDo6aXNfc2FtZTxkZXZpY2UsIHBhcmFtPiA+Ojp0eXBlKiA9IDAgXAotICAgIC8qKi8KLSNlbHNlIAotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU0FNRShkZXZpY2UsIHBhcmFtKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRk9SV0FSRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2MjBhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnN0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZTVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlNUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaW5jbHVkZSA8ZnN0cmVhbT4KLSNlbHNlCi0jIGluY2x1ZGUgPGZzdHJlYW0uaD4KLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lGU1RSRUFNKENoLCBUcikgc3RkOjpiYXNpY19pZnN0cmVhbTxDaCwgVHI+Ci0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT0ZTVFJFQU0oQ2gsIFRyKSBzdGQ6OmJhc2ljX29mc3RyZWFtPENoLCBUcj4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GU1RSRUFNKENoLCBUcikgc3RkOjpiYXNpY19mc3RyZWFtPENoLCBUcj4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GSUxFQlVGKENoKSBzdGQ6OmJhc2ljX2ZpbGVidWY8Q2g+Ci0jZWxzZSAKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JRlNUUkVBTShDaCwgVHIpIHN0ZDo6aWZzdHJlYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19PRlNUUkVBTShDaCwgVHIpIHN0ZDo6b2ZzdHJlYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GSUxFQlVGKENoKSBzdGQ6OmZpbGVidWYKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0ZTVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyYTgyNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotICogRmlsZTogICAgICAgIG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHAKLSAqIERhdGU6ICAgICAgICBTdW4gRGVjIDA5IDA1OjM4OjAzIE1TVCAyMDA3Ci0gKiBDb3B5cmlnaHQ6ICAgMjAwNy0yMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLQotICogRGVmaW5lcyBzZXZlcmFsIGZ1bmN0aW9uIG9iamVjdHMgYW5kIG9iamVjdCBnZW5lcmF0b3JzIGZvciB1c2Ugd2l0aCAKLSAqIGV4ZWN1dGVfYWxsKCkKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlVOQ1RJT05BTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9GVU5DVElPTkFMX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jbG9zZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAvLyBORE5CT09TVF9JT1MKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0cyBhbmQgb2JqZWN0IGdlbmVyYXRvcnMgZm9yIGludm9raW5nCi0gICAgLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGRldmljZV9jbG9zZV9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBkZXZpY2VfY2xvc2Vfb3BlcmF0aW9uKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAotICAgICAgICA6IHRfKHQpLCB3aGljaF8od2hpY2gpIAotICAgICAgICB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdCB7IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNsb3NlKHRfLCB3aGljaF8pOyB9Ci1wcml2YXRlOgotICAgIGRldmljZV9jbG9zZV9vcGVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBkZXZpY2VfY2xvc2Vfb3BlcmF0aW9uJik7Ci0gICAgVCYgICAgICAgICAgICAgICAgICAgdF87Ci0gICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSAgd2hpY2hfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWNsYXNzIGZpbHRlcl9jbG9zZV9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBmaWx0ZXJfY2xvc2Vfb3BlcmF0aW9uKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgOiB0Xyh0KSwgc25rXyhzbmspLCB3aGljaF8od2hpY2gpCi0gICAgICAgIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UodF8sIHNua18sIHdoaWNoXyk7IH0KLXByaXZhdGU6Ci0gICAgZmlsdGVyX2Nsb3NlX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGZpbHRlcl9jbG9zZV9vcGVyYXRpb24mKTsKLSAgICBUJiAgICAgICAgICAgICAgICAgICB0XzsKLSAgICBTaW5rJiAgICAgICAgICAgICAgICBzbmtfOwotICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgIHdoaWNoXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1kZXZpY2VfY2xvc2Vfb3BlcmF0aW9uPFQ+IAotY2FsbF9jbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKSAKLXsgcmV0dXJuIGRldmljZV9jbG9zZV9vcGVyYXRpb248VD4odCwgd2hpY2gpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci1maWx0ZXJfY2xvc2Vfb3BlcmF0aW9uPFQsIFNpbms+IAotY2FsbF9jbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAoteyByZXR1cm4gZmlsdGVyX2Nsb3NlX29wZXJhdGlvbjxULCBTaW5rPih0LCBzbmssIHdoaWNoKTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0cyBhbmQgb2JqZWN0IGdlbmVyYXRvcnMgZm9yIGludm9raW5nCi0gICAgLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjbG9zZV9hbGwKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGRldmljZV9jbG9zZV9hbGxfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7Ci0gICAgZGV2aWNlX2Nsb3NlX2FsbF9vcGVyYXRpb24oVCYgdCkgOiB0Xyh0KSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdCB7IGRldGFpbDo6Y2xvc2VfYWxsKHRfKTsgfQotcHJpdmF0ZToKLSAgICBkZXZpY2VfY2xvc2VfYWxsX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGRldmljZV9jbG9zZV9hbGxfb3BlcmF0aW9uJik7Ci0gICAgVCYgdF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotY2xhc3MgZmlsdGVyX2Nsb3NlX2FsbF9vcGVyYXRpb24gewotcHVibGljOgotICAgIHR5cGVkZWYgdm9pZCByZXN1bHRfdHlwZTsKLSAgICBmaWx0ZXJfY2xvc2VfYWxsX29wZXJhdGlvbihUJiB0LCBTaW5rJiBzbmspIDogdF8odCksIHNua18oc25rKSB7IH0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdCB7IGRldGFpbDo6Y2xvc2VfYWxsKHRfLCBzbmtfKTsgfQotcHJpdmF0ZToKLSAgICBmaWx0ZXJfY2xvc2VfYWxsX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uJik7Ci0gICAgVCYgICAgIHRfOwotICAgIFNpbmsmICBzbmtfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWRldmljZV9jbG9zZV9hbGxfb3BlcmF0aW9uPFQ+IGNhbGxfY2xvc2VfYWxsKFQmIHQpIAoteyByZXR1cm4gZGV2aWNlX2Nsb3NlX2FsbF9vcGVyYXRpb248VD4odCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uPFQsIFNpbms+IAotY2FsbF9jbG9zZV9hbGwoVCYgdCwgU2luayYgc25rKSAKLXsgcmV0dXJuIGZpbHRlcl9jbG9zZV9hbGxfb3BlcmF0aW9uPFQsIFNpbms+KHQsIHNuayk7IH0KLQotICAgIC8vIEZ1bmN0aW9uIG9iamVjdCBhbmQgb2JqZWN0IGdlbmVyYXRvciBmb3IgaW52b2tpbmcgYQotICAgIC8vIG1lbWJlciBmdW5jdGlvbiB2b2lkIGNsb3NlKHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgbWVtYmVyX2Nsb3NlX29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIG1lbWJlcl9jbG9zZV9vcGVyYXRpb24oVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgCi0gICAgICAgIDogdF8odCksIHdoaWNoXyh3aGljaCkgCi0gICAgICAgIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgdF8uY2xvc2Uod2hpY2hfKTsgfQotcHJpdmF0ZToKLSAgICBtZW1iZXJfY2xvc2Vfb3BlcmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgbWVtYmVyX2Nsb3NlX29wZXJhdGlvbiYpOwotICAgIFQmICAgICAgICAgICAgICAgICAgIHRfOwotICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgIHdoaWNoXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1tZW1iZXJfY2xvc2Vfb3BlcmF0aW9uPFQ+IGNhbGxfbWVtYmVyX2Nsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAoteyByZXR1cm4gbWVtYmVyX2Nsb3NlX29wZXJhdGlvbjxUPih0LCB3aGljaCk7IH0KLQotICAgIC8vIEZ1bmN0aW9uIG9iamVjdCBhbmQgb2JqZWN0IGdlbmVyYXRvciBmb3IgaW52b2tpbmcgYQotICAgIC8vIG1lbWJlciBmdW5jdGlvbiB2b2lkIHJlc2V0KCkKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIHJlc2V0X29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgcmVzZXRfb3BlcmF0aW9uKFQmIHQpIDogdF8odCkgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QgeyB0Xy5yZXNldCgpOyB9Ci1wcml2YXRlOgotICAgIHJlc2V0X29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHJlc2V0X29wZXJhdGlvbiYpOwotICAgIFQmIHRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc2V0X29wZXJhdGlvbjxUPiBjYWxsX3Jlc2V0KFQmIHQpIHsgcmV0dXJuIHJlc2V0X29wZXJhdGlvbjxUPih0KTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0IGFuZCBvYmplY3QgZ2VuZXJhdG9yIGZvciBjbGVhcmluZyBhIGZsYWcKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGNsZWFyX2ZsYWdzX29wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIHJlc3VsdF90eXBlOwotICAgIGNsZWFyX2ZsYWdzX29wZXJhdGlvbihUJiB0KSA6IHRfKHQpIHsgfQotICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0IHsgdF8gPSAwOyB9Ci1wcml2YXRlOgotICAgIGNsZWFyX2ZsYWdzX29wZXJhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IGNsZWFyX2ZsYWdzX29wZXJhdGlvbiYpOwotICAgIFQmIHRfOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsZWFyX2ZsYWdzX29wZXJhdGlvbjxUPiBjbGVhcl9mbGFncyhUJiB0KSAKLXsgcmV0dXJuIGNsZWFyX2ZsYWdzX29wZXJhdGlvbjxUPih0KTsgfQotCi0gICAgLy8gRnVuY3Rpb24gb2JqZWN0IGFuZCBnZW5lcmF0b3IgZm9yIGZsdXNoaW5nIGEgYnVmZmVyCi0KLS8vIEZ1bmN0aW9uIG9iamVjdCBmb3IgdXNlIHdpdGggZXhlY3V0ZV9hbGwoKQotdGVtcGxhdGU8dHlwZW5hbWUgQnVmZmVyLCB0eXBlbmFtZSBEZXZpY2U+Ci1jbGFzcyBmbHVzaF9idWZmZXJfb3BlcmF0aW9uIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgcmVzdWx0X3R5cGU7Ci0gICAgZmx1c2hfYnVmZmVyX29wZXJhdGlvbihCdWZmZXImIGJ1ZiwgRGV2aWNlJiBkZXYsIGJvb2wgZmx1c2gpCi0gICAgICAgIDogYnVmXyhidWYpLCBkZXZfKGRldiksIGZsdXNoXyhmbHVzaCkKLSAgICAgICAgeyB9Ci0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChmbHVzaF8pIAotICAgICAgICAgICAgYnVmXy5mbHVzaChkZXZfKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIGZsdXNoX2J1ZmZlcl9vcGVyYXRpb24mIG9wZXJhdG9yPShjb25zdCBmbHVzaF9idWZmZXJfb3BlcmF0aW9uJik7Ci0gICAgQnVmZmVyJiAgYnVmXzsKLSAgICBEZXZpY2UmICBkZXZfOwotICAgIGJvb2wgICAgIGZsdXNoXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJ1ZmZlciwgdHlwZW5hbWUgRGV2aWNlPgotZmx1c2hfYnVmZmVyX29wZXJhdGlvbjxCdWZmZXIsIERldmljZT4gCi1mbHVzaF9idWZmZXIoQnVmZmVyJiBidWYsIERldmljZSYgZGV2LCBib29sIGZsdXNoKQoteyByZXR1cm4gZmx1c2hfYnVmZmVyX29wZXJhdGlvbjxCdWZmZXIsIERldmljZT4oYnVmLCBkZXYsIGZsdXNoKTsgfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfRlVOQ1RJT05BTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkM2NmYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIE5ETkJPT1NUX01TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykKLSMgIGluY2x1ZGUgPGlvcz4KLSMgZWxzZQotIyAgaW5jbHVkZSA8aXN0cmVhbT4KLSMgIGluY2x1ZGUgPG9zdHJlYW0+Ci0jIGVuZGlmCi0jZWxzZSAKLSMgaW5jbHVkZSA8ZXhjZXB0aW9uPgotIyBpbmNsdWRlIDxpb3Nmd2Q+Ci0jZW5kaWYgCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1MoY2gsIHRyKSAgc3RkOjpiYXNpY19pb3M8IGNoLCB0ciA+Ci0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgJiYgXAotICAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmIFwKLSAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgIC8qKi8KLQotI2RlZmluZSBORE5CT09TVF9JT1MgICAgICAgICAgICAgICAgc3RkOjppb3MKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgIHN0ZDo6aW9zOjpmYWlsdXJlCi0KLSMgZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX0lPUyAgICAgICAgICAgICAgICBzdGQ6Omlvc19iYXNlCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFICBzdGQ6Omlvc19iYXNlOjpmYWlsdXJlCi0KLSMgZW5kaWYKLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSU9TICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlvcwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSU9TKGNoLCB0cikgIHN0ZDo6aW9zCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpmYWlsdXJlCi0KLWNsYXNzIGZhaWx1cmUgOiBzdGQ6OmV4Y2VwdGlvbiB7ICAgIAotcHVibGljOgotICAgIGV4cGxpY2l0IGZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIHdoYXRfYXJnKSA6IHdoYXRfKHdoYXRfYXJnKSB7IH0KLSAgICBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgeyByZXR1cm4gd2hhdF8uY19zdHIoKTsgfQotcHJpdmF0ZToKLSAgICBzdGQ6OnN0cmluZyB3aGF0XzsKLX07Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2UgZmFpbHVyZSwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZkMjFhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NUUkVBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JT1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgaW5jbHVkZSA8aXN0cmVhbT4KLSMgaW5jbHVkZSA8b3N0cmVhbT4KLSNlbHNlCi0jIGluY2x1ZGUgPGlvc3RyZWFtLmg+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lTVFJFQU0oY2gsIHRyKSBzdGQ6OmJhc2ljX2lzdHJlYW08IGNoLCB0ciA+Ci0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT1NUUkVBTShjaCwgdHIpIHN0ZDo6YmFzaWNfb3N0cmVhbTwgY2gsIHRyID4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1NUUkVBTShjaCwgdHIpIHN0ZDo6YmFzaWNfaW9zdHJlYW08IGNoLCB0ciA+Ci0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihjaCwgdHIpIHN0ZDo6c3RyZWFtYnVmCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSVNUUkVBTShjaCwgdHIpIHN0ZDo6aXN0cmVhbQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX09TVFJFQU0oY2gsIHRyKSBzdGQ6Om9zdHJlYW0KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1NUUkVBTShjaCwgdHIpIHN0ZDo6aW9zdHJlYW0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lPU1RSRUFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2RlcmVmZXJlbmNlYWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VlOGM1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwNC4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSVNfREVSRUZFUkVOQ0VBQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lTX0RFUkVGRVJFTkNFQUJMRV9IUFBfSU5DTFVERUQKLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsgCi0KLS8vIGlzX2RlcmVmZXJlbmNlYWJsZTxUPiBtZXRhZnVuY3Rpb24KLS8vCi0vLyBSZXF1aXJlczogR2l2ZW4geCBvZiB0eXBlIFQmLCBpZiB0aGUgZXhwcmVzc2lvbiAqeCBpcyB3ZWxsLWZvcm1lZAotLy8gaXQgbXVzdCBoYXZlIGNvbXBsZXRlIHR5cGU7IG90aGVyd2lzZSwgaXQgbXVzdCBuZWl0aGVyIGJlIGFtYmlndW91cwotLy8gbm9yIHZpb2xhdGUgYWNjZXNzLgotCi0vLyBUaGlzIG5hbWVzcGFjZSBlbnN1cmVzIHRoYXQgQURMIGRvZXNuJ3QgbWVzcyB0aGluZ3MgdXAuCi1uYW1lc3BhY2UgaXNfZGVyZWZlcmVuY2VhYmxlXwotewotICAvLyBhIHR5cGUgcmV0dXJuZWQgZnJvbSBvcGVyYXRvciogd2hlbiBubyBpbmNyZW1lbnQgaXMgZm91bmQgaW4gdGhlCi0gIC8vIHR5cGUncyBvd24gbmFtZXNwYWNlCi0gIHN0cnVjdCB0YWcge307Ci0gIAotICAvLyBhbnkgc29ha3MgdXAgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcKLSAgLy8gb3BlcmF0b3IqIGxlc3MtcHJlZmVycmVkIHRoYW4gYW55IG90aGVyIHN1Y2ggb3BlcmF0b3IgdGhhdAotICAvLyBtaWdodCBiZSBmb3VuZCB2aWEgQURMLgotICBzdHJ1Y3QgYW55IHsgdGVtcGxhdGUgPGNsYXNzIFQ+IGFueShUIGNvbnN0Jik7IH07Ci0KLSAgLy8gVGhpcyBpcyBhIGxhc3QtcmVzb3J0IG9wZXJhdG9yKiBmb3Igd2hlbiBub25lIG90aGVyIGlzIGZvdW5kCi0gIHRhZyBvcGVyYXRvciooYW55IGNvbnN0Jik7Ci0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjAyKSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgIGRlZmluZSBORE5CT09TVF9jb21tYShhLGIpIChhKQotIyBlbHNlIAotICAvLyBJbiBjYXNlIGFuIG9wZXJhdG9yKysgaXMgZm91bmQgdGhhdCByZXR1cm5zIHZvaWQsIHdlJ2xsIHVzZSArK3gsMAotICB0YWcgb3BlcmF0b3IsKHRhZyxpbnQpOyAgCi0jICBkZWZpbmUgTkROQk9PU1RfY29tbWEoYSxiKSAoYSxiKQotIyBlbmRpZiAKLSAgCi0gIC8vIHR3byBjaGVjayBvdmVybG9hZHMgaGVscCB1cyBpZGVudGlmeSB3aGljaCBvcGVyYXRvcisrIHdhcyBwaWNrZWQKLSAgY2hhciAoJiBjaGVja19pbmNyZW1lbnQodGFnKSApWzJdOwotICAKLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIGNoYXIgY2hlY2tfaW5jcmVtZW50KFQgY29uc3QmKTsKLSAgCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBzdHJ1Y3QgaW1wbAotICB7Ci0gICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSYgeDsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgIGJvb2wKLSAgICAgICAgLCB2YWx1ZSA9IHNpemVvZihpc19kZXJlZmVyZW5jZWFibGVfOjpjaGVja19pbmNyZW1lbnQoTkROQk9PU1RfY29tbWEoKngsMCkpKSA9PSAxCi0gICAgICApOwotICB9OwotfQotCi0jIHVuZGVmIE5ETkJPT1NUX2NvbW1hCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IGlzX2RlcmVmZXJlbmNlYWJsZSAKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoaXNfZGVyZWZlcmVuY2VhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi17IAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woaXNfZGVyZWZlcmVuY2VhYmxlXzo6aW1wbDxUPjo6dmFsdWUpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGlzX2RlcmVmZXJlbmNlYWJsZSwoVCkpCi19OwotCi19IH0gCi0KLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjppc19kZXJlZmVyZW5jZWFibGUpCi0KLX0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19ERVJFRkVSRU5DRUFCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2l0ZXJhdG9yX3JhbmdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjYmNjNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9JU19JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQgICAgICAgCi0gCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLQotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFdlIGF2b2lkIGRlcGVuZGVuY2Ugb24gQm9vc3QuUmFuZ2UgYnkgdXNpbmcgYSBmb3J3YXJkIGRlY2xhcmF0aW9uLgotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+Ci1jbGFzcyBpdGVyYXRvcl9yYW5nZTsKLSAgICAKLW5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaXRlcmF0b3JfcmFuZ2UsIG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZSwgMSkKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGlvc3RyZWFtcy4KLQotIyBlbHNlIC8vICMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBpb3N0cmVhbXMgeyAgICAKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlzX2l0ZXJhdG9yX3JhbmdlIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotICAgIH07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBpb3N0cmVhbXMuCi0KLSMgZW5kaWYgLy8gIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBuZG5ib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSVNfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvbmV3bGluZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvbmV3bGluZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYTdkMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL25ld2xpbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ORVdMSU5FX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX05FV0xJTkVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RydWN0IG5ld2xpbmU7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBuZXdsaW5lPGNoYXI+IHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgdmFsdWUgPSAnXG4nKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBuZXdsaW5lPHdjaGFyX3Q+IHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQod2NoYXJfdCwgdmFsdWUgPSBMJ1xuJyk7Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWxsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX05FV0xJTkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvb3B0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL29wdGlvbmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FmOTEwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvb3B0aW9uYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBSZWNlbnQgY2hhbmdlcyB0byBCb29zdC5PcHRpb25hbCBpbnZvbHZpbmcgYXNzaWdtZW50IGJyb2tlIEJvb3N0Lklvc3RyZWFtcywKLS8vIGluIGEgd2F5IHdoaWNoIGNvdWxkIGJlIHJlbWVkaWVkIG9ubHkgYnkgcmVseWluZyBvbiB0aGUgZGVwcmVjYXRlZCByZXNldAotLy8gZnVuY3Rpb25zOyB3aXRoIFZDNiwgZXZlbiByZXNldCBkaWRuJ3Qgd29yay4gVW50aWwgdGhpcyBwcm9ibGVtIGlzIAotLy8gdW5kZXJzdG9vZCwgSW9zdHJlYW1zIHdpbGwgdXNlIGEgcHJpdmF0ZSB2ZXJzaW9uIG9mIG9wdGlvbmFsIHdpdGggYSBzbWFydCAKLS8vIHBvaW50ZXIgaW50ZXJmYWNlLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfT1BUSU9OQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfT1BUSU9OQUxfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGFrZW4gZnJvbSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPi4KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBhbGlnbmVkX3N0b3JhZ2UKLXsKLSAgICAvLyBCb3JsYW5kIElDRXMgaWYgdW5uYW1lZCB1bmlvbnMgYXJlIHVzZWQgZm9yIHRoaXMhCi0gICAgdW5pb24gZHVtbXlfdQotICAgIHsKLSAgICAgICAgY2hhciBkYXRhWyBzaXplb2YoVCkgXTsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlX3dpdGhfYWxpZ25tZW50PAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWUgPjo6dHlwZSBhbGlnbmVyXzsKLSAgICB9IGR1bW15XyA7Ci0KLSAgcHVibGljOgotCi0gICAgdm9pZCBjb25zdCogYWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuICZkdW1teV8uZGF0YVswXTsgfQotICAgIHZvaWQgICAgICAqIGFkZHJlc3MoKSAgICAgICB7IHJldHVybiAmZHVtbXlfLmRhdGFbMF07IH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBvcHRpb25hbCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLSAgICBvcHRpb25hbCgpIDogaW5pdGlhbGl6ZWRfKGZhbHNlKSB7IH0KLSAgICBvcHRpb25hbChjb25zdCBUJiB0KSA6IGluaXRpYWxpemVkXyhmYWxzZSkgeyByZXNldCh0KTsgfQotICAgIH5vcHRpb25hbCgpIHsgcmVzZXQoKTsgfQotICAgIFQmIG9wZXJhdG9yKigpIAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFQqPihhZGRyZXNzKCkpOyAKLSAgICB9Ci0gICAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7IAotICAgICAgICBORE5CT09TVF9BU1NFUlQoaW5pdGlhbGl6ZWRfKTsKLSAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBUKj4oYWRkcmVzcygpKTsgCi0gICAgfQotICAgIFQqIG9wZXJhdG9yLT4oKSAKLSAgICB7IAotICAgICAgICBORE5CT09TVF9BU1NFUlQoaW5pdGlhbGl6ZWRfKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihhZGRyZXNzKCkpOyAKLSAgICB9Ci0gICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGluaXRpYWxpemVkXyk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUKj4oYWRkcmVzcygpKTsgCi0gICAgfQotICAgIFQqIGdldCgpIAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGFkZHJlc3MoKSk7IAotICAgIH0KLSAgICBjb25zdCBUKiBnZXQoKSBjb25zdAotICAgIHsgCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChpbml0aWFsaXplZF8pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVCo+KGFkZHJlc3MoKSk7IAotICAgIH0KLSAgICB2b2lkIHJlc2V0KCkgCi0gICAgewotICAgICAgICBpZiAoaW5pdGlhbGl6ZWRfKSB7IAotICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpIHx8IFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpIFwKLSAgICAgICAgICAgIC8qKi8KLSAgICAgICAgICAgIFQqIHQgPSBzdGF0aWNfY2FzdDxUKj4oYWRkcmVzcygpKTsKLSAgICAgICAgICAgIHQtPn5UKCk7Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxUKj4oYWRkcmVzcygpKS0+VDo6flQoKTsKLSAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICBpbml0aWFsaXplZF8gPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIHJlc2V0KGNvbnN0IFQmIHQpIAotICAgIHsKLSAgICAgICAgcmVzZXQoKTsKLSAgICAgICAgbmV3IChhZGRyZXNzKCkpIFQodCk7IAotICAgICAgICBpbml0aWFsaXplZF8gPSB0cnVlOwotICAgIH0KLXByaXZhdGU6Ci0gICAgb3B0aW9uYWwoY29uc3Qgb3B0aW9uYWwmKTsKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsJik7Ci0gICAgdm9pZCogYWRkcmVzcygpIHsgcmV0dXJuICZzdG9yYWdlXzsgfQotICAgIGNvbnN0IHZvaWQqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiAmc3RvcmFnZV87IH0KLSAgICBhbGlnbmVkX3N0b3JhZ2U8VD4gIHN0b3JhZ2VfOwotICAgIGJvb2wgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWRfOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX09QVElPTkFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhcmFtX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhcmFtX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWRhNDk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXJhbV90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUEFSQU1fVFlQRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QQVJBTV9UWVBFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHBhcmFtX3R5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfc3RkX2lvPFQ+LCBUJiwgY29uc3QgVCY+Ojp0eXBlIHR5cGU7Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUEFSQU1fVFlQRV9IUFBfSU5DTFVERUQgLy8tLS0tLS0tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGF0aC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGF0aC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZmM5ODAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3BhdGguaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuKFNlZSBhY2NvbXBhbnlpbmcgCi0gKiBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0gKiAKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXRoLmhwcAotICogRGF0ZTogICAgICAgIFNhdCBKdW4gMjEgMjE6MjQ6MDUgTURUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnBhdGgsIGZvciBzdG9yaW5nIGEgCi0gKiBhIHN0ZDo6c3RyaW5nIG9yIHN0ZDo6d3N0cmluZy4KLSAqCi0gKiBUaGlzIGNsYXNzIGFsbG93cyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggQm9vc3QuRmlsZXN5c3RlbSB3aXRob3V0Ci0gKiBjcmVhdGluZyBhIGRlcGVuZGVuY2Ugb24gQm9vc3QuRmlsZXN5c3RlbSBoZWFkZXJzIG9yIGltcGxlbWVudGF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QQVRIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BBVEhfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fV0lERV9TVFJFQU1TCi0jIGluY2x1ZGUgPGN3Y2hhcj4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIHBhdGggewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci0gICAgc3RydWN0IHNmaW5hZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLXB1YmxpYzoKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBwYXRoKCkgOiBuYXJyb3dfKCksIHdpZGVfKCksIGlzX3dpZGVfKGZhbHNlKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIHN0ZDo6c3RyaW5nCi0gICAgcGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcCkgOiBuYXJyb3dfKHApLCB3aWRlXygpLCBpc193aWRlXyhmYWxzZSkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBDLXN0eWxlIHN0cmluZwotICAgIHBhdGgoY29uc3QgY2hhciogcCkgOiBuYXJyb3dfKHApLCB3aWRlXygpLCBpc193aWRlXyhmYWxzZSkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBuZG5ib29zdDo6ZmlsZXN5c3RlbTI6OnBhdGggb3IKLSAgICAvLyBuZG5ib29zdDo6ZmlsZXN5c3RlbTI6OndwYXRoCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBwYXRoKGNvbnN0IFBhdGgmIHAsIHR5cGVuYW1lIFBhdGg6OmV4dGVybmFsX3N0cmluZ190eXBlKiA9IDApCi0gICAgewotICAgICAgICBpbml0KHAuZXh0ZXJuYWxfZmlsZV9zdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgbmRuYm9vc3Q6OmZpbGVzeXN0ZW0zOjpwYXRoIChib29zdCBmaWxlc3lzdGVtIHYzKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgcGF0aChjb25zdCBQYXRoJiBwLCB0eXBlbmFtZSBQYXRoOjpjb2RlY3Z0X3R5cGUqID0gMCkKLSAgICB7Ci0gICAgICAgIGluaXQocC5uYXRpdmUoKSk7Ci0gICAgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIHBhdGgoY29uc3QgcGF0aCYgcCkgCi0gICAgICAgIDogbmFycm93XyhwLm5hcnJvd18pLCB3aWRlXyhwLndpZGVfKSwgaXNfd2lkZV8ocC5pc193aWRlXykgCi0gICAgICAgIHsgfQotCi0gICAgLy8gQXNzaWdubWVudCBvcGVyYXRvciB0YWtpbmcgYW5vdGhlciBwYXRoCi0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHBhdGgmIHApCi0gICAgewotICAgICAgICBuYXJyb3dfID0gcC5uYXJyb3dfOwotICAgICAgICB3aWRlXyA9IHAud2lkZV87Ci0gICAgICAgIGlzX3dpZGVfID0gcC5pc193aWRlXzsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IgdGFraW5nIGEgc3RkOjpzdHJpbmcKLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3Qgc3RkOjpzdHJpbmcmIHApCi0gICAgewotICAgICAgICBuYXJyb3dfID0gcDsKLSAgICAgICAgd2lkZV8uY2xlYXIoKTsKLSAgICAgICAgaXNfd2lkZV8gPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vIEFzc2lnbm1lbnQgb3BlcmF0b3IgdGFraW5nIGEgQy1zdHlsZSBzdHJpbmcKLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgY2hhciogcCkKLSAgICB7Ci0gICAgICAgIG5hcnJvd18uYXNzaWduKHApOwotICAgICAgICB3aWRlXy5jbGVhcigpOwotICAgICAgICBpc193aWRlXyA9IGZhbHNlOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yIHRha2luZyBhIG5kbmJvb3N0OjpmaWxlc3lzdGVtMjo6cGF0aCBvcgotICAgIC8vIG5kbmJvb3N0OjpmaWxlc3lzdGVtMjo6d3BhdGgKLSAgICAvLyAobm90IG9uIFZpc3VhbCBDKysgNy4xLzguMCwgYXMgaXQgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoCi0gICAgLy8gU0ZJTkFFIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMsIGRvZXNuJ3Qgc2VlbQotICAgIC8vIHdvcnRoIHdvcmtpbmcgYXJvdW5kKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHR5cGVuYW1lIHNmaW5hZTx0eXBlbmFtZSBQYXRoOjpleHRlcm5hbF9zdHJpbmdfdHlwZSwgcGF0aCY+Ojp0eXBlCi0gICAgICAgIG9wZXJhdG9yPShjb25zdCBQYXRoJiBwKQotICAgIHsKLSAgICAgICAgaW5pdChwLmV4dGVybmFsX2ZpbGVfc3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9yIHRha2luZyBhIG5kbmJvb3N0OjpmaWxlc3lzdGVtMzo6cGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdHlwZW5hbWUgc2ZpbmFlPHR5cGVuYW1lIFBhdGg6OmNvZGVjdnRfdHlwZSwgcGF0aCY+Ojp0eXBlCi0gICAgICAgIG9wZXJhdG9yPShjb25zdCBQYXRoJiBwKQotICAgIHsKLSAgICAgICAgaW5pdChwLm5hdGl2ZSgpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaXNfd2lkZSgpIGNvbnN0IHsgcmV0dXJuIGlzX3dpZGVfOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIHVuZGVybHlpbmcgcGF0aCBhcyBhIHN0ZDo6c3RyaW5nCi0gICAgLy8gUmVxdWlyZXM6IGlzX3dpZGUoKSByZXR1cm5zIGZhbHNlCi0gICAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7IHJldHVybiBuYXJyb3dfLmNfc3RyKCk7IH0KLQotICAgIC8vIFJldHVybnMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5kZXJseWluZyBwYXRoIGFzIGEgc3RkOjp3c3RyaW5nCi0gICAgLy8gUmVxdWlyZXM6IGlzX3dpZGUoKSByZXR1cm5zIHRydWUKLSAgICBjb25zdCB3Y2hhcl90KiBjX3dzdHIoKSBjb25zdCB7IHJldHVybiB3aWRlXy5jX3N0cigpOyB9Ci1wcml2YXRlOgotICAgIAotICAgIC8vIEZvciB3aWRlLWNoYXJhY3RlciBwYXRocywgdXNlIGEgbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OndwYXRoIGluc3RlYWQgb2YgYQotICAgIC8vIHN0ZDo6d3N0cmluZwotICAgIHBhdGgoY29uc3Qgc3RkOjp3c3RyaW5nJik7Ci0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6d3N0cmluZyYpOwotCi0gICAgdm9pZCBpbml0KHN0ZDo6c3RyaW5nIGNvbnN0JiBmaWxlX3BhdGgpCi0gICAgewotICAgICAgICBuYXJyb3dfID0gZmlsZV9wYXRoOwotICAgICAgICB3aWRlXy5jbGVhcigpOwotICAgICAgICBpc193aWRlXyA9IGZhbHNlOwotICAgIH0KLQotICAgIHZvaWQgaW5pdChzdGQ6OndzdHJpbmcgY29uc3QmIGZpbGVfcGF0aCkKLSAgICB7Ci0gICAgICAgIG5hcnJvd18uY2xlYXIoKTsKLSAgICAgICAgd2lkZV8gPSBmaWxlX3BhdGg7Ci0gICAgICAgIGlzX3dpZGVfID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyAgIG5hcnJvd187Ci0gICAgc3RkOjp3c3RyaW5nICB3aWRlXzsKLSAgICBib29sICAgICAgICAgIGlzX3dpZGVfOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykKLXsKLSAgICByZXR1cm4gbGhzLmlzX3dpZGUoKSA/Ci0gICAgICAgIHJocy5pc193aWRlKCkgJiYgc3RkOjp3Y3NjbXAobGhzLmNfd3N0cigpLCByaHMuY193c3RyKCkpID09IDAgOgotICAgICAgICAhcmhzLmlzX3dpZGUoKSAmJiBzdGQ6OnN0cmNtcChsaHMuY19zdHIoKSwgcmhzLmNfc3RyKCkpID09IDA7Ci19Ci0KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWNsYXNzIHBhdGggewotcHVibGljOgotICAgIHBhdGgoKSB7IH0KLSAgICBwYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwKSA6IHBhdGhfKHApIHsgfQotICAgIHBhdGgoY29uc3QgY2hhciogcCkgOiBwYXRoXyhwKSB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgICAgICBwYXRoKGNvbnN0IFBhdGgmIHApIDogcGF0aF8ocC5leHRlcm5hbF9maWxlX3N0cmluZygpKSB7IH0KLSAgICBwYXRoKGNvbnN0IHBhdGgmIHApIDogcGF0aF8ocC5wYXRoXykgeyB9Ci0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHBhdGgmIG90aGVyKSAKLSAgICB7Ci0gICAgICAgIHBhdGhfID0gb3RoZXIucGF0aF87Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6c3RyaW5nJiBwKSAKLSAgICB7Ci0gICAgICAgIHBhdGhfID0gcDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBwYXRoJiBvcGVyYXRvcj0oY29uc3QgY2hhciogcCkgCi0gICAgewotICAgICAgICBwYXRoXyA9IHA7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICAgICAgcGF0aCYgb3BlcmF0b3I9KGNvbnN0IFBhdGgmIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBhdGhfID0gcC5leHRlcm5hbF9maWxlX3N0cmluZygpOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0gICAgYm9vbCBpc193aWRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIHBhdGhfLmNfc3RyKCk7IH0KLSAgICBjb25zdCB3Y2hhcl90KiBjX3dzdHIoKSBjb25zdCB7IHJldHVybiAwOyB9Ci1wcml2YXRlOgotICAgIHN0ZDo6c3RyaW5nIHBhdGhfOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBsaHMsIGNvbnN0IHBhdGgmIHJocykKLXsKLSAgICByZXR1cm4gc3RkOjpzdHJjbXAobGhzLmNfc3RyKCksIHJocy5jX3N0cigpKSA9PSAwIDsKLX0KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1BBVEhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNTJkNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUFVTSF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX0hQUF9JTkNMVURFRCAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAKLSAKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+ICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29sdmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0NPTlNUUlVDVE9SKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIpLgotLy8gRGVzY3JpcHRpb246IERlZmluZXMgb3ZlcmxvYWRzIHdpdGggbmFtZSAnbmFtZScgd2hpY2ggZm9yd2FyZCB0byBhIGZ1bmN0aW9uCi0vLyAgICAgICdoZWxwZXInIHdoaWNoIHRha2VzIGEgZmlsdGVyIG9yIGRldmlkZSBieSBjb25zdCByZWZlcmVuY2UuCi0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfQ09OU1RSVUNUT1IobmFtZSwgbW9kZSwgY2gsIGhlbHBlcikgXAotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9JTVBMKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIsIDAsID8pIFwKLSAgICAvKiovCi0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIpLgotLy8gRGVzY3JpcHRpb246IERlZmluZXMgY29uc3RydWN0b3JzIHdoaWNoIGZvcndhcmQgdG8gYSBmdW5jdGlvbgotLy8gICAgICAnaGVscGVyJyB3aGljaCB0YWtlcyBhIGZpbHRlciBvciBkZXZpY2UgYnkgY29uc3QgcmVmZXJlbmNlLgotLy8KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIKG5hbWUsIG1vZGUsIGNoLCBoZWxwZXIpIFwKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTChuYW1lLCBtb2RlLCBjaCwgaGVscGVyLCAxLCB2b2lkKSBcCi0gICAgLyoqLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTC0tLS0tLS0tLS0vLwotICAgICAgICAgIAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBhcmcsIGhlbHBlciwgaGFzX3JldHVybikgXAotICAgIHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJlc29sdmU8bW9kZSwgY2g+KGFyZykgXAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IFwKLSAgICAvKiovCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSBcCi0gICAgLyoqLwotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX1BVU0hfSU1QTChuYW1lLCBtb2RlLCBjaCwgaGVscGVyLCBoYXNfcmV0dXJuLCByZXN1bHQpIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgVHJhaXRzVHlwZT4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoYXJUeXBlLCBUcmFpdHNUeXBlPiYgc2IgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIHNiLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgVHJhaXRzVHlwZT4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVHlwZSwgVHJhaXRzVHlwZT4mIGlzIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8bW9kZSwgb3V0cHV0Pjo6dmFsdWUpKTsgXAotICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgaXMsIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCB0eXBlbmFtZSBUcmFpdHNUeXBlPiBcCi0gICAgTkROQk9PU1RfUFBfSUlGKGhhc19yZXR1cm4sIHJlc3VsdCwgZXhwbGljaXQpIFwKLSAgICBuYW1lKDo6c3RkOjpiYXNpY19vc3RyZWFtPENoYXJUeXBlLCBUcmFpdHNUeXBlPiYgb3MgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBpbnB1dD46OnZhbHVlKSk7IFwKLSAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIG9zLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5hbWUgVHJhaXRzVHlwZT4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6YmFzaWNfaW9zdHJlYW08Q2hhclR5cGUsIFRyYWl0c1R5cGU+JiBpbyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgaW8sIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+IFwKLSAgICBORE5CT09TVF9QUF9JSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcj4mIHJuZyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfUFBfRVhQUl9JRihoYXNfcmV0dXJuLCByZXR1cm4pIFwKLSAgICB0aGlzLT5oZWxwZXIoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpyYW5nZV9hZGFwdGVyPCBcCi0gICAgICAgICAgICAgICAgICAgICAgbW9kZSwgaXRlcmF0b3JfcmFuZ2U8SXRlcj4gXAotICAgICAgICAgICAgICAgICAgPihybmcpIFwKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSApOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgQ29uY2VwdD4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OnBpcGVsaW5lPFBpcGVsaW5lLCBDb25jZXB0PiYgcCkgXAotICAgIHsgcC5wdXNoKCp0aGlzKTsgfSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotICAgIE5ETkJPT1NUX1BQX0lJRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKSkgXAotICAgIHsgdGhpcy0+aGVscGVyKCA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cmVzb2x2ZTxtb2RlLCBjaD4odCkgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkgKTsgfSBcCi0gICAgLyoqLwotIyBlbHNlIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0jICBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0lNUEwobmFtZSwgbW9kZSwgY2gsIGhlbHBlciwgaGFzX3JldHVybiwgcmVzdWx0KSBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoOjpzdGQ6OnN0cmVhbWJ1ZiYgc2IgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX0lPU1RSRUFNU19BREFQVF9TVFJFQU0obW9kZSwgY2gsIHNiLCBoZWxwZXIsIGhhc19yZXR1cm4pOyB9IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZSg6OnN0ZDo6aXN0cmVhbSYgaXMgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkpIFwKLSAgICB7IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxtb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOyBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBpcywgaGVscGVyLCBoYXNfcmV0dXJuKTsgfSBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoOjpzdGQ6Om9zdHJlYW0mIG9zIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCghaXNfY29udmVydGlibGU8bW9kZSwgaW5wdXQ+Ojp2YWx1ZSkpOyBcCi0gICAgICBORE5CT09TVF9JT1NUUkVBTVNfQURBUFRfU1RSRUFNKG1vZGUsIGNoLCBvcywgaGVscGVyLCBoYXNfcmV0dXJuKTsgfSBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoOjpzdGQ6Omlvc3RyZWFtJiBpbyBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgTkROQk9PU1RfSU9TVFJFQU1TX0FEQVBUX1NUUkVBTShtb2RlLCBjaCwgaW8sIGhlbHBlciwgaGFzX3JldHVybik7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+IFwKLSAgICBORE5CT09TVF9QUF9JRihoYXNfcmV0dXJuLCByZXN1bHQsIGV4cGxpY2l0KSBcCi0gICAgbmFtZShjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyPiYgcm5nIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSBcCi0gICAgeyBORE5CT09TVF9QUF9FWFBSX0lGKGhhc19yZXR1cm4sIHJldHVybikgXAotICAgIHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJhbmdlX2FkYXB0ZXI8IFwKLSAgICAgICAgICAgICAgICAgICAgICBtb2RlLCBpdGVyYXRvcl9yYW5nZTxJdGVyPiBcCi0gICAgICAgICAgICAgICAgICA+KHJuZykgXAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBDb25jZXB0PiBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoY29uc3QgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpwaXBlbGluZTxQaXBlbGluZSwgQ29uY2VwdD4mIHApIFwKLSAgICB7IHAucHVzaCgqdGhpcyk7IH0gXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICBORE5CT09TVF9QUF9FWFBSX0lGKGhhc19yZXR1cm4sIHJlc3VsdCkgXAotICAgIG5hbWUoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkpIFwKLSAgICB7IHRoaXMtPmhlbHBlciggOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnJlc29sdmU8bW9kZSwgY2g+KHQpIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpICk7IH0gXAotICAgIC8qKi8KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSNlbHNlIC8vICNpZiBWQzYsIFZDNy4wLCBCb3JsYW5kIDUueAotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0lNUEwobmFtZSwgbW9kZSwgY2gsIGhlbHBlciwgaGFzX3JldHVybiwgcmVzdWx0KSBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotICAgIHZvaWQgTkROQk9PU1RfUFBfQ0FUKG5hbWUsIF9tc3ZjX2ltcGwpIFwKLSAgICAoIDo6bmRuYm9vc3Q6Om1wbDo6dHJ1ZV8sIGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkgKSBcCi0gICAgeyB0LnB1c2goKnRoaXMpOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgdm9pZCBORE5CT09TVF9QUF9DQVQobmFtZSwgX21zdmNfaW1wbCkgXAotICAgICggOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8sIGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TKCkgKSBcCi0gICAgeyB0aGlzLT5oZWxwZXIoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpyZXNvbHZlPG1vZGUsIGNoPih0KSBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSApOyB9IFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi0gICAgTkROQk9PU1RfUFBfSUYoaGFzX3JldHVybiwgcmVzdWx0LCBleHBsaWNpdCkgXAotICAgIG5hbWUoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgIHsgXAotICAgICAgICB0aGlzLT5ORE5CT09TVF9QUF9DQVQobmFtZSwgX21zdmNfaW1wbCkgXAotICAgICAgICAgICAgICAoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjppc19waXBlbGluZTxUPigpLCBcCi0gICAgICAgICAgICAgICAgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTKCkgKTsgXAotICAgIH0gXAotICAgIC8qKi8KLSNlbmRpZiAvLyAjaWYgVkM2LCBWQzcuMCwgQm9ybGFuZCA1LngKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYjIxNGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2hfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUFVTSF9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfUFVTSF9QQVJBTVNfSFBQX0lOQ0xVREVEIAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpIFwKLSAgICAsIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IC0xICwgc3RkOjpzdHJlYW1zaXplIHBiYWNrX3NpemUgPSAtMSBcCi0gICAgLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSAsIGJ1ZmZlcl9zaXplLCBwYmFja19zaXplICAgICAKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9QVVNIX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXNvbHZlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXNvbHZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQwZmE1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzb2x2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9SRVNPTFZFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1JFU09MVkVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBwYXJ0aWFsIHNwZWMsIHB1dCBzaXplX3QgaW4gc3RkLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIHN0ZDo6c2l6ZV90LgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pc19pbmNyZW1lbnRhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL21vZGVfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL291dHB1dF9pdGVyYXRvcl9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvcmFuZ2VfYWRhcHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19kZXJlZmVyZW5jZWFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+IC8vIHRydWVfLgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotI2VuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gLy8gVkM3LjEgQzQyMjQuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHJlc29sdmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVzb2x2ZV90cmFpdHMgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19pbmNyZW1lbnRhYmxlPFQ+LAotICAgICAgICAgICAgICAgIG91dHB1dF9pdGVyYXRvcl9hZGFwdGVyPE1vZGUsIENoLCBUPiwKLSAgICAgICAgICAgICAgICBjb25zdCBUJgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUKLXJlc29sdmUoIGNvbnN0IFQmIHQgCi0gICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkKLQotICAgICAgICAgLy8gSSBzdXNwZWN0IHRoYXQgdGhlIGNvbXBpbGVycyB3aGljaCByZXF1aXJlIHRoaXMgd29ya2Fyb3VuZCBtYXkKLSAgICAgICAgIC8vIGJlIGNvcnJlY3QsIGJ1dCBJJ20gbm90IHN1cmUgd2h5IDooCi0gICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiwgTkROQk9PU1RfVEVTVEVEX0FUKDgxMCkpIHx8XAotICAgICAgICAgICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwNSkpIHx8IFwKLSAgICAgICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0lPU1RSRUFNU19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCg0MDApKSB8fFwKLSAgICAgICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgxMTEwKSkKLSAgICAgICAgICAgICAvKiovCi0gICAgICAgICAsIHR5cGVuYW1lIGRpc2FibGVfaWY8IGlzX2l0ZXJhdG9yX3JhbmdlPFQ+ID46OnR5cGUqID0gMAotICAgICAgICAgI2VuZGlmCi0gICAgICAgICApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1tb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPiAKLXJlc29sdmUoc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiYgc2IpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoLCBUcj4gPih3cmFwKHNiKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotbW9kZV9hZGFwdGVyPCBNb2RlLCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiA+IAotcmVzb2x2ZShzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiYgaXMpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4od3JhcChpcykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLW1vZGVfYWRhcHRlcjwgTW9kZSwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPiAKLXJlc29sdmUoc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4mIG9zKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPCBNb2RlLCBzdGQ6OmJhc2ljX29zdHJlYW08Q2gsIFRyPiA+KHdyYXAob3MpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1tb2RlX2FkYXB0ZXI8IE1vZGUsIHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+IAotcmVzb2x2ZShzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4mIGlvKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPCBNb2RlLCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPih3cmFwKGlvKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHN0ZDo6c2l6ZV90IE4+Ci1hcnJheV9hZGFwdGVyPE1vZGUsIENoPiByZXNvbHZlKENoICgmYXJyYXkpW05dKQoteyByZXR1cm4gYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD4oYXJyYXkpOyB9Ci0KLSMgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEl0ZXI+Ci0gICAgcmFuZ2VfYWRhcHRlcjwgTW9kZSwgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPEl0ZXI+ID4gCi0gICAgcmVzb2x2ZShjb25zdCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4mIHJuZykKLSAgICB7IHJldHVybiByYW5nZV9hZGFwdGVyPCBNb2RlLCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4gPihybmcpOyB9Ci0jICBlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotCi0jIGVsc2UgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZQotcmVzb2x2ZSggY29uc3QgVCYgdCAKLSAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ESVNBQkxFX0lGX1NUUkVBTShUKQotICAgICAgICAgI2lmIGRlZmluZWQoX19HTlVDX18pCi0gICAgICAgICAsIHR5cGVuYW1lIGRpc2FibGVfaWY8IGlzX2l0ZXJhdG9yX3JhbmdlPFQ+ID46OnR5cGUqID0gMAotICAgICAgICAgI2VuZGlmCi0gICAgICAgICApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLW1vZGVfYWRhcHRlcjxNb2RlLCBzdGQ6OnN0cmVhbWJ1Zj4gCi1yZXNvbHZlKHN0ZDo6c3RyZWFtYnVmJiBzYikgCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjpzdHJlYW1idWY+KHdyYXAoc2IpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLW1vZGVfYWRhcHRlcjxNb2RlLCBzdGQ6OmlzdHJlYW0+IAotcmVzb2x2ZShzdGQ6OmlzdHJlYW0mIGlzKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6aXN0cmVhbT4od3JhcChpcykpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6b3N0cmVhbT4gCi1yZXNvbHZlKHN0ZDo6b3N0cmVhbSYgb3MpCi17IHJldHVybiBtb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjpvc3RyZWFtPih3cmFwKG9zKSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1tb2RlX2FkYXB0ZXI8TW9kZSwgc3RkOjppb3N0cmVhbT4gCi1yZXNvbHZlKHN0ZDo6aW9zdHJlYW0mIGlvKQoteyByZXR1cm4gbW9kZV9hZGFwdGVyPE1vZGUsIHN0ZDo6aW9zdHJlYW0+KHdyYXAoaW8pKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgc3RkOjpzaXplX3QgTj4KLWFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+IHJlc29sdmUoQ2ggKCZhcnJheSlbTl0pCi17IHJldHVybiBhcnJheV9hZGFwdGVyPE1vZGUsIENoPihhcnJheSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIEl0ZXI+Ci1yYW5nZV9hZGFwdGVyPCBNb2RlLCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4gPiAKLXJlc29sdmUoY29uc3QgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPEl0ZXI+JiBybmcpCi17IHJldHVybiByYW5nZV9hZGFwdGVyPCBNb2RlLCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8SXRlcj4gPihybmcpOyB9Ci0KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXN0cnVjdCByZXNvbHZlX3RyYWl0cyB7Ci0gICAgLy8gTm90ZTogdGVzdCBmb3IgaXNfaXRlcmF0b3JfcmFuZ2UgbXVzdCBjb21lIGJlZm9yZSB0ZXN0IGZvciBvdXRwdXQKLSAgICAvLyBpdGVyYXRvci4KLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQuCi0gICAgICAgICAgICAgICAgaXNfc3RkX2lvPFQ+LAotICAgICAgICAgICAgICAgIG1vZGVfYWRhcHRlcjxNb2RlLCBUPiwKLSAgICAgICAgICAgICAgICBpc19pdGVyYXRvcl9yYW5nZTxUPiwKLSAgICAgICAgICAgICAgICByYW5nZV9hZGFwdGVyPE1vZGUsIFQ+LAotICAgICAgICAgICAgICAgIGlzX2RlcmVmZXJlbmNlYWJsZTxUPiwKLSAgICAgICAgICAgICAgICBvdXRwdXRfaXRlcmF0b3JfYWRhcHRlcjxNb2RlLCBDaCwgVD4sCi0gICAgICAgICAgICAgICAgaXNfYXJyYXk8VD4sCi0gICAgICAgICAgICAgICAgYXJyYXlfYWRhcHRlcjxNb2RlLCBUPiwKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotICAgICAgICAgICAgICAgICAgICBjb25zdCBUJgotICAgICAgICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIAotcmVzb2x2ZShjb25zdCBUJiB0LCBtcGw6OnRydWVfKQoteyAgIC8vIEJhZCBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIHJldHVybl90eXBlOwotICAgIHJldHVybiByZXR1cm5fdHlwZSh3cmFwKGNvbnN0X2Nhc3Q8VCY+KHQpKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIAotcmVzb2x2ZShjb25zdCBUJiB0LCBtcGw6OmZhbHNlXykKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgcmV0dXJuX3R5cGU7Ci0gICAgcmV0dXJuIHJldHVybl90eXBlKHQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVD4KLXR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSAKLXJlc29sdmUoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkpCi17IHJldHVybiByZXNvbHZlPE1vZGUsIENoPih0LCBpc19zdGRfaW88VD4oKSk7IH0KLQotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmIFwKLSAgICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICAhZGVmaW5lZChfX0dOVUNfXykgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgCi1yZXNvbHZlKFQmIHQsIG1wbDo6dHJ1ZV8pCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIHJldHVybl90eXBlOwotICAgIHJldHVybiByZXR1cm5fdHlwZSh3cmFwKHQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSByZXNvbHZlX3RyYWl0czxNb2RlLCBDaCwgVD46OnR5cGUgCi1yZXNvbHZlKFQmIHQsIG1wbDo6ZmFsc2VfKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc29sdmVfdHJhaXRzPE1vZGUsIENoLCBUPjo6dHlwZSByZXR1cm5fdHlwZTsKLSAgICByZXR1cm4gcmV0dXJuX3R5cGUodCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUPgotdHlwZW5hbWUgcmVzb2x2ZV90cmFpdHM8TW9kZSwgQ2gsIFQ+Ojp0eXBlIAotcmVzb2x2ZShUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19FTkFCTEVfSUZfU1RSRUFNKFQpKQoteyByZXR1cm4gcmVzb2x2ZTxNb2RlLCBDaD4odCwgaXNfc3RkX2lvPFQ+KCkpOyB9Ci0KLSMgZW5kaWYgLy8gQm9ybGFuZCA1LngsIFZDNi03LjAgb3IgR0NDIDIuOXggLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMSA0MjI0LgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9SRVNPTFZFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzMwNDdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXN0cmljdF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MiArMCwwIEBACi0vKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLihTZWUgYWNjb21wYW55aW5nIAotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotICogCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwCi0gKiBEYXRlOiAgICAgICAgU3VuIEphbiAwNiAxMjo1NzozMCBNU1QgMjAwOAotICogQ29weXJpZ2h0OiAgIDIwMDctMjAwOCBDb2RlUmFnZSwgTExDCi0gKiBBdXRob3I6ICAgICAgSm9uYXRoYW4gVHVya2FuaXMKLSAqIENvbnRhY3Q6ICAgICB0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tCi0gKgotICogSWYgaW5jbHVkZWQgd2l0aCB0aGUgbWFjcm8gTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUIHVuZGVmaW5lZCwgZGVmaW5lcyB0aGUgCi0gKiBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdGlvbi4gSWYgaW5jbHVkZWQgd2l0aCB0aGUgbWFjcm8KLSAqIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCBkZWZpbmVkIGFzIGFuIGlkZW50aWZpZXIsIGRlZmluZXMgdGhlIG92ZXJsb2FkZWQKLSAqIGZ1bmN0aW9uIHRlbXBsYXRlIG5kbmJvb3N0Ojppb3N0cmVhbXM6Ok5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCwgYW5kIG9iamVjdCAKLSAqIGdlbmVyYXRvciBmb3IgbmRuYm9vc3Q6Omlvc3RyZWFtczo6cmVzdHJpY3Rpb24uCi0gKgotICogVGhpcyBkZXNpZ24gYWxsb3dzIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVzdHJpY3QuaHBwPiBhbmQgCi0gKiA8bmRuYm9vc3QvaW9zdHJlYW1zL3NsaWNlLmhwcD4gdG8gc2hhcmUgYW4gaW1wbGVtZW50YXRpb24uCi0gKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9JTVBMX0hQUF9JTkNMVURFRCkgJiYgXAotICAgICFkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVF9JTVBMX0hQUF9JTkNMVURFRAotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgcmVzdHJpY3Rpb24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAvLyBtaW4uCi0jIGluY2x1ZGUgPHV0aWxpdHk+ICAgICAgICAgICAgLy8gcGFpci4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+ICAvLyBpbnRtYXhfdC4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBERURVQ0VEX1RZUEVOQU1FLgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9kZXZpY2VfYWRhcHRlci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9maWx0ZXJfYWRhcHRlci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2VuYWJsZV9pZl9zdHJlYW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgLy8gZmFpbHVyZS4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9za2lwLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+ICAgICAgICAgLy8gbW9kZV9vZiwgaXNfZGlyZWN0LgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlLgotLy8gRGVzY3JpcHRpb246IFByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgdmlldyBvZiBhbiBpbmRpcmVjdCBEZXZpY2UuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBEZXZpY2UgLSBBbiBpbmRpcmVjdCBtb2RlbCBvZiBEZXZpY2UgdGhhdCBtb2RlbHMgZWl0aGVyIFNvdXJjZSBvcgotLy8gICAgICAgICAgU2Vla2FibGVEZXZpY2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotY2xhc3MgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2UgOiBwdWJsaWMgZGV2aWNlX2FkYXB0ZXI8RGV2aWNlPiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbV90eXBlPERldmljZT46OnR5cGUgIHBhcmFtX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxEZXZpY2U+Ojp0eXBlICAgICAgIG1vZGU7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghKGlzX2NvbnZlcnRpYmxlPG1vZGUsIGRldGFpbDo6dHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBtb2RlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlKCBwYXJhbV90eXBlIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEgKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2VlayhzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSk7Ci1wcml2YXRlOgotICAgIHN0cmVhbV9vZmZzZXQgYmVnXywgcG9zXywgZW5kXzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UuCi0vLyBEZXNjcmlwdGlvbjogUHJvdmlkZXMgYW4gcmVzdHJpY3RlZCB2aWV3IG9mIGEgRGlyZWN0IERldmljZS4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIERldmljZSAtIEEgbW9kZWwgb2YgRGlyZWN0IGFuZCBEZXZpY2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotY2xhc3MgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlIDogcHVibGljIGRldmljZV9hZGFwdGVyPERldmljZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiAgICBwYWlyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPERldmljZT46OnR5cGUgICAgICAgbW9kZTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCEoaXNfY29udmVydGlibGU8bW9kZSwgZGV0YWlsOjp0d29fc2VxdWVuY2U+Ojp2YWx1ZSkpOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IG1vZGVfb2Y8RGV2aWNlPjo6dHlwZSwKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIGRpcmVjdF90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGxvY2FsaXphYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlKCBjb25zdCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xICk7Ci0gICAgcGFpcl90eXBlIGlucHV0X3NlcXVlbmNlKCk7Ci0gICAgcGFpcl90eXBlIG91dHB1dF9zZXF1ZW5jZSgpOwotcHJpdmF0ZToKLSAgICBwYWlyX3R5cGUgc2VxdWVuY2UobXBsOjp0cnVlXyk7Ci0gICAgcGFpcl90eXBlIHNlcXVlbmNlKG1wbDo6ZmFsc2VfKTsKLSAgICBjaGFyX3R5cGUgKmJlZ18sICplbmRfOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHJlc3RyaWN0ZWRfZmlsdGVyLgotLy8gRGVzY3JpcHRpb246IFByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgdmlldyBvZiBhIEZpbHRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIEZpbHRlciAtIEFuIGluZGlyZWN0IG1vZGVsIG9mIEZpbHRlci4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXI+Ci1jbGFzcyByZXN0cmljdGVkX2ZpbHRlciA6IHB1YmxpYyBmaWx0ZXJfYWRhcHRlcjxGaWx0ZXI+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxGaWx0ZXI+Ojp0eXBlIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RmlsdGVyPjo6dHlwZSAgICAgIG1vZGU7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghKGlzX2NvbnZlcnRpYmxlPG1vZGUsIGRldGFpbDo6dHdvX3NlcXVlbmNlPjo6dmFsdWUpKTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBtb2RlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotICAgIHJlc3RyaWN0ZWRfZmlsdGVyKCBjb25zdCBGaWx0ZXImIGZsdCwgc3RyZWFtX29mZnNldCBvZmYsIAotICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xICk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBpZiAoIW9wZW5fKQotICAgICAgICAgICAgb3BlbihzcmMsIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0KLSAgICAgICAgICAgIGVuZF8gIT0gLTEgPwotICAgICAgICAgICAgICAgIChzdGQ6Om1pbikgKG4sIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oZW5kXyAtIHBvc18pKSA6Ci0gICAgICAgICAgICAgICAgbjsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IAotICAgICAgICAgICAgaW9zdHJlYW1zOjpyZWFkKHRoaXMtPmNvbXBvbmVudCgpLCBzcmMsIHMsIGFtdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gLTEpCi0gICAgICAgICAgICBwb3NfICs9IHJlc3VsdDsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShTaW5rJiBzbmssIGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBpZiAoIW9wZW5fKQotICAgICAgICAgICAgb3BlbihzbmssIE5ETkJPT1NUX0lPUzo6b3V0KTsKLSAgICAgICAgaWYgKGVuZF8gIT0gLTEgJiYgcG9zXyArIG4gPj0gZW5kXykgewotICAgICAgICAgICAgaWYocG9zXyA8IGVuZF8pCi0gICAgICAgICAgICAgICAgcG9zXyArPSBpb3N0cmVhbXM6OndyaXRlKHRoaXMtPmNvbXBvbmVudCgpLAotICAgICAgICAgICAgICAgICAgICBzbmssIHMsIGVuZF8gLSBwb3NfKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3dyaXRlKCkpOwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAKLSAgICAgICAgICAgIGlvc3RyZWFtczo6d3JpdGUodGhpcy0+Y29tcG9uZW50KCksIHNuaywgcywgbik7Ci0gICAgICAgIHBvc18gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICBzdGQ6OnN0cmVhbXBvcyBzZWVrKERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSkKLSAgICB7Ci0gICAgICAgIHN0cmVhbV9vZmZzZXQgbmV4dDsKLSAgICAgICAgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmJlZykgewotICAgICAgICAgICAgbmV4dCA9IGJlZ18gKyBvZmY7Ci0gICAgICAgIH0gZWxzZSBpZiAod2F5ID09IE5ETkJPT1NUX0lPUzo6Y3VyKSB7Ci0gICAgICAgICAgICBuZXh0ID0gcG9zXyArIG9mZjsKLSAgICAgICAgfSBlbHNlIGlmIChlbmRfICE9IC0xKSB7Ci0gICAgICAgICAgICBuZXh0ID0gZW5kXyArIG9mZjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFJlc3RyaWN0aW9uIGlzIGhhbGYtb3Blbjsgc2VlayByZWxhdGl2ZSB0byB0aGUgYWN0dWFsIGVuZC4KLSAgICAgICAgICAgIHBvc18gPSB0aGlzLT5jb21wb25lbnQoKS5zZWVrKGRldiwgb2ZmLCBORE5CT09TVF9JT1M6OmVuZCk7Ci0gICAgICAgICAgICBpZiAocG9zXyA8IGJlZ18pCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24ocG9zXyAtIGJlZ18pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXh0IDwgYmVnXyB8fCAoZW5kXyAhPSAtMSAmJiBuZXh0ID49IGVuZF8pKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgcG9zXyA9IHRoaXMtPmNvbXBvbmVudCgpLnNlZWsoZGV2LCBuZXh0LCBORE5CT09TVF9JT1M6OmN1cik7Ci0gICAgICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24ocG9zXyAtIGJlZ18pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2KSAKLSAgICB7IAotICAgICAgICBvcGVuXyA9IGZhbHNlOwotICAgICAgICBkZXRhaWw6OmNsb3NlX2FsbCh0aGlzLT5jb21wb25lbnQoKSwgZGV2KTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotICAgIHZvaWQgY2xvc2UoRGV2aWNlJiBkZXYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpIAotICAgIHsgCi0gICAgICAgIG9wZW5fID0gZmFsc2U7Ci0gICAgICAgIGlvc3RyZWFtczo6Y2xvc2UodGhpcy0+Y29tcG9uZW50KCksIGRldiwgd2hpY2gpOyAKLSAgICB9Ci1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIG9wZW4oRGV2aWNlJiBkZXYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGR1YWxfdXNlPjo6dHlwZSBpc19kdWFsX3VzZTsKLSAgICAgICAgb3Blbl8gPSB0cnVlOwotICAgICAgICB3aGljaCA9IGlzX2R1YWxfdXNlKCkgPyB3aGljaCA6IChORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgICAgICBpb3N0cmVhbXM6OnNraXAodGhpcy0+Y29tcG9uZW50KCksIGRldiwgYmVnXywgd2hpY2gpOwotICAgIH0KLQotICAgIHN0cmVhbV9vZmZzZXQgIGJlZ18sIHBvc18sIGVuZF87Ci0gICAgYm9vbCAgICAgICAgICAgb3Blbl87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlc3RyaWN0aW9uX3RyYWl0cwotICAgIDogaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQuCi0gICAgICAgICAgaXNfZmlsdGVyPFQ+LCAgcmVzdHJpY3RlZF9maWx0ZXI8VD4sCi0gICAgICAgICAgaXNfZGlyZWN0PFQ+LCAgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPFQ+LAotICAgICAgICAgIGVsc2VfLCAgICAgICAgIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlPFQ+Ci0gICAgICA+Ci0gICAgeyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlc3RyaWN0aW9uIDogcHVibGljIGRldGFpbDo6cmVzdHJpY3Rpb25fdHJhaXRzPFQ+Ojp0eXBlIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxUPjo6dHlwZSAgICAgICAgICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZXN0cmljdGlvbl90cmFpdHM8VD46OnR5cGUgIGJhc2VfdHlwZTsKLSAgICByZXN0cmljdGlvbihwYXJhbV90eXBlIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQotICAgICAgICA6IGJhc2VfdHlwZSh0LCBvZmYsIGxlbikKLSAgICAgICAgeyB9Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2U8RGV2aWNlPjo6cmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2UKLSAgICAocGFyYW1fdHlwZSBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbikKLSAgICA6IGRldmljZV9hZGFwdGVyPERldmljZT4oZGV2KSwgYmVnXyhvZmYpLCBwb3NfKG9mZiksIAotICAgICAgZW5kXyhsZW4gIT0gLTEgPyBvZmYgKyBsZW4gOiAtMSkKLXsKLSAgICBpZiAobGVuIDwgLTEgfHwgb2ZmIDwgMCkKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIG9mZnNldCIpKTsKLSAgICBpb3N0cmVhbXM6OnNraXAodGhpcy0+Y29tcG9uZW50KCksIG9mZik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgcmVzdHJpY3RlZF9pbmRpcmVjdF9kZXZpY2U8RGV2aWNlPjo6cmVhZAotICAgIChjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9Ci0gICAgICAgIGVuZF8gIT0gLTEgPwotICAgICAgICAgICAgKHN0ZDo6bWluKSAobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihlbmRfIC0gcG9zXykpIDoKLSAgICAgICAgICAgIG47Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6cmVhZCh0aGlzLT5jb21wb25lbnQoKSwgcywgYW10KTsKLSAgICBpZiAocmVzdWx0ICE9IC0xKQotICAgICAgICBwb3NfICs9IHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlPERldmljZT46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgaWYgKGVuZF8gIT0gLTEgJiYgcG9zXyArIG4gPj0gZW5kXykgewotICAgICAgICBpZihwb3NfIDwgZW5kXykKLSAgICAgICAgICAgIHBvc18gKz0gaW9zdHJlYW1zOjp3cml0ZSh0aGlzLT5jb21wb25lbnQoKSwgcywgZW5kXyAtIHBvc18pOwotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF93cml0ZSgpKTsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGUodGhpcy0+Y29tcG9uZW50KCksIHMsIG4pOwotICAgIHBvc18gKz0gcmVzdWx0OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXN0ZDo6c3RyZWFtcG9zIHJlc3RyaWN0ZWRfaW5kaXJlY3RfZGV2aWNlPERldmljZT46OnNlZWsKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXkpCi17Ci0gICAgc3RyZWFtX29mZnNldCBuZXh0OwotICAgIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpiZWcpIHsKLSAgICAgICAgbmV4dCA9IGJlZ18gKyBvZmY7Ci0gICAgfSBlbHNlIGlmICh3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIpIHsKLSAgICAgICAgbmV4dCA9IHBvc18gKyBvZmY7Ci0gICAgfSBlbHNlIGlmIChlbmRfICE9IC0xKSB7Ci0gICAgICAgIG5leHQgPSBlbmRfICsgb2ZmOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlc3RyaWN0aW9uIGlzIGhhbGYtb3Blbjsgc2VlayByZWxhdGl2ZSB0byB0aGUgYWN0dWFsIGVuZC4KLSAgICAgICAgcG9zXyA9IGlvc3RyZWFtczo6c2Vlayh0aGlzLT5jb21wb25lbnQoKSwgb2ZmLCBORE5CT09TVF9JT1M6OmVuZCk7Ci0gICAgICAgIGlmIChwb3NfIDwgYmVnXykKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oYmFkX3NlZWsoKSk7Ci0gICAgICAgIHJldHVybiBvZmZzZXRfdG9fcG9zaXRpb24ocG9zXyAtIGJlZ18pOwotICAgIH0KLSAgICBpZiAobmV4dCA8IGJlZ18gfHwgKGVuZF8gIT0gLTEgJiYgbmV4dCA+IGVuZF8pKQotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9zZWVrKCkpOwotICAgIHBvc18gPSBpb3N0cmVhbXM6OnNlZWsodGhpcy0+Y29tcG9uZW50KCksIG5leHQgLSBwb3NfLCBORE5CT09TVF9JT1M6OmN1cik7Ci0gICAgcmV0dXJuIG9mZnNldF90b19wb3NpdGlvbihwb3NfIC0gYmVnXyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UtLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpyZXN0cmljdGVkX2RpcmVjdF9kZXZpY2UKLSAgICAoY29uc3QgRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbikKLSAgICA6IGRldmljZV9hZGFwdGVyPERldmljZT4oZGV2KSwgYmVnXygwKSwgZW5kXygwKQotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBzZXEgPQotICAgICAgICBzZXF1ZW5jZShpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+KCkpOwotICAgIGlmICggb2ZmIDwgMCB8fCBsZW4gPCAtMSB8fCAKLSAgICAgICAgIChsZW4gIT0gLTEgJiYgb2ZmICsgbGVuID4gc2VxLnNlY29uZCAtIHNlcS5maXJzdCkgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiYmFkIG9mZnNldCIpKTsKLSAgICB9Ci0gICAgYmVnXyA9IHNlcS5maXJzdCArIG9mZjsKLSAgICBlbmRfID0gbGVuICE9IC0xID8gCi0gICAgICAgIHNlcS5maXJzdCArIG9mZiArIGxlbiA6Ci0gICAgICAgIHNlcS5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXR5cGVuYW1lIHJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpwYWlyX3R5cGUKLXJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjppbnB1dF9zZXF1ZW5jZSgpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGlucHV0Pjo6dmFsdWUpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoYmVnXywgZW5kXyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXR5cGVuYW1lIHJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpwYWlyX3R5cGUKLXJlc3RyaWN0ZWRfZGlyZWN0X2RldmljZTxEZXZpY2U+OjpvdXRwdXRfc2VxdWVuY2UoKQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihiZWdfLCBlbmRfKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlPgotdHlwZW5hbWUgcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OnBhaXJfdHlwZQotcmVzdHJpY3RlZF9kaXJlY3RfZGV2aWNlPERldmljZT46OnNlcXVlbmNlKG1wbDo6dHJ1ZV8pCi17IHJldHVybiBpb3N0cmVhbXM6OmlucHV0X3NlcXVlbmNlKHRoaXMtPmNvbXBvbmVudCgpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci10eXBlbmFtZSByZXN0cmljdGVkX2RpcmVjdF9kZXZpY2U8RGV2aWNlPjo6cGFpcl90eXBlCi1yZXN0cmljdGVkX2RpcmVjdF9kZXZpY2U8RGV2aWNlPjo6c2VxdWVuY2UobXBsOjpmYWxzZV8pCi17IHJldHVybiBpb3N0cmVhbXM6Om91dHB1dF9zZXF1ZW5jZSh0aGlzLT5jb21wb25lbnQoKSk7IH0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHJlc3RyaWN0ZWRfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotcmVzdHJpY3RlZF9maWx0ZXI8RmlsdGVyPjo6cmVzdHJpY3RlZF9maWx0ZXIKLSAgICAoY29uc3QgRmlsdGVyJiBmbHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbikKLSAgICA6IGZpbHRlcl9hZGFwdGVyPEZpbHRlcj4oZmx0KSwgYmVnXyhvZmYpLAotICAgICAgcG9zXyhvZmYpLCBlbmRfKGxlbiAhPSAtMSA/IG9mZiArIGxlbiA6IC0xKSwgb3Blbl8oZmFsc2UpCi17Ci0gICAgaWYgKGxlbiA8IC0xIHx8IG9mZiA8IDApCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCBvZmZzZXQiKSk7Ci19Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiByZXN0cmljdC9zbGljZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgd29ya2Fyb3VuZHMgYXJlIHBhdHRlcm5lZCBhZnRlciByZXNvbHZlLmhwcC4gSXQgaGFzIG5vdAotLy8geWV0IGJlZW4gY29uZmlybWVkIHRoYXQgdGhleSBhcmUgbmVjZXNzYXJ5LgotCi0jIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotIyAgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKCBjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkgKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLXJlc3RyaWN0aW9uPCBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjxDaCwgVHI+ID4KLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCggc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiYgc2IsIHN0cmVhbV9vZmZzZXQgb2ZmLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBsZW4gPSAtMSApCi17IHJldHVybiByZXN0cmljdGlvbjwgc3RkOjpiYXNpY19zdHJlYW1idWY8Q2gsIFRyPiA+KHNiLCBvZmYsIGxlbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyPgotcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4KLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6OmJhc2ljX2lzdHJlYW08Q2gsIFRyPiYgaXMsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfaXN0cmVhbTxDaCwgVHI+ID4oaXMsIG9mZiwgbGVuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1yZXN0cmljdGlvbjwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6YmFzaWNfb3N0cmVhbTxDaCwgVHI+JiBvcywgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEpCi17IHJldHVybiByZXN0cmljdGlvbjwgc3RkOjpiYXNpY19vc3RyZWFtPENoLCBUcj4gPihvcywgb2ZmLCBsZW4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUcj4KLXJlc3RyaWN0aW9uPCBzdGQ6OmJhc2ljX2lvc3RyZWFtPENoLCBUcj4gPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUCi0gICAgKHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiYgaW8sIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248IHN0ZDo6YmFzaWNfaW9zdHJlYW08Q2gsIFRyPiA+KGlvLCBvZmYsIGxlbik7IH0KLQotIyAgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXJlc3RyaWN0aW9uPFQ+IAotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKCBjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRElTQUJMRV9JRl9TVFJFQU0oVCkgKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLXJlc3RyaWN0aW9uPHN0ZDo6c3RyZWFtYnVmPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6OnN0cmVhbWJ1ZiYgc2IsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248c3RkOjpzdHJlYW1idWY+KHNiLCBvZmYsIGxlbik7IH0KLQotcmVzdHJpY3Rpb248c3RkOjppc3RyZWFtPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6OmlzdHJlYW08Q2gsIFRyPiYgaXMsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248c3RkOjppc3RyZWFtPihpcywgb2ZmLCBsZW4pOyB9Ci0KLXJlc3RyaWN0aW9uPHN0ZDo6b3N0cmVhbT4gCi1ORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QKLSAgICAoc3RkOjpvc3RyZWFtPENoLCBUcj4mIG9zLCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMSkKLXsgcmV0dXJuIHJlc3RyaWN0aW9uPHN0ZDo6b3N0cmVhbT4ob3MsIG9mZiwgbGVuKTsgfQotCi1yZXN0cmljdGlvbjxzdGQ6Omlvc3RyZWFtPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChzdGQ6Omlvc3RyZWFtPENoLCBUcj4mIGlvLCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4gPSAtMSkKLXsgcmV0dXJuIHJlc3RyaWN0aW9uPHN0ZDo6aW9zdHJlYW0+KGlvLCBvZmYsIGxlbik7IH0KLQotIyAgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTiAvLy0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4sIG1wbDo6dHJ1ZV8pCi17ICAgLy8gQmFkIG92ZXJsb2FkIHJlc29sdXRpb24uCi0gICAgcmV0dXJuIHJlc3RyaWN0aW9uPFQ+KGNvbnN0X2Nhc3Q8VCY+KHQsIG9mZiwgbGVuKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotICAgIChjb25zdCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwgc3RyZWFtX29mZnNldCBsZW4sIG1wbDo6ZmFsc2VfKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPiAKLU5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCggY29uc3QgVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsIHN0cmVhbV9vZmZzZXQgbGVuID0gLTEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpICkKLXsgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVCh0LCBvZmYsIGxlbiwgaXNfc3RkX2lvPFQ+KCkpOyB9Ci0KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiBcCi0gICAgICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICYmIFwKLSAgICAgIWRlZmluZWQoX19HTlVDX18pIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1yZXN0cmljdGlvbjxUPgotTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUKFQmIHQsIHN0cmVhbV9vZmZzZXQgb2ZmLCBzdHJlYW1fb2Zmc2V0IGxlbiA9IC0xKQoteyByZXR1cm4gcmVzdHJpY3Rpb248VD4odCwgb2ZmLCBsZW4pOyB9Ci0KLSMgIGVuZGlmIC8vIEJvcmxhbmQgNS54LCBWQzYtNy4wIG9yIEdDQyAyLjl4IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jIGVuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OIC8vLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZiAhZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSU1QTF9IUFBfSU5DTFVERUQpIC4uLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA3NTNmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgbWV0YWZ1bmN0aW9uIHNlbGVjdCwgd2hpY2ggbWltaWNzIHRoZSBlZmZlY3Qgb2YgYSBjaGFpbiBvZgotLy8gbmVzdGVkIG1wbCBpZl8ncy4KLS8vCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIFVzYWdlOgotLy8gICAgICAKLS8vIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0PAotLy8gICAgICAgICAgICAgICAgICAgICAgY2FzZTEsICB0eXBlMSwKLS8vICAgICAgICAgICAgICAgICAgICAgIGNhc2UyLCAgdHlwZTIsCi0vLyAgICAgICAgICAgICAgICAgICAgICAuLi4KLS8vICAgICAgICAgICAgICAgICAgICAgIHRydWVfLCAgdHlwZW4KLS8vICAgICAgICAgICAgICAgICAgPjo6dHlwZSBzZWxlY3Rpb247Ci0vLwotLy8gSGVyZSBjYXNlMSwgY2FzZTIsIC4uLiBhcmUgbW9kZWxzIG9mIE1QTDo6SW50ZWdyYWxDb25zdGFudCB3aXRoIHZhbHVlIHR5cGUKLS8vIGJvb2wsIGFuZCBuIDw9IDEyLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TRUxFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TRUxFQ1RfSFBQX0lOQ0xVREVEICAgCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgICAgIAotIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgCi0KLXR5cGVkZWYgbXBsOjp0cnVlXyBlbHNlXzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIENhc2UxID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlMSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTIgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGUyID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlMyA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTMgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2U0ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlNCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTUgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGU1ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlNiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTYgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2U3ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlNyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTggPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGU4ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlOSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTkgPSBtcGw6OnZvaWRfLAotICAgICAgICAgIHR5cGVuYW1lIENhc2UxMCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgdHlwZW5hbWUgVHlwZTEwID0gbXBsOjp2b2lkXywKLSAgICAgICAgICB0eXBlbmFtZSBDYXNlMTEgPSBtcGw6OnRydWVfLAotICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgdHlwZW5hbWUgQ2FzZTEyID0gbXBsOjp0cnVlXywKLSAgICAgICAgICB0eXBlbmFtZSBUeXBlMTIgPSBtcGw6OnZvaWRfID4KLXN0cnVjdCBzZWxlY3QgewotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMSwgbXBsOjppZGVudGl0eTxUeXBlMT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMiwgbXBsOjppZGVudGl0eTxUeXBlMj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMywgbXBsOjppZGVudGl0eTxUeXBlMz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNCwgbXBsOjppZGVudGl0eTxUeXBlND4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNSwgbXBsOjppZGVudGl0eTxUeXBlNT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNiwgbXBsOjppZGVudGl0eTxUeXBlNj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlNywgbXBsOjppZGVudGl0eTxUeXBlNz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlOCwgbXBsOjppZGVudGl0eTxUeXBlOD4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlOSwgbXBsOjppZGVudGl0eTxUeXBlOT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBDYXNlMTAsIG1wbDo6aWRlbnRpdHk8VHlwZTEwPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIENhc2UxMSwgbXBsOjppZGVudGl0eTxUeXBlMTE+LCBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBDYXNlMTIsIFR5cGUxMiwgbXBsOjp2b2lkXyA+ID4gPiA+ID4gPiA+ID4gPiA+ID4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU0VMRUNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdF9ieV9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3RfYnlfc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMDI3NzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdF9ieV9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNC0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8KLS8vIEludGVuZGVkIGFzIGFuIGFsdGVybmF0aXZlIHRvIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBhbmQgdHlwZV90cmFpdHM6Om5vX3R5cGUuCi0vLyBQcm92aWRlcyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHR5cGVzIChjYXNlXzwwPiwgY2FzZV88MT4sIC4uLikgZm9yCi0vLyBkZXRlcm1pbmluZyB0aGUgcmVzdWx0cyBvZiBvdmVybG9hZCByZXN1bHRpb24gdXNpbmcgJ3NpemVvZicsIHBsdXMgYSB1bmlmb3JtCi0vLyBtZWFucyBvZiB1c2luZyB0aGUgcmVzdWx0LiB5ZXNfdHlwZSBhbmQgbm9fdHlwZSBhcmUgdHlwZWRlZnMgZm9yIGNhc2VfPDE+Ci0vLyBhbmQgY2FzZV88MD4uIEEgc2luZ2xlIGNhc2Ugd2l0aCBuZWdhdGl2ZSBhcmd1bWVudCwgY2FzZV88LTE+LCBpcyBhbHNvIAotLy8gcHJvdmlkZWQsIGZvciBjb252ZW5pZW5jZS4KLS8vCi0vLyBUaGlzIGhlYWRlciBtYXkgYmUgaW5jbHVkZWQgYW55IG51bWJlciBvZiB0aW1lcywgd2l0aAotLy8gTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UgZGVmaW5lZCB0byBiZSB0aGUgbGFyZ2VzdCBOIHN1Y2ggdGhhdCBjYXNlXzxOPgotLy8gaXMgbmVlZGVkIGZvciBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24uIEl0IGRlZmF1bHRzIHRvIDIwLgotLy8KLS8vIFRoaXMgaGVhZGVyIGRlcGVuZHMgb25seSBvbiBCb29zdC5Db25maWcgYW5kIEJvb3N0LlByZXByb2Nlc3Nvci4gRGVwZW5kZW5jZQotLy8gb24gVHlwZSBUcmFpdHMgb3IgTVBMIHdhcyBpbnRlbnRpb25hbGx5IGF2b2lkZWQsIHRvIGxlYXZlIG9wZW4gdGhlIAotLy8gcG9zc2liaWxpdHkgdGhhdCBzZWxlY3RfYnlfc2l6ZSBjb3VsZCBiZSB1c2VkIGJ5IHRoZXNlIGxpYnJhcmllcy4KLS8vCi0vLyBFeGFtcGxlIHVzYWdlOgotLy8KLS8vICAgICNkZWZpbmUgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UgNyAgIC8vIChOZWVkZWQgd2hlbiBkZWZhdWx0IHdhcyAyKQotLy8gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvc2VsZWN0X2J5X3NpemUuaHBwPgotLy8KLS8vICAgIHVzaW5nIG5hbWVzcGFjZSBuZG5ib29zdDo6dXRpbGl0eTsKLS8vCi0vLyAgICBjYXNlXzwwPiBoZWxwZXIoYm9vbCk7Ci0vLyAgICBjYXNlXzwxPiBoZWxwZXIoaW50KTsKLS8vICAgIGNhc2VfPDI+IGhlbHBlcih1bnNpZ25lZCk7Ci0vLyAgICBjYXNlXzwzPiBoZWxwZXIobG9uZyk7Ci0vLyAgICBjYXNlXzw0PiBoZWxwZXIodW5zaWduZWQgbG9uZyk7Ci0vLyAgICBjYXNlXzw1PiBoZWxwZXIoZmxvYXQpOwotLy8gICAgY2FzZV88Nj4gaGVscGVyKGRvdWJsZSk7Ci0vLyAgICBjYXNlXzw3PiBoZWxwZXIoY29uc3QgY2hhciopOwotLy8KLS8vICAgIHN0cnVjdCB0ZXN0IHsKLS8vICAgICAgICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0KLS8vICAgICAgICAgICAgc2VsZWN0X2J5X3NpemU8IHNpemVvZihoZWxwZXIoOTg3NlVMKSkgPjo6dmFsdWU7Ci0vLyAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCh2YWx1ZSA9PSA0KTsKLS8vICAgIH07Ci0vLwotLy8gRm9yIGNvbXBpbGVycyB3aXRoIGludGVncmFsIGNvbnN0YW50IGV4cHJlc3Npb24gcHJvYmxlbXMsIGUuZy4gQm9ybGFuZCA1LngsCi0vLyBvbmUgY2FuIGFsc28gd3JpdGUKLS8vCi0vLyAgICBzdHJ1Y3QgdGVzdCB7Ci0vLyAgICAgICAgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkUoaW50LCB2YWx1ZSwgaGVscGVyKDk4NzZVTCkpOwotLy8gICAgfTsKLS8vCi0vLyB0byBkZWZpbmUgYSBzdGF0aWMgaW50ZWdyYWwgY29uc3RhbnQgJ3ZhbHVlJyBlcXVhbCB0bwotLy8KLS8vICAgIHNlbGVjdF9ieV9zaXplPCBzaXplb2YoaGVscGVyKDk4NzZVTCkpID46OnZhbHVlLgotLy8KLQotLy8gSW5jbHVkZSBndWFyZHMgc3Vycm91bmQgYWxsIGNvbnRlbnRzIG9mIHRoaXMgaGVhZGVyIGV4Y2VwdCBmb3IgZXhwbGljaXQKLS8vIHNwZWNpYWxpemF0aW9ucyBvZiBzZWxlY3RfYnlfc2l6ZSBmb3IgY2FzZV88Tj4gd2l0aCBOID4gMi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NFTEVDVF9CWV9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NFTEVDVF9CWV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBUaGUgbG93ZXN0IE4gZm9yIHdoaWNoIHNlbGVjdF9ieV9zaXplPCBzaXplb2YoY2FzZV88Tj4pID4gaGFzIG5vdCBiZWVuCi0vLyBzcGVjaWFsaXplZC4KLSNkZWZpbmUgU0VMRUNUX0JZX1NJWkVfTUFYX1NQRUNJQUxJWkVEIDIwCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAvLyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0KLS8qIEFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHVzaW5nIG1heF9hbGlnbi4gCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdXRpbGl0eSB7Ci0KLXRlbXBsYXRlPGludCBOPgotc3RydWN0IGNhc2VfIHsgY2hhciBjWyhOICsgMSkgKiBhbGlnbm1lbnRfb2Y8ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZV07IH07Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIFNpemU+Ci1zdHJ1Y3Qgc2VsZWN0X2J5X3NpemUgewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gCi0gICAgICAgIChTaXplIC8gYWxpZ25tZW50X29mPGRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgLSAxKSk7Ci19OwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgdXRpbGl0eSwgYm9vc3QuCi0KLSovICAgICAgICAgICAgICAvLyBFbmQgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNhc2VfLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgY2FzZV8geyBjaGFyIGMxOyBjYXNlXzxOIC0gMT4gYzI7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBjYXNlXzwtMT4geyBjaGFyIGM7IH07Ci10eXBlZGVmIGNhc2VfPHRydWU+IHllc190eXBlOwotdHlwZWRlZiBjYXNlXzxmYWxzZT4gbm9fdHlwZTsKLQotLy8tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9uIG9mIHNlbGVjdF9ieV9zaXplLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dW5zaWduZWQgU2l6ZT4gc3RydWN0IHNlbGVjdF9ieV9zaXplOwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIFNFTEVDVF9CWV9TSVpFX1NQRUMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFNlcGVjaWFsaXplcyBzZWxlY3RfYnlfc2l6ZSBmb3Igc2l6ZW9mKGNhc2U8bi0xPikuIFRoZSBkZWNyZW1lbnQgaXMgdXNlZAotLy8gaGVyZSBiZWNhdXNlIHRoZSBwcmVwcm9jZXNzb3IgbGlicmFyeSBkb2Vzbid0IGhhbmRsZSBuZWdhdGl2ZSBpbnRlZ2Vycy4KLSNkZWZpbmUgU0VMRUNUX0JZX1NJWkVfU1BFQyhuKSBcCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgeyBcCi0gICAgICBzdGF0aWMgY29uc3QgaW50IE5ETkJPT1NUX1BQX0NBVChzaXplb2ZfY2FzZV8sIG4pID0gc2l6ZW9mKGNhc2VfPG4gLSAxPik7IFwKLSAgICAgIHRlbXBsYXRlPD4gXAotICAgICAgc3RydWN0IHNlbGVjdF9ieV9zaXplPCBORE5CT09TVF9QUF9DQVQoc2l6ZW9mX2Nhc2VfLCBuKSA+IHsgXAotICAgICAgICAgIHN0cnVjdCB0eXBlIHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBuIC0gMSk7IH07IFwKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IHR5cGU6OnZhbHVlKTsgXAotICAgICAgfTsgXAotICAgIH0gfSB9IFwKLSAgICAvKiovCi0KLS8vLS0tLS0tLS0tLS0tLS1EZWZhdWx0IHNwZWNpYWxpemF0aW9ucyBvZiBzZWxlY3RfYnlfc2l6ZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgU0VMRUNUX0JZX1NJWkVfU1BFQyhuKQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDAsIDIwKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0jdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8KLQotLy8tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgU0VMRUNUX0JZX1NJWkUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9TRUxFQ1RfQllfU0laRSh0eXBlXywgbmFtZSwgZXhwcikgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggXAotICAgICAgICB1bnNpZ25lZCwgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoYm9vc3Rfc2VsZWN0X2J5X3NpemVfdGVtcF8sIG5hbWUpID0gc2l6ZW9mKGV4cHIpIFwKLSAgICApOyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBcCi0gICAgICAgIHR5cGVfLCBcCi0gICAgICAgIG5hbWUgPSBcCi0gICAgICAgICAgICAoIDo6bmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpzZWxlY3RfYnlfc2l6ZTwgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChib29zdF9zZWxlY3RfYnlfc2l6ZV90ZW1wXywgbmFtZSkgXAotICAgICAgICAgICAgICA+Ojp2YWx1ZSApIFwKLSAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU0VMRUNUX0JZX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vLS0tLS0tLS0tLVNwZWNpYWxpemF0aW9ucyBvZiBTRUxFQ1RfQllfU0laRSAob3V0c2lkZSBtYWluIGluY2x1ZWQgZ3VhcmRzKS0tLS8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NFTEVDVF9CWV9TSVpFX01BWF9DQVNFKSAmJiBcCi0gICAgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UgPiBTRUxFQ1RfQllfU0laRV9NQVhfU1BFQ0lBTElaRUQKLQotI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyhuKSBTRUxFQ1RfQllfU0laRV9TUEVDKG4pCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyBcCi0gICAgKFNFTEVDVF9CWV9TSVpFX01BWF9TUEVDSUFMSVpFRCwgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UpIFwKLSAgICAvKiovCi0jaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSN1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwotI3VuZGVmIFNFTEVDVF9CWV9TSVpFX01BWF9TUEVDSUFMSVpFRAotI2RlZmluZSBTRUxFQ1RfQllfU0laRV9NQVhfU1BFQ0lBTElaRUQgTkROQk9PU1RfU0VMRUNUX0JZX1NJWkVfTUFYX0NBU0UKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDk5MzMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotIyBpbmNsdWRlIDxzdHJlYW1idWY+Ci0jZWxzZSAKLSMgaW5jbHVkZSA8c3RyZWFtYnVmLmg+Ci0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19TVFJFQU1CVUYoY2gsIHRyKSBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZjwgY2gsIHRyID4KLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DIHB1YnN5bmMKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLT0ZGIHB1YnNlZWtvZmYKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLUE9TIHB1YnNlZWtwb3MKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKGNoLCB0cikgc3RkOjpzdHJlYW1idWYKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DIHN5bmMKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLT0ZGIHNlZWtvZmYKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVUJTRUVLUE9TIHNlZWtwb3MKLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvY2hhaW5idWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9jaGFpbmJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1N2I4NTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9jaGFpbmJ1Zi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTkJVRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTkJVRl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQywgdGVtcGxhdGUgZnJpZW5kcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYWluLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FjY2Vzc19jb250cm9sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RyYW5zbGF0ZV9pbnRfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uY29weWFibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNoYWluYnVmLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBjaGFpbmJ1Zi4KLS8vIERlc2NyaXB0aW9uOiBTdHJlYW0gYnVmZmVyIHdoaWNoIG9wZXJhdGVzIGJ5IGRlbGVnYXRpbmcgdG8gdGhlIGZpcnN0Ci0vLyAgICAgIGxpbmtlZF9zdHJlYW1idWYgaW4gYSBjaGFpbi4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIENoYWluIC0gVGhlIGNoYWluIHR5cGUuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4sIHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIEFjY2Vzcz4KLWNsYXNzIGNoYWluYnVmCi0gICAgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRigKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OmNoYXJfdHlwZSwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OnRyYWl0c190eXBlCi0gICAgICAgICAgICAgKSwKLSAgICAgIHB1YmxpYyBhY2Nlc3NfY29udHJvbDx0eXBlbmFtZSBDaGFpbjo6Y2xpZW50X3R5cGUsIEFjY2Vzcz4sCi0gICAgICBwcml2YXRlIG5vbmNvcHlhYmxlCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYWNjZXNzX2NvbnRyb2w8Y2hhaW5fY2xpZW50PENoYWluPiwgQWNjZXNzPiAgICAgIGNsaWVudF90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2hhaW46OmNoYXJfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKHR5cGVuYW1lIENoYWluOjp0cmFpdHNfdHlwZSkKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIGxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gICAgICAgICBkZWxlZ2F0ZV90eXBlOwotICAgIGNoYWluYnVmKCkgeyBjbGllbnRfdHlwZTo6c2V0X2NoYWluKCZjaGFpbl8pOyB9Ci0gICAgaW50X3R5cGUgdW5kZXJmbG93KCkgCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiB0cmFuc2xhdGUoZGVsZWdhdGUoKS51bmRlcmZsb3coKSk7IH0KLSAgICBpbnRfdHlwZSBwYmFja2ZhaWwoaW50X3R5cGUgYykKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIHRyYW5zbGF0ZShkZWxlZ2F0ZSgpLnBiYWNrZmFpbChjKSk7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgeHNnZXRuKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiBkZWxlZ2F0ZSgpLnhzZ2V0bihzLCBuKTsgfQotICAgIGludF90eXBlIG92ZXJmbG93KGludF90eXBlIGMpCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiB0cmFuc2xhdGUoZGVsZWdhdGUoKS5vdmVyZmxvdyhjKSk7IH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsgc2VudHJ5IHQodGhpcyk7IHJldHVybiBkZWxlZ2F0ZSgpLnhzcHV0bihzLCBuKTsgfQotICAgIGludCBzeW5jKCkgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIGRlbGVnYXRlKCkuc3luYygpOyB9Ci0gICAgcG9zX3R5cGUgc2Vla29mZiggb2ZmX3R5cGUgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPQotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgICAgICB7IHNlbnRyeSB0KHRoaXMpOyByZXR1cm4gZGVsZWdhdGUoKS5zZWVrb2ZmKG9mZiwgd2F5LCB3aGljaCk7IH0KLSAgICBwb3NfdHlwZSBzZWVrcG9zKCBwb3NfdHlwZSBzcCwKLSAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICAgICAgeyBzZW50cnkgdCh0aGlzKTsgcmV0dXJuIGRlbGVnYXRlKCkuc2Vla3BvcyhzcCwgd2hpY2gpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6Y2hhcl90eXBlLAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6dHJhaXRzX3R5cGUKLSAgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU7Ci0vLyNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS8vICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VU0lOR19QUk9URUNURURfU1RSRUFNQlVGX01FTUJFUlMoYmFzZV90eXBlKQotLy8jZW5kaWYKLXByaXZhdGU6Ci0KLSAgICAvLyBUcmFuc2xhdGUgZnJvbSBzdGQgaW50X3R5cGUgdG8gY2hhaW4ncyBpbnRfdHlwZS4KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpICAgICAgICAgICBzdGRfdHJhaXRzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2hhaW46OnRyYWl0c190eXBlICAgICAgICAgICAgICAgICAgICAgIGNoYWluX3RyYWl0czsKLSAgICBzdGF0aWMgdHlwZW5hbWUgY2hhaW5fdHJhaXRzOjppbnRfdHlwZSAKLSAgICB0cmFuc2xhdGUodHlwZW5hbWUgc3RkX3RyYWl0czo6aW50X3R5cGUgYykKLSAgICAgICAgeyByZXR1cm4gdHJhbnNsYXRlX2ludF90eXBlPHN0ZF90cmFpdHMsIGNoYWluX3RyYWl0cz4oYyk7IH0KLQotICAgIGRlbGVnYXRlX3R5cGUmIGRlbGVnYXRlKCkgCi0gICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGRlbGVnYXRlX3R5cGUmPihjaGFpbl8uZnJvbnQoKSk7IH0KLSAgICB2b2lkIGdldF9wb2ludGVycygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPnNldGcoZGVsZWdhdGUoKS5lYmFjaygpLCBkZWxlZ2F0ZSgpLmdwdHIoKSwgZGVsZWdhdGUoKS5lZ3B0cigpKTsKLSAgICAgICAgICAgIHRoaXMtPnNldHAoZGVsZWdhdGUoKS5wYmFzZSgpLCBkZWxlZ2F0ZSgpLmVwcHRyKCkpOwotICAgICAgICAgICAgdGhpcy0+cGJ1bXAoKGludCkgKGRlbGVnYXRlKCkucHB0cigpIC0gZGVsZWdhdGUoKS5wYmFzZSgpKSk7Ci0gICAgICAgIH0KLSAgICB2b2lkIHNldF9wb2ludGVycygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGVnYXRlKCkuc2V0Zyh0aGlzLT5lYmFjaygpLCB0aGlzLT5ncHRyKCksIHRoaXMtPmVncHRyKCkpOwotICAgICAgICAgICAgZGVsZWdhdGUoKS5zZXRwKHRoaXMtPnBiYXNlKCksIHRoaXMtPmVwcHRyKCkpOwotICAgICAgICAgICAgZGVsZWdhdGUoKS5wYnVtcCgoaW50KSAodGhpcy0+cHB0cigpIC0gdGhpcy0+cGJhc2UoKSkpOwotICAgICAgICB9Ci0gICAgc3RydWN0IHNlbnRyeSB7Ci0gICAgICAgIHNlbnRyeShjaGFpbmJ1ZjxDaGFpbiwgTW9kZSwgQWNjZXNzPiogYnVmKSA6IGJ1Zl8oYnVmKQotICAgICAgICAgICAgeyBidWZfLT5zZXRfcG9pbnRlcnMoKTsgfQotICAgICAgICB+c2VudHJ5KCkgeyBidWZfLT5nZXRfcG9pbnRlcnMoKTsgfQotICAgICAgICBjaGFpbmJ1ZjxDaGFpbiwgTW9kZSwgQWNjZXNzPiogYnVmXzsKLSAgICB9OwotICAgIGZyaWVuZCBzdHJ1Y3Qgc2VudHJ5OwotICAgIENoYWluIGNoYWluXzsKLX07Ci0KLX0gfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGRldGFpbCwgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9DSEFJTkJVRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvZGlyZWN0X3N0cmVhbWJ1Zi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2RpcmVjdF9zdHJlYW1idWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzc5NjA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvZGlyZWN0X3N0cmVhbWJ1Zi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9ESVJFQ1RfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSwgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+ICAvLyBtZW1iZXIgdGVtcGxhdGUgZnJpZW5kcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXJyb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9vcHRpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2xpbmtlZF9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgCi0gICAgCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPSAKLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAKLSAgICAgICAgICAgICAgKSA+Ci1jbGFzcyBkaXJlY3Rfc3RyZWFtYnVmIAotICAgIDogcHVibGljIGxpbmtlZF9zdHJlYW1idWY8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUsIFRyPgotewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gICAgICBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSAgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfU1RSRUFNQlVGKAotICAgICAgICAgICAgICAgIGNoYXJfdHlwZSwgdHJhaXRzX3R5cGUKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1idWZfdHlwZTsKLXB1YmxpYzogLy8gc3RyZWFtIG5lZWRzIGFjY2Vzcy4KLSAgICB2b2lkIG9wZW4oY29uc3QgVCYgdCwgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplLCAKLSAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIHBiYWNrX3NpemUpOwotICAgIGJvb2wgaXNfb3BlbigpIGNvbnN0OwotICAgIHZvaWQgY2xvc2UoKTsKLSAgICBib29sIGF1dG9fY2xvc2UoKSBjb25zdCB7IHJldHVybiBhdXRvX2Nsb3NlXzsgfQotICAgIHZvaWQgc2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSkgeyBhdXRvX2Nsb3NlXyA9IGNsb3NlOyB9Ci0gICAgYm9vbCBzdHJpY3Rfc3luYygpIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIC8vIERlY2xhcmVkIGluIGxpbmtlZF9zdHJlYW1idWYuCi0gICAgVCogY29tcG9uZW50KCkgeyByZXR1cm4gc3RvcmFnZV8uZ2V0KCk7IH0KLXByb3RlY3RlZDoKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMikKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfVVNJTkdfUFJPVEVDVEVEX1NUUkVBTUJVRl9NRU1CRVJTKGJhc2VfdHlwZSkKLSNlbmRpZgotICAgIGRpcmVjdF9zdHJlYW1idWYoKTsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS1WaXJ0dWFsIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vIERlY2xhcmVkIGluIGxpbmtlZF9zdHJlYW1idWYuCi0gICAgdm9pZCBjbG9zZV9pbXBsKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSk7Ci0gICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZWlkKFQpOyB9Ci0gICAgdm9pZCogY29tcG9uZW50X2ltcGwoKSB7IHJldHVybiBjb21wb25lbnQoKTsgfSAKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUwotICAgIHB1YmxpYzoKLSNlbmRpZgotCi0gICAgLy8gRGVjbGFyZWQgaW4gYmFzaWNfc3RyZWFtYnVmLgotICAgIGludF90eXBlIHVuZGVyZmxvdygpOwotICAgIGludF90eXBlIHBiYWNrZmFpbChpbnRfdHlwZSBjKTsKLSAgICBpbnRfdHlwZSBvdmVyZmxvdyhpbnRfdHlwZSBjKTsKLSAgICBwb3NfdHlwZSBzZWVrb2ZmKCBvZmZfdHlwZSBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApOwotICAgIHBvc190eXBlIHNlZWtwb3MocG9zX3R5cGUgc3AsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpOwotcHJpdmF0ZToKLSAgICBwb3NfdHlwZSBzZWVrX2ltcGwoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApOwotICAgIHZvaWQgaW5pdF9pbnB1dChhbnlfdGFnKSB7IH0KLSAgICB2b2lkIGluaXRfaW5wdXQoaW5wdXQpOwotICAgIHZvaWQgaW5pdF9vdXRwdXQoYW55X3RhZykgeyB9Ci0gICAgdm9pZCBpbml0X291dHB1dChvdXRwdXQpOwotICAgIHZvaWQgaW5pdF9nZXRfYXJlYSgpOwotICAgIHZvaWQgaW5pdF9wdXRfYXJlYSgpOwotICAgIGJvb2wgb25lX2hlYWQoKSBjb25zdDsKLSAgICBib29sIHR3b19oZWFkKCkgY29uc3Q7Ci0gICAgb3B0aW9uYWw8VD4gIHN0b3JhZ2VfOwotICAgIGNoYXJfdHlwZSAgICppYmVnXywgKmllbmRfLCAqb2JlZ18sICpvZW5kXzsKLSAgICBib29sICAgICAgICAgYXV0b19jbG9zZV87Ci19OwotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZGlyZWN0X3N0cmVhbWJ1Zi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmRpcmVjdF9zdHJlYW1idWYoKSAKLSAgICA6IGliZWdfKDApLCBpZW5kXygwKSwgb2JlZ18oMCksIG9lbmRfKDApLCBhdXRvX2Nsb3NlXyh0cnVlKSAKLXsgdGhpcy0+c2V0X3RydWVfZW9mKHRydWUpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6b3BlbgotICAgIChjb25zdCBUJiB0LCBzdGQ6OnN0cmVhbXNpemUsIHN0ZDo6c3RyZWFtc2l6ZSkKLXsKLSAgICBzdG9yYWdlXy5yZXNldCh0KTsKLSAgICBpbml0X2lucHV0KGNhdGVnb3J5KCkpOwotICAgIGluaXRfb3V0cHV0KGNhdGVnb3J5KCkpOwotICAgIHNldGcoMCwgMCwgMCk7Ci0gICAgc2V0cCgwLCAwKTsKLSAgICB0aGlzLT5zZXRfbmVlZHNfY2xvc2UoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci1ib29sIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojppc19vcGVuKCkgY29uc3QgCi17IHJldHVybiBpYmVnXyAhPSAwIHx8IG9iZWdfICE9IDA7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpjbG9zZSgpIAoteyAKLSAgICBiYXNlX3R5cGUqIHNlbGYgPSB0aGlzOwotICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnNlbGYsIE5ETkJPT1NUX0lPUzo6aW4pLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnNlbGYsIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmNhbGxfcmVzZXQoc3RvcmFnZV8pICk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdHlwZW5hbWUgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OmludF90eXBlIAotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnVuZGVyZmxvdygpCi17Ci0gICAgaWYgKCFpYmVnXykgCi0gICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oY2FudF9yZWFkKCkpOwotICAgIGlmICghZ3B0cigpKSAKLSAgICAgICAgaW5pdF9nZXRfYXJlYSgpOwotICAgIHJldHVybiBncHRyKCkgIT0gaWVuZF8gPyAKLSAgICAgICAgdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCpncHRyKCkpIDogCi0gICAgICAgIHRyYWl0c190eXBlOjplb2YoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci10eXBlbmFtZSBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW50X3R5cGUgCi1kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6cGJhY2tmYWlsKGludF90eXBlIGMpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBpZiAoIWliZWdfKSAKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihjYW50X3JlYWQoKSk7Ci0gICAgaWYgKGdwdHIoKSAhPSAwICYmIGdwdHIoKSAhPSBpYmVnXykgewotICAgICAgICBnYnVtcCgtMSk7Ci0gICAgICAgIGlmICghdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKGMsIHRyYWl0c190eXBlOjplb2YoKSkpCi0gICAgICAgICAgICAqZ3B0cigpID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShjKTsKLSAgICAgICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKGMpOwotICAgIH0KLSAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9wdXRiYWNrKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLXR5cGVuYW1lIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjppbnRfdHlwZSAKLWRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpvdmVyZmxvdyhpbnRfdHlwZSBjKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgaWYgKCFvYmVnXykKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgibm8gd3JpdGUgYWNjZXNzIikpOwotICAgIGlmICghcHB0cigpKSBpbml0X3B1dF9hcmVhKCk7Ci0gICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoYywgdHJhaXRzX3R5cGU6OmVvZigpKSkgewotICAgICAgICBpZiAocHB0cigpID09IG9lbmRfKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgid3JpdGUgYXJlYSBleGhhdXN0ZWQiKQotICAgICAgICAgICAgKTsKLSAgICAgICAgKnBwdHIoKSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgIHBidW1wKDEpOwotICAgICAgICByZXR1cm4gYzsKLSAgICB9Ci0gICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKGMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcj4KLWlubGluZSB0eXBlbmFtZSBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6cG9zX3R5cGUKLWRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpzZWVrb2ZmCi0gICAgKG9mZl90eXBlIG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgcmV0dXJuIHNlZWtfaW1wbChvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotaW5saW5lIHR5cGVuYW1lIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojpwb3NfdHlwZQotZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnNlZWtwb3MKLSAgICAocG9zX3R5cGUgc3AsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17IAotICAgIHJldHVybiBzZWVrX2ltcGwocG9zaXRpb25fdG9fb2Zmc2V0KHNwKSwgTkROQk9PU1RfSU9TOjpiZWcsIHdoaWNoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpjbG9zZV9pbXBsKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4gJiYgaWJlZ18gIT0gMCkgewotICAgICAgICBzZXRnKDAsIDAsIDApOwotICAgICAgICBpYmVnXyA9IGllbmRfID0gMDsKLSAgICB9Ci0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0ICYmIG9iZWdfICE9IDApIHsKLSAgICAgICAgc3luYygpOwotICAgICAgICBzZXRwKDAsIDApOwotICAgICAgICBvYmVnXyA9IG9lbmRfID0gMDsKLSAgICB9Ci0gICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2xvc2UoKnN0b3JhZ2VfLCB3aGljaCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdHlwZW5hbWUgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnBvc190eXBlIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+OjpzZWVrX2ltcGwKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIGJvdGggPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQ7Ci0gICAgaWYgKHR3b19oZWFkKCkgJiYgKHdoaWNoICYgYm90aCkgPT0gYm90aCkKLSAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICBzdHJlYW1fb2Zmc2V0IHJlc3VsdCA9IC0xOwotICAgIGJvb2wgb25lID0gb25lX2hlYWQoKTsKLSAgICBpZiAob25lICYmIChwcHRyKCkgIT0gMCB8fCBncHRyKCk9PSAwKSkKLSAgICAgICAgaW5pdF9nZXRfYXJlYSgpOyAvLyBTd2l0Y2ggdG8gaW5wdXQgbW9kZSwgZm9yIGNvZGUgcmV1c2UuCi0gICAgaWYgKG9uZSB8fCAoKHdoaWNoICYgTkROQk9PU1RfSU9TOjppbikgIT0gMCAmJiBpYmVnXyAhPSAwKSkgewotICAgICAgICBpZiAoIWdwdHIoKSkgc2V0ZyhpYmVnXywgaWJlZ18sIGllbmRfKTsKLSAgICAgICAgcHRyZGlmZl90IG5leHQgPSAwOwotICAgICAgICBzd2l0Y2ggKHdheSkgewotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6YmVnOiBuZXh0ID0gb2ZmOyBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9JT1M6OmN1cjogbmV4dCA9IChncHRyKCkgLSBpYmVnXykgKyBvZmY7IGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6ZW5kOiBuZXh0ID0gKGllbmRfIC0gaWJlZ18pICsgb2ZmOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXh0IDwgMCB8fCBuZXh0ID4gKGllbmRfIC0gaWJlZ18pKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgc2V0ZyhpYmVnXywgaWJlZ18gKyBuZXh0LCBpZW5kXyk7Ci0gICAgICAgIHJlc3VsdCA9IG5leHQ7Ci0gICAgfQotICAgIGlmICghb25lICYmICh3aGljaCAmIE5ETkJPT1NUX0lPUzo6b3V0KSAhPSAwICYmIG9iZWdfICE9IDApIHsKLSAgICAgICAgaWYgKCFwcHRyKCkpIHNldHAob2JlZ18sIG9lbmRfKTsKLSAgICAgICAgcHRyZGlmZl90IG5leHQgPSAwOwotICAgICAgICBzd2l0Y2ggKHdheSkgewotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6YmVnOiBuZXh0ID0gb2ZmOyBicmVhazsKLSAgICAgICAgY2FzZSBORE5CT09TVF9JT1M6OmN1cjogbmV4dCA9IChwcHRyKCkgLSBvYmVnXykgKyBvZmY7IGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX0lPUzo6ZW5kOiBuZXh0ID0gKG9lbmRfIC0gb2JlZ18pICsgb2ZmOyBicmVhazsKLSAgICAgICAgZGVmYXVsdDogTkROQk9PU1RfQVNTRVJUKDApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuZXh0IDwgMCB8fCBuZXh0ID4gKG9lbmRfIC0gb2JlZ18pKQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihiYWRfc2VlaygpKTsKLSAgICAgICAgcGJ1bXAoc3RhdGljX2Nhc3Q8aW50PihuZXh0IC0gKHBwdHIoKSAtIG9iZWdfKSkpOwotICAgICAgICByZXN1bHQgPSBuZXh0OwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0X3RvX3Bvc2l0aW9uKHJlc3VsdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW5pdF9pbnB1dChpbnB1dCkKLXsKLSAgICBzdGQ6OnBhaXI8Y2hhcl90eXBlKiwgY2hhcl90eXBlKj4gcCA9IGlucHV0X3NlcXVlbmNlKCpzdG9yYWdlXyk7Ci0gICAgaWJlZ18gPSBwLmZpcnN0OwotICAgIGllbmRfID0gcC5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW5pdF9vdXRwdXQob3V0cHV0KQotewotICAgIHN0ZDo6cGFpcjxjaGFyX3R5cGUqLCBjaGFyX3R5cGUqPiBwID0gb3V0cHV0X3NlcXVlbmNlKCpzdG9yYWdlXyk7Ci0gICAgb2JlZ18gPSBwLmZpcnN0OwotICAgIG9lbmRfID0gcC5zZWNvbmQ7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotdm9pZCBkaXJlY3Rfc3RyZWFtYnVmPFQsIFRyPjo6aW5pdF9nZXRfYXJlYSgpCi17Ci0gICAgc2V0ZyhpYmVnXywgaWJlZ18sIGllbmRfKTsKLSAgICBpZiAob25lX2hlYWQoKSAmJiBwcHRyKCkpIHsKLSAgICAgICAgZ2J1bXAoc3RhdGljX2Nhc3Q8aW50PihwcHRyKCkgLSBvYmVnXykpOwotICAgICAgICBzZXRwKDAsIDApOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHI+Ci12b2lkIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+Ojppbml0X3B1dF9hcmVhKCkKLXsKLSAgICBzZXRwKG9iZWdfLCBvZW5kXyk7Ci0gICAgaWYgKG9uZV9oZWFkKCkgJiYgZ3B0cigpKSB7Ci0gICAgICAgIHBidW1wKHN0YXRpY19jYXN0PGludD4oZ3B0cigpIC0gaWJlZ18pKTsKLSAgICAgICAgc2V0ZygwLCAwLCAwKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotaW5saW5lIGJvb2wgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46Om9uZV9oZWFkKCkgY29uc3QKLXsgcmV0dXJuIGliZWdfICYmIG9iZWdfICYmIGliZWdfID09IG9iZWdfOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotaW5saW5lIGJvb2wgZGlyZWN0X3N0cmVhbWJ1ZjxULCBUcj46OnR3b19oZWFkKCkgY29uc3QKLXsgcmV0dXJuIGliZWdfICYmIG9iZWdfICYmIGliZWdfICE9IG9iZWdfOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0RJUkVDVF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGlyZWN0X3N0cmVhbWJ1Zi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGlyZWN0X3N0cmVhbWJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NTdkZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9pbmRpcmVjdF9zdHJlYW1idWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gVGhpcyBtYXRlcmlhbCBpcyBoZWF2aWx5IGluZGVidGVkIHRvIHRoZSBkaXNjdXNzaW9uIGFuZCBjb2RlIHNhbXBsZXMgaW4KLS8vIEEuIExhbmdlciBhbmQgSy4gS3JlZnQsICJTdGFuZGFyZCBDKysgSU9TdHJlYW1zIGFuZCBMb2NhbGVzIiwKLS8vIEFkZGlzb24tV2VzbGV5LCAyMDAwLCBwcC4gMjI4LTQzLgotCi0vLyBVc2VyICJHTVNCIiBwcm92aWRlZCBhbiBvcHRpbWl6YXRpb24gZm9yIHNtYWxsIHNlZWtzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSU5ESVJFQ1RfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0lORElSRUNUX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbiwgbWF4LgotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgIC8vIE1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvY29uY2VwdF9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2RvdWJsZV9vYmplY3QuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2V4ZWN1dGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZnVuY3Rpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvb3B0aW9uYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvbGlua2VkX3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQywgQkNDIDUueAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vCi0vLyBEZXNjcmlwdGlvbjogVGhlIGltcGxlbWVudGF0aW9uIG9mIGJhc2ljX3N0cmVhbWJ1ZiB1c2VkIGJ5IGNoYWlucy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1jbGFzcyBpbmRpcmVjdF9zdHJlYW1idWYKLSAgICA6IHB1YmxpYyBsaW5rZWRfc3RyZWFtYnVmPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlLCBUcj4KLXsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMoVHIpCi1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIGNvbmNlcHRfYWRhcHRlcjxUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcjsKLSAgICB0eXBlZGVmIGRldGFpbDo6YmFzaWNfYnVmZmVyPGNoYXJfdHlwZSwgQWxsb2M+ICAgICAgICAgICAgYnVmZmVyX3R5cGU7Ci0gICAgdHlwZWRlZiBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPiAgICAgICAgICAgIG15X3R5cGU7Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gIGJhc2VfdHlwZTsKLSAgICB0eXBlZGVmIGxpbmtlZF9zdHJlYW1idWY8Y2hhcl90eXBlLCBUcj4gICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3R5cGU7Ci1wdWJsaWM6Ci0gICAgaW5kaXJlY3Rfc3RyZWFtYnVmKCk7Ci0KLSAgICB2b2lkIG9wZW4oY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSk7Ci0gICAgYm9vbCBpc19vcGVuKCkgY29uc3Q7Ci0gICAgdm9pZCBjbG9zZSgpOwotICAgIGJvb2wgYXV0b19jbG9zZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0X2F1dG9fY2xvc2UoYm9vbCBjbG9zZSk7Ci0gICAgYm9vbCBzdHJpY3Rfc3luYygpOwotCi0gICAgLy8gRGVjbGFyZWQgaW4gbGlua2VkX3N0cmVhbWJ1Zi4KLSAgICBUKiBjb21wb25lbnQoKSB7IHJldHVybiAmKm9iaigpOyB9Ci1wcm90ZWN0ZWQ6Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpCi0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1VTSU5HX1BST1RFQ1RFRF9TVFJFQU1CVUZfTUVNQkVSUyhiYXNlX3R5cGUpCi0jZW5kaWYKLQotICAgIC8vLS0tLS0tLS0tLXZpcnR1YWwgZnVuY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0gICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0gICAgcHVibGljOgotI2VuZGlmCi0gICAgaW50X3R5cGUgdW5kZXJmbG93KCk7Ci0gICAgaW50X3R5cGUgcGJhY2tmYWlsKGludF90eXBlIGMpOwotICAgIGludF90eXBlIG92ZXJmbG93KGludF90eXBlIGMpOwotICAgIGludCBzeW5jKCk7Ci0gICAgcG9zX3R5cGUgc2Vla29mZiggb2ZmX3R5cGUgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKTsKLSAgICBwb3NfdHlwZSBzZWVrcG9zKHBvc190eXBlIHNwLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKTsKLQotICAgIC8vIERlY2xhcmVkIGluIGxpbmtlZF9zdHJlYW1idWYuCi0gICAgdm9pZCBzZXRfbmV4dChzdHJlYW1idWZfdHlwZSogbmV4dCk7Ci0gICAgdm9pZCBjbG9zZV9pbXBsKE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSk7Ci0gICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZWlkKFQpOyB9Ci0gICAgdm9pZCogY29tcG9uZW50X2ltcGwoKSB7IHJldHVybiBjb21wb25lbnQoKTsgfQotcHJpdmF0ZToKLQotICAgIC8vLS0tLS0tLS0tLUFjY2Vzc29yIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHdyYXBwZXImIG9iaigpIHsgcmV0dXJuICpzdG9yYWdlXzsgfQotICAgIHN0cmVhbWJ1Zl90eXBlKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbmV4dF87IH0KLSAgICBidWZmZXJfdHlwZSYgaW4oKSB7IHJldHVybiBidWZmZXJfLmZpcnN0KCk7IH0KLSAgICBidWZmZXJfdHlwZSYgb3V0KCkgeyByZXR1cm4gYnVmZmVyXy5zZWNvbmQoKTsgfQotICAgIGJvb2wgY2FuX3JlYWQoKSBjb25zdCB7IHJldHVybiBpc19jb252ZXJ0aWJsZTxNb2RlLCBpbnB1dD46OnZhbHVlOyB9Ci0gICAgYm9vbCBjYW5fd3JpdGUoKSBjb25zdCB7IHJldHVybiBpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZTsgfQotICAgIGJvb2wgb3V0cHV0X2J1ZmZlcmVkKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGZfb3V0cHV0X2J1ZmZlcmVkKSAhPSAwOyB9Ci0gICAgYm9vbCBzaGFyZWRfYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gaXNfY29udmVydGlibGU8TW9kZSwgc2Vla2FibGU+Ojp2YWx1ZTsgfQotICAgIHZvaWQgc2V0X2ZsYWdzKGludCBmKSB7IGZsYWdzXyA9IGY7IH0KLQotICAgIC8vLS0tLS0tLS0tLVN0YXRlIGNoYW5naW5nIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHZpcnR1YWwgdm9pZCBpbml0X2dldF9hcmVhKCk7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRfcHV0X2FyZWEoKTsKLQotICAgIC8vLS0tLS0tLS0tLVV0aWxpdHkgZnVuY3Rpb24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHBvc190eXBlIHNlZWtfaW1wbCggc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoICk7Ci0gICAgdm9pZCBzeW5jX2ltcGwoKTsKLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9vcGVuICAgICAgICAgICAgID0gMSwKLSAgICAgICAgZl9vdXRwdXRfYnVmZmVyZWQgID0gZl9vcGVuIDw8IDEsCi0gICAgICAgIGZfYXV0b19jbG9zZSAgICAgICA9IGZfb3V0cHV0X2J1ZmZlcmVkIDw8IDEKLSAgICB9OwotCi0gICAgb3B0aW9uYWw8d3JhcHBlcj4gICAgICAgICAgIHN0b3JhZ2VfOwotICAgIHN0cmVhbWJ1Zl90eXBlKiAgICAgICAgICAgICBuZXh0XzsKLSAgICBkb3VibGVfb2JqZWN0PAotICAgICAgICBidWZmZXJfdHlwZSwKLSAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICBNb2RlLAotICAgICAgICAgICAgdHdvX3NlcXVlbmNlCi0gICAgICAgID4KLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyXzsKLSAgICBzdGQ6OnN0cmVhbXNpemUgICAgICAgICAgICAgcGJhY2tfc2l6ZV87Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzXzsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBpbmRpcmVjdF9zdHJlYW1idWYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjppbmRpcmVjdF9zdHJlYW1idWYoKQotICAgIDogbmV4dF8oMCksIHBiYWNrX3NpemVfKDApLCBmbGFnc18oZl9hdXRvX2Nsb3NlKSB7IH0KLQotLy8tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIG9wZW4sIGlzX29wZW4gYW5kIGNsb3NlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6b3BlbgotICAgIChjb25zdCBUJiB0LCBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUsIHN0ZDo6c3RyZWFtc2l6ZSBwYmFja19zaXplKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLSAgICAvLyBOb3JtYWxpemUgYnVmZmVyIHNpemVzLgotICAgIGJ1ZmZlcl9zaXplID0KLSAgICAgICAgKGJ1ZmZlcl9zaXplICE9IC0xKSA/Ci0gICAgICAgIGJ1ZmZlcl9zaXplIDoKLSAgICAgICAgaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKHQpOwotICAgIHBiYWNrX3NpemUgPQotICAgICAgICAocGJhY2tfc2l6ZSAhPSAtMSkgPwotICAgICAgICBwYmFja19zaXplIDoKLSAgICAgICAgZGVmYXVsdF9wYmFja19idWZmZXJfc2l6ZTsKLQotICAgIC8vIENvbnN0cnVjdCBpbnB1dCBidWZmZXIuCi0gICAgaWYgKGNhbl9yZWFkKCkpIHsKLSAgICAgICAgcGJhY2tfc2l6ZV8gPSAoc3RkOjptYXgpKHN0ZDo6c3RyZWFtc2l6ZSgyKSwgcGJhY2tfc2l6ZSk7IC8vIFNUTFBvcnQgbmVlZHMgMi4KLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHNpemUgPQotICAgICAgICAgICAgcGJhY2tfc2l6ZV8gKwotICAgICAgICAgICAgKCBidWZmZXJfc2l6ZSA/IGJ1ZmZlcl9zaXplOiAxICk7Ci0gICAgICAgIGluKCkucmVzaXplKHNpemUpOwotICAgICAgICBpZiAoIXNoYXJlZF9idWZmZXIoKSkKLSAgICAgICAgICAgIGluaXRfZ2V0X2FyZWEoKTsKLSAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3Qgb3V0cHV0IGJ1ZmZlci4KLSAgICBpZiAoY2FuX3dyaXRlKCkgJiYgIXNoYXJlZF9idWZmZXIoKSkgewotICAgICAgICBpZiAoYnVmZmVyX3NpemUgIT0gMCkKLSAgICAgICAgICAgIG91dCgpLnJlc2l6ZShidWZmZXJfc2l6ZSk7Ci0gICAgICAgIGluaXRfcHV0X2FyZWEoKTsKLSAgICB9Ci0KLSAgICBzdG9yYWdlXy5yZXNldCh3cmFwcGVyKHQpKTsKLSAgICBmbGFnc18gfD0gZl9vcGVuOwotICAgIGlmIChjYW5fd3JpdGUoKSAmJiBidWZmZXJfc2l6ZSA+IDEpCi0gICAgICAgIGZsYWdzXyB8PSBmX291dHB1dF9idWZmZXJlZDsKLSAgICB0aGlzLT5zZXRfdHJ1ZV9lb2YoZmFsc2UpOwotICAgIHRoaXMtPnNldF9uZWVkc19jbG9zZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgYm9vbCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aXNfb3BlbigpIGNvbnN0Ci17IHJldHVybiAoZmxhZ3NfICYgZl9vcGVuKSAhPSAwOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OmNsb3NlKCkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgIGJhc2VfdHlwZSogc2VsZiA9IHRoaXM7Ci0gICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgZGV0YWlsOjpjYWxsX21lbWJlcl9jbG9zZSgqc2VsZiwgTkROQk9PU1RfSU9TOjppbiksCi0gICAgICAgIGRldGFpbDo6Y2FsbF9tZW1iZXJfY2xvc2UoKnNlbGYsIE5ETkJPT1NUX0lPUzo6b3V0KSwKLSAgICAgICAgZGV0YWlsOjpjYWxsX3Jlc2V0KHN0b3JhZ2VfKSwKLSAgICAgICAgZGV0YWlsOjpjbGVhcl9mbGFncyhmbGFnc18pCi0gICAgKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotYm9vbCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6YXV0b19jbG9zZSgpIGNvbnN0Ci17IHJldHVybiAoZmxhZ3NfICYgZl9hdXRvX2Nsb3NlKSAhPSAwOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXZvaWQgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnNldF9hdXRvX2Nsb3NlKGJvb2wgY2xvc2UpCi17IGZsYWdzXyA9IChmbGFnc18gJiB+Zl9hdXRvX2Nsb3NlKSB8IChjbG9zZSA/IGZfYXV0b19jbG9zZSA6IDApOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiB2aXJ0dWFsIGZ1bmN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW1idWUoY29uc3Qgc3RkOjpsb2NhbGUmIGxvYykKLXsKLSAgICBpZiAoaXNfb3BlbigpKSB7Ci0gICAgICAgIG9iaigpLmltYnVlKGxvYyk7Ci0gICAgICAgIGlmIChuZXh0XykKLSAgICAgICAgICAgIG5leHRfLT5wdWJpbWJ1ZShsb2MpOwotICAgIH0KLX0KLSNlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci10eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW50X3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ojp1bmRlcmZsb3coKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgaWYgKCFncHRyKCkpIGluaXRfZ2V0X2FyZWEoKTsKLSAgICBidWZmZXJfdHlwZSYgYnVmID0gaW4oKTsKLSAgICBpZiAoZ3B0cigpIDwgZWdwdHIoKSkgcmV0dXJuIHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqZ3B0cigpKTsKLQotICAgIC8vIEZpbGwgcHV0YmFjayBidWZmZXIuCi0gICAgc3RkOjpzdHJlYW1zaXplIGtlZXAgPSAKLSAgICAgICAgKHN0ZDo6bWluKSggc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihncHRyKCkgLSBlYmFjaygpKSwKLSAgICAgICAgICAgICAgICAgICAgcGJhY2tfc2l6ZV8gKTsKLSAgICBpZiAoa2VlcCkKLSAgICAgICAgdHJhaXRzX3R5cGU6Om1vdmUoIGJ1Zi5kYXRhKCkgKyAocGJhY2tfc2l6ZV8gLSBrZWVwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdHIoKSAtIGtlZXAsIGtlZXAgKTsKLQotICAgIC8vIFNldCBwb2ludGVycyB0byByZWFzb25hYmxlIHZhbHVlcyBpbiBjYXNlIHJlYWQgdGhyb3dzLgotICAgIHNldGcoIGJ1Zi5kYXRhKCkgKyBwYmFja19zaXplXyAtIGtlZXAsCi0gICAgICAgICAgYnVmLmRhdGEoKSArIHBiYWNrX3NpemVfLAotICAgICAgICAgIGJ1Zi5kYXRhKCkgKyBwYmFja19zaXplXyApOwotCi0gICAgLy8gUmVhZCBmcm9tIHNvdXJjZS4KLSAgICBzdGQ6OnN0cmVhbXNpemUgY2hhcnMgPQotICAgICAgICBvYmooKS5yZWFkKGJ1Zi5kYXRhKCkgKyBwYmFja19zaXplXywgYnVmLnNpemUoKSAtIHBiYWNrX3NpemVfLCBuZXh0Xyk7Ci0gICAgaWYgKGNoYXJzID09IC0xKSB7Ci0gICAgICAgIHRoaXMtPnNldF90cnVlX2VvZih0cnVlKTsKLSAgICAgICAgY2hhcnMgPSAwOwotICAgIH0KLSAgICBzZXRnKGViYWNrKCksIGdwdHIoKSwgYnVmLmRhdGEoKSArIHBiYWNrX3NpemVfICsgY2hhcnMpOwotICAgIHJldHVybiBjaGFycyAhPSAwID8KLSAgICAgICAgdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCpncHRyKCkpIDoKLSAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci10eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW50X3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpwYmFja2ZhaWwoaW50X3R5cGUgYykKLXsKLSAgICBpZiAoZ3B0cigpICE9IGViYWNrKCkpIHsKLSAgICAgICAgZ2J1bXAoLTEpOwotICAgICAgICBpZiAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShjLCB0cmFpdHNfdHlwZTo6ZW9mKCkpKQotICAgICAgICAgICAgKmdwdHIoKSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgIHJldHVybiB0cmFpdHNfdHlwZTo6bm90X2VvZihjKTsKLSAgICB9IGVsc2UgewotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGJhZF9wdXRiYWNrKCkpOwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdHlwZW5hbWUgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OmludF90eXBlCi1pbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6b3ZlcmZsb3coaW50X3R5cGUgYykKLXsKLSAgICBpZiAoIChvdXRwdXRfYnVmZmVyZWQoKSAmJiBwcHRyKCkgPT0gMCkgfHwKLSAgICAgICAgIChzaGFyZWRfYnVmZmVyKCkgJiYgZ3B0cigpICE9IDApICkKLSAgICB7Ci0gICAgICAgIGluaXRfcHV0X2FyZWEoKTsKLSAgICB9Ci0gICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoYywgdHJhaXRzX3R5cGU6OmVvZigpKSkgewotICAgICAgICBpZiAob3V0cHV0X2J1ZmZlcmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChwcHRyKCkgPT0gZXBwdHIoKSkgewotICAgICAgICAgICAgICAgIHN5bmNfaW1wbCgpOwotICAgICAgICAgICAgICAgIGlmIChwcHRyKCkgPT0gZXBwdHIoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYWl0c190eXBlOjplb2YoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwcHRyKCkgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKGMpOwotICAgICAgICAgICAgcGJ1bXAoMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjaGFyX3R5cGUgZCA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgICAgICBpZiAob2JqKCkud3JpdGUoJmQsIDEsIG5leHRfKSAhPSAxKQotICAgICAgICAgICAgICAgIHJldHVybiB0cmFpdHNfdHlwZTo6ZW9mKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKGMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbnQgaW5kaXJlY3Rfc3RyZWFtYnVmPFQsIFRyLCBBbGxvYywgTW9kZT46OnN5bmMoKQotewotICAgIHRyeSB7IC8vIHN5bmMoKSBpcyBuby10aHJvdy4KLSAgICAgICAgc3luY19pbXBsKCk7Ci0gICAgICAgIG9iaigpLmZsdXNoKG5leHRfKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBjYXRjaCAoLi4uKSB7IHJldHVybiAtMTsgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1ib29sIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzdHJpY3Rfc3luYygpCi17Ci0gICAgdHJ5IHsgLy8gc3luYygpIGlzIG5vLXRocm93LgotICAgICAgICBzeW5jX2ltcGwoKTsKLSAgICAgICAgcmV0dXJuIG9iaigpLmZsdXNoKG5leHRfKTsKLSAgICB9IGNhdGNoICguLi4pIHsgcmV0dXJuIGZhbHNlOyB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSB0eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9zX3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzZWVrb2ZmCi0gICAgKG9mZl90eXBlIG9mZiwgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsgcmV0dXJuIHNlZWtfaW1wbChvZmYsIHdheSwgd2hpY2gpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLWlubGluZSB0eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9zX3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzZWVrcG9zCi0gICAgKHBvc190eXBlIHNwLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQoteyAKLSAgICByZXR1cm4gc2Vla19pbXBsKHBvc2l0aW9uX3RvX29mZnNldChzcCksIE5ETkJPT1NUX0lPUzo6YmVnLCB3aGljaCk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci10eXBlbmFtZSBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6cG9zX3R5cGUKLWluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzZWVrX2ltcGwKLSAgICAoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgaWYgKCBncHRyKCkgIT0gMCAmJiB3YXkgPT0gTkROQk9PU1RfSU9TOjpjdXIgJiYgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbiAmJiAKLSAgICAgICAgIGViYWNrKCkgLSBncHRyKCkgPD0gb2ZmICYmIG9mZiA8PSBlZ3B0cigpIC0gZ3B0cigpICkgCi0gICAgeyAgIC8vIFNtYWxsIHNlZWsgb3B0aW1pemF0aW9uCi0gICAgICAgIGdidW1wKG9mZik7Ci0gICAgICAgIHJldHVybiBvYmooKS5zZWVrKDAsIE5ETkJPT1NUX0lPUzo6Y3VyLCBORE5CT09TVF9JT1M6OmluLCBuZXh0XykgLQotICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8b2ZmX3R5cGU+KGVncHRyKCkgLSBncHRyKCkpOwotICAgIH0KLSAgICBpZiAocHB0cigpICE9IDApIAotICAgICAgICB0aGlzLT5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpOyAvLyBzeW5jKCkgY29uZnVzZXMgVmlzdWFsQWdlIDYuCi0gICAgaWYgKHdheSA9PSBORE5CT09TVF9JT1M6OmN1ciAmJiBncHRyKCkpCi0gICAgICAgIG9mZiAtPSBzdGF0aWNfY2FzdDxvZmZfdHlwZT4oZWdwdHIoKSAtIGdwdHIoKSk7Ci0gICAgc2V0ZygwLCAwLCAwKTsKLSAgICBzZXRwKDAsIDApOwotICAgIHJldHVybiBvYmooKS5zZWVrKG9mZiwgd2F5LCB3aGljaCwgbmV4dF8pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6c2V0X25leHQKLSAgICAoc3RyZWFtYnVmX3R5cGUqIG5leHQpCi17IG5leHRfID0gbmV4dDsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1pbmxpbmUgdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6Y2xvc2VfaW1wbAotICAgIChORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotewotICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6OmluICYmIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0Pjo6dmFsdWUpIHsKLSAgICAgICAgc2V0ZygwLCAwLCAwKTsKLSAgICB9Ci0gICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0ICYmIGlzX2NvbnZlcnRpYmxlPE1vZGUsIG91dHB1dD46OnZhbHVlKSB7Ci0gICAgICAgIHN5bmMoKTsKLSAgICAgICAgc2V0cCgwLCAwKTsKLSAgICB9Ci0gICAgaWYgKCAhaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPjo6dmFsdWUgfHwKLSAgICAgICAgIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0Pjo6dmFsdWUgPT0gKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pICkKLSAgICB7Ci0gICAgICAgIG9iaigpLmNsb3NlKHdoaWNoLCBuZXh0Xyk7Ci0gICAgfQotfQotCi0vLy0tLS0tLS0tLS1TdGF0ZSBjaGFuZ2luZyBmdW5jdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci12b2lkIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+OjpzeW5jX2ltcGwoKQotewotICAgIHN0ZDo6c3RyZWFtc2l6ZSBhdmFpbCwgYW10OwotICAgIGlmICgoYXZhaWwgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KHBwdHIoKSAtIHBiYXNlKCkpKSA+IDApIHsKLSAgICAgICAgaWYgKChhbXQgPSBvYmooKS53cml0ZShwYmFzZSgpLCBhdmFpbCwgbmV4dCgpKSkgPT0gYXZhaWwpCi0gICAgICAgICAgICBzZXRwKG91dCgpLmJlZ2luKCksIG91dCgpLmVuZCgpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIHB0ciA9IHBwdHIoKTsKLSAgICAgICAgICAgIHNldHAob3V0KCkuYmVnaW4oKSArIGFtdCwgb3V0KCkuZW5kKCkpOwotICAgICAgICAgICAgcGJ1bXAocHRyIC0gcHB0cigpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW5pdF9nZXRfYXJlYSgpCi17Ci0gICAgaWYgKHNoYXJlZF9idWZmZXIoKSAmJiBwcHRyKCkgIT0gMCkgewotICAgICAgICBzeW5jX2ltcGwoKTsKLSAgICAgICAgc2V0cCgwLCAwKTsKLSAgICB9Ci0gICAgc2V0ZyhpbigpLmJlZ2luKCksIGluKCkuYmVnaW4oKSwgaW4oKS5iZWdpbigpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotdm9pZCBpbmRpcmVjdF9zdHJlYW1idWY8VCwgVHIsIEFsbG9jLCBNb2RlPjo6aW5pdF9wdXRfYXJlYSgpCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBpZiAoc2hhcmVkX2J1ZmZlcigpICYmIGdwdHIoKSAhPSAwKQotICAgICAgICBzZXRnKDAsIDAsIDApOwotICAgIGlmIChvdXRwdXRfYnVmZmVyZWQoKSkKLSAgICAgICAgc2V0cChvdXQoKS5iZWdpbigpLCBvdXQoKS5lbmQoKSk7Ci0gICAgZWxzZQotICAgICAgICBzZXRwKDAsIDApOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAvLyBNU1ZDLCBCQ0MgNS54Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfSU5ESVJFQ1RfU1RSRUFNQlVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvbGlua2VkX3N0cmVhbWJ1Zi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZWMyM2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9saW5rZWRfc3RyZWFtYnVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX0xJTktFRF9TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfTElOS0VEX1NUUkVBTUJVRl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDx0eXBlaW5mbz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgICAgLy8gb3Blbm1vZGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBNb2RlPgotY2xhc3MgY2hhaW5fYmFzZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4sIHR5cGVuYW1lIEFjY2VzcywgdHlwZW5hbWUgTW9kZT4gY2xhc3MgY2hhaW5idWY7Ci0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1VTSU5HX1BST1RFQ1RFRF9TVFJFQU1CVUZfTUVNQkVSUyhiYXNlKSBcCi0gICAgdXNpbmcgYmFzZTo6ZWJhY2s7IHVzaW5nIGJhc2U6OmdwdHI7IHVzaW5nIGJhc2U6OmVncHRyOyBcCi0gICAgdXNpbmcgYmFzZTo6c2V0ZzsgdXNpbmcgYmFzZTo6Z2J1bXA7IHVzaW5nIGJhc2U6OnBiYXNlOyBcCi0gICAgdXNpbmcgYmFzZTo6cHB0cjsgdXNpbmcgYmFzZTo6ZXBwdHI7IHVzaW5nIGJhc2U6OnNldHA7IFwKLSAgICB1c2luZyBiYXNlOjpwYnVtcDsgdXNpbmcgYmFzZTo6dW5kZXJmbG93OyB1c2luZyBiYXNlOjpwYmFja2ZhaWw7IFwKLSAgICB1c2luZyBiYXNlOjp4c2dldG47IHVzaW5nIGJhc2U6Om92ZXJmbG93OyB1c2luZyBiYXNlOjp4c3B1dG47IFwKLSAgICB1c2luZyBiYXNlOjpzeW5jOyB1c2luZyBiYXNlOjpzZWVrb2ZmOyB1c2luZyBiYXNlOjpzZWVrcG9zOyBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIgPSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoQ2gpID4KLWNsYXNzIGxpbmtlZF9zdHJlYW1idWYgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihDaCwgVHIpIHsKLXByb3RlY3RlZDoKLSAgICBsaW5rZWRfc3RyZWFtYnVmKCkgOiBmbGFnc18oMCkgeyB9Ci0gICAgdm9pZCBzZXRfdHJ1ZV9lb2YoYm9vbCBlb2YpIAotICAgIHsgCi0gICAgICAgIGZsYWdzXyA9IChmbGFnc18gJiB+Zl90cnVlX2VvZikgfCAoZW9mID8gZl90cnVlX2VvZiA6IDApOyAKLSAgICB9Ci1wdWJsaWM6Ci0KLSAgICAvLyBTaG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgcmVjZWl2aW5nIGFuIG9yZGluYXJ5IEVPRiBpbmRpY2F0aW9uLAotICAgIC8vIHRvIGNvbmZpcm0gdGhhdCBpdCByZXByZXNlbnRzIEVPRiByYXRoZXIgdGhhbiBXT1VMRF9CTE9DSy4KLSAgICBib29sIHRydWVfZW9mKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGZfdHJ1ZV9lb2YpICE9IDA7IH0KLXByb3RlY3RlZDoKLQotICAgIC8vLS0tLS0tLS0tLWdyYW50IGZyaWVuZHNoaXAgdG8gY2hhaW5fYmFzZSBhbmQgY2hhaW5idWYtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZWxmLCB0eXBlbmFtZSBDaFQsIHR5cGVuYW1lIFRyVCwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGUgPgotICAgIGZyaWVuZCBjbGFzcyBjaGFpbl9iYXNlOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYWluLCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBBY2Nlc3M+Ci0gICAgZnJpZW5kIGNsYXNzIGNoYWluYnVmOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgZnJpZW5kIGNsYXNzIG1lbWJlcl9jbG9zZV9vcGVyYXRpb247IAotI2Vsc2UKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihDaCwgVHIpIGJhc2U7Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19VU0lOR19QUk9URUNURURfU1RSRUFNQlVGX01FTUJFUlMoYmFzZSkKLSNlbmRpZgotICAgIHZvaWQgY2xvc2UoTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICB7Ci0gICAgICAgIGlmICggd2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbiAmJiAKLSAgICAgICAgICAgIChmbGFnc18gJiBmX2lucHV0X2Nsb3NlZCkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsYWdzXyB8PSBmX2lucHV0X2Nsb3NlZDsKLSAgICAgICAgICAgIGNsb3NlX2ltcGwod2hpY2gpOwotICAgICAgICB9Ci0gICAgICAgIGlmICggd2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQgJiYgCi0gICAgICAgICAgICAoZmxhZ3NfICYgZl9vdXRwdXRfY2xvc2VkKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmxhZ3NfIHw9IGZfb3V0cHV0X2Nsb3NlZDsKLSAgICAgICAgICAgIGNsb3NlX2ltcGwod2hpY2gpOwotICAgICAgICB9Ci0gICAgfQotICAgIHZvaWQgc2V0X25lZWRzX2Nsb3NlKCkKLSAgICB7Ci0gICAgICAgIGZsYWdzXyAmPSB+KGZfaW5wdXRfY2xvc2VkIHwgZl9vdXRwdXRfY2xvc2VkKTsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIHNldF9uZXh0KGxpbmtlZF9zdHJlYW1idWY8Q2gsIFRyPiogLyogbmV4dCAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlX2ltcGwoTkROQk9PU1RfSU9TOjpvcGVubW9kZSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBhdXRvX2Nsb3NlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRfYXV0b19jbG9zZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN0cmljdF9zeW5jKCkgPSAwOwotICAgIHZpcnR1YWwgY29uc3Qgc3RkOjp0eXBlX2luZm8mIGNvbXBvbmVudF90eXBlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCogY29tcG9uZW50X2ltcGwoKSA9IDA7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTCi0gICAgcHJpdmF0ZToKLSNlbHNlCi0gICAgcHVibGljOgotI2VuZGlmCi1wcml2YXRlOgotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl90cnVlX2VvZiAgICAgICA9IDEsCi0gICAgICAgIGZfaW5wdXRfY2xvc2VkICAgPSBmX3RydWVfZW9mIDw8IDEsCi0gICAgICAgIGZfb3V0cHV0X2Nsb3NlZCAgPSBmX2lucHV0X2Nsb3NlZCA8PCAxCi0gICAgfTsKLSAgICBpbnQgZmxhZ3NfOwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gLy8gTVNWQy4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9MSU5LRURfU1RSRUFNQlVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N5c3RlbV9mYWlsdXJlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zeXN0ZW1fZmFpbHVyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhOWRjYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N5c3RlbV9mYWlsdXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIChDKSBDb3B5cmlnaHQgSm9uYXRoYW4gR3JhZWhsIDIwMDQuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gVXNlZCBieSBtYXBwZWRfZmlsZS5jcHAuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TWVNURU1fRkFJTFVSRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9TWVNURU1fRkFJTFVSRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2luZG93c19wb3NpeC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZS4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmICFkZWZpbmVkKF9fTElCQ09NT19fKQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6c3RybGVuOyB9Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0jIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOICAvLyBFeGNsdWRlIHJhcmVseS11c2VkIHN0dWZmIGZyb20gV2luZG93cyBoZWFkZXJzCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPGVycm5vLmg+Ci0jIGluY2x1ZGUgPHN0cmluZy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotaW5saW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIHN5c3RlbV9mYWlsdXJlKGNvbnN0IGNoYXIqIG1zZykKLXsKLSAgICBzdGQ6OnN0cmluZyByZXN1bHQ7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBEV09SRCBlcnI7Ci0gICAgTFBWT0lEIGxwTXNnQnVmOwotICAgIGlmICggKGVyciA9IDo6R2V0TGFzdEVycm9yKCkpICE9IE5PX0VSUk9SICYmCi0gICAgICAgICA6OkZvcm1hdE1lc3NhZ2VBKCBGT1JNQVRfTUVTU0FHRV9BTExPQ0FURV9CVUZGRVIgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFLRUxBTkdJRChMQU5HX05FVVRSQUwsIFNVQkxBTkdfREVGQVVMVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBTVFIpICZscE1zZ0J1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMICkgIT0gMCApCi0gICAgewotICAgICAgICByZXN1bHQucmVzZXJ2ZShzdGQ6OnN0cmxlbihtc2cpICsgMiArIHN0ZDo6c3RybGVuKChMUFNUUilscE1zZ0J1ZikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKG1zZyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIjogIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoKExQU1RSKSBscE1zZ0J1Zik7Ci0gICAgICAgIDo6TG9jYWxGcmVlKGxwTXNnQnVmKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgKz0gbXNnOwotICAgIH0KLSNlbHNlCi0gICAgY29uc3QgY2hhciogc3lzdGVtX21zZyA9IGVycm5vID8gc3RyZXJyb3IoZXJybm8pIDogIiI7Ci0gICAgcmVzdWx0LnJlc2VydmUoc3RkOjpzdHJsZW4obXNnKSArIDIgKyBzdGQ6OnN0cmxlbihzeXN0ZW1fbXNnKSk7Ci0gICAgcmVzdWx0LmFwcGVuZChtc2cpOwotICAgIHJlc3VsdC5hcHBlbmQoIjogIik7Ci0gICAgcmVzdWx0LmFwcGVuZChzeXN0ZW1fbXNnKTsKLSNlbmRpZgotICAgIHJldHVybiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRShyZXN1bHQpOwotfQotCi1pbmxpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgc3lzdGVtX2ZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykKLXsgcmV0dXJuIHN5c3RlbV9mYWlsdXJlKG1zZy5jX3N0cigpKTsgfQotCi1pbmxpbmUgdm9pZCB0aHJvd19zeXN0ZW1fZmFpbHVyZShjb25zdCBjaGFyKiBtc2cpCi17IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3lzdGVtX2ZhaWx1cmUobXNnKSk7IH0KLQotaW5saW5lIHZvaWQgdGhyb3dfc3lzdGVtX2ZhaWx1cmUoY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykKLXsgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzeXN0ZW1fZmFpbHVyZShtc2cpKTsgfQotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfU1lTVEVNX0ZBSUxVUkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdGVtcGxhdGVfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90ZW1wbGF0ZV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWFhZmYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC90ZW1wbGF0ZV9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9URU1QTEFURV9QQVJBTVNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9QQVJBTVMoYXJpdHksIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRVhQUl9JRihhcml0eSwgdGVtcGxhdGU8KSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoYXJpdHksIHR5cGVuYW1lIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRVhQUl9JRihhcml0eSwgPikgXAotICAgIC8qKi8KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfQVJHUyhhcml0eSwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9FWFBSX0lGKGFyaXR5LCA8KSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoYXJpdHksIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfRVhQUl9JRihhcml0eSwgPikgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9CVUZGRVJTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RyYW5zbGF0ZV9pbnRfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdHJhbnNsYXRlX2ludF90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVjYmI2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdHJhbnNsYXRlX2ludF90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfVFJBTlNMQVRFX0lOVF9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1RSQU5TTEFURV9JTlRfVFlQRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGJvb2wgSXNTYW1lPgotc3RydWN0IHRyYW5zbGF0ZV9pbnRfdHlwZV9pbXBsOwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogdHJhbnNsYXRlX2NoYXIuCi0vLyBEZXNjcmlwdGlvbjogVHJhbnNsYXRlcyBhIGNoYXJhY3RlciBvciBhbiBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgZnJvbSB0aGUgCi0vLyAgICAgIGludF90eXBlIG9mIG9uZSBjaGFyYWN0ZXIgdHJhaXRzIHR5cGUgdG8gdGhlIGludF90eXBlIG9mIGFub3RoZXIuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlVHIsIHR5cGVuYW1lIFRhcmdldFRyPgotdHlwZW5hbWUgVGFyZ2V0VHI6OmludF90eXBlIAotdHJhbnNsYXRlX2ludF90eXBlKHR5cGVuYW1lIFNvdXJjZVRyOjppbnRfdHlwZSBjKSAKLXsgCi0gICAgdHlwZWRlZiB0cmFuc2xhdGVfaW50X3R5cGVfaW1wbDxpc19zYW1lPFNvdXJjZVRyLCBUYXJnZXRUcj46OnZhbHVlPiBpbXBsOwotICAgIHJldHVybiBpbXBsOjp0ZW1wbGF0ZSBpbm5lcjxTb3VyY2VUciwgVGFyZ2V0VHI+Ojp0cmFuc2xhdGUoYyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0cmFuc2xhdGVfaW50X3R5cGVfaW1wbDx0cnVlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlVHIsIHR5cGVuYW1lIFRhcmdldFRyPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBUYXJnZXRUcjo6aW50X3R5cGUgCi0gICAgICAgIHRyYW5zbGF0ZSh0eXBlbmFtZSBTb3VyY2VUcjo6aW50X3R5cGUgYykgeyByZXR1cm4gYzsgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdHJhbnNsYXRlX2ludF90eXBlX2ltcGw8ZmFsc2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUciwgdHlwZW5hbWUgVGFyZ2V0VHI+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIFRhcmdldFRyOjppbnRfdHlwZSAKLSAgICAgICAgdHJhbnNsYXRlKHR5cGVuYW1lIFNvdXJjZVRyOjppbnRfdHlwZSBjKQotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICByZXR1cm4gU291cmNlVHI6OmVxX2ludF90eXBlKFNvdXJjZVRyOjplb2YoKSkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0VHI6OmVvZigpIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldFRyOjp0b19pbnRfdHlwZShTb3VyY2VUcjo6dG9fY2hhcl90eXBlKGMpKTsKLSAgICAgICAgICAgIH0KLSAgICB9OwotfTsKLQotfSB9IH0gLy8gRW5kIG5hbWVzcGFjZXMgZGV0YWlsLCBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfREVUQUlMX1RSQU5TTEFURV9JTlRfVFlQRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvY2xvc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9jbG9zZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZGRkMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi9jbG9zZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjbG9zZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBjbG9zZShUJiB0KSB7IGRldGFpbDo6Y2xvc2VfYWxsKHQpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIGNsb3NlKFQmIHQsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICBkZXRhaWw6OmNsb3NlX2ltcGw8VD46OmlubmVyPHVud3JhcHBlZD46OmNsb3NlKGRldGFpbDo6dW53cmFwKHQpLCB3aGljaCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci12b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIGRldGFpbDo6Y2xvc2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6Y2xvc2UoZGV0YWlsOjp1bndyYXAodCksIHNuaywgd2hpY2gpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGNsb3NlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjbG9zZV90YWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBjbG9zYWJsZV90YWc+LAotICAgICAgICAgICAgICAgIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCB0d29fc2VxdWVuY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIGR1YWxfdXNlPgotICAgICAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgICAgICB0d29fc2VxdWVuY2UsCi0gICAgICAgICAgICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxhbnlfdGFnPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjbG9zZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBjbG9zZV9pbXBsPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2xvc2VfdGFnPFQ+Ojp0eXBlPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6b3V0KQotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Zmx1c2godCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgICAgIG5vbl9ibG9ja2luZ19hZGFwdGVyPFNpbms+IG5iKHNuayk7Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpmbHVzaCh0LCBuYik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsb3NlX2ltcGw8Y2xvc2FibGVfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgICAgICAgICAgY29uc3QgYm9vbCBpbiA9ICBpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgaW5wdXQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgb3V0cHV0Pjo6dmFsdWU7Ci0gICAgICAgICAgICBpZiAoaW4gPT0gKHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pKQotICAgICAgICAgICAgICAgIHQuY2xvc2UoKTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgdm9pZCBjbG9zZShUJiB0LCBTaW5rJiBzbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgICAgICBjb25zdCBib29sIGluID0gIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBpbnB1dD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+Ojp2YWx1ZTsKLSAgICAgICAgICAgIGlmIChpbiA9PSAod2hpY2ggPT0gTkROQk9PU1RfSU9TOjppbikpIHsKLSAgICAgICAgICAgICAgICBub25fYmxvY2tpbmdfYWRhcHRlcjxTaW5rPiBuYihzbmspOwotICAgICAgICAgICAgICAgIHQuY2xvc2UobmIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbG9zZV9pbXBsPHR3b19zZXF1ZW5jZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgY2xvc2UoVCYgdCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkgeyB0LmNsb3NlKHdoaWNoKTsgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNsb3NlKFQmIHQsIFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCkKLSAgICAgICAgewotICAgICAgICAgICAgbm9uX2Jsb2NraW5nX2FkYXB0ZXI8U2luaz4gbmIoc25rKTsKLSAgICAgICAgICAgIHQuY2xvc2UobmIsIHdoaWNoKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvcmVhZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3JlYWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjY0YWU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvcmVhZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGdldChUJiB0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF9kZXZpY2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6Z2V0KGRldGFpbDo6dW53cmFwKHQpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OnJlYWRfZGV2aWNlX2ltcGw8VD46OmlubmVyPHVud3JhcHBlZD46OnJlYWQoZGV0YWlsOjp1bndyYXAodCksIHMsIG4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTb3VyY2U+Ci1zdGQ6OnN0cmVhbXNpemUKLXJlYWQoVCYgdCwgU291cmNlJiBzcmMsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICByZXR1cm4gZGV0YWlsOjpyZWFkX2ZpbHRlcl9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+OjpyZWFkKGRldGFpbDo6dW53cmFwKHQpLCBzcmMsIHMsIG4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSB1bndyYXBwZWQ7Ci0gICAgcmV0dXJuIGRldGFpbDo6cmVhZF9kZXZpY2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6cHV0YmFjayhkZXRhaWw6OnVud3JhcCh0KSwgYyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGFkZGluZyAtMSBhcyBFT0YgaW5kaWNhdG9yLgotaW5saW5lIHN0ZDo6c3RyZWFtc2l6ZSBjaGVja19lb2Yoc3RkOjpzdHJlYW1zaXplIG4pIHsgcmV0dXJuIG4gIT0gMCA/IG4gOiAtMTsgfQotCi0vLyBIZWxwZXIgdGVtcGxhdGVzIGZvciByZWFkaW5nIGZyb20gc3RyZWFtYnVmcy4KLXRlbXBsYXRlPGJvb2wgSXNMaW5rZWQ+Ci1zdHJ1Y3QgdHJ1ZV9lb2ZfaW1wbDsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRydWVfZW9mX2ltcGw8dHJ1ZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdHJ1ZV9lb2YoVCYgdCkgeyByZXR1cm4gdC50cnVlX2VvZigpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdHJ1ZV9lb2ZfaW1wbDxmYWxzZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgdHJ1ZV9lb2YoVCYgdCkgeyByZXR1cm4gdHJ1ZTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIHRydWVfZW9mKFQmIHQpCi17Ci0gICAgY29uc3QgYm9vbCBsaW5rZWQgPSBpc19saW5rZWQ8VD46OnZhbHVlOwotICAgIHJldHVybiB0cnVlX2VvZl9pbXBsPGxpbmtlZD46OnRydWVfZW9mKHQpOwotfQotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiByZWFkX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICByZWFkX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRldGFpbDo6ZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBpc3RyZWFtX3RhZywgc3RyZWFtYnVmX3RhZywgaW5wdXQKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2RldmljZV9pbXBsPGlzdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0KFQmIHQpCi0gICAgICAgIHsgcmV0dXJuIHQuZ2V0KCk7IH0KLQotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyByZXR1cm4gY2hlY2tfZW9mKHQucmRidWYoKS0+c2dldG4ocywgbikpOyB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgcHV0YmFjayhUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcl90eXBlKSAgdHJhaXRzX3R5cGU7Ci0gICAgICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSggdC5yZGJ1ZigpLT5zcHV0YmFja2MoYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpICk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlCi0gICAgICAgIGdldChUJiB0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgYzsKLSAgICAgICAgICAgIHJldHVybiAhdHJhaXRzX3R5cGU6OmlzX2VvZihjID0gdC5zYnVtcGMoKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjp0cnVlX2VvZih0KQotICAgICAgICAgICAgICAgICAgICAgICAgPwotICAgICAgICAgICAgICAgICAgICBjIDogdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgICAgIHJldHVybiAoYW10ID0gdC5zZ2V0bihzLCBuKSkgIT0gMCA/Ci0gICAgICAgICAgICAgICAgYW10IDoKLSAgICAgICAgICAgICAgICBkZXRhaWw6OnRydWVfZW9mKHQpID8KLSAgICAgICAgICAgICAgICAgICAgLTEgOgotICAgICAgICAgICAgICAgICAgICAwOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgcHV0YmFjayhUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICAgICAgICAgIHJldHVybiAhdHJhaXRzX3R5cGU6OmlzX2VvZih0LnNwdXRiYWNrYyhjKSk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8aW5wdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZQotICAgICAgICBnZXQoVCYgdCkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICAgICAgICAgIGNoYXJfdHlwZSBjOwotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgICAgIHJldHVybiAoYW10ID0gdC5yZWFkKCZjLCAxKSkgPT0gMSA/Ci0gICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKGMpIDoKLSAgICAgICAgICAgICAgICBhbXQgPT0gLTEgPwotICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCkgOgotICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiB0LnJlYWQocywgbik7IH0KLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgICAgICB7ICAgLy8gVCBtdXN0IGJlIFBlZWthYmxlLgotICAgICAgICAgICAgcmV0dXJuIHQucHV0YmFjayhjKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgcmVhZF9maWx0ZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlYWRfZmlsdGVyX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGRldGFpbDo6aXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgcmVhZF9maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkZXRhaWw6OmRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgbXVsdGljaGFyX3RhZywgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZmlsdGVyX2ltcGw8bXVsdGljaGFyX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIHJlYWQKLSAgICAgICAgICAgICggVCYgdCwgU291cmNlJiBzcmMsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgICAKLSAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgICAgICB7IHJldHVybiB0LnJlYWQoc3JjLCBzLCBuKTsgfQotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgICAgICAgKCBUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCAKLSAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgY2hhcl90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgZm9yIChzdGQ6OnN0cmVhbXNpemUgb2ZmID0gMDsgb2ZmIDwgbjsgKytvZmYpIHsKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgYyA9IHQuZ2V0KHNyYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjppc19lb2YoYykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGVja19lb2Yob2ZmKTsKLSAgICAgICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2ZmOwotICAgICAgICAgICAgICAgIHNbb2ZmXSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC92YzYvd3JpdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi93cml0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMzk4ZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3ZjNi93cml0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIHVud3JhcHBlZDsKLSAgICByZXR1cm4gZGV0YWlsOjp3cml0ZV9kZXZpY2VfaW1wbDxUPjo6aW5uZXI8dW53cmFwcGVkPjo6cHV0KGRldGFpbDo6dW53cmFwKHQpLCBjKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OndyaXRlX2RldmljZV9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+Ojp3cml0ZShkZXRhaWw6OnVud3JhcCh0KSwgcywgbik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplCi13cml0ZSggVCYgdCwgU2luayYgc25rLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIAotICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUgdW53cmFwcGVkOwotICAgIHJldHVybiBkZXRhaWw6OndyaXRlX2ZpbHRlcl9pbXBsPFQ+Ojppbm5lcjx1bndyYXBwZWQ+Ojp3cml0ZShkZXRhaWw6OnVud3JhcCh0KSwgc25rLCBzLCBuKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cml0ZV9kZXZpY2VfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHdyaXRlX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgb3N0cmVhbV90YWcsIHN0cmVhbWJ1Zl90YWcsIG91dHB1dAotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPG9zdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoIHQucmRidWYoKS0+cy5zcHV0YygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTo6ZW9mKCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgICAgIChUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiB0LnJkYnVmKCktPnNwdXRuKHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUodC5zcHV0YyhjKSwgdHJhaXRzX3R5cGU6OmVvZigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgICAgIChUJiB0LCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgICAgICB7IHJldHVybiB0LnNwdXRuKHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9kZXZpY2VfaW1wbDxvdXRwdXQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgIHN0YXRpYyBib29sIHB1dChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgYykKLSAgICAgICAgeyByZXR1cm4gdC53cml0ZSgmYywgMSkgPT0gMTsgfQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICAgICAgd3JpdGUoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICAgICAgeyByZXR1cm4gdC53cml0ZShzLCBuKTsgfQotICAgIH07Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2Ygd3JpdGVfZmlsdGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICB3cml0ZV9maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG11bHRpY2hhcl90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9maWx0ZXJfaW1wbDxtdWx0aWNoYXJfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywKLSAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICAgICAgeyByZXR1cm4gdC53cml0ZShzbmssIHMsIG4pOyB9Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB3cml0ZV9maWx0ZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgICAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgICAgIHdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywKLSAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChzdGQ6OnN0cmVhbXNpemUgb2ZmID0gMDsgb2ZmIDwgbjsgKytvZmYpCi0gICAgICAgICAgICAgICAgaWYgKCF0LnB1dChzbmssIHNbb2ZmXSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZmY7Ci0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzI5MWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9XUkFQX1VOV1JBUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0RFVEFJTF9XUkFQX1VOV1JBUF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTRklOQUUsIE1TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZW5hYmxlX2lmX3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwPiAgICAgICAgICAgICAgIC8vIGlzX3N0ZF9pby4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHdyYXAvdW53cmFwIHRyYWl0cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB3cmFwcGVkX3R5cGUgCi0gICAgOiBtcGw6OmlmXzxpc19zdGRfaW88VD4sIHJlZmVyZW5jZV93cmFwcGVyPFQ+LCBUPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB1bndyYXBwZWRfdHlwZSAKLSAgICA6IHVud3JhcF9yZWZlcmVuY2U8VD4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgdW53cmFwX2lvcyAKLSAgICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICBpc19zdGRfaW88VD4sIAotICAgICAgICAgIHVud3JhcF9yZWZlcmVuY2U8VD4sIAotICAgICAgICAgIG1wbDo6aWRlbnRpdHk8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cmFwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgVCB3cmFwKGNvbnN0IFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX0RJU0FCTEVfSUZfU1RSRUFNKFQpKSAKLSAgICB7IHJldHVybiB0OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUKLSAgICB3cmFwKFQmIHQgTkROQk9PU1RfSU9TVFJFQU1TX0VOQUJMRV9JRl9TVFJFQU0oVCkpIHsgcmV0dXJuIG5kbmJvb3N0OjpyZWYodCk7IH0KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIC8vIEJDQyA1LnggbmVlZHMgbmFtZXNwYWNlIHF1YWxpZmljYXRpb24uCi0gICAgd3JhcF9pbXBsKGNvbnN0IFQmIHQsIG1wbDo6dHJ1ZV8pIHsgcmV0dXJuIG5kbmJvb3N0OjpyZWYoY29uc3RfY2FzdDxUJj4odCkpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSB3cmFwcGVkX3R5cGU8VD46OnR5cGUgLy8gQkNDIDUueCBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbi4KLSAgICB3cmFwX2ltcGwoVCYgdCwgbXBsOjp0cnVlXykgeyByZXR1cm4gbmRuYm9vc3Q6OnJlZih0KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXBfaW1wbChjb25zdCBUJiB0LCBtcGw6OmZhbHNlXykgeyByZXR1cm4gdDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXBfaW1wbChUJiB0LCBtcGw6OmZhbHNlXykgeyByZXR1cm4gdDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXAoY29uc3QgVCYgdCkgeyByZXR1cm4gd3JhcF9pbXBsKHQsIGlzX3N0ZF9pbzxUPigpKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgd3JhcHBlZF90eXBlPFQ+Ojp0eXBlIAotICAgIHdyYXAoVCYgdCkgeyByZXR1cm4gd3JhcF9pbXBsKHQsIGlzX3N0ZF9pbzxUPigpKTsgfQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHVud3JhcC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiAKLXVud3JhcChjb25zdCByZWZlcmVuY2Vfd3JhcHBlcjxUPiYgcmVmKSB7IHJldHVybiByZWYuZ2V0KCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiB1bndyYXAoVCYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3QgdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIHVud3JhcChjb25zdCBUJiB0KSB7IHJldHVybiB0OyB9Ci0KLSNlbHNlIC8vICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFNpbmNlIHVud3JhcCBpcyBhIHBvdGVudGlhbCBib3R0bGVuZWNrLCB3ZSBhdm9pZCBydW50aW1lIHRhZyBkaXNwYXRjaC4KLXRlbXBsYXRlPGJvb2wgSXNSZWZXcmFwPgotc3RydWN0IHVud3JhcF9pbXBsOwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdW53cmFwX2ltcGw8dHJ1ZT4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiB1bndyYXAoY29uc3QgVCYgdCkgCi0gICAgeyByZXR1cm4gdC5nZXQoKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHVud3JhcF9pbXBsPGZhbHNlPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgdW53cmFwcGVkX3R5cGU8VD46OnR5cGUmIHVud3JhcChjb25zdCBUJiB0KSAKLSAgICB7IHJldHVybiBjb25zdF9jYXN0PFQmPih0KTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIHVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlJiAKLXVud3JhcChjb25zdCBUJiB0KSAKLXsgcmV0dXJuIHVud3JhcF9pbXBsPGlzX3JlZmVyZW5jZV93cmFwcGVyPFQ+Ojp2YWx1ZT46OnVud3JhcCh0KTsgfQotCi0jZW5kaWYgLy8gI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19ERVRBSUxfV1JBUF9VTldSQVBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRlYjM5ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgLy8gTkROQk9PU1RfTVNWQywgbWFrZSBzdXJlIHNpemVfdCBpcyBpbiBzdGQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgLy8gc3RkOjpzaXplX3QuCi0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1jbGFzcyBhcnJheV9hZGFwdGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPGNoYXJfdHlwZSosIGNoYXJfdHlwZSo+ICBwYWlyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogcHVibGljIE1vZGUsCi0gICAgICAgICAgcHVibGljIGRldmljZV90YWcsCi0gICAgICAgICAgcHVibGljIGRpcmVjdF90YWcKLSAgICAgICAgeyB9OwotICAgIGFycmF5X2FkYXB0ZXIoY2hhcl90eXBlKiBiZWdpbiwgY2hhcl90eXBlKiBlbmQpOwotICAgIGFycmF5X2FkYXB0ZXIoY2hhcl90eXBlKiBiZWdpbiwgc3RkOjpzaXplX3QgbGVuZ3RoKTsKLSAgICBhcnJheV9hZGFwdGVyKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIGNvbnN0IGNoYXJfdHlwZSogZW5kKTsKLSAgICBhcnJheV9hZGFwdGVyKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIHN0ZDo6c2l6ZV90IGxlbmd0aCk7Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHRlbXBsYXRlPGludCBOPgotICAgIGFycmF5X2FkYXB0ZXIoY2hhcl90eXBlICgmYXIpW05dKQotICAgICAgICA6IGJlZ2luXyhhciksIGVuZF8oYXIgKyBOKSAKLSAgICAgICAgeyB9Ci0jZW5kaWYKLSAgICBwYWlyX3R5cGUgaW5wdXRfc2VxdWVuY2UoKTsKLSAgICBwYWlyX3R5cGUgb3V0cHV0X3NlcXVlbmNlKCk7Ci1wcml2YXRlOgotICAgIGNoYXJfdHlwZSogYmVnaW5fOwotICAgIGNoYXJfdHlwZSogZW5kXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vIExvY2FsIG1hY3JvcywgI3VuZGVmJ2QgYmVsb3cuCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9DVE9SKG5hbWUsIGNoKSBcCi0gICAgdGVtcGxhdGU8aW50IE4+IFwKLSAgICBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKShjaCAoJmFyKVtOXSkgXAotICAgICAgICA6IGJhc2VfdHlwZShhcikgeyB9IFwKLSAgICAvKiovCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZX0NUT1IobmFtZSwgY2gpCi0jZW5kaWYKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZKG5hbWUsIG1vZGUpIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaD4gXAotICAgIHN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKSA6IGRldGFpbDo6YXJyYXlfYWRhcHRlcjxtb2RlLCBDaD4geyBcCi0gICAgcHJpdmF0ZTogXAotICAgICAgICB0eXBlZGVmIGRldGFpbDo6YXJyYXlfYWRhcHRlcjxtb2RlLCBDaD4gIGJhc2VfdHlwZTsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2hhcl90eXBlICAgIGNoYXJfdHlwZTsgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgIGNhdGVnb3J5OyBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpKGNoYXJfdHlwZSogYmVnaW4sIGNoYXJfdHlwZSogZW5kKSBcCi0gICAgICAgICAgICA6IGJhc2VfdHlwZShiZWdpbiwgZW5kKSB7IH0gXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKShjaGFyX3R5cGUqIGJlZ2luLCBzdGQ6OnNpemVfdCBsZW5ndGgpIFwKLSAgICAgICAgICAgIDogYmFzZV90eXBlKGJlZ2luLCBsZW5ndGgpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpKGNvbnN0IGNoYXJfdHlwZSogYmVnaW4sIGNvbnN0IGNoYXJfdHlwZSogZW5kKSBcCi0gICAgICAgICAgICA6IGJhc2VfdHlwZShiZWdpbiwgZW5kKSB7IH0gXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoYmFzaWNfLCBuYW1lKShjb25zdCBjaGFyX3R5cGUqIGJlZ2luLCBzdGQ6OnNpemVfdCBsZW5ndGgpIFwKLSAgICAgICAgICAgIDogYmFzZV90eXBlKGJlZ2luLCBsZW5ndGgpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9DVE9SKG5hbWUsIENoKSBcCi0gICAgfTsgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJhc2ljXywgbmFtZSk8Y2hhcj4gICAgIG5hbWU7IFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChiYXNpY18sIG5hbWUpPHdjaGFyX3Q+ICBORE5CT09TVF9QUF9DQVQodywgbmFtZSk7IFwKLSAgICAvKiovCi1ORE5CT09TVF9JT1NUUkVBTVNfQVJSQVkoYXJyYXlfc291cmNlLCBpbnB1dF9zZWVrYWJsZSkKLU5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWShhcnJheV9zaW5rLCBvdXRwdXRfc2Vla2FibGUpCi1ORE5CT09TVF9JT1NUUkVBTVNfQVJSQVkoYXJyYXksIHNlZWthYmxlKQotI3VuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BUlJBWV9DVE9SCi0jdW5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FSUkFZCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBhcnJheV9hZGFwdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OmFycmF5X2FkYXB0ZXIKLSAgICAoY2hhcl90eXBlKiBiZWdpbiwgY2hhcl90eXBlKiBlbmQpIAotICAgIDogYmVnaW5fKGJlZ2luKSwgZW5kXyhlbmQpIAotICAgIHsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaD4KLWFycmF5X2FkYXB0ZXI8TW9kZSwgQ2g+OjphcnJheV9hZGFwdGVyCi0gICAgKGNoYXJfdHlwZSogYmVnaW4sIHN0ZDo6c2l6ZV90IGxlbmd0aCkgCi0gICAgOiBiZWdpbl8oYmVnaW4pLCBlbmRfKGJlZ2luICsgbGVuZ3RoKSAKLSAgICB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci1hcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6YXJyYXlfYWRhcHRlcgotICAgIChjb25zdCBjaGFyX3R5cGUqIGJlZ2luLCBjb25zdCBjaGFyX3R5cGUqIGVuZCkgCi0gICAgOiBiZWdpbl8oY29uc3RfY2FzdDxjaGFyX3R5cGUqPihiZWdpbikpLCAgLy8gVHJlYXRlZCBhcyByZWFkLW9ubHkuCi0gICAgICBlbmRfKGNvbnN0X2Nhc3Q8Y2hhcl90eXBlKj4oZW5kKSkgICAgICAgLy8gVHJlYXRlZCBhcyByZWFkLW9ubHkuCi17IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OmFycmF5X2FkYXB0ZXIKLSAgICAoY29uc3QgY2hhcl90eXBlKiBiZWdpbiwgc3RkOjpzaXplX3QgbGVuZ3RoKSAKLSAgICA6IGJlZ2luXyhjb25zdF9jYXN0PGNoYXJfdHlwZSo+KGJlZ2luKSksICAgICAgIC8vIFRyZWF0ZWQgYXMgcmVhZC1vbmx5LgotICAgICAgZW5kXyhjb25zdF9jYXN0PGNoYXJfdHlwZSo+KGJlZ2luKSArIGxlbmd0aCkgLy8gVHJlYXRlZCBhcyByZWFkLW9ubHkuCi17IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19jb252ZXJ0aWJsZTxNb2RlLCBvdXRwdXQ+Ojp2YWx1ZSkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoPgotdHlwZW5hbWUgYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OnBhaXJfdHlwZQotYXJyYXlfYWRhcHRlcjxNb2RlLCBDaD46OmlucHV0X3NlcXVlbmNlKCkKLXsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+Ojp2YWx1ZSkpOwotICByZXR1cm4gcGFpcl90eXBlKGJlZ2luXywgZW5kXyk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2g+Ci10eXBlbmFtZSBhcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6cGFpcl90eXBlCi1hcnJheV9hZGFwdGVyPE1vZGUsIENoPjo6b3V0cHV0X3NlcXVlbmNlKCkKLXsgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0Pjo6dmFsdWUpKTsKLSAgcmV0dXJuIHBhaXJfdHlwZShiZWdpbl8sIGVuZF8pOyB9Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYWFjZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2JhY2tfaW5zZXJ0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gLy8gc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+Ci1jbGFzcyBiYWNrX2luc2VydF9kZXZpY2UgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiBzaW5rX3RhZyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIGJhY2tfaW5zZXJ0X2RldmljZShDb250YWluZXImIGNudCkgOiBjb250YWluZXIoJmNudCkgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyAKLSAgICAgICAgY29udGFpbmVyLT5pbnNlcnQoY29udGFpbmVyLT5lbmQoKSwgcywgcyArIG4pOyAKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIENvbnRhaW5lciogY29udGFpbmVyOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyPgotYmFja19pbnNlcnRfZGV2aWNlPENvbnRhaW5lcj4gYmFja19pbnNlcnRlcihDb250YWluZXImIGNudCkKLXsgcmV0dXJuIGJhY2tfaW5zZXJ0X2RldmljZTxDb250YWluZXI+KGNudCk7IH0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2ZpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL2ZpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGM4NWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9maWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTEVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX0xPQ0FMRQotIyBpbmNsdWRlIDxsb2NhbGU+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhdGhuYW1lcywgY2hhcl90cmFpdHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgLy8gb3Blbm1vZGUsIHNlZWtkaXIsIGludCB0eXBlcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4gICAgICAgLy8gc2Vlay4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4gICAgICAKLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1jbGFzcyBiYXNpY19maWxlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBwdWJsaWMgc2Vla2FibGVfZGV2aWNlX3RhZywKLSAgICAgICAgICBwdWJsaWMgY2xvc2FibGVfdGFnLAotICAgICAgICAgIHB1YmxpYyBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgcHVibGljIGZsdXNoYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGJhc2ljX2ZpbGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIGJhc2VfbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIGJvb2wgcHV0YmFjayhjaGFyX3R5cGUgYyk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApOwotICAgIHZvaWQgb3BlbiggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPQotICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgYmFzZV9tb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKTsKLSAgICBib29sIGlzX29wZW4oKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgYm9vbCBmbHVzaCgpOwotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fTE9DQUxFCi0gICAgdm9pZCBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbG9jKSB7IHBpbXBsXy0+ZmlsZV8ucHViaW1idWUobG9jKTsgIH0KLSNlbmRpZgotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgaW1wbCB7Ci0gICAgICAgIGltcGwoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSkKLSAgICAgICAgICAgIHsgZmlsZV8ub3BlbihwYXRoLmNfc3RyKCksIG1vZGUpOyB9Ci0gICAgICAgIH5pbXBsKCkgeyBpZiAoZmlsZV8uaXNfb3BlbigpKSBmaWxlXy5jbG9zZSgpOyB9Ci0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19GSUxFQlVGKENoKSBmaWxlXzsKLSAgICB9OwotICAgIHNoYXJlZF9wdHI8aW1wbD4gcGltcGxfOwotfTsKLQotdHlwZWRlZiBiYXNpY19maWxlPGNoYXI+ICAgICBmaWxlOwotdHlwZWRlZiBiYXNpY19maWxlPHdjaGFyX3Q+ICB3ZmlsZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgYmFzaWNfZmlsZV9zb3VyY2UgOiBwcml2YXRlIGJhc2ljX2ZpbGU8Q2g+IHsKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBpbnB1dF9zZWVrYWJsZSwKLSAgICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OnJlYWQ7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OnB1dGJhY2s7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OnNlZWs7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OmlzX29wZW47Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OmNsb3NlOwotICAgIGJhc2ljX2ZpbGVfc291cmNlKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluICkKLSAgICAgICAgOiBiYXNpY19maWxlPENoPihwYXRoLCBtb2RlICYgfk5ETkJPT1NUX0lPUzo6b3V0LCBORE5CT09TVF9JT1M6OmluKQotICAgICAgICB7IH0KLSAgICB2b2lkIG9wZW4oIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjppbiApCi0gICAgewotICAgICAgICBiYXNpY19maWxlPENoPjo6b3BlbihwYXRoLCBtb2RlICYgfk5ETkJPT1NUX0lPUzo6b3V0LCBORE5CT09TVF9JT1M6OmluKTsKLSAgICB9Ci19OwotCi10eXBlZGVmIGJhc2ljX2ZpbGVfc291cmNlPGNoYXI+ICAgICBmaWxlX3NvdXJjZTsKLXR5cGVkZWYgYmFzaWNfZmlsZV9zb3VyY2U8d2NoYXJfdD4gIHdmaWxlX3NvdXJjZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgYmFzaWNfZmlsZV9zaW5rIDogcHJpdmF0ZSBiYXNpY19maWxlPENoPiB7Ci0gICAgdHlwZWRlZiBDaCBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgICAgIGRldmljZV90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIHVzaW5nIGJhc2ljX2ZpbGU8Q2g+Ojp3cml0ZTsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6c2VlazsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6aXNfb3BlbjsKLSAgICB1c2luZyBiYXNpY19maWxlPENoPjo6Y2xvc2U7Ci0gICAgdXNpbmcgYmFzaWNfZmlsZTxDaD46OmZsdXNoOwotICAgIGJhc2ljX2ZpbGVfc2luayggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6Om91dCApCi0gICAgICAgIDogYmFzaWNfZmlsZTxDaD4ocGF0aCwgbW9kZSAmIH5ORE5CT09TVF9JT1M6OmluLCBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgeyB9Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7Ci0gICAgICAgIGJhc2ljX2ZpbGU8Q2g+OjpvcGVuKHBhdGgsIG1vZGUgJiB+TkROQk9PU1RfSU9TOjppbiwgTkROQk9PU1RfSU9TOjpvdXQpOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgYmFzaWNfZmlsZV9zaW5rPGNoYXI+ICAgICBmaWxlX3Npbms7Ci10eXBlZGVmIGJhc2ljX2ZpbGVfc2luazx3Y2hhcl90PiAgd2ZpbGVfc2luazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiYXNpY19maWxlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1iYXNpY19maWxlPENoPjo6YmFzaWNfZmlsZQotICAgICggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSwgCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIGJhc2VfbW9kZSApCi17IAotICAgIG9wZW4ocGF0aCwgbW9kZSwgYmFzZV9tb2RlKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIGJhc2ljX2ZpbGU8Q2g+OjpyZWFkCi0gICAgKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IAotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSBwaW1wbF8tPmZpbGVfLnNnZXRuKHMsIG4pOyAKLSAgICByZXR1cm4gcmVzdWx0ICE9IDAgPyByZXN1bHQgOiAtMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1pbmxpbmUgYm9vbCBiYXNpY19maWxlPENoPjo6cHV0YmFjayhjaGFyX3R5cGUgYykKLXsgCi0gICAgcmV0dXJuICEhcGltcGxfLT5maWxlXy5zcHV0YmFja2MoYyk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgYmFzaWNfZmlsZTxDaD46OndyaXRlCi0gICAgKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBwaW1wbF8tPmZpbGVfLnNwdXRuKHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RkOjpzdHJlYW1wb3MgYmFzaWNfZmlsZTxDaD46OnNlZWsKLSAgICAoIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LCAKLSAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgKQoteyByZXR1cm4gaW9zdHJlYW1zOjpzZWVrKHBpbXBsXy0+ZmlsZV8sIG9mZiwgd2F5KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXZvaWQgYmFzaWNfZmlsZTxDaD46Om9wZW4KLSAgICAoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUsIAotICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBiYXNlX21vZGUgKQoteyAKLSAgICBwaW1wbF8ucmVzZXQobmV3IGltcGwocGF0aCwgbW9kZSB8IGJhc2VfbW9kZSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWJvb2wgYmFzaWNfZmlsZTxDaD46OmlzX29wZW4oKSBjb25zdCB7IHJldHVybiBwaW1wbF8tPmZpbGVfLmlzX29wZW4oKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLXZvaWQgYmFzaWNfZmlsZTxDaD46OmNsb3NlKCkgeyBwaW1wbF8tPmZpbGVfLmNsb3NlKCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1ib29sIGJhc2ljX2ZpbGU8Q2g+OjpmbHVzaCgpCi17IHJldHVybiBwaW1wbF8tPmZpbGVfLk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCkgPT0gMDsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+IC8vIE1TVkMKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvZmlsZV9kZXNjcmlwdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9maWxlX2Rlc2NyaXB0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVhODllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9maWxlX2Rlc2NyaXB0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzE4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBJbnNwaXJlZCBieSBmZHN0cmVhbS5ocHAsIChDKSBDb3B5cmlnaHQgTmljb2xhaSBNLiBKb3N1dHRpcyAyMDAxLAotLy8gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuam9zdXR0aXMuY29tL2NwcGNvZGUvZmRzdHJlYW0uaHRtbC4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9ERVNDUklQVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRklMRV9ERVNDUklQVE9SX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gICAgICAgICAgICAgICAvLyBpbnRtYXhfdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+ICAvLyB0YWdzLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZHluX2xpbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpbmRvd3NfcG9zaXguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZmlsZV9oYW5kbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIG9wZW5tb2RlLCBzZWVrZGlyLCBpbnQgdHlwZXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wYXRoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3ByZWZpeC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucwotY2xhc3MgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZTsKLWNsYXNzIGZpbGVfZGVzY3JpcHRvcl9zaW5rOwotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCBmaWxlX2Rlc2NyaXB0b3JfaW1wbDsgfQotCi1lbnVtIGZpbGVfZGVzY3JpcHRvcl9mbGFncwotewotICAgIG5ldmVyX2Nsb3NlX2hhbmRsZSA9IDAsCi0gICAgY2xvc2VfaGFuZGxlID0gMwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZmlsZV9kZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSAgICBmcmllbmQgY2xhc3MgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZTsKLSAgICBmcmllbmQgY2xhc3MgZmlsZV9kZXNjcmlwdG9yX3Npbms7Ci0gICAgdHlwZWRlZiBkZXRhaWw6OmZpbGVfaGFuZGxlICBoYW5kbGVfdHlwZTsKLSAgICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBzZWVrYWJsZV9kZXZpY2VfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgZmlsZV9kZXNjcmlwdG9yKCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnMgdGFraW5nIGZpbGUgZGVzY2lwdG9ycwotICAgIGZpbGVfZGVzY3JpcHRvcihoYW5kbGVfdHlwZSBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGZpbGVfZGVzY3JpcHRvcihpbnQgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1VTRV9ERVBSRUNBVEVEKQotICAgIC8vIENvbnN0cnVjdG9ycyB0YWtpbmcgZmlsZSBkZXNjaXB0b3JzCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yKGhhbmRsZV90eXBlIGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3IoaW50IGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgc3RkOjogc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBDLXN0eWxlIHN0cmluZwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvciggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBCb29zdC5GaWxlc3lzdGVtIHBhdGgKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvciggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IAotICAgICAgICBpbml0KCk7Ci0gICAgICAgIG9wZW4oZGV0YWlsOjpwYXRoKHBhdGgpLCBtb2RlKTsgCi0gICAgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIGZpbGVfZGVzY3JpcHRvcihjb25zdCBmaWxlX2Rlc2NyaXB0b3ImIG90aGVyKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWRzIHRha2luZyBmaWxlIGRlc2NyaXB0b3JzCi0gICAgdm9pZCBvcGVuKGhhbmRsZV90eXBlIGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdm9pZCBvcGVuKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gb3BlbiBvdmVybG9hZHMgdGFraW5nIGZpbGUgZGVzY3JpcHRvcnMKLSAgICB2b2lkIG9wZW4oaGFuZGxlX3R5cGUgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHZvaWQgb3BlbihpbnQgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHN0ZDo6c3RyaW5nCi0gICAgdm9pZCBvcGVuKCBjb25zdCBzdGQ6OnN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBDLXN0eWxlIHN0cmluZwotICAgIHZvaWQgb3BlbiggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9Ci0gICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQotICAgIHsgb3BlbihkZXRhaWw6OnBhdGgocGF0aCksIG1vZGUpOyB9Ci0KLSAgICBib29sIGlzX29wZW4oKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbik7Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pOwotICAgIHN0ZDo6c3RyZWFtcG9zIHNlZWsoc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXkpOwotICAgIGhhbmRsZV90eXBlIGhhbmRsZSgpIGNvbnN0OwotcHJpdmF0ZToKLSAgICB2b2lkIGluaXQoKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgZGV0YWlsOjpwYXRoCi0gICAgdm9pZCBvcGVuKCBjb25zdCBkZXRhaWw6OnBhdGgmIHBhdGgsIAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSwgCi0gICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlID0gTkROQk9PU1RfSU9TOjpvcGVubW9kZSgwKSApOwotCi0gICAgdHlwZWRlZiBkZXRhaWw6OmZpbGVfZGVzY3JpcHRvcl9pbXBsIGltcGxfdHlwZTsKLSAgICBzaGFyZWRfcHRyPGltcGxfdHlwZT4gcGltcGxfOwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZSA6IHByaXZhdGUgZmlsZV9kZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHR5cGVkZWYgdm9pZCogIGhhbmRsZV90eXBlOyAgLy8gQS5rLmEgSEFORExFCi0jZWxzZQotICAgIHR5cGVkZWYgaW50ICAgIGhhbmRsZV90eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiBjaGFyICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgOiBpbnB1dF9zZWVrYWJsZSwKLSAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICB7IH07Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjppc19vcGVuOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6Y2xvc2U7Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjpyZWFkOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6c2VlazsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmhhbmRsZTsKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKCkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnMgdGFraW5nIGZpbGUgZGVzY2lwdG9ycwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoaGFuZGxlX3R5cGUgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGhhbmRsZV90eXBlIGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGludCBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIHN0ZDo6IHN0cmluZwotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4gKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEMtc3R5bGUgc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NvdXJjZSggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluICk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBCb29zdC5GaWxlc3lzdGVtIHBhdGgKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UoIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjppbiApCi0gICAgeyBvcGVuKGRldGFpbDo6cGF0aChwYXRoKSwgbW9kZSk7IH0KLQotICAgIC8vIENvcHkgY29uc3RydWN0b3IKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc291cmNlKGNvbnN0IGZpbGVfZGVzY3JpcHRvcl9zb3VyY2UmIG90aGVyKTsKLQotICAgIC8vIENvbnN0cnVjdG9ycyB0YWtpbmcgZmlsZSBkZXNjaXB0b3JzCi0gICAgdm9pZCBvcGVuKGhhbmRsZV90eXBlIGZkLCBmaWxlX2Rlc2NyaXB0b3JfZmxhZ3MpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgdm9pZCBvcGVuKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gb3BlbiBvdmVybG9hZHMgdGFraW5nIGZpbGUgZGVzY3JpcHRvcnMKLSAgICB2b2lkIG9wZW4oaGFuZGxlX3R5cGUgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHZvaWQgb3BlbihpbnQgZmQsIGJvb2wgY2xvc2Vfb25fZXhpdCA9IGZhbHNlKTsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHN0ZDo6c3RyaW5nCi0gICAgdm9pZCBvcGVuKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIEMtc3R5bGUgc3RyaW5nCi0gICAgdm9pZCBvcGVuKGNvbnN0IGNoYXIqIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6aW4pOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBCb29zdC5GaWxlc3lzdGVtIHBhdGgKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHZvaWQgb3Blbihjb25zdCBQYXRoJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6OmluKTsKLXByaXZhdGU6Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIGRldGFpbDo6cGF0aAotICAgIHZvaWQgb3Blbihjb25zdCBkZXRhaWw6OnBhdGgmIHBhdGgsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpOwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZmlsZV9kZXNjcmlwdG9yX3NpbmsgOiBwcml2YXRlIGZpbGVfZGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICB0eXBlZGVmIHZvaWQqICBoYW5kbGVfdHlwZTsgIC8vIEEuay5hIEhBTkRMRQotI2Vsc2UKLSAgICB0eXBlZGVmIGludCAgICBoYW5kbGVfdHlwZTsKLSNlbmRpZgotICAgIHR5cGVkZWYgY2hhciAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgIDogb3V0cHV0X3NlZWthYmxlLAotICAgICAgICBkZXZpY2VfdGFnLAotICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgIHsgfTsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmlzX29wZW47Ci0gICAgdXNpbmcgZmlsZV9kZXNjcmlwdG9yOjpjbG9zZTsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OndyaXRlOwotICAgIHVzaW5nIGZpbGVfZGVzY3JpcHRvcjo6c2VlazsKLSAgICB1c2luZyBmaWxlX2Rlc2NyaXB0b3I6OmhhbmRsZTsKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc2luaygpIHsgfQotCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICBmaWxlX2Rlc2NyaXB0b3Jfc2luayhoYW5kbGVfdHlwZSBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIGZpbGVfZGVzY3JpcHRvcl9zaW5rKGludCBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9JT1NUUkVBTVNfVVNFX0RFUFJFQ0FURUQpCi0gICAgLy8gQ29uc3RydWN0b3JzIHRha2luZyBmaWxlIGRlc2NpcHRvcnMKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc2luayhoYW5kbGVfdHlwZSBmZCwgYm9vbCBjbG9zZV9vbl9leGl0ID0gZmFsc2UpOwotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19XSU5ET1dTCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NpbmsoaW50IGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgc3RkOjogc3RyaW5nCi0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NpbmsoIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPSBORE5CT09TVF9JT1M6Om91dCApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgQy1zdHlsZSBzdHJpbmcKLSAgICBleHBsaWNpdCBmaWxlX2Rlc2NyaXB0b3Jfc2luayggY29uc3QgY2hhciogcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgZmlsZV9kZXNjcmlwdG9yX3NpbmsoIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IG9wZW4oZGV0YWlsOjpwYXRoKHBhdGgpLCBtb2RlKTsgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIGZpbGVfZGVzY3JpcHRvcl9zaW5rKGNvbnN0IGZpbGVfZGVzY3JpcHRvcl9zaW5rJiBvdGhlcik7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkcyB0YWtpbmcgZmlsZSBkZXNjcmlwdG9ycwotICAgIHZvaWQgb3BlbihoYW5kbGVfdHlwZSBmZCwgZmlsZV9kZXNjcmlwdG9yX2ZsYWdzKTsKLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV0lORE9XUwotICAgIHZvaWQgb3BlbihpbnQgZmQsIGZpbGVfZGVzY3JpcHRvcl9mbGFncyk7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSU9TVFJFQU1TX1VTRV9ERVBSRUNBVEVEKQotICAgIC8vIG9wZW4gb3ZlcmxvYWRzIHRha2luZyBmaWxlIGRlc2NyaXB0b3JzCi0gICAgdm9pZCBvcGVuKGhhbmRsZV90eXBlIGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jaWZkZWYgTkROQk9PU1RfSU9TVFJFQU1TX1dJTkRPV1MKLSAgICB2b2lkIG9wZW4oaW50IGZkLCBib29sIGNsb3NlX29uX2V4aXQgPSBmYWxzZSk7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBzdGQ6OnN0cmluZwotICAgIHZvaWQgb3BlbiggY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgsIAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0gTkROQk9PU1RfSU9TOjpvdXQgKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIEMtc3R5bGUgc3RyaW5nCi0gICAgdm9pZCBvcGVuKCBjb25zdCBjaGFyKiBwYXRoLCAKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIEJvb3N0LkZpbGVzeXN0ZW0gcGF0aAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLCAKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbW9kZSA9IE5ETkJPT1NUX0lPUzo6b3V0ICkKLSAgICB7IG9wZW4oZGV0YWlsOjpwYXRoKHBhdGgpLCBtb2RlKTsgfQotcHJpdmF0ZToKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgZGV0YWlsOjpwYXRoCi0gICAgdm9pZCBvcGVuKGNvbnN0IGRldGFpbDo6cGF0aCYgcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSk7Ci19OwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcD4gLy8gcG9wcyBhYmlfc3VmZml4LmhwcCBwcmFnbWFzCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxFX0RFU0NSSVBUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbWFwcGVkX2ZpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL21hcHBlZF9maWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhmYmQ1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbWFwcGVkX2ZpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTk5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgSm9yZ2UgTG9kb3MgMjAwOC4KLS8vIChDKSBDb3B5cmlnaHQgSm9uYXRoYW4gVHVya2FuaXMgMjAwMy4KLS8vIChDKSBDb3B5cmlnaHQgQ3JhaWcgSGVuZGVyc29uIDIwMDIuICAgJ2Jvb3N0L21lbW1hcC5ocHAnIGZyb20gc2FuZGJveAotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19NQVBQRURfRklMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX01BUFBFRF9GSUxFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBzaXplX3QgaXMgaW4gc3RkLgotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemVfdC4KLSNpbmNsdWRlIDxzdHJpbmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXRobmFtZXMuCi0jaW5jbHVkZSA8dXRpbGl0eT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFpci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2xvc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25jZXB0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9keW5fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvd2lkZV9zdHJlYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+ICAgICAvLyBvcGVubW9kZSwgZmFpbHVyZQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcGF0aC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcG9zaXRpb25pbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBtYXBwZWRfZmlsZV9iYXNlIGFuZCBtYXBwZWRfZmlsZV9wYXJhbXMtLS0tLS8vCi0KLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zCi1jbGFzcyBtYXBwZWRfZmlsZV9zb3VyY2U7Ci1jbGFzcyBtYXBwZWRfZmlsZV9zaW5rOwotY2xhc3MgbWFwcGVkX2ZpbGU7Ci1uYW1lc3BhY2UgZGV0YWlsIHsgY2xhc3MgbWFwcGVkX2ZpbGVfaW1wbDsgfQotCi1jbGFzcyBtYXBwZWRfZmlsZV9iYXNlIHsKLXB1YmxpYzoKLSAgICBlbnVtIG1hcG1vZGUgewotICAgICAgICByZWFkb25seSA9IDEsCi0gICAgICAgIHJlYWR3cml0ZSA9IDIsCi0gICAgICAgIHByaXYgPSA0Ci0gICAgfTsKLX07Ci0KLS8vIEJpdG1hc2sgb3BlcmF0aW9ucyBmb3IgbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZQotbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSAKLW9wZXJhdG9yfChtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGEsIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYik7Ci0KLW1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgCi1vcGVyYXRvciYobWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3JeKG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgYSwgbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSBiKTsKLQotbWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZSAKLW9wZXJhdG9yfihtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGEpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3J8PShtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3ImPShtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi1tYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIAotb3BlcmF0b3JePShtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZV9iYXNlOjptYXBtb2RlIGIpOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbWFwcGVkX2ZpbGVfcGFyYW1zLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotc3RydWN0IG1hcHBlZF9maWxlX3BhcmFtc19iYXNlIHsKLSAgICBtYXBwZWRfZmlsZV9wYXJhbXNfYmFzZSgpCi0gICAgICAgIDogZmxhZ3Moc3RhdGljX2Nhc3Q8bWFwcGVkX2ZpbGVfYmFzZTo6bWFwbW9kZT4oMCkpLCAKLSAgICAgICAgICBtb2RlKCksIG9mZnNldCgwKSwgbGVuZ3RoKHN0YXRpY19jYXN0PHN0ZDo6c2l6ZV90PigtMSkpLCAKLSAgICAgICAgICBuZXdfZmlsZV9zaXplKDApLCBoaW50KDApCi0gICAgICAgIHsgfQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgbWFwcGVkX2ZpbGVfaW1wbDsKLSAgICB2b2lkIG5vcm1hbGl6ZSgpOwotcHVibGljOgotICAgIG1hcHBlZF9maWxlX2Jhc2U6Om1hcG1vZGUgICBmbGFnczsKLSAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlICAgICAgICAgbW9kZTsgIC8vIERlcHJlY2F0ZWQKLSAgICBzdHJlYW1fb2Zmc2V0ICAgICAgICAgICAgICAgb2Zmc2V0OwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICBsZW5ndGg7Ci0gICAgc3RyZWFtX29mZnNldCAgICAgICAgICAgICAgIG5ld19maWxlX3NpemU7Ci0gICAgY29uc3QgY2hhciogICAgICAgICAgICAgICAgIGhpbnQ7Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLyBUaGlzIHRlbXBsYXRlIGFsbG93cyBCb29zdC5GaWxlc3lzdGVtIHBhdGhzIHRvIGJlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nIG9yCi0vLyByZW9wZW5pbmcgYSBtZW1vcnkgbWFwcGVkIGZpbGUsIHdpdGhvdXQgY3JlYXRpbmcgYSBkZXBlbmRlbmNlIG9uCi0vLyBCb29zdC5GaWxlc3lzdGVtLiBQb3NzaWJsZSB2YWx1ZXMgb2YgUGF0aCBpbmNsdWRlIHN0ZDo6c3RyaW5nLAotLy8gbmRuYm9vc3Q6OmZpbGVzeXN0ZW06OnBhdGgsIG5kbmJvb3N0OjpmaWxlc3lzdGVtOjp3cGF0aCwgCi0vLyBhbmQgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpwYXRoICh1c2VkIHRvIHN0b3JlIGVpdGhlciBhIHN0ZDo6c3RyaW5nIG9yIGEKLS8vIHN0ZDo6d3N0cmluZykuCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotc3RydWN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyAKLSAgICA6IGRldGFpbDo6bWFwcGVkX2ZpbGVfcGFyYW1zX2Jhc2UgCi17Ci0gICAgdHlwZWRlZiBkZXRhaWw6Om1hcHBlZF9maWxlX3BhcmFtc19iYXNlIGJhc2VfdHlwZTsKLQotICAgIC8vIEZvciB3aWRlIHBhdGhzLCBpbnN0YW50aWF0ZSBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXMgCi0gICAgLy8gd2l0aCBuZG5ib29zdDo6ZmlsZXN5c3RlbTo6d3BhdGgKLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCFpc19zYW1lPFBhdGgsIHN0ZDo6d3N0cmluZz46OnZhbHVlKSk7Ci0jZW5kaWYKLQotICAgIC8vIERlZmF1bHQgY29uc3RydWN0b3IKLSAgICBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXMoKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdGlvbiBmcm9tIGEgUGF0aAotICAgIGV4cGxpY2l0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBQYXRoJiBwKSA6IHBhdGgocCkgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3Rpb24gZnJvbSBhIHBhdGggb2YgYSBkaWZmZXJlbnQgdHlwZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGhUPgotICAgIGV4cGxpY2l0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBQYXRoVCYgcCkgOiBwYXRoKHApIHsgfQotCi0gICAgLy8gQ29weSBjb25zdHJ1Y3RvcgotICAgIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXMmIG90aGVyKQotICAgICAgICA6IGJhc2VfdHlwZShvdGhlciksIHBhdGgob3RoZXIucGF0aCkKLSAgICAgICAgeyB9Ci0KLSAgICAvLyBUZW1wbGF0ZWQgY29weSBjb25zdHJ1Y3RvcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGhUPgotICAgIGJhc2ljX21hcHBlZF9maWxlX3BhcmFtcyhjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aFQ+JiBvdGhlcikKLSAgICAgICAgOiBiYXNlX3R5cGUob3RoZXIpLCBwYXRoKG90aGVyLnBhdGgpCi0gICAgICAgIHsgfQotCi0gICAgdHlwZWRlZiBQYXRoICBwYXRoX3R5cGU7Ci0gICAgUGF0aCAgICAgICAgICBwYXRoOwotfTsKLQotdHlwZWRlZiBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8c3RkOjpzdHJpbmc+IG1hcHBlZF9maWxlX3BhcmFtczsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcHBlZF9maWxlX3NvdXJjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgbWFwcGVkX2ZpbGVfc291cmNlIDogcHVibGljIG1hcHBlZF9maWxlX2Jhc2UgewotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qgc2FmZV9ib29sX2hlbHBlciB7IGludCB4OyB9OwotICAgIHR5cGVkZWYgaW50IHNhZmVfYm9vbF9oZWxwZXI6OiogICAgICAgICAgICAgICAgIHNhZmVfYm9vbDsKLSAgICB0eXBlZGVmIGRldGFpbDo6bWFwcGVkX2ZpbGVfaW1wbCAgICAgICAgICAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8ZGV0YWlsOjpwYXRoPiAgcGFyYW1fdHlwZTsKLSAgICBmcmllbmQgY2xhc3MgbWFwcGVkX2ZpbGU7Ci0gICAgZnJpZW5kIGNsYXNzIGRldGFpbDo6bWFwcGVkX2ZpbGVfaW1wbDsKLSAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojppb3N0cmVhbXM6Om9wZXJhdGlvbnM8bWFwcGVkX2ZpbGVfc291cmNlPjsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogcHVibGljIHNvdXJjZV90YWcsCi0gICAgICAgICAgcHVibGljIGRpcmVjdF90YWcsCi0gICAgICAgICAgcHVibGljIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgY2hhciogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzaXplX3R5cGUsIG1heF9sZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKSk7Ci0KLSAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGVfc291cmNlKCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBwYXJhbWV0ZXJzIG9iamVjdAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgZXhwbGljaXQgbWFwcGVkX2ZpbGVfc291cmNlKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlX3NvdXJjZSggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBsZW5ndGggPSBtYXhfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCA9IDAgKTsKLQotICAgIC8vIENvcHkgQ29uc3RydWN0b3IKLSAgICBtYXBwZWRfZmlsZV9zb3VyY2UoY29uc3QgbWFwcGVkX2ZpbGVfc291cmNlJiBvdGhlcik7Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tU3RyZWFtIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIHZvaWQgb3Blbihjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgIG5kbmJvb3N0OjppbnRtYXhfdCBvZmZzZXQgPSAwICk7Ci0KLSAgICBib29sIGlzX29wZW4oKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKCk7Ci0gICAgb3BlcmF0b3Igc2FmZV9ib29sKCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLSAgICBtYXBtb2RlIGZsYWdzKCkgY29uc3Q7Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tQ29udGFpbmVyIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0OwotCi0gICAgLy8tLS0tLS0tLS0tLS0tLVF1ZXJ5IGFkbWlzc2libGUgb2Zmc2V0cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gUmV0dXJucyB0aGUgYWxsb2NhdGlvbiBncmFudWxhcml0eSBmb3IgdmlydHVhbCBtZW1vcnkuIFZhbHVlcyBwYXNzZWQKLSAgICAvLyBhcyBvZmZzZXRzIG11c3QgYmUgbXVsdGlwbGVzIG9mIHRoaXMgdmFsdWUuCi0gICAgc3RhdGljIGludCBhbGlnbm1lbnQoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXQoKTsKLSAgICB2b2lkIG9wZW5faW1wbChjb25zdCBwYXJhbV90eXBlJiBwKTsKLQotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGltcGxfdHlwZT4gcGltcGxfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcHBlZF9maWxlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgbWFwcGVkX2ZpbGUgOiBwdWJsaWMgbWFwcGVkX2ZpbGVfYmFzZSB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgbWFwcGVkX2ZpbGVfc291cmNlICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlX3R5cGU7Ci0gICAgdHlwZWRlZiBkZWxlZ2F0ZV90eXBlOjpzYWZlX2Jvb2wgICAgICAgICAgICAgICAgc2FmZV9ib29sOwotICAgIHR5cGVkZWYgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPGRldGFpbDo6cGF0aD4gIHBhcmFtX3R5cGU7Ci0gICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6aW9zdHJlYW1zOjpvcGVyYXRpb25zPG1hcHBlZF9maWxlID47Ci0gICAgZnJpZW5kIGNsYXNzIG1hcHBlZF9maWxlX3Npbms7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHB1YmxpYyBzZWVrYWJsZV9kZXZpY2VfdGFnLAotICAgICAgICAgIHB1YmxpYyBkaXJlY3RfdGFnLAotICAgICAgICAgIHB1YmxpYyBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIHR5cGVkZWYgbWFwcGVkX2ZpbGVfc291cmNlOjpzaXplX3R5cGUgICAgICAgICAgIHNpemVfdHlwZTsKLSAgICB0eXBlZGVmIGNoYXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIGNvbnN0IGNoYXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc2l6ZV90eXBlLCBtYXhfbGVuZ3RoID0gZGVsZWdhdGVfdHlwZTo6bWF4X2xlbmd0aCk7Ci0KLSAgICAvLyBEZWZhdWx0IGNvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGUoKSB7IH0KLQotICAgIC8vIENvbnN0cnVzdG9yIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBtYXBwZWRfZmlsZShjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBtYXBwZWRfZmlsZSggY29uc3QgUGF0aCYgcGF0aCwKLSAgICAgICAgICAgICAgICAgbWFwbW9kZSBmbGFncywKLSAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIGxlbmd0aCA9IG1heF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ID0gMCApOwotCi0gICAgLy8gQ29uc3RydWN0b3IgdGFraW5nIGEgbGlzdCBvZiBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcgYSAKLSAgICAvLyBzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSAoZGVwcmVjYXRlZCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBvZmZzZXQgPSAwICk7Ci0KLSAgICAvLyBDb3B5IENvbnN0cnVjdG9yCi0gICAgbWFwcGVkX2ZpbGUoY29uc3QgbWFwcGVkX2ZpbGUmIG90aGVyKTsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS1Db252ZXJzaW9uIHRvIG1hcHBlZF9maWxlX3NvdXJjZSAoZGVwcmVjYXRlZCktLS0tLS0tLS0tLS0tLy8KLQotICAgIG9wZXJhdG9yIG1hcHBlZF9maWxlX3NvdXJjZSYoKSB7IHJldHVybiBkZWxlZ2F0ZV87IH0KLSAgICBvcGVyYXRvciBjb25zdCBtYXBwZWRfZmlsZV9zb3VyY2UmKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tU3RyZWFtIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKTsKLQotICAgIC8vIG9wZW4gb3ZlcmxvYWQgdGFraW5nIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICB2b2lkIG9wZW4oIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICBtYXBtb2RlIG1vZGUsCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ID0gMCApOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMsIGluY2x1ZGluZyBhIAotICAgIC8vIHN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIChkZXByZWNhdGVkKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlID0KLSAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQsCi0gICAgICAgICAgICAgICBzaXplX3R5cGUgbGVuZ3RoID0gbWF4X2xlbmd0aCwKLSAgICAgICAgICAgICAgIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ID0gMCApOwotCi0gICAgYm9vbCBpc19vcGVuKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfLmlzX29wZW4oKTsgfQotICAgIHZvaWQgY2xvc2UoKSB7IGRlbGVnYXRlXy5jbG9zZSgpOyB9Ci0gICAgb3BlcmF0b3Igc2FmZV9ib29sKCkgY29uc3QgeyByZXR1cm4gZGVsZWdhdGVfOyB9Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhZGVsZWdhdGVfOyB9Ci0gICAgbWFwbW9kZSBmbGFncygpIGNvbnN0IHsgcmV0dXJuIGRlbGVnYXRlXy5mbGFncygpOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tQ29udGFpbmVyIGludGVyZmFjZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGRlbGVnYXRlXy5zaXplKCk7IH0KLSAgICBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogY29uc3RfZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGRlbGVnYXRlXy5kYXRhKCk7IH0KLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKTsgfQotICAgIGNvbnN0X2l0ZXJhdG9yIGNvbnN0X2JlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfZGF0YSgpOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpICsgc2l6ZSgpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgY29uc3RfZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfZGF0YSgpICsgc2l6ZSgpOyB9Ci0KLSAgICAvLy0tLS0tLS0tLS0tLS0tUXVlcnkgYWRtaXNzaWJsZSBvZmZzZXRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAvLyBSZXR1cm5zIHRoZSBhbGxvY2F0aW9uIGdyYW51bGFyaXR5IGZvciB2aXJ0dWFsIG1lbW9yeS4gVmFsdWVzIHBhc3NlZAotICAgIC8vIGFzIG9mZnNldHMgbXVzdCBiZSBtdWx0aXBsZXMgb2YgdGhpcyB2YWx1ZS4KLSAgICBzdGF0aWMgaW50IGFsaWdubWVudCgpIHsgcmV0dXJuIG1hcHBlZF9maWxlX3NvdXJjZTo6YWxpZ25tZW50KCk7IH0KLQotICAgIC8vLS0tLS0tLS0tLS0tLS1GaWxlIGFjY2Vzcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgdm9pZCByZXNpemUoc3RyZWFtX29mZnNldCBuZXdfc2l6ZSk7Ci1wcml2YXRlOgotICAgIGRlbGVnYXRlX3R5cGUgZGVsZWdhdGVfOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcHBlZF9maWxlX3NpbmstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgbWFwcGVkX2ZpbGVfc2luayA6IHByaXZhdGUgbWFwcGVkX2ZpbGUgewotcHVibGljOgotICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6Omlvc3RyZWFtczo6b3BlcmF0aW9uczxtYXBwZWRfZmlsZV9zaW5rPjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6bWFwbW9kZTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6cmVhZG9ubHk7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OnJlYWR3cml0ZTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6cHJpdjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6Y2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IHB1YmxpYyBzaW5rX3RhZywKLSAgICAgICAgICBwdWJsaWMgZGlyZWN0X3RhZywKLSAgICAgICAgICBwdWJsaWMgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6c2l6ZV90eXBlOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjppdGVyYXRvcjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6bWF4X2xlbmd0aDsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6aXNfb3BlbjsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6Y2xvc2U7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6Om9wZXJhdG9yIHNhZmVfYm9vbDsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6b3BlcmF0b3IgITsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6ZmxhZ3M7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OnNpemU7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OmRhdGE7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OmJlZ2luOwotICAgIHVzaW5nIG1hcHBlZF9maWxlOjplbmQ7Ci0gICAgdXNpbmcgbWFwcGVkX2ZpbGU6OmFsaWdubWVudDsKLSAgICB1c2luZyBtYXBwZWRfZmlsZTo6cmVzaXplOwotCi0gICAgLy8gRGVmYXVsdCBjb25zdHJ1Y3RvcgotICAgIG1hcHBlZF9maWxlX3NpbmsoKSB7IH0KLQotICAgIC8vIENvbnN0cnVjdG9yIHRha2luZyBhIHBhcmFtZXRlcnMgb2JqZWN0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLSAgICBleHBsaWNpdCBtYXBwZWRfZmlsZV9zaW5rKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciB0YWtpbmcgYSBsaXN0IG9mIHBhcmFtZXRlcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotICAgIGV4cGxpY2l0IG1hcHBlZF9maWxlX3NpbmsoIGNvbnN0IFBhdGgmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIGxlbmd0aCA9IG1heF9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwbW9kZSBmbGFncyA9IHJlYWR3cml0ZSApOwotCi0gICAgLy8gQ29weSBDb25zdHJ1Y3RvcgotICAgIG1hcHBlZF9maWxlX3NpbmsoY29uc3QgbWFwcGVkX2ZpbGVfc2luayYgb3RoZXIpOwotCi0gICAgLy8gb3BlbiBvdmVybG9hZCB0YWtpbmcgYSBwYXJhbWV0ZXJzIG9iamVjdAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCk7Ci0KLSAgICAvLyBvcGVuIG92ZXJsb2FkIHRha2luZyBhIGxpc3Qgb2YgcGFyYW1ldGVycwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci0gICAgdm9pZCBvcGVuKCBjb25zdCBQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgc2l6ZV90eXBlIGxlbmd0aCA9IG1heF9sZW5ndGgsCi0gICAgICAgICAgICAgICBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0ID0gMCwKLSAgICAgICAgICAgICAgIG1hcG1vZGUgZmxhZ3MgPSByZWFkd3JpdGUgKTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgbWFwcGVkX2ZpbGVfc291cmNlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZV9zb3VyY2U6Om1hcHBlZF9maWxlX3NvdXJjZShjb25zdCBiYXNpY19tYXBwZWRfZmlsZV9wYXJhbXM8UGF0aD4mIHApCi17IGluaXQoKTsgb3BlbihwKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGVfc291cmNlOjptYXBwZWRfZmlsZV9zb3VyY2UoIAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIHNpemVfdHlwZSBsZW5ndGgsIG5kbmJvb3N0OjppbnRtYXhfdCBvZmZzZXQpCi17IGluaXQoKTsgb3BlbihwYXRoLCBsZW5ndGgsIG9mZnNldCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLXZvaWQgbWFwcGVkX2ZpbGVfc291cmNlOjpvcGVuKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCkKLXsKLSAgICBwYXJhbV90eXBlIHBhcmFtcyhwKTsKLSAgICBpZiAocGFyYW1zLmZsYWdzKSB7Ci0gICAgICAgIGlmIChwYXJhbXMuZmxhZ3MgIT0gbWFwcGVkX2ZpbGU6OnJlYWRvbmx5KQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiaW52YWxpZCBmbGFncyIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAocGFyYW1zLm1vZGUgJiBORE5CT09TVF9JT1M6Om91dCkKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImludmFsaWQgbW9kZSIpKTsKLSAgICAgICAgcGFyYW1zLm1vZGUgfD0gTkROQk9PU1RfSU9TOjppbjsKLSAgICB9Ci0gICAgb3Blbl9pbXBsKHBhcmFtcyk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci12b2lkIG1hcHBlZF9maWxlX3NvdXJjZTo6b3BlbigKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBzaXplX3R5cGUgbGVuZ3RoLCBuZG5ib29zdDo6aW50bWF4X3Qgb2Zmc2V0KQotewotICAgIHBhcmFtX3R5cGUgcChwYXRoKTsKLSAgICBwLmxlbmd0aCA9IGxlbmd0aDsKLSAgICBwLm9mZnNldCA9IG9mZnNldDsKLSAgICBvcGVuKHApOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIG1hcHBlZF9maWxlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGU6Om1hcHBlZF9maWxlKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCkKLXsgb3BlbihwKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGU6Om1hcHBlZF9maWxlKCAKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBtYXBtb2RlIGZsYWdzLCAKLSAgICBzaXplX3R5cGUgbGVuZ3RoLCBzdHJlYW1fb2Zmc2V0IG9mZnNldCApCi17IG9wZW4ocGF0aCwgZmxhZ3MsIGxlbmd0aCwgb2Zmc2V0KTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotbWFwcGVkX2ZpbGU6Om1hcHBlZF9maWxlKCAKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIG1vZGUsIAotICAgIHNpemVfdHlwZSBsZW5ndGgsIHN0cmVhbV9vZmZzZXQgb2Zmc2V0ICkKLXsgb3BlbihwYXRoLCBtb2RlLCBsZW5ndGgsIG9mZnNldCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLXZvaWQgbWFwcGVkX2ZpbGU6Om9wZW4oY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKQoteyBkZWxlZ2F0ZV8ub3Blbl9pbXBsKHApOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci12b2lkIG1hcHBlZF9maWxlOjpvcGVuKCAKLSAgICBjb25zdCBQYXRoJiBwYXRoLCBtYXBtb2RlIGZsYWdzLCAKLSAgICBzaXplX3R5cGUgbGVuZ3RoLCBzdHJlYW1fb2Zmc2V0IG9mZnNldCApCi17Ci0gICAgcGFyYW1fdHlwZSBwKHBhdGgpOwotICAgIHAuZmxhZ3MgPSBmbGFnczsKLSAgICBwLmxlbmd0aCA9IGxlbmd0aDsKLSAgICBwLm9mZnNldCA9IG9mZnNldDsKLSAgICBvcGVuKHApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZTo6b3BlbiggCi0gICAgY29uc3QgUGF0aCYgcGF0aCwgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlLCAKLSAgICBzaXplX3R5cGUgbGVuZ3RoLCBzdHJlYW1fb2Zmc2V0IG9mZnNldCApCi17Ci0gICAgcGFyYW1fdHlwZSBwKHBhdGgpOwotICAgIHAubW9kZSA9IG1vZGU7Ci0gICAgcC5sZW5ndGggPSBsZW5ndGg7Ci0gICAgcC5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgb3BlbihwKTsKLX0KLQotaW5saW5lIGNoYXIqIG1hcHBlZF9maWxlOjpkYXRhKCkgY29uc3QgCi17IHJldHVybiAoZmxhZ3MoKSAhPSByZWFkb25seSkgPyBjb25zdF9jYXN0PGNoYXIqPihkZWxlZ2F0ZV8uZGF0YSgpKSA6IDA7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBtYXBwZWRfZmlsZV9zaW5rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgUGF0aD4KLW1hcHBlZF9maWxlX3Npbms6Om1hcHBlZF9maWxlX3NpbmsoY29uc3QgYmFzaWNfbWFwcGVkX2ZpbGVfcGFyYW1zPFBhdGg+JiBwKQoteyBvcGVuKHApOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhdGg+Ci1tYXBwZWRfZmlsZV9zaW5rOjptYXBwZWRfZmlsZV9zaW5rKAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIHNpemVfdHlwZSBsZW5ndGgsCi0gICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCwgbWFwbW9kZSBmbGFncyApCi17IG9wZW4ocGF0aCwgbGVuZ3RoLCBvZmZzZXQsIGZsYWdzKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZV9zaW5rOjpvcGVuKGNvbnN0IGJhc2ljX21hcHBlZF9maWxlX3BhcmFtczxQYXRoPiYgcCkKLXsKLSAgICBwYXJhbV90eXBlIHBhcmFtcyhwKTsKLSAgICBpZiAocGFyYW1zLmZsYWdzKSB7Ci0gICAgICAgIGlmIChwYXJhbXMuZmxhZ3MgJiBtYXBwZWRfZmlsZTo6cmVhZG9ubHkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJpbnZhbGlkIGZsYWdzIikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJhbXMubW9kZSAmIE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJpbnZhbGlkIG1vZGUiKSk7Ci0gICAgICAgIHBhcmFtcy5tb2RlIHw9IE5ETkJPT1NUX0lPUzo6b3V0OwotICAgIH0KLSAgICBtYXBwZWRfZmlsZTo6b3BlbihwYXJhbXMpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQYXRoPgotdm9pZCBtYXBwZWRfZmlsZV9zaW5rOjpvcGVuKAotICAgIGNvbnN0IFBhdGgmIHBhdGgsIHNpemVfdHlwZSBsZW5ndGgsCi0gICAgbmRuYm9vc3Q6OmludG1heF90IG9mZnNldCwgbWFwbW9kZSBmbGFncyApCi17Ci0gICAgcGFyYW1fdHlwZSBwKHBhdGgpOwotICAgIHAuZmxhZ3MgPSBmbGFnczsKLSAgICBwLmxlbmd0aCA9IGxlbmd0aDsKLSAgICBwLm9mZnNldCA9IG9mZnNldDsKLSAgICBvcGVuKHApOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLVNwZWNpYWxpemF0aW9uIG9mIGRpcmVjdF9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3BlcmF0aW9uczxtYXBwZWRfZmlsZV9zb3VyY2U+Ci0gICAgOiBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmNsb3NlX2ltcGw8Y2xvc2FibGVfdGFnPgotewotICAgIHN0YXRpYyBzdGQ6OnBhaXI8Y2hhciosIGNoYXIqPgotICAgIGlucHV0X3NlcXVlbmNlKG1hcHBlZF9maWxlX3NvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCBjb25zdF9jYXN0PGNoYXIqPihzcmMuYmVnaW4oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxjaGFyKj4oc3JjLmVuZCgpKSApOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcGVyYXRpb25zPG1hcHBlZF9maWxlPgotICAgIDogbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjbG9zZV9pbXBsPGNsb3NhYmxlX3RhZz4KLXsKLSAgICBzdGF0aWMgc3RkOjpwYWlyPGNoYXIqLCBjaGFyKj4KLSAgICBpbnB1dF9zZXF1ZW5jZShtYXBwZWRfZmlsZSYgZmlsZSkKLSAgICB7IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZmlsZS5iZWdpbigpLCBmaWxlLmVuZCgpKTsgCi0gICAgfQotICAgIHN0YXRpYyBzdGQ6OnBhaXI8Y2hhciosIGNoYXIqPgotICAgIG91dHB1dF9zZXF1ZW5jZShtYXBwZWRfZmlsZSYgZmlsZSkKLSAgICB7IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZmlsZS5iZWdpbigpLCBmaWxlLmVuZCgpKTsgCi0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9wZXJhdGlvbnM8bWFwcGVkX2ZpbGVfc2luaz4KLSAgICA6IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2xvc2VfaW1wbDxjbG9zYWJsZV90YWc+Ci17Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjxjaGFyKiwgY2hhcio+Ci0gICAgb3V0cHV0X3NlcXVlbmNlKG1hcHBlZF9maWxlX3NpbmsmIHNpbmspCi0gICAgeyAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNpbmsuYmVnaW4oKSwgc2luay5lbmQoKSk7IAotICAgIH0KLX07Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG1hcG1vZGUgb3BlcmF0b3JzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlIAotb3BlcmF0b3J8KG1hcHBlZF9maWxlOjptYXBtb2RlIGEsIG1hcHBlZF9maWxlOjptYXBtb2RlIGIpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PG1hcHBlZF9maWxlOjptYXBtb2RlPgotICAgICAgICAoc3RhdGljX2Nhc3Q8aW50PihhKSB8IHN0YXRpY19jYXN0PGludD4oYikpOwotfQotCi1pbmxpbmUgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgCi1vcGVyYXRvciYobWFwcGVkX2ZpbGU6Om1hcG1vZGUgYSwgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgYikKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bWFwcGVkX2ZpbGU6Om1hcG1vZGU+Ci0gICAgICAgIChzdGF0aWNfY2FzdDxpbnQ+KGEpICYgc3RhdGljX2Nhc3Q8aW50PihiKSk7Ci19Ci0KLWlubGluZSBtYXBwZWRfZmlsZTo6bWFwbW9kZSAKLW9wZXJhdG9yXihtYXBwZWRfZmlsZTo6bWFwbW9kZSBhLCBtYXBwZWRfZmlsZTo6bWFwbW9kZSBiKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxtYXBwZWRfZmlsZTo6bWFwbW9kZT4KLSAgICAgICAgKHN0YXRpY19jYXN0PGludD4oYSkgXiBzdGF0aWNfY2FzdDxpbnQ+KGIpKTsKLX0KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlCi1vcGVyYXRvcn4obWFwcGVkX2ZpbGU6Om1hcG1vZGUgYSkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bWFwcGVkX2ZpbGU6Om1hcG1vZGU+KH5zdGF0aWNfY2FzdDxpbnQ+KGEpKTsKLX0KLQotaW5saW5lIG1hcHBlZF9maWxlOjptYXBtb2RlIAotb3BlcmF0b3J8PShtYXBwZWRfZmlsZTo6bWFwbW9kZSYgYSwgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgYikKLXsKLSAgICByZXR1cm4gYSA9IGEgfCBiOwotfQotCi1pbmxpbmUgbWFwcGVkX2ZpbGU6Om1hcG1vZGUgCi1vcGVyYXRvciY9KG1hcHBlZF9maWxlOjptYXBtb2RlJiBhLCBtYXBwZWRfZmlsZTo6bWFwbW9kZSBiKQotewotICAgIHJldHVybiBhID0gYSAmIGI7Ci19Ci0KLWlubGluZSBtYXBwZWRfZmlsZTo6bWFwbW9kZSAKLW9wZXJhdG9yXj0obWFwcGVkX2ZpbGU6Om1hcG1vZGUmIGEsIG1hcHBlZF9maWxlOjptYXBtb2RlIGIpCi17Ci0gICAgcmV0dXJuIGEgPSBhIF4gYjsKLX0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3N1ZmZpeC5ocHAgcHJhZ21hcwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTUFQUEVEX0ZJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbnVsbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbnVsbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YWJkOWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZGV2aWNlL251bGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDQtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIEluc3BpcmVkIGJ5IERhcnlsZSBXYWxrZXIncyBudWxsYnVmIGZyb20gaGlzIE1vcmUgSS9PIHN1Ym1pc3Npb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05VTExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19OVUxMX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIG9wZW5tb2RlLCBzdHJlYW1zaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaCwgdHlwZW5hbWUgTW9kZT4KLWNsYXNzIGJhc2ljX251bGxfZGV2aWNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBwdWJsaWMgTW9kZSwKLSAgICAgICAgICBwdWJsaWMgZGV2aWNlX3RhZywKLSAgICAgICAgICBwdWJsaWMgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChDaCosIHN0ZDo6c3RyZWFtc2l6ZSkgeyByZXR1cm4gMDsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZShjb25zdCBDaCosIHN0ZDo6c3RyZWFtc2l6ZSBuKSB7IHJldHVybiBuOyB9Ci0gICAgc3RkOjpzdHJlYW1wb3Mgc2Vlayggc3RyZWFtX29mZnNldCwgTkROQk9PU1RfSU9TOjpzZWVrZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkgCi0gICAgeyByZXR1cm4gLTE7IH0KLSAgICB2b2lkIGNsb3NlKCkgeyB9Ci0gICAgdm9pZCBjbG9zZShORE5CT09TVF9JT1M6Om9wZW5tb2RlKSB7IH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoPgotc3RydWN0IGJhc2ljX251bGxfc291cmNlIDogcHJpdmF0ZSBiYXNpY19udWxsX2RldmljZTxDaCwgaW5wdXQ+IHsKLSAgICB0eXBlZGVmIENoICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHNvdXJjZV90YWcgIGNhdGVnb3J5OwotICAgIHVzaW5nIGJhc2ljX251bGxfZGV2aWNlPENoLCBpbnB1dD46OnJlYWQ7Ci0gICAgdXNpbmcgYmFzaWNfbnVsbF9kZXZpY2U8Q2gsIGlucHV0Pjo6Y2xvc2U7Ci19OwotCi10eXBlZGVmIGJhc2ljX251bGxfc291cmNlPGNoYXI+ICAgICBudWxsX3NvdXJjZTsKLXR5cGVkZWYgYmFzaWNfbnVsbF9zb3VyY2U8d2NoYXJfdD4gIHdudWxsX3NvdXJjZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2g+Ci1zdHJ1Y3QgYmFzaWNfbnVsbF9zaW5rIDogcHJpdmF0ZSBiYXNpY19udWxsX2RldmljZTxDaCwgb3V0cHV0PiB7Ci0gICAgdHlwZWRlZiBDaCAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgc2lua190YWcgIGNhdGVnb3J5OwotICAgIHVzaW5nIGJhc2ljX251bGxfZGV2aWNlPENoLCBvdXRwdXQ+Ojp3cml0ZTsKLSAgICB1c2luZyBiYXNpY19udWxsX2RldmljZTxDaCwgb3V0cHV0Pjo6Y2xvc2U7Ci19OwotCi10eXBlZGVmIGJhc2ljX251bGxfc2luazxjaGFyPiAgICAgbnVsbF9zaW5rOwotdHlwZWRlZiBiYXNpY19udWxsX3Npbms8d2NoYXJfdD4gIHdudWxsX3Npbms7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTlVMTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9hZ2dyZWdhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYmEwNWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0FHR1JFR0FURV9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19BR0dSRUdBVEVfRklMVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29weSwgbWluLgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFja19pbnNlcnRlcgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29uc3RhbnRzLmhwcD4gICAgICAvLyBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgLy8gb3Blbm1vZGUsIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+ICAgICAgICAgICAvLyBjaGVja19lb2YgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYWdncmVnYXRlX2ZpbHRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vIERlc2NyaXB0aW9uOiBVdGlsaXR5IGZvciBkZWZpbmluZyBEdWFsVXNlRmlsdGVycyB3aGljaCBmaWx0ZXIgYW4KLS8vICAgICAgZW50aXJlIHN0cmVhbSBhdCBvbmNlLiBUbyB1c2UsIG92ZXJyaWRlIHRoZSBwcm90ZWN0ZWQgdmlydHVhbAotLy8gICAgICBtZW1iZXIgZG9fZmlsdGVyLgotLy8gTm90ZTogVGhpcyBmaWx0ZXIgc2hvdWxkIG5vdCBiZSBjb3BpZWQgd2hpbGUgaXQgaXMgaW4gdXNlLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBhZ2dyZWdhdGVfZmlsdGVyICB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaCBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2UsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBtdWx0aWNoYXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgYWdncmVnYXRlX2ZpbHRlcigpIDogcHRyXygwKSwgc3RhdGVfKDApIHsgfQotICAgIHZpcnR1YWwgfmFnZ3JlZ2F0ZV9maWx0ZXIoKSB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCghKHN0YXRlXyAmIGZfd3JpdGUpKTsKLSAgICAgICAgc3RhdGVfIHw9IGZfcmVhZDsKLSAgICAgICAgaWYgKCEoc3RhdGVfICYgZl9lb2YpKQotICAgICAgICAgICAgZG9fcmVhZChzcmMpOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0KLSAgICAgICAgICAgIChzdGQ6Om1pbikobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihkYXRhXy5zaXplKCkgLSBwdHJfKSk7Ci0gICAgICAgIGlmIChhbXQpIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpOjpjb3B5KHMsICZkYXRhX1twdHJfXSwgYW10KTsKLSAgICAgICAgICAgIHB0cl8gKz0gYW10OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBkZXRhaWw6OmNoZWNrX2VvZihhbXQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCEoc3RhdGVfICYgZl9yZWFkKSk7Ci0gICAgICAgIHN0YXRlXyB8PSBmX3dyaXRlOwotICAgICAgICBkYXRhXy5pbnNlcnQoZGF0YV8uZW5kKCksIHMsIHMgKyBuKTsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNpbmssIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gpCi0gICAgewotICAgICAgICBpZiAoKHN0YXRlXyAmIGZfcmVhZCkgIT0gMCAmJiB3aGljaCA9PSBORE5CT09TVF9JT1M6OmluKQotICAgICAgICAgICAgY2xvc2VfaW1wbCgpOwotICAgICAgICBpZiAoKHN0YXRlXyAmIGZfd3JpdGUpICE9IDAgJiYgd2hpY2ggPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdmVjdG9yX3R5cGUgZmlsdGVyZWQ7Ci0gICAgICAgICAgICAgICAgZG9fZmlsdGVyKGRhdGFfLCBmaWx0ZXJlZCk7Ci0gICAgICAgICAgICAgICAgZG9fd3JpdGUoIAotICAgICAgICAgICAgICAgICAgICBzaW5rLCAmZmlsdGVyZWRbMF0sCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oZmlsdGVyZWQuc2l6ZSgpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPENoLCBBbGxvYz4gICAgICAgICAgIHZlY3Rvcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yX3R5cGU6OnNpemVfdHlwZSAgc2l6ZV90eXBlOwotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9fZmlsdGVyKGNvbnN0IHZlY3Rvcl90eXBlJiBzcmMsIHZlY3Rvcl90eXBlJiBkZXN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvX2Nsb3NlKCkgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgdm9pZCBkb19yZWFkKFNvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgdXNpbmcgc3RkOjpzdHJlYW1zaXplOwotICAgICAgICB2ZWN0b3JfdHlwZSBkYXRhOwotICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJlYW1zaXplICBzaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemU7Ci0gICAgICAgICAgICBDaCAgICAgICAgICAgICAgICAgICAgIGJ1ZltzaXplXTsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAgICAgICAgYW10OwotICAgICAgICAgICAgaWYgKChhbXQgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZWFkKHNyYywgYnVmLCBzaXplKSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkYXRhLmluc2VydChkYXRhLmVuZCgpLCBidWYsIGJ1ZiArIGFtdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZG9fZmlsdGVyKGRhdGEsIGRhdGFfKTsKLSAgICAgICAgc3RhdGVfIHw9IGZfZW9mOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgdm9pZCBkb193cml0ZShTaW5rJiBzaW5rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICB7IAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8U2luaz46OnR5cGUgIGNhdGVnb3J5OwotICAgICAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+ICAgICAgICAgICAgIGNhbl93cml0ZTsKLSAgICAgICAgZG9fd3JpdGUoc2luaywgcywgbiwgY2FuX3dyaXRlKCkpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgZG9fd3JpdGUoU2luayYgc2luaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbiwgbXBsOjp0cnVlXykgCi0gICAgeyBpb3N0cmVhbXM6OndyaXRlKHNpbmssIHMsIG4pOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgZG9fd3JpdGUoU2luayYsIGNvbnN0IGNoYXJfdHlwZSosIHN0ZDo6c3RyZWFtc2l6ZSwgbXBsOjpmYWxzZV8pIHsgfQotCi0gICAgdm9pZCBjbG9zZV9pbXBsKCkKLSAgICB7Ci0gICAgICAgIGRhdGFfLmNsZWFyKCk7Ci0gICAgICAgIHB0cl8gPSAwOwotICAgICAgICBzdGF0ZV8gPSAwOwotICAgICAgICBkb19jbG9zZSgpOwotICAgIH0KLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9yZWFkICAgPSAxLAotICAgICAgICBmX3dyaXRlICA9IGZfcmVhZCA8PCAxLAotICAgICAgICBmX2VvZiAgICA9IGZfd3JpdGUgPDwgMQotICAgIH07Ci0KLSAgICAvLyBOb3RlOiB0eXBpY2FsbHkgd2lsbCBub3QgYmUgY29waWVkIHdoaWxlIHZlY3RvciBjb250YWlucyBkYXRhLgotICAgIHZlY3Rvcl90eXBlICBkYXRhXzsKLSAgICBzaXplX3R5cGUgICAgcHRyXzsKLSAgICBpbnQgICAgICAgICAgc3RhdGVfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGFnZ3JlZ2F0ZV9maWx0ZXIsIDEpCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19BR0dSRUdBVEVfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2J6aXAyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9iemlwMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmM0ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2J6aXAyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxNCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gTm90ZTogY3VzdG9tIGFsbG9jYXRvcnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gVkM2LCBzaW5jZSB0aGF0IGNvbXBpbGVyCi0vLyBoYWQgdHJvdWJsZSBmaW5kaW5nIHRoZSBmdW5jdGlvbiB6bGliX2Jhc2U6OmRvX2luaXQuCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JaSVAyX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQlpJUDJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPGNhc3NlcnQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgIC8vIGJhZF9hbGxvYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTVNWQywgU1RBVElDX0NPTlNUQU5ULCBERURVQ0VEX1RZUEVOQU1FLCBESU5LVU0uCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwPiAgIC8vIGJ1ZmZlciBzaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvYnppcDIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2R5bl9saW5rLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIGZhaWx1cmUsIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9zeW1tZXRyaWMuaHBwPiAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+ICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPiAgICAgCi0KLS8vIE11c3QgY29tZSBsYXN0LgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjUxIDQyMzEgNDY2MCkKLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4gICAgICAgICAgIAotCi0vLyBUZW1wb3JhcnkgZml4LgotI3VuZGVmIHNtYWxsCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgYnppcDIgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFR5cGVkZWZzLgotCi10eXBlZGVmIHZvaWQqICgqYWxsb2NfZnVuYykodm9pZCosIGludCwgaW50KTsKLXR5cGVkZWYgdm9pZCAoKmZyZWVfZnVuYykodm9pZCosIHZvaWQqKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBTdGF0dXMgY29kZXMKLQotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBvazsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgcnVuX29rOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBmbHVzaF9vazsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZmluaXNoX29rOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBzdHJlYW1fZW5kOyAgICAKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgc2VxdWVuY2VfZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHBhcmFtX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBtZW1fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGRhdGFfZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGRhdGFfZXJyb3JfbWFnaWM7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGlvX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCB1bmV4cGVjdGVkX2VvZjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgb3V0YnVmZl9mdWxsOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBjb25maWdfZXJyb3I7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQWN0aW9uIGNvZGVzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZmluaXNoOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBydW47Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMKLQotY29uc3QgaW50IGRlZmF1bHRfYmxvY2tfc2l6ZSAgID0gOTsKLWNvbnN0IGludCBkZWZhdWx0X3dvcmtfZmFjdG9yICA9IDMwOwotY29uc3QgYm9vbCBkZWZhdWx0X3NtYWxsICAgICAgID0gZmFsc2U7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBiemlwMi4gCi0KLS8vCi0vLyBDbGFzcyBuYW1lOiBiemlwMl9wYXJhbXMuCi0vLyBEZXNjcmlwdGlvbjogRW5jYXBzdWxhdGVzIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBkZWZsYXRlSW5pdDIKLS8vICAgICAgdG8gY3VzdG9taXplIGNvbXByZXNzaW9uLgotLy8KLXN0cnVjdCBiemlwMl9wYXJhbXMgewotCi0gICAgLy8gTm9uLWV4cGxpY2l0IGNvbnN0cnVjdG9yIGZvciBjb21wcmVzc2lvbi4KLSAgICBiemlwMl9wYXJhbXMoIGludCBibG9ja19zaXplICAgPSBiemlwMjo6ZGVmYXVsdF9ibG9ja19zaXplLAotICAgICAgICAgICAgICAgICAgaW50IHdvcmtfZmFjdG9yICA9IGJ6aXAyOjpkZWZhdWx0X3dvcmtfZmFjdG9yICkKLSAgICAgICAgOiBibG9ja19zaXplKGJsb2NrX3NpemUpLCB3b3JrX2ZhY3Rvcih3b3JrX2ZhY3RvcikKLSAgICAgICAgeyB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvciBmb3IgZGVjb21wcmVzc2lvbi4KLSAgICBiemlwMl9wYXJhbXMoYm9vbCBzbWFsbCkKLSAgICAgICAgOiBzbWFsbChzbWFsbCksIHdvcmtfZmFjdG9yKDApCi0gICAgICAgIHsgfQotCi0gICAgdW5pb24gewotICAgICAgICBpbnQgICBibG9ja19zaXplOyAgICAvLyBGb3IgY29tcHJlc3Npb24uCi0gICAgICAgIGJvb2wgIHNtYWxsOyAgICAgICAgIC8vIEZvciBkZWNvbXByZXNzaW9uLgotICAgIH07Ci0gICAgaW50ICAgICAgIHdvcmtfZmFjdG9yOwotfTsKLQotLy8KLS8vIENsYXNzIG5hbWU6IGJ6aXAyX2Vycm9yLgotLy8gRGVzY3JpcHRpb246IFN1YmNsYXNzIG9mIHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUgdGhyb3duIHRvIGluZGljYXRlCi0vLyAgICAgYnppcDIgZXJyb3JzIG90aGVyIHRoYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zLgotLy8KLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGJ6aXAyX2Vycm9yIDogcHVibGljIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBiemlwMl9lcnJvcihpbnQgZXJyb3IpOwotICAgIGludCBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIGVycm9yXzsgfQotICAgIHN0YXRpYyB2b2lkIGNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKGludCBlcnJvcik7Ci1wcml2YXRlOgotICAgIGludCBlcnJvcl87Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3QgYnppcDJfYWxsb2NhdG9yX3RyYWl0cyB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgc3RkOjphbGxvY2F0b3I8Y2hhcj4gdHlwZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFsbG9jLAotICAgICAgICAgIHR5cGVuYW1lIEJhc2UgPSAvLyBWQzYgd29ya2Fyb3VuZCAoQzI1MTYpCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYnppcDJfYWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OnR5cGUgPgotc3RydWN0IGJ6aXAyX2FsbG9jYXRvciA6IHByaXZhdGUgQmFzZSB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmFzZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLXB1YmxpYzoKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgY3VzdG9tID0gCi0gICAgICAgICghaXNfc2FtZTxzdGQ6OmFsbG9jYXRvcjxjaGFyPiwgQmFzZT46OnZhbHVlKSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiemlwMl9hbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dHlwZSBhbGxvY2F0b3JfdHlwZTsKLSAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGUodm9pZCogc2VsZiwgaW50IGl0ZW1zLCBpbnQgc2l6ZSk7Ci0gICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBzZWxmLCB2b2lkKiBhZGRyZXNzKTsKLX07Ci0KLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGJ6aXAyX2Jhc2UgIHsgCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLXByb3RlY3RlZDoKLSAgICBiemlwMl9iYXNlKGNvbnN0IGJ6aXAyX3BhcmFtcyYgcGFyYW1zKTsKLSAgICB+YnppcDJfYmFzZSgpOwotICAgIGJ6aXAyX3BhcmFtcyYgcGFyYW1zKCkgeyByZXR1cm4gcGFyYW1zXzsgfQotICAgIGJvb2wmIHJlYWR5KCkgeyByZXR1cm4gcmVhZHlfOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IAotICAgIHZvaWQgaW5pdCggYm9vbCBjb21wcmVzcywKLSAgICAgICAgICAgICAgIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz4mIGFsbG9jICkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBjdXN0b20gPSBiemlwMl9hbGxvY2F0b3I8QWxsb2M+OjpjdXN0b207Ci0gICAgICAgICAgICBkb19pbml0KCBjb21wcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tID8gYnppcDJfYWxsb2NhdG9yPEFsbG9jPjo6YWxsb2NhdGUgOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbSA/IGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz46OmRlYWxsb2NhdGUgOiAwLAotICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICBjdXN0b20gPyAmYWxsb2MgOiAwICk7Ci0gICAgICAgIH0KLSAgICB2b2lkIGJlZm9yZSggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgICAgICAgICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kICk7Ci0gICAgdm9pZCBhZnRlcihjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjaGFyKiYgZGVzdF9iZWdpbik7Ci0gICAgaW50IGNoZWNrX2VuZChjb25zdCBjaGFyKiBzcmNfYmVnaW4sIGNvbnN0IGNoYXIqIGRlc3RfYmVnaW4pOwotICAgIGludCBjb21wcmVzcyhpbnQgYWN0aW9uKTsKLSAgICBpbnQgZGVjb21wcmVzcygpOwotICAgIHZvaWQgZW5kKGJvb2wgY29tcHJlc3MpOwotcHJpdmF0ZToKLSAgICB2b2lkIGRvX2luaXQoIGJvb2wgY29tcHJlc3MsIAotICAgICAgICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgICAgICAgICBiemlwMjo6YWxsb2NfZnVuYywgCi0gICAgICAgICAgICAgICAgICAgICAgYnppcDI6OmZyZWVfZnVuYywgCi0gICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIHZvaWQqIGRlcml2ZWQgKTsKLSAgICBiemlwMl9wYXJhbXMgIHBhcmFtc187Ci0gICAgdm9pZCogICAgICAgICBzdHJlYW1fOyAvLyBBY3R1YWwgdHlwZTogYnpfc3RyZWFtKi4KLSAgICBib29sICAgICAgICAgIHJlYWR5XzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiemlwMl9jb21wcmVzc29yX2ltcGwKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBTeW1tZXRyaWNGaWx0ZXIgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGJ5Ci0vLyAgICAgIGRlbGVnYXRpbmcgdG8gdGhlIGxpYmJ6aXAyIGZ1bmN0aW9uIEJaX2J6Q29tcHJlc3MuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+Ci1jbGFzcyBiemlwMl9jb21wcmVzc29yX2ltcGwgCi0gICAgOiBwdWJsaWMgYnppcDJfYmFzZSwgCi0gICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gICAgICAgICAgcHVibGljCi0gICAgICAjZW5kaWYKLSAgICAgIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYz4gCi17Ci1wdWJsaWM6IAotICAgIGJ6aXAyX2NvbXByZXNzb3JfaW1wbChjb25zdCBiemlwMl9wYXJhbXMmKTsKLSAgICBib29sIGZpbHRlciggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgICAgICAgICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIGZsdXNoICk7Ci0gICAgdm9pZCBjbG9zZSgpOwotcHJpdmF0ZToKLSAgICB2b2lkIGluaXQoKTsKLSAgICBib29sIGVvZl87IC8vIEd1YXJkIHRvIG1ha2Ugc3VyZSBmaWx0ZXIoKSBpc24ndCBjYWxsZWQgYWZ0ZXIgaXQgcmV0dXJucyBmYWxzZS4KLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiemlwMl9jb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgU3ltbWV0cmljRmlsdGVyIGltcGxlbWVudGluZyBkZWNvbXByZXNzaW9uIGJ5Ci0vLyAgICAgIGRlbGVnYXRpbmcgdG8gdGhlIGxpYmJ6aXAyIGZ1bmN0aW9uIEJaX2J6RGVjb21wcmVzcy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsIAotICAgIDogcHVibGljIGJ6aXAyX2Jhc2UsIAotICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotICAgICAgICAgIHB1YmxpYwotICAgICAgI2VuZGlmCi0gICAgICBiemlwMl9hbGxvY2F0b3I8QWxsb2M+IAoteyAKLXB1YmxpYzoKLSAgICBiemlwMl9kZWNvbXByZXNzb3JfaW1wbChib29sIHNtYWxsID0gYnppcDI6OmRlZmF1bHRfc21hbGwpOwotICAgIGJvb2wgZmlsdGVyKCBjb25zdCBjaGFyKiYgYmVnaW5faW4sIGNvbnN0IGNoYXIqIGVuZF9pbiwKLSAgICAgICAgICAgICAgICAgY2hhciomIGJlZ2luX291dCwgY2hhciogZW5kX291dCwgYm9vbCBmbHVzaCApOwotICAgIHZvaWQgY2xvc2UoKTsKLXByaXZhdGU6Ci0gICAgdm9pZCBpbml0KCk7Ci0gICAgYm9vbCBlb2ZfOyAvLyBHdWFyZCB0byBtYWtlIHN1cmUgZmlsdGVyKCkgaXNuJ3QgY2FsbGVkIGFmdGVyIGl0IHJldHVybnMgZmFsc2UuCi19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYnppcDJfY29tcHJlc3NvcgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIElucHV0RmlsdGVyIGFuZCBPdXRwdXRGaWx0ZXIgaW1wbGVtZW50aW5nCi0vLyAgICAgIGNvbXByZXNzaW9uIHVzaW5nIGxpYmJ6aXAyLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotc3RydWN0IGJhc2ljX2J6aXAyX2NvbXByZXNzb3IgCi0gICAgOiBzeW1tZXRyaWNfZmlsdGVyPGRldGFpbDo6YnppcDJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiwgQWxsb2M+IAotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGRldGFpbDo6YnppcDJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiAgICAgICAgaW1wbF90eXBlOwotICAgIHR5cGVkZWYgc3ltbWV0cmljX2ZpbHRlcjxpbXBsX3R5cGUsIEFsbG9jPiAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIGJhc2ljX2J6aXAyX2NvbXByZXNzb3IoIGNvbnN0IGJ6aXAyX3BhcmFtcyYgPSBiemlwMjo6ZGVmYXVsdF9ibG9ja19zaXplLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSAgZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUgKTsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19iemlwMl9jb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX2J6aXAyX2NvbXByZXNzb3I8PiBiemlwMl9jb21wcmVzc29yOwotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogYnppcDJfZGVjb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgYW5kIE91dHB1dEZpbHRlciBpbXBsZW1lbnRpbmcKLS8vICAgICAgZGVjb21wcmVzc2lvbiB1c2luZyBsaWJiemlwMi4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLXN0cnVjdCBiYXNpY19iemlwMl9kZWNvbXByZXNzb3IgCi0gICAgOiBzeW1tZXRyaWNfZmlsdGVyPGRldGFpbDo6YnppcDJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+LCBBbGxvYz4gCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjpiemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz4gICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBzeW1tZXRyaWNfZmlsdGVyPGltcGxfdHlwZSwgQWxsb2M+ICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgYmFzaWNfYnppcDJfZGVjb21wcmVzc29yKCBib29sIHNtYWxsID0gYnppcDI6OmRlZmF1bHRfc21hbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2J6aXAyX2RlY29tcHJlc3NvciwgMSkKLQotdHlwZWRlZiBiYXNpY19iemlwMl9kZWNvbXByZXNzb3I8PiBiemlwMl9kZWNvbXByZXNzb3I7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgYnppcDJfYWxsb2NhdG9yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQmFzZT4KLXZvaWQqIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYywgQmFzZT46OmFsbG9jYXRlKHZvaWQqIHNlbGYsIGludCBpdGVtcywgaW50IHNpemUpCi17IAotICAgIHNpemVfdHlwZSBsZW4gPSBpdGVtcyAqIHNpemU7Ci0gICAgY2hhciogcHRyID0gCi0gICAgICAgIHN0YXRpY19jYXN0PGFsbG9jYXRvcl90eXBlKj4oc2VsZiktPmFsbG9jYXRlCi0gICAgICAgICAgICAobGVuICsgc2l6ZW9mKHNpemVfdHlwZSkKLSAgICAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKQotICAgICAgICAgICAgICAgICwgKGNoYXIqKTAKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgKTsKLSAgICAqcmVpbnRlcnByZXRfY2FzdDxzaXplX3R5cGUqPihwdHIpID0gbGVuOwotICAgIHJldHVybiBwdHIgKyBzaXplb2Yoc2l6ZV90eXBlKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEJhc2U+Ci12b2lkIGJ6aXAyX2FsbG9jYXRvcjxBbGxvYywgQmFzZT46OmRlYWxsb2NhdGUodm9pZCogc2VsZiwgdm9pZCogYWRkcmVzcykKLXsgCi0gICAgY2hhciogcHRyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYWRkcmVzcykgLSBzaXplb2Yoc2l6ZV90eXBlKTsKLSAgICBzaXplX3R5cGUgbGVuID0gKnJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90eXBlKj4ocHRyKSArIHNpemVvZihzaXplX3R5cGUpOwotICAgIHN0YXRpY19jYXN0PGFsbG9jYXRvcl90eXBlKj4oc2VsZiktPmRlYWxsb2NhdGUocHRyLCBsZW4pOyAKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9jb21wcmVzc29yX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+OjpiemlwMl9jb21wcmVzc29yX2ltcGwoY29uc3QgYnppcDJfcGFyYW1zJiBwKQotICAgIDogYnppcDJfYmFzZShwKSwgZW9mXyhmYWxzZSkgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYm9vbCBiemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+OjpmaWx0ZXIKLSAgICAoIGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNvbnN0IGNoYXIqIHNyY19lbmQsCi0gICAgICBjaGFyKiYgZGVzdF9iZWdpbiwgY2hhciogZGVzdF9lbmQsIGJvb2wgZmx1c2ggKQotewotICAgIGlmICghcmVhZHkoKSkgaW5pdCgpOwotICAgIGlmIChlb2ZfKSByZXR1cm4gZmFsc2U7Ci0gICAgYmVmb3JlKHNyY19iZWdpbiwgc3JjX2VuZCwgZGVzdF9iZWdpbiwgZGVzdF9lbmQpOwotICAgIGludCByZXN1bHQgPSBjb21wcmVzcyhmbHVzaCA/IGJ6aXAyOjpmaW5pc2ggOiBiemlwMjo6cnVuKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4pOwotICAgIGJ6aXAyX2Vycm9yOjpjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihyZXN1bHQpOwotICAgIHJldHVybiAhKGVvZl8gPSByZXN1bHQgPT0gYnppcDI6OnN0cmVhbV9lbmQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXZvaWQgYnppcDJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6Y2xvc2UoKSAKLXsgCi0gICAgdHJ5IHsKLSAgICAgICAgZW5kKHRydWUpOwotICAgIH0gY2F0Y2ggKC4uLikgeyAKLSAgICAgICAgZW9mXyA9IGZhbHNlOyAKLSAgICAgICAgdGhyb3c7Ci0gICAgfQotICAgIGVvZl8gPSBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1pbmxpbmUgdm9pZCBiemlwMl9jb21wcmVzc29yX2ltcGw8QWxsb2M+Ojppbml0KCkgCi17IGJ6aXAyX2Jhc2U6OmluaXQodHJ1ZSwgc3RhdGljX2Nhc3Q8YnppcDJfYWxsb2NhdG9yPEFsbG9jPiY+KCp0aGlzKSk7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9kZWNvbXByZXNzb3JfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OmJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsKGJvb2wgc21hbGwpCi0gICAgOiBiemlwMl9iYXNlKGJ6aXAyX3BhcmFtcyhzbWFsbCkpLCBlb2ZfKGZhbHNlKSB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1ib29sIGJ6aXAyX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6ZmlsdGVyCi0gICAgKCBjb25zdCBjaGFyKiYgc3JjX2JlZ2luLCBjb25zdCBjaGFyKiBzcmNfZW5kLAotICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIGZsdXNoICkKLXsKLSAgICBpZiAoZW9mXykgewotICAgICAgICAvLyByZXNldCB0aGUgc3RyZWFtIGlmIHRoZXJlIGFyZSBtb3JlIGNoYXJhY3RlcnMKLSAgICAgICAgaWYoc3JjX2JlZ2luID09IHNyY19lbmQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNsb3NlKCk7Ci0gICAgfQotICAgIGlmICghcmVhZHkoKSkgCi0gICAgICAgIGluaXQoKTsKLSAgICBiZWZvcmUoc3JjX2JlZ2luLCBzcmNfZW5kLCBkZXN0X2JlZ2luLCBkZXN0X2VuZCk7Ci0gICAgaW50IHJlc3VsdCA9IGRlY29tcHJlc3MoKTsKLSAgICBpZihyZXN1bHQgPT0gYnppcDI6Om9rICYmIGZsdXNoKQotICAgICAgICByZXN1bHQgPSBjaGVja19lbmQoc3JjX2JlZ2luLCBkZXN0X2JlZ2luKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4pOwotICAgIGJ6aXAyX2Vycm9yOjpjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihyZXN1bHQpOwotICAgIGVvZl8gPSByZXN1bHQgPT0gYnppcDI6OnN0cmVhbV9lbmQ7Ci0gICAgcmV0dXJuIHRydWU7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXZvaWQgYnppcDJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+OjpjbG9zZSgpIAoteyAKLSAgICB0cnkgewotICAgICAgICBlbmQoZmFsc2UpOwotICAgIH0gY2F0Y2ggKC4uLikgeyAKLSAgICAgICAgZW9mXyA9IGZhbHNlOyAKLSAgICAgICAgdGhyb3c7Ci0gICAgfQotICAgIGVvZl8gPSBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1pbmxpbmUgdm9pZCBiemlwMl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OmluaXQoKQoteyBiemlwMl9iYXNlOjppbml0KGZhbHNlLCBzdGF0aWNfY2FzdDxiemlwMl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgfQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9kZWNvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19iemlwMl9jb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfYnppcDJfY29tcHJlc3NvcgotICAgICAgICAoY29uc3QgYnppcDJfcGFyYW1zJiBwLCBpbnQgYnVmZmVyX3NpemUpIAotICAgIDogYmFzZV90eXBlKGJ1ZmZlcl9zaXplLCBwKSAKLSAgICB7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiemlwMl9kZWNvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY19iemlwMl9kZWNvbXByZXNzb3I8QWxsb2M+OjpiYXNpY19iemlwMl9kZWNvbXByZXNzb3IKLSAgICAgICAgKGJvb2wgc21hbGwsIGludCBidWZmZXJfc2l6ZSkgCi0gICAgOiBiYXNlX3R5cGUoYnVmZmVyX3NpemUsIHNtYWxsKQotICAgIHsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfc3VmZml4LmhwcD4gLy8gUG9wcyBhYmlfc3VmZml4LmhwcCBwcmFnbWFzLgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CWklQMl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9jb3VudGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9jb3VudGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc4MGMxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvY291bnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09VTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0NPVU5URVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gY291bnQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMSBDNDI0NC4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBiYXNpY19jb3VudGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyBEZXNjcmlwdGlvbjogRmlsdGVyIHdoaWNoIGNvdW50cyBsaW5lcyBhbmQgY2hhcmFjdGVycy4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaD4KLWNsYXNzIGJhc2ljX2NvdW50ZXIgIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIENoIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgYmFzaWNfY291bnRlcihpbnQgZmlyc3RfbGluZSA9IDAsIGludCBmaXJzdF9jaGFyID0gMCkKLSAgICAgICAgOiBsaW5lc18oZmlyc3RfbGluZSksIGNoYXJzXyhmaXJzdF9jaGFyKQotICAgICAgICB7IH0KLSAgICBpbnQgbGluZXMoKSBjb25zdCB7IHJldHVybiBsaW5lc187IH0KLSAgICBpbnQgY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIGNoYXJzXzsgfQotICAgIHN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKCkgY29uc3QgeyByZXR1cm4gMDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkKFNvdXJjZSYgc3JjLCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6cmVhZChzcmMsIHMsIG4pOwotICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBsaW5lc18gKz0gc3RkOjpjb3VudChzLCBzICsgcmVzdWx0LCBjaGFyX3RyYWl0czxDaD46Om5ld2xpbmUoKSk7Ci0gICAgICAgIGNoYXJzXyArPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGUoc25rLCBzLCBuKTsKLSAgICAgICAgbGluZXNfICs9IHN0ZDo6Y291bnQocywgcyArIHJlc3VsdCwgY2hhcl90cmFpdHM8Q2g+OjpuZXdsaW5lKCkpOwotICAgICAgICBjaGFyc18gKz0gcmVzdWx0OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLXByaXZhdGU6Ci0gICAgaW50IGxpbmVzXzsKLSAgICBpbnQgY2hhcnNfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2NvdW50ZXIsIDEpCi0KLQotdHlwZWRlZiBiYXNpY19jb3VudGVyPGNoYXI+ICAgICBjb3VudGVyOwotdHlwZWRlZiBiYXNpY19jb3VudGVyPHdjaGFyX3Q+ICB3Y291bnRlcjsKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQ09VTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9ncmVwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9ncmVwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3YTI5Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvZ3JlcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0gKiBGaWxlOiAgICAgICAgbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9ncmVwLmhwcAotICogRGF0ZTogICAgICAgIE1vbiBNYXkgMjYgMTc6NDg6NDUgTURUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBiYXNpY19ncmVwX2ZpbHRlciBhbmQgaXRzIHNwZWNpYWxpemF0aW9ucwotICogZ3JlcF9maWx0ZXIgYW5kIHdncmVwX2ZpbHRlci4KLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HUkVQX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0dSRVBfRklMVEVSX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxtZW1vcnk+ICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4gICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2xpbmUuaHBwPiAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZ3JlcCB7Ci0KLWNvbnN0IGludCBpbnZlcnQgICAgICA9IDE7Ci1jb25zdCBpbnQgd2hvbGVfbGluZSAgPSBpbnZlcnQgPDwgMTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGdyZXAuCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBUciA9IHJlZ2V4X3RyYWl0czxDaD4sCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPSBzdGQ6OmFsbG9jYXRvcjxDaD4gPgotY2xhc3MgYmFzaWNfZ3JlcF9maWx0ZXIgOiBwdWJsaWMgYmFzaWNfbGluZV9maWx0ZXI8Q2gsIEFsbG9jPiB7Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgYmFzaWNfbGluZV9maWx0ZXI8Q2gsIEFsbG9jPiAgICAgICAgICAgICAgIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2hhcl90eXBlICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnN0cmluZ190eXBlICAgICAgICAgICAgc3RyaW5nX3R5cGU7Ci0gICAgdHlwZWRlZiBiYXNpY19yZWdleDxDaCwgVHI+ICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgICB0eXBlZGVmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGU7Ci0gICAgYmFzaWNfZ3JlcF9maWx0ZXIoIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgbWF0Y2hfZmxhZ3MgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGlvbnMgPSAwICk7Ci0gICAgaW50IGNvdW50KCkgY29uc3QgeyByZXR1cm4gY291bnRfOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgYmFzZV90eXBlOjpjbG9zZShzbmssIHdoaWNoKTsKLSAgICAgICAgb3B0aW9uc18gJj0gfmZfaW5pdGlhbGl6ZWQ7Ci0gICAgfQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHN0cmluZ190eXBlIGRvX2ZpbHRlcihjb25zdCBzdHJpbmdfdHlwZSYgbGluZSkKLSAgICB7Ci0gICAgICAgIGlmICgob3B0aW9uc18gJiBmX2luaXRpYWxpemVkKSA9PSAwKSB7Ci0gICAgICAgICAgICBvcHRpb25zXyB8PSBmX2luaXRpYWxpemVkOwotICAgICAgICAgICAgY291bnRfID0gMDsKLSAgICAgICAgfQotICAgICAgICBib29sIG1hdGNoZXMgPSAob3B0aW9uc18gJiBncmVwOjp3aG9sZV9saW5lKSA/Ci0gICAgICAgICAgICByZWdleF9tYXRjaChsaW5lLCByZV8sIG1hdGNoX2ZsYWdzXykgOgotICAgICAgICAgICAgcmVnZXhfc2VhcmNoKGxpbmUsIHJlXywgbWF0Y2hfZmxhZ3NfKTsKLSAgICAgICAgaWYgKG9wdGlvbnNfICYgZ3JlcDo6aW52ZXJ0KQotICAgICAgICAgICAgbWF0Y2hlcyA9ICFtYXRjaGVzOwotICAgICAgICBpZiAobWF0Y2hlcykKLSAgICAgICAgICAgICsrY291bnRfOwotICAgICAgICByZXR1cm4gbWF0Y2hlcyA/IGxpbmUgKyB0cmFpdHNfdHlwZTo6bmV3bGluZSgpIDogc3RyaW5nX3R5cGUoKTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlIGZsYWdzIGJpdHdpc2UgT1InZCB3aXRoIGNvbnN0YW50cyBmcm9tIG5hbWVzcGFjZSBncmVwCi0gICAgZW51bSBmbGFnc18gewotICAgICAgICBmX2luaXRpYWxpemVkID0gNjU1MzYKLSAgICB9OwotCi0gICAgcmVnZXhfdHlwZSAgICAgICByZV87Ci0gICAgbWF0Y2hfZmxhZ190eXBlICBtYXRjaF9mbGFnc187Ci0gICAgaW50ICAgICAgICAgICAgICBvcHRpb25zXzsKLSAgICBpbnQgICAgICAgICAgICAgIGNvdW50XzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19ncmVwX2ZpbHRlciwgMykKLQotdHlwZWRlZiBiYXNpY19ncmVwX2ZpbHRlcjxjaGFyPiAgICAgZ3JlcF9maWx0ZXI7Ci10eXBlZGVmIGJhc2ljX2dyZXBfZmlsdGVyPHdjaGFyX3Q+ICB3Z3JlcF9maWx0ZXI7Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBiYXNpY19ncmVwX2ZpbHRlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX2dyZXBfZmlsdGVyPENoLCBUciwgQWxsb2M+OjpiYXNpY19ncmVwX2ZpbHRlcgotICAgIChjb25zdCByZWdleF90eXBlJiByZSwgbWF0Y2hfZmxhZ190eXBlIG1hdGNoX2ZsYWdzLCBpbnQgb3B0aW9ucykKLSAgICA6IGJhc2VfdHlwZSh0cnVlKSwgcmVfKHJlKSwgbWF0Y2hfZmxhZ3NfKG1hdGNoX2ZsYWdzKSwgCi0gICAgICBvcHRpb25zXyhvcHRpb25zKSwgY291bnRfKDApCi0gICAgeyB9Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgICAgICAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRUdFWF9GSUxURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvZ3ppcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvZ3ppcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZjlmY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2d6aXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzU3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBDb250YWlucyB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGNsYXNzIHRlbXBsYXRlcyBnemlwX2NvbXByZXNzb3IgYW5kCi0vLyBnemlwX2RlY29tcHJlc3NvciBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBmaWxlcyBpbiB0aGUgZ3ppcCBmaWxlIGZvcm1hdAotLy8gKFJGQyAxOTUyKS4gQmFzZWQgaW4gcGFydCBvbiB3b3JrIG9mIEpvbmF0aGFuIGRlIEhhbGxldXg7IHNlZSBbLi4uXQotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HWklQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfR1pJUF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBTVEFUSUNfQ09OU1RBTlQsIFNURENfTkFNRVNQQUNFLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBESU5LVU1XQVJFX1NURExJQiwgX19TVExfQ09ORklHX0guCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4uCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVPRi4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemVfdC4KLSNpbmNsdWRlIDxjdGltZT4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6dGltZV90LgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgLy8gUHV0IHNpemVfdCBpbiBzdGQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAgICAgICAgICAgICAgLy8gdWludDhfdCwgdWludDMyX3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAvLyBidWZmZXIgc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvbm9uX2Jsb2NraW5nX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWRhcHRlci9yYW5nZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+IC8vIGZhaWx1cmUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9lcnJvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci96bGliLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPiAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3B1dGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDMwOSkgICAgLy8gVHJ1bmNhdGlvbiBvZiBjb25zdGFudCB2YWx1ZS4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OnRpbWVfdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbnMgb2YgY29uc3RhbnRzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBnemlwIHsKLQotdXNpbmcgbmFtZXNwYWNlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnpsaWI7Ci0KLSAgICAvLyBFcnJvciBjb2RlcyB1c2VkIGJ5IGd6aXBfZXJyb3IuCi0KLWNvbnN0IGludCB6bGliX2Vycm9yICAgICAgICA9IDE7Ci1jb25zdCBpbnQgYmFkX2NyYyAgICAgICAgICAgPSAyOyAvLyBSZWNvcmRlZCBjcmMgZG9lc24ndCBtYXRjaCBkYXRhLgotY29uc3QgaW50IGJhZF9sZW5ndGggICAgICAgID0gMzsgLy8gUmVjb3JkZWQgbGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGF0YS4KLWNvbnN0IGludCBiYWRfaGVhZGVyICAgICAgICA9IDQ7IC8vIE1hbGZvcm1lZCBoZWFkZXIuCi1jb25zdCBpbnQgYmFkX2Zvb3RlciAgICAgICAgPSA1OyAvLyBNYWxmb3JtZWQgZm9vdGVyLgotY29uc3QgaW50IGJhZF9tZXRob2QgICAgICAgID0gNjsgLy8gVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gbWV0aG9kLgotCi1uYW1lc3BhY2UgbWFnaWMgewotCi0gICAgLy8gTWFnaWMgbnVtYmVycyB1c2VkIGJ5IGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgaWQxICAgICAgICAgICAgICAgPSAweDFmOwotY29uc3QgaW50IGlkMiAgICAgICAgICAgICAgID0gMHg4YjsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIG1hZ2ljLgotCi1uYW1lc3BhY2UgbWV0aG9kIHsKLQotICAgIC8vIENvZGVzIHVzZWQgZm9yIHRoZSAnQ00nIGJ5dGUgb2YgdGhlIGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgZGVmbGF0ZSAgICAgICAgICAgPSA4OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgbWV0aG9kLgotCi1uYW1lc3BhY2UgZmxhZ3MgewotCi0gICAgLy8gQ29kZXMgdXNlZCBmb3IgdGhlICdGTEcnIGJ5dGUgb2YgdGhlIGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgdGV4dCAgICAgICAgICAgICAgPSAxOwotY29uc3QgaW50IGhlYWRlcl9jcmMgICAgICAgID0gMjsKLWNvbnN0IGludCBleHRyYSAgICAgICAgICAgICA9IDQ7Ci1jb25zdCBpbnQgbmFtZSAgICAgICAgICAgICAgPSA4OwotY29uc3QgaW50IGNvbW1lbnQgICAgICAgICAgID0gMTY7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBmbGFncy4KLQotbmFtZXNwYWNlIGV4dHJhX2ZsYWdzIHsKLQotICAgIC8vIENvZGVzIHVzZWQgZm9yIHRoZSAnWEZMJyBieXRlIG9mIHRoZSBnemlwIGhlYWRlci4KLQotY29uc3QgaW50IGJlc3RfY29tcHJlc3Npb24gID0gMjsKLWNvbnN0IGludCBiZXN0X3NwZWVkICAgICAgICA9IDQ7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBleHRyYV9mbGFncy4KLQotICAgIC8vIENvZGVzIHVzZWQgZm9yIHRoZSAnT1MnIGJ5dGUgb2YgdGhlIGd6aXAgaGVhZGVyLgotCi1jb25zdCBpbnQgb3NfZmF0ICAgICAgICAgICAgPSAwOwotY29uc3QgaW50IG9zX2FtaWdhICAgICAgICAgID0gMTsKLWNvbnN0IGludCBvc192bXMgICAgICAgICAgICA9IDI7Ci1jb25zdCBpbnQgb3NfdW5peCAgICAgICAgICAgPSAzOwotY29uc3QgaW50IG9zX3ZtX2NtcyAgICAgICAgID0gNDsKLWNvbnN0IGludCBvc19hdGFyaSAgICAgICAgICA9IDU7Ci1jb25zdCBpbnQgb3NfaHBmcyAgICAgICAgICAgPSA2OwotY29uc3QgaW50IG9zX21hY2ludG9zaCAgICAgID0gNzsKLWNvbnN0IGludCBvc196X3N5c3RlbSAgICAgICA9IDg7Ci1jb25zdCBpbnQgb3NfY3BfbSAgICAgICAgICAgPSA5OwotY29uc3QgaW50IG9zX3RvcHNfMjAgICAgICAgID0gMTA7Ci1jb25zdCBpbnQgb3NfbnRmcyAgICAgICAgICAgPSAxMTsKLWNvbnN0IGludCBvc19xZG9zICAgICAgICAgICA9IDEyOwotY29uc3QgaW50IG9zX2Fjb3JuICAgICAgICAgID0gMTM7Ci1jb25zdCBpbnQgb3NfdW5rbm93biAgICAgICAgPSAyNTU7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBnemlwLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgZ3ppcF9wYXJhbXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLwotLy8gQ2xhc3MgbmFtZTogZ3ppcF9wYXJhbXMuCi0vLyBEZXNjcmlwdGlvbjogU3ViY2xhc3Mgb2YgemxpYl9wYXJhbXMgd2l0aCBhbiBhZGRpdGlvbmFsIGZpZWxkCi0vLyAgICAgIHJlcHJlc2VudGluZyBhIGZpbGUgbmFtZS4KLS8vCi1zdHJ1Y3QgZ3ppcF9wYXJhbXMgOiB6bGliX3BhcmFtcyB7Ci0KLSAgICAvLyBOb24tZXhwbGljaXQgY29uc3RydWN0b3IuCi0gICAgZ3ppcF9wYXJhbXMoIGludCBsZXZlbCAgICAgICAgICAgICAgPSBnemlwOjpkZWZhdWx0X2NvbXByZXNzaW9uLAotICAgICAgICAgICAgICAgICBpbnQgbWV0aG9kICAgICAgICAgICAgID0gZ3ppcDo6ZGVmbGF0ZWQsCi0gICAgICAgICAgICAgICAgIGludCB3aW5kb3dfYml0cyAgICAgICAgPSBnemlwOjpkZWZhdWx0X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICBpbnQgbWVtX2xldmVsICAgICAgICAgID0gZ3ppcDo6ZGVmYXVsdF9tZW1fbGV2ZWwsCi0gICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSAgICAgICAgICAgPSBnemlwOjpkZWZhdWx0X3N0cmF0ZWd5LAotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBmaWxlX25hbWUgID0gIiIsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbW1lbnQgICAgPSAiIiwKLSAgICAgICAgICAgICAgICAgc3RkOjp0aW1lX3QgbXRpbWUgICAgICA9IDAgKQotICAgICAgICA6IHpsaWJfcGFyYW1zKGxldmVsLCBtZXRob2QsIHdpbmRvd19iaXRzLCBtZW1fbGV2ZWwsIHN0cmF0ZWd5KSwKLSAgICAgICAgICBmaWxlX25hbWUoZmlsZV9uYW1lKSwgY29tbWVudChjb21tZW50KSwgbXRpbWUobXRpbWUpCi0gICAgICAgIHsgfQotICAgIHN0ZDo6c3RyaW5nICBmaWxlX25hbWU7Ci0gICAgc3RkOjpzdHJpbmcgIGNvbW1lbnQ7Ci0gICAgc3RkOjp0aW1lX3QgIG10aW1lOwotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGd6aXBfZXJyb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIENsYXNzIG5hbWU6IGd6aXBfZXJyb3IuCi0vLyBEZXNjcmlwdGlvbjogU3ViY2xhc3Mgb2Ygc3RkOjppb3NfYmFzZTo6ZmFpbHVyZSB0aHJvd24gdG8gaW5kaWNhdGUKLS8vICAgICB6bGliIGVycm9ycyBvdGhlciB0aGFuIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucy4KLS8vCi1jbGFzcyBnemlwX2Vycm9yIDogcHVibGljIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBnemlwX2Vycm9yKGludCBlcnJvcikKLSAgICAgICAgOiBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSgiZ3ppcCBlcnJvciIpLAotICAgICAgICAgIGVycm9yXyhlcnJvciksIHpsaWJfZXJyb3JfY29kZV8oemxpYjo6b2theSkgeyB9Ci0gICAgZXhwbGljaXQgZ3ppcF9lcnJvcihjb25zdCB6bGliX2Vycm9yJiBlKQotICAgICAgICA6IE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJnemlwIGVycm9yIiksCi0gICAgICAgICAgZXJyb3JfKGd6aXA6OnpsaWJfZXJyb3IpLCB6bGliX2Vycm9yX2NvZGVfKGUuZXJyb3IoKSkKLSAgICAgICAgeyB9Ci0gICAgaW50IGVycm9yKCkgY29uc3QgeyByZXR1cm4gZXJyb3JfOyB9Ci0gICAgaW50IHpsaWJfZXJyb3JfY29kZSgpIGNvbnN0IHsgcmV0dXJuIHpsaWJfZXJyb3JfY29kZV87IH0KLXByaXZhdGU6Ci0gICAgaW50IGVycm9yXzsKLSAgICBpbnQgemxpYl9lcnJvcl9jb2RlXzsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBnemlwX2NvbXByZXNzb3ItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBnemlwX2NvbXByZXNzb3IKLS8vIERlc2NyaXB0aW9uOiBNb2RlbCBvZiBPdXRwdXRGaWx0ZXIgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGluIHRoZQotLy8gICAgICBnemlwIGZvcm1hdC4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGJhc2ljX2d6aXBfY29tcHJlc3NvciA6IGJhc2ljX3psaWJfY29tcHJlc3NvcjxBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGJhc2ljX3psaWJfY29tcHJlc3NvcjxBbGxvYz4gIGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGJhc2ljX2d6aXBfY29tcHJlc3NvciggY29uc3QgZ3ppcF9wYXJhbXMmID0gZ3ppcDo6ZGVmYXVsdF9jb21wcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplICk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0gMDsKLQotICAgICAgICAvLyBSZWFkIGhlYWRlci4KLSAgICAgICAgaWYgKCEoZmxhZ3NfICYgZl9oZWFkZXJfZG9uZSkpCi0gICAgICAgICAgICByZXN1bHQgKz0gcmVhZF9zdHJpbmcocywgbiwgaGVhZGVyXyk7Ci0KLSAgICAgICAgLy8gUmVhZCBib2R5LgotICAgICAgICBpZiAoIShmbGFnc18gJiBmX2JvZHlfZG9uZSkpIHsKLQotICAgICAgICAgICAgLy8gUmVhZCBmcm9tIGJhc2ljX3psaWJfZmlsdGVyLgotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IGJhc2VfdHlwZTo6cmVhZChzcmMsIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgaWYgKGFtdCAhPSAtMSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBhbXQ7Ci0gICAgICAgICAgICAgICAgaWYgKGFtdCA8IG4gLSByZXN1bHQpIHsgLy8gRG91YmxlLWNoZWNrIGZvciBFT0YuCi0gICAgICAgICAgICAgICAgICAgIGFtdCA9IGJhc2VfdHlwZTo6cmVhZChzcmMsIHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYW10ICE9IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYW10ID09IC0xKQotICAgICAgICAgICAgICAgIHByZXBhcmVfZm9vdGVyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZWFkIGZvb3Rlci4KLSAgICAgICAgaWYgKChmbGFnc18gJiBmX2JvZHlfZG9uZSkgIT0gMCAmJiByZXN1bHQgPCBuKQotICAgICAgICAgICAgcmVzdWx0ICs9IHJlYWRfc3RyaW5nKHMgKyByZXN1bHQsIG4gLSByZXN1bHQsIGZvb3Rlcl8pOwotCi0gICAgICAgIHJldHVybiByZXN1bHQgIT0gMCA/IHJlc3VsdCA6IC0xOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIHNuaywgY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIGlmICghKGZsYWdzXyAmIGZfaGVhZGVyX2RvbmUpKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihoZWFkZXJfLnNpemUoKSAtIG9mZnNldF8pOwotICAgICAgICAgICAgb2Zmc2V0XyArPSBuZG5ib29zdDo6aW9zdHJlYW1zOjp3cml0ZShzbmssIGhlYWRlcl8uZGF0YSgpICsgb2Zmc2V0XywgYW10KTsKLSAgICAgICAgICAgIGlmIChvZmZzZXRfID09IGhlYWRlcl8uc2l6ZSgpKQotICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBmX2hlYWRlcl9kb25lOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBiYXNlX3R5cGU6OndyaXRlKHNuaywgcywgbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIC8vIENsb3NlIHpsaWIgY29tcHJlc3Nvci4KLSAgICAgICAgICAgIGJhc2VfdHlwZTo6Y2xvc2Uoc25rLCBtKTsKLQotICAgICAgICAgICAgaWYgKG0gPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmxhZ3NfICYgZl9oZWFkZXJfZG9uZSkgewotCi0gICAgICAgICAgICAgICAgICAgIC8vIFdyaXRlIGZpbmFsIGZpZWxkcyBvZiBnemlwIGZpbGUgZm9ybWF0LgotICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb25nKHRoaXMtPmNyYygpLCBzbmspOwotICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb25nKHRoaXMtPnRvdGFsX2luKCksIHNuayk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoKC4uLikgewotICAgICAgICAgICAgY2xvc2VfaW1wbCgpOwotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2VfaW1wbCgpOwotICAgIH0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGd6aXBfcGFyYW1zIG5vcm1hbGl6ZV9wYXJhbXMoZ3ppcF9wYXJhbXMgcCk7Ci0gICAgdm9pZCBwcmVwYXJlX2Zvb3RlcigpOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSByZWFkX3N0cmluZyhjaGFyKiBzLCBzdGQ6OnN0cmVhbXNpemUgbiwgc3RkOjpzdHJpbmcmIHN0cik7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyB2b2lkIHdyaXRlX2xvbmcobG9uZyBuLCBTaW5rJiBuZXh0LCBuZG5ib29zdDo6bXBsOjp0cnVlXykKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChuZXh0LCBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgbikpOwotICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpwdXQobmV4dCwgc3RhdGljX2Nhc3Q8Y2hhcj4oMHhGRiAmIChuID4+IDgpKSk7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChuZXh0LCBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgKG4gPj4gMTYpKSk7Ci0gICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChuZXh0LCBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgKG4gPj4gMjQpKSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVfbG9uZyhsb25nIG4sIFNpbmsmIG5leHQsIG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLSAgICB7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHZvaWQgd3JpdGVfbG9uZyhsb25nIG4sIFNpbmsmIG5leHQpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFNpbms+Ojp0eXBlIGNhdGVnb3J5OwotICAgICAgICB0eXBlZGVmIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+IGNhbl93cml0ZTsKLSAgICAgICAgd3JpdGVfbG9uZyhuLCBuZXh0LCBjYW5fd3JpdGUoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjbG9zZV9pbXBsKCkKLSAgICB7Ci0gICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKSAmJiBkZWZpbmVkKF9fU1RMX0NPTkZJR19IKSB8fCBcCi0gICAgICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKSBcCi0gICAgICAgICAgICAvKiovCi0gICAgICAgICAgICBmb290ZXJfLmVyYXNlKDAsIHN0ZDo6c3RyaW5nOjpucG9zKTsKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgIGZvb3Rlcl8uY2xlYXIoKTsKLSAgICAgICAgI2VuZGlmCi0gICAgICAgIG9mZnNldF8gPSAwOwotICAgICAgICBmbGFnc18gPSAwOwotICAgIH0KLQotICAgIGVudW0gc3RhdGVfdHlwZSB7Ci0gICAgICAgIGZfaGVhZGVyX2RvbmUgPSAxLAotICAgICAgICBmX2JvZHlfZG9uZSA9IGZfaGVhZGVyX2RvbmUgPDwgMSwKLSAgICAgICAgZl9mb290ZXJfZG9uZSA9IGZfYm9keV9kb25lIDw8IDEKLSAgICB9OwotICAgIHN0ZDo6c3RyaW5nICBoZWFkZXJfOwotICAgIHN0ZDo6c3RyaW5nICBmb290ZXJfOwotICAgIHN0ZDo6c2l6ZV90ICBvZmZzZXRfOwotICAgIGludCAgICAgICAgICBmbGFnc187Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfZ3ppcF9jb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX2d6aXBfY29tcHJlc3Nvcjw+IGd6aXBfY29tcHJlc3NvcjsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIGRlY29tcHJlc3Npb24tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFByb2Nlc3NlcyBnemlwIGhlYWRlcnMKLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGd6aXBfaGVhZGVyIHsKLXB1YmxpYzoKLSAgICBnemlwX2hlYWRlcigpIHsgcmVzZXQoKTsgfQotCi0gICAgLy8gTWVtYmVycyBmb3IgcHJvY2Vzc2luZyBoZWFkZXIgZGF0YQotICAgIHZvaWQgcHJvY2VzcyhjaGFyIGMpOwotICAgIGJvb2wgZG9uZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlXyA9PSBzX2RvbmU7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAvLyBNZW1iZXJzIGZvciBhY2Nlc3NpbmcgaGVhZGVyIGRhdGEKLSAgICBzdGQ6OnN0cmluZyBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBmaWxlX25hbWVfOyB9Ci0gICAgc3RkOjpzdHJpbmcgY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbW1lbnRfOyB9Ci0gICAgYm9vbCB0ZXh0KCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGd6aXA6OmZsYWdzOjp0ZXh0KSAhPSAwOyB9Ci0gICAgaW50IG9zKCkgY29uc3QgeyByZXR1cm4gb3NfOyB9Ci0gICAgc3RkOjp0aW1lX3QgbXRpbWUoKSBjb25zdCB7IHJldHVybiBtdGltZV87IH0KLXByaXZhdGU6Ci0gICAgZW51bSBzdGF0ZV90eXBlIHsKLSAgICAgICAgc19pZDEgICAgICAgPSAxLAotICAgICAgICBzX2lkMiAgICAgICA9IHNfaWQxICsgMSwKLSAgICAgICAgc19jbSAgICAgICAgPSBzX2lkMiArIDEsCi0gICAgICAgIHNfZmxnICAgICAgID0gc19jbSArIDEsCi0gICAgICAgIHNfbXRpbWUgICAgID0gc19mbGcgKyAxLAotICAgICAgICBzX3hmbCAgICAgICA9IHNfbXRpbWUgKyAxLAotICAgICAgICBzX29zICAgICAgICA9IHNfeGZsICsgMSwKLSAgICAgICAgc194bGVuICAgICAgPSBzX29zICsgMSwKLSAgICAgICAgc19leHRyYSAgICAgPSBzX3hsZW4gKyAxLAotICAgICAgICBzX25hbWUgICAgICA9IHNfZXh0cmEgKyAxLAotICAgICAgICBzX2NvbW1lbnQgICA9IHNfbmFtZSArIDEsCi0gICAgICAgIHNfaGNyYyAgICAgID0gc19jb21tZW50ICsgMSwKLSAgICAgICAgc19kb25lICAgICAgPSBzX2hjcmMgKyAxCi0gICAgfTsKLSAgICBzdGQ6OnN0cmluZyAgZmlsZV9uYW1lXzsKLSAgICBzdGQ6OnN0cmluZyAgY29tbWVudF87Ci0gICAgaW50ICAgICAgICAgIG9zXzsKLSAgICBzdGQ6OnRpbWVfdCAgbXRpbWVfOwotICAgIGludCAgICAgICAgICBmbGFnc187Ci0gICAgaW50ICAgICAgICAgIHN0YXRlXzsKLSAgICBpbnQgICAgICAgICAgb2Zmc2V0XzsgIC8vIE9mZnNldCB3aXRoaW4gZml4ZWQtbGVuZ3RoIHJlZ2lvbi4KLSAgICBpbnQgICAgICAgICAgeGxlbl87ICAgIC8vIEJ5dGVzIHJlbWFpbmluZyBpbiBleHRyYSBmaWVsZC4KLX07Ci0KLS8vIFByb2Nlc3NlcyBnemlwIGZvb3RlcnMKLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGd6aXBfZm9vdGVyIHsKLXB1YmxpYzoKLSAgICBnemlwX2Zvb3RlcigpIHsgcmVzZXQoKTsgfQotICAgIAotICAgIC8vIE1lbWJlcnMgZm9yIHByb2Nlc3NpbmcgZm9vdGVyIGRhdGEKLSAgICB2b2lkIHByb2Nlc3MoY2hhciBjKTsKLSAgICBib29sIGRvbmUoKSBjb25zdCB7IHJldHVybiBzdGF0ZV8gPT0gc19kb25lOyB9Ci0gICAgdm9pZCByZXNldCgpOwotICAgIAotICAgIC8vIE1lbWJlcnMgZm9yIGFjY2Vzc2luZyBmb290ZXIgZGF0YQotICAgIHpsaWI6OnVsb25nIGNyYygpIGNvbnN0IHsgcmV0dXJuIGNyY187IH0KLSAgICB6bGliOjp1bG9uZyB1bmNvbXByZXNzZWRfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGlzaXplXzsgfQotcHJpdmF0ZToKLSAgICBlbnVtIHN0YXRlX3R5cGUgewotICAgICAgICBzX2NyYyAgICAgPSAxLAotICAgICAgICBzX2lzaXplICAgPSBzX2NyYyArIDEsCi0gICAgICAgIHNfZG9uZSAgICA9IHNfaXNpemUgKyAxCi0gICAgfTsKLSAgICB6bGliOjp1bG9uZyAgY3JjXzsKLSAgICB6bGliOjp1bG9uZyAgaXNpemVfOwotICAgIGludCAgICAgICAgICBzdGF0ZV87Ci0gICAgaW50ICAgICAgICAgIG9mZnNldF87IAotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IGJhc2ljX2d6aXBfZGVjb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGluIHRoZQotLy8gICAgICBnemlwIGZvcm1hdC4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yIDogYmFzaWNfemxpYl9kZWNvbXByZXNzb3I8QWxsb2M+IHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBiYXNpY196bGliX2RlY29tcHJlc3NvcjxBbGxvYz4gICBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnN0cmluZ190eXBlICBzdHJpbmdfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IGR1YWxfdXNlLAotICAgICAgICAgIGZpbHRlcl90YWcsCi0gICAgICAgICAgbXVsdGljaGFyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yKCBpbnQgd2luZG93X2JpdHMgPSBnemlwOjpkZWZhdWx0X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IDA7Ci0gICAgICAgIHdoaWxlKHJlc3VsdCA8IG4pIHsKLSAgICAgICAgICAgIGlmKHN0YXRlXyA9PSBzX3N0YXJ0KSB7Ci0gICAgICAgICAgICAgICAgc3RhdGVfID0gc19oZWFkZXI7Ci0gICAgICAgICAgICAgICAgaGVhZGVyXy5yZXNldCgpOwotICAgICAgICAgICAgICAgIGZvb3Rlcl8ucmVzZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdGF0ZV8gPT0gc19oZWFkZXIpIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHNbcmVzdWx0KytdOwotICAgICAgICAgICAgICAgIGhlYWRlcl8ucHJvY2VzcyhjKTsKLSAgICAgICAgICAgICAgICBpZiAoaGVhZGVyXy5kb25lKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfYm9keTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVfID09IHNfYm9keSkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTo6d3JpdGUoc25rLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLT5lb2YoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2Zvb3RlcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGNvbnN0IHpsaWJfZXJyb3ImIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGUpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgeyAvLyBzdGF0ZV8gPT0gc19mb290ZXIKLSAgICAgICAgICAgICAgICBpZiAoZm9vdGVyXy5kb25lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZvb3Rlcl8uY3JjKCkgIT0gdGhpcy0+Y3JjKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2NyYykpOwotCi0gICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTo6Y2xvc2Uoc25rLCBORE5CT09TVF9JT1M6Om91dCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfc3RhcnQ7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGMgPSBzW3Jlc3VsdCsrXTsKLSAgICAgICAgICAgICAgICAgICAgZm9vdGVyXy5wcm9jZXNzKGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcj4gIHRyYWl0c190eXBlOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgICAgICAgICAgICByZXN1bHQgPSAwOwotICAgICAgICBwZWVrYWJsZV9zb3VyY2U8U291cmNlPiAgICBwZWVrKHNyYywgcHV0YmFja18pOwotICAgICAgICB3aGlsZSAocmVzdWx0IDwgbiAmJiBzdGF0ZV8gIT0gc19kb25lKSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVfID09IHNfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2hlYWRlcjsKLSAgICAgICAgICAgICAgICBoZWFkZXJfLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgZm9vdGVyXy5yZXNldCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0YXRlXyA9PSBzX2hlYWRlcikgewotICAgICAgICAgICAgICAgIGludCBjID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6Z2V0KHBlZWspOwotICAgICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6aXNfZW9mKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfaGVhZGVyKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soYykpIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGhlYWRlcl8ucHJvY2VzcyhjKTsKLSAgICAgICAgICAgICAgICBpZiAoaGVhZGVyXy5kb25lKCkpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlXyA9IHNfYm9keTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGVfID09IHNfYm9keSkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfdHlwZTo6cmVhZChwZWVrLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFtdCAhPSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGFtdDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbXQgPCBuIC0gcmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcGVlay5wdXRiYWNrKHRoaXMtPnVuY29uc3VtZWRfaW5wdXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2Zvb3RlcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGNvbnN0IHpsaWJfZXJyb3ImIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGUpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgeyAvLyBzdGF0ZV8gPT0gc19mb290ZXIKLSAgICAgICAgICAgICAgICBpbnQgYyA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OmdldChwZWVrKTsKLSAgICAgICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmlzX2VvZihjKSkgewotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2Zvb3RlcikpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb290ZXJfLnByb2Nlc3MoYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGZvb3Rlcl8uZG9uZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmb290ZXJfLmNyYygpICE9IHRoaXMtPmNyYygpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGd6aXA6OmJhZF9jcmMpKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGMgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpnZXQocGVlayk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6aXNfZW9mKGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV8gPSBzX2RvbmU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwZWVrLnB1dGJhY2soYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU6OmNsb3NlKHBlZWssIE5ETkJPT1NUX0lPUzo6aW4pOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVfID0gc19zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl8ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlcl8ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAocGVlay5oYXNfdW5jb25zdW1lZF9pbnB1dCgpKSB7Ci0gICAgICAgICAgICBwdXRiYWNrXyA9IHBlZWsudW5jb25zdW1lZF9pbnB1dCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHV0YmFja18uY2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDAgfHwgc3RhdGVfICE9IHNfZG9uZSA/Ci0gICAgICAgICAgICByZXN1bHQgOgotICAgICAgICAgICAgLTE7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHZvaWQgY2xvc2UoU291cmNlJiBzcmMsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgbSkKLSAgICB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBiYXNlX3R5cGU6OmNsb3NlKHNyYywgbSk7Ci0gICAgICAgIH0gY2F0Y2ggKGNvbnN0IHpsaWJfZXJyb3ImIGUpIHsKLSAgICAgICAgICAgIHN0YXRlXyA9IHNfc3RhcnQ7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZSkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtID09IE5ETkJPT1NUX0lPUzo6b3V0KSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGVfID09IHNfc3RhcnQgfHwgc3RhdGVfID09IHNfaGVhZGVyKQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfaGVhZGVyKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGF0ZV8gPT0gc19ib2R5KQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZ3ppcF9lcnJvcihnemlwOjpiYWRfZm9vdGVyKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGF0ZV8gPT0gc19mb290ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWZvb3Rlcl8uZG9uZSgpKQotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGd6aXBfZXJyb3IoZ3ppcDo6YmFkX2Zvb3RlcikpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYoZm9vdGVyXy5jcmMoKSAhPSB0aGlzLT5jcmMoKSkKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihnemlwX2Vycm9yKGd6aXA6OmJhZF9jcmMpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCEiQmFkIHN0YXRlIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGVfID0gc19zdGFydDsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBmaWxlX25hbWUoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfLmZpbGVfbmFtZSgpOyB9Ci0gICAgc3RkOjpzdHJpbmcgY29tbWVudCgpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl8uY29tbWVudCgpOyB9Ci0gICAgYm9vbCB0ZXh0KCkgY29uc3QgeyByZXR1cm4gaGVhZGVyXy50ZXh0KCk7IH0KLSAgICBpbnQgb3MoKSBjb25zdCB7IHJldHVybiBoZWFkZXJfLm9zKCk7IH0KLSAgICBzdGQ6OnRpbWVfdCBtdGltZSgpIGNvbnN0IHsgcmV0dXJuIGhlYWRlcl8ubXRpbWUoKTsgfQotcHJpdmF0ZToKLSAgICBzdGF0aWMgZ3ppcF9wYXJhbXMgbWFrZV9wYXJhbXMoaW50IHdpbmRvd19iaXRzKTsKLQotICAgIC8vIFNvdXJjZSBhZGFwdGVyIGFsbG93aW5nIGFuIGFyYml0cmFyeSBjaGFyYWN0ZXIgc2VxdWVuY2UgdG8gYmUgcHV0IGJhY2suCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHN0cnVjdCBwZWVrYWJsZV9zb3VyY2UgewotICAgICAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwotICAgICAgICBzdHJ1Y3QgY2F0ZWdvcnkgOiBzb3VyY2VfdGFnLCBwZWVrYWJsZV90YWcgeyB9OwotICAgICAgICBleHBsaWNpdCBwZWVrYWJsZV9zb3VyY2UoU291cmNlJiBzcmMsIGNvbnN0IHN0cmluZ190eXBlJiBwdXRiYWNrID0gIiIpIAotICAgICAgICAgICAgOiBzcmNfKHNyYyksIHB1dGJhY2tfKHB1dGJhY2spLCBvZmZzZXRfKDApCi0gICAgICAgICAgICB7IH0KLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAwOwotCi0gICAgICAgICAgICAvLyBDb3B5IGNoYXJhY3RlcnMgZnJvbSBwdXRiYWNrIGJ1ZmZlcgotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIHBic2l6ZSA9IAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4ocHV0YmFja18uc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmIChvZmZzZXRfIDwgcGJzaXplKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHN0ZDo6bWluKShuLCBwYnNpemUgLSBvZmZzZXRfKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoY2hhcik6OmNvcHkoCi0gICAgICAgICAgICAgICAgICAgIHMsIHB1dGJhY2tfLmRhdGEoKSArIG9mZnNldF8sIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0XyArPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBSZWFkIGNoYXJhY3RlcnMgZnJvbSBzcmNfCi0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6cmVhZChzcmNfLCBzICsgcmVzdWx0LCBuIC0gcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiBhbXQgIT0gLTEgPyAKLSAgICAgICAgICAgICAgICByZXN1bHQgKyBhbXQgOiAKLSAgICAgICAgICAgICAgICByZXN1bHQgPyByZXN1bHQgOiAtMTsKLSAgICAgICAgfQotICAgICAgICBib29sIHB1dGJhY2soY2hhciBjKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob2Zmc2V0XykgewotICAgICAgICAgICAgICAgIHB1dGJhY2tfWy0tb2Zmc2V0X10gPSBjOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmJhZF9wdXRiYWNrKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBwdXRiYWNrKGNvbnN0IHN0cmluZ190eXBlJiBzKQotICAgICAgICB7Ci0gICAgICAgICAgICBwdXRiYWNrXy5yZXBsYWNlKDAsIG9mZnNldF8sIHMpOwotICAgICAgICAgICAgb2Zmc2V0XyA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc29tZSBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBwdXRiYWNrIGJ1dCBub3QgcmUtcmVhZC4KLSAgICAgICAgYm9vbCBoYXNfdW5jb25zdW1lZF9pbnB1dCgpIGNvbnN0IAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2Zmc2V0XyA8IHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4ocHV0YmFja18uc2l6ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVybnMgdGhlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGJlZW4gcHV0IGJhY2sgYnV0IG5vdCByZS1yZWFkLgotICAgICAgICBzdHJpbmdfdHlwZSB1bmNvbnN1bWVkX2lucHV0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cmluZ190eXBlKHB1dGJhY2tfLCBvZmZzZXRfLCBwdXRiYWNrXy5zaXplKCkgLSBvZmZzZXRfKTsKLSAgICAgICAgfQotICAgICAgICBTb3VyY2UmICAgICAgICAgIHNyY187Ci0gICAgICAgIHN0cmluZ190eXBlICAgICAgcHV0YmFja187Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSAgb2Zmc2V0XzsKLSAgICB9OwotCi0gICAgZW51bSBzdGF0ZV90eXBlIHsKLSAgICAgICAgc19zdGFydCAgID0gMSwKLSAgICAgICAgc19oZWFkZXIgID0gc19zdGFydCArIDEsCi0gICAgICAgIHNfYm9keSAgICA9IHNfaGVhZGVyICsgMSwKLSAgICAgICAgc19mb290ZXIgID0gc19ib2R5ICsgMSwKLSAgICAgICAgc19kb25lICAgID0gc19mb290ZXIgKyAxCi0gICAgfTsKLSAgICBkZXRhaWw6Omd6aXBfaGVhZGVyICBoZWFkZXJfOwotICAgIGRldGFpbDo6Z3ppcF9mb290ZXIgIGZvb3Rlcl87Ci0gICAgc3RyaW5nX3R5cGUgICAgICAgICAgcHV0YmFja187Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgc3RhdGVfOwotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX2d6aXBfZGVjb21wcmVzc29yLCAxKQotCi10eXBlZGVmIGJhc2ljX2d6aXBfZGVjb21wcmVzc29yPD4gZ3ppcF9kZWNvbXByZXNzb3I7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgZ3ppcF9jb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfZ3ppcF9jb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfZ3ppcF9jb21wcmVzc29yCi0gICAgKGNvbnN0IGd6aXBfcGFyYW1zJiBwLCBpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBiYXNlX3R5cGUobm9ybWFsaXplX3BhcmFtcyhwKSwgYnVmZmVyX3NpemUpLAotICAgICAgb2Zmc2V0XygwKSwgZmxhZ3NfKDApCi17Ci0gICAgLy8gQ2FsY3VsYXRlIGd6aXAgaGVhZGVyLgotICAgIGJvb2wgaGFzX25hbWUgPSAhcC5maWxlX25hbWUuZW1wdHkoKTsKLSAgICBib29sIGhhc19jb21tZW50ID0gIXAuY29tbWVudC5lbXB0eSgpOwotCi0gICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBsZW5ndGggPQotICAgICAgICAxMCArCi0gICAgICAgIChoYXNfbmFtZSA/IHAuZmlsZV9uYW1lLnNpemUoKSArIDEgOiAwKSArCi0gICAgICAgIChoYXNfY29tbWVudCA/IHAuY29tbWVudC5zaXplKCkgKyAxIDogMCk7Ci0gICAgICAgIC8vICsgMjsgLy8gSGVhZGVyIGNyYyBjb25mdXNlcyBndW56aXAuCi0gICAgaW50IGZsYWdzID0KLSAgICAgICAgLy9nemlwOjpmbGFnczo6aGVhZGVyX2NyYyArCi0gICAgICAgIChoYXNfbmFtZSA/IGd6aXA6OmZsYWdzOjpuYW1lIDogMCkgKwotICAgICAgICAoaGFzX2NvbW1lbnQgPyBnemlwOjpmbGFnczo6Y29tbWVudCA6IDApOwotICAgIGludCBleHRyYV9mbGFncyA9Ci0gICAgICAgICggcC5sZXZlbCA9PSB6bGliOjpiZXN0X2NvbXByZXNzaW9uID8KLSAgICAgICAgICAgICAgZ3ppcDo6ZXh0cmFfZmxhZ3M6OmJlc3RfY29tcHJlc3Npb24gOgotICAgICAgICAgICAgICAwICkgKwotICAgICAgICAoIHAubGV2ZWwgPT0gemxpYjo6YmVzdF9zcGVlZCA/Ci0gICAgICAgICAgICAgIGd6aXA6OmV4dHJhX2ZsYWdzOjpiZXN0X3NwZWVkIDoKLSAgICAgICAgICAgICAgMCApOwotICAgIGhlYWRlcl8ucmVzZXJ2ZShsZW5ndGgpOwotICAgIGhlYWRlcl8gKz0gZ3ppcDo6bWFnaWM6OmlkMTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUQxLgotICAgIGhlYWRlcl8gKz0gZ3ppcDo6bWFnaWM6OmlkMjsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUQyLgotICAgIGhlYWRlcl8gKz0gZ3ppcDo6bWV0aG9kOjpkZWZsYXRlOyAgICAgICAgICAgICAgICAgICAgLy8gQ00uCi0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPihmbGFncyk7ICAgICAgICAgICAgICAgICAvLyBGTEcuCi0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgcC5tdGltZSk7ICAgICAgICAvLyBNVElNRS4KLSAgICBoZWFkZXJfICs9IHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiAocC5tdGltZSA+PiA4KSk7Ci0gICAgaGVhZGVyXyArPSBzdGF0aWNfY2FzdDxjaGFyPigweEZGICYgKHAubXRpbWUgPj4gMTYpKTsKLSAgICBoZWFkZXJfICs9IHN0YXRpY19jYXN0PGNoYXI+KDB4RkYgJiAocC5tdGltZSA+PiAyNCkpOwotICAgIGhlYWRlcl8gKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oZXh0cmFfZmxhZ3MpOyAgICAgICAgICAgLy8gWEZMLgotICAgIGhlYWRlcl8gKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ3ppcDo6b3NfdW5rbm93bik7ICAgICAgLy8gT1MuCi0gICAgaWYgKGhhc19uYW1lKSB7Ci0gICAgICAgIGhlYWRlcl8gKz0gcC5maWxlX25hbWU7Ci0gICAgICAgIGhlYWRlcl8gKz0gJ1wwJzsKLSAgICB9Ci0gICAgaWYgKGhhc19jb21tZW50KSB7Ci0gICAgICAgIGhlYWRlcl8gKz0gcC5jb21tZW50OwotICAgICAgICBoZWFkZXJfICs9ICdcMCc7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWd6aXBfcGFyYW1zIGJhc2ljX2d6aXBfY29tcHJlc3NvcjxBbGxvYz46Om5vcm1hbGl6ZV9wYXJhbXMoZ3ppcF9wYXJhbXMgcCkKLXsKLSAgICBwLm5vaGVhZGVyID0gdHJ1ZTsKLSAgICBwLmNhbGN1bGF0ZV9jcmMgPSB0cnVlOwotICAgIHJldHVybiBwOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXZvaWQgYmFzaWNfZ3ppcF9jb21wcmVzc29yPEFsbG9jPjo6cHJlcGFyZV9mb290ZXIoKQotewotICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmJhY2tfaW5zZXJ0X2RldmljZTxzdGQ6OnN0cmluZz4gb3V0KGZvb3Rlcl8pOwotICAgIHdyaXRlX2xvbmcodGhpcy0+Y3JjKCksIG91dCk7Ci0gICAgd3JpdGVfbG9uZyh0aGlzLT50b3RhbF9pbigpLCBvdXQpOwotICAgIGZsYWdzXyB8PSBmX2JvZHlfZG9uZTsKLSAgICBvZmZzZXRfID0gMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1zdGQ6OnN0cmVhbXNpemUgYmFzaWNfZ3ppcF9jb21wcmVzc29yPEFsbG9jPjo6cmVhZF9zdHJpbmcKLSAgICAoY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4sIHN0ZDo6c3RyaW5nJiBzdHIpCi17Ci0gICAgc3RkOjpzdHJlYW1zaXplIGF2YWlsID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihzdHIuc2l6ZSgpIC0gb2Zmc2V0Xyk7Ci0gICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IChzdGQ6Om1pbikoYXZhaWwsIG4pOwotICAgIHN0ZDo6Y29weSggc3RyLmRhdGEoKSArIG9mZnNldF8sCi0gICAgICAgICAgICAgICBzdHIuZGF0YSgpICsgb2Zmc2V0XyArIGFtdCwKLSAgICAgICAgICAgICAgIHMgKTsKLSAgICBvZmZzZXRfICs9IGFtdDsKLSAgICBpZiAoICEoZmxhZ3NfICYgZl9oZWFkZXJfZG9uZSkgJiYKLSAgICAgICAgIG9mZnNldF8gPT0gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KHN0ci5zaXplKCkpICkKLSAgICB7Ci0gICAgICAgIGZsYWdzXyB8PSBmX2hlYWRlcl9kb25lOwotICAgIH0KLSAgICByZXR1cm4gYW10OwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIGd6aXBfZGVjb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX2d6aXBfZGVjb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfZ3ppcF9kZWNvbXByZXNzb3IKLSAgICAoaW50IHdpbmRvd19iaXRzLCBpbnQgYnVmZmVyX3NpemUpCi0gICAgOiBiYXNlX3R5cGUobWFrZV9wYXJhbXMod2luZG93X2JpdHMpLCBidWZmZXJfc2l6ZSksCi0gICAgICBzdGF0ZV8oc19zdGFydCkKLSAgICB7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1nemlwX3BhcmFtcyBiYXNpY19nemlwX2RlY29tcHJlc3NvcjxBbGxvYz46Om1ha2VfcGFyYW1zKGludCB3aW5kb3dfYml0cykKLXsKLSAgICBnemlwX3BhcmFtcyBwOwotICAgIHAud2luZG93X2JpdHMgPSB3aW5kb3dfYml0czsKLSAgICBwLm5vaGVhZGVyID0gdHJ1ZTsKLSAgICBwLmNhbGN1bGF0ZV9jcmMgPSB0cnVlOwotICAgIHJldHVybiBwOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HWklQX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2xpbmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2xpbmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODM5OWIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9saW5lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTElORV9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19MSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1pbi4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoZWNrZWRfb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgICAgICAgICAvLyBvcGVubW9kZSwgc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+ICAgICAgICAgICAgICAgIC8vIGNoZWNrX2VvZiAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy93cml0ZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAvLyBWQzcuMSBDNDI0NC4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBsaW5lX2ZpbHRlci4KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcnM6Ci0vLyAgICAgIENoIC0gVGhlIGNoYXJhY3RlciB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vIERlc2NyaXB0aW9uOiBGaWx0ZXIgd2hpY2ggcHJvY2Vzc2VzIGRhdGEgb25lIGxpbmUgYXQgYSB0aW1lLgotLy8KLXRlbXBsYXRlPCB0eXBlbmFtZSBDaCwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLSAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Q2g+OjphbGxvY2F0b3JfdHlwZQotICAgICAgICAgICNlbHNlCi0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPENoPgotICAgICAgICAgICNlbmRpZgotICAgICAgICAgID4KLWNsYXNzIGJhc2ljX2xpbmVfZmlsdGVyIHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaD46OnRyYWl0c190eXBlICBzdHJpbmdfdHJhaXRzOwotcHVibGljOgotICAgIHR5cGVkZWYgQ2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzwKLSAgICAgICAgICAgICAgICBDaCwKLSAgICAgICAgICAgICAgICBzdHJpbmdfdHJhaXRzLAotICAgICAgICAgICAgICAgIEFsbG9jCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnCi0gICAgICAgIHsgfTsKLXByb3RlY3RlZDoKLSAgICBiYXNpY19saW5lX2ZpbHRlcihib29sIHN1cHByZXNzX25ld2xpbmVzID0gZmFsc2UpIAotICAgICAgICA6IHBvc18oc3RyaW5nX3R5cGU6Om5wb3MpLCAKLSAgICAgICAgICBmbGFnc18oc3VwcHJlc3NfbmV3bGluZXMgPyBmX3N1cHByZXNzIDogMCkgCi0gICAgICAgIHsgfQotcHVibGljOgotICAgIHZpcnR1YWwgfmJhc2ljX2xpbmVfZmlsdGVyKCkgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoIShmbGFnc18gJiBmX3dyaXRlKSk7Ci0gICAgICAgIGZsYWdzXyB8PSBmX3JlYWQ7Ci0KLSAgICAgICAgLy8gSGFuZGxlIHVuZmluaXNoZWQgYnVzaW5lc3MuCi0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSAwOwotICAgICAgICBpZiAoIWN1cl9saW5lXy5lbXB0eSgpICYmIChyZXN1bHQgPSByZWFkX2xpbmUocywgbikpID09IG4pCi0gICAgICAgICAgICByZXR1cm4gbjsKLQotICAgICAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgc3RhdHVzID0gdHJhaXRzX3R5cGU6Omdvb2QoKTsKLSAgICAgICAgd2hpbGUgKHJlc3VsdCA8IG4gJiYgIXRyYWl0c190eXBlOjppc19lb2Yoc3RhdHVzKSkgewotCi0gICAgICAgICAgICAvLyBDYWxsIG5leHRfbGluZSgpIHRvIHJldHJpZXZlIGEgbGluZSBvZiBmaWx0ZXJlZCB0ZXh0LCBhbmQKLSAgICAgICAgICAgIC8vIHJlYWRfbGluZSgpIHRvIGNvcHkgaXQgaW50byBidWZmZXIgcy4KLSAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6d291bGRfYmxvY2soc3RhdHVzID0gbmV4dF9saW5lKHNyYykpKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQgKz0gcmVhZF9saW5lKHMgKyByZXN1bHQsIG4gLSByZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGRldGFpbDo6Y2hlY2tfZW9mKHJlc3VsdCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCEoZmxhZ3NfICYgZl9yZWFkKSk7Ci0gICAgICAgIGZsYWdzXyB8PSBmX3dyaXRlOwotCi0gICAgICAgIC8vIEhhbmRsZSB1bmZpbmlzaGVkIGJ1c2luZXNzLgotICAgICAgICBpZiAocG9zXyAhPSBzdHJpbmdfdHlwZTo6bnBvcyAmJiAhd3JpdGVfbGluZShzbmspKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgY29uc3QgY2hhcl90eXBlICpjdXIgPSBzLCAqbmV4dDsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLQotICAgICAgICAgICAgLy8gU2VhcmNoIGZvciB0aGUgbmV4dCBmdWxsIGxpbmUgaW4gW2N1ciwgcyArIG4pLCBmaWx0ZXIgaXQKLSAgICAgICAgICAgIC8vIGFuZCB3cml0ZSBpdCB0byBzbmsuCi0gICAgICAgICAgICB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHJlc3QgPSBuIC0gKGN1ciAtIHMpOwotICAgICAgICAgICAgaWYgKChuZXh0ID0gdHJhaXRzX3R5cGU6OmZpbmQoY3VyLCByZXN0LCB0cmFpdHNfdHlwZTo6bmV3bGluZSgpKSkpIHsKLSAgICAgICAgICAgICAgICBjdXJfbGluZV8uYXBwZW5kKGN1ciwgbmV4dCAtIGN1cik7Ci0gICAgICAgICAgICAgICAgY3VyID0gbmV4dCArIDE7Ci0gICAgICAgICAgICAgICAgaWYgKCF3cml0ZV9saW5lKHNuaykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGN1ciAtIHMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjdXJfbGluZV8uYXBwZW5kKGN1ciwgcmVzdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgY2xvc2UoU2luayYgc25rLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoKQotICAgIHsKLSAgICAgICAgaWYgKChmbGFnc18gJiBmX3JlYWQpICYmIHdoaWNoID09IE5ETkJPT1NUX0lPUzo6aW4pCi0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0KLSAgICAgICAgaWYgKChmbGFnc18gJiBmX3dyaXRlKSAmJiB3aGljaCA9PSBORE5CT09TVF9JT1M6Om91dCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAoIWN1cl9saW5lXy5lbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICB3cml0ZV9saW5lKHNuayk7Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7IH0KLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNsb3NlX2ltcGwoKTsKLSAgICAgICAgfQotICAgIH0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBzdHJpbmdfdHlwZSBkb19maWx0ZXIoY29uc3Qgc3RyaW5nX3R5cGUmIGxpbmUpID0gMDsKLQotICAgIC8vIENvcGllcyBmaWx0ZXJlZCBjaGFyYWN0ZXJzIGZyb24gdGhlIGN1cnJlbnQgbGluZSBpbnRvCi0gICAgLy8gdGhlIGdpdmVuIGJ1ZmZlci4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZF9saW5lKGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0ID0KLSAgICAgICAgICAgIChzdGQ6Om1pbikgKG4sIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oY3VyX2xpbmVfLnNpemUoKSkpOwotICAgICAgICB0cmFpdHNfdHlwZTo6Y29weShzLCBjdXJfbGluZV8uZGF0YSgpLCByZXN1bHQpOwotICAgICAgICBjdXJfbGluZV8uZXJhc2UoMCwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICAvLyBBdHRlbXB0cyB0byByZXRyaWV2ZSBhIGxpbmUgb2YgdGV4dCBmcm9tIHRoZSBnaXZlbiBzb3VyY2U7IHJldHVybnMKLSAgICAvLyBhbiBpbnRfdHlwZSBhcyBhIGdvb2QvZW9mL3dvdWxkX2Jsb2NrIHN0YXR1cyBjb2RlLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgbmV4dF9saW5lKFNvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIGM7Ci0gICAgICAgIHdoaWxlICggdHJhaXRzX3R5cGU6OmlzX2dvb2QoYyA9IGlvc3RyZWFtczo6Z2V0KHNyYykpICYmCi0gICAgICAgICAgICAgICAgYyAhPSB0cmFpdHNfdHlwZTo6bmV3bGluZSgpICkKLSAgICAgICAgewotICAgICAgICAgICAgY3VyX2xpbmVfICs9IHRyYWl0c190eXBlOjp0b19pbnRfdHlwZShjKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXRyYWl0c190eXBlOjp3b3VsZF9ibG9jayhjKSkgewotICAgICAgICAgICAgaWYgKCFjdXJfbGluZV8uZW1wdHkoKSB8fCBjID09IHRyYWl0c190eXBlOjpuZXdsaW5lKCkpCi0gICAgICAgICAgICAgICAgY3VyX2xpbmVfID0gZG9fZmlsdGVyKGN1cl9saW5lXyk7Ci0gICAgICAgICAgICBpZiAoYyA9PSB0cmFpdHNfdHlwZTo6bmV3bGluZSgpICYmIChmbGFnc18gJiBmX3N1cHByZXNzKSA9PSAwKQotICAgICAgICAgICAgICAgIGN1cl9saW5lXyArPSBjOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjOyAvLyBzdGF0dXMgaW5kaWNhdG9yLgotICAgIH0KLQotICAgIC8vIEZpbHRlcnMgdGhlIGN1cnJlbnQgbGluZSBhbmQgYXR0ZW1wcyB0byB3cml0ZSBpdCB0byB0aGUgZ2l2ZW4gc2luay4KLSAgICAvLyBSZXR1cm5zIHRydWUgZm9yIHN1Y2Nlc3MuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIHdyaXRlX2xpbmUoU2luayYgc25rKQotICAgIHsKLSAgICAgICAgc3RyaW5nX3R5cGUgbGluZSA9IGRvX2ZpbHRlcihjdXJfbGluZV8pOwotICAgICAgICBpZiAoKGZsYWdzXyAmIGZfc3VwcHJlc3MpID09IDApCi0gICAgICAgICAgICBsaW5lICs9IHRyYWl0c190eXBlOjpuZXdsaW5lKCk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGxpbmUuc2l6ZSgpKTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBpb3N0cmVhbXM6OndyaXRlX2lmKHNuaywgbGluZS5kYXRhKCksIGFtdCkgPT0gYW10OwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB2b2lkIGNsb3NlX2ltcGwoKQotICAgIHsKLSAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgZmxhZ3NfICY9IGZfc3VwcHJlc3M7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBjdXJfbGluZV8uZXJhc2UoKTsKLSAgICAgICAgcG9zXyA9IHN0cmluZ190eXBlOjpucG9zOwotICAgIH0KLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9yZWFkICAgICAgPSAxLAotICAgICAgICBmX3dyaXRlICAgICA9IGZfcmVhZCA8PCAxLAotICAgICAgICBmX3N1cHByZXNzICA9IGZfd3JpdGUgPDwgMQotICAgIH07Ci0KLSAgICBzdHJpbmdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBjdXJfbGluZV87Ci0gICAgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSAgcG9zXzsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc187Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfbGluZV9maWx0ZXIsIDIpCi0KLXR5cGVkZWYgYmFzaWNfbGluZV9maWx0ZXI8Y2hhcj4gICAgIGxpbmVfZmlsdGVyOwotdHlwZWRlZiBiYXNpY19saW5lX2ZpbHRlcjx3Y2hhcl90PiAgd2xpbmVfZmlsdGVyOwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19MSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9uZXdsaW5lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9uZXdsaW5lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ3YTVlZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvbmV3bGluZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NDIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIE5PVEU6IEkgaG9wZSB0byByZXBsYWNlIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHdpdGggYSBtdWNoIHNpbXBsZXIKLS8vIG9uZS4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTkVXTElORV9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ORVdMSU5FX0ZJTFRFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+ICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2dpY19lcnJvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9yZWFkLmhwcD4gICAgICAgIC8vIGdldCAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwPiAgICAgICAvLyBwdXQgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3BpcGVsaW5lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfQVNTRVJUX1VOUkVBQ0hBQkxFKHZhbCkgXAotICAgIChORE5CT09TVF9BU1NFUlQoInVucmVhY2hhYmxlIGNvZGUiID09IDApLCB2YWwpIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgbmV3bGluZSB7Ci0KLWNvbnN0IGNoYXIgQ1IgICAgICAgICAgICAgICAgICAgPSAweDBEOwotY29uc3QgY2hhciBMRiAgICAgICAgICAgICAgICAgICA9IDB4MEE7Ci0KLSAgICAvLyBGbGFncyBmb3IgY29uZmlndXJpbmcgbmV3bGluZV9maWx0ZXIuCi0KLS8vIEV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgZmxhZ3MgbXVzdCBiZSBwcmVzZW50LgotCi1jb25zdCBpbnQgcG9zaXggICAgICAgICAgICAgPSAxOyAgICAvLyBVc2UgQ1IgYXMgbGluZSBzZXBhcmF0b3IuCi1jb25zdCBpbnQgbWFjICAgICAgICAgICAgICAgPSAyOyAgICAvLyBVc2UgTEYgYXMgbGluZSBzZXBhcmF0b3IuCi1jb25zdCBpbnQgZG9zICAgICAgICAgICAgICAgPSA0OyAgICAvLyBVc2UgQ1JMRiBhcyBsaW5lIHNlcGFyYXRvci4KLWNvbnN0IGludCBtaXhlZCAgICAgICAgICAgICA9IDg7ICAgIC8vIE1peGVkIGxpbmUgZW5kaW5ncy4KLWNvbnN0IGludCBmaW5hbF9uZXdsaW5lICAgICA9IDE2OwotY29uc3QgaW50IHBsYXRmb3JtX21hc2sgICAgID0gcG9zaXggfCBkb3MgfCBtYWM7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBuZXdsaW5lLgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotY2xhc3MgbmV3bGluZV9iYXNlIHsKLXB1YmxpYzoKLSAgICBib29sIGlzX3Bvc2l4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhaXNfbWl4ZWQoKSAmJiAoZmxhZ3NfICYgbmV3bGluZTo6cG9zaXgpICE9IDA7Ci0gICAgfQotICAgIGJvb2wgaXNfZG9zKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhaXNfbWl4ZWQoKSAmJiAoZmxhZ3NfICYgbmV3bGluZTo6ZG9zKSAhPSAwOwotICAgIH0KLSAgICBib29sIGlzX21hYygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIWlzX21peGVkKCkgJiYgKGZsYWdzXyAmIG5ld2xpbmU6Om1hYykgIT0gMDsKLSAgICB9Ci0gICAgYm9vbCBpc19taXhlZF9wb3NpeCgpIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBuZXdsaW5lOjpwb3NpeCkgIT0gMDsgfQotICAgIGJvb2wgaXNfbWl4ZWRfZG9zKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIG5ld2xpbmU6OmRvcykgIT0gMDsgfQotICAgIGJvb2wgaXNfbWl4ZWRfbWFjKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIG5ld2xpbmU6Om1hYykgIT0gMDsgfQotICAgIGJvb2wgaXNfbWl4ZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaW50IHBsYXRmb3JtID0KLSAgICAgICAgICAgIChmbGFnc18gJiBuZXdsaW5lOjpwb3NpeCkgIT0gMCA/Ci0gICAgICAgICAgICAgICAgbmV3bGluZTo6cG9zaXggOgotICAgICAgICAgICAgICAgIChmbGFnc18gJiBuZXdsaW5lOjpkb3MpICE9IDAgPwotICAgICAgICAgICAgICAgICAgICBuZXdsaW5lOjpkb3MgOgotICAgICAgICAgICAgICAgICAgICAoZmxhZ3NfICYgbmV3bGluZTo6bWFjKSAhPSAwID8KLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU6Om1hYyA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAwOwotICAgICAgICByZXR1cm4gKGZsYWdzXyAmIH5wbGF0Zm9ybSAmIG5ld2xpbmU6OnBsYXRmb3JtX21hc2spICE9IDA7Ci0gICAgfQotICAgIGJvb2wgaGFzX2ZpbmFsX25ld2xpbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChmbGFnc18gJiBuZXdsaW5lOjpmaW5hbF9uZXdsaW5lKSAhPSAwOwotICAgIH0KLXByb3RlY3RlZDoKLSAgICBuZXdsaW5lX2Jhc2UoaW50IGZsYWdzKSA6IGZsYWdzXyhmbGFncykgeyB9Ci0gICAgaW50IGZsYWdzXzsKLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLWNsYXNzIG5ld2xpbmVfZXJyb3IKLSAgICA6IHB1YmxpYyBORE5CT09TVF9JT1NUUkVBTVNfRkFJTFVSRSwgcHVibGljIGRldGFpbDo6bmV3bGluZV9iYXNlCi17Ci1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBuZXdsaW5lX2NoZWNrZXI7Ci0gICAgbmV3bGluZV9lcnJvcihpbnQgZmxhZ3MpCi0gICAgICAgIDogTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImJhZCBsaW5lIGVuZGluZ3MiKSwKLSAgICAgICAgICBkZXRhaWw6Om5ld2xpbmVfYmFzZShmbGFncykKLSAgICAgICAgeyB9Ci19OwotCi1jbGFzcyBuZXdsaW5lX2ZpbHRlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZSwKLSAgICAgICAgICBmaWx0ZXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICBleHBsaWNpdCBuZXdsaW5lX2ZpbHRlcihpbnQgdGFyZ2V0KSA6IGZsYWdzXyh0YXJnZXQpCi0gICAgewotICAgICAgICBpZiAoIHRhcmdldCAhPSBpb3N0cmVhbXM6Om5ld2xpbmU6OnBvc2l4ICYmCi0gICAgICAgICAgICAgdGFyZ2V0ICE9IGlvc3RyZWFtczo6bmV3bGluZTo6ZG9zICYmCi0gICAgICAgICAgICAgdGFyZ2V0ICE9IGlvc3RyZWFtczo6bmV3bGluZTo6bWFjICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmxvZ2ljX2Vycm9yKCJiYWQgZmxhZ3MiKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgaW50IGdldChTb3VyY2UmIHNyYykKLSAgICB7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6Q1I7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6TEY7Ci0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKChmbGFnc18gJiBmX3dyaXRlKSA9PSAwKTsKLSAgICAgICAgZmxhZ3NfIHw9IGZfcmVhZDsKLQotICAgICAgICBpZiAoZmxhZ3NfICYgKGZfaGFzX0xGIHwgZl9oYXNfRU9GKSkgewotICAgICAgICAgICAgaWYgKGZsYWdzXyAmIGZfaGFzX0xGKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXdsaW5lKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIEVPRjsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBjID0KLSAgICAgICAgICAgIChmbGFnc18gJiBmX2hhc19DUikgPT0gMCA/Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpnZXQoc3JjKSA6Ci0gICAgICAgICAgICAgICAgQ1I7Ci0KLSAgICAgICAgaWYgKGMgPT0gV09VTERfQkxPQ0sgKQotICAgICAgICAgICAgcmV0dXJuIFdPVUxEX0JMT0NLOwotCi0gICAgICAgIGlmIChjID09IENSKSB7Ci0gICAgICAgICAgICBmbGFnc18gfD0gZl9oYXNfQ1I7Ci0KLSAgICAgICAgICAgIGludCBkOwotICAgICAgICAgICAgaWYgKChkID0gaW9zdHJlYW1zOjpnZXQoc3JjKSkgPT0gV09VTERfQkxPQ0spCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdPVUxEX0JMT0NLOwotCi0gICAgICAgICAgICBpZiAoZCA9PSBMRikgewotICAgICAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfQ1I7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5ld2xpbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGQgPT0gRU9GKSB7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaGFzX0VPRjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpwdXRiYWNrKHNyYywgZCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfQ1I7Ci0gICAgICAgICAgICByZXR1cm4gbmV3bGluZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGMgPT0gTEYpCi0gICAgICAgICAgICByZXR1cm4gbmV3bGluZSgpOwotCi0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgYm9vbCBwdXQoU2luayYgZGVzdCwgY2hhciBjKQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpDUjsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpMRjsKLQotICAgICAgICBORE5CT09TVF9BU1NFUlQoKGZsYWdzXyAmIGZfcmVhZCkgPT0gMCk7Ci0gICAgICAgIGZsYWdzXyB8PSBmX3dyaXRlOwotCi0gICAgICAgIGlmICgoZmxhZ3NfICYgZl9oYXNfTEYpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gYyA9PSBMRiA/Ci0gICAgICAgICAgICAgICAgbmV3bGluZShkZXN0KSA6Ci0gICAgICAgICAgICAgICAgbmV3bGluZShkZXN0KSAmJiB0aGlzLT5wdXQoZGVzdCwgYyk7Ci0KLSAgICAgICAgaWYgKGMgPT0gTEYpCi0gICAgICAgICAgIHJldHVybiBuZXdsaW5lKGRlc3QpOwotCi0gICAgICAgIGlmICgoZmxhZ3NfICYgZl9oYXNfQ1IpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gbmV3bGluZShkZXN0KSA/Ci0gICAgICAgICAgICAgICAgdGhpcy0+cHV0KGRlc3QsIGMpIDoKLSAgICAgICAgICAgICAgICBmYWxzZTsKLQotICAgICAgICBpZiAoYyA9PSBDUikgewotICAgICAgICAgICAgZmxhZ3NfIHw9IGZfaGFzX0NSOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gaW9zdHJlYW1zOjpwdXQoZGVzdCwgYyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIGRlc3QsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8U2luaz46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgICAgIGlmICgoZmxhZ3NfICYgZl93cml0ZSkgIT0gMCAmJiAoZmxhZ3NfICYgZl9oYXNfQ1IpICE9IDApCi0gICAgICAgICAgICBuZXdsaW5lX2lmX3NpbmsoZGVzdCk7Ci0gICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfTEY7IC8vIFJlc3RvcmUgb3JpZ2luYWwgZmxhZ3MuCi0gICAgfQotcHJpdmF0ZToKLQotICAgIC8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIGVsZW1lbnQgb2YgYSBuZXdsaW5lIHNlcXVlbmNlLgotICAgIGludCBuZXdsaW5lKCkKLSAgICB7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6Q1I7Ci0gICAgICAgIHVzaW5nIGlvc3RyZWFtczo6bmV3bGluZTo6TEY7Ci0KLSAgICAgICAgc3dpdGNoIChmbGFnc18gJiBpb3N0cmVhbXM6Om5ld2xpbmU6OnBsYXRmb3JtX21hc2spIHsKLSAgICAgICAgY2FzZSBpb3N0cmVhbXM6Om5ld2xpbmU6OnBvc2l4OgotICAgICAgICAgICAgcmV0dXJuIExGOwotICAgICAgICBjYXNlIGlvc3RyZWFtczo6bmV3bGluZTo6bWFjOgotICAgICAgICAgICAgcmV0dXJuIENSOwotICAgICAgICBjYXNlIGlvc3RyZWFtczo6bmV3bGluZTo6ZG9zOgotICAgICAgICAgICAgaWYgKGZsYWdzXyAmIGZfaGFzX0xGKSB7Ci0gICAgICAgICAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19MRjsKLSAgICAgICAgICAgICAgICByZXR1cm4gTEY7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBmX2hhc19MRjsKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0lPU1RSRUFNU19BU1NFUlRfVU5SRUFDSEFCTEUoMCk7Ci0gICAgfQotCi0gICAgLy8gV3JpdGVzIGEgbmV3bGluZSBzZXF1ZW5jZS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIGJvb2wgbmV3bGluZShTaW5rJiBkZXN0KQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpDUjsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpMRjsKLQotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgc3dpdGNoIChmbGFnc18gJiBpb3N0cmVhbXM6Om5ld2xpbmU6OnBsYXRmb3JtX21hc2spIHsKLSAgICAgICAgY2FzZSBpb3N0cmVhbXM6Om5ld2xpbmU6OnBvc2l4OgotICAgICAgICAgICAgc3VjY2VzcyA9IG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChkZXN0LCBMRik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBpb3N0cmVhbXM6Om5ld2xpbmU6Om1hYzoKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBuZG5ib29zdDo6aW9zdHJlYW1zOjpwdXQoZGVzdCwgQ1IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgaW9zdHJlYW1zOjpuZXdsaW5lOjpkb3M6Ci0gICAgICAgICAgICBpZiAoKGZsYWdzXyAmIGZfaGFzX0xGKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChzdWNjZXNzID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KGRlc3QsIExGKSkpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzXyAmPSB+Zl9oYXNfTEY7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5kbmJvb3N0Ojppb3N0cmVhbXM6OnB1dChkZXN0LCBDUikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShzdWNjZXNzID0gbmRuYm9vc3Q6Omlvc3RyZWFtczo6cHV0KGRlc3QsIExGKSkpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBmX2hhc19MRjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICAgICAgZmxhZ3NfICY9IH5mX2hhc19DUjsKLSAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7Ci0gICAgfQotCi0gICAgLy8gV3JpdGVzIGEgbmV3bGluZSBzZXF1ZW5jZSBpZiB0aGUgZ2l2ZW4gZGV2aWNlIGlzIGEgU2luay4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci0gICAgdm9pZCBuZXdsaW5lX2lmX3NpbmsoRGV2aWNlJiBkZXN0KSAKLSAgICB7IAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlvc3RyZWFtczo6Y2F0ZWdvcnlfb2Y8RGV2aWNlPjo6dHlwZSBjYXRlZ29yeTsKLSAgICAgICAgbmV3bGluZV9pZl9zaW5rKGRlc3QsIGlzX2NvbnZlcnRpYmxlPGNhdGVnb3J5LCBvdXRwdXQ+KCkpOyAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaW5rPgotICAgIHZvaWQgbmV3bGluZV9pZl9zaW5rKFNpbmsmIGRlc3QsIG1wbDo6dHJ1ZV8pIHsgbmV3bGluZShkZXN0KTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlPgotICAgIHZvaWQgbmV3bGluZV9pZl9zaW5rKFNvdXJjZSYsIG1wbDo6ZmFsc2VfKSB7IH0KLQotICAgIGVudW0gZmxhZ3MgewotICAgICAgICBmX2hhc19MRiAgICAgICAgID0gMzI3NjgsCi0gICAgICAgIGZfaGFzX0NSICAgICAgICAgPSBmX2hhc19MRiA8PCAxLAotICAgICAgICBmX2hhc19uZXdsaW5lICAgID0gZl9oYXNfQ1IgPDwgMSwKLSAgICAgICAgZl9oYXNfRU9GICAgICAgICA9IGZfaGFzX25ld2xpbmUgPDwgMSwKLSAgICAgICAgZl9yZWFkICAgICAgICAgICA9IGZfaGFzX0VPRiA8PCAxLAotICAgICAgICBmX3dyaXRlICAgICAgICAgID0gZl9yZWFkIDw8IDEKLSAgICB9OwotICAgIGludCAgICAgICBmbGFnc187Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUobmV3bGluZV9maWx0ZXIsIDApCi0KLWNsYXNzIG5ld2xpbmVfY2hlY2tlciA6IHB1YmxpYyBkZXRhaWw6Om5ld2xpbmVfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2VfZmlsdGVyX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcKLSAgICAgICAgeyB9OwotICAgIGV4cGxpY2l0IG5ld2xpbmVfY2hlY2tlcihpbnQgdGFyZ2V0ID0gbmV3bGluZTo6bWl4ZWQpCi0gICAgICAgIDogZGV0YWlsOjpuZXdsaW5lX2Jhc2UoMCksIHRhcmdldF8odGFyZ2V0KSwgb3Blbl8oZmFsc2UpCi0gICAgICAgIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBpbnQgZ2V0KFNvdXJjZSYgc3JjKQotICAgIHsKLSAgICAgICAgdXNpbmcgbmV3bGluZTo6Q1I7Ci0gICAgICAgIHVzaW5nIG5ld2xpbmU6OkxGOwotCi0gICAgICAgIGlmICghb3Blbl8pIHsKLSAgICAgICAgICAgIG9wZW5fID0gdHJ1ZTsKLSAgICAgICAgICAgIHNvdXJjZSgpID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBjOwotICAgICAgICBpZiAoKGMgPSBpb3N0cmVhbXM6OmdldChzcmMpKSA9PSBXT1VMRF9CTE9DSykKLSAgICAgICAgICAgIHJldHVybiBXT1VMRF9CTE9DSzsKLQotICAgICAgICAvLyBVcGRhdGUgc291cmNlIGZsYWdzLgotICAgICAgICBpZiAoYyAhPSBFT0YpCi0gICAgICAgICAgICBzb3VyY2UoKSAmPSB+Zl9saW5lX2NvbXBsZXRlOwotICAgICAgICBpZiAoKHNvdXJjZSgpICYgZl9oYXNfQ1IpICE9IDApIHsKLSAgICAgICAgICAgIGlmIChjID09IExGKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlKCkgfD0gbmV3bGluZTo6ZG9zOwotICAgICAgICAgICAgICAgIHNvdXJjZSgpIHw9IGZfbGluZV9jb21wbGV0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc291cmNlKCkgfD0gbmV3bGluZTo6bWFjOwotICAgICAgICAgICAgICAgIGlmIChjID09IEVPRikKLSAgICAgICAgICAgICAgICAgICAgc291cmNlKCkgfD0gZl9saW5lX2NvbXBsZXRlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGMgPT0gTEYpIHsKLSAgICAgICAgICAgIHNvdXJjZSgpIHw9IG5ld2xpbmU6OnBvc2l4OwotICAgICAgICAgICAgc291cmNlKCkgfD0gZl9saW5lX2NvbXBsZXRlOwotICAgICAgICB9Ci0gICAgICAgIHNvdXJjZSgpID0gKHNvdXJjZSgpICYgfmZfaGFzX0NSKSB8IChjID09IENSID8gZl9oYXNfQ1IgOiAwKTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgZXJyb3JzLgotICAgICAgICBpZiAoIGMgPT0gRU9GICYmCi0gICAgICAgICAgICAodGFyZ2V0XyAmIG5ld2xpbmU6OmZpbmFsX25ld2xpbmUpICE9IDAgJiYKLSAgICAgICAgICAgIChzb3VyY2UoKSAmIGZfbGluZV9jb21wbGV0ZSkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoICh0YXJnZXRfICYgbmV3bGluZTo6cGxhdGZvcm1fbWFzaykgIT0gMCAmJgotICAgICAgICAgICAgIChzb3VyY2UoKSAmIH50YXJnZXRfICYgbmV3bGluZTo6cGxhdGZvcm1fbWFzaykgIT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgYm9vbCBwdXQoU2luayYgZGVzdCwgaW50IGMpCi0gICAgewotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkNSOwotICAgICAgICB1c2luZyBpb3N0cmVhbXM6Om5ld2xpbmU6OkxGOwotCi0gICAgICAgIGlmICghb3Blbl8pIHsKLSAgICAgICAgICAgIG9wZW5fID0gdHJ1ZTsKLSAgICAgICAgICAgIHNvdXJjZSgpID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaW9zdHJlYW1zOjpwdXQoZGVzdCwgYykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgIC8vIFVwZGF0ZSBzb3VyY2UgZmxhZ3MuCi0gICAgICAgIHNvdXJjZSgpICY9IH5mX2xpbmVfY29tcGxldGU7Ci0gICAgICAgIGlmICgoc291cmNlKCkgJiBmX2hhc19DUikgIT0gMCkgewotICAgICAgICAgICAgaWYgKGMgPT0gTEYpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBuZXdsaW5lOjpkb3M7Ci0gICAgICAgICAgICAgICAgc291cmNlKCkgfD0gZl9saW5lX2NvbXBsZXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UoKSB8PSBuZXdsaW5lOjptYWM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSBMRikgewotICAgICAgICAgICAgc291cmNlKCkgfD0gbmV3bGluZTo6cG9zaXg7Ci0gICAgICAgICAgICBzb3VyY2UoKSB8PSBmX2xpbmVfY29tcGxldGU7Ci0gICAgICAgIH0KLSAgICAgICAgc291cmNlKCkgPSAoc291cmNlKCkgJiB+Zl9oYXNfQ1IpIHwgKGMgPT0gQ1IgPyBmX2hhc19DUiA6IDApOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBlcnJvcnMuCi0gICAgICAgIGlmICggKHRhcmdldF8gJiBuZXdsaW5lOjpwbGF0Zm9ybV9tYXNrKSAhPSAwICYmCi0gICAgICAgICAgICAgKHNvdXJjZSgpICYgfnRhcmdldF8gJiBuZXdsaW5lOjpwbGF0Zm9ybV9tYXNrKSAhPSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmLCBORE5CT09TVF9JT1M6Om9wZW5tb2RlKQotICAgIHsKLSAgICAgICAgdXNpbmcgaW9zdHJlYW1zOjpuZXdsaW5lOjpmaW5hbF9uZXdsaW5lOwotCi0gICAgICAgIC8vIFVwZGF0ZSBmaW5hbF9uZXdsaW5lIGZsYWcuCi0gICAgICAgIGlmICggKHNvdXJjZSgpICYgZl9oYXNfQ1IpICE9IDAgfHwKLSAgICAgICAgICAgICAoc291cmNlKCkgJiBmX2xpbmVfY29tcGxldGUpICE9IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzb3VyY2UoKSB8PSBmaW5hbF9uZXdsaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2xlYXIgbm9uLXN0aWNreSBmbGFncy4KLSAgICAgICAgc291cmNlKCkgJj0gfihmX2hhc19DUiB8IGZfbGluZV9jb21wbGV0ZSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGVycm9ycy4KLSAgICAgICAgaWYgKCAodGFyZ2V0XyAmIGZpbmFsX25ld2xpbmUpICE9IDAgJiYKLSAgICAgICAgICAgICAoc291cmNlKCkgJiBmaW5hbF9uZXdsaW5lKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICB9Ci0gICAgfQotcHJpdmF0ZToKLSAgICB2b2lkIGZhaWwoKSB7IG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24obmV3bGluZV9lcnJvcihzb3VyY2UoKSkpOyB9Ci0gICAgaW50JiBzb3VyY2UoKSB7IHJldHVybiBmbGFnc187IH0KLSAgICBpbnQgc291cmNlKCkgY29uc3QgeyByZXR1cm4gZmxhZ3NfOyB9Ci0KLSAgICBlbnVtIGZsYWdzIHsKLSAgICAgICAgZl9oYXNfQ1IgPSAzMjc2OCwKLSAgICAgICAgZl9saW5lX2NvbXBsZXRlID0gZl9oYXNfQ1IgPDwgMQotICAgIH07Ci0KLSAgICBpbnQgICB0YXJnZXRfOyAgLy8gUmVwcmVzZW50cyBleHBlY3RlZCBpbnB1dC4KLSAgICBib29sICBvcGVuXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShuZXdsaW5lX2NoZWNrZXIsIDApCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05FV0xJTkVfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3JlZ2V4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYzU5OWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3JlZ2V4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRUdFWF9GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRUdFWF9GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZiAgICAgICAgICAgICAgCi0KLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbi5ocHA+ICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL2FnZ3JlZ2F0ZS5ocHA+ICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPiAgICAgICAgICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQ2gsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPSByZWdleF90cmFpdHM8Q2g+LAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+ID4KLWNsYXNzIGJhc2ljX3JlZ2V4X2ZpbHRlciA6IHB1YmxpYyBhZ2dyZWdhdGVfZmlsdGVyPENoLCBBbGxvYz4gewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGFnZ3JlZ2F0ZV9maWx0ZXI8Q2gsIEFsbG9jPiAgICAgICAgICAgICAgICAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoPiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZTsKLSAgICB0eXBlZGVmIGJhc2ljX3JlZ2V4PENoLCBUcj4gICAgICAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgICAgICAgICAgIGZsYWdfdHlwZTsKLSAgICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29uc3QgQ2gqPiAgICAgICAgICAgICAgICAgICBtYXRjaF90eXBlOwotICAgIHR5cGVkZWYgZnVuY3Rpb24xPHN0cmluZ190eXBlLCBjb25zdCBtYXRjaF90eXBlJj4gIGZvcm1hdHRlcjsKLQotICAgIGJhc2ljX3JlZ2V4X2ZpbHRlciggY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXImIHJlcGxhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZmxhZ3MgPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQgKQotICAgICAgICA6IHJlXyhyZSksIHJlcGxhY2VfKHJlcGxhY2UpLCBmbGFnc18oZmxhZ3MpIHsgfQotICAgIGJhc2ljX3JlZ2V4X2ZpbHRlciggY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdfdHlwZSYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGZsYWdzID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGZtdF9mbGFncyA9IHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2RlZmF1bHQgKQotICAgICAgICA6IHJlXyhyZSksIHJlcGxhY2VfKHNpbXBsZV9mb3JtYXR0ZXIoZm10LCBmbXRfZmxhZ3MpKSwgZmxhZ3NfKGZsYWdzKSB7IH0KLSAgICBiYXNpY19yZWdleF9maWx0ZXIoIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZmxhZ3MgPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZm10X2ZsYWdzID0gcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZGVmYXVsdCApCi0gICAgICAgIDogcmVfKHJlKSwgcmVwbGFjZV8oc2ltcGxlX2Zvcm1hdHRlcihmbXQsIGZtdF9mbGFncykpLCBmbGFnc18oZmxhZ3MpIHsgfQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6dmVjdG9yX3R5cGUgICAgICAgdmVjdG9yX3R5cGU7Ci0gICAgdm9pZCBkb19maWx0ZXIoY29uc3QgdmVjdG9yX3R5cGUmIHNyYywgdmVjdG9yX3R5cGUmIGRlc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8Y29uc3QgQ2gqLCBDaCwgVHI+IGl0ZXJhdG9yOwotICAgICAgICAgICAgaWYgKHNyYy5lbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGl0ZXJhdG9yIGZpcnN0KCZzcmNbMF0sICZzcmNbMF0gKyBzcmMuc2l6ZSgpLCByZV8sIGZsYWdzXyk7Ci0gICAgICAgICAgICBpdGVyYXRvciBsYXN0OwotICAgICAgICAgICAgY29uc3QgQ2gqIHN1ZmZpeCA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgewotICAgICAgICAgICAgICAgIGRlc3QuaW5zZXJ0KCBkZXN0LmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QtPnByZWZpeCgpLmZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdC0+cHJlZml4KCkuc2Vjb25kICk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgcmVwbGFjZW1lbnQgPSByZXBsYWNlXygqZmlyc3QpOwotICAgICAgICAgICAgICAgIGRlc3QuaW5zZXJ0KCBkZXN0LmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuZW5kKCkgKTsKLSAgICAgICAgICAgICAgICBzdWZmaXggPSBmaXJzdC0+c3VmZml4KCkuZmlyc3Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3VmZml4KSB7Ci0gICAgICAgICAgICAgICAgZGVzdC5pbnNlcnQoZGVzdC5lbmQoKSwgc3VmZml4LCAmc3JjWzBdICsgc3JjLnNpemUoKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGRlc3QuaW5zZXJ0KGRlc3QuZW5kKCksICZzcmNbMF0sICZzcmNbMF0gKyBzcmMuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIHN0cnVjdCBzaW1wbGVfZm9ybWF0dGVyIHsKLSAgICAgICAgc2ltcGxlX2Zvcm1hdHRlcihjb25zdCBzdHJpbmdfdHlwZSYgZm10LCBmbGFnX3R5cGUgZm10X2ZsYWdzKSAKLSAgICAgICAgICAgIDogZm10XyhmbXQpLCBmbXRfZmxhZ3NfKGZtdF9mbGFncykgeyB9Ci0gICAgICAgIHN0cmluZ190eXBlIG9wZXJhdG9yKCkgKGNvbnN0IG1hdGNoX3R5cGUmIG1hdGNoKSBjb25zdAotICAgICAgICB7IHJldHVybiBtYXRjaC5mb3JtYXQoZm10XywgZm10X2ZsYWdzXyk7IH0KLSAgICAgICAgc3RyaW5nX3R5cGUgIGZtdF87Ci0gICAgICAgIGZsYWdfdHlwZSAgICBmbXRfZmxhZ3NfOwotICAgIH07Ci0gICAgcmVnZXhfdHlwZSAgcmVfOwotICAgIGZvcm1hdHRlciAgIHJlcGxhY2VfOwotICAgIGZsYWdfdHlwZSAgIGZsYWdzXzsKLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19yZWdleF9maWx0ZXIsIDMpCi0KLXR5cGVkZWYgYmFzaWNfcmVnZXhfZmlsdGVyPGNoYXI+ICAgICByZWdleF9maWx0ZXI7Ci10eXBlZGVmIGJhc2ljX3JlZ2V4X2ZpbHRlcjx3Y2hhcl90PiAgd3JlZ2V4X2ZpbHRlcjsKLQotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmICAgICAgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVHRVhfRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N0ZGlvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9zdGRpby5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZTg0MjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N0ZGlvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBCYXNlZCBvbiB0aGUgd29yayBvZiBDaHJpc3RvcGhlciBEaWdnaW5zLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVERJT19GSUxURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TVERJT19GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bWVtb3J5PiAgICAvLyBhbGxvY2F0b3IuCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXZpY2UvYmFja19pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci9hZ2dyZWdhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoLCB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiA+Ci1jbGFzcyBiYXNpY19zdGRpb19maWx0ZXIgOiBwdWJsaWMgYWdncmVnYXRlX2ZpbHRlcjxDaCwgQWxsb2M+IHsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBhZ2dyZWdhdGVfZmlsdGVyPENoLCBBbGxvYz4gICAgICAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjYXRlZ29yeSAgICAgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OnZlY3Rvcl90eXBlICB2ZWN0b3JfdHlwZTsKLXByaXZhdGU6Ci0gICAgc3RhdGljIHN0ZDo6aXN0cmVhbSYgc3RhbmRhcmRfaW5wdXQoY2hhciopIHsgcmV0dXJuIHN0ZDo6Y2luOyB9Ci0gICAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgc3RhbmRhcmRfb3V0cHV0KGNoYXIqKSB7IHJldHVybiBzdGQ6OmNvdXQ7IH0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1dJREVfU1RSRUFNUwotICAgIHN0YXRpYyBzdGQ6Ondpc3RyZWFtJiBzdGFuZGFyZF9pbnB1dCh3Y2hhcl90KikgeyByZXR1cm4gc3RkOjp3Y2luOyB9Ci0gICAgc3RhdGljIHN0ZDo6d29zdHJlYW0mIHN0YW5kYXJkX291dHB1dCh3Y2hhcl90KikgeyByZXR1cm4gc3RkOjp3Y291dDsgfQotI2VuZGlmIC8vIE5ETkJPT1NUX0lPU1RSRUFNU19OT19XSURFX1NUUkVBTVMKLQotICAgIHN0cnVjdCBzY29wZWRfcmVkaXJlY3RvciB7IC8vIFRoYW5rcyB0byBNYXhpbSBFZ29ydXNoa2luLgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhDaCkgICAgICAgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSU9TKENoLCB0cmFpdHNfdHlwZSkgICAgICAgaW9zX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX1NUUkVBTUJVRihDaCwgdHJhaXRzX3R5cGUpIHN0cmVhbWJ1Zl90eXBlOwotICAgICAgICBzY29wZWRfcmVkaXJlY3RvciggaW9zX3R5cGUmIGlvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbWJ1Zl90eXBlKiBuZXdidWYgKQotICAgICAgICAgICAgOiBpb3NfKGlvcyksIG9sZF8oaW9zLnJkYnVmKG5ld2J1ZikpCi0gICAgICAgICAgICB7IH0KLSAgICAgICAgfnNjb3BlZF9yZWRpcmVjdG9yKCkgeyBpb3NfLnJkYnVmKG9sZF8pOyB9Ci0gICAgICAgIHNjb3BlZF9yZWRpcmVjdG9yJiBvcGVyYXRvcj0oY29uc3Qgc2NvcGVkX3JlZGlyZWN0b3ImKTsKLSAgICAgICAgaW9zX3R5cGUmICAgICAgICBpb3NfOwotICAgICAgICBzdHJlYW1idWZfdHlwZSogIG9sZF87Ci0gICAgfTsKLQotICAgIHZpcnR1YWwgdm9pZCBkb19maWx0ZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvX2ZpbHRlcihjb25zdCB2ZWN0b3JfdHlwZSYgc3JjLCB2ZWN0b3JfdHlwZSYgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0cmVhbV9idWZmZXI8IGJhc2ljX2FycmF5X3NvdXJjZTxDaD4gPgotICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNidWYoJnNyY1swXSwgJnNyY1swXSArIHNyYy5zaXplKCkpOwotICAgICAgICBzdHJlYW1fYnVmZmVyPCBiYWNrX2luc2VydF9kZXZpY2U8dmVjdG9yX3R5cGU+ID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGJ1Zihpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoZGVzdCkpOwotICAgICAgICBzY29wZWRfcmVkaXJlY3RvciByZWRpcmVjdF9pbnB1dChzdGFuZGFyZF9pbnB1dCgoQ2gqKTApLCAmc3JjYnVmKTsKLSAgICAgICAgc2NvcGVkX3JlZGlyZWN0b3IgcmVkaXJlY3Rfb3V0cHV0KHN0YW5kYXJkX291dHB1dCgoQ2gqKTApLCAmZGVzdGJ1Zik7Ci0gICAgICAgIGRvX2ZpbHRlcigpOwotICAgIH0KLX07Ci1ORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRShiYXNpY19zdGRpb19maWx0ZXIsIDIpCi0KLXR5cGVkZWYgYmFzaWNfc3RkaW9fZmlsdGVyPGNoYXI+ICAgICBzdGRpb19maWx0ZXI7Ci10eXBlZGVmIGJhc2ljX3N0ZGlvX2ZpbHRlcjx3Y2hhcl90PiAgd3N0ZGlvX3dmaWx0ZXI7Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1RESU9fRklMVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N5bW1ldHJpYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3ltbWV0cmljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM1OTkwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvc3ltbWV0cmljLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gQ29udGFpbnMgdGhlIGRlZmluaXRpb25zIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZXMgc3ltbWV0cmljX2ZpbHRlciwKLS8vIHdoaWNoIG1vZGVscyBEdWFsVXNlRmlsdGVyIGJhc2VkIG9uIGEgbW9kZWwgb2YgdGhlIFN5bW1ldHJpYyBGaWx0ZXIuCi0KLS8vCi0vLyBSb3VnaGx5LCBhIFN5bW1ldHJpYyBGaWx0ZXIgaXMgYSBjbGFzcyB0eXBlIHdpdGggdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6Ci0vLwotLy8gICBzdHJ1Y3Qgc3ltbWV0cmljX2ZpbHRlciB7Ci0vLyAgICAgICB0eXBlZGVmIHh4eCBjaGFyX3R5cGU7Ci0vLwotLy8gICAgICAgYm9vbCBmaWx0ZXIoIGNvbnN0IGNoYXIqJiBiZWdpbl9pbiwgY29uc3QgY2hhciogZW5kX2luLAotLy8gICAgICAgICAgICAgICAgICAgIGNoYXIqJiBiZWdpbl9vdXQsIGNoYXIqIGVuZF9vdXQsIGJvb2wgZmx1c2ggKQotLy8gICAgICAgewotLy8gICAgICAgICAgLy8gQ29uc3VtZSBhcyBtYW55IGNoYXJhY3RlcnMgYXMgcG9zc2libGUgZnJvbSB0aGUgaW50ZXJ2YWwKLS8vICAgICAgICAgIC8vIFtiZWdpbl9pbiwgZW5kX2luKSwgd2l0aG91dCBleGhhdXN0aW5nIHRoZSBvdXRwdXQgcmFuZ2UKLS8vICAgICAgICAgIC8vIFtiZWdpbl9vdXQsIGVuZF9vdXQpLiBJZiBmbHVzaCBpcyB0cnVlLCB3cml0ZSBhcyBtdXNoIG91dHB1dAotLy8gICAgICAgICAgLy8gYXMgcG9zc2libGUuIAotLy8gICAgICAgICAgLy8gQSByZXR1cm4gdmFsdWUgb2YgdHJ1ZSBpbmRpY2F0ZXMgdGhhdCBmaWx0ZXIgc2hvdWxkIGJlIGNhbGxlZCAKLS8vICAgICAgICAgIC8vIGFnYWluLiBNb3JlIHByZWNpc2VseSwgaWYgZmx1c2ggaXMgZmFsc2UsIGEgcmV0dXJuIHZhbHVlIG9mIAotLy8gICAgICAgICAgLy8gZmFsc2UgaW5kaWNhdGVzIHRoYXQgdGhlIG5hdHVyYWwgZW5kIG9mIHN0cmVhbSBoYXMgYmVlbiByZWFjaGVkCi0vLyAgICAgICAgICAvLyBhbmQgdGhhdCBhbGwgZmlsdGVyZWQgZGF0YSBoYXMgYmVlbiBmb3J3YXJkZWQ7IGlmIGZsdXNoIGlzCi0vLyAgICAgICAgICAvLyB0cnVlLCBhIHJldHVybiB2YWx1ZSBvZiBmYWxzZSBpbmRpY2F0ZXMgdGhhdCBhbGwgZmlsdGVyZWQgZGF0YSAKLS8vICAgICAgICAgIC8vIGhhcyBiZWVuIGZvcndhcmRlZC4KLS8vICAgICAgIH0KLS8vICAgICAgIHZvaWQgY2xvc2UoKSB7IC8qIFJlc2V0IGZpbHRlcidzIHN0YXRlLiAqLyB9Ci0vLyAgIH07Ci0vLwotLy8gU3ltbWV0cmljIEZpbHRlciBmaWx0ZXJzIG5lZWQgbm90IGJlIENvcHlDb25zdHJ1Y3RhYmxlLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1lNTUVUUklDX0ZJTFRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1NZTU1FVFJJQ19GSUxURVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG9jYXRvciwgYXV0b19wdHIuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAvLyBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAgICAgICAvLyBidWZmZXIgc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2J1ZmZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3RlbXBsYXRlX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPiAgICAgICAvLyByZWFkLCB3cml0ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vbG9jYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBTeW1tZXRyaWNGaWx0ZXIsCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPQotICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjwKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFN5bW1ldHJpY0ZpbHRlcj46OnR5cGUKLSAgICAgICAgICAgICAgPiA+Ci1jbGFzcyBzeW1tZXRyaWNfZmlsdGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxTeW1tZXRyaWNGaWx0ZXI+Ojp0eXBlICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgICAgICAgICAgICB0cmFpdHNfdHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGUsIEFsbG9jPiAgc3RyaW5nX3R5cGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5Ci0gICAgICAgIDogZHVhbF91c2UsCi0gICAgICAgICAgZmlsdGVyX3RhZywKLSAgICAgICAgICBtdWx0aWNoYXJfdGFnLAotICAgICAgICAgIGNsb3NhYmxlX3RhZwotICAgICAgICB7IH07Ci0KLSAgICAvLyBFeHBhbmRzIHRvIGEgc2VxdWVuY2Ugb2YgY3RvcnMgd2hpY2ggZm9yd2FyZCB0byBpbXBsLgotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8obikgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfVEVNUExBVEVfUEFSQU1TKG4sIFQpIFwKLSAgICAgICAgZXhwbGljaXQgc3ltbWV0cmljX2ZpbHRlciggXAotICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMobiwgY29uc3QgVCwgJnQpICkgXAotICAgICAgICAgICAgOiBwaW1wbF8obmV3IGltcGwoYnVmZmVyX3NpemUgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgdCkpKSBcCi0gICAgICAgICAgICB7IE5ETkJPT1NUX0FTU0VSVChidWZmZXJfc2l6ZSA+IDApOyB9IFwKLSAgICAgICAgLyoqLwotICAgICNkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTICgwLCBORE5CT09TVF9JT1NUUkVBTVNfTUFYX0ZPUldBUkRJTkdfQVJJVFkpCi0gICAgI2luY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0gICAgI3VuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICBpZiAoIShzdGF0ZSgpICYgZl9yZWFkKSkKLSAgICAgICAgICAgIGJlZ2luX3JlYWQoKTsKLQotICAgICAgICBidWZmZXJfdHlwZSYgIGJ1ZiA9IHBpbXBsXy0+YnVmXzsKLSAgICAgICAgaW50ICAgICAgICAgICBzdGF0dXMgPSAoc3RhdGUoKSAmIGZfZW9mKSAhPSAwID8gZl9lb2YgOiBmX2dvb2Q7Ci0gICAgICAgIGNoYXJfdHlwZSAgICAqbmV4dF9zID0gcywKLSAgICAgICAgICAgICAgICAgICAgICplbmRfcyA9IHMgKyBuOwotICAgICAgICB3aGlsZSAodHJ1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gSW52b2tlIGZpbHRlciBpZiB0aGVyZSBhcmUgdW5jb25zdW1lZCBjaGFyYWN0ZXJzIGluIGJ1ZmZlciBvciBpZgotICAgICAgICAgICAgLy8gZmlsdGVyIG11c3QgYmUgZmx1c2hlZC4KLSAgICAgICAgICAgIGJvb2wgZmx1c2ggPSBzdGF0dXMgPT0gZl9lb2Y7Ci0gICAgICAgICAgICBpZiAoYnVmLnB0cigpICE9IGJ1Zi5lcHRyKCkgfHwgZmx1c2gpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIG5leHQgPSBidWYucHRyKCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBkb25lID0KLSAgICAgICAgICAgICAgICAgICAgIWZpbHRlcigpLmZpbHRlcihuZXh0LCBidWYuZXB0cigpLCBuZXh0X3MsIGVuZF9zLCBmbHVzaCk7Ci0gICAgICAgICAgICAgICAgYnVmLnB0cigpID0gYnVmLmRhdGEoKSArIChuZXh0IC0gYnVmLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGRvbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWw6OmNoZWNrX2VvZigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KG5leHRfcyAtIHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBubyBtb3JlIGNoYXJhY3RlcnMgYXJlIGF2YWlsYWJsZSB3aXRob3V0IGJsb2NraW5nLCBvcgotICAgICAgICAgICAgLy8gaWYgcmVhZCByZXF1ZXN0IGhhcyBiZWVuIHNhdGlzZmllZCwgcmV0dXJuLgotICAgICAgICAgICAgaWYgKCAoc3RhdHVzID09IGZfd291bGRfYmxvY2sgJiYgYnVmLnB0cigpID09IGJ1Zi5lcHRyKCkpIHx8Ci0gICAgICAgICAgICAgICAgIG5leHRfcyA9PSBlbmRfcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obmV4dF9zIC0gcyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZpbGwgYnVmZmVyLgotICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBmX2dvb2QpCi0gICAgICAgICAgICAgICAgc3RhdHVzID0gZmlsbChzcmMpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgaWYgKCEoc3RhdGUoKSAmIGZfd3JpdGUpKQotICAgICAgICAgICAgYmVnaW5fd3JpdGUoKTsKLQotICAgICAgICBidWZmZXJfdHlwZSYgICAgIGJ1ZiA9IHBpbXBsXy0+YnVmXzsKLSAgICAgICAgY29uc3QgY2hhcl90eXBlICpuZXh0X3MsICplbmRfczsKLSAgICAgICAgZm9yIChuZXh0X3MgPSBzLCBlbmRfcyA9IHMgKyBuOyBuZXh0X3MgIT0gZW5kX3M7ICkgewotICAgICAgICAgICAgaWYgKGJ1Zi5wdHIoKSA9PSBidWYuZXB0cigpICYmICFmbHVzaChzbmspKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYoIWZpbHRlcigpLmZpbHRlcihuZXh0X3MsIGVuZF9zLCBidWYucHRyKCksIGJ1Zi5lcHRyKCksIGZhbHNlKSkgewotICAgICAgICAgICAgICAgIGZsdXNoKHNuayk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4obmV4dF9zIC0gcyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICB2b2lkIGNsb3NlKFNpbmsmIHNuaywgTkROQk9PU1RfSU9TOjpvcGVubW9kZSBtb2RlKQotICAgIHsKLSAgICAgICAgaWYgKG1vZGUgPT0gTkROQk9PU1RfSU9TOjpvdXQpIHsKLQotICAgICAgICAgICAgaWYgKCEoc3RhdGUoKSAmIGZfd3JpdGUpKQotICAgICAgICAgICAgICAgIGJlZ2luX3dyaXRlKCk7Ci0KLSAgICAgICAgICAgIC8vIFJlcGVhdGVkbHkgaW52b2tlIGZpbHRlcigpIHdpdGggbm8gaW5wdXQuCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGJ1ZmZlcl90eXBlJiAgICAgYnVmID0gcGltcGxfLT5idWZfOwotICAgICAgICAgICAgICAgIGNoYXJfdHlwZSAgICAgICAgZHVtbXk7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhcl90eXBlKiBlbmQgPSAmZHVtbXk7Ci0gICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICBhZ2FpbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGFnYWluKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChidWYucHRyKCkgIT0gYnVmLmVwdHIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluID0gZmlsdGVyKCkuZmlsdGVyKCBlbmQsIGVuZCwgYnVmLnB0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5lcHRyKCksIHRydWUgKTsKLSAgICAgICAgICAgICAgICAgICAgZmx1c2goc25rKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICB0cnkgeyBjbG9zZV9pbXBsKCk7IH0gY2F0Y2ggKC4uLikgeyB9Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjbG9zZV9pbXBsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgU3ltbWV0cmljRmlsdGVyJiBmaWx0ZXIoKSB7IHJldHVybiAqcGltcGxfOyB9Ci0gICAgc3RyaW5nX3R5cGUgdW5jb25zdW1lZF9pbnB1dCgpIGNvbnN0OwotCi0vLyBHaXZlIGltcGwgYWNjZXNzIHRvIGJ1ZmZlcl90eXBlIG9uIFRydTY0Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpKSAKLSAgICBwcml2YXRlOgotI2VuZGlmCi0gICAgdHlwZWRlZiBkZXRhaWw6OmJ1ZmZlcjxjaGFyX3R5cGUsIEFsbG9jPiBidWZmZXJfdHlwZTsKLXByaXZhdGU6Ci0gICAgYnVmZmVyX3R5cGUmIGJ1ZigpIHsgcmV0dXJuIHBpbXBsXy0+YnVmXzsgfQotICAgIGNvbnN0IGJ1ZmZlcl90eXBlJiBidWYoKSBjb25zdCB7IHJldHVybiBwaW1wbF8tPmJ1Zl87IH0KLSAgICBpbnQmIHN0YXRlKCkgeyByZXR1cm4gcGltcGxfLT5zdGF0ZV87IH0KLSAgICB2b2lkIGJlZ2luX3JlYWQoKTsKLSAgICB2b2lkIGJlZ2luX3dyaXRlKCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgaW50IGZpbGwoU291cmNlJiBzcmMpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYW10ID0gaW9zdHJlYW1zOjpyZWFkKHNyYywgYnVmKCkuZGF0YSgpLCBidWYoKS5zaXplKCkpOwotICAgICAgICBpZiAoYW10ID09IC0xKSB7Ci0gICAgICAgICAgICBzdGF0ZSgpIHw9IGZfZW9mOwotICAgICAgICAgICAgcmV0dXJuIGZfZW9mOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZigpLnNldCgwLCBhbXQpOwotICAgICAgICByZXR1cm4gYW10ICE9IDAgPyBmX2dvb2QgOiBmX3dvdWxkX2Jsb2NrOwotICAgIH0KLQotICAgIC8vIEF0dGVtcHRzIHRvIHdyaXRlIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIHRoZSBnaXZlbiBTaW5rLgotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbiBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmIHNuaykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxTaW5rPjo6dHlwZSAgY2F0ZWdvcnk7Ci0gICAgICAgIHR5cGVkZWYgaXNfY29udmVydGlibGU8Y2F0ZWdvcnksIG91dHB1dD4gICAgICAgICAgICAgY2FuX3dyaXRlOwotICAgICAgICByZXR1cm4gZmx1c2goc25rLCBjYW5fd3JpdGUoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmIHNuaywgbXBsOjp0cnVlXykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihidWYoKS5wdHIoKSAtIGJ1ZigpLmRhdGEoKSk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPQotICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6d3JpdGUoc25rLCBidWYoKS5kYXRhKCksIGFtdCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPCBhbXQgJiYgcmVzdWx0ID4gMCkKLSAgICAgICAgICAgIHRyYWl0c190eXBlOjptb3ZlKGJ1ZigpLmRhdGEoKSwgYnVmKCkuZGF0YSgpICsgcmVzdWx0LCBhbXQgLSByZXN1bHQpOwotICAgICAgICBidWYoKS5zZXQoYW10IC0gcmVzdWx0LCBidWYoKS5zaXplKCkpOwotICAgICAgICByZXR1cm4gcmVzdWx0ICE9IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBib29sIGZsdXNoKFNpbmsmLCBtcGw6OmZhbHNlXykgeyByZXR1cm4gdHJ1ZTt9Ci0KLSAgICB2b2lkIGNsb3NlX2ltcGwoKTsKLQotICAgIGVudW0gZmxhZ190eXBlIHsKLSAgICAgICAgZl9yZWFkICAgPSAxLAotICAgICAgICBmX3dyaXRlICA9IGZfcmVhZCA8PCAxLAotICAgICAgICBmX2VvZiAgICA9IGZfd3JpdGUgPDwgMSwKLSAgICAgICAgZl9nb29kLAotICAgICAgICBmX3dvdWxkX2Jsb2NrCi0gICAgfTsKLQotICAgIHN0cnVjdCBpbXBsIDogU3ltbWV0cmljRmlsdGVyIHsKLQotICAgIC8vIEV4cGFuZHMgdG8gYSBzZXF1ZW5jZSBvZiBjdG9ycyB3aGljaCBmb3J3YXJkIHRvIFN5bW1ldHJpY0ZpbHRlci4KLSAgICAjZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKG4pIFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1RFTVBMQVRFX1BBUkFNUyhuLCBUKSBcCi0gICAgICAgIGltcGwoIGludCBidWZmZXJfc2l6ZSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhuLCBjb25zdCBULCAmdCkgKSBcCi0gICAgICAgICAgICA6IFN5bW1ldHJpY0ZpbHRlcihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB0KSksIFwKLSAgICAgICAgICAgICAgYnVmXyhidWZmZXJfc2l6ZSksIHN0YXRlXygwKSBcCi0gICAgICAgICAgICB7IH0gXAotICAgICAgICAvKiovCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgKDAsIE5ETkJPT1NUX0lPU1RSRUFNU19NQVhfRk9SV0FSRElOR19BUklUWSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLSAgICAjdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8KLQotICAgICAgICBidWZmZXJfdHlwZSAgYnVmXzsKLSAgICAgICAgaW50ICAgICAgICAgIHN0YXRlXzsKLSAgICB9OwotCi0gICAgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbF87Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoc3ltbWV0cmljX2ZpbHRlciwgMikKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiBzeW1tZXRyaWNfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFN5bW1ldHJpY0ZpbHRlciwgdHlwZW5hbWUgQWxsb2M+Ci12b2lkIHN5bW1ldHJpY19maWx0ZXI8U3ltbWV0cmljRmlsdGVyLCBBbGxvYz46OmJlZ2luX3JlYWQoKQotewotICAgIE5ETkJPT1NUX0FTU0VSVCghKHN0YXRlKCkgJiBmX3dyaXRlKSk7Ci0gICAgc3RhdGUoKSB8PSBmX3JlYWQ7Ci0gICAgYnVmKCkuc2V0KDAsIDApOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTeW1tZXRyaWNGaWx0ZXIsIHR5cGVuYW1lIEFsbG9jPgotdm9pZCBzeW1tZXRyaWNfZmlsdGVyPFN5bW1ldHJpY0ZpbHRlciwgQWxsb2M+OjpiZWdpbl93cml0ZSgpCi17Ci0gICAgTkROQk9PU1RfQVNTRVJUKCEoc3RhdGUoKSAmIGZfcmVhZCkpOwotICAgIHN0YXRlKCkgfD0gZl93cml0ZTsKLSAgICBidWYoKS5zZXQoMCwgYnVmKCkuc2l6ZSgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3ltbWV0cmljRmlsdGVyLCB0eXBlbmFtZSBBbGxvYz4KLXZvaWQgc3ltbWV0cmljX2ZpbHRlcjxTeW1tZXRyaWNGaWx0ZXIsIEFsbG9jPjo6Y2xvc2VfaW1wbCgpCi17Ci0gICAgc3RhdGUoKSA9IDA7Ci0gICAgYnVmKCkuc2V0KDAsIDApOwotICAgIGZpbHRlcigpLmNsb3NlKCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN5bW1ldHJpY0ZpbHRlciwgdHlwZW5hbWUgQWxsb2M+Ci10eXBlbmFtZSBzeW1tZXRyaWNfZmlsdGVyPFN5bW1ldHJpY0ZpbHRlciwgQWxsb2M+OjpzdHJpbmdfdHlwZQotc3ltbWV0cmljX2ZpbHRlcjxTeW1tZXRyaWNGaWx0ZXIsIEFsbG9jPjo6dW5jb25zdW1lZF9pbnB1dCgpIGNvbnN0Ci17IHJldHVybiBzdHJpbmdfdHlwZShidWYoKS5wdHIoKSwgYnVmKCkuZXB0cigpKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1lNTUVUUklDX0ZJTFRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci90ZXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci90ZXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFkN2I1ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvdGVzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUl9URVNUX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfTVNWQyxwdXQgc2l6ZV90IGluIHN0ZC4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgICAgICAgICAgICAgICAvLyBtaW4uCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzaXplX3QuCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgIC8qKi8KLSMgaW5jbHVkZSA8Y3N0ZGxpYj4gICAgICAgICAgICAgICAgICAgICAgIC8vIHJhbmQuCi0jZW5kaWYKLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1lbWNweSwgc3RybGVuLgotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgIC8qKi8KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbXBvc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9iYWNrX2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotI3VuZGVmIG1lbWNweQotI3VuZGVmIHJhbmQKLSN1bmRlZiBzdHJsZW4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmICFkZWZpbmVkKF9fTElCQ09NT19fKQotbmFtZXNwYWNlIHN0ZCB7IAotICAgIHVzaW5nIDo6bWVtY3B5OyAKLSAgICB1c2luZyA6OnN0cmxlbjsgCi0gICAgI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgfHwgXAotICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgfHwgXAotICAgICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgICAgICAvKiovCi0gICAgICAgIHVzaW5nIDo6cmFuZDsgCi0gICAgI2VuZGlmCi19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19zdHJpbmcsIHN0ZDo6YmFzaWNfc3RyaW5nLCAzKQotCi1jb25zdCBzdGQ6OnN0cmVhbXNpemUgZGVmYXVsdF9pbmNyZW1lbnQgPSA1OwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykgXAotICAgIC8qKi8KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmFuZChpbnQgaW5jKQotICAgIHsKLSAgICAgICAgc3RhdGljIHJhbmQ0OCAgICAgICAgICAgICAgICByYW5kb21fZ2VuOwotICAgICAgICBzdGF0aWMgdW5pZm9ybV9zbWFsbGludDxpbnQ+IHJhbmRvbV9kaXN0KDAsIGluYyk7Ci0gICAgICAgIHJldHVybiByYW5kb21fZGlzdChyYW5kb21fZ2VuKTsKLSAgICB9Ci0jZWxzZQotICAgIHN0ZDo6c3RyZWFtc2l6ZSByYW5kKGludCBpbmMpIAotICAgIHsgCi0gICAgICAgIHJldHVybiAoc3RkOjpyYW5kKCkgKiBpbmMgKyAxKSAvIFJBTkRfTUFYOyAKLSAgICB9Ci0jZW5kaWYKLQotY2xhc3Mgbm9uX2Jsb2NraW5nX3NvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBzb3VyY2VfdGFnLAotICAgICAgICAgIHBlZWthYmxlX3RhZwotICAgICAgICB7IH07Ci0gICAgZXhwbGljaXQgbm9uX2Jsb2NraW5nX3NvdXJjZSggY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBpbmMgPSBkZWZhdWx0X2luY3JlbWVudCApIAotICAgICAgICA6IGRhdGFfKGRhdGEpLCBpbmNfKGluYyksIHBvc18oMCkKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhciogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgewotICAgICAgICBpZiAocG9zXyA9PSBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGRhdGFfLnNpemUoKSkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhdmFpbCA9IAotICAgICAgICAgICAgKHN0ZDo6bWluKSAobiwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihkYXRhXy5zaXplKCkgLSBwb3NfKSk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQgPSAoc3RkOjptaW4pIChyYW5kKGluY18pLCBhdmFpbCk7Ci0gICAgICAgIGlmIChhbXQpCi0gICAgICAgICAgICBzdGQ6Om1lbWNweShzLCBkYXRhXy5jX3N0cigpICsgcG9zXywgYW10KTsKLSAgICAgICAgcG9zXyArPSBhbXQ7Ci0gICAgICAgIHJldHVybiBhbXQ7Ci0gICAgfQotCi0gICAgYm9vbCBwdXRiYWNrKGNoYXIgYykKLSAgICB7Ci0gICAgICAgIGlmIChwb3NfID4gMCkgewotICAgICAgICAgICAgZGF0YV9bLS1wb3NfXSA9IGM7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBzdGQ6OnN0cmluZyAgICAgIGRhdGFfOwotICAgIHN0ZDo6c3RyZWFtc2l6ZSAgaW5jXywgcG9zXzsKLX07Ci0KLWNsYXNzIG5vbl9ibG9ja2luZ19zaW5rIDogcHVibGljIHNpbmsgewotcHVibGljOgotICAgIG5vbl9ibG9ja2luZ19zaW5rKCBzdGQ6OnN0cmluZyYgZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGluYyA9IGRlZmF1bHRfaW5jcmVtZW50ICkgCi0gICAgICAgIDogZGVzdF8oZGVzdCksIGluY18oaW5jKSAKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKGNvbnN0IGNoYXIqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdCA9IChzdGQ6Om1pbikgKHJhbmQoaW5jXyksIG4pOwotICAgICAgICBkZXN0Xy5pbnNlcnQoZGVzdF8uZW5kKCksIHMsIHMgKyBhbXQpOwotICAgICAgICByZXR1cm4gYW10OwotICAgIH0KLXByaXZhdGU6Ci0gICAgbm9uX2Jsb2NraW5nX3NpbmsmIG9wZXJhdG9yPShjb25zdCBub25fYmxvY2tpbmdfc2luayYpOwotICAgIHN0ZDo6c3RyaW5nJiAgICAgZGVzdF87Ci0gICAgc3RkOjpzdHJlYW1zaXplICBpbmNfOwotfTsKLSAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHRlc3RfaW5wdXRfZmlsdGVyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWJvb2wgdGVzdF9pbnB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjp0cnVlXyApCi17Ci0gICAgZm9yICggaW50IGluYyA9IGRlZmF1bHRfaW5jcmVtZW50OyAKLSAgICAgICAgICBpbmMgPCBkZWZhdWx0X2luY3JlbWVudCAqIDQwOyAKLSAgICAgICAgICBpbmMgKz0gZGVmYXVsdF9pbmNyZW1lbnQgKQotICAgIHsKLSAgICAgICAgbm9uX2Jsb2NraW5nX3NvdXJjZSAgc3JjKGlucHV0LCBpbmMpOwotICAgICAgICBzdGQ6OnN0cmluZyAgICAgICAgICBkZXN0OwotICAgICAgICBpb3N0cmVhbXM6OmNvcHkoY29tcG9zZShmaWx0ZXIsIHNyYyksIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihkZXN0KSk7Ci0gICAgICAgIGlmIChkZXN0ICE9IG91dHB1dCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU291cmNlMSwgdHlwZW5hbWUgU291cmNlMj4KLWJvb2wgdGVzdF9pbnB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMSYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMiYgb3V0cHV0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfICkKLXsKLSAgICBzdGQ6OnN0cmluZyBpbjsKLSAgICBzdGQ6OnN0cmluZyBvdXQ7Ci0gICAgaW9zdHJlYW1zOjpjb3B5KGlucHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoaW4pKTsKLSAgICBpb3N0cmVhbXM6OmNvcHkob3V0cHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIob3V0KSk7Ci0gICAgcmV0dXJuIHRlc3RfaW5wdXRfZmlsdGVyKGZpbHRlciwgaW4sIG91dCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlciwgdHlwZW5hbWUgU291cmNlMSwgdHlwZW5hbWUgU291cmNlMj4KLWJvb2wgdGVzdF9pbnB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMSYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMiYgb3V0cHV0ICkKLXsKLSAgICAvLyBVc2UgdGFnIGRpc3BhdGNoIHRvIGNvbXBlbnNhdGUgZm9yIGJhZCBvdmVybG9hZCByZXNvbHV0aW9uLgotICAgIHJldHVybiB0ZXN0X2lucHV0X2ZpbHRlciggZmlsdGVyLCBpbnB1dCwgb3V0cHV0LCAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N0cmluZzxTb3VyY2UxPigpICk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHRlc3Rfb3V0cHV0X2ZpbHRlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZpbHRlcj4KLWJvb2wgdGVzdF9vdXRwdXRfZmlsdGVyKCBGaWx0ZXIgZmlsdGVyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6dHJ1ZV8gKQotewotICAgIGZvciAoIGludCBpbmMgPSBkZWZhdWx0X2luY3JlbWVudDsgCi0gICAgICAgICAgaW5jIDwgZGVmYXVsdF9pbmNyZW1lbnQgKiA0MDsgCi0gICAgICAgICAgaW5jICs9IGRlZmF1bHRfaW5jcmVtZW50ICkKLSAgICB7Ci0gICAgICAgIGFycmF5X3NvdXJjZSAgc3JjKGlucHV0LmRhdGEoKSwgaW5wdXQuZGF0YSgpICsgaW5wdXQuc2l6ZSgpKTsKLSAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICBpb3N0cmVhbXM6OmNvcHkoc3JjLCBjb21wb3NlKGZpbHRlciwgbm9uX2Jsb2NraW5nX3NpbmsoZGVzdCwgaW5jKSkpOwotICAgICAgICBpZiAoZGVzdCAhPSBvdXRwdXQgKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBTb3VyY2UxLCB0eXBlbmFtZSBTb3VyY2UyPgotYm9vbCB0ZXN0X291dHB1dF9maWx0ZXIoIEZpbHRlciBmaWx0ZXIsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZTEmIGlucHV0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2UyJiBvdXRwdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfICkKLXsKLSAgICBzdGQ6OnN0cmluZyBpbjsKLSAgICBzdGQ6OnN0cmluZyBvdXQ7Ci0gICAgaW9zdHJlYW1zOjpjb3B5KGlucHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoaW4pKTsKLSAgICBpb3N0cmVhbXM6OmNvcHkob3V0cHV0LCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIob3V0KSk7Ci0gICAgcmV0dXJuIHRlc3Rfb3V0cHV0X2ZpbHRlcihmaWx0ZXIsIGluLCBvdXQpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIFNvdXJjZTEsIHR5cGVuYW1lIFNvdXJjZTI+Ci1ib29sIHRlc3Rfb3V0cHV0X2ZpbHRlciggRmlsdGVyIGZpbHRlciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlMSYgaW5wdXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZTImIG91dHB1dCApCi17Ci0gICAgLy8gVXNlIHRhZyBkaXNwYXRjaCB0byBjb21wZW5zYXRlIGZvciBiYWQgb3ZlcmxvYWQgcmVzb2x1dGlvbi4KLSAgICByZXR1cm4gdGVzdF9vdXRwdXRfZmlsdGVyKCBmaWx0ZXIsIGlucHV0LCBvdXRwdXQsICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N0cmluZzxTb3VyY2UxPigpICk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHRlc3RfZmlsdGVyX3BhaXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dEZpbHRlciwgdHlwZW5hbWUgSW5wdXRGaWx0ZXI+Ci1ib29sIHRlc3RfZmlsdGVyX3BhaXIoIE91dHB1dEZpbHRlciBvdXQsIAotICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEZpbHRlciBpbiwgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkYXRhLCAKLSAgICAgICAgICAgICAgICAgICAgICAgbXBsOjp0cnVlXyApCi17Ci0gICAgZm9yICggaW50IGluYyA9IGRlZmF1bHRfaW5jcmVtZW50OyAKLSAgICAgICAgICBpbmMgPD0gZGVmYXVsdF9pbmNyZW1lbnQgKiA0MDsgCi0gICAgICAgICAgaW5jICs9IGRlZmF1bHRfaW5jcmVtZW50ICkKLSAgICB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5X3NvdXJjZSAgc3JjKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgdGVtcDsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgZGVzdDsKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weShzcmMsIGNvbXBvc2Uob3V0LCBub25fYmxvY2tpbmdfc2luayh0ZW1wLCBpbmMpKSk7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNvcHkoIAotICAgICAgICAgICAgICAgIGNvbXBvc2UoaW4sIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSksCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpiYWNrX2luc2VydGVyKGRlc3QpCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgaWYgKGRlc3QgIT0gZGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXlfc291cmNlICBzcmMoZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCkpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICB0ZW1wOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KHNyYywgY29tcG9zZShvdXQsIG5vbl9ibG9ja2luZ19zaW5rKHRlbXAsIGluYykpKTsKLSAgICAgICAgICAgIC8vIHRydW5jYXRlIHRoZSBmaWxlLCB0aGlzIHNob3VsZCBub3QgbG9vcCwgaXQgbWF5IHRocm93Ci0gICAgICAgICAgICAvLyBzdGQ6Omlvc19iYXNlOjpmYWlsdXJlLCB3aGljaCB3ZSBzd2FsbG93LgotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0ZW1wLnJlc2l6ZSh0ZW1wLnNpemUoKSAvIDIpOwotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weSggCi0gICAgICAgICAgICAgICAgICAgIGNvbXBvc2UoaW4sIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSksCi0gICAgICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihkZXN0KQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGNhdGNoKHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUmKSB7fQotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5X3NvdXJjZSAgc3JjKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgdGVtcDsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nICAgZGVzdDsKLSAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weShjb21wb3NlKG91dCwgc3JjKSwgbm9uX2Jsb2NraW5nX3NpbmsodGVtcCwgaW5jKSk7Ci0gICAgICAgICAgICBpb3N0cmVhbXM6OmNvcHkoIAotICAgICAgICAgICAgICAgIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSwKLSAgICAgICAgICAgICAgICBjb21wb3NlKGluLCBpb3N0cmVhbXM6OmJhY2tfaW5zZXJ0ZXIoZGVzdCkpCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgaWYgKGRlc3QgIT0gZGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgICAgYXJyYXlfc291cmNlICBzcmMoZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCkpOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICB0ZW1wOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgICBkZXN0OwotICAgICAgICAgICAgaW9zdHJlYW1zOjpjb3B5KGNvbXBvc2Uob3V0LCBzcmMpLCBub25fYmxvY2tpbmdfc2luayh0ZW1wLCBpbmMpKTsKLSAgICAgICAgICAgIC8vIHRydW5jYXRlIHRoZSBmaWxlLCB0aGlzIHNob3VsZCBub3QgbG9vcCwgaXQgbWF5IHRocm93Ci0gICAgICAgICAgICAvLyBzdGQ6Omlvc19iYXNlOjpmYWlsdXJlLCB3aGljaCB3ZSBzd2FsbG93LgotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0ZW1wLnJlc2l6ZSh0ZW1wLnNpemUoKSAvIDIpOwotICAgICAgICAgICAgICAgIGlvc3RyZWFtczo6Y29weSggCi0gICAgICAgICAgICAgICAgICAgIG5vbl9ibG9ja2luZ19zb3VyY2UodGVtcCwgaW5jKSwKLSAgICAgICAgICAgICAgICAgICAgY29tcG9zZShpbiwgaW9zdHJlYW1zOjpiYWNrX2luc2VydGVyKGRlc3QpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGNhdGNoKHN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmUmKSB7fQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRGaWx0ZXIsIHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci1ib29sIHRlc3RfZmlsdGVyX3BhaXIoIE91dHB1dEZpbHRlciBvdXQsIAotICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEZpbHRlciBpbiwgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZSYgZGF0YSwgCi0gICAgICAgICAgICAgICAgICAgICAgIG1wbDo6ZmFsc2VfICkKLXsKLSAgICBzdGQ6OnN0cmluZyBzdHI7Ci0gICAgaW9zdHJlYW1zOjpjb3B5KGRhdGEsIGlvc3RyZWFtczo6YmFja19pbnNlcnRlcihzdHIpKTsKLSAgICByZXR1cm4gdGVzdF9maWx0ZXJfcGFpcihvdXQsIGluLCBzdHIpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRGaWx0ZXIsIHR5cGVuYW1lIElucHV0RmlsdGVyLCB0eXBlbmFtZSBTb3VyY2U+Ci1ib29sIHRlc3RfZmlsdGVyX3BhaXIoIE91dHB1dEZpbHRlciBvdXQsIAotICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEZpbHRlciBpbiwgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZSYgZGF0YSApCi17Ci0gICAgLy8gVXNlIHRhZyBkaXNwYXRjaCB0byBjb21wZW5zYXRlIGZvciBiYWQgb3ZlcmxvYWQgcmVzb2x1dGlvbi4KLSAgICByZXR1cm4gdGVzdF9maWx0ZXJfcGFpcihvdXQsIGluLCBkYXRhLCBpc19zdHJpbmc8U291cmNlPigpKTsKLX0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxURVJfVEVTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci96bGliLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlci96bGliLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM1ZWQzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXIvemxpYi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIE5vdGU6IGN1c3RvbSBhbGxvY2F0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIFZDNiwgc2luY2UgdGhhdCBjb21waWxlcgotLy8gaGFkIHRyb3VibGUgZmluZGluZyB0aGUgZnVuY3Rpb24gemxpYl9iYXNlOjpkb19pbml0LgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19aTElCX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfWkxJQl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGNhc3NlcnQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPGlvc2Z3ZD4gICAgICAgICAgICAvLyBzdHJlYW1zaXplLiAgICAgICAgICAgICAgICAgCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgIC8vIGFsbG9jYXRvciwgYmFkX2FsbG9jLgotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE1TVkMsIFNUQVRJQ19DT05TVEFOVCwgREVEVUNFRF9UWVBFTkFNRSwgRElOS1VNLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPiAvLyB1aW50Kl90Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jb25zdGFudHMuaHBwPiAgIC8vIGJ1ZmZlciBzaXplLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZHluX2xpbmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL3dpZGVfc3RyZWFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvemxpYi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAgLy8gZmFpbHVyZSwgc3RyZWFtc2l6ZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmlsdGVyL3N5bW1ldHJpYy5ocHA+ICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHA+ICAgICAgICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI1MSA0MjMxIDQ2NjApICAgICAgICAgLy8gRGVwZW5kZW5jaWVzIG5vdCBleHBvcnRlZC4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4gICAgICAgICAgIAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIHpsaWIgewotICAgICAgICAgICAgICAgICAgICAvLyBUeXBlZGVmcwotCi10eXBlZGVmIHVpbnQzMl90IHVpbnQ7Ci10eXBlZGVmIHVpbnQ4X3QgYnl0ZTsKLXR5cGVkZWYgdWludDMyX3QgdWxvbmc7Ci0KLS8vIFByZWZpeCAneCcgcHJldmVudHMgc3ltYm9scyBmcm9tIGJlaW5nIHJlZGVmaW5lZCB3aGVuIFpfUFJFRklYIGlzIGRlZmluZWQKLXR5cGVkZWYgdm9pZCogKCp4YWxsb2NfZnVuYykodm9pZCosIHpsaWI6OnVpbnQsIHpsaWI6OnVpbnQpOwotdHlwZWRlZiB2b2lkICgqeGZyZWVfZnVuYykodm9pZCosIHZvaWQqKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb21wcmVzc2lvbiBsZXZlbHMKLQotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBub19jb21wcmVzc2lvbjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgYmVzdF9zcGVlZDsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgYmVzdF9jb21wcmVzc2lvbjsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZGVmYXVsdF9jb21wcmVzc2lvbjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBDb21wcmVzc2lvbiBtZXRob2RzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgZGVmbGF0ZWQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ29tcHJlc3Npb24gc3RyYXRlZ2llcwotCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGRlZmF1bHRfc3RyYXRlZ3k7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGZpbHRlcmVkOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBodWZmbWFuX29ubHk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU3RhdHVzIGNvZGVzCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgb2theTsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgc3RyZWFtX2VuZDsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgc3RyZWFtX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCB2ZXJzaW9uX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBkYXRhX2Vycm9yOwotTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgZXh0ZXJuIGNvbnN0IGludCBtZW1fZXJyb3I7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGJ1Zl9lcnJvcjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBGbHVzaCBjb2RlcwotCi1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IGZpbmlzaDsKLU5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgbm9fZmx1c2g7Ci1ORE5CT09TVF9JT1NUUkVBTVNfREVDTCBleHRlcm4gY29uc3QgaW50IHN5bmNfZmx1c2g7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ29kZSBmb3IgY3VycmVudCBPUwotCi0vL05ETkJPT1NUX0lPU1RSRUFNU19ERUNMIGV4dGVybiBjb25zdCBpbnQgb3NfY29kZTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBOdWxsIHBvaW50ZXIgY29uc3RhbnQuCi0KLWNvbnN0IGludCBudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLQotICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcwotCi1jb25zdCBpbnQgZGVmYXVsdF93aW5kb3dfYml0cyAgICAgICAgICAgICAgICA9IDE1OwotY29uc3QgaW50IGRlZmF1bHRfbWVtX2xldmVsICAgICAgICAgICAgICAgICAgPSA4OwotY29uc3QgYm9vbCBkZWZhdWx0X2NyYyAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKLWNvbnN0IGJvb2wgZGVmYXVsdF9ub2hlYWRlciAgICAgICAgICAgICAgICAgID0gZmFsc2U7Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSB6bGliLiAKLQotLy8KLS8vIENsYXNzIG5hbWU6IHpsaWJfcGFyYW1zLgotLy8gRGVzY3JpcHRpb246IEVuY2Fwc3VsYXRlcyB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gZGVmbGF0ZUluaXQyCi0vLyAgICAgIGFuZCBpbmZsYXRlSW5pdDIgdG8gY3VzdG9taXplIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgotLy8KLXN0cnVjdCB6bGliX3BhcmFtcyB7Ci0KLSAgICAvLyBOb24tZXhwbGljaXQgY29uc3RydWN0b3IuCi0gICAgemxpYl9wYXJhbXMoIGludCBsZXZlbCAgICAgICAgICAgPSB6bGliOjpkZWZhdWx0X2NvbXByZXNzaW9uLAotICAgICAgICAgICAgICAgICBpbnQgbWV0aG9kICAgICAgICAgID0gemxpYjo6ZGVmbGF0ZWQsCi0gICAgICAgICAgICAgICAgIGludCB3aW5kb3dfYml0cyAgICAgPSB6bGliOjpkZWZhdWx0X3dpbmRvd19iaXRzLCAKLSAgICAgICAgICAgICAgICAgaW50IG1lbV9sZXZlbCAgICAgICA9IHpsaWI6OmRlZmF1bHRfbWVtX2xldmVsLCAKLSAgICAgICAgICAgICAgICAgaW50IHN0cmF0ZWd5ICAgICAgICA9IHpsaWI6OmRlZmF1bHRfc3RyYXRlZ3ksCi0gICAgICAgICAgICAgICAgIGJvb2wgbm9oZWFkZXIgICAgICAgPSB6bGliOjpkZWZhdWx0X25vaGVhZGVyLAotICAgICAgICAgICAgICAgICBib29sIGNhbGN1bGF0ZV9jcmMgID0gemxpYjo6ZGVmYXVsdF9jcmMgKQotICAgICAgICA6IGxldmVsKGxldmVsKSwgbWV0aG9kKG1ldGhvZCksIHdpbmRvd19iaXRzKHdpbmRvd19iaXRzKSwKLSAgICAgICAgICBtZW1fbGV2ZWwobWVtX2xldmVsKSwgc3RyYXRlZ3koc3RyYXRlZ3kpLCAgCi0gICAgICAgICAgbm9oZWFkZXIobm9oZWFkZXIpLCBjYWxjdWxhdGVfY3JjKGNhbGN1bGF0ZV9jcmMpCi0gICAgICAgIHsgfQotICAgIGludCBsZXZlbDsKLSAgICBpbnQgbWV0aG9kOwotICAgIGludCB3aW5kb3dfYml0czsKLSAgICBpbnQgbWVtX2xldmVsOwotICAgIGludCBzdHJhdGVneTsKLSAgICBib29sIG5vaGVhZGVyOwotICAgIGJvb2wgY2FsY3VsYXRlX2NyYzsKLX07Ci0KLS8vCi0vLyBDbGFzcyBuYW1lOiB6bGliX2Vycm9yLgotLy8gRGVzY3JpcHRpb246IFN1YmNsYXNzIG9mIHN0ZDo6aW9zOjpmYWlsdXJlIHRocm93biB0byBpbmRpY2F0ZQotLy8gICAgIHpsaWIgZXJyb3JzIG90aGVyIHRoYW4gb3V0LW9mLW1lbW9yeSBjb25kaXRpb25zLgotLy8KLWNsYXNzIE5ETkJPT1NUX0lPU1RSRUFNU19ERUNMIHpsaWJfZXJyb3IgOiBwdWJsaWMgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUgewotcHVibGljOgotICAgIGV4cGxpY2l0IHpsaWJfZXJyb3IoaW50IGVycm9yKTsKLSAgICBpbnQgZXJyb3IoKSBjb25zdCB7IHJldHVybiBlcnJvcl87IH0KLSAgICBzdGF0aWMgdm9pZCBjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihpbnQgZXJyb3IpOwotcHJpdmF0ZToKLSAgICBpbnQgZXJyb3JfOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotc3RydWN0IHpsaWJfYWxsb2NhdG9yX3RyYWl0cyB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgc3RkOjphbGxvY2F0b3I8Y2hhcj4gdHlwZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFsbG9jLAotICAgICAgICAgIHR5cGVuYW1lIEJhc2UgPSAvLyBWQzYgd29ya2Fyb3VuZCAoQzI1MTYpCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgemxpYl9hbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dHlwZSA+Ci1zdHJ1Y3QgemxpYl9hbGxvY2F0b3IgOiBwcml2YXRlIEJhc2UgewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci1wdWJsaWM6Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGN1c3RvbSA9IAotICAgICAgICAoIWlzX3NhbWU8c3RkOjphbGxvY2F0b3I8Y2hhcj4sIEJhc2U+Ojp2YWx1ZSkpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgemxpYl9hbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6dHlwZSBhbGxvY2F0b3JfdHlwZTsKLSAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGUodm9pZCogc2VsZiwgemxpYjo6dWludCBpdGVtcywgemxpYjo6dWludCBzaXplKTsKLSAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIHNlbGYsIHZvaWQqIGFkZHJlc3MpOwotfTsKLQotY2xhc3MgTkROQk9PU1RfSU9TVFJFQU1TX0RFQ0wgemxpYl9iYXNlIHsgCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLXByb3RlY3RlZDoKLSAgICB6bGliX2Jhc2UoKTsKLSAgICB+emxpYl9iYXNlKCk7Ci0gICAgdm9pZCogc3RyZWFtKCkgeyByZXR1cm4gc3RyZWFtXzsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiAKLSAgICB2b2lkIGluaXQoIGNvbnN0IHpsaWJfcGFyYW1zJiBwLCAKLSAgICAgICAgICAgICAgIGJvb2wgY29tcHJlc3MsCi0gICAgICAgICAgICAgICB6bGliX2FsbG9jYXRvcjxBbGxvYz4mIHphbGxvYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgY3VzdG9tID0gemxpYl9hbGxvY2F0b3I8QWxsb2M+OjpjdXN0b207Ci0gICAgICAgICAgICBkb19pbml0KCBwLCBjb21wcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tID8gemxpYl9hbGxvY2F0b3I8QWxsb2M+OjphbGxvY2F0ZSA6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tID8gemxpYl9hbGxvY2F0b3I8QWxsb2M+OjpkZWFsbG9jYXRlIDogMCwKLSAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgJnphbGxvYyApOwotICAgICAgICB9Ci0gICAgdm9pZCBiZWZvcmUoIGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNvbnN0IGNoYXIqIHNyY19lbmQsCi0gICAgICAgICAgICAgICAgIGNoYXIqJiBkZXN0X2JlZ2luLCBjaGFyKiBkZXN0X2VuZCApOwotICAgIHZvaWQgYWZ0ZXIoIGNvbnN0IGNoYXIqJiBzcmNfYmVnaW4sIGNoYXIqJiBkZXN0X2JlZ2luLCAKLSAgICAgICAgICAgICAgICBib29sIGNvbXByZXNzICk7Ci0gICAgaW50IHhkZWZsYXRlKGludCBmbHVzaCk7ICAvLyBQcmVmaXggJ3gnIHByZXZlbnRzIHN5bWJvbHMgZnJvbSBiZWluZyAKLSAgICBpbnQgeGluZmxhdGUoaW50IGZsdXNoKTsgIC8vIHJlZGVmaW5lZCB3aGVuIFpfUFJFRklYIGlzIGRlZmluZWQKLSAgICB2b2lkIHJlc2V0KGJvb2wgY29tcHJlc3MsIGJvb2wgcmVhbGxvYyk7Ci1wdWJsaWM6Ci0gICAgemxpYjo6dWxvbmcgY3JjKCkgY29uc3QgeyByZXR1cm4gY3JjXzsgfQotICAgIGludCB0b3RhbF9pbigpIGNvbnN0IHsgcmV0dXJuIHRvdGFsX2luXzsgfQotICAgIGludCB0b3RhbF9vdXQoKSBjb25zdCB7IHJldHVybiB0b3RhbF9vdXRfOyB9Ci1wcml2YXRlOgotICAgIHZvaWQgZG9faW5pdCggY29uc3QgemxpYl9wYXJhbXMmIHAsIGJvb2wgY29tcHJlc3MsIAotICAgICAgICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgICAgICAgICAgICB6bGliOjp4YWxsb2NfZnVuYywgCi0gICAgICAgICAgICAgICAgICAgICAgemxpYjo6eGZyZWVfZnVuYywgCi0gICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIHZvaWQqIGRlcml2ZWQgKTsKLSAgICB2b2lkKiAgICAgICAgc3RyZWFtXzsgICAgICAgICAvLyBBY3R1YWwgdHlwZTogel9zdHJlYW0qLgotICAgIGJvb2wgICAgICAgICBjYWxjdWxhdGVfY3JjXzsKLSAgICB6bGliOjp1bG9uZyAgY3JjXzsKLSAgICB6bGliOjp1bG9uZyAgY3JjX2ltcF87Ci0gICAgaW50ICAgICAgICAgIHRvdGFsX2luXzsKLSAgICBpbnQgICAgICAgICAgdG90YWxfb3V0XzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB6bGliX2NvbXByZXNzb3JfaW1wbAotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIEMtU3R5bGUgRmlsdGUgaW1wbGVtZW50aW5nIGNvbXByZXNzaW9uIGJ5Ci0vLyAgICAgIGRlbGVnYXRpbmcgdG8gdGhlIHpsaWIgZnVuY3Rpb24gZGVmbGF0ZS4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLWNsYXNzIHpsaWJfY29tcHJlc3Nvcl9pbXBsIDogcHVibGljIHpsaWJfYmFzZSwgcHVibGljIHpsaWJfYWxsb2NhdG9yPEFsbG9jPiB7IAotcHVibGljOiAKLSAgICB6bGliX2NvbXByZXNzb3JfaW1wbChjb25zdCB6bGliX3BhcmFtcyYgPSB6bGliOjpkZWZhdWx0X2NvbXByZXNzaW9uKTsKLSAgICB+emxpYl9jb21wcmVzc29yX2ltcGwoKTsKLSAgICBib29sIGZpbHRlciggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgICAgICAgICAgICAgY2hhciomIGRlc3RfYmVnaW4sIGNoYXIqIGRlc3RfZW5kLCBib29sIGZsdXNoICk7Ci0gICAgdm9pZCBjbG9zZSgpOwotfTsKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHpsaWJfY29tcHJlc3NvcgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIEMtU3R5bGUgRmlsdGUgaW1wbGVtZW50aW5nIGRlY29tcHJlc3Npb24gYnkKLS8vICAgICAgZGVsZWdhdGluZyB0byB0aGUgemxpYiBmdW5jdGlvbiBpbmZsYXRlLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Y2hhcj4gPgotY2xhc3MgemxpYl9kZWNvbXByZXNzb3JfaW1wbCA6IHB1YmxpYyB6bGliX2Jhc2UsIHB1YmxpYyB6bGliX2FsbG9jYXRvcjxBbGxvYz4gewotcHVibGljOgotICAgIHpsaWJfZGVjb21wcmVzc29yX2ltcGwoY29uc3QgemxpYl9wYXJhbXMmKTsKLSAgICB6bGliX2RlY29tcHJlc3Nvcl9pbXBsKGludCB3aW5kb3dfYml0cyA9IHpsaWI6OmRlZmF1bHRfd2luZG93X2JpdHMpOwotICAgIH56bGliX2RlY29tcHJlc3Nvcl9pbXBsKCk7Ci0gICAgYm9vbCBmaWx0ZXIoIGNvbnN0IGNoYXIqJiBiZWdpbl9pbiwgY29uc3QgY2hhciogZW5kX2luLAotICAgICAgICAgICAgICAgICBjaGFyKiYgYmVnaW5fb3V0LCBjaGFyKiBlbmRfb3V0LCBib29sIGZsdXNoICk7Ci0gICAgdm9pZCBjbG9zZSgpOwotICAgIGJvb2wgZW9mKCkgY29uc3QgeyByZXR1cm4gZW9mXzsgfQotcHJpdmF0ZToKLSAgICBib29sIGVvZl87Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gVGVtcGxhdGUgbmFtZTogemxpYl9jb21wcmVzc29yCi0vLyBEZXNjcmlwdGlvbjogTW9kZWwgb2YgSW5wdXRGaWx0ZXIgYW5kIE91dHB1dEZpbHRlciBpbXBsZW1lbnRpbmcKLS8vICAgICAgY29tcHJlc3Npb24gdXNpbmcgemxpYi4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLXN0cnVjdCBiYXNpY196bGliX2NvbXByZXNzb3IgCi0gICAgOiBzeW1tZXRyaWNfZmlsdGVyPGRldGFpbDo6emxpYl9jb21wcmVzc29yX2ltcGw8QWxsb2M+LCBBbGxvYz4gCi17Ci1wcml2YXRlOgotICAgIHR5cGVkZWYgZGV0YWlsOjp6bGliX2NvbXByZXNzb3JfaW1wbDxBbGxvYz4gICAgICAgICBpbXBsX3R5cGU7Ci0gICAgdHlwZWRlZiBzeW1tZXRyaWNfZmlsdGVyPGltcGxfdHlwZSwgQWxsb2M+ICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6Y2F0ZWdvcnkgICAgICAgICAgICAgICAgY2F0ZWdvcnk7Ci0gICAgYmFzaWNfemxpYl9jb21wcmVzc29yKCBjb25zdCB6bGliX3BhcmFtcyYgPSB6bGliOjpkZWZhdWx0X2NvbXByZXNzaW9uLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJfc2l6ZSA9IGRlZmF1bHRfZGV2aWNlX2J1ZmZlcl9zaXplICk7Ci0gICAgemxpYjo6dWxvbmcgY3JjKCkgeyByZXR1cm4gdGhpcy0+ZmlsdGVyKCkuY3JjKCk7IH0KLSAgICBpbnQgdG90YWxfaW4oKSB7ICByZXR1cm4gdGhpcy0+ZmlsdGVyKCkudG90YWxfaW4oKTsgfQotfTsKLU5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFKGJhc2ljX3psaWJfY29tcHJlc3NvciwgMSkKLQotdHlwZWRlZiBiYXNpY196bGliX2NvbXByZXNzb3I8PiB6bGliX2NvbXByZXNzb3I7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB6bGliX2RlY29tcHJlc3NvcgotLy8gRGVzY3JpcHRpb246IE1vZGVsIG9mIElucHV0RmlsdGVyIGFuZCBPdXRwdXRGaWx0ZXIgaW1wbGVtZW50aW5nCi0vLyAgICAgIGRlY29tcHJlc3Npb24gdXNpbmcgemxpYi4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID4KLXN0cnVjdCBiYXNpY196bGliX2RlY29tcHJlc3NvciAKLSAgICA6IHN5bW1ldHJpY19maWx0ZXI8ZGV0YWlsOjp6bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPiwgQWxsb2M+IAotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGRldGFpbDo6emxpYl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz4gICAgICAgaW1wbF90eXBlOwotICAgIHR5cGVkZWYgc3ltbWV0cmljX2ZpbHRlcjxpbXBsX3R5cGUsIEFsbG9jPiAgYmFzZV90eXBlOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNhdGVnb3J5ICAgICAgICAgICAgICAgIGNhdGVnb3J5OwotICAgIGJhc2ljX3psaWJfZGVjb21wcmVzc29yKCBpbnQgd2luZG93X2JpdHMgPSB6bGliOjpkZWZhdWx0X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUgPSBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZSApOwotICAgIGJhc2ljX3psaWJfZGVjb21wcmVzc29yKCBjb25zdCB6bGliX3BhcmFtcyYgcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmZlcl9zaXplID0gZGVmYXVsdF9kZXZpY2VfYnVmZmVyX3NpemUgKTsKLSAgICB6bGliOjp1bG9uZyBjcmMoKSB7IHJldHVybiB0aGlzLT5maWx0ZXIoKS5jcmMoKTsgfQotICAgIGludCB0b3RhbF9vdXQoKSB7ICByZXR1cm4gdGhpcy0+ZmlsdGVyKCkudG90YWxfb3V0KCk7IH0KLSAgICBib29sIGVvZigpIHsgcmV0dXJuIHRoaXMtPmZpbHRlcigpLmVvZigpOyB9Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoYmFzaWNfemxpYl9kZWNvbXByZXNzb3IsIDEpCi0KLXR5cGVkZWYgYmFzaWNfemxpYl9kZWNvbXByZXNzb3I8PiB6bGliX2RlY29tcHJlc3NvcjsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiB6bGliX2FsbG9jYXRvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBCYXNlPgotdm9pZCogemxpYl9hbGxvY2F0b3I8QWxsb2MsIEJhc2U+OjphbGxvY2F0ZQotICAgICh2b2lkKiBzZWxmLCB6bGliOjp1aW50IGl0ZW1zLCB6bGliOjp1aW50IHNpemUpCi17IAotICAgIHNpemVfdHlwZSBsZW4gPSBpdGVtcyAqIHNpemU7Ci0gICAgY2hhciogcHRyID0gCi0gICAgICAgIHN0YXRpY19jYXN0PGFsbG9jYXRvcl90eXBlKj4oc2VsZiktPmFsbG9jYXRlCi0gICAgICAgICAgICAobGVuICsgc2l6ZW9mKHNpemVfdHlwZSkKLSAgICAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA9PSAxKQotICAgICAgICAgICAgICAgICwgKGNoYXIqKTAKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgKTsKLSAgICAqcmVpbnRlcnByZXRfY2FzdDxzaXplX3R5cGUqPihwdHIpID0gbGVuOwotICAgIHJldHVybiBwdHIgKyBzaXplb2Yoc2l6ZV90eXBlKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEJhc2U+Ci12b2lkIHpsaWJfYWxsb2NhdG9yPEFsbG9jLCBCYXNlPjo6ZGVhbGxvY2F0ZSh2b2lkKiBzZWxmLCB2b2lkKiBhZGRyZXNzKQoteyAKLSAgICBjaGFyKiBwdHIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihhZGRyZXNzKSAtIHNpemVvZihzaXplX3R5cGUpOwotICAgIHNpemVfdHlwZSBsZW4gPSAqcmVpbnRlcnByZXRfY2FzdDxzaXplX3R5cGUqPihwdHIpICsgc2l6ZW9mKHNpemVfdHlwZSk7Ci0gICAgc3RhdGljX2Nhc3Q8YWxsb2NhdG9yX3R5cGUqPihzZWxmKS0+ZGVhbGxvY2F0ZShwdHIsIGxlbik7IAotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHpsaWJfY29tcHJlc3Nvcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6emxpYl9jb21wcmVzc29yX2ltcGwoY29uc3QgemxpYl9wYXJhbXMmIHApCi17IGluaXQocCwgdHJ1ZSwgc3RhdGljX2Nhc3Q8emxpYl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6fnpsaWJfY29tcHJlc3Nvcl9pbXBsKCkKLXsgcmVzZXQodHJ1ZSwgZmFsc2UpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYm9vbCB6bGliX2NvbXByZXNzb3JfaW1wbDxBbGxvYz46OmZpbHRlcgotICAgICggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgIGNoYXIqJiBkZXN0X2JlZ2luLCBjaGFyKiBkZXN0X2VuZCwgYm9vbCBmbHVzaCApCi17Ci0gICAgYmVmb3JlKHNyY19iZWdpbiwgc3JjX2VuZCwgZGVzdF9iZWdpbiwgZGVzdF9lbmQpOwotICAgIGludCByZXN1bHQgPSB4ZGVmbGF0ZShmbHVzaCA/IHpsaWI6OmZpbmlzaCA6IHpsaWI6Om5vX2ZsdXNoKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4sIHRydWUpOwotICAgIHpsaWJfZXJyb3I6OmNoZWNrIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdCAhPSB6bGliOjpzdHJlYW1fZW5kOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci12b2lkIHpsaWJfY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6Y2xvc2UoKSB7IHJlc2V0KHRydWUsIHRydWUpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tSW1wbGVtZW50YXRpb24gb2YgemxpYl9kZWNvbXByZXNzb3JfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotemxpYl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OnpsaWJfZGVjb21wcmVzc29yX2ltcGwoY29uc3QgemxpYl9wYXJhbXMmIHApCi0gIDogZW9mXyhmYWxzZSkKLXsgaW5pdChwLCBmYWxzZSwgc3RhdGljX2Nhc3Q8emxpYl9hbGxvY2F0b3I8QWxsb2M+Jj4oKnRoaXMpKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLXpsaWJfZGVjb21wcmVzc29yX2ltcGw8QWxsb2M+Ojp+emxpYl9kZWNvbXByZXNzb3JfaW1wbCgpCi17IHJlc2V0KGZhbHNlLCBmYWxzZSk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci16bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6emxpYl9kZWNvbXByZXNzb3JfaW1wbChpbnQgd2luZG93X2JpdHMpCi17IAotICAgIHpsaWJfcGFyYW1zIHA7Ci0gICAgcC53aW5kb3dfYml0cyA9IHdpbmRvd19iaXRzOwotICAgIGluaXQocCwgZmFsc2UsIHN0YXRpY19jYXN0PHpsaWJfYWxsb2NhdG9yPEFsbG9jPiY+KCp0aGlzKSk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJvb2wgemxpYl9kZWNvbXByZXNzb3JfaW1wbDxBbGxvYz46OmZpbHRlcgotICAgICggY29uc3QgY2hhciomIHNyY19iZWdpbiwgY29uc3QgY2hhciogc3JjX2VuZCwKLSAgICAgIGNoYXIqJiBkZXN0X2JlZ2luLCBjaGFyKiBkZXN0X2VuZCwgYm9vbCAvKiBmbHVzaCAqLyApCi17Ci0gICAgYmVmb3JlKHNyY19iZWdpbiwgc3JjX2VuZCwgZGVzdF9iZWdpbiwgZGVzdF9lbmQpOwotICAgIGludCByZXN1bHQgPSB4aW5mbGF0ZSh6bGliOjpzeW5jX2ZsdXNoKTsKLSAgICBhZnRlcihzcmNfYmVnaW4sIGRlc3RfYmVnaW4sIGZhbHNlKTsKLSAgICB6bGliX2Vycm9yOjpjaGVjayBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihyZXN1bHQpOwotICAgIHJldHVybiAhKGVvZl8gPSByZXN1bHQgPT0gemxpYjo6c3RyZWFtX2VuZCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotdm9pZCB6bGliX2RlY29tcHJlc3Nvcl9pbXBsPEFsbG9jPjo6Y2xvc2UoKSB7Ci0gICAgZW9mXyA9IGZhbHNlOwotICAgIHJlc2V0KGZhbHNlLCB0cnVlKTsKLX0KLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1JbXBsZW1lbnRhdGlvbiBvZiB6bGliX2RlY29tcHJlc3Nvci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+Ci1iYXNpY196bGliX2NvbXByZXNzb3I8QWxsb2M+OjpiYXNpY196bGliX2NvbXByZXNzb3IKLSAgICAoY29uc3QgemxpYl9wYXJhbXMmIHAsIGludCBidWZmZXJfc2l6ZSkgCi0gICAgOiBiYXNlX3R5cGUoYnVmZmVyX3NpemUsIHApIHsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLUltcGxlbWVudGF0aW9uIG9mIHpsaWJfZGVjb21wcmVzc29yLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLWJhc2ljX3psaWJfZGVjb21wcmVzc29yPEFsbG9jPjo6YmFzaWNfemxpYl9kZWNvbXByZXNzb3IKLSAgICAoaW50IHdpbmRvd19iaXRzLCBpbnQgYnVmZmVyX3NpemUpIAotICAgIDogYmFzZV90eXBlKGJ1ZmZlcl9zaXplLCB3aW5kb3dfYml0cykgeyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotYmFzaWNfemxpYl9kZWNvbXByZXNzb3I8QWxsb2M+OjpiYXNpY196bGliX2RlY29tcHJlc3NvcgotICAgIChjb25zdCB6bGliX3BhcmFtcyYgcCwgaW50IGJ1ZmZlcl9zaXplKSAKLSAgICA6IGJhc2VfdHlwZShidWZmZXJfc2l6ZSwgcCkgeyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2FiaV9zdWZmaXguaHBwPiAvLyBQb3BzIGFiaV9zdWZmaXguaHBwIHByYWdtYXMuCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1pMSUJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXJpbmdfc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDA4NWExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxURVJfU1RSRUFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfRklMVEVSX1NUUkVBTV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYWNjZXNzX2NvbnRyb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zdHJlYW0uaHBwPiAgICAgICAgLy8gc3RhbmRhcmQgc3RyZWFtcy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc2VsZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+ICAgICAgIC8vIHB1YnN5bmMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIGZpbHRlcmVkX2lzdHJlYW0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHI+Ci1zdHJ1Y3QgZmlsdGVyaW5nX3N0cmVhbV90cmFpdHMgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBpb3N0cmVhbXM6OnNlbGVjdDwgIC8vIERpc2FtYmlndWF0aW9uIGZvciBUcnU2NCAgCi0gICAgICAgICAgICAgICAgbXBsOjphbmRfPCAKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgaW5wdXQ+LCAKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0PiAKLSAgICAgICAgICAgICAgICA+LCAgICAgICAgICAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfSU9TVFJFQU0oQ2gsIFRyKSwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxNb2RlLCBpbnB1dD4sIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JU1RSRUFNKENoLCBUciksCi0gICAgICAgICAgICAgICAgZWxzZV8sICAgICAgICAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQkFTSUNfT1NUUkVBTShDaCwgVHIpCi0gICAgICAgICAgICA+Ojp0eXBlIHN0cmVhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAvLyBEaXNtYmlndWF0aW9uIHJlcXVpcmVkIGZvciBUcnU2NC4KLSAgICAgICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8TW9kZSwgb3V0cHV0PgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPE1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICBpc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICBvc3RyZWFtX3RhZwotICAgICAgICAgICAgPjo6dHlwZSBzdHJlYW1fdGFnOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhaW4sIHR5cGVuYW1lIEFjY2Vzcz4KLWNsYXNzIGZpbHRlcmluZ19zdHJlYW1fYmFzZSAKLSAgICA6IHB1YmxpYyBhY2Nlc3NfY29udHJvbDwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbl9jbGllbnQ8Q2hhaW4+LAotICAgICAgICAgICAgICAgICBBY2Nlc3MKLSAgICAgICAgICAgICA+LAotICAgICAgcHVibGljIGZpbHRlcmluZ19zdHJlYW1fdHJhaXRzPAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6bW9kZSwgCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjpjaGFyX3R5cGUsIAotICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDaGFpbjo6dHJhaXRzX3R5cGUKLSAgICAgICAgICAgICA+OjpzdHJlYW1fdHlwZQotewotcHVibGljOgotICAgIHR5cGVkZWYgQ2hhaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWluX3R5cGU7Ci0gICAgdHlwZWRlZiBhY2Nlc3NfY29udHJvbDwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZGV0YWlsOjpjaGFpbl9jbGllbnQ8Q2hhaW4+LAotICAgICAgICAgICAgICAgICBBY2Nlc3MKLSAgICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfdHlwZTsKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgZmlsdGVyaW5nX3N0cmVhbV90cmFpdHM8Ci0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjptb2RlLCAKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2hhaW46OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgIHR5cGVuYW1lIENoYWluOjp0cmFpdHNfdHlwZQotICAgICAgICAgICAgPjo6c3RyZWFtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV90eXBlOwotICAgIGZpbHRlcmluZ19zdHJlYW1fYmFzZSgpIDogc3RyZWFtX3R5cGUoMCkgeyB0aGlzLT5zZXRfY2hhaW4oJmNoYWluXyk7IH0KLXByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnkoKSB7IHRoaXMtPnJkYnVmKGNoYWluXy5lbXB0eSgpID8gMCA6ICZjaGFpbl8uZnJvbnQoKSk7IH0KLSAgICBDaGFpbiBjaGFpbl87Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi0vLwotLy8gTWFjcm86IE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRklMVEVSX1NUUkVBTShuYW1lXywgY2hhaW5fdHlwZV8sIGRlZmF1bHRfY2hhcl8pCi0vLyBEZXNjcmlwdGlvbjogRGVmaW5lcyBhIHRlbXBsYXRlIGRlcml2ZWQgZnJvbSBzdGQ6OmJhc2ljX3N0cmVhbWJ1ZiB3aGljaCB1c2VzCi0vLyAgICAgIGEgY2hhaW4gdG8gcGVyZm9ybSBpL28uIFRoZSB0ZW1wbGF0ZSBoYXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotLy8gICAgICBNb2RlIC0gdGhlIGkvbyBtb2RlLgotLy8gICAgICBDaCAtIFRoZSBjaGFyYWN0ZXIgdHlwZS4KLS8vICAgICAgVHIgLSBUaGUgY2hhcmFjdGVyIHRyYWl0cyB0eXBlLgotLy8gICAgICBBbGxvYyAtIFRoZSBhbGxvY2F0b3IgdHlwZS4KLS8vICAgICAgQWNjZXNzIC0gSW5kaWNhdGVzIGFjY2Vzc2liaWxpdHkgb2YgdGhlIGNoYWluIGludGVyZmFjZTsgbXVzdCBiZSBlaXRoZXIKLS8vICAgICAgICAgIHB1YmxpY18gb3IgcHJvdGVjdGVkXzsgZGVmYXVsdHMgdG8gcHVibGljXy4KLS8vIE1hY3JvIHBhcmFtZXRlcnM6Ci0vLyAgICAgIG5hbWVfIC0gVGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIHRvIGJlIGRlZmluZWQuCi0vLyAgICAgIGNoYWluX3R5cGVfIC0gVGhlIG5hbWUgb2YgdGhlIGNoYWluIHRlbXBsYXRlLgotLy8gICAgICBkZWZhdWx0X2NoYXJfIC0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjaGFyIHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfRklMVEVSX1NUUkVBTShuYW1lXywgY2hhaW5fdHlwZV8sIGRlZmF1bHRfY2hhcl8pIFwKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBDaCA9IGRlZmF1bHRfY2hhcl8sIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVHIgPSBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoQ2gpLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIEFsbG9jID0gc3RkOjphbGxvY2F0b3I8Q2g+LCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIEFjY2VzcyA9IHB1YmxpY18gPiBcCi0gICAgY2xhc3MgbmFtZV8gXAotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OmZpbHRlcmluZ19zdHJlYW1fYmFzZTwgXAotICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHlwZV88TW9kZSwgQ2gsIFRyLCBBbGxvYz4sIEFjY2VzcyBcCi0gICAgICAgICAgICAgICAgID4gXAotICAgIHsgXAotICAgIHB1YmxpYzogXAotICAgICAgICB0eXBlZGVmIENoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7IFwKLSAgICAgICAgc3RydWN0IGNhdGVnb3J5IFwKLSAgICAgICAgICAgIDogTW9kZSwgXAotICAgICAgICAgICAgICBjbG9zYWJsZV90YWcsIFwKLSAgICAgICAgICAgICAgZGV0YWlsOjpmaWx0ZXJpbmdfc3RyZWFtX3RyYWl0czxNb2RlLCBDaCwgVHI+OjpzdHJlYW1fdGFnIFwKLSAgICAgICAgICAgIHsgfTsgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKSBcCi0gICAgICAgIHR5cGVkZWYgTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7IFwKLSAgICAgICAgdHlwZWRlZiBjaGFpbl90eXBlXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiAgY2hhaW5fdHlwZTsgXAotICAgICAgICBuYW1lXygpIHsgfSBcCi0gICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19ERUZJTkVfUFVTSF9DT05TVFJVQ1RPUihuYW1lXywgbW9kZSwgQ2gsIHB1c2hfaW1wbCkgXAotICAgICAgICB+bmFtZV8oKSB7IFwKLSAgICAgICAgICAgIGlmICh0aGlzLT5pc19jb21wbGV0ZSgpKSBcCi0gICAgICAgICAgICAgICAgIHRoaXMtPnJkYnVmKCktPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7IFwKLSAgICAgICAgfSBcCi0gICAgcHJpdmF0ZTogXAotICAgICAgICB0eXBlZGVmIGFjY2Vzc19jb250cm9sPCBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2hhaW5fY2xpZW50PCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFpbl90eXBlXzxNb2RlLCBDaCwgVHIsIEFsbG9jPiBcCi0gICAgICAgICAgICAgICAgICAgID4sIFwKLSAgICAgICAgICAgICAgICAgICAgQWNjZXNzIFwKLSAgICAgICAgICAgICAgICA+IGNsaWVudF90eXBlOyBcCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFwKLSAgICAgICAgdm9pZCBwdXNoX2ltcGwoY29uc3QgVCYgdCBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMoKSkgXAotICAgICAgICB7IGNsaWVudF90eXBlOjpwdXNoKHQgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfQVJHUygpKTsgfSBcCi0gICAgfTsgXAotICAgIC8qKi8gICAgCi1ORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU0oZmlsdGVyaW5nX3N0cmVhbSwgbmRuYm9vc3Q6Omlvc3RyZWFtczo6Y2hhaW4sIGNoYXIpCi1ORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU0od2ZpbHRlcmluZ19zdHJlYW0sIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNoYWluLCB3Y2hhcl90KQotCi10eXBlZGVmIGZpbHRlcmluZ19zdHJlYW08aW5wdXQ+ICAgIGZpbHRlcmluZ19pc3RyZWFtOwotdHlwZWRlZiBmaWx0ZXJpbmdfc3RyZWFtPG91dHB1dD4gICBmaWx0ZXJpbmdfb3N0cmVhbTsKLXR5cGVkZWYgd2ZpbHRlcmluZ19zdHJlYW08aW5wdXQ+ICAgZmlsdGVyaW5nX3dpc3RyZWFtOwotdHlwZWRlZiB3ZmlsdGVyaW5nX3N0cmVhbTxvdXRwdXQ+ICBmaWx0ZXJpbmdfd29zdHJlYW07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlIGlvc3RyZWFtcywgYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+IC8vIE1TVkMKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUl9TVFJFQU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9maWx0ZXJpbmdfc3RyZWFtYnVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW1idWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTRmZDNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ZpbHRlcmluZ19zdHJlYW1idWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUklOR19TVFJFQU1CVUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19GSUxURVJJTkdfU1RSRUFNQlVGX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdG9yLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9jaGFpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hY2Nlc3NfY29udHJvbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+IC8vIHB1YnN5bmMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvY2hhaW5idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+ICAgICAgICAgICAgICAgICAgICAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBNYWNybzogTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJCVUYobmFtZV8sIGNoYWluX3R5cGVfLCBkZWZhdWx0X2NoYXJfKQotLy8gRGVzY3JpcHRpb246IERlZmluZXMgYSB0ZW1wbGF0ZSBkZXJpdmVkIGZyb20gc3RkOjpiYXNpY19zdHJlYW1idWYgd2hpY2ggdXNlcwotLy8gICAgICBhIGNoYWluIHRvIHBlcmZvcm0gaS9vLiBUaGUgdGVtcGxhdGUgaGFzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKLS8vICAgICAgQ2ggLSBUaGUgY2hhcmFjdGVyIHR5cGUuCi0vLyAgICAgIFRyIC0gVGhlIGNoYXJhY3RlciB0cmFpdHMgdHlwZS4KLS8vICAgICAgQWxsb2MgLSBUaGUgYWxsb2NhdG9yIHR5cGUuCi0vLyAgICAgIEFjY2VzcyAtIEluZGljYXRlcyBhY2Nlc3NpYmlsaXR5IG9mIHRoZSBjaGFpbiBpbnRlcmZhY2U7IG11c3QgYmUgZWl0aGVyCi0vLyAgICAgICAgICBwdWJsaWNfIG9yIHByb3RlY3RlZF87IGRlZmF1bHRzIHRvIHB1YmxpY18uCi0vLwotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZJTFRFUl9TVFJFQU1CVUYobmFtZV8sIGNoYWluX3R5cGVfLCBkZWZhdWx0X2NoYXJfKSBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE1vZGUsIFwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQ2ggPSBkZWZhdWx0X2NoYXJfLCBcCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFRyID0gTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKENoKSwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9IHN0ZDo6YWxsb2NhdG9yPENoPiwgXAotICAgICAgICAgICAgICB0eXBlbmFtZSBBY2Nlc3MgPSBwdWJsaWNfID4gXAotICAgIGNsYXNzIG5hbWVfIDogcHVibGljIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6Y2hhaW5idWY8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW5fdHlwZV88TW9kZSwgQ2gsIFRyLCBBbGxvYz4sIE1vZGUsIEFjY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgPiBcCi0gICAgeyBcCi0gICAgcHVibGljOiBcCi0gICAgICAgIHR5cGVkZWYgQ2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7IFwKLSAgICAgICAgc3RydWN0IGNhdGVnb3J5IFwKLSAgICAgICAgICAgIDogTW9kZSwgY2xvc2FibGVfdGFnLCBzdHJlYW1idWZfdGFnIFwKLSAgICAgICAgICAgIHsgfTsgXAotICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKSBcCi0gICAgICAgIHR5cGVkZWYgTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOyBcCi0gICAgICAgIHR5cGVkZWYgY2hhaW5fdHlwZV88TW9kZSwgQ2gsIFRyLCBBbGxvYz4gICAgICAgICAgICAgICBjaGFpbl90eXBlOyBcCi0gICAgICAgIG5hbWVfKCkgeyB9IFwKLSAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9QVVNIX0NPTlNUUlVDVE9SKG5hbWVfLCBtb2RlLCBDaCwgcHVzaF9pbXBsKSBcCi0gICAgICAgIH5uYW1lXygpIHsgaWYgKHRoaXMtPmlzX2NvbXBsZXRlKCkpIHRoaXMtPk5ETkJPT1NUX0lPU1RSRUFNU19QVUJTWU5DKCk7IH0gXAotICAgIH07IFwKLSAgICAvKiovIAotTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJfU1RSRUFNQlVGKGZpbHRlcmluZ19zdHJlYW1idWYsIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmNoYWluLCBjaGFyKQotTkROQk9PU1RfSU9TVFJFQU1TX0RFRklORV9GSUxURVJfU1RSRUFNQlVGKGZpbHRlcmluZ193c3RyZWFtYnVmLCBuZG5ib29zdDo6aW9zdHJlYW1zOjpjaGFpbiwgd2NoYXJfdCkKLQotdHlwZWRlZiBmaWx0ZXJpbmdfc3RyZWFtYnVmPGlucHV0PiAgICBmaWx0ZXJpbmdfaXN0cmVhbWJ1ZjsKLXR5cGVkZWYgZmlsdGVyaW5nX3N0cmVhbWJ1ZjxvdXRwdXQ+ICAgZmlsdGVyaW5nX29zdHJlYW1idWY7Ci10eXBlZGVmIGZpbHRlcmluZ193c3RyZWFtYnVmPGlucHV0PiAgIGZpbHRlcmluZ193aXN0cmVhbWJ1ZjsKLXR5cGVkZWYgZmlsdGVyaW5nX3dzdHJlYW1idWY8b3V0cHV0PiAgZmlsdGVyaW5nX3dvc3RyZWFtYnVmOwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0ZJTFRFUklOR19TVFJFQU1CVUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9mbHVzaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMGRmNjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZmx1c2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19GTFVTSF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0ZMVVNIX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Rpc3BhdGNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGZsdXNoX2RldmljZV9pbXBsOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGZsdXNoX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBmbHVzaChUJiB0KQoteyByZXR1cm4gZGV0YWlsOjpmbHVzaF9kZXZpY2VfaW1wbDxUPjo6Zmx1c2goZGV0YWlsOjp1bndyYXAodCkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci1ib29sIGZsdXNoKFQmIHQsIFNpbmsmIHNuaykKLXsgcmV0dXJuIGRldGFpbDo6Zmx1c2hfZmlsdGVyX2ltcGw8VD46OmZsdXNoKGRldGFpbDo6dW53cmFwKHQpLCBzbmspOyB9Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgZmx1c2hfZGV2aWNlX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGZsdXNoX2RldmljZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBmbHVzaF9kZXZpY2VfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG9zdHJlYW1fdGFnLCBzdHJlYW1idWZfdGFnLCBmbHVzaGFibGVfdGFnLCBhbnlfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGw8b3N0cmVhbV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIGZsdXNoKFQmIHQpCi0gICAgeyByZXR1cm4gdC5yZGJ1ZigpLT5ORE5CT09TVF9JT1NUUkVBTVNfUFVCU1lOQygpID09IDA7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmbHVzaF9kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBmbHVzaChUJiB0KQotICAgIHsgcmV0dXJuIHQuTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNZTkMoKSA9PSAwOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGw8Zmx1c2hhYmxlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYgdCkgeyByZXR1cm4gdC5mbHVzaCgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZGV2aWNlX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYpIHsgcmV0dXJuIHRydWU7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBmbHVzaF9maWx0ZXJfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZmx1c2hfZmlsdGVyX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIGZsdXNoX2ZpbHRlcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgZmx1c2hhYmxlX3RhZywgYW55X3RhZwotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZsdXNoX2ZpbHRlcl9pbXBsPGZsdXNoYWJsZV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyBib29sIGZsdXNoKFQmIHQsIFNpbmsmIHNuaykgeyByZXR1cm4gdC5mbHVzaChzbmspOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmx1c2hfZmlsdGVyX2ltcGw8YW55X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIGJvb2wgZmx1c2goVCYsIFNpbmsmKSB7IHJldHVybiBmYWxzZTsgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfRkxVU0hfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9nZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvZ2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmOGY3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9nZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0dFVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0dFVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19HRVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbWJ1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbWJ1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlOWZmYjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW1idWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lNQlVFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU1CVUVfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIERFRFVDRURfVFlQRU5BTUUsIE1TVkMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBJbXBsZW1lbnRhdGlvbiB0ZW1wbGF0ZXMgZm9yIHNpbXVsYXRlZCB0YWcgZGlzcGF0Y2guCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKLXN0cnVjdCBpbWJ1ZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2NhbGU+Ci12b2lkIGltYnVlKFQmIHQsIGNvbnN0IExvY2FsZSYgbG9jKQoteyBkZXRhaWw6OmltYnVlX2ltcGw8VD46OmltYnVlKGRldGFpbDo6dW53cmFwKHQpLCBsb2MpOyB9Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgaW1idWVfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGltYnVlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIGltYnVlX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBzdHJlYW1idWZfdGFnLCBsb2NhbGl6YWJsZV90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbWJ1ZV9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2NhbGU+Ci0gICAgc3RhdGljIHZvaWQgaW1idWUoVCYsIGNvbnN0IExvY2FsZSYpIHsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGltYnVlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIExvY2FsZT4KLSAgICBzdGF0aWMgdm9pZCBpbWJ1ZShUJiB0LCBjb25zdCBMb2NhbGUmIGxvYykgeyB0LnB1YmltYnVlKGxvYyk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbWJ1ZV9pbXBsPGxvY2FsaXphYmxlX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIExvY2FsZT4KLSAgICBzdGF0aWMgdm9pZCBpbWJ1ZShUJiB0LCBjb25zdCBMb2NhbGUmIGxvYykgeyB0LmltYnVlKGxvYyk7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lNQlVFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW5wdXRfc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvaW5wdXRfc2VxdWVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTUwYzZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2lucHV0X3NlcXVlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JTlBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0lOUFVUX1NFUVVFTkNFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPHV0aWxpdHk+ICAgICAgICAgICAvLyBwYWlyLgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3BlcmF0aW9uc19md2QuaHBwPiAgLy8gaXNfY3VzdG9tIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW5wdXRfc2VxdWVuY2VfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnBhaXI8Ci0gICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqLAotICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKgotPgotaW5wdXRfc2VxdWVuY2UoVCYgdCkKLXsgcmV0dXJuIGRldGFpbDo6aW5wdXRfc2VxdWVuY2VfaW1wbDxUPjo6aW5wdXRfc2VxdWVuY2UodCk7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBkaXJlY3RfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlucHV0X3NlcXVlbmNlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGRldGFpbDo6aXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgaW5wdXRfc2VxdWVuY2VfaW1wbDxkaXJlY3RfdGFnPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlucHV0X3NlcXVlbmNlX2ltcGw8ZGlyZWN0X3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIHN0ZDo6cGFpcjwKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VT46OnR5cGUqLAotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxVPjo6dHlwZSoKLSAgICA+Ci0gICAgaW5wdXRfc2VxdWVuY2UoVSYgdSkgeyByZXR1cm4gdS5pbnB1dF9zZXF1ZW5jZSgpOyB9Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JTlBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ludmVydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9pbnZlcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjBlNWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL2ludmVydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0lOVkVSVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX0lOVkVSVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcHksIG1pbi4gIAotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgICAgICAgICAgICAgICAgICAgLy8gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRS4gICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPiAgICAgICAgICAgLy8gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY29tcG9zZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9idWZmZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY291bnRlZF9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9leGVjdXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Z1bmN0aW9uYWwuaHBwPiAvLyBjbGVhcl9mbGFncywgY2FsbF9yZXNldAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLS8vIE11c3QgY29tZSBsYXN0LgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2Rpc2FibGVfd2FybmluZ3MuaHBwPiAgLy8gTVNWQy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBpbnZlcnNlLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRmlsdGVyIC0gQSBtb2RlbCBvZiBJbnB1dEZpbHRlciBvciBPdXRwdXRGaWx0ZXIuCi0vLyBEZXNjcmlwdGlvbjogR2VuZXJhdGVzIGFuIElucHV0RmlsdGVyIGZyb20gYW4gT3V0cHV0RmlsdGVyIG9yCi0vLyAgICAgIHZpY2UgdmVyc2EuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotY2xhc3MgaW52ZXJzZSB7Ci1wcml2YXRlOgotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZmlsdGVyPEZpbHRlcj46OnZhbHVlKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPEZpbHRlcj46OnR5cGUgICBiYXNlX2NhdGVnb3J5OwotICAgIHR5cGVkZWYgcmVmZXJlbmNlX3dyYXBwZXI8RmlsdGVyPiAgICAgICAgICAgIGZpbHRlcl9yZWY7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RmlsdGVyPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50X3R5cGVfb2Y8RmlsdGVyPjo6dHlwZSAgIGludF90eXBlOwotICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgICAgICAgICAgICAgIHRyYWl0c190eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICAgICAgYmFzZV9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgaW5wdXQKLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIG91dHB1dCwKLSAgICAgICAgICAgICAgICBpbnB1dAotICAgICAgICAgICAgPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU7Ci0gICAgc3RydWN0IGNhdGVnb3J5IAotICAgICAgICA6IG1vZGUsIAotICAgICAgICAgIGZpbHRlcl90YWcsIAotICAgICAgICAgIG11bHRpY2hhcl90YWcsIAotICAgICAgICAgIGNsb3NhYmxlX3RhZyAKLSAgICAgICAgeyB9OwotICAgIGV4cGxpY2l0IGludmVyc2UoIGNvbnN0IEZpbHRlciYgZmlsdGVyLCAKLSAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgYnVmZmVyX3NpemUgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemUpIAotICAgICAgICA6IHBpbXBsXyhuZXcgaW1wbChmaWx0ZXIsIGJ1ZmZlcl9zaXplKSkKLSAgICAgICAgeyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoU291cmNlJiBzcmMsIGNoYXIqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmNvdW50ZWRfYXJyYXlfc2luazxjaGFyX3R5cGU+ICBhcnJheV9zaW5rOwotICAgICAgICB0eXBlZGVmIGNvbXBvc2l0ZTxmaWx0ZXJfcmVmLCBhcnJheV9zaW5rPiAgICAgIGZpbHRlcmVkX2FycmF5X3Npbms7Ci0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKChmbGFncygpICYgZl93cml0ZSkgPT0gMCk7Ci0gICAgICAgIGlmIChmbGFncygpID09IDApIHsKLSAgICAgICAgICAgIGZsYWdzKCkgPSBmX3JlYWQ7Ci0gICAgICAgICAgICBidWYoKS5zZXQoMCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmaWx0ZXJlZF9hcnJheV9zaW5rIHNuayhmaWx0ZXIoKSwgYXJyYXlfc2luayhzLCBuKSk7Ci0gICAgICAgIGludF90eXBlIHN0YXR1czsKLSAgICAgICAgZm9yICggc3RhdHVzID0gdHJhaXRzX3R5cGU6Omdvb2QoKTsKLSAgICAgICAgICAgICAgc25rLnNlY29uZCgpLmNvdW50KCkgPCBuICYmIHN0YXR1cyA9PSB0cmFpdHNfdHlwZTo6Z29vZCgpOyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IGJ1ZigpLmZpbGwoc3JjKTsKLSAgICAgICAgICAgIGJ1ZigpLmZsdXNoKHNuayk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNuay5zZWNvbmQoKS5jb3VudCgpID09IDAgJiYKLSAgICAgICAgICAgICAgIHN0YXR1cyA9PSB0cmFpdHNfdHlwZTo6ZW9mKCkgCi0gICAgICAgICAgICAgICAgICAgPyAKLSAgICAgICAgICAgICAgIC0xCi0gICAgICAgICAgICAgICAgICAgOiAKLSAgICAgICAgICAgICAgIHNuay5zZWNvbmQoKS5jb3VudCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgc3RkOjpzdHJlYW1zaXplIHdyaXRlKFNpbmsmIGRlc3QsIGNvbnN0IGNoYXIqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmNvdW50ZWRfYXJyYXlfc291cmNlPGNoYXJfdHlwZT4gIGFycmF5X3NvdXJjZTsKLSAgICAgICAgdHlwZWRlZiBjb21wb3NpdGU8ZmlsdGVyX3JlZiwgYXJyYXlfc291cmNlPiAgICAgIGZpbHRlcmVkX2FycmF5X3NvdXJjZTsKLQotICAgICAgICBORE5CT09TVF9BU1NFUlQoKGZsYWdzKCkgJiBmX3JlYWQpID09IDApOwotICAgICAgICBpZiAoZmxhZ3MoKSA9PSAwKSB7Ci0gICAgICAgICAgICBmbGFncygpID0gZl93cml0ZTsKLSAgICAgICAgICAgIGJ1ZigpLnNldCgwLCAwKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZmlsdGVyZWRfYXJyYXlfc291cmNlIHNyYyhmaWx0ZXIoKSwgYXJyYXlfc291cmNlKHMsIG4pKTsKLSAgICAgICAgZm9yIChib29sIGdvb2QgPSB0cnVlOyBzcmMuc2Vjb25kKCkuY291bnQoKSA8IG4gJiYgZ29vZDsgKSB7Ci0gICAgICAgICAgICBidWYoKS5maWxsKHNyYyk7Ci0gICAgICAgICAgICBnb29kID0gYnVmKCkuZmx1c2goZGVzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNyYy5zZWNvbmQoKS5jb3VudCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLSAgICB2b2lkIGNsb3NlKERldmljZSYgZGV2KQotICAgIHsKLSAgICAgICAgZGV0YWlsOjpleGVjdXRlX2FsbCgKLSAgICAgICAgICAgIGRldGFpbDo6Zmx1c2hfYnVmZmVyKGJ1ZigpLCBkZXYsIChmbGFncygpICYgZl93cml0ZSkgIT0gMCksCi0gICAgICAgICAgICBkZXRhaWw6OmNhbGxfY2xvc2VfYWxsKHBpbXBsXy0+ZmlsdGVyXywgZGV2KSwKLSAgICAgICAgICAgIGRldGFpbDo6Y2xlYXJfZmxhZ3MoZmxhZ3MoKSkKLSAgICAgICAgKTsKLSAgICB9Ci1wcml2YXRlOgotICAgIGZpbHRlcl9yZWYgZmlsdGVyKCkgeyByZXR1cm4gbmRuYm9vc3Q6OnJlZihwaW1wbF8tPmZpbHRlcl8pOyB9Ci0gICAgZGV0YWlsOjpidWZmZXI8Y2hhcl90eXBlPiYgYnVmKCkgeyByZXR1cm4gcGltcGxfLT5idWZfOyB9Ci0gICAgaW50JiBmbGFncygpIHsgcmV0dXJuIHBpbXBsXy0+ZmxhZ3NfOyB9Ci0gICAgCi0gICAgZW51bSBmbGFnc18gewotICAgICAgICBmX3JlYWQgPSAxLCBmX3dyaXRlID0gMgotICAgIH07Ci0KLSAgICBzdHJ1Y3QgaW1wbCB7Ci0gICAgICAgIGltcGwoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIHN0ZDo6c3RyZWFtc2l6ZSBuKSAKLSAgICAgICAgICAgIDogZmlsdGVyXyhmaWx0ZXIpLCBidWZfKG4pLCBmbGFnc18oMCkKLSAgICAgICAgeyBidWZfLnNldCgwLCAwKTsgfQotICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfOwotICAgICAgICBkZXRhaWw6OmJ1ZmZlcjxjaGFyX3R5cGU+ICBidWZfOwotICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc187Ci0gICAgfTsKLSAgICBzaGFyZWRfcHRyPGltcGw+IHBpbXBsXzsKLX07Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBpbnZlcnQuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBGaWx0ZXIgLSBBIG1vZGVsIG9mIElucHV0RmlsdGVyIG9yIE91dHB1dEZpbHRlci4KLS8vIERlc2NyaXB0aW9uOiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIGFuIGFwcHJvcHJpYXRlIHNwZWNpYWxpemF0aW9uIG9mIGludmVyc2UuCi0vLwotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyPgotaW52ZXJzZTxGaWx0ZXI+IGludmVydChjb25zdCBGaWx0ZXImIGYpIHsgcmV0dXJuIGludmVyc2U8RmlsdGVyPihmKTsgfQotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JTlZFUlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjExZGVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09QRVJBVElPTlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19PUEVSQVRJT05TX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2Nsb3NlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZmx1c2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9pbWJ1ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2lucHV0X3NlcXVlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvb3B0aW1hbF9idWZmZXJfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL291dHB1dF9zZXF1ZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3JlYWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9zZWVrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BFUkFUSU9OU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVlNzk5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BFUkFUSU9OU19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19PUEVSQVRJT05TX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3BlcmF0aW9uczsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBjdXN0b21fdGFnIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jdXN0b20KLSAgICA6IG1wbDo6bm90XzwKLSAgICAgICAgICBpc19iYXNlX2FuZF9kZXJpdmVkPCBjdXN0b21fdGFnLCBvcGVyYXRpb25zPFQ+ID4KLSAgICAgID4KLSAgICB7IH07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3BlcmF0aW9ucyA6IGRldGFpbDo6Y3VzdG9tX3RhZyB7IH07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfT1BFUkFUSU9OU19GV0RfSFBQX0lOQ0xVREVEIC8vLS0tLS0tLS0tLS0tLS0vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3B0aW1hbF9idWZmZXJfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcHRpbWFsX2J1ZmZlcl9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRmNGE4MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vcHRpbWFsX2J1ZmZlcl9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19PUFRJTUFMX0JVRkZFUl9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfT1BUSU1BTF9CVUZGRVJfU0laRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+ICAvLyBjb25zdGFudHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9kaXNwYXRjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IG9wdGltYWxfYnVmZmVyX3NpemVfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0ZDo6c3RyZWFtc2l6ZSBvcHRpbWFsX2J1ZmZlcl9zaXplKGNvbnN0IFQmIHQpCi17Ci0gICAgdHlwZWRlZiBkZXRhaWw6Om9wdGltYWxfYnVmZmVyX3NpemVfaW1wbDxUPiBpbXBsOwotICAgIHJldHVybiBpbXBsOjpvcHRpbWFsX2J1ZmZlcl9zaXplKGRldGFpbDo6dW53cmFwKHQpKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBvcHRpbWFsX2J1ZmZlcl9zaXplX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBpc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBvcHRpbWFsX2J1ZmZlcl9zaXplX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBvcHRpbWFsbHlfYnVmZmVyZWRfdGFnLCBkZXZpY2VfdGFnLCBmaWx0ZXJfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsPG9wdGltYWxseV9idWZmZXJlZF90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZShjb25zdCBUJiB0KQotICAgIHsgcmV0dXJuIHQub3B0aW1hbF9idWZmZXJfc2l6ZSgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3B0aW1hbF9idWZmZXJfc2l6ZV9pbXBsPGRldmljZV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgb3B0aW1hbF9idWZmZXJfc2l6ZShjb25zdCBUJikKLSAgICB7IHJldHVybiBkZWZhdWx0X2RldmljZV9idWZmZXJfc2l6ZTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9wdGltYWxfYnVmZmVyX3NpemVfaW1wbDxmaWx0ZXJfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoY29uc3QgVCYpCi0gICAgeyByZXR1cm4gZGVmYXVsdF9maWx0ZXJfYnVmZmVyX3NpemU7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09QVElNQUxfQlVGRkVSX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vdXRwdXRfc2VxdWVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvb3V0cHV0X3NlcXVlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEwZTUyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9vdXRwdXRfc2VxdWVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX09VVFBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX09VVFBVVF9TRVFVRU5DRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgICAgICAgLy8gcGFpci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC93cmFwX3Vud3JhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnNfZndkLmhwcD4gIC8vIGlzX2N1c3RvbSAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IG91dHB1dF9zZXF1ZW5jZV9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHN0ZDo6cGFpcjwKLSAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSosCi0gICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqCi0+Ci1vdXRwdXRfc2VxdWVuY2UoVCYgdCkKLXsgcmV0dXJuIGRldGFpbDo6b3V0cHV0X3NlcXVlbmNlX2ltcGw8VD46Om91dHB1dF9zZXF1ZW5jZSh0KTsgfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG91dHB1dF9zZXF1ZW5jZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBvdXRwdXRfc2VxdWVuY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICBvdXRwdXRfc2VxdWVuY2VfaW1wbDxkaXJlY3RfdGFnPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG91dHB1dF9zZXF1ZW5jZV9pbXBsPGRpcmVjdF90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0YXRpYyBzdGQ6OnBhaXI8Ci0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFU+Ojp0eXBlKiwKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VT46OnR5cGUqCi0gICAgPgotICAgIG91dHB1dF9zZXF1ZW5jZShVJiB1KSB7IHJldHVybiB1Lm91dHB1dF9zZXF1ZW5jZSgpOyB9Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19PVVRQVVRfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9waXBlbGluZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NWQzYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QSVBBQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4gICAgICAgICAgIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdGVtcGxhdGVfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2VfYW5kX2Rlcml2ZWQuaHBwPgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUoZmlsdGVyLCBhcml0eSkgXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhhcml0eSwgdHlwZW5hbWUgVCkgXAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihhcml0eSkgdHlwZW5hbWUgQ29tcG9uZW50PiBcCi0gICAgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpwaXBlbGluZTwgXAotICAgICAgICA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OmRldGFpbDo6cGlwZWxpbmVfc2VnbWVudDwgXAotICAgICAgICAgICAgZmlsdGVyIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBUKSBcCi0gICAgICAgID4sIFwKLSAgICAgICAgQ29tcG9uZW50IFwKLSAgICA+IG9wZXJhdG9yfCggY29uc3QgZmlsdGVyIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBUKSYgZiwgXAotICAgICAgICAgICAgICAgICBjb25zdCBDb21wb25lbnQmIGMgKSBcCi0gICAgeyBcCi0gICAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6aW9zdHJlYW1zOjpkZXRhaWw6OnBpcGVsaW5lX3NlZ21lbnQ8IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsdGVyIE5ETkJPT1NUX0lPU1RSRUFNU19URU1QTEFURV9BUkdTKGFyaXR5LCBUKSBcCi0gICAgICAgICAgICAgICAgPiBzZWdtZW50OyBcCi0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0Ojppb3N0cmVhbXM6OnBpcGVsaW5lPHNlZ21lbnQsIENvbXBvbmVudD4gXAotICAgICAgICAgICAgICAgICAgIChzZWdtZW50KGYpLCBjKTsgXAotICAgIH0gXAotICAgIC8qKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFBpcGVsaW5lLCB0eXBlbmFtZSBDb21wb25lbnQ+Ci1zdHJ1Y3QgcGlwZWxpbmU7Ci0gICAgCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgCi0gICAgc3RydWN0IHBpcGVsaW5lX2Jhc2UgeyB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaXNfcGlwZWxpbmUgCi0gICAgICAgIDogaXNfYmFzZV9hbmRfZGVyaXZlZDxwaXBlbGluZV9iYXNlLCBUPgotICAgICAgICB7IH07Ci0jZW5kaWYgCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaXNfcGlwZWxpbmUgOiBtcGw6OmZhbHNlXyB7IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgQ29tcG9uZW50PgotICAgIHN0cnVjdCBpc19waXBlbGluZTwgcGlwZWxpbmU8UGlwZWxpbmUsIENvbXBvbmVudD4gPiA6IG1wbDo6dHJ1ZV8geyB9OwotI2VuZGlmCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENvbXBvbmVudD4KLWNsYXNzIHBpcGVsaW5lX3NlZ21lbnQgCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIDogcGlwZWxpbmVfYmFzZSAKLSNlbmRpZiAKLXsKLXB1YmxpYzoKLSAgICBwaXBlbGluZV9zZWdtZW50KGNvbnN0IENvbXBvbmVudCYgY29tcG9uZW50KSAKLSAgICAgICAgOiBjb21wb25lbnRfKGNvbXBvbmVudCkgCi0gICAgICAgIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZuPgotICAgIHZvaWQgZm9yX2VhY2goRm4gZm4pIGNvbnN0IHsgZm4oY29tcG9uZW50Xyk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFpbj4KLSAgICB2b2lkIHB1c2goQ2hhaW4mIGNobikgY29uc3QgeyBjaG4ucHVzaChjb21wb25lbnRfKTsgfQotcHJpdmF0ZToKLSAgICBwaXBlbGluZV9zZWdtZW50IG9wZXJhdG9yPShjb25zdCBwaXBlbGluZV9zZWdtZW50Jik7Ci0gICAgY29uc3QgQ29tcG9uZW50JiBjb21wb25lbnRfOwotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgUGlwZWxpbmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgQ29tcG9uZW50Pgotc3RydWN0IHBpcGVsaW5lIDogUGlwZWxpbmUgewotICAgIHR5cGVkZWYgUGlwZWxpbmUgICBwaXBlbGluZV90eXBlOwotICAgIHR5cGVkZWYgQ29tcG9uZW50ICBjb21wb25lbnRfdHlwZTsKLSAgICBwaXBlbGluZShjb25zdCBQaXBlbGluZSYgcCwgY29uc3QgQ29tcG9uZW50JiBjb21wb25lbnQpCi0gICAgICAgIDogUGlwZWxpbmUocCksIGNvbXBvbmVudF8oY29tcG9uZW50KQotICAgICAgICB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGbj4KLSAgICB2b2lkIGZvcl9lYWNoKEZuIGZuKSBjb25zdAotICAgIHsKLSAgICAgICAgUGlwZWxpbmU6OmZvcl9lYWNoKGZuKTsKLSAgICAgICAgZm4oY29tcG9uZW50Xyk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYWluPgotICAgIHZvaWQgcHVzaChDaGFpbiYgY2huKSBjb25zdAotICAgIHsgCi0gICAgICAgIFBpcGVsaW5lOjpwdXNoKGNobik7Ci0gICAgICAgIGNobi5wdXNoKGNvbXBvbmVudF8pOwotICAgIH0KLSAgICBjb25zdCBQaXBlbGluZSYgdGFpbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgY29uc3QgQ29tcG9uZW50JiBoZWFkKCkgY29uc3QgeyByZXR1cm4gY29tcG9uZW50XzsgfQotcHJpdmF0ZToKLSAgICBwaXBlbGluZSBvcGVyYXRvcj0oY29uc3QgcGlwZWxpbmUmKTsKLSAgICBjb25zdCBDb21wb25lbnQmIGNvbXBvbmVudF87Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQaXBlbGluZSwgdHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBDb21wb25lbnQ+Ci1waXBlbGluZTxwaXBlbGluZTxQaXBlbGluZSwgRmlsdGVyPiwgQ29tcG9uZW50Pgotb3BlcmF0b3J8KGNvbnN0IHBpcGVsaW5lPFBpcGVsaW5lLCBGaWx0ZXI+JiBwLCBjb25zdCBDb21wb25lbnQmIGNtcCkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2ZpbHRlcjxGaWx0ZXI+Ojp2YWx1ZSk7Ci0gICAgcmV0dXJuIHBpcGVsaW5lPHBpcGVsaW5lPFBpcGVsaW5lLCBGaWx0ZXI+LCBDb21wb25lbnQ+KHAsIGNtcCk7Ci19Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUElQQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4ZjllNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9wb3NpdGlvbmluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDMtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vIFRoYW5rcyB0byBHYXJldGggU3lsdmVzdGVyLUJyYWRsZXkgZm9yIHRoZSBEaW5rdW13YXJlIHZlcnNpb25zIG9mIHRoZQotLy8gcG9zaXRpb25pbmcgZnVuY3Rpb25zLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QT1NJVElPTklOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BPU0lUSU9OSU5HX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2NvZGVjdnQuaHBwPiAvLyBtYnN0YXRlX3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZnBvcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pb3MuaHBwPiAvLyBzdHJlYW1vZmYsIHN0cmVhbXBvcy4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+IAotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmZwb3NfdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotICAgICAgICAgICAgICAgICAgICAKLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzdHJlYW1fb2Zmc2V0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXR5cGVkZWYgbmRuYm9vc3Q6OmludG1heF90IHN0cmVhbV9vZmZzZXQ7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzdHJlYW1fb2Zmc2V0X3RvX3N0cmVhbW9mZi0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLWlubGluZSBzdGQ6OnN0cmVhbW9mZiBzdHJlYW1fb2Zmc2V0X3RvX3N0cmVhbW9mZihzdHJlYW1fb2Zmc2V0IG9mZikKLXsgcmV0dXJuIHN0YXRpY19jYXN0PHN0cmVhbV9vZmZzZXQ+KG9mZik7IH0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIG9mZnNldF90b19wb3NpdGlvbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0hBU19ESU5LVU1XQVJFX0ZQT1MKLQotaW5saW5lIHN0ZDo6c3RyZWFtcG9zIG9mZnNldF90b19wb3NpdGlvbihzdHJlYW1fb2Zmc2V0IG9mZikgeyByZXR1cm4gb2ZmOyB9Ci0KLSMgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUwotCi1pbmxpbmUgc3RkOjpzdHJlYW1wb3Mgb2Zmc2V0X3RvX3Bvc2l0aW9uKHN0cmVhbV9vZmZzZXQgb2ZmKQoteyByZXR1cm4gc3RkOjpzdHJlYW1wb3Moc3RkOjptYnN0YXRlX3QoKSwgb2ZmKTsgfQotCi0jIGVuZGlmIC8vICMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19IQVNfRElOS1VNV0FSRV9GUE9TCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBwb3NpdGlvbl90b19vZmZzZXQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEhhbmRlIGN1c3RvbSBwb3NfdHlwZSdzCi10ZW1wbGF0ZTx0eXBlbmFtZSBQb3NUeXBlPiAKLWlubGluZSBzdHJlYW1fb2Zmc2V0IHBvc2l0aW9uX3RvX29mZnNldChQb3NUeXBlIHBvcykKLXsgcmV0dXJuIHN0ZDo6c3RyZWFtb2ZmKHBvcyk7IH0KLQotIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX0hBU19ESU5LVU1XQVJFX0ZQT1MKLQotaW5saW5lIHN0cmVhbV9vZmZzZXQgcG9zaXRpb25fdG9fb2Zmc2V0KHN0ZDo6c3RyZWFtcG9zIHBvcykgeyByZXR1cm4gcG9zOyB9Ci0KLSMgZWxzZSAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUwotCi0vLyBJbiB0aGUgRGlua3Vtd2FyZSBzdGFuZGFyZCBsaWJyYXJ5LCBhIHN0ZDo6c3RyZWFtcG9zIGNvbnNpc3RzIG9mIHR3byBzdHJlYW0KLS8vIG9mZnNldHMgLS0gX0Zwb3MsIG9mIHR5cGUgc3RkOjpmcG9zX3QsIGFuZCBfTXlvZmYsIG9mIHR5cGUgc3RkOjpzdHJlYW1vZmYgLS0KLS8vIHRvZ2V0aGVyIHdpdGggYSBjb252ZXJzaW9uIHN0YXRlLiBBIHN0ZDo6c3RyZWFtcG9zIGlzIGNvbnZlcnRlZCB0byBhIAotLy8gbmRuYm9vc3Q6Omlvc3RyZWFtczo6c3RyZWFtX29mZnNldCBieSBleHRyYWN0aW5nIHRoZSB0d28gc3RyZWFtIG9mZnNldHMgYW5kCi0vLyBzdW1taW5nIHRoZW0uIFRoZSB2YWx1ZSBvZiBfRnBvcyBjYW4gYmUgZXh0cmFjdGVkIHVzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbi0KLS8vIGRlZmluZWQgbWVtYmVyIGZ1bmN0aW9ucyBzZWVrcG9zKCkgb3IgZ2V0X2Zwb3NfdCgpLCBkZXBlbmRpbmcgb24gdGhlIAotLy8gRGlua3Vtd2FyZSB2ZXJzaW9uLiBUaGUgdmFsdWUgb2YgX015b2ZmIGNhbm5vdCBiZSBleHRyYWN0ZWQgZGlyZWN0bHksIGJ1dCBjYW4KLS8vIGJlIGNhbGN1bGF0ZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgdGhlIAotLy8gc3RkOjpmcG9zIHRvIGEgc3RkOjpzdHJlYW1vZmYgYW5kIHRoZSByZXN1bHQgb2YgY29udmVydGluZyB0aGUgbWVtYmVyIF9GcG9zCi0vLyB0byBhIGxvbmcuIFRoZSBsYXR0ZXIgb3BlcmF0aW9uIGlzIGFjY29tcGxpc2hlZCB3aXRoIHRoZSBtYWNybyBfRlBPU09GRiwgCi0vLyB3aGljaCB3b3JrcyBjb3JyZWN0bHkgb24gcGxhdGZvcm1zIHdoZXJlIHN0ZDo6ZnBvc190IGlzIGFuIGludGVncmFsIHR5cGUgYW5kIAotLy8gcGxhdGZvcm1zIHdoZXJlIGl0IGlzIGEgc3RydWN0Ci0KLS8vIENvbnZlcnRzIGEgc3RkOjpmcG9zX3QgdG8gYSBzdHJlYW1fb2Zmc2V0Ci1pbmxpbmUgc3RyZWFtX29mZnNldCBmcG9zX3RfdG9fb2Zmc2V0KHN0ZDo6ZnBvc190IHBvcykKLXsKLSMgIGlmIGRlZmluZWQoX1BPU0lYXykgfHwgKF9JTlRFR1JBTF9NQVhfQklUUyA+PSA2NCkgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQotICAgIHJldHVybiBwb3M7Ci0jICBlbHNlCi0gICAgcmV0dXJuIF9GUE9TT0ZGKHBvcyk7Ci0jICBlbmRpZgotfQotCi0vLyBFeHRyYWN0cyB0aGUgbWVtYmVyIF9GcG9zIGZyb20gYSBzdGQ6OmZwb3MKLWlubGluZSBzdGQ6OmZwb3NfdCBzdHJlYW1wb3NfdG9fZnBvc190KHN0ZDo6c3RyZWFtcG9zIHBvcykKLXsKLSMgIGlmIGRlZmluZWQgKF9DUFBMSUJfVkVSKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0gICAgcmV0dXJuIHBvcy5zZWVrcG9zKCk7Ci0jICBlbHNlCi0gICAgcmV0dXJuIHBvcy5nZXRfZnBvc190KCk7Ci0jICBlbmRpZgotfQotCi1pbmxpbmUgc3RyZWFtX29mZnNldCBwb3NpdGlvbl90b19vZmZzZXQoc3RkOjpzdHJlYW1wb3MgcG9zKQotewotICAgIHJldHVybiBmcG9zX3RfdG9fb2Zmc2V0KHN0cmVhbXBvc190b19mcG9zX3QocG9zKSkgKwotICAgICAgICBzdGF0aWNfY2FzdDxzdHJlYW1fb2Zmc2V0PigKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtb2ZmPihwb3MpIC0KLSAgICAgICAgICAgIF9GUE9TT0ZGKHN0cmVhbXBvc190b19mcG9zX3QocG9zKSkKLSAgICAgICAgKTsKLX0KLQotIyBlbmRpZiAvLyAjIGlmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSEFTX0RJTktVTVdBUkVfRlBPUyAKLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPiAKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1BPU0lUSU9OSU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3B1dC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5M2ZlZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDA1LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19QVVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19QVVRfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1BVVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3B1dGJhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NjkyNGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcHV0YmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUFVUQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1BVVEJBQ0tfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3JlYWQuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUFVUQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3JlYWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMWVkZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcmVhZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCAyMDA4IENvZGVSYWdlLCBMTEMgKHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20pCi0vLyAoQykgQ29weXJpZ2h0IDIwMDUtMjAwNyBKb25hdGhhbiBUdXJrYW5pcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQuKQotCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pb3N0cmVhbXMgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFQURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19SRUFEX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBERURVQ0VEX1RZUEVOQU1FLCBNU1ZDLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3JlYWQuaHBwPgotI2Vsc2UgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlIGdldChUJiB0KQoteyByZXR1cm4gZGV0YWlsOjpyZWFkX2RldmljZV9pbXBsPFQ+OjpnZXQoZGV0YWlsOjp1bndyYXAodCkpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplCi1yZWFkKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBkZXRhaWw6OnJlYWRfZGV2aWNlX2ltcGw8VD46OnJlYWQoZGV0YWlsOjp1bndyYXAodCksIHMsIG4pOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNvdXJjZT4KLXN0ZDo6c3RyZWFtc2l6ZQotcmVhZChUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLXsgcmV0dXJuIGRldGFpbDo6cmVhZF9maWx0ZXJfaW1wbDxUPjo6cmVhZChkZXRhaWw6OnVud3JhcCh0KSwgc3JjLCBzLCBuKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQoteyByZXR1cm4gZGV0YWlsOjpyZWFkX2RldmljZV9pbXBsPFQ+OjpwdXRiYWNrKGRldGFpbDo6dW53cmFwKHQpLCBjKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBhZGRpbmcgLTEgYXMgRU9GIGluZGljYXRvci4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUgY2hlY2tfZW9mKHN0ZDo6c3RyZWFtc2l6ZSBuKSB7IHJldHVybiBuICE9IDAgPyBuIDogLTE7IH0KLQotLy8gSGVscGVyIHRlbXBsYXRlcyBmb3IgcmVhZGluZyBmcm9tIHN0cmVhbWJ1ZnMuCi10ZW1wbGF0ZTxib29sIElzTGlua2VkPgotc3RydWN0IHRydWVfZW9mX2ltcGw7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0cnVlX2VvZl9pbXBsPHRydWU+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHRydWVfZW9mKFQmIHQpIHsgcmV0dXJuIHQudHJ1ZV9lb2YoKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRydWVfZW9mX2ltcGw8ZmFsc2U+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBib29sIHRydWVfZW9mKFQmKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgdHJ1ZV9lb2YoVCYgdCkKLXsKLSAgICBjb25zdCBib29sIGxpbmtlZCA9IGlzX2xpbmtlZDxUPjo6dmFsdWU7Ci0gICAgcmV0dXJuIHRydWVfZW9mX2ltcGw8bGlua2VkPjo6dHJ1ZV9lb2YodCk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiByZWFkX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgZGV0YWlsOjppc19jdXN0b208VD4sCi0gICAgICAgICAgb3BlcmF0aW9uczxUPiwKLSAgICAgICAgICByZWFkX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRldGFpbDo6ZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBpc3RyZWFtX3RhZywgc3RyZWFtYnVmX3RhZywgaW5wdXQKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2RldmljZV9pbXBsPGlzdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZW5hbWUgaW50X3R5cGVfb2Y8VD46OnR5cGUgZ2V0KFQmIHQpCi0gICAgeyByZXR1cm4gdC5nZXQoKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIGNoZWNrX2VvZih0LnJkYnVmKCktPnNnZXRuKHMsIG4pKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpICB0cmFpdHNfdHlwZTsKLSAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoIHQucmRidWYoKS0+c3B1dGJhY2tjKGMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpICk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlYWRfZGV2aWNlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlCi0gICAgZ2V0KFQmIHQpCi0gICAgeyAgIC8vIGdjYyAyLjk1IG5lZWRzIG5hbWVzcGFjZSBxdWFsaWZpY2F0aW9uIGZvciBjaGFyX3RyYWl0cy4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gIHRyYWl0c190eXBlOwotICAgICAgICB0eXBlbmFtZSBpbnRfdHlwZV9vZjxUPjo6dHlwZSBjOwotICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjppc19lb2YoYyA9IHQuc2J1bXBjKCkpIHx8Ci0gICAgICAgICAgICAgICAgZGV0YWlsOjp0cnVlX2VvZih0KQotICAgICAgICAgICAgICAgICAgICA/Ci0gICAgICAgICAgICAgICAgYyA6IHRyYWl0c190eXBlOjp3b3VsZF9ibG9jaygpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHJlYWQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBhbXQ7Ci0gICAgICAgIHJldHVybiAoYW10ID0gdC5zZ2V0bihzLCBuKSkgIT0gMCA/Ci0gICAgICAgICAgICBhbXQgOgotICAgICAgICAgICAgZGV0YWlsOjp0cnVlX2VvZih0KSA/Ci0gICAgICAgICAgICAgICAgLTEgOgotICAgICAgICAgICAgICAgIDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsgICAvLyBnY2MgMi45NSBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbiBmb3IgY2hhcl90cmFpdHMuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlICAgICBjaGFyX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgaW9zdHJlYW1zOjpjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICB0cmFpdHNfdHlwZTsKLSAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6aXNfZW9mKHQuc3B1dGJhY2tjKGMpKTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9kZXZpY2VfaW1wbDxpbnB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHR5cGVuYW1lIGludF90eXBlX29mPFQ+Ojp0eXBlCi0gICAgZ2V0KFQmIHQpCi0gICAgeyAgIC8vIGdjYyAyLjk1IG5lZWRzIG5hbWVzcGFjZSBxdWFsaWZpY2F0aW9uIGZvciBjaGFyX3RyYWl0cy4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgIGNoYXJfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpb3N0cmVhbXM6OmNoYXJfdHJhaXRzPGNoYXJfdHlwZT4gIHRyYWl0c190eXBlOwotICAgICAgICBjaGFyX3R5cGUgYzsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgcmV0dXJuIChhbXQgPSB0LnJlYWQoJmMsIDEpKSA9PSAxID8KLSAgICAgICAgICAgIHRyYWl0c190eXBlOjp0b19pbnRfdHlwZShjKSA6Ci0gICAgICAgICAgICBhbXQgPT0gLTEgPwotICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSA6Ci0gICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1zaXplCi0gICAgcmVhZChUJiB0LCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIHQucmVhZChzLCBuKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXRiYWNrKFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsgICAvLyBUIG11c3QgYmUgUGVla2FibGUuCi0gICAgICAgIHJldHVybiB0LnB1dGJhY2soYyk7Ci0gICAgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHJlYWRfZmlsdGVyX2ltcGwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsCi0gICAgOiBtcGw6OmlmXzwKLSAgICAgICAgICBkZXRhaWw6OmlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHJlYWRfZmlsdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGV0YWlsOjpkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIG11bHRpY2hhcl90YWcsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZWFkX2ZpbHRlcl9pbXBsPG11bHRpY2hhcl90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSByZWFkCi0gICAgICAgKFQmIHQsIFNvdXJjZSYgc3JjLCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsgcmV0dXJuIHQucmVhZChzcmMsIHMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVhZF9maWx0ZXJfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU291cmNlPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgcmVhZAotICAgICAgIChUJiB0LCBTb3VyY2UmIHNyYywgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7ICAgLy8gZ2NjIDIuOTUgbmVlZHMgbmFtZXNwYWNlIHF1YWxpZmljYXRpb24gZm9yIGNoYXJfdHJhaXRzLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIGlvc3RyZWFtczo6Y2hhcl90cmFpdHM8Y2hhcl90eXBlPiAgdHJhaXRzX3R5cGU7Ci0gICAgICAgIGZvciAoc3RkOjpzdHJlYW1zaXplIG9mZiA9IDA7IG9mZiA8IG47ICsrb2ZmKSB7Ci0gICAgICAgICAgICB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgYyA9IHQuZ2V0KHNyYyk7Ci0gICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmlzX2VvZihjKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tfZW9mKG9mZik7Ci0gICAgICAgICAgICBpZiAodHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKQotICAgICAgICAgICAgICAgIHJldHVybiBvZmY7Ci0gICAgICAgICAgICBzW29mZl0gPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKGMpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFQURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9yZXN0cmljdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9yZXN0cmljdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMGZkZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvcmVzdHJpY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICoKLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0LmhwcAotICogRGF0ZTogICAgICAgIFN1biBKYW4gMDYgMTI6NTc6MzAgTVNUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAgICAgICAgICAgICAgICAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdGlvbiBhbmQgdGhlIAotICogb3ZlcmxvYWRlZCBmdW5jdGlvbiB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdAotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1QgcmVzdHJpY3QKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zZWVrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmYxOWIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NlZWsuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TRUVLX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU0VFS19IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gICAgICAgLy8gc3RyZWFtc2l6ZSwgc2Vla2Rpciwgb3Blbm1vZGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3Bvc2l0aW9uaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHNlZWtfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgc2Vla19maWx0ZXJfaW1wbDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OnN0cmVhbXBvcwotc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICBORE5CT09TVF9JT1M6Om9wZW5tb2RlIHdoaWNoID0gTkROQk9PU1RfSU9TOjppbiB8IE5ETkJPT1NUX0lPUzo6b3V0ICkKLXsgCi0gICAgdXNpbmcgbmFtZXNwYWNlIGRldGFpbDsKLSAgICByZXR1cm4gc2Vla19kZXZpY2VfaW1wbDxUPjo6c2VlayhkZXRhaWw6OnVud3JhcCh0KSwgb2ZmLCB3YXksIHdoaWNoKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERldmljZT4KLWlubGluZSBzdGQ6OnN0cmVhbXBvcwotc2VlayggVCYgdCwgRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBORE5CT09TVF9JT1M6OnNlZWtkaXIgd2F5LAotICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCA9IE5ETkJPT1NUX0lPUzo6aW4gfCBORE5CT09TVF9JT1M6Om91dCApCi17IAotICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0gICAgcmV0dXJuIHNlZWtfZmlsdGVyX2ltcGw8VD46OnNlZWsoZGV0YWlsOjp1bndyYXAodCksIGRldiwgb2ZmLCB3YXksIHdoaWNoKTsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzZWVrX2RldmljZV9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgc2Vla19kZXZpY2VfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDwKLSAgICAgICAgICAgICAgICAgIFQsIGlvc3RyZWFtX3RhZywgaXN0cmVhbV90YWcsIG9zdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgc3RyZWFtYnVmX3RhZywgdHdvX2hlYWQsIGFueV90YWcKLSAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLSAgICB7IH07Ci0KLXN0cnVjdCBzZWVrX2ltcGxfYmFzaWNfaW9zIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXBvcyBzZWVrKCBUJiB0LCBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgewotICAgICAgICBpZiAoIHdheSA9PSBORE5CT09TVF9JT1M6OmJlZyAmJgotICAgICAgICAgICAgICggb2ZmIDwgaW50ZWdlcl90cmFpdHM8c3RkOjpzdHJlYW1vZmY+Ojpjb25zdF9taW4gfHwKLSAgICAgICAgICAgICAgIG9mZiA+IGludGVnZXJfdHJhaXRzPHN0ZDo6c3RyZWFtb2ZmPjo6Y29uc3RfbWF4ICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdC5yZGJ1ZigpLT5wdWJzZWVrcG9zKG9mZnNldF90b19wb3NpdGlvbihvZmYpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiB0LnJkYnVmKCktPnB1YnNlZWtvZmYob2ZmLCB3YXksIHdoaWNoKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPGlvc3RyZWFtX3RhZz4gOiBzZWVrX2ltcGxfYmFzaWNfaW9zIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlZWtfZGV2aWNlX2ltcGw8aXN0cmVhbV90YWc+IDogc2Vla19pbXBsX2Jhc2ljX2lvcyB7IH07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPG9zdHJlYW1fdGFnPiA6IHNlZWtfaW1wbF9iYXNpY19pb3MgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbDxzdHJlYW1idWZfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKQotICAgIHsKLSAgICAgICAgaWYgKCB3YXkgPT0gTkROQk9PU1RfSU9TOjpiZWcgJiYKLSAgICAgICAgICAgICAoIG9mZiA8IGludGVnZXJfdHJhaXRzPHN0ZDo6c3RyZWFtb2ZmPjo6Y29uc3RfbWluIHx8Ci0gICAgICAgICAgICAgICBvZmYgPiBpbnRlZ2VyX3RyYWl0czxzdGQ6OnN0cmVhbW9mZj46OmNvbnN0X21heCApICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHQuTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtQT1Mob2Zmc2V0X3RvX3Bvc2l0aW9uKG9mZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHQuTkROQk9PU1RfSU9TVFJFQU1TX1BVQlNFRUtPRkYob2ZmLCB3YXksIHdoaWNoKTsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2RldmljZV9pbXBsPHR3b19oZWFkPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggKQotICAgIHsgcmV0dXJuIHQuc2VlayhvZmYsIHdheSwgd2hpY2gpOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19kZXZpY2VfaW1wbDxhbnlfdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgKQotICAgIHsgcmV0dXJuIHQuc2VlayhvZmYsIHdheSk7IH0KLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBzZWVrX2ZpbHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgc2Vla19maWx0ZXJfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgc2Vla19maWx0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICBkaXNwYXRjaDxULCB0d29faGVhZCwgYW55X3RhZz46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2Vla19maWx0ZXJfaW1wbDx0d29faGVhZD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIERldmljZT4KLSAgICBzdGF0aWMgc3RkOjpzdHJlYW1wb3Mgc2VlayggVCYgdCwgRGV2aWNlJiBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fb2Zmc2V0IG9mZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpzZWVrZGlyIHdheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TOjpvcGVubW9kZSB3aGljaCApCi0gICAgeyByZXR1cm4gdC5zZWVrKGQsIG9mZiwgd2F5LCB3aGljaCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWVrX2ZpbHRlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZXZpY2U+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtcG9zIHNlZWsoIFQmIHQsIERldmljZSYgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6c2Vla2RpciB3YXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgKQotICAgIHsgcmV0dXJuIHQuc2VlayhkLCBvZmYsIHdheSk7IH0KLX07Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1NFRUtfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9za2lwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NraXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjVhNjAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3NraXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBUbyBkbzogaGFuZGxlIGJpZGlyZWN0aW9uIHN0cmVhbXMgYW5kIG91dHB1dC1zZWVrYWJsZSBjb21wb25lbnRzLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TS0lQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU0tJUF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIGZhaWx1cmUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL29wZXJhdGlvbnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9zZWVrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBtcGw6OnRydWVfKQoteyBpb3N0cmVhbXM6OnNlZWsoZGV2LCBvZmYsIE5ETkJPT1NUX0lPUzo6Y3VyKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoRGV2aWNlJiBkZXYsIHN0cmVhbV9vZmZzZXQgb2ZmLCBtcGw6OmZhbHNlXykKLXsgICAvLyBnY2MgMi45NSBuZWVkcyBuYW1lc3BhY2UgcXVhbGlmaWNhdGlvbiBmb3IgY2hhcl90cmFpdHMuCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgaW9zdHJlYW1zOjpjaGFyX3RyYWl0czxjaGFyX3R5cGU+ICAgIHRyYWl0c190eXBlOwotICAgIGZvciAoc3RyZWFtX29mZnNldCB6ID0gMDsgeiA8IG9mZjsgKSB7Ci0gICAgICAgIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSBjOwotICAgICAgICBpZiAodHJhaXRzX3R5cGU6OmlzX2VvZihjID0gaW9zdHJlYW1zOjpnZXQoZGV2KSkpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgc2tpcCBvZmZzZXQiKSk7Ci0gICAgICAgIGlmICghdHJhaXRzX3R5cGU6OndvdWxkX2Jsb2NrKGMpKQotICAgICAgICAgICAgKyt6OwotICAgIH0KLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoIEZpbHRlciYgZmx0LCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2gsIG1wbDo6dHJ1ZV8gKQoteyBuZG5ib29zdDo6aW9zdHJlYW1zOjpzZWVrKGZsdCwgZGV2LCBvZmYsIE5ETkJPT1NUX0lPUzo6Y3VyLCB3aGljaCk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRmlsdGVyLCB0eXBlbmFtZSBEZXZpY2U+Ci12b2lkIHNraXAoIEZpbHRlciYgZmx0LCBEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYsCi0gICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUsIG1wbDo6ZmFsc2VfICkKLXsgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgY2hhcl90eXBlIGM7Ci0gICAgZm9yIChzdHJlYW1fb2Zmc2V0IHogPSAwOyB6IDwgb2ZmOyApIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIGFtdDsKLSAgICAgICAgaWYgKChhbXQgPSBpb3N0cmVhbXM6OnJlYWQoZmx0LCBkZXYsICZjLCAxKSkgPT0gLTEpCi0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKE5ETkJPT1NUX0lPU1RSRUFNU19GQUlMVVJFKCJiYWQgc2tpcCBvZmZzZXQiKSk7Ci0gICAgICAgIGlmIChhbXQgPT0gMSkKLSAgICAgICAgICAgICsrejsKLSAgICB9Ci19Ci0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcChEZXZpY2UmIGRldiwgc3RyZWFtX29mZnNldCBvZmYpCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbW9kZV9vZjxEZXZpY2U+Ojp0eXBlICAgICBtb2RlOwotICAgIHR5cGVkZWYgbXBsOjpvcl88Ci0gICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0X3NlZWthYmxlPiwKLSAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgb3V0cHV0X3NlZWthYmxlPgotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc2VlazsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAoY2FuX3NlZWs6OnZhbHVlIHx8IGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0Pjo6dmFsdWUpCi0gICAgKTsKLSAgICBkZXRhaWw6OnNraXAoZGV2LCBvZmYsIGNhbl9zZWVrKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGaWx0ZXIsIHR5cGVuYW1lIERldmljZT4KLXZvaWQgc2tpcCggRmlsdGVyJiBmbHQsIERldmljZSYgZGV2LCBzdHJlYW1fb2Zmc2V0IG9mZiwgCi0gICAgICAgICAgIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUgd2hpY2ggPSBORE5CT09TVF9JT1M6OmluIHwgTkROQk9PU1RfSU9TOjpvdXQgKQoteyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1vZGVfb2Y8RmlsdGVyPjo6dHlwZSAgICAgICAgICAgICAgICAgZmlsdGVyX21vZGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtb2RlX29mPERldmljZT46OnR5cGUgICAgICAgICAgICAgICAgIGRldmljZV9tb2RlOwotICAgIHR5cGVkZWYgbXBsOjpvcl88Ci0gICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGZpbHRlcl9tb2RlLCBpbnB1dF9zZWVrYWJsZT4sCi0gICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxkZXZpY2VfbW9kZSwgaW5wdXRfc2Vla2FibGU+Ci0gICAgICAgID4sCi0gICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPGZpbHRlcl9tb2RlLCBvdXRwdXRfc2Vla2FibGU+LAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8ZGV2aWNlX21vZGUsIG91dHB1dF9zZWVrYWJsZT4KLSAgICAgICAgPgotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc2VlazsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAoIGNhbl9zZWVrOjp2YWx1ZSB8fCAKLSAgICAgICAgICAoaXNfY29udmVydGlibGU8ZmlsdGVyX21vZGUsIGlucHV0Pjo6dmFsdWUgJiYKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxkZXZpY2VfbW9kZSwgaW5wdXQ+Ojp2YWx1ZSkgKQotICAgICk7Ci0gICAgZGV0YWlsOjpza2lwKGZsdCwgZGV2LCBvZmYsIHdoaWNoLCBjYW5fc2VlaygpKTsKLX0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TS0lQX0hQUF9JTkNMVURFRCAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zbGljZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zbGljZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMTZlYTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc2xpY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4oU2VlIGFjY29tcGFueWluZyAKLSAqIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLSAqIAotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotICoKLSAqIEZpbGU6ICAgICAgICBuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0LmhwcAotICogRGF0ZTogICAgICAgIFN1biBKYW4gMDYgMTI6NTc6MzAgTVNUIDIwMDgKLSAqIENvcHlyaWdodDogICAyMDA4IENvZGVSYWdlLCBMTEMKLSAgICAgICAgICAgICAgICAyMDA0LTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLSAqIEF1dGhvcjogICAgICBKb25hdGhhbiBUdXJrYW5pcwotICogQ29udGFjdDogICAgIHR1cmthbmlzIGF0IGNvZGVyYWdlIGRvdCBjb20KLSAqCi0gKiBEZWZpbmVzIHRoZSBjbGFzcyB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpyZXN0cmljdGlvbiBhbmQgdGhlIAotICogb3ZlcmxvYWRlZCBmdW5jdGlvbiB0ZW1wbGF0ZSBuZG5ib29zdDo6aW9zdHJlYW1zOjpzbGljZS4KLSAqCi0gKiBUaGlzIGhlYWRlciBpcyBwcm92aWRlZCBmb3IgcGxhdGZvcm1zIG9uIHdoaWNoICJyZXN0cmljdCIgaXMgYSBrZXl3b3JkLgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX1JFU1RSSUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1Qgc2xpY2UKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc3RyaWN0X2ltcGwuaHBwPgotI3VuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19SRVNUUklDVAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfUkVTVFJJQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1ODExNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1fSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NvbnN0YW50cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jaGFyX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mb3J3YXJkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvc3RyZWFtLmhwcD4gIC8vIHN0YW5kYXJkIHN0cmVhbXMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zZWxlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFRyPgotc3RydWN0IHN0cmVhbV90cmFpdHMgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotICAgIHR5cGVkZWYgVHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYXRlZ29yeV9vZjxEZXZpY2U+Ojp0eXBlICAgICAgICAgICAgICAgICBtb2RlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgIGlvc3RyZWFtczo6c2VsZWN0PCAvLyBEaXNhbWJpZ3VhdGlvbiByZXF1aXJlZCBmb3IgVHJ1NjQuCi0gICAgICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxtb2RlLCBpbnB1dD4sCi0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIG91dHB1dD4KLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19CQVNJQ19JT1NUUkVBTShjaGFyX3R5cGUsIHRyYWl0c190eXBlKSwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxtb2RlLCBpbnB1dD4sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX0lTVFJFQU0oY2hhcl90eXBlLCB0cmFpdHNfdHlwZSksCi0gICAgICAgICAgICAgICAgZWxzZV8sCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0JBU0lDX09TVFJFQU0oY2hhcl90eXBlLCB0cmFpdHNfdHlwZSkKLSAgICAgICAgICAgID46OnR5cGUgc3RyZWFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8IC8vIERpc2FtYmlndWF0aW9uIHJlcXVpcmVkIGZvciBUcnU2NC4KLSAgICAgICAgICAgICAgICBtcGw6OmFuZF88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8bW9kZSwgb3V0cHV0PgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPG1vZGUsIGlucHV0PiwKLSAgICAgICAgICAgICAgICBpc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICBlbHNlXywKLSAgICAgICAgICAgICAgICBvc3RyZWFtX3RhZwotICAgICAgICAgICAgPjo6dHlwZSBzdHJlYW1fdGFnOwotfTsKLQotLy8gQnkgZW5jYXBzdWxhdGluZyBpbml0aWFsaXphdGlvbiBpbiBhIGJhc2UsIHdlIGNhbiBkZWZpbmUgdGhlIG1hY3JvCi0vLyBORE5CT09TVF9JT1NUUkVBTVNfREVGSU5FX0ZPUldBUkRJTkdfRlVOQ1RJT05TIHRvIGdlbmVyYXRlIGNvbnN0cnVjdG9ycwotLy8gd2l0aG91dCBiYXNlIG1lbWJlciBpbml0aWFsaXplciBsaXN0cy4KLXRlbXBsYXRlPCB0eXBlbmFtZSBEZXZpY2UsCi0gICAgICAgICAgdHlwZW5hbWUgVHIgPQotICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfQ0hBUl9UUkFJVFMoCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlCi0gICAgICAgICAgICAgICksCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MgPQotICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjwKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUKLSAgICAgICAgICAgICAgPiwKLSAgICAgICAgICB0eXBlbmFtZSBCYXNlID0gLy8gVkM2IFdvcmthcm91bmQuCi0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGV0YWlsOjpzdHJlYW1fdHJhaXRzPERldmljZSwgVHI+OjpzdHJlYW1fdHlwZSA+Ci1jbGFzcyBzdHJlYW1fYmFzZQotICAgIDogcHJvdGVjdGVkIGJhc2VfZnJvbV9tZW1iZXI8IHN0cmVhbV9idWZmZXI8RGV2aWNlLCBUciwgQWxsb2M+ID4sCi0gICAgICBwdWJsaWMgQmFzZQotewotcHJpdmF0ZToKLSAgICB0eXBlZGVmIGJhc2VfZnJvbV9tZW1iZXI8IHN0cmVhbV9idWZmZXI8RGV2aWNlLCBUciwgQWxsb2M+ID4gIHBiYXNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdHJlYW1fdHJhaXRzPERldmljZSwgVHI+OjpzdHJlYW1fdHlwZSAgICAgICBzdHJlYW1fdHlwZTsKLXByb3RlY3RlZDoKLSAgICB1c2luZyBwYmFzZV90eXBlOjptZW1iZXI7IC8vIEF2b2lkIHdhcm5pbmcgYWJvdXQgJ3RoaXMnIGluIGluaXRpYWxpemVyIGxpc3QuCi1wdWJsaWM6Ci0gICAgc3RyZWFtX2Jhc2UoKSA6IHBiYXNlX3R5cGUoKSwgc3RyZWFtX3R5cGUoJm1lbWJlcikgeyB9Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNpZmRlZiBORE5CT09TVF9JT1NUUkVBTVNfQlJPS0VOX09WRVJMT0FEX1JFU09MVVRJT04KLSMgaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9icm9rZW5fb3ZlcmxvYWRfcmVzb2x1dGlvbi9zdHJlYW0uaHBwPgotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiBzdHJlYW0uCi0vLyBEZXNjcmlwdGlvbjogQSBpb3N0cmVhbSB3aGljaCByZWFkcyBmcm9tIGFuZCB3cml0ZXMgdG8gYW4gaW5zdGFuY2Ugb2YgYQotLy8gICAgICBkZXNpZ25hdGVkIGRldmljZSB0eXBlLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRGV2aWNlIC0gQSBkZXZpY2UgdHlwZS4KLS8vICAgICAgQWxsb2MgLSBUaGUgYWxsb2NhdG9yIHR5cGUuCi0vLwotdGVtcGxhdGU8IHR5cGVuYW1lIERldmljZSwKLSAgICAgICAgICB0eXBlbmFtZSBUciA9Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUygKLSAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUKLSAgICAgICAgICAgICAgKSwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZQotICAgICAgICAgICAgICA+ID4KLXN0cnVjdCBzdHJlYW0gOiBkZXRhaWw6OnN0cmVhbV9iYXNlPERldmljZSwgVHIsIEFsbG9jPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8RGV2aWNlPjo6dHlwZSAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeSAKLSAgICAgICAgOiBtb2RlX29mPERldmljZT46OnR5cGUsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGRldGFpbDo6c3RyZWFtX3RyYWl0czxEZXZpY2UsIFRyPjo6c3RyZWFtX3RhZwotICAgICAgICB7IH07Ci0gICAgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTUJVRl9UWVBFREVGUyhUcikKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgZGV0YWlsOjpzdHJlYW1fdHJhaXRzPAotICAgICAgICAgICAgICAgIERldmljZSwgVHIKLSAgICAgICAgICAgID46OnN0cmVhbV90eXBlICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fdHlwZTsKLXB1YmxpYzoKLSAgICBzdHJlYW0oKSB7IH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRCggc3RyZWFtLCBvcGVuX2ltcGwsIERldmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX1BVU0hfUEFSQU1TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9BUkdTICkKLSAgICBib29sIGlzX29wZW4oKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuaXNfb3BlbigpOyB9Ci0gICAgdm9pZCBjbG9zZSgpIHsgdGhpcy0+bWVtYmVyLmNsb3NlKCk7IH0KLSAgICBib29sIGF1dG9fY2xvc2UoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tZW1iZXIuYXV0b19jbG9zZSgpOyB9Ci0gICAgdm9pZCBzZXRfYXV0b19jbG9zZShib29sIGNsb3NlKSB7IHRoaXMtPm1lbWJlci5zZXRfYXV0b19jbG9zZShjbG9zZSk7IH0KLSAgICBib29sIHN0cmljdF9zeW5jKCkgeyByZXR1cm4gdGhpcy0+bWVtYmVyLnN0cmljdF9zeW5jKCk7IH0KLSAgICBEZXZpY2UmIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzLT5tZW1iZXI7IH0KLSAgICBEZXZpY2UqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmKnRoaXMtPm1lbWJlcjsgfQotICAgIERldmljZSogY29tcG9uZW50KCkgeyByZXR1cm4gdGhpcy0+bWVtYmVyLmNvbXBvbmVudCgpOyB9Ci1wcml2YXRlOgotICAgIHZvaWQgb3Blbl9pbXBsKGNvbnN0IERldmljZSYgZGV2IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKSAvLyBGb3IgZm9yd2FyZGluZy4KLSAgICB7IAotICAgICAgICB0aGlzLT5jbGVhcigpOyAKLSAgICAgICAgdGhpcy0+bWVtYmVyLm9wZW4oZGV2IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSk7IAotICAgIH0KLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfc3RyZWFtX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvc3RyZWFtX2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIxMjk3Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNX0JVRkZFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX1NUUkVBTV9CVUZGRVJfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAgIC8vIGFsbG9jYXRvci4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NoYXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2ZvcndhcmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIGZhaWx1cmUsIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvZGlyZWN0X3N0cmVhbWJ1Zi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFtYnVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+ICAvLyBNU1ZDLgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgaW9zdHJlYW1zIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyLCB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgTW9kZT4KLXN0cnVjdCBzdHJlYW1fYnVmZmVyX3RyYWl0cyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2F0ZWdvcnlfb2Y8VD46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdF90YWcKLSAgICAgICAgICAgICAgICA+LAotICAgICAgICAgICAgICAgIGRpcmVjdF9zdHJlYW1idWY8VCwgVHI+LAotICAgICAgICAgICAgICAgIGluZGlyZWN0X3N0cmVhbWJ1ZjxULCBUciwgQWxsb2MsIE1vZGU+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IH0gfSAvLyBFbmQgbmFtZXNwYWNlcyBkZXRhaWwsIGlvc3RyZWFtcywgYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotIyBpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2Jyb2tlbl9vdmVybG9hZF9yZXNvbHV0aW9uL3N0cmVhbV9idWZmZXIuaHBwPgotI2Vsc2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULAotICAgICAgICAgIHR5cGVuYW1lIFRyID0KLSAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUKLSAgICAgICAgICAgICAgKSwKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYyA9Ci0gICAgICAgICAgICAgIHN0ZDo6YWxsb2NhdG9yPAotICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUKLSAgICAgICAgICAgICAgPiwKLSAgICAgICAgICB0eXBlbmFtZSBNb2RlID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtb2RlX29mPFQ+Ojp0eXBlID4KLWNsYXNzIHN0cmVhbV9idWZmZXIKLSAgICA6IHB1YmxpYyBkZXRhaWw6OnN0cmVhbV9idWZmZXJfdHJhaXRzPFQsIFRyLCBBbGxvYywgTW9kZT46OnR5cGUKLXsKLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFQ+Ojp0eXBlLCBNb2RlCi0gICAgICAgID46OnZhbHVlCi0gICAgKSk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgZGV0YWlsOjpzdHJlYW1fYnVmZmVyX3RyYWl0czwKLSAgICAgICAgICAgICAgICBULCBUciwgQWxsb2MsIE1vZGUKLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3R5cGU7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgY2hhcl90eXBlOwotICAgIHN0cnVjdCBjYXRlZ29yeSAKLSAgICAgICAgOiBNb2RlLAotICAgICAgICAgIGNsb3NhYmxlX3RhZywKLSAgICAgICAgICBzdHJlYW1idWZfdGFnCi0gICAgICAgIHsgfTsKLSAgICBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKQotcHVibGljOgotICAgIHN0cmVhbV9idWZmZXIoKSB7IH0KLSAgICB+c3RyZWFtX2J1ZmZlcigpCi0gICAgeyAKLSAgICAgICAgdHJ5IHsgCi0gICAgICAgICAgICBpZiAodGhpcy0+aXNfb3BlbigpICYmIHRoaXMtPmF1dG9fY2xvc2UoKSkgCi0gICAgICAgICAgICAgICAgdGhpcy0+Y2xvc2UoKTsgCi0gICAgICAgIH0gY2F0Y2ggKC4uLikgeyB9IAotICAgIH0KLSAgICBORE5CT09TVF9JT1NUUkVBTVNfRk9SV0FSRCggc3RyZWFtX2J1ZmZlciwgb3Blbl9pbXBsLCBULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9JT1NUUkVBTVNfUFVTSF9QQVJBTVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MgKQotICAgIFQmIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzLT5jb21wb25lbnQoKTsgfQotICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiB0aGlzLT5jb21wb25lbnQoKTsgfQotcHJpdmF0ZToKLSAgICB2b2lkIG9wZW5faW1wbChjb25zdCBUJiB0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX1BBUkFNUygpKQotICAgICAgICB7ICAgLy8gVXNlZCBmb3IgZm9yd2FyZGluZy4KLSAgICAgICAgICAgIGlmICh0aGlzLT5pc19vcGVuKCkpCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfSU9TVFJFQU1TX0ZBSUxVUkUoImFscmVhZHkgb3BlbiIpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGJhc2VfdHlwZTo6b3Blbih0IE5ETkJPT1NUX0lPU1RSRUFNU19QVVNIX0FSR1MoKSk7Ci0gICAgICAgIH0KLX07Ci0KLX0gfSAvLyBFbmQgbmFtZXNwYWNlcyBpb3N0cmVhbXMsIGJvb3N0LgotCi0jZW5kaWYgLy8gI2lmZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZW5hYmxlX3dhcm5pbmdzLmhwcD4gIC8vIE1TVkMuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1fQlVGRkVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdGVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RlZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YzNjYmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdGVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwNS0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfVEVFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfVEVFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIE5ETkJPT1NUX0RFRFVDRV9UWVBFTkFNRS4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9hZGFwdGVyL2RldmljZV9hZGFwdGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2FkYXB0ZXIvZmlsdGVyX2FkYXB0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2FsbF90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZXhlY3V0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9mdW5jdGlvbmFsLmhwcD4gIC8vIGNhbGxfY2xvc2VfYWxsIAotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvcGlwZWxpbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vCi0vLyBUZW1wbGF0ZSBuYW1lOiB0ZWVfZmlsdGVyLgotLy8gVGVtcGxhdGUgcGFyYW1ldGVyczoKLS8vICAgICAgRGV2aWNlIC0gQSBibG9ja2luZyBTaW5rLgotLy8KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZT4KLWNsYXNzIHRlZV9maWx0ZXIgOiBwdWJsaWMgZGV0YWlsOjpmaWx0ZXJfYWRhcHRlcjxEZXZpY2U+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxEZXZpY2U+Ojp0eXBlICBwYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2hhcl90eXBlX29mPERldmljZT46OnR5cGUgICAgICAgIGNoYXJfdHlwZTsKLSAgICBzdHJ1Y3QgY2F0ZWdvcnkKLSAgICAgICAgOiBkdWFsX3VzZV9maWx0ZXJfdGFnLAotICAgICAgICAgIG11bHRpY2hhcl90YWcsCi0gICAgICAgICAgY2xvc2FibGVfdGFnLAotICAgICAgICAgIGZsdXNoYWJsZV90YWcsCi0gICAgICAgICAgbG9jYWxpemFibGVfdGFnLAotICAgICAgICAgIG9wdGltYWxseV9idWZmZXJlZF90YWcKLSAgICAgICAgeyB9OwotCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChpc19kZXZpY2U8RGV2aWNlPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19jb252ZXJ0aWJsZTwgLy8gVXNpbmcgbW9kZV9vZiBjYXVzZXMgZmFpbHVyZXMgb24gVkM2LTcuMC4KLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaW9zdHJlYW1zOjpjYXRlZ29yeV9vZjxEZXZpY2U+Ojp0eXBlLCBvdXRwdXQKLSAgICAgICAgPjo6dmFsdWUKLSAgICApKTsKLQotICAgIGV4cGxpY2l0IHRlZV9maWx0ZXIocGFyYW1fdHlwZSBkZXYpIAotICAgICAgICA6IGRldGFpbDo6ZmlsdGVyX2FkYXB0ZXI8RGV2aWNlPihkZXYpIAotICAgICAgICB7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZT4KLSAgICBzdGQ6OnN0cmVhbXNpemUgcmVhZChTb3VyY2UmIHNyYywgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQgPSBpb3N0cmVhbXM6OnJlYWQoc3JjLCBzLCBuKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSAtMSkgewotICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDIgPSBpb3N0cmVhbXM6OndyaXRlKHRoaXMtPmNvbXBvbmVudCgpLCBzLCByZXN1bHQpOwotICAgICAgICAgICAgKHZvaWQpIHJlc3VsdDI7IC8vIFN1cHByZXNzICd1bnVzZWQgdmFyaWFibGUnIHdhcm5pbmcuCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQocmVzdWx0ID09IHJlc3VsdDIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU2luaz4KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoU2luayYgc25rLCBjb25zdCBjaGFyX3R5cGUqIHMsIHN0ZDo6c3RyZWFtc2l6ZSBuKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdCA9IGlvc3RyZWFtczo6d3JpdGUoc25rLCBzLCBuKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDIgPSBpb3N0cmVhbXM6OndyaXRlKHRoaXMtPmNvbXBvbmVudCgpLCBzLCByZXN1bHQpOwotICAgICAgICAodm9pZCkgcmVzdWx0MjsgLy8gU3VwcHJlc3MgJ3VudXNlZCB2YXJpYWJsZScgd2FybmluZy4KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHJlc3VsdCA9PSByZXN1bHQyKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOZXh0PgotICAgIHZvaWQgY2xvc2UoTmV4dCYsIE5ETkJPT1NUX0lPUzo6b3Blbm1vZGUpCi0gICAgeyAKLSAgICAgICAgZGV0YWlsOjpjbG9zZV9hbGwodGhpcy0+Y29tcG9uZW50KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci0gICAgYm9vbCBmbHVzaChTaW5rJiBzbmspCi0gICAgewotICAgICAgICBib29sIHIxID0gaW9zdHJlYW1zOjpmbHVzaChzbmspOwotICAgICAgICBib29sIHIyID0gaW9zdHJlYW1zOjpmbHVzaCh0aGlzLT5jb21wb25lbnQoKSk7Ci0gICAgICAgIHJldHVybiByMSAmJiByMjsKLSAgICB9Ci19OwotTkROQk9PU1RfSU9TVFJFQU1TX1BJUEFCTEUodGVlX2ZpbHRlciwgMSkKLQotLy8KLS8vIFRlbXBsYXRlIG5hbWU6IHRlZV9kZXZpY2UuCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXJzOgotLy8gICAgICBEZXZpY2UgLSBBIGJsb2NraW5nIERldmljZS4KLS8vICAgICAgU2luayAtIEEgYmxvY2tpbmcgU2luay4KLS8vCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFNpbms+Ci1jbGFzcyB0ZWVfZGV2aWNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cGFyYW1fdHlwZTxEZXZpY2U+Ojp0eXBlICBkZXZpY2VfcGFyYW07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnBhcmFtX3R5cGU8U2luaz46OnR5cGUgICAgc2lua19wYXJhbTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dmFsdWVfdHlwZTxEZXZpY2U+Ojp0eXBlICBkZXZpY2VfdmFsdWU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnZhbHVlX3R5cGU8U2luaz46OnR5cGUgICAgc2lua192YWx1ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxEZXZpY2U+Ojp0eXBlICAgICAgICBjaGFyX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgICAgICBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPERldmljZT46OnR5cGUsIAotICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Ci0gICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgaW5wdXQKLSAgICAgICAgICAgID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoaXNfZGV2aWNlPERldmljZT46OnZhbHVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGlzX2RldmljZTxTaW5rPjo6dmFsdWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICBpc19zYW1lPAotICAgICAgICAgICAgY2hhcl90eXBlLCAKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFNpbms+Ojp0eXBlCi0gICAgICAgID46OnZhbHVlCi0gICAgKSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPFNpbms+Ojp0eXBlLCAKLSAgICAgICAgICAgIG91dHB1dAotICAgICAgICA+Ojp2YWx1ZQotICAgICkpOwotICAgIHN0cnVjdCBjYXRlZ29yeQotICAgICAgICA6IG1vZGUsCi0gICAgICAgICAgZGV2aWNlX3RhZywKLSAgICAgICAgICBjbG9zYWJsZV90YWcsCi0gICAgICAgICAgZmx1c2hhYmxlX3RhZywKLSAgICAgICAgICBsb2NhbGl6YWJsZV90YWcsCi0gICAgICAgICAgb3B0aW1hbGx5X2J1ZmZlcmVkX3RhZwotICAgICAgICB7IH07Ci0gICAgdGVlX2RldmljZShkZXZpY2VfcGFyYW0gZGV2aWNlLCBzaW5rX3BhcmFtIHNpbmspIAotICAgICAgICA6IGRldl8oZGV2aWNlKSwgc2lua18oc2luaykKLSAgICAgICAgeyB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIHJlYWQoY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPERldmljZT46OnR5cGUsIGlucHV0Ci0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICApKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDEgPSBpb3N0cmVhbXM6OnJlYWQoZGV2Xywgcywgbik7Ci0gICAgICAgIGlmIChyZXN1bHQxICE9IC0xKSB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzdWx0MiA9IGlvc3RyZWFtczo6d3JpdGUoc2lua18sIHMsIHJlc3VsdDEpOwotICAgICAgICAgICAgKHZvaWQpIHJlc3VsdDE7IC8vIFN1cHByZXNzICd1bnVzZWQgdmFyaWFibGUnIHdhcm5pbmcuCi0gICAgICAgICAgICAodm9pZCkgcmVzdWx0MjsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyZXN1bHQxID09IHJlc3VsdDIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQxOwotICAgIH0KLSAgICBzdGQ6OnN0cmVhbXNpemUgd3JpdGUoY29uc3QgY2hhcl90eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKAotICAgICAgICAgICAgaXNfY29udmVydGlibGU8Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpb3N0cmVhbXM6OmNhdGVnb3J5X29mPERldmljZT46OnR5cGUsIG91dHB1dAotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgKSk7Ci0gICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSByZXN1bHQxID0gaW9zdHJlYW1zOjp3cml0ZShkZXZfLCBzLCBuKTsKLSAgICAgICAgc3RkOjpzdHJlYW1zaXplIHJlc3VsdDIgPSBpb3N0cmVhbXM6OndyaXRlKHNpbmtfLCBzLCBuKTsKLSAgICAgICAgKHZvaWQpIHJlc3VsdDE7IC8vIFN1cHByZXNzICd1bnVzZWQgdmFyaWFibGUnIHdhcm5pbmcuCi0gICAgICAgICh2b2lkKSByZXN1bHQyOwotICAgICAgICBORE5CT09TVF9BU1NFUlQocmVzdWx0MSA9PSBuICYmIHJlc3VsdDIgPT0gbik7Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLSAgICB2b2lkIGNsb3NlKCkKLSAgICB7Ci0gICAgICAgIGRldGFpbDo6ZXhlY3V0ZV9hbGwoIGRldGFpbDo6Y2FsbF9jbG9zZV9hbGwoZGV2XyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6Y2FsbF9jbG9zZV9hbGwoc2lua18pICk7Ci0gICAgfQotICAgIGJvb2wgZmx1c2goKQotICAgIHsKLSAgICAgICAgYm9vbCByMSA9IGlvc3RyZWFtczo6Zmx1c2goZGV2Xyk7Ci0gICAgICAgIGJvb2wgcjIgPSBpb3N0cmVhbXM6OmZsdXNoKHNpbmtfKTsKLSAgICAgICAgcmV0dXJuIHIxICYmIHIyOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NhbGU+Ci0gICAgdm9pZCBpbWJ1ZShjb25zdCBMb2NhbGUmIGxvYykKLSAgICB7Ci0gICAgICAgIGlvc3RyZWFtczo6aW1idWUoZGV2XywgbG9jKTsKLSAgICAgICAgaW9zdHJlYW1zOjppbWJ1ZShzaW5rXywgbG9jKTsKLSAgICB9Ci0gICAgc3RkOjpzdHJlYW1zaXplIG9wdGltYWxfYnVmZmVyX3NpemUoKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIHJldHVybiAoc3RkOjptYXgpICggaW9zdHJlYW1zOjpvcHRpbWFsX2J1ZmZlcl9zaXplKGRldl8pLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3N0cmVhbXM6Om9wdGltYWxfYnVmZmVyX3NpemUoc2lua18pICk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBkZXZpY2VfdmFsdWUgIGRldl87Ci0gICAgc2lua192YWx1ZSAgICBzaW5rXzsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci10ZWVfZmlsdGVyPFNpbms+IHRlZShTaW5rJiBzbmspIAoteyByZXR1cm4gdGVlX2ZpbHRlcjxTaW5rPihzbmspOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFNpbms+Ci10ZWVfZmlsdGVyPFNpbms+IHRlZShjb25zdCBTaW5rJiBzbmspIAoteyByZXR1cm4gdGVlX2ZpbHRlcjxTaW5rPihzbmspOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgU2luaz4KLXRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPiB0ZWUoRGV2aWNlJiBkZXYsIFNpbmsmIHNpbmspIAoteyByZXR1cm4gdGVlX2RldmljZTxEZXZpY2UsIFNpbms+KGRldiwgc2luayk7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBTaW5rPgotdGVlX2RldmljZTxEZXZpY2UsIFNpbms+IHRlZShjb25zdCBEZXZpY2UmIGRldiwgU2luayYgc2luaykgCi17IHJldHVybiB0ZWVfZGV2aWNlPERldmljZSwgU2luaz4oZGV2LCBzaW5rKTsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXZpY2UsIHR5cGVuYW1lIFNpbms+Ci10ZWVfZGV2aWNlPERldmljZSwgU2luaz4gdGVlKERldmljZSYgZGV2LCBjb25zdCBTaW5rJiBzaW5rKSAKLXsgcmV0dXJuIHRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPihkZXYsIHNpbmspOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIERldmljZSwgdHlwZW5hbWUgU2luaz4KLXRlZV9kZXZpY2U8RGV2aWNlLCBTaW5rPiB0ZWUoY29uc3QgRGV2aWNlJiBkZXYsIGNvbnN0IFNpbmsmIHNpbmspIAoteyByZXR1cm4gdGVlX2RldmljZTxEZXZpY2UsIFNpbms+KGRldiwgc2luayk7IH0KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19URUVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1ZWIwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkxICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAKLS8vIENvbnRhaW5zIG1ldGFmdW5jdGlvbnMgY2hhcl90eXBlX29mLCBjYXRlZ29yeV9vZiBhbmQgbW9kZV9vZiB1c2VkIGZvcgotLy8gZGVkdWNpbmcgdGhlIGkvbyBjYXRlZ29yeSBhbmQgaS9vIG1vZGUgb2YgYSBtb2RlbCBvZiBGaWx0ZXIgb3IgRGV2aWNlLgotLy8KLS8vIEFsc28gY29udGFpbnMgc2V2ZXJhbCB1dGlsaXR5IG1ldGFmdW5jdGlvbnMsIGZ1bmN0aW9ucyBhbmQgbWFjcm9zLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfSU9fVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU9fVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYgICAgICAgICAgICAgIAotCi0jaW5jbHVkZSA8aW9zZndkPiAgICAgICAgICAgIC8vIHN0cmVhbSB0eXBlcywgY2hhcl90cmFpdHMuCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gIC8vIHBhcnRpYWwgc3BlYywgZGVkdWNlZCB0eXBlbmFtZS4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy93aWRlX3N0cmVhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfaXRlcmF0b3JfcmFuZ2UuaHBwPiAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdC5ocHA+ICAgICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3NlbGVjdF9ieV9zaXplLmhwcD4gICAgICAKLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3dyYXBfdW53cmFwLmhwcD4gICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwPiAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+ICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+ICAgICAgCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+ICAKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPiAgICAgICAgICAgICAgICAgCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS92YWx1ZV90eXBlLmhwcD4KLSNlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0vLyBNdXN0IGNvbWUgbGFzdC4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7Ci0KLS8vLS0tLS0tLS0tLURlZmluaXRpb25zIG9mIHByZWRpY2F0ZXMgZm9yIHN0cmVhbXMgYW5kIHN0cmVhbSBidWZmZXJzLS0tLS0tLS0tLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19pc3RyZWFtLCBzdGQ6OmJhc2ljX2lzdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfb3N0cmVhbSwgc3RkOjpiYXNpY19vc3RyZWFtLCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2lvc3RyZWFtLCBzdGQ6OmJhc2ljX2lvc3RyZWFtLCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX3N0cmVhbWJ1Ziwgc3RkOjpiYXNpY19zdHJlYW1idWYsIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaWZzdHJlYW0sIHN0ZDo6YmFzaWNfaWZzdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfb2ZzdHJlYW0sIHN0ZDo6YmFzaWNfb2ZzdHJlYW0sIDIpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfZnN0cmVhbSwgc3RkOjpiYXNpY19mc3RyZWFtLCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2ZpbGVidWYsIHN0ZDo6YmFzaWNfZmlsZWJ1ZiwgMikKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19pc3RyaW5nc3RyZWFtLCBzdGQ6OmJhc2ljX2lzdHJpbmdzdHJlYW0sIDMpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfb3N0cmluZ3N0cmVhbSwgc3RkOjpiYXNpY19vc3RyaW5nc3RyZWFtLCAzKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX3N0cmluZ3N0cmVhbSwgc3RkOjpiYXNpY19zdHJpbmdzdHJlYW0sIDMpCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfc3RyaW5nYnVmLCBzdGQ6OmJhc2ljX3N0cmluZ2J1ZiwgMykKLQotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTk9fU1RSRUFNX1RFTVBMQVRFUyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKGlzX2lzdHJlYW0sIHN0ZDo6aXN0cmVhbSwgMCkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19vc3RyZWFtLCBzdGQ6Om9zdHJlYW0sIDApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfaW9zdHJlYW0sIHN0ZDo6aW9zdHJlYW0sIDApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoaXNfc3RyZWFtYnVmLCBzdGQ6OnN0cmVhbWJ1ZiwgMCkKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfaW8KLSAgICA6IG1wbDo6b3JfPCBpc19pc3RyZWFtPFQ+LCBpc19vc3RyZWFtPFQ+LCBpc19zdHJlYW1idWY8VD4gPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfZmlsZV9kZXZpY2UKLSAgICA6IG1wbDo6b3JfPCAKLSAgICAgICAgICBpc19pZnN0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfb2ZzdHJlYW08VD4sIAotICAgICAgICAgIGlzX2ZzdHJlYW08VD4sIAotICAgICAgICAgIGlzX2ZpbGVidWY8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RkX3N0cmluZ19kZXZpY2UKLSAgICA6IG1wbDo6b3JfPCAKLSAgICAgICAgICBpc19pc3RyaW5nc3RyZWFtPFQ+LCAKLSAgICAgICAgICBpc19vc3RyaW5nc3RyZWFtPFQ+LCAKLSAgICAgICAgICBpc19zdHJpbmdzdHJlYW08VD4sIAotICAgICAgICAgIGlzX3N0cmluZ2J1ZjxUPgotICAgICAgPgotICAgIHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRGV2aWNlLCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3Qgc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUciwgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIE1vZGU+Ci1jbGFzcyBzdHJlYW1fYnVmZmVyOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTW9kZSwgdHlwZW5hbWUgQ2gsIHR5cGVuYW1lIFRyLCAKLSAgICAgICAgICB0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgQWNjZXNzID4KLWNsYXNzIGZpbHRlcmluZ19zdHJlYW07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBY2Nlc3MgPgotY2xhc3Mgd2ZpbHRlcmluZ19zdHJlYW07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBNb2RlLCB0eXBlbmFtZSBDaCwgdHlwZW5hbWUgVHIsIAotICAgICAgICAgIHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBY2Nlc3MgPgotY2xhc3MgZmlsdGVyaW5nX3N0cmVhbWJ1ZjsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE1vZGUsIHR5cGVuYW1lIENoLCB0eXBlbmFtZSBUciwgCi0gICAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIEFjY2VzcyA+Ci1jbGFzcyBmaWx0ZXJpbmdfd3N0cmVhbWJ1ZjsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyPgotY2xhc3MgbGlua2VkX3N0cmVhbWJ1ZjsKLQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKCBpc19ib29zdF9zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2Jvb3N0X3N0cmVhbV9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnN0cmVhbV9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKCBpc19maWx0ZXJpbmdfc3RyZWFtX2ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmZpbHRlcmluZ19zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgKQotTkROQk9PU1RfSU9TVFJFQU1TX0JPT0xfVFJBSVRfREVGKCBpc19maWx0ZXJpbmdfd3N0cmVhbV9pbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW9zdHJlYW1zOjp3ZmlsdGVyaW5nX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2ZpbHRlcmluZ19zdHJlYW1idWZfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlvc3RyZWFtczo6ZmlsdGVyaW5nX3N0cmVhbWJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSApCi1ORE5CT09TVF9JT1NUUkVBTVNfQk9PTF9UUkFJVF9ERUYoIGlzX2ZpbHRlcmluZ193c3RyZWFtYnVmX2ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppb3N0cmVhbXM6OmZpbHRlcmluZ193c3RyZWFtYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ICkKLU5ETkJPT1NUX0lPU1RSRUFNU19CT09MX1RSQUlUX0RFRihpc19saW5rZWQsIGxpbmtlZF9zdHJlYW1idWYsIDIpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyaW5nX3N0cmVhbQotICAgIDogbXBsOjpvcl88Ci0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbV9pbXBsPFQ+LAotICAgICAgICAgIGlzX2ZpbHRlcmluZ193c3RyZWFtX2ltcGw8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyaW5nX3N0cmVhbWJ1ZgotICAgIDogbXBsOjpvcl88Ci0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbWJ1Zl9pbXBsPFQ+LAotICAgICAgICAgIGlzX2ZpbHRlcmluZ193c3RyZWFtYnVmX2ltcGw8VD4KLSAgICAgID4KLSAgICB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfYm9vc3QKLSAgICA6IG1wbDo6b3JfPAotICAgICAgICAgIGlzX2Jvb3N0X3N0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfYm9vc3Rfc3RyZWFtX2J1ZmZlcjxUPiwgCi0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbTxUPiwgCi0gICAgICAgICAgaXNfZmlsdGVyaW5nX3N0cmVhbWJ1ZjxUPgotICAgICAgPgotICAgIHsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb25zIG9mIGNoYXJfdHlwZV9vZi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBtZW1iZXJfY2hhcl90eXBlIHsgdHlwZWRlZiB0eXBlbmFtZSBUOjpjaGFyX3R5cGUgdHlwZTsgfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSMgaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2hhcl90eXBlX29mIAotICAgIDogZGV0YWlsOjptZW1iZXJfY2hhcl90eXBlPAotICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6dW53cmFwcGVkX3R5cGU8VD46OnR5cGUKLSAgICAgID4gCi0gICAgeyB9OwotCi0jIGVsc2UgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNoYXJfdHlwZV9vZiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlIFU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICBpc19zdGRfaW88VT4sCi0gICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxjaGFyPiwKLSAgICAgICAgICAgICAgICBkZXRhaWw6Om1lbWJlcl9jaGFyX3R5cGU8VT4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLSMgZW5kaWYgLy8gIyBpZm5kZWYgTkROQk9PU1RfSU9TVFJFQU1TX05PX1NUUkVBTV9URU1QTEFURVMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+Ci1zdHJ1Y3QgY2hhcl90eXBlX29mPCBpdGVyYXRvcl9yYW5nZTxJdGVyPiA+IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3ZhbHVlPEl0ZXI+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNoYXJfdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBzdHJ1Y3QgZ2V0X3ZhbHVlX3R5cGUgewotICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmFuZ2VfdmFsdWU8VT46OnR5cGUgdHlwZTsKLSAgICAgICAgI2VuZGlmIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIGlzX2l0ZXJhdG9yX3JhbmdlPFQ+LAotICAgICAgICAgICAgICAgIGdldF92YWx1ZV90eXBlPFQ+LAotICAgICAgICAgICAgICAgIGRldGFpbDo6bWVtYmVyX2NoYXJfdHlwZTwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OnVud3JhcHBlZF90eXBlPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9ucyBvZiBjYXRlZ29yeV9vZi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbWVtYmVyX2NhdGVnb3J5IHsgdHlwZWRlZiB0eXBlbmFtZSBUOjpjYXRlZ29yeSB0eXBlOyB9OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGNhdGVnb3J5X29mIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHN0cnVjdCBtZW1iZXJfY2F0ZWdvcnkgeyAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBVOjpjYXRlZ29yeSB0eXBlOyAKLSAgICB9OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp1bndyYXBwZWRfdHlwZTxUPjo6dHlwZSBVOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgIAotICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgICAgICAgICAgaXNfc3RkX2lvPFU+LAotICAgICAgICAgICAgICAgICAgICBtcGw6Om5vdF88IGRldGFpbDo6aXNfYm9vc3Q8VT4gPgotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgaW9zdHJlYW1zOjpzZWxlY3Q8ICAvLyBEaXNhbWJpZ3VhdGlvbiBmb3IgVHJ1NjQKLSAgICAgICAgICAgICAgICAgICAgaXNfZmlsZWJ1ZjxVPiwgICAgICAgIGZpbGVidWZfdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19pZnN0cmVhbTxVPiwgICAgICAgaWZzdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19vZnN0cmVhbTxVPiwgICAgICAgb2ZzdHJlYW1fdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19mc3RyZWFtPFU+LCAgICAgICAgZnN0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX3N0cmluZ2J1ZjxVPiwgICAgICBzdHJpbmdidWZfdGFnLAotICAgICAgICAgICAgICAgICAgICBpc19pc3RyaW5nc3RyZWFtPFU+LCAgaXN0cmluZ3N0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX29zdHJpbmdzdHJlYW08VT4sICBvc3RyaW5nc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfc3RyaW5nc3RyZWFtPFU+LCAgIHN0cmluZ3N0cmVhbV90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX3N0cmVhbWJ1ZjxVPiwgICAgICBnZW5lcmljX3N0cmVhbWJ1Zl90YWcsCi0gICAgICAgICAgICAgICAgICAgIGlzX2lvc3RyZWFtPFU+LCAgICAgICBnZW5lcmljX2lvc3RyZWFtX3RhZywKLSAgICAgICAgICAgICAgICAgICAgaXNfaXN0cmVhbTxVPiwgICAgICAgIGdlbmVyaWNfaXN0cmVhbV90YWcsIAotICAgICAgICAgICAgICAgICAgICBpc19vc3RyZWFtPFU+LCAgICAgICAgZ2VuZXJpY19vc3RyZWFtX3RhZwotICAgICAgICAgICAgICAgID4sCi0gICAgICAgICAgICAgICAgZGV0YWlsOjptZW1iZXJfY2F0ZWdvcnk8VT4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIFBhcnRpYWwgc3BlY2lhbGl6YXRpb24gZm9yIHJlZmVyZW5jZSB3cmFwcGVycwotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjYXRlZ29yeV9vZjwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPgotICAgIDogY2F0ZWdvcnlfb2Y8VD4KLSAgICB7IH07Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gLy8tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiBnZXRfY2F0ZWdvcnktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIAotLy8gUmV0dXJucyBhbiBvYmplY3Qgb2YgdHlwZSBjYXRlZ29yeV9vZjxUPjo6dHlwZS4KLS8vIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB0eXBlbmFtZSBjYXRlZ29yeV9vZjxUPjo6dHlwZSBnZXRfY2F0ZWdvcnkoY29uc3QgVCYpIAoteyB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OyByZXR1cm4gY2F0ZWdvcnkoKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgaW50X3R5cGVfb2YtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGludF90eXBlX29mIHsgCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19OT19TVFJFQU1fVEVNUExBVEVTCi0gICAgdHlwZWRlZiBzdGQ6OmNoYXJfdHJhaXRzPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlCi0gICAgICAgICAgICA+IHRyYWl0c190eXBlOyAgICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIHR5cGU7IAotI2Vsc2UgIAotICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU7IAotI2VuZGlmCi19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgbW9kZV9vZi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBpb19tb2RlX2ltcGw7Ci0KLSNkZWZpbmUgTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKHRhZ18sIGlkXykgXAotICAgIGNhc2VfPGlkXz4gaW9fbW9kZV9pbXBsX2hlbHBlcih0YWdfKTsgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGlvX21vZGVfaW1wbDxpZF8+IHsgdHlwZWRlZiB0YWdfIHR5cGU7IH07IFwKLSAgICAvKiovCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoaW5wdXQsIDEpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIob3V0cHV0LCAyKQotTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKGJpZGlyZWN0aW9uYWwsIDMpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoaW5wdXRfc2Vla2FibGUsIDQpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIob3V0cHV0X3NlZWthYmxlLCA1KQotTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKHNlZWthYmxlLCA2KQotTkROQk9PU1RfSU9TVFJFQU1TX01PREVfSEVMUEVSKGR1YWxfc2Vla2FibGUsIDcpCi1ORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIoYmlkaXJlY3Rpb25hbF9zZWVrYWJsZSwgOCkKLU5ETkJPT1NUX0lPU1RSRUFNU19NT0RFX0hFTFBFUihkdWFsX3VzZSwgOSkKLSN1bmRlZiBORE5CT09TVF9JT1NUUkVBTVNfTU9ERV9IRUxQRVIKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpb19tb2RlX2lkIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgIE5ETkJPT1NUX1NFTEVDVF9CWV9TSVpFKGludCwgdmFsdWUsIGRldGFpbDo6aW9fbW9kZV9pbXBsX2hlbHBlcihjYXRlZ29yeSgpKSk7Ci19OwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAvLyBCb3JsYW5kIDUuNi40IHJlcXVpcmVzIHRoaXMgY2lyY3VtbG9jdXRpb24uCi1zdHJ1Y3QgbW9kZV9vZiA6IGRldGFpbDo6aW9fbW9kZV9pbXBsPCBkZXRhaWw6OmlvX21vZGVfaWQ8VD46OnZhbHVlID4geyB9OwotCi0vLyBQYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGZvciByZWZlcmVuY2Ugd3JhcHBlcnMKLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbW9kZV9vZjwgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPgotICAgIDogbW9kZV9vZjxUPgotICAgIHsgfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAvLy0tLS0tLS0tLS0tLS0tLS0tLy8KLSAgICAgICAgICAgICAgICAgICAgCi0vLy0tLS0tLS0tLS0tLS0tLS0tLURlZmluaXRpb24gb2YgaXNfZGV2aWNlLCBpc19maWx0ZXIgYW5kIGlzX2RpcmVjdC0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnPgotc3RydWN0IGhhc190cmFpdF9pbXBsIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhdGVnb3J5X29mPFQ+Ojp0eXBlIGNhdGVnb3J5OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChpc19jb252ZXJ0aWJsZTxjYXRlZ29yeSwgVGFnPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZz4KLXN0cnVjdCBoYXNfdHJhaXQgCi0gICAgOiBtcGw6OmJvb2xfPGhhc190cmFpdF9pbXBsPFQsIFRhZz46OnZhbHVlPgotICAgIHsgfTsgCi0KLX0gLy8gRW5kIG5hbWVzcGFjZSBkZXRhaWwuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZGV2aWNlIDogZGV0YWlsOjpoYXNfdHJhaXQ8VCwgZGV2aWNlX3RhZz4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2ZpbHRlciA6IGRldGFpbDo6aGFzX3RyYWl0PFQsIGZpbHRlcl90YWc+IHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19kaXJlY3QgOiBkZXRhaWw6Omhhc190cmFpdDxULCBkaXJlY3RfdGFnPiB7IH07Ci0gICAgICAgICAgICAgICAgICAgIAotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIE5ETkJPT1NUX0lPU1RSRUFNU19TVFJFQU1CVUZfVFlQRURFRlMtLS0tLS0tLS0tLy8KLQotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfU1RSRUFNQlVGX1RZUEVERUZTKFRyKSBcCi0gICAgdHlwZWRlZiBUciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgIGludF90eXBlOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5cGUgIG9mZl90eXBlOyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cG9zX3R5cGUgIHBvc190eXBlOyBcCi0gICAgLyoqLwotCi19IH0gLy8gRW5kIG5hbWVzcGFjZXMgaW9zdHJlYW1zLCBib29zdC4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY29uZmlnL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lvc3RyZWFtcy90cmFpdHNfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDJhY2VhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0c19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwOCBDb2RlUmFnZSwgTExDICh0dXJrYW5pcyBhdCBjb2RlcmFnZSBkb3QgY29tKQotLy8gKEMpIENvcHlyaWdodCAyMDAzLTIwMDcgSm9uYXRoYW4gVHVya2FuaXMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0LikKLQotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvaW9zdHJlYW1zIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiB0ZW1wbGF0ZXMgZGVmaW5lZCBpbiB0cmFpdHMuaHBwLgotCi0jaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9JT1NUUkVBTVNfSU9fVFJBSVRTX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmICAgICAgICAgICAgICAKLQotI2luY2x1ZGUgPGlvc2Z3ZD4gLy8gc3RyZWFtIHR5cGVzLCBjaGFyX3RyYWl0cy4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGlvc3RyZWFtcyB7ICAgICAgCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfaXN0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19vc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2lvc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0cmVhbWJ1ZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19pc3RyaW5nc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX29zdHJpbmdzdHJlYW07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RyaW5nc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0cmluZ2J1ZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19pZnN0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19vZnN0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19mc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2ZpbGVidWY7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfc3RkX2lvOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3N0ZF9maWxlX2RldmljZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGRfc3RyaW5nX2RldmljZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBjaGFyX3R5cGVfb2Y7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY2F0ZWdvcnlfb2Y7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaW50X3R5cGVfb2Y7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgbW9kZV9vZjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19kZXZpY2U7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2RpcmVjdDsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfYm9vc3Rfc3RyZWFtOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Jvb3N0X3N0cmVhbV9idWZmZXI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZmlsdGVyaW5nX3N0cmVhbTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19maWx0ZXJpbmdfc3RyZWFtYnVmOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2xpbmtlZDsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19ib29zdDsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19JT19UUkFJVFNfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pb3N0cmVhbXMvd3JpdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmQ4MTJlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaW9zdHJlYW1zL3dyaXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IDIwMDggQ29kZVJhZ2UsIExMQyAodHVya2FuaXMgYXQgY29kZXJhZ2UgZG90IGNvbSkKLS8vIChDKSBDb3B5cmlnaHQgMjAwMy0yMDA3IEpvbmF0aGFuIFR1cmthbmlzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dC4pCi0KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2lvc3RyZWFtcyBmb3IgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV1JJVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0lPU1RSRUFNU19XUklURV9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgLy8gREVEVUNFRF9UWVBFTkFNRSwgTVNWQy4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvY2hhcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvZGlzcGF0Y2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4gIC8vIHN0cmVhbXNpemUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvd3JhcF91bndyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9vcGVyYXRpb25zX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotLy8gTXVzdCBjb21lIGxhc3QuCi0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9jb25maWcvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvdmM2L3dyaXRlLmhwcD4KLSNlbHNlIC8vICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBpb3N0cmVhbXMgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsOwotCi19IC8vIEVuZCBuYW1lc3BhY2UgZGV0YWlsLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi17IHJldHVybiBkZXRhaWw6OndyaXRlX2RldmljZV9pbXBsPFQ+OjpwdXQoZGV0YWlsOjp1bndyYXAodCksIGMpOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc3RkOjpzdHJlYW1zaXplIHdyaXRlCi0gICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi17IHJldHVybiBkZXRhaWw6OndyaXRlX2RldmljZV9pbXBsPFQ+Ojp3cml0ZShkZXRhaWw6OnVud3JhcCh0KSwgcywgbik7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2luaz4KLWlubGluZSBzdGQ6OnN0cmVhbXNpemUKLXdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgCi0gICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQoteyByZXR1cm4gZGV0YWlsOjp3cml0ZV9maWx0ZXJfaW1wbDxUPjo6d3JpdGUoZGV0YWlsOjp1bndyYXAodCksIHNuaywgcywgbik7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tRGVmaW5pdGlvbiBvZiB3cml0ZV9kZXZpY2VfaW1wbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGwKLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX2N1c3RvbTxUPiwKLSAgICAgICAgICBvcGVyYXRpb25zPFQ+LAotICAgICAgICAgIHdyaXRlX2RldmljZV9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgIGRpc3BhdGNoPAotICAgICAgICAgICAgICAgICAgVCwgb3N0cmVhbV90YWcsIHN0cmVhbWJ1Zl90YWcsIG91dHB1dAotICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPgotICAgICAgPjo6dHlwZQotICAgIHsgfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPG9zdHJlYW1fdGFnPiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgYm9vbCBwdXQoVCYgdCwgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlIGMpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSAgICAgICAgICBjaGFyX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfSU9TVFJFQU1TX0NIQVJfVFJBSVRTKGNoYXJfdHlwZSkgIHRyYWl0c190eXBlOwotICAgICAgICByZXR1cm4gIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZSggdC5yZGJ1ZigpLT5zcHV0YyhjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjplb2YoKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZSB3cml0ZQotICAgICAgICAoVCYgdCwgY29uc3QgdHlwZW5hbWUgY2hhcl90eXBlX29mPFQ+Ojp0eXBlKiBzLCBzdGQ6OnN0cmVhbXNpemUgbikKLSAgICB7IHJldHVybiB0LnJkYnVmKCktPnNwdXRuKHMsIG4pOyB9Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZGV2aWNlX2ltcGw8c3RyZWFtYnVmX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgcHV0KFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUgICAgICAgICAgY2hhcl90eXBlOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0lPU1RSRUFNU19DSEFSX1RSQUlUUyhjaGFyX3R5cGUpICB0cmFpdHNfdHlwZTsKLSAgICAgICAgcmV0dXJuICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUodC5zcHV0YyhjKSwgdHJhaXRzX3R5cGU6OmVvZigpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUgd3JpdGUKLSAgICAgICAgKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gdC5zcHV0bihzLCBuKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2RldmljZV9pbXBsPG91dHB1dD4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIGJvb2wgcHV0KFQmIHQsIHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSBjKQotICAgIHsgcmV0dXJuIHQud3JpdGUoJmMsIDEpID09IDE7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHdyaXRlKFQmIHQsIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gICAgeyByZXR1cm4gdC53cml0ZShzLCBuKTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS1EZWZpbml0aW9uIG9mIHdyaXRlX2ZpbHRlcl9pbXBsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCB3cml0ZV9maWx0ZXJfaW1wbAotICAgIDogbXBsOjppZl88Ci0gICAgICAgICAgaXNfY3VzdG9tPFQ+LAotICAgICAgICAgIG9wZXJhdGlvbnM8VD4sCi0gICAgICAgICAgd3JpdGVfZmlsdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgZGlzcGF0Y2g8Ci0gICAgICAgICAgICAgICAgICBULCBtdWx0aWNoYXJfdGFnLCBhbnlfdGFnCi0gICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICA+Ci0gICAgICA+Ojp0eXBlCi0gICAgeyB9OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgd3JpdGVfZmlsdGVyX2ltcGw8bXVsdGljaGFyX3RhZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpbms+Ci0gICAgc3RhdGljIHN0ZDo6c3RyZWFtc2l6ZQotICAgIHdyaXRlKCBUJiB0LCBTaW5rJiBzbmssIGNvbnN0IHR5cGVuYW1lIGNoYXJfdHlwZV9vZjxUPjo6dHlwZSogcywKLSAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIG4gKQotICAgIHsgcmV0dXJuIHQud3JpdGUoc25rLCBzLCBuKTsgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHdyaXRlX2ZpbHRlcl9pbXBsPGFueV90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaW5rPgotICAgIHN0YXRpYyBzdGQ6OnN0cmVhbXNpemUKLSAgICB3cml0ZSggVCYgdCwgU2luayYgc25rLCBjb25zdCB0eXBlbmFtZSBjaGFyX3R5cGVfb2Y8VD46OnR5cGUqIHMsCi0gICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBuICkKLSAgICB7Ci0gICAgICAgIGZvciAoc3RkOjpzdHJlYW1zaXplIG9mZiA9IDA7IG9mZiA8IG47ICsrb2ZmKQotICAgICAgICAgICAgaWYgKCF0LnB1dChzbmssIHNbb2ZmXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9mZjsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotfTsKLQotfSAvLyBFbmQgbmFtZXNwYWNlIGRldGFpbC4KLQotfSB9IC8vIEVuZCBuYW1lc3BhY2VzIGlvc3RyZWFtcywgYm9vc3QuCi0KLSNlbmRpZiAvLyAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2NvbmZpZy9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9JT1NUUkVBTVNfV1JJVEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2lzX3BsYWNlaG9sZGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQwODIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXNfcGxhY2Vob2xkZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKCBfTVNDX1ZFUiApICYmICggX01TQ19WRVIgPj0gMTAyMCApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotCi0vLyAgaXNfcGxhY2Vob2xkZXIuaHBwIC0gVFIxIGlzX3BsYWNlaG9sZGVyIG1ldGFmdW5jdGlvbgotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaXNfcGxhY2Vob2xkZXIKLXsKLSAgICBlbnVtIF92dCB7IHZhbHVlID0gMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWQ2MjljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLy8gIGl0ZXJhdG9yLmhwcCB3b3JrYXJvdW5kcyBmb3Igbm9uLWNvbmZvcm1pbmcgc3RhbmRhcmQgbGlicmFyaWVzICAtLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAwLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMTIgSmFuIDAxIGFkZGVkIDxjc3RkZGVmPiBmb3Igc3RkOjpwdHJkaWZmX3QgKEplbnMgTWF1cmVyKQotLy8gIDI4IEp1biAwMCBXb3JrYXJvdW5kcyB0byBkZWFsIHdpdGgga25vd24gTVNWQyBidWdzIChEYXZpZCBBYnJhaGFtcykKLS8vICAyNiBKdW4gMDAgSW5pdGlhbCB2ZXJzaW9uIChKZXJlbXkgU2llaykKLQotI2lmbmRlZiBORE5CT09TVF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgLy8gc3RkOjpwdHJkaWZmX3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1IpICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnksIGNsYXNzIFQsCi0gICAgY2xhc3MgRGlzdGFuY2UgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICBjbGFzcyBQb2ludGVyID0gVCosIGNsYXNzIFJlZmVyZW5jZSA9IFQmPgotICBzdHJ1Y3QgaXRlcmF0b3IKLSAgewotICAgIHR5cGVkZWYgVCAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBEaXN0YW5jZSAgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgUG9pbnRlciAgIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBSZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgQ2F0ZWdvcnkgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICB9OwotIyBlbHNlCi0KLSAgLy8gZGVjbGFyZSBpdGVyYXRvcl9iYXNlIGluIG5hbWVzcGFjZSBkZXRhaWwgdG8gd29yayBhcm91bmQgTVNWQyBidWdzIHdoaWNoCi0gIC8vIHByZXZlbnQgZGVyaXZhdGlvbiBmcm9tIGFuIGlkZW50aWNhbGx5LW5hbWVkIGNsYXNzIGluIGEgZGlmZmVyZW50IG5hbWVzcGFjZS4KLSAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnksIGNsYXNzIFQsIGNsYXNzIERpc3RhbmNlLCBjbGFzcyBQb2ludGVyLCBjbGFzcyBSZWZlcmVuY2U+Ci0jICBpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDX1NURF9JVEVSQVRPUikKLSAgIHN0cnVjdCBpdGVyYXRvcl9iYXNlIDogc3RkOjppdGVyYXRvcjxDYXRlZ29yeSwgVCwgRGlzdGFuY2UsIFBvaW50ZXIsIFJlZmVyZW5jZT4ge307Ci0jICBlbHNlCi0gICBzdHJ1Y3QgaXRlcmF0b3JfYmFzZSA6IHN0ZDo6aXRlcmF0b3I8Q2F0ZWdvcnksIFQsIERpc3RhbmNlPgotICAgewotICAgICB0eXBlZGVmIFJlZmVyZW5jZSByZWZlcmVuY2U7Ci0gICAgIHR5cGVkZWYgUG9pbnRlciBwb2ludGVyOwotICAgICB0eXBlZGVmIERpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKLSAgIH07Ci0jICBlbmRpZgotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENhdGVnb3J5LCBjbGFzcyBULCBjbGFzcyBEaXN0YW5jZSA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgICAgY2xhc3MgUG9pbnRlciA9IFQqLCBjbGFzcyBSZWZlcmVuY2UgPSBUJj4KLSAgc3RydWN0IGl0ZXJhdG9yIDogbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfYmFzZTxDYXRlZ29yeSwgVCwgRGlzdGFuY2UsIFBvaW50ZXIsIFJlZmVyZW5jZT4ge307Ci0jIGVuZGlmCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGFmOTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2NvbmZpZ19kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gbm8gaW5jbHVkZSBndWFyZCBtdWx0aXBsZSBpbmNsdXNpb24gaW50ZW5kZWQKLQotLy8KLS8vIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB1bnRpbCB0aGUgYnVsayBvZiB0aGlzIGlzCi0vLyBhdmFpbGFibGUgaW4gYm9vc3QgY29uZmlnLgotLy8gMjMvMDIvMDMgdGh3Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gZm9yIHByaW9yCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfSVRFUkFUT1JfQ09ORklHX0RFRgotIyBlcnJvciB5b3UgaGF2ZSBuZXN0ZWQgY29uZmlnX2RlZiAjaW5jbHVzaW9uLgotI2Vsc2UgCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DT05GSUdfREVGCi0jZW5kaWYgCi0KLS8vIFdlIGVuYWJsZSB0aGlzIGFsd2F5cyBub3cuICBPdGhlcndpc2UsIHRoZSBzaW1wbGUgY2FzZSBpbgotLy8gbGlicy9pdGVyYXRvci90ZXN0L2NvbnN0YW50X2l0ZXJhdG9yX2Fycm93LmNwcCBmYWlscyB0byBjb21waWxlCi0vLyBiZWNhdXNlIHRoZSBvcGVyYXRvci0+IHJldHVybiBpcyBpbXByb3Blcmx5IGRlZHVjZWQgYXMgYSBub24tY29uc3QKLS8vIHBvaW50ZXIuCi0jaWYgMSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUzMSkpCi0KLS8vIFJlY2FsbCB0aGF0IGluIGdlbmVyYWwsIGNvbXBpbGVycyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLS8vIGNhbid0IHN0cmlwIGNvbnN0bmVzcy4gIENvbnNpZGVyIGNvdW50aW5nX2l0ZXJhdG9yLCB3aGljaCBub3JtYWxseQotLy8gcGFzc2VzIGEgY29uc3QgVmFsdWUgdG8gaXRlcmF0b3JfZmFjYWRlLiAgQXMgYSByZXN1bHQsIGFueSBjb2RlCi0vLyB3aGljaCBtYWtlcyBhIHN0ZDo6dmVjdG9yIG9mIHRoZSBpdGVyYXRvcidzIHZhbHVlX3R5cGUgd2lsbCBmYWlsCi0vLyB3aGVuIGl0cyBhbGxvY2F0b3IgZGVjbGFyZXMgZnVuY3Rpb25zIG92ZXJsb2FkZWQgb24gcmVmZXJlbmNlIGFuZAotLy8gY29uc3RfcmVmZXJlbmNlICh0aGUgc2FtZSB0eXBlKS4KLS8vCi0vLyBGdXJ0aGVybW9yZSwgQm9ybGFuZCA1LjUuMSBkcm9wcyBjb25zdG5lc3MgaW4gZW5vdWdoIHdheXMgdGhhdCB3ZQotLy8gZW5kIHVwIHVzaW5nIGEgcHJveHkgZm9yIG9wZXJhdG9yW10gd2hlbiB3ZSBvdGhlcndpc2Ugc2hvdWxkbid0LgotLy8gVXNpbmcgcmVmZXJlbmNlIGNvbnN0bmVzcyBnaXZlcyBpdCBhbiBleHRyYSBoaW50IHRoYXQgaXQgY2FuCi0vLyByZXR1cm4gdGhlIHZhbHVlX3R5cGUgZnJvbSBvcGVyYXRvcltdIGRpcmVjdGx5LCBidXQgaXMgbm90Ci0vLyBzdHJpY3RseSBuZWNlc3NhcnkuICBOb3Qgc3VyZSBob3cgYmVzdCB0byByZXNvbHZlIHRoaXMgb25lLgotCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9SRUZfQ09OU1RORVNTX0tJTExTX1dSSVRBQklMSVRZIDEKLQotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1QTApKSAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgKE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04sIDw9IDcwMCkgJiYgZGVmaW5lZChfTVNDX1ZFUikpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSkgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MCkpCi0gICAgCi0jIGRlZmluZSBORE5CT09TVF9OT19MVkFMVUVfUkVUVVJOX0RFVEVDVElPTgotCi0jIGlmIDAgLy8gdGVzdCBjb2RlCi0gIHN0cnVjdCB2ICB7fTsKLQotICB0eXBlZGVmICBjaGFyICgmbm8pWzNdOwotCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICBubyBmb28oVCBjb25zdCYsIC4uLik7Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIGNoYXIgZm9vKFQmLCBpbnQpOwotCi0KLSAgc3RydWN0IHZhbHVlX2l0ZXJhdG9yCi0gIHsKLSAgICAgIHYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBsdmFsdWVfZGVyZWZfaGVscGVyCi0gIHsKLSAgICAgIHN0YXRpYyBUJiB4OwotICAgICAgZW51bSB7IHZhbHVlID0gKHNpemVvZihmb28oKngsMCkpID09IDEpIH07Ci0gIH07Ci0KLSAgaW50IHoyWyhsdmFsdWVfZGVyZWZfaGVscGVyPHYqPjo6dmFsdWUgPT0gMSkgPyAxIDogLTFdOwotICBpbnQgelsobHZhbHVlX2RlcmVmX2hlbHBlcjx2YWx1ZV9pdGVyYXRvcj46OnZhbHVlKSA9PSAxID8gLTEgOiAxIF07Ci0jIGVuZGlmIAotCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0weDI0MDcpCi0jICBkZWZpbmUgTkROQk9PU1RfTk9fSVNfQ09OVkVSVElCTEUgLy8gImlzX2NvbnZlcnRpYmxlIGRvZXNuJ3Qgd29yayBmb3Igc2ltcGxlIHR5cGVzIgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA9PSAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPT0gMykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfTUlOT1JfXywgPCA0KSAmJiAhZGVmaW5lZChfX0VER19WRVJTSU9OX18pICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NTEpKQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFX1RFTVBMQVRFIC8vIFRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBmYWlscyB0byBjb21waWxlOgotCi0jICBpZiAwIC8vIHRlc3QgY29kZQotICAgICNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RydWN0IGZvbwotICAgIHsKLSAgICAgICAgZm9vKFQpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgICAgICBmb28oZm9vPFU+IGNvbnN0JiBvdGhlcikgOiBwKG90aGVyLnApIHsgfQotCi0gICAgICAgIFQgcDsKLSAgICB9OwotCi0gICAgYm9vbCB4ID0gbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPGZvbzxpbnQgY29uc3QqPiwgZm9vPGludCo+ID46OnZhbHVlOwotIyAgZW5kaWYKLQotI2VuZGlmCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19JU19DT05WRVJUSUJMRSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19JU19DT05WRVJUSUJMRV9URU1QTEFURSkpCi0jIGRlZmluZSBORE5CT09TVF9OT19TVFJJQ1RfSVRFUkFUT1JfSU5URVJPUEVSQUJJTElUWQotI2VuZGlmIAotCi0jIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jICBkZWZpbmUgTkROQk9PU1RfQVJHX0RFUEVOREVOVF9UWVBFTkFNRSB0eXBlbmFtZQotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfQVJHX0RFUEVOREVOVF9UWVBFTkFNRQotIyBlbmRpZgotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID09IDIpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg5NSkpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLQotLy8gR0NDLTIuOTUgZWFnZXJseSBpbnN0YW50aWF0ZXMgdGVtcGxhdGVkIGNvbnN0cnVjdG9ycyBhbmQgY29udmVyc2lvbgotLy8gb3BlcmF0b3JzIGluIGNvbnZlcnRpYmlsaXR5IGNoZWNrcywgY2F1c2luZyBwcmVtYXR1cmUgZXJyb3JzLgotLy8KLS8vIEJvcmxhbmQncyBwcm9ibGVtcyBhcmUgaGFyZGVyIHRvIGRpYWdub3NlIGR1ZSB0byBsYWNrIG9mIGFuCi0vLyBpbnN0YW50aWF0aW9uIHN0YWNrIGJhY2t0cmFjZS4gIFRoZXkgbWF5IGJlIGR1ZSBpbiBwYXJ0IHRvIHRoZSBmYWN0Ci0vLyB0aGF0IGl0IGRyb3BzIGN2LXF1YWxpZmljYXRpb24gd2lsbHktbmlsbHkgaW4gdGVtcGxhdGVzLgotIyAgZGVmaW5lIE5ETkJPT1NUX05PX09ORV9XQVlfSVRFUkFUT1JfSU5URVJPUAotIyBlbmRpZiAKLQotLy8gbm8gaW5jbHVkZSBndWFyZDsgbXVsdGlwbGUgaW5jbHVzaW9uIGludGVuZGVkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4MjhhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBUaG9tYXMgV2l0dCAgICAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBubyBpbmNsdWRlIGd1YXJkIG11bHRpcGxlIGluY2x1c2lvbiBpbnRlbmRlZAotCi0vLwotLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHVudGlsIHRoZSBidWxrIG9mIHRoaXMgaXMKLS8vIGF2YWlsYWJsZSBpbiBib29zdCBjb25maWcuCi0vLyAyMy8wMi8wMyB0aHcKLS8vCi0KLSN1bmRlZiBORE5CT09TVF9OT19JU19DT05WRVJUSUJMRQotI3VuZGVmIE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFX1RFTVBMQVRFCi0jdW5kZWYgTkROQk9PU1RfTk9fU1RSSUNUX0lURVJBVE9SX0lOVEVST1BFUkFCSUxJVFkKLSN1bmRlZiBORE5CT09TVF9BUkdfREVQRU5ERU5UX1RZUEVOQU1FCi0jdW5kZWYgTkROQk9PU1RfTk9fTFZBTFVFX1JFVFVSTl9ERVRFQ1RJT04KLSN1bmRlZiBORE5CT09TVF9OT19PTkVfV0FZX0lURVJBVE9SX0lOVEVST1AKLQotI2lmZGVmIE5ETkJPT1NUX0lURVJBVE9SX0NPTkZJR19ERUYKLSMgdW5kZWYgTkROQk9PU1RfSVRFUkFUT1JfQ09ORklHX0RFRgotI2Vsc2UKLSMgZXJyb3IgbWlzc2luZyBvciBuZXN0ZWQgI2luY2x1ZGUgY29uZmlnX2RlZgotI2VuZGlmIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2VuYWJsZV9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMDQxYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfRU5BQkxFX0lGXzIzMDIyMDAzVEhXX0hQUAotI2RlZmluZSBORE5CT09TVF9FTkFCTEVfSUZfMjMwMjIwMDNUSFdfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4KLQotLy8KLS8vIEJvb3N0IGl0ZXJhdG9ycyB1c2VzIGl0cyBvd24gZW5hYmxlX2lmIGNhdXNlIHdlIG5lZWQKLS8vIHNwZWNpYWwgc2VtYW50aWNzIGZvciBkZWZpY2llbnQgY29tcGlsZXJzLgotLy8gMjMvMDIvMDMgdGh3Ci0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotICBuYW1lc3BhY2UgaXRlcmF0b3JzCi0gIHsKLSAgICAvLwotICAgIC8vIEJhc2UgbWFjaGluZXJ5IGZvciBhbGwga2luZHMgb2YgZW5hYmxlIGlmCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxib29sPgotICAgIHN0cnVjdCBlbmFibGVkCi0gICAgewotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIHN0cnVjdCBiYXNlCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgfTsKLSAgICB9OwotICAgIAotICAgIC8vCi0gICAgLy8gRm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgIlN1YnN0aXR1dGlvbiBGYWlsdXJlIElzIE5vdCBBbiBFcnJvciIKLSAgICAvLyBlbmFibGVfaWYgZmFsbHMgYmFjayB0byBhbHdheXMgZW5hYmxlZC4gU2VlIGNvbW1lbnRzCi0gICAgLy8gb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnNlcXVlbmNlcy4KLSAgICAvLwotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgZW5hYmxlZDxmYWxzZT4KLSAgICB7Ci0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgc3RydWN0IGJhc2UKLSAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19TRklOQUUKLQotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLQotICAgICAgICAvLyBUaGlzIHdheSB0byBkbyBpdCB3b3VsZCBnaXZlIGEgbmljZSBlcnJvciBtZXNzYWdlIGNvbnRhaW5pbmcKLSAgICAgICAgLy8gaW52YWxpZCBvdmVybG9hZCwgYnV0IGhhcyB0aGUgYmlnIGRpc2FkdmFudGFnZSB0aGF0Ci0gICAgICAgIC8vIHRoZXJlIGlzIG5vIHJlZmVyZW5jZSB0byB1c2VyIGNvZGUgaW4gdGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHN0cnVjdCBpbnZhbGlkX292ZXJsb2FkOwotICAgICAgICAvLyB0eXBlZGVmIGludmFsaWRfb3ZlcmxvYWQgdHlwZTsKLSAgICAgICAgLy8KLSNlbmRpZgotICAgICAgfTsKLSAgICB9OwotCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwKLSAgICAgICAgICAgICAgY2xhc3MgUmV0dXJuPgotICAgIHN0cnVjdCBlbmFibGVfaWYKLSMgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JU19DT05WRVJUSUJMRSkKLSAgICAgIDogZW5hYmxlZDwoQ29uZDo6dmFsdWUpPjo6dGVtcGxhdGUgYmFzZTxSZXR1cm4+Ci0jIGVsc2UKLSAgICAgIDogbXBsOjppZGVudGl0eTxSZXR1cm4+Ci0jIGVuZGlmIAotICAgIHsKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgIHR5cGVkZWYgUmV0dXJuIHR5cGU7Ci0jIGVuZGlmIAotICAgIH07Ci0KLSAgfSAvLyBuYW1lc3BhY2UgaXRlcmF0b3JzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0VOQUJMRV9JRl8yMzAyMjAwM1RIV19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2ZhY2FkZV9pdGVyYXRvcl9jYXRlZ29yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9mYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTQ4NzkzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvZGV0YWlsL2ZhY2FkZV9pdGVyYXRvcl9jYXRlZ29yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMKLS8vIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIEZBQ0FERV9JVEVSQVRPUl9DQVRFR09SWV9ORE5CT09TVF9EV0EyMDAzMTExOF9IUFAKLSMgZGVmaW5lIEZBQ0FERV9JVEVSQVRPUl9DQVRFR09SWV9ORE5CT09TVF9EV0EyMDAzMTExOF9IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPiAgLy8gdXNlZCBpbiBpdGVyYXRvcl90YWcgaW5oZXJpdGFuY2UgbG9naWMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fzc2VydC5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4gLy8gdHJ5IHRvIGtlZXAgdGhpcyBsYXN0Ci0KLSMgaWZkZWYgTkROQk9PU1RfSVRFUkFUT1JfUkVGX0NPTlNUTkVTU19LSUxMU19XUklUQUJJTElUWQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2luZGlyZWN0X3RyYWl0cy5ocHA+Ci0jIGVuZGlmCi0KLS8vCi0vLyBpdGVyYXRvcl9jYXRlZ29yeSBkZWR1Y3Rpb24gZm9yIGl0ZXJhdG9yX2ZhY2FkZQotLy8KLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotbmFtZXNwYWNlIG5kbmJvb3N0IHsgc3RydWN0IHVzZV9kZWZhdWx0OyB9Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgIHsKLQotc3RydWN0IGlucHV0X291dHB1dF9pdGVyYXRvcl90YWcKLSAgOiBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZwotewotICAgIC8vIFVzaW5nIGluaGVyaXRhbmNlIGZvciBvbmx5IGlucHV0X2l0ZXJhdG9yX3RhZyBoZWxwcyB0byBhdm9pZAotICAgIC8vIGFtYmlndWl0aWVzIHdoZW4gYSBzdGRsaWIgaW1wbGVtZW50YXRpb24gZGlzcGF0Y2hlcyBvbiBhCi0gICAgLy8gZnVuY3Rpb24gd2hpY2ggaXMgb3ZlcmxvYWRlZCBvbiBib3RoIGlucHV0X2l0ZXJhdG9yX3RhZyBhbmQKLSAgICAvLyBvdXRwdXRfaXRlcmF0b3JfdGFnLCBhcyBTVExQb3J0IGRvZXMsIGluIGl0cyBfX3ZhbGlkX3JhbmdlCi0gICAgLy8gZnVuY3Rpb24uICBJIGNsYWltIGl0J3MgYmV0dGVyIHRvIGF2b2lkIHRoZSBhbWJpZ3VpdHkgaW4gdGhlc2UKLSAgICAvLyBjYXNlcy4KLSAgICBvcGVyYXRvciBzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZygpOwotICAgIH0KLX07Ci0KLS8vCi0vLyBUcnVlIGlmZiB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBkaXNhYmxlZCB3cml0YWJpbGl0eSBvZiB0aGlzCi0vLyBpdGVyYXRvci4gIFBhc3MgdGhlIGl0ZXJhdG9yX2ZhY2FkZSdzIFZhbHVlIHBhcmFtZXRlciBhbmQgaXRzCi0vLyBuZXN0ZWQgOjpyZWZlcmVuY2UgdHlwZS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVmFsdWVQYXJhbSwgY2xhc3MgUmVmZXJlbmNlPgotc3RydWN0IGl0ZXJhdG9yX3dyaXRhYmlsaXR5X2Rpc2FibGVkCi0jIGlmZGVmIE5ETkJPT1NUX0lURVJBVE9SX1JFRl9DT05TVE5FU1NfS0lMTFNfV1JJVEFCSUxJVFkgLy8gQWRkaW5nIFRob21hcycgbG9naWM/Ci0gIDogbXBsOjpvcl88Ci0gICAgICAgIGlzX2NvbnN0PFJlZmVyZW5jZT4KLSAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6aW5kaXJlY3RfdHJhaXRzOjppc19yZWZlcmVuY2VfdG9fY29uc3Q8UmVmZXJlbmNlPgotICAgICAgLCBpc19jb25zdDxWYWx1ZVBhcmFtPgotICAgID4KLSMgZWxzZSAKLSAgOiBpc19jb25zdDxWYWx1ZVBhcmFtPgotIyBlbmRpZiAKLXt9OwotCi0KLS8vCi0vLyBDb252ZXJ0IGFuIGl0ZXJhdG9yX2ZhY2FkZSdzIHRyYXZlcnNhbCBjYXRlZ29yeSwgVmFsdWUgcGFyYW1ldGVyLAotLy8gYW5kIDo6cmVmZXJlbmNlIHR5cGUgdG8gYW4gYXBwcm9wcmlhdGUgb2xkLXN0eWxlIGNhdGVnb3J5LgotLy8KLS8vIElmIHdyaXRhYmlsaXR5IGhhcyBiZWVuIGRpc2FibGVkIHBlciB0aGUgYWJvdmUgbWV0YWZ1bmN0aW9uLCB0aGUKLS8vIHJlc3VsdCB3aWxsIG5vdCBiZSBjb252ZXJ0aWJsZSB0byBvdXRwdXRfaXRlcmF0b3JfdGFnLgotLy8KLS8vIE90aGVyd2lzZSwgaWYgVHJhdmVyc2FsID09IHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcsIHRoZSBmb2xsb3dpbmcKLS8vIGNvbmRpdGlvbnMgd2lsbCByZXN1bHQgaW4gYSB0YWcgdGhhdCBpcyBjb252ZXJ0aWJsZSBib3RoIHRvCi0vLyBpbnB1dF9pdGVyYXRvcl90YWcgYW5kIG91dHB1dF9pdGVyYXRvcl90YWc6Ci0vLwotLy8gICAgMS4gUmVmZXJlbmNlIGlzIGEgcmVmZXJlbmNlIHRvIG5vbi1jb25zdAotLy8gICAgMi4gUmVmZXJlbmNlIGlzIG5vdCBhIHJlZmVyZW5jZSBhbmQgaXMgY29udmVydGlibGUgdG8gVmFsdWUKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVHJhdmVyc2FsLCBjbGFzcyBWYWx1ZVBhcmFtLCBjbGFzcyBSZWZlcmVuY2U+Ci1zdHJ1Y3QgaXRlcmF0b3JfZmFjYWRlX2RlZmF1bHRfY2F0ZWdvcnkKLSAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgIG1wbDo6YW5kXzwKLSAgICAgICAgICAgIGlzX3JlZmVyZW5jZTxSZWZlcmVuY2U+Ci0gICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxUcmF2ZXJzYWwsZm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgICAgICA+Ci0gICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgLCBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxUcmF2ZXJzYWwsYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcKLSAgICAgICAgICAgICAgLCBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnCi0gICAgICAgICAgICA+Ci0gICAgICAgID4KLSAgICAgICwgdHlwZW5hbWUgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCwgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgcmVhZGFiaWxpdHkKLSAgICAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxSZWZlcmVuY2UsIFZhbHVlUGFyYW0+Ci0gICAgICAgICAgICA+Ci0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnPgotICAgICAgICAgICwgbXBsOjppZGVudGl0eTxUcmF2ZXJzYWw+Ci0gICAgICAgID4KLSAgICA+Ci17Ci19OwotCi0vLyBUcnVlIGlmZiBUIGlzIGNvbnZlcnRpYmxlIHRvIGFuIG9sZC1zdHlsZSBpdGVyYXRvciBjYXRlZ29yeS4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2l0ZXJhdG9yX2NhdGVnb3J5Ci0gIDogbXBsOjpvcl88Ci0gICAgICAgIGlzX2NvbnZlcnRpYmxlPFQsc3RkOjppbnB1dF9pdGVyYXRvcl90YWc+Ci0gICAgICAsIGlzX2NvbnZlcnRpYmxlPFQsc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnPgotICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2l0ZXJhdG9yX3RyYXZlcnNhbAotICA6IGlzX2NvbnZlcnRpYmxlPFQsaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnPgote307Ci0KLS8vCi0vLyBBIGNvbXBvc2l0ZSBpdGVyYXRvcl9jYXRlZ29yeSB0YWcgY29udmVydGlibGUgdG8gQ2F0ZWdvcnkgKGEgcHVyZQotLy8gb2xkLXN0eWxlIGNhdGVnb3J5KSBhbmQgVHJhdmVyc2FsIChhIHB1cmUgdHJhdmVyc2FsIHRhZykuCi0vLyBUcmF2ZXJzYWwgbXVzdCBiZSBhIHN0cmljdCBpbmNyZWFzZSBvZiB0aGUgdHJhdmVyc2FsIHBvd2VyIGdpdmVuIGJ5Ci0vLyBDYXRlZ29yeS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgQ2F0ZWdvcnksIGNsYXNzIFRyYXZlcnNhbD4KLXN0cnVjdCBpdGVyYXRvcl9jYXRlZ29yeV93aXRoX3RyYXZlcnNhbAotICA6IENhdGVnb3J5LCBUcmF2ZXJzYWwKLXsKLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICAvLyBNYWtlIHN1cmUgdGhpcyBpc24ndCB1c2VkIHRvIGJ1aWxkIGFueSBjYXRlZ29yaWVzIHdoZXJlCi0gICAgLy8gY29udmVydGliaWxpdHkgdG8gVHJhdmVyc2FsIGlzIHJlZHVuZGFudC4gIFNob3VsZCBqdXN0IHVzZSB0aGUKLSAgICAvLyBDYXRlZ29yeSBlbGVtZW50IGluIHRoYXQgY2FzZS4KLSAgICBORE5CT09TVF9NUExfQVNTRVJUX05PVCgoCi0gICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWw8Q2F0ZWdvcnk+Ojp0eXBlCi0gICAgICAgICAgICAsIFRyYXZlcnNhbAotICAgICAgICAgID4pKTsKLQotICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKGlzX2l0ZXJhdG9yX2NhdGVnb3J5PENhdGVnb3J5PikpOwotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChpc19pdGVyYXRvcl9jYXRlZ29yeTxUcmF2ZXJzYWw+KSk7Ci0gICAgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKGlzX2l0ZXJhdG9yX3RyYXZlcnNhbDxDYXRlZ29yeT4pKTsKLSMgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxMzEwKSkKLSAgICBORE5CT09TVF9NUExfQVNTRVJUKChpc19pdGVyYXRvcl90cmF2ZXJzYWw8VHJhdmVyc2FsPikpOwotIyAgZW5kaWYgCi0jIGVuZGlmIAotfTsKLQotLy8gQ29tcHV0ZXMgYW4gaXRlcmF0b3JfY2F0ZWdvcnkgdGFnIHdob3NlIHRyYXZlcnNhbCBpcyBUcmF2ZXJzYWwgYW5kCi0vLyB3aGljaCBpcyBhcHByb3ByaWF0ZSBmb3IgYW4gaXRlcmF0b3IKLXRlbXBsYXRlIDxjbGFzcyBUcmF2ZXJzYWwsIGNsYXNzIFZhbHVlUGFyYW0sIGNsYXNzIFJlZmVyZW5jZT4KLXN0cnVjdCBmYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnlfaW1wbAotewotIyBpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChpc19pdGVyYXRvcl9jYXRlZ29yeTxUcmF2ZXJzYWw+KSk7Ci0jIGVuZGlmIAotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfZmFjYWRlX2RlZmF1bHRfY2F0ZWdvcnk8Ci0gICAgICAgIFRyYXZlcnNhbCxWYWx1ZVBhcmFtLFJlZmVyZW5jZQotICAgID46OnR5cGUgY2F0ZWdvcnk7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgaXNfc2FtZTwKLSAgICAgICAgICAgIFRyYXZlcnNhbAotICAgICAgICAgICwgdHlwZW5hbWUgaXRlcmF0b3JfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsPGNhdGVnb3J5Pjo6dHlwZQotICAgICAgICA+Ci0gICAgICAsIGNhdGVnb3J5Ci0gICAgICAsIGl0ZXJhdG9yX2NhdGVnb3J5X3dpdGhfdHJhdmVyc2FsPGNhdGVnb3J5LFRyYXZlcnNhbD4KLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLwotLy8gQ29tcHV0ZSBhbiBpdGVyYXRvcl9jYXRlZ29yeSBmb3IgaXRlcmF0b3JfZmFjYWRlCi0vLwotdGVtcGxhdGUgPGNsYXNzIENhdGVnb3J5T3JUcmF2ZXJzYWwsIGNsYXNzIFZhbHVlUGFyYW0sIGNsYXNzIFJlZmVyZW5jZT4KLXN0cnVjdCBmYWNhZGVfaXRlcmF0b3JfY2F0ZWdvcnkKLSAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgIGlzX2l0ZXJhdG9yX2NhdGVnb3J5PENhdGVnb3J5T3JUcmF2ZXJzYWw+Ci0gICAgICAsIG1wbDo6aWRlbnRpdHk8Q2F0ZWdvcnlPclRyYXZlcnNhbD4gLy8gb2xkLXN0eWxlIGNhdGVnb3JpZXMgYXJlIGZpbmUgYXMtaXMKLSAgICAgICwgZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5X2ltcGw8Q2F0ZWdvcnlPclRyYXZlcnNhbCxWYWx1ZVBhcmFtLFJlZmVyZW5jZT4KLSAgICA+Ci17Ci19OwotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OmRldGFpbAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gRkFDQURFX0lURVJBVE9SX0NBVEVHT1JZX05ETkJPT1NUX0RXQTIwMDMxMTE4X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pbnRlcm9wZXJhYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaW50ZXJvcGVyYWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YjIxMDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pbnRlcm9wZXJhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfSU5URVJPUEVSQUJMRV8yMzAyMjAwM1RIV19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX0lOVEVST1BFUkFCTEVfMjMwMjIwMDNUSFdfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHA+IC8vIG11c3QgYXBwZWFyIGxhc3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgLy8KLSAgLy8gTWV0YSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0d28KLSAgLy8gaXRlcmF0b3IgdHlwZXMgYXJlIGNvbnNpZGVyZWQgaW50ZXJvcGVyYWJsZS4KLSAgLy8KLSAgLy8gVHdvIGl0ZXJhdG9yIHR5cGVzIEEsQiBhcmUgY29uc2lkZXJlZCBpbnRlcm9wZXJhYmxlIGlmIGVpdGhlcgotICAvLyBBIGlzIGNvbnZlcnRpYmxlIHRvIEIgb3IgdmljZSB2ZXJzYS4KLSAgLy8gVGhpcyBpbnRlcm9wZXJhYmlsaXR5IGRlZmluaXRpb24gaXMgaW4gc3luYyB3aXRoIHRoZQotICAvLyBzdGFuZGFyZHMgcmVxdWlyZW1lbnRzIG9uIGNvbnN0YW50L211dGFibGUgY29udGFpbmVyCi0gIC8vIGl0ZXJhdG9ycyAoMjMuMSBbbGliLmNvbnRhaW5lci5yZXF1aXJlbWVudHNdKS4KLSAgLy8KLSAgLy8gRm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgaXNfY29udmVydGlibGUgCi0gIC8vIGlzX2ludGVyb3BlcmFibGUgZ2l2ZXMgZmFsc2UgcG9zaXRpdmVzLiBTZWUgY29tbWVudHMKLSAgLy8gb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnNlcXVlbmNlcy4KLSAgLy8KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+Ci0gIHN0cnVjdCBpc19pbnRlcm9wZXJhYmxlCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NUUklDVF9JVEVSQVRPUl9JTlRFUk9QRVJBQklMSVRZCi0gICAgOiBtcGw6OnRydWVfCi0jIGVsc2UKLSAgICA6IG1wbDo6b3JfPAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPCBBLCBCID4KLSAgICAgICAgLCBpc19jb252ZXJ0aWJsZTwgQiwgQSA+ID4KLSMgZW5kaWYKLSAgeyAKLSAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lOVEVST1BFUkFCTEVfMjMwMjIwMDNUSFdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2FkYXB0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9hZGFwdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE5YmQ1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2FkYXB0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzY1ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl8yMzAyMjAwM1RIV19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl8yMzAyMjAwM1RIV19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9vci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9JVEVSQVRPUl9SRUZfQ09OU1RORVNTX0tJTExTX1dSSVRBQklMSVRZCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgLy8gVXNlZCBhcyBhIGRlZmF1bHQgdGVtcGxhdGUgYXJndW1lbnQgaW50ZXJuYWxseSwgbWVyZWx5IHRvCi0gIC8vIGluZGljYXRlICJ1c2UgdGhlIGRlZmF1bHQiLCB0aGlzIGNhbiBhbHNvIGJlIHBhc3NlZCBieSB1c2VycwotICAvLyBleHBsaWNpdGx5IGluIG9yZGVyIHRvIHNwZWNpZnkgdGhhdCB0aGUgZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KLSAgc3RydWN0IHVzZV9kZWZhdWx0OwotICAKLSMgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgLy8gdGhlIGluY29tcGxldGVuZXNzIG9mIHVzZV9kZWZhdWx0IGNhdXNlcyBtYXNzaXZlIHByb2JsZW1zIGZvcgotICAvLyBpc19jb252ZXJ0aWJsZSAobmF0dXJhbGx5KS4gIFRoaXMgd29ya2Fyb3VuZCBpcyBmb3J0dW5hdGVseSBub3QKLSAgLy8gbmVlZGVkIGZvciB2YzYvdmM3LgotICB0ZW1wbGF0ZTxjbGFzcyBUbz4KLSAgc3RydWN0IGlzX2NvbnZlcnRpYmxlPHVzZV9kZWZhdWx0LFRvPgotICAgIDogbXBsOjpmYWxzZV8ge307Ci0jIGVuZGlmIAotICAKLSAgbmFtZXNwYWNlIGRldGFpbAotICB7Ci0KLSAgICAvLyAKLSAgICAvLyBSZXN1bHQgdHlwZSB1c2VkIGluIGVuYWJsZV9pZl9jb252ZXJ0aWJsZSBtZXRhIGZ1bmN0aW9uLgotICAgIC8vIFRoaXMgY2FuIGJlIGFuIGluY29tcGxldGUgdHlwZSwgYXMgb25seSBwb2ludGVycyB0byAKLSAgICAvLyBlbmFibGVfaWZfY29udmVydGlibGU8IC4uLiA+Ojp0eXBlIGFyZSB1c2VkLgotICAgIC8vIFdlIGNvdWxkIGhhdmUgdXNlZCB2b2lkIGZvciB0aGlzLCBidXQgY29udmVyc2lvbiB0bwotICAgIC8vIHZvaWQqIGlzIGp1c3QgdG8gZWFzeS4KLSAgICAvLwotICAgIHN0cnVjdCBlbmFibGVfdHlwZTsKLSAgfQotCi0KLSAgLy8KLSAgLy8gZW5hYmxlX2lmIGZvciB1c2UgaW4gYWRhcHRlZCBpdGVyYXRvcnMgY29uc3RydWN0b3JzLgotICAvLwotICAvLyBJbiBvcmRlciB0byBwcm92aWRlIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBhZGFwdGVkIGNvbnN0YW50IGFuZAotICAvLyBtdXRhYmxlIGl0ZXJhdG9ycywgYWRhcHRlZCBpdGVyYXRvcnMgd2lsbCB1c3VhbGx5IHByb3ZpZGUgdGVtcGxhdGVkCi0gIC8vIGNvbnZlcnNpb24gY29uc3RydWN0b3JzIG9mIHRoZSBmb2xsb3dpbmcgZm9ybQotICAvLwotICAvLyB0ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotICAvLyBjbGFzcyBhZGFwdGVkX2l0ZXJhdG9yIDoKLSAgLy8gICBwdWJsaWMgaXRlcmF0b3JfYWRhcHRvcjwgYWRhcHRlZF9pdGVyYXRvcjxJdGVyYXRvcj4sIEl0ZXJhdG9yID4KLSAgLy8gewotICAvLyBwdWJsaWM6Ci0gIC8vICAgCi0gIC8vICAgLi4uCi0gIC8vCi0gIC8vICAgdGVtcGxhdGUgPGNsYXNzIE90aGVySXRlcmF0b3I+Ci0gIC8vICAgYWRhcHRlZF9pdGVyYXRvcigKLSAgLy8gICAgICAgT3RoZXJJdGVyYXRvciBjb25zdCYgaXQKLSAgLy8gICAgICwgdHlwZW5hbWUgZW5hYmxlX2lmX2NvbnZlcnRpYmxlPE90aGVySXRlcmF0b3IsIEl0ZXJhdG9yPjo6dHlwZSogPSAwKTsKLSAgLy8KLSAgLy8gICAuLi4KLSAgLy8gfTsKLSAgLy8KLSAgLy8gZW5hYmxlX2lmX2NvbnZlcnRpYmxlIGlzIHVzZWQgdG8gcmVtb3ZlIHRob3NlIG92ZXJsb2FkcyBmcm9tIHRoZSBvdmVybG9hZAotICAvLyBzZXQgdGhhdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLiBGb3IgYWxsIHByYWN0aWNhbCBwdXJwb3NlcyBvbmx5IG92ZXJsb2FkcwotICAvLyBmb3IgY29uc3RhbnQvbXV0YWJsZSBpbnRlcmFjdGlvbiB3aWxsIHJlbWFpbi4gVGhpcyBoYXMgdGhlIGFkdmFudGFnZSB0aGF0Ci0gIC8vIG1ldGEgZnVuY3Rpb25zIGxpa2UgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlIGRvIG5vdCByZXR1cm4gZmFsc2UgcG9zaXRpdmVzLAotICAvLyBhcyB0aGV5IGNhbiBvbmx5IGxvb2sgYXQgdGhlIHNpZ25hdHVyZSBvZiB0aGUgY29udmVyc2lvbiBjb25zdHJ1Y3RvcgotICAvLyBhbmQgbm90IGF0IHRoZSBhY3R1YWwgaW5zdGFudGlhdGlvbi4KLSAgLy8KLSAgLy8gZW5hYmxlX2lmX2ludGVyb3BlcmFibGUgY2FuIGJlIHNhZmVseSB1c2VkIGluIHVzZXIgY29kZS4gSXQgZmFsbHMgYmFjayB0bwotICAvLyBhbHdheXMgZW5hYmxlZCBmb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBlbmFibGVfaWYgb3IgaXNfY29udmVydGlibGUuIAotICAvLyBUaGVyZSBpcyBubyBuZWVkIGZvciBjb21waWxlciBzcGVjaWZpYyB3b3JrYXJvdW5kcyBpbiB1c2VyIGNvZGUuIAotICAvLwotICAvLyBUaGUgb3BlcmF0b3JzIGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiBuZG5ib29zdDo6aXNfY29udmVydGlibGUgbm90IHJldHVybmluZwotICAvLyBmYWxzZSBwb3NpdGl2ZXMgZm9yIHVzZXIvbGlicmFyeSBkZWZpbmVkIGl0ZXJhdG9yIHR5cGVzLiBTZWUgY29tbWVudHMKLSAgLy8gb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGNvbnNlcXVlbmNlcy4KLSAgLy8KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2NvbnZlcnRpYmxlCi0gIHsKLSAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgIGlzX3NhbWU8RnJvbSxUbz4KLSAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGcm9tLCBUbz4KLSAgICAgICAgID4KLSAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6ZW5hYmxlX3R5cGUKLSAgICAgICwgaW50JgotICAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0gIAotIyAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0NPTlZFUlRJQkxFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRSkKLSAgCi0gIHRlbXBsYXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KLSAgc3RydWN0IGVuYWJsZV9pZl9jb252ZXJ0aWJsZQotICB7Ci0gICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmVuYWJsZV90eXBlIHR5cGU7Ci0gIH07Ci0gIAotIyAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfRlVMTF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCgxMzEwMjI5MikpICYmIE5ETkJPT1NUX01TVkMgPiAxMzAwCi0gIAotICAvLyBGb3Igc29tZSByZWFzb24gdmM3LjEgbmVlZHMgdXMgdG8gImN1dCBvZmYiIGluc3RhbnRpYXRpb24KLSAgLy8gb2YgaXNfY29udmVydGlibGUgaW4gYSBmZXcgY2FzZXMuCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2NvbnZlcnRpYmxlCi0gICAgOiBpdGVyYXRvcnM6OmVuYWJsZV9pZjwKLSAgICAgICAgbXBsOjpvcl88Ci0gICAgICAgICAgICBpc19zYW1lPEZyb20sVG8+Ci0gICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGcm9tLCBUbz4KLSAgICAgICAgPgotICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjplbmFibGVfdHlwZQotICAgID4KLSAge307Ci0gIAotIyAgZWxzZSAKLSAgCi0gIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2NvbnZlcnRpYmxlCi0gICAgOiBpdGVyYXRvcnM6OmVuYWJsZV9pZjwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxGcm9tLCBUbz4KLSAgICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjplbmFibGVfdHlwZQotICAgICAgPgotICB7fTsKLSAgICAgIAotIyBlbmRpZgotICAKLSAgLy8KLSAgLy8gRGVmYXVsdCB0ZW1wbGF0ZSBhcmd1bWVudCBoYW5kbGluZyBmb3IgaXRlcmF0b3JfYWRhcHRvcgotICAvLwotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICAvLyBJZiBUIGlzIHVzZV9kZWZhdWx0LCByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnZva2luZwotICAgIC8vIERlZmF1bHROdWxsYXJ5Rm4sIG90aGVyd2lzZSByZXR1cm4gVC4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRGVmYXVsdE51bGxhcnlGbj4KLSAgICBzdHJ1Y3QgaWFfZGZsdF9oZWxwCi0gICAgICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgIGlzX3NhbWU8VCwgdXNlX2RlZmF1bHQ+Ci0gICAgICAgICAgLCBEZWZhdWx0TnVsbGFyeUZuCi0gICAgICAgICAgLCBtcGw6OmlkZW50aXR5PFQ+Ci0gICAgICAgID4KLSAgICB7Ci0gICAgfTsKLQotICAgIC8vIEEgbWV0YWZ1bmN0aW9uIHdoaWNoIGNvbXB1dGVzIGFuIGl0ZXJhdG9yX2FkYXB0b3IncyBiYXNlIGNsYXNzLAotICAgIC8vIGEgc3BlY2lhbGl6YXRpb24gb2YgaXRlcmF0b3JfZmFjYWRlLgotICAgIHRlbXBsYXRlIDwKLSAgICAgICAgY2xhc3MgRGVyaXZlZAotICAgICAgLCBjbGFzcyBCYXNlCi0gICAgICAsIGNsYXNzIFZhbHVlCi0gICAgICAsIGNsYXNzIFRyYXZlcnNhbAotICAgICAgLCBjbGFzcyBSZWZlcmVuY2UKLSAgICAgICwgY2xhc3MgRGlmZmVyZW5jZQotICAgID4KLSAgICBzdHJ1Y3QgaXRlcmF0b3JfYWRhcHRvcl9iYXNlCi0gICAgewotICAgICAgICB0eXBlZGVmIGl0ZXJhdG9yX2ZhY2FkZTwKLSAgICAgICAgICAgIERlcml2ZWQKLSAgICAgICAgICAgIAotIyBpZmRlZiBORE5CT09TVF9JVEVSQVRPUl9SRUZfQ09OU1RORVNTX0tJTExTX1dSSVRBQklMSVRZCi0gICAgICAgICAgLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppYV9kZmx0X2hlbHA8Ci0gICAgICAgICAgICAgICAgVmFsdWUKLSAgICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8UmVmZXJlbmNlLHVzZV9kZWZhdWx0PgotICAgICAgICAgICAgICAgICAgLCBpdGVyYXRvcl92YWx1ZTxCYXNlPgotICAgICAgICAgICAgICAgICAgLCByZW1vdmVfcmVmZXJlbmNlPFJlZmVyZW5jZT4KLSAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0jIGVsc2UKLSAgICAgICAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlhX2RmbHRfaGVscDwKLSAgICAgICAgICAgICAgICBWYWx1ZSwgaXRlcmF0b3JfdmFsdWU8QmFzZT4KLSAgICAgICAgICAgID46OnR5cGUKLSMgZW5kaWYKLSAgICAgICAgICAgIAotICAgICAgICAgICwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWFfZGZsdF9oZWxwPAotICAgICAgICAgICAgICAgIFRyYXZlcnNhbAotICAgICAgICAgICAgICAsIGl0ZXJhdG9yX3RyYXZlcnNhbDxCYXNlPgotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgICAgICAgLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppYV9kZmx0X2hlbHA8Ci0gICAgICAgICAgICAgICAgUmVmZXJlbmNlCi0gICAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFZhbHVlLHVzZV9kZWZhdWx0PgotICAgICAgICAgICAgICAgICAgLCBpdGVyYXRvcl9yZWZlcmVuY2U8QmFzZT4KLSAgICAgICAgICAgICAgICAgICwgYWRkX3JlZmVyZW5jZTxWYWx1ZT4KLSAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICAgICAgICAsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlhX2RmbHRfaGVscDwKLSAgICAgICAgICAgICAgICBEaWZmZXJlbmNlLCBpdGVyYXRvcl9kaWZmZXJlbmNlPEJhc2U+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgID4KLSAgICAgICAgdHlwZTsKLSAgICB9OwotICAKLSAgICAvLyB3b3JrYXJvdW5kIGZvciBhQysrIENSIEpBR2FmMzM1MTIKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHIxLCBjbGFzcyBUcjI+Ci0gICAgaW5saW5lIHZvaWQgaXRlcmF0b3JfYWRhcHRvcl9hc3NlcnRfdHJhdmVyc2FsICgpCi0gICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoaXNfY29udmVydGlibGU8VHIxLCBUcjI+Ojp2YWx1ZSkpOwotICAgIH0KLSAgfQotICAKLSAgLy8KLSAgLy8gSXRlcmF0b3IgQWRhcHRvcgotICAvLwotICAvLyBUaGUgcGFyYW1ldGVyIG9yZGVyaW5nIGNoYW5nZWQgc2xpZ2h0bHkgd2l0aCByZXNwZWN0IHRvIGZvcm1lcgotICAvLyB2ZXJzaW9ucyBvZiBpdGVyYXRvcl9hZGFwdG9yIFRoZSBpZGVhIGlzIHRoYXQgd2hlbiB0aGUgdXNlciBuZWVkcwotICAvLyB0byBmaWRkbGUgd2l0aCB0aGUgcmVmZXJlbmNlIHR5cGUgaXQgaXMgaGlnaGx5IGxpa2VseSB0aGF0IHRoZQotICAvLyBpdGVyYXRvciBjYXRlZ29yeSBoYXMgdG8gYmUgYWRqdXN0ZWQgYXMgd2VsbC4gIEFueSBvZiB0aGUKLSAgLy8gZm9sbG93aW5nIGZvdXIgdGVtcGxhdGUgYXJndW1lbnRzIG1heSBiZSBvbW1pdHRlZCBvciBleHBsaWNpdGx5Ci0gIC8vIHJlcGxhY2VkIGJ5IHVzZV9kZWZhdWx0LgotICAvLwotICAvLyAgIFZhbHVlIC0gaWYgc3VwcGxpZWQsIHRoZSB2YWx1ZV90eXBlIG9mIHRoZSByZXN1bHRpbmcgaXRlcmF0b3IsIHVubGVzcwotICAvLyAgICAgIGNvbnN0LiBJZiBjb25zdCwgYSBjb25mb3JtaW5nIGNvbXBpbGVyIHN0cmlwcyBjb25zdG5lc3MgZm9yIHRoZQotICAvLyAgICAgIHZhbHVlX3R5cGUuIElmIG5vdCBzdXBwbGllZCwgaXRlcmF0b3JfdHJhaXRzPEJhc2U+Ojp2YWx1ZV90eXBlIGlzIHVzZWQKLSAgLy8KLSAgLy8gICBDYXRlZ29yeSAtIHRoZSB0cmF2ZXJzYWwgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBpdGVyYXRvci4gSWYgbm90Ci0gIC8vICAgICAgc3VwcGxpZWQsIGl0ZXJhdG9yX3RyYXZlcnNhbDxCYXNlPjo6dHlwZSBpcyB1c2VkLgotICAvLwotICAvLyAgIFJlZmVyZW5jZSAtIHRoZSByZWZlcmVuY2UgdHlwZSBvZiB0aGUgcmVzdWx0aW5nIGl0ZXJhdG9yLCBhbmQgaW4KLSAgLy8gICAgICBwYXJ0aWN1bGFyLCB0aGUgcmVzdWx0IHR5cGUgb2Ygb3BlcmF0b3IqKCkuIElmIG5vdCBzdXBwbGllZCBidXQKLSAgLy8gICAgICBWYWx1ZSBpcyBzdXBwbGllZCwgVmFsdWUmIGlzIHVzZWQuIE90aGVyd2lzZQotICAvLyAgICAgIGl0ZXJhdG9yX3RyYWl0czxCYXNlPjo6cmVmZXJlbmNlIGlzIHVzZWQuCi0gIC8vCi0gIC8vICAgRGlmZmVyZW5jZSAtIHRoZSBkaWZmZXJlbmNlX3R5cGUgb2YgdGhlIHJlc3VsdGluZyBpdGVyYXRvci4gSWYgbm90Ci0gIC8vICAgICAgc3VwcGxpZWQsIGl0ZXJhdG9yX3RyYWl0czxCYXNlPjo6ZGlmZmVyZW5jZV90eXBlIGlzIHVzZWQuCi0gIC8vCi0gIHRlbXBsYXRlIDwKLSAgICAgIGNsYXNzIERlcml2ZWQKLSAgICAsIGNsYXNzIEJhc2UKLSAgICAsIGNsYXNzIFZhbHVlICAgICAgICA9IHVzZV9kZWZhdWx0Ci0gICAgLCBjbGFzcyBUcmF2ZXJzYWwgICAgPSB1c2VfZGVmYXVsdAotICAgICwgY2xhc3MgUmVmZXJlbmNlICAgID0gdXNlX2RlZmF1bHQKLSAgICAsIGNsYXNzIERpZmZlcmVuY2UgICA9IHVzZV9kZWZhdWx0Ci0gID4KLSAgY2xhc3MgaXRlcmF0b3JfYWRhcHRvcgotICAgIDogcHVibGljIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX2FkYXB0b3JfYmFzZTwKLSAgICAgICAgRGVyaXZlZCwgQmFzZSwgVmFsdWUsIFRyYXZlcnNhbCwgUmVmZXJlbmNlLCBEaWZmZXJlbmNlCi0gICAgICA+Ojp0eXBlCi0gIHsKLSAgICAgIGZyaWVuZCBjbGFzcyBpdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgcHJvdGVjdGVkOgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl9hZGFwdG9yX2Jhc2U8Ci0gICAgICAgICAgRGVyaXZlZCwgQmFzZSwgVmFsdWUsIFRyYXZlcnNhbCwgUmVmZXJlbmNlLCBEaWZmZXJlbmNlCi0gICAgICA+Ojp0eXBlIHN1cGVyX3Q7Ci0gICBwdWJsaWM6Ci0gICAgICBpdGVyYXRvcl9hZGFwdG9yKCkge30KLQotICAgICAgZXhwbGljaXQgaXRlcmF0b3JfYWRhcHRvcihCYXNlIGNvbnN0ICZpdGVyKQotICAgICAgICAgIDogbV9pdGVyYXRvcihpdGVyKQotICAgICAgewotICAgICAgfQotCi0gICAgICB0eXBlZGVmIEJhc2UgYmFzZV90eXBlOwotCi0gICAgICBCYXNlIGNvbnN0JiBiYXNlKCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQotCi0gICBwcm90ZWN0ZWQ6Ci0gICAgICAvLyBmb3IgY29udmVuaWVuY2UgaW4gZGVyaXZlZCBjbGFzc2VzCi0gICAgICB0eXBlZGVmIGl0ZXJhdG9yX2FkYXB0b3I8RGVyaXZlZCxCYXNlLFZhbHVlLFRyYXZlcnNhbCxSZWZlcmVuY2UsRGlmZmVyZW5jZT4gaXRlcmF0b3JfYWRhcHRvcl87Ci0gICAgICAKLSAgICAgIC8vCi0gICAgICAvLyBsdmFsdWUgYWNjZXNzIHRvIHRoZSBCYXNlIG9iamVjdCBmb3IgRGVyaXZlZAotICAgICAgLy8KLSAgICAgIEJhc2UgY29uc3QmIGJhc2VfcmVmZXJlbmNlKCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQotCi0gICAgICBCYXNlJiBiYXNlX3JlZmVyZW5jZSgpCi0gICAgICAgIHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KLQotICAgcHJpdmF0ZToKLSAgICAgIC8vCi0gICAgICAvLyBDb3JlIGl0ZXJhdG9yIGludGVyZmFjZSBmb3IgaXRlcmF0b3JfZmFjYWRlLiAgVGhpcyBpcyBwcml2YXRlCi0gICAgICAvLyB0byBwcmV2ZW50IHRlbXB0YXRpb24gZm9yIERlcml2ZWQgY2xhc3NlcyB0byB1c2UgaXQsIHdoaWNoCi0gICAgICAvLyB3aWxsIG9mdGVuIHJlc3VsdCBpbiBhbiBlcnJvci4gIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgdXNlCi0gICAgICAvLyBiYXNlX3JlZmVyZW5jZSgpLCBhYm92ZSwgdG8gZ2V0IGRpcmVjdCBhY2Nlc3MgdG8gbV9pdGVyYXRvci4KLSAgICAgIC8vIAotICAgICAgdHlwZW5hbWUgc3VwZXJfdDo6cmVmZXJlbmNlIGRlcmVmZXJlbmNlKCkgY29uc3QKLSAgICAgICAgeyByZXR1cm4gKm1faXRlcmF0b3I7IH0KLQotICAgICAgdGVtcGxhdGUgPAotICAgICAgY2xhc3MgT3RoZXJEZXJpdmVkLCBjbGFzcyBPdGhlckl0ZXJhdG9yLCBjbGFzcyBWLCBjbGFzcyBDLCBjbGFzcyBSLCBjbGFzcyBECi0gICAgICA+ICAgCi0gICAgICBib29sIGVxdWFsKGl0ZXJhdG9yX2FkYXB0b3I8T3RoZXJEZXJpdmVkLCBPdGhlckl0ZXJhdG9yLCBWLCBDLCBSLCBEPiBjb25zdCYgeCkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgLy8gTWF5YmUgcmVhZGQgd2l0aCBzYW1lX2Rpc3RhbmNlCi0gICAgICAgIC8vICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgICAvLyAgICAgICAgICAgICAgIChkZXRhaWw6OnNhbWVfY2F0ZWdvcnlfYW5kX2RpZmZlcmVuY2U8RGVyaXZlZCxPdGhlckRlcml2ZWQ+Ojp2YWx1ZSkKLSAgICAgICAgLy8gICAgICAgICAgICAgICApOwotICAgICAgICAgIHJldHVybiBtX2l0ZXJhdG9yID09IHguYmFzZSgpOwotICAgICAgfQotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDwKLSAgICAgICAgICB0eXBlbmFtZSBzdXBlcl90OjppdGVyYXRvcl9jYXRlZ29yeQotICAgICAgPjo6dHlwZSBteV90cmF2ZXJzYWw7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfQVNTRVJUX1RSQVZFUlNBTChjYXQpIFwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX2FkYXB0b3JfYXNzZXJ0X3RyYXZlcnNhbDxteV90cmF2ZXJzYWwsIGNhdD4oKTsKLQotICAgICAgdm9pZCBhZHZhbmNlKHR5cGVuYW1lIHN1cGVyX3Q6OmRpZmZlcmVuY2VfdHlwZSBuKQotICAgICAgewotICAgICAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfQVNTRVJUX1RSQVZFUlNBTChyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWcpCi0gICAgICAgICAgbV9pdGVyYXRvciArPSBuOwotICAgICAgfQotICAKLSAgICAgIHZvaWQgaW5jcmVtZW50KCkgeyArK21faXRlcmF0b3I7IH0KLQotICAgICAgdm9pZCBkZWNyZW1lbnQoKSAKLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9JVEVSQVRPUl9BREFQVE9SX0FTU0VSVF9UUkFWRVJTQUwoYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnKQotICAgICAgICAgICAtLW1faXRlcmF0b3I7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDwKLSAgICAgICAgICBjbGFzcyBPdGhlckRlcml2ZWQsIGNsYXNzIE90aGVySXRlcmF0b3IsIGNsYXNzIFYsIGNsYXNzIEMsIGNsYXNzIFIsIGNsYXNzIEQKLSAgICAgID4gICAKLSAgICAgIHR5cGVuYW1lIHN1cGVyX3Q6OmRpZmZlcmVuY2VfdHlwZSBkaXN0YW5jZV90bygKLSAgICAgICAgICBpdGVyYXRvcl9hZGFwdG9yPE90aGVyRGVyaXZlZCwgT3RoZXJJdGVyYXRvciwgViwgQywgUiwgRD4gY29uc3QmIHkpIGNvbnN0Ci0gICAgICB7Ci0gICAgICAgICAgTkROQk9PU1RfSVRFUkFUT1JfQURBUFRPUl9BU1NFUlRfVFJBVkVSU0FMKHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZykKLSAgICAgICAgICAvLyBNYXliZSByZWFkZCB3aXRoIHNhbWVfZGlzdGFuY2UKLSAgICAgICAgICAvLyAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgICAvLyAgICAgICAgICAgICAgIChkZXRhaWw6OnNhbWVfY2F0ZWdvcnlfYW5kX2RpZmZlcmVuY2U8RGVyaXZlZCxPdGhlckRlcml2ZWQ+Ojp2YWx1ZSkKLSAgICAgICAgICAvLyAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgcmV0dXJuIHkuYmFzZSgpIC0gbV9pdGVyYXRvcjsKLSAgICAgIH0KLQotIyB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9BREFQVE9SX0FTU0VSVF9UUkFWRVJTQUwKLSAgICAgIAotICAgcHJpdmF0ZTogLy8gZGF0YSBtZW1iZXJzCi0gICAgICBCYXNlIG1faXRlcmF0b3I7Ci0gIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lURVJBVE9SX0FEQVBUT1JfMjMwMjIwMDNUSFdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYwMmU1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SSUVTX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUklFU19IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvY29uZmlnX2RlZi5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0KLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vCi0vLyBUcmF2ZXJzYWwgQ2F0ZWdvcmllcwotLy8KLQotc3RydWN0IG5vX3RyYXZlcnNhbF90YWcge307Ci0KLXN0cnVjdCBpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWcgCi0gIDogbm9fdHJhdmVyc2FsX3RhZwotewotLy8gICAgIGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZygpIHt9Ci0vLyAgICAgaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnKHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyBjb25zdCYpIHt9OwotfTsKLSAgCi1zdHJ1Y3Qgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZwotICA6IGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZwotewotLy8gICAgIHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcoKSB7fQotLy8gICAgIHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcoc3RkOjppbnB1dF9pdGVyYXRvcl90YWcgY29uc3QmKSB7fTsKLX07Ci0gIAotc3RydWN0IGZvcndhcmRfdHJhdmVyc2FsX3RhZwotICA6IHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcKLXsKLS8vICAgICBmb3J3YXJkX3RyYXZlcnNhbF90YWcoKSB7fQotLy8gICAgIGZvcndhcmRfdHJhdmVyc2FsX3RhZyhzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnIGNvbnN0Jikge307Ci19OwotICAKLXN0cnVjdCBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcKLSAgOiBmb3J3YXJkX3RyYXZlcnNhbF90YWcKLXsKLS8vICAgICBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcoKSB7fTsKLS8vICAgICBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcoc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBjb25zdCYpIHt9OwotfTsKLSAgCi1zdHJ1Y3QgcmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnCi0gIDogYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnCi17Ci0vLyAgICAgcmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnKCkge307Ci0vLyAgICAgcmFuZG9tX2FjY2Vzc190cmF2ZXJzYWxfdGFnKHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgY29uc3QmKSB7fTsKLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsgIAotICAvLwotICAvLyBDb252ZXJ0IGEgInN0cmljdGx5IG9sZC1zdHlsZSIgaXRlcmF0b3IgY2F0ZWdvcnkgdG8gYSB0cmF2ZXJzYWwKLSAgLy8gdGFnLiAgVGhpcyBpcyBicm9rZW4gb3V0IGludG8gYSBzZXBhcmF0ZSBtZXRhZnVuY3Rpb24gdG8gcmVkdWNlCi0gIC8vIHRoZSBjb3N0IG9mIGluc3RhbnRpYXRpbmcgaXRlcmF0b3JfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsLCBiZWxvdywKLSAgLy8gZm9yIG5ldy1zdHlsZSB0eXBlcy4KLSAgLy8KLSAgdGVtcGxhdGUgPGNsYXNzIENhdD4KLSAgc3RydWN0IG9sZF9jYXRlZ29yeV90b190cmF2ZXJzYWwKLSAgICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz4KLSAgICAgICAgLCBtcGw6OmlkZW50aXR5PHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPENhdCxzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnPgotICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0LHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGZvcndhcmRfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsc3RkOjppbnB1dF9pdGVyYXRvcl90YWc+Ci0gICAgICAgICAgICAgICAgICAgICwgbXBsOjppZGVudGl0eTxzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICAgICAsIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8Q2F0LHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICwgbXBsOjppZGVudGl0eTxpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAsIHZvaWQKLSAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgID4KLSAgICAgICAgICA+Ci0gICAgICA+Ci0gIHt9OwotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICB0ZW1wbGF0ZSA8PgotICBzdHJ1Y3Qgb2xkX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDxpbnQ+Ci0gIHsKLSAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gIH07Ci0jIGVuZGlmCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFRyYXZlcnNhbD4KLSAgc3RydWN0IHB1cmVfdHJhdmVyc2FsX3RhZwotICAgIDogbXBsOjpldmFsX2lmPAotICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICwgbXBsOjppZGVudGl0eTxyYW5kb21fYWNjZXNzX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxUcmF2ZXJzYWwsYmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgLCBtcGw6OmlkZW50aXR5PGJpZGlyZWN0aW9uYWxfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8VHJhdmVyc2FsLGZvcndhcmRfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8Zm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZz4KLSAgICAgICAgICAgICAgICAgICAgLCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFRyYXZlcnNhbCxpbmNyZW1lbnRhYmxlX3RyYXZlcnNhbF90YWc+Ci0gICAgICAgICAgICAgICAgICAgICAgICAsIG1wbDo6aWRlbnRpdHk8aW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnPgotICAgICAgICAgICAgICAgICAgICAgICAgLCB2b2lkCi0gICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICA+Ci0gICAgICAgICAgPgotICAgICAgPgotICB7Ci0gIH07Ci0gIAotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgdGVtcGxhdGUgPD4KLSAgc3RydWN0IHB1cmVfdHJhdmVyc2FsX3RhZzxpbnQ+Ci0gIHsKLSAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gIH07Ci0jIGVuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0KLS8vCi0vLyBDb252ZXJ0IGFuIGl0ZXJhdG9yIGNhdGVnb3J5IGludG8gYSB0cmF2ZXJzYWwgdGFnCi0vLwotdGVtcGxhdGUgPGNsYXNzIENhdD4KLXN0cnVjdCBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWwKLSAgOiBtcGw6OmV2YWxfaWY8IC8vIGlmIGFscmVhZHkgY29udmVydGlibGUgdG8gYSB0cmF2ZXJzYWwgdGFnLCB3ZSdyZSBkb25lLgotICAgICAgICBpc19jb252ZXJ0aWJsZTxDYXQsaW5jcmVtZW50YWJsZV90cmF2ZXJzYWxfdGFnPgotICAgICAgLCBtcGw6OmlkZW50aXR5PENhdD4KLSAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6b2xkX2NhdGVnb3J5X3RvX3RyYXZlcnNhbDxDYXQ+Ci0gICAgPgote307Ci0KLS8vIFRyYWl0IHRvIGdldCBhbiBpdGVyYXRvcidzIHRyYXZlcnNhbCBjYXRlZ29yeQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yID0gbXBsOjpfMT4KLXN0cnVjdCBpdGVyYXRvcl90cmF2ZXJzYWwKLSAgOiBpdGVyYXRvcl9jYXRlZ29yeV90b190cmF2ZXJzYWw8Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5Ci0gICAgPgote307Ci0KLSMgaWZkZWYgTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0vLyBIYWNrIGJlY2F1c2UgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCBkb2Vzbid0IHNlZW0gdG8gd29yawotLy8gb3V0IHdlbGwuICBJbnN0YW50aWF0aW5nIHRoZSBuZXN0ZWQgYXBwbHkgdGVtcGxhdGUgYWxzbwotLy8gcmVxdWlyZXMgaW5zdGFudGlhdGluZyBpdGVyYXRvcl90cmFpdHMgb24gdGhlCi0vLyBwbGFjZWhvbGRlci4gSW5zdGVhZCB3ZSBqdXN0IHNwZWNpYWxpemUgaXQgYXMgYSBtZXRhZnVuY3Rpb24KLS8vIGNsYXNzLgotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl90cmF2ZXJzYWw8bXBsOjpfMT4KLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgYXBwbHkgOiBpdGVyYXRvcl90cmF2ZXJzYWw8VD4KLSAgICB7fTsKLX07Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IGl0ZXJhdG9yX3RyYXZlcnNhbDxtcGw6Ol8+Ci0gIDogaXRlcmF0b3JfdHJhdmVyc2FsPG1wbDo6XzE+Ci17fTsKLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUklFU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfY29uY2VwdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jb25jZXB0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZDQ1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jb25jZXB0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotLy8gKEMpIENvcHlyaWdodCBKZXJlbXkgU2llayAyMDAyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0NPTkNFUFRTX0hQUAotI2RlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DT05DRVBUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwPgotCi0vLyBVc2UgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzIHRvIHdvcmsgYXJvdW5kIHNvbWUgTVNWQy9EaW5rdW13YXJlIHByb2JsZW1zLgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLS8vIFVzZSBuZG5ib29zdC9saW1pdHMgdG8gd29yayBhcm91bmQgbWlzc2luZyBsaW1pdHMgaGVhZGVycyBvbiBzb21lIGNvbXBpbGVycwotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHQvZGV0YWlsL2NvbmNlcHRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0X2NvbmNlcHRzCi17Ci0gIC8vIFVzZWQgYSBkaWZmZXJlbnQgbmFtZXNwYWNlIGhlcmUgKGluc3RlYWQgb2YgImJvb3N0Iikgc28gdGhhdCB0aGUKLSAgLy8gY29uY2VwdCBkZXNjcmlwdGlvbnMgZG8gbm90IHRha2UgZm9yIGdyYW50ZWQgdGhlIG5hbWVzIGluCi0gIC8vIG5hbWVzcGFjZSBuZG5ib29zdC4KLQotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBBY2Nlc3MgQ29uY2VwdHMKLQotICBORE5CT09TVF9jb25jZXB0KFJlYWRhYmxlSXRlcmF0b3IsKEl0ZXJhdG9yKSkKLSAgICA6IG5kbmJvb3N0OjpBc3NpZ25hYmxlPEl0ZXJhdG9yPgotICAgICwgbmRuYm9vc3Q6OkNvcHlDb25zdHJ1Y3RpYmxlPEl0ZXJhdG9yPgotCi0gIHsKLSAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShSZWFkYWJsZUl0ZXJhdG9yKQotICAgICAgewotCi0gICAgICAgICAgdmFsdWVfdHlwZSB2ID0gKmk7Ci0gICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyh2KTsKLSAgICAgIH0KLSAgcHJpdmF0ZToKLSAgICAgIEl0ZXJhdG9yIGk7Ci0gIH07Ci0gIAotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgVmFsdWVUeXBlID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gID4KLSAgc3RydWN0IFdyaXRhYmxlSXRlcmF0b3IKLSAgICA6IG5kbmJvb3N0OjpDb3B5Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShXcml0YWJsZUl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgICppID0gdjsKLSAgICAgIH0KLSAgcHJpdmF0ZToKLSAgICAgIFZhbHVlVHlwZSB2OwotICAgICAgSXRlcmF0b3IgaTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgVmFsdWVUeXBlID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCi0gID4KLSAgc3RydWN0IFdyaXRhYmxlSXRlcmF0b3JDb25jZXB0IDogV3JpdGFibGVJdGVyYXRvcjxJdGVyYXRvcixWYWx1ZVR5cGU+IHt9OwotICAKLSAgTkROQk9PU1RfY29uY2VwdChTd2FwcGFibGVJdGVyYXRvciwoSXRlcmF0b3IpKQotICB7Ci0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFN3YXBwYWJsZUl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgIHN0ZDo6aXRlcl9zd2FwKGkxLCBpMik7Ci0gICAgICB9Ci0gIHByaXZhdGU6Ci0gICAgICBJdGVyYXRvciBpMTsKLSAgICAgIEl0ZXJhdG9yIGkyOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoTHZhbHVlSXRlcmF0b3IsKEl0ZXJhdG9yKSkKLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoTHZhbHVlSXRlcmF0b3IpCi0gICAgICB7Ci0gICAgICAgIHZhbHVlX3R5cGUmIHIgPSBjb25zdF9jYXN0PHZhbHVlX3R5cGUmPigqaSk7Ci0gICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICB9Ci0gIHByaXZhdGU6Ci0gICAgICBJdGVyYXRvciBpOwotICB9OwotCi0gIAotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBUcmF2ZXJzYWwgQ29uY2VwdHMKLQotICBORE5CT09TVF9jb25jZXB0KEluY3JlbWVudGFibGVJdGVyYXRvciwoSXRlcmF0b3IpKQotICAgIDogbmRuYm9vc3Q6OkFzc2lnbmFibGU8SXRlcmF0b3I+Ci0gICAgLCBuZG5ib29zdDo6Q29weUNvbnN0cnVjdGlibGU8SXRlcmF0b3I+Ci0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Oml0ZXJhdG9yX3RyYXZlcnNhbDxJdGVyYXRvcj46OnR5cGUgdHJhdmVyc2FsX2NhdGVnb3J5OwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgIG5kbmJvb3N0OjpDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgIHRyYXZlcnNhbF9jYXRlZ29yeQotICAgICAgICAgICwgbmRuYm9vc3Q6OmluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZwotICAgICAgICA+KSk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoSW5jcmVtZW50YWJsZUl0ZXJhdG9yKQotICAgICAgewotICAgICAgICAgICsraTsKLSAgICAgICAgICAodm9pZClpKys7Ci0gICAgICB9Ci0gIHByaXZhdGU6Ci0gICAgICBJdGVyYXRvciBpOwotICB9OwotCi0gIE5ETkJPT1NUX2NvbmNlcHQoU2luZ2xlUGFzc0l0ZXJhdG9yLChJdGVyYXRvcikpCi0gICAgOiBJbmNyZW1lbnRhYmxlSXRlcmF0b3I8SXRlcmF0b3I+Ci0gICAgLCBuZG5ib29zdDo6RXF1YWxpdHlDb21wYXJhYmxlPEl0ZXJhdG9yPgotCi0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICBuZG5ib29zdDo6Q29udmVydGlibGU8Ci0gICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBTaW5nbGVQYXNzSXRlcmF0b3I6OnRyYXZlcnNhbF9jYXRlZ29yeQotICAgICAgICAgICAsIG5kbmJvb3N0OjpzaW5nbGVfcGFzc190cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgPiApKTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KEZvcndhcmRUcmF2ZXJzYWwsKEl0ZXJhdG9yKSkKLSAgICA6IFNpbmdsZVBhc3NJdGVyYXRvcjxJdGVyYXRvcj4KLSAgICAsIG5kbmJvb3N0OjpEZWZhdWx0Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgICAgCi0gICAgICBORE5CT09TVF9NUExfQVNTRVJUKChuZG5ib29zdDo6aXNfaW50ZWdyYWw8ZGlmZmVyZW5jZV90eXBlPikpOwotICAgICAgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTihzdGQ6Om51bWVyaWNfbGltaXRzPGRpZmZlcmVuY2VfdHlwZT46OmlzX3NpZ25lZCwgPT0sIHRydWUpOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgbmRuYm9vc3Q6OkNvbnZlcnRpYmxlPAotICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgRm9yd2FyZFRyYXZlcnNhbDo6dHJhdmVyc2FsX2NhdGVnb3J5Ci0gICAgICAgICAgICwgbmRuYm9vc3Q6OmZvcndhcmRfdHJhdmVyc2FsX3RhZwotICAgICAgICAgID4gKSk7Ci0gIH07Ci0gIAotICBORE5CT09TVF9jb25jZXB0KEJpZGlyZWN0aW9uYWxUcmF2ZXJzYWwsKEl0ZXJhdG9yKSkKLSAgICA6IEZvcndhcmRUcmF2ZXJzYWw8SXRlcmF0b3I+Ci0gIHsKLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKCgKLSAgICAgICAgICBuZG5ib29zdDo6Q29udmVydGlibGU8Ci0gICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsVHJhdmVyc2FsOjp0cmF2ZXJzYWxfY2F0ZWdvcnkKLSAgICAgICAgICAgLCBuZG5ib29zdDo6YmlkaXJlY3Rpb25hbF90cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgPiApKTsKLQotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShCaWRpcmVjdGlvbmFsVHJhdmVyc2FsKQotICAgICAgewotICAgICAgICAgIC0taTsKLSAgICAgICAgICAodm9pZClpLS07Ci0gICAgICB9Ci0gICBwcml2YXRlOgotICAgICAgSXRlcmF0b3IgaTsKLSAgfTsKLQotICBORE5CT09TVF9jb25jZXB0KFJhbmRvbUFjY2Vzc1RyYXZlcnNhbCwoSXRlcmF0b3IpKQotICAgIDogQmlkaXJlY3Rpb25hbFRyYXZlcnNhbDxJdGVyYXRvcj4KLSAgewotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgIG5kbmJvb3N0OjpDb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbDo6dHJhdmVyc2FsX2NhdGVnb3J5Ci0gICAgICAgICAgICwgbmRuYm9vc3Q6OnJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZwotICAgICAgICAgID4gKSk7Ci0KLSAgICAgIE5ETkJPT1NUX0NPTkNFUFRfVVNBR0UoUmFuZG9tQWNjZXNzVHJhdmVyc2FsKQotICAgICAgewotICAgICAgICAgIGkgKz0gbjsKLSAgICAgICAgICBpID0gaSArIG47Ci0gICAgICAgICAgaSA9IG4gKyBpOwotICAgICAgICAgIGkgLT0gbjsKLSAgICAgICAgICBpID0gaSAtIG47Ci0gICAgICAgICAgbiA9IGkgLSBqOwotICAgICAgfQotICAgICAgCi0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgQmlkaXJlY3Rpb25hbFRyYXZlcnNhbDxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBuOwotICAgICAgSXRlcmF0b3IgaSwgajsKLSAgfTsKLQotICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAvLyBJdGVyYXRvciBJbnRlcm9wZXJhYmlsaXR5IAotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcjEsIHR5cGVuYW1lIEl0ZXJhdG9yMj4KLSAgICB2b2lkIGludGVyb3Bfc2luZ2xlX3Bhc3NfY29uc3RyYWludHMoSXRlcmF0b3IxIGNvbnN0JiBpMSwgSXRlcmF0b3IyIGNvbnN0JiBpMikKLSAgICB7Ci0gICAgICAgIGJvb2wgYjsKLSAgICAgICAgYiA9IGkxID09IGkyOwotICAgICAgICBiID0gaTEgIT0gaTI7Ci0KLSAgICAgICAgYiA9IGkyID09IGkxOwotICAgICAgICBiID0gaTIgIT0gaTE7Ci0gICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoYik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yMSwgdHlwZW5hbWUgSXRlcmF0b3IyPgotICAgIHZvaWQgaW50ZXJvcF9yYW5kX2FjY2Vzc19jb25zdHJhaW50cygKLSAgICAgICAgSXRlcmF0b3IxIGNvbnN0JiBpMSwgSXRlcmF0b3IyIGNvbnN0JiBpMiwKLSAgICAgICAgbmRuYm9vc3Q6OnJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZywgbmRuYm9vc3Q6OnJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZykKLSAgICB7Ci0gICAgICAgIGJvb2wgYjsKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yMj46OmRpZmZlcmVuY2VfdHlwZSBuOwotICAgICAgICBiID0gaTEgPCAgaTI7Ci0gICAgICAgIGIgPSBpMSA8PSBpMjsKLSAgICAgICAgYiA9IGkxID4gIGkyOwotICAgICAgICBiID0gaTEgPj0gaTI7Ci0gICAgICAgIG4gPSBpMSAtICBpMjsKLQotICAgICAgICBiID0gaTIgPCAgaTE7Ci0gICAgICAgIGIgPSBpMiA8PSBpMTsKLSAgICAgICAgYiA9IGkyID4gIGkxOwotICAgICAgICBiID0gaTIgPj0gaTE7Ci0gICAgICAgIG4gPSBpMiAtICBpMTsKLSAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhiKTsKLSAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IxLCB0eXBlbmFtZSBJdGVyYXRvcjI+Ci0gICAgdm9pZCBpbnRlcm9wX3JhbmRfYWNjZXNzX2NvbnN0cmFpbnRzKAotICAgICAgICBJdGVyYXRvcjEgY29uc3QmLCBJdGVyYXRvcjIgY29uc3QmLAotICAgICAgICBuZG5ib29zdDo6c2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZywgbmRuYm9vc3Q6OnNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWcpCi0gICAgeyB9Ci0KLSAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgTkROQk9PU1RfY29uY2VwdChJbnRlcm9wZXJhYmxlSXRlcmF0b3IsKEl0ZXJhdG9yKShDb25zdEl0ZXJhdG9yKSkKLSAgewotICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cHVyZV90cmF2ZXJzYWxfdGFnPAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjppdGVyYXRvcl90cmF2ZXJzYWw8Ci0gICAgICAgICAgICAgIEl0ZXJhdG9yCi0gICAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZSB0cmF2ZXJzYWxfY2F0ZWdvcnk7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cHVyZV90cmF2ZXJzYWxfdGFnPAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjppdGVyYXRvcl90cmF2ZXJzYWw8Ci0gICAgICAgICAgICAgIENvbnN0SXRlcmF0b3IKLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICA+Ojp0eXBlIGNvbnN0X3RyYXZlcnNhbF9jYXRlZ29yeTsKLSAgICAgIAotICBwdWJsaWM6Ci0gICAgICBORE5CT09TVF9DT05DRVBUX0FTU0VSVCgoU2luZ2xlUGFzc0l0ZXJhdG9yPEl0ZXJhdG9yPikpOwotICAgICAgTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKFNpbmdsZVBhc3NJdGVyYXRvcjxDb25zdEl0ZXJhdG9yPikpOwotCi0gICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEludGVyb3BlcmFibGVJdGVyYXRvcikKLSAgICAgIHsKLSAgICAgICAgICBkZXRhaWw6OmludGVyb3Bfc2luZ2xlX3Bhc3NfY29uc3RyYWludHMoaSwgY2kpOwotICAgICAgICAgIGRldGFpbDo6aW50ZXJvcF9yYW5kX2FjY2Vzc19jb25zdHJhaW50cyhpLCBjaSwgdHJhdmVyc2FsX2NhdGVnb3J5KCksIGNvbnN0X3RyYXZlcnNhbF9jYXRlZ29yeSgpKTsKLQotICAgICAgICAgIGNpID0gaTsKLSAgICAgIH0KLSAgICAgIAotICAgcHJpdmF0ZToKLSAgICAgIEl0ZXJhdG9yICAgICAgaTsKLSAgICAgIENvbnN0SXRlcmF0b3IgY2k7Ci0gIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0X2NvbmNlcHRzCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0L2RldGFpbC9jb25jZXB0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0lURVJBVE9SX0NPTkNFUFRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9mYWNhZGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2E2NDY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3NCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuCi0vLyAoQykgQ29weXJpZ2h0IEplcmVteSBTaWVrICAgIDIwMDIuCi0vLyAoQykgQ29weXJpZ2h0IFRob21hcyBXaXR0ICAgIDIwMDIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jaWZuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV8yMzAyMjAwM1RIV19IUFAKLSNkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFXzIzMDIyMDAzVEhXX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2ludGVyb3BlcmFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX3RyYWl0cy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9kZXRhaWwvZW5hYmxlX2lmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbHdheXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfZGVmLmhwcD4gLy8gdGhpcyBnb2VzIGxhc3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIC8vIFRoaXMgZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyByZXF1aXJlZCBmb3IgdGhlIGZyaWVuZCBkZWNsYXJhdGlvbgotICAvLyBpbiBpdGVyYXRvcl9jb3JlX2FjY2VzcwotICB0ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgViwgY2xhc3MgVEMsIGNsYXNzIFIsIGNsYXNzIEQ+IGNsYXNzIGl0ZXJhdG9yX2ZhY2FkZTsKLQotICBuYW1lc3BhY2UgZGV0YWlsCi0gIHsKLSAgICAvLyBBIGJpbmFyeSBtZXRhZnVuY3Rpb24gY2xhc3MgdGhhdCBhbHdheXMgcmV0dXJucyBib29sLiAgVkM2Ci0gICAgLy8gSUNFcyBvbiBtcGw6OmFsd2F5czxib29sPiwgcHJvYmFibHkgYmVjYXVzZSBvZiB0aGUgZGVmYXVsdAotICAgIC8vIHBhcmFtZXRlcnMuCi0gICAgc3RydWN0IGFsd2F5c19ib29sMgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGJvb2wgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgLy8KLSAgICAvLyBlbmFibGUgaWYgZm9yIHVzZSBpbiBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbi4KLSAgICAvLwotICAgIHRlbXBsYXRlIDwKLSAgICAgICAgY2xhc3MgRmFjYWRlMQotICAgICAgLCBjbGFzcyBGYWNhZGUyCi0gICAgICAsIGNsYXNzIFJldHVybgotICAgID4KLSAgICBzdHJ1Y3QgZW5hYmxlX2lmX2ludGVyb3BlcmFibGUKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgbXBsOjpvcl88Ci0gICAgICAgICAgICAgICAgaXNfY29udmVydGlibGU8RmFjYWRlMSwgRmFjYWRlMj4KLSAgICAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGYWNhZGUyLCBGYWNhZGUxPgotICAgICAgICAgICAgPgotICAgICAgICAgICwgUmV0dXJuCi0gICAgICAgICAgLCBpbnRbM10KLSAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07ICAgICAgICAKLSNlbHNlCi0gICAgICA6IDo6bmRuYm9vc3Q6Oml0ZXJhdG9yczo6ZW5hYmxlX2lmPAotICAgICAgICAgICBtcGw6Om9yXzwKLSAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEZhY2FkZTEsIEZhY2FkZTI+Ci0gICAgICAgICAgICAgLCBpc19jb252ZXJ0aWJsZTxGYWNhZGUyLCBGYWNhZGUxPgotICAgICAgICAgICA+Ci0gICAgICAgICAsIFJldHVybgotICAgICAgICA+Ci0gICAge307Ci0jZW5kaWYgCi0KLSAgICAvLwotICAgIC8vIEdlbmVyYXRlcyBhc3NvY2lhdGVkIHR5cGVzIGZvciBhbiBpdGVyYXRvcl9mYWNhZGUgd2l0aCB0aGUKLSAgICAvLyBnaXZlbiBwYXJhbWV0ZXJzLgotICAgIC8vCi0gICAgdGVtcGxhdGUgPAotICAgICAgICBjbGFzcyBWYWx1ZVBhcmFtCi0gICAgICAsIGNsYXNzIENhdGVnb3J5T3JUcmF2ZXJzYWwKLSAgICAgICwgY2xhc3MgUmVmZXJlbmNlIAotICAgICAgLCBjbGFzcyBEaWZmZXJlbmNlCi0gICAgPgotICAgIHN0cnVjdCBpdGVyYXRvcl9mYWNhZGVfdHlwZXMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZmFjYWRlX2l0ZXJhdG9yX2NhdGVnb3J5PAotICAgICAgICAgICAgQ2F0ZWdvcnlPclRyYXZlcnNhbCwgVmFsdWVQYXJhbSwgUmVmZXJlbmNlCi0gICAgICAgID46OnR5cGUgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jb25zdDxWYWx1ZVBhcmFtPjo6dHlwZSB2YWx1ZV90eXBlOwotICAgICAgICAKLSAgICAgICAgLy8gTm90IHRoZSByZWFsIGFzc29jaWF0ZWQgcG9pbnRlciB0eXBlCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3Jfd3JpdGFiaWxpdHlfZGlzYWJsZWQ8VmFsdWVQYXJhbSxSZWZlcmVuY2U+Ci0gICAgICAgICAgLCBhZGRfcG9pbnRlcjxjb25zdCB2YWx1ZV90eXBlPgotICAgICAgICAgICwgYWRkX3BvaW50ZXI8dmFsdWVfdHlwZT4KLSAgICAgICAgPjo6dHlwZSBwb2ludGVyOwotICAgICAgCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAmJiAoTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCBORE5CT09TVF9URVNURURfQVQoMHg0NTIpKSAgICAgICAgICAgICAgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCBORE5CT09TVF9URVNURURfQVQoMzEwKSkpICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9SV1NURF9WRVIsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDIwMTAxKSkgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX0RJTktVTVdBUkVfU1RETElCLCA8PSAzMTApCi0KLSAgICAgICAgLy8gVG8gaW50ZXJvcGVyYXRlIHdpdGggc29tZSBicm9rZW4gbGlicmFyeS9jb21waWxlcgotICAgICAgICAvLyBjb21iaW5hdGlvbnMsIHVzZXItZGVmaW5lZCBpdGVyYXRvcnMgbXVzdCBiZSBkZXJpdmVkIGZyb20KLSAgICAgICAgLy8gc3RkOjppdGVyYXRvci4gIEl0IGlzIHBvc3NpYmxlIHRvIGltcGxlbWVudCBhIHN0YW5kYXJkCi0gICAgICAgIC8vIGxpYnJhcnkgZm9yIGJyb2tlbiBjb21waWxlcnMgd2l0aG91dCB0aGlzIGxpbWl0YXRpb24uCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX05FRURTX0lURVJBVE9SX0JBU0UgMQotCi0gICAgICAgIHR5cGVkZWYKLSAgICAgICAgICAgaXRlcmF0b3I8aXRlcmF0b3JfY2F0ZWdvcnksIHZhbHVlX3R5cGUsIERpZmZlcmVuY2UsIHBvaW50ZXIsIFJlZmVyZW5jZT4KLSAgICAgICAgYmFzZTsKLSMgZW5kaWYKLSAgICB9OwotCi0gICAgLy8gaXRlcmF0b3JzIHdob3NlIGRlcmVmZXJlbmNlIG9wZXJhdG9ycyByZWZlcmVuY2UgdGhlIHNhbWUgdmFsdWUKLSAgICAvLyBmb3IgYWxsIGl0ZXJhdG9ycyBpbnRvIHRoZSBzYW1lIHNlcXVlbmNlIChsaWtlIG1hbnkgaW5wdXQKLSAgICAvLyBpdGVyYXRvcnMpIG5lZWQgaGVscCB3aXRoIHRoZWlyIHBvc3RmaXggKys6IHRoZSByZWZlcmVuY2VkCi0gICAgLy8gdmFsdWUgbXVzdCBiZSByZWFkIGFuZCBzdG9yZWQgYXdheSBiZWZvcmUgdGhlIGluY3JlbWVudCBvY2N1cnMKLSAgICAvLyBzbyB0aGF0ICphKysgeWllbGRzIHRoZSBvcmlnaW5hbGx5IHJlZmVyZW5jZWQgZWxlbWVudCBhbmQgbm90Ci0gICAgLy8gdGhlIG5leHQgb25lLgotICAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgICBjbGFzcyBwb3N0Zml4X2luY3JlbWVudF9wcm94eQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl92YWx1ZTxJdGVyYXRvcj46OnR5cGUgdmFsdWVfdHlwZTsKLSAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBwb3N0Zml4X2luY3JlbWVudF9wcm94eShJdGVyYXRvciBjb25zdCYgeCkKLSAgICAgICAgICA6IHN0b3JlZF92YWx1ZSgqeCkKLSAgICAgICAge30KLQotICAgICAgICAvLyBSZXR1cm5pbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSBhbGxvd3Mgbm9uc2Vuc2UgbGlrZQotICAgICAgICAvLyAoKnIrKykubXV0YXRlKCksIGJ1dCBpdCBpbXBvc2VzIGZld2VyIGFzc3VtcHRpb25zIGFib3V0IHRoZQotICAgICAgICAvLyBiZWhhdmlvciBvZiB0aGUgdmFsdWVfdHlwZS4gIEluIHBhcnRpY3VsYXIsIHJlY2FsbCB0aGF0Ci0gICAgICAgIC8vICgqcikubXV0YXRlKCkgaXMgbGVnYWwgaWYgb3BlcmF0b3IqIHJldHVybnMgYnkgdmFsdWUuCi0gICAgICAgIHZhbHVlX3R5cGUmCi0gICAgICAgIG9wZXJhdG9yKigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5zdG9yZWRfdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSB2YWx1ZV90eXBlIHN0b3JlZF92YWx1ZTsKLSAgICB9OwotICAgIAotICAgIC8vCi0gICAgLy8gSW4gZ2VuZXJhbCwgd2UgY2FuJ3QgZGV0ZXJtaW5lIHRoYXQgc3VjaCBhbiBpdGVyYXRvciBpc24ndAotICAgIC8vIHdyaXRhYmxlIC0tIHdlIGFsc28gbmVlZCB0byBzdG9yZSBhIGNvcHkgb2YgdGhlIG9sZCBpdGVyYXRvciBzbwotICAgIC8vIHRoYXQgaXQgY2FuIGJlIHdyaXR0ZW4gaW50by4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgY2xhc3Mgd3JpdGFibGVfcG9zdGZpeF9pbmNyZW1lbnRfcHJveHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdmFsdWU8SXRlcmF0b3I+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgd3JpdGFibGVfcG9zdGZpeF9pbmNyZW1lbnRfcHJveHkoSXRlcmF0b3IgY29uc3QmIHgpCi0gICAgICAgICAgOiBzdG9yZWRfdmFsdWUoKngpCi0gICAgICAgICAgLCBzdG9yZWRfaXRlcmF0b3IoeCkKLSAgICAgICAge30KLQotICAgICAgICAvLyBEZXJlZmVyZW5jaW5nIG11c3QgcmV0dXJuIGEgcHJveHkgc28gdGhhdCBib3RoICpyKysgPSBvIGFuZAotICAgICAgICAvLyB2YWx1ZV90eXBlKCpyKyspIGNhbiB3b3JrLiAgSW4gdGhpcyBjYXNlLCAqciBpcyB0aGUgc2FtZSBhcwotICAgICAgICAvLyAqcisrLCBhbmQgdGhlIGNvbnZlcnNpb24gb3BlcmF0b3IgYmVsb3cgaXMgdXNlZCB0byBlbnN1cmUKLSAgICAgICAgLy8gcmVhZGFiaWxpdHkuCi0gICAgICAgIHdyaXRhYmxlX3Bvc3RmaXhfaW5jcmVtZW50X3Byb3h5IGNvbnN0JgotICAgICAgICBvcGVyYXRvciooKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQcm92aWRlcyByZWFkYWJpbGl0eSBvZiAqcisrCi0gICAgICAgIG9wZXJhdG9yIHZhbHVlX3R5cGUmKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0b3JlZF92YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFByb3ZpZGVzIHdyaXRhYmlsaXR5IG9mICpyKysKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIFQgY29uc3QmIG9wZXJhdG9yPShUIGNvbnN0JiB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAqdGhpcy0+c3RvcmVkX2l0ZXJhdG9yID0geDsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhpcyBvdmVybG9hZCBqdXN0IGluIGNhc2Ugb25seSBub24tY29uc3Qgb2JqZWN0cyBhcmUgd3JpdGFibGUKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIFQmIG9wZXJhdG9yPShUJiB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAqdGhpcy0+c3RvcmVkX2l0ZXJhdG9yID0geDsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUHJvdmlkZXMgWChyKyspCi0gICAgICAgIG9wZXJhdG9yIEl0ZXJhdG9yIGNvbnN0JigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdG9yZWRfaXRlcmF0b3I7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgIHByaXZhdGU6Ci0gICAgICAgIG11dGFibGUgdmFsdWVfdHlwZSBzdG9yZWRfdmFsdWU7Ci0gICAgICAgIEl0ZXJhdG9yIHN0b3JlZF9pdGVyYXRvcjsKLSAgICB9OwotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBSZWZlcmVuY2UsIGNsYXNzIFZhbHVlPgotICAgIHN0cnVjdCBpc19ub25fcHJveHlfcmVmZXJlbmNlX2ltcGwKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBSZWZlcmVuY2UgcjsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBSPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICBpc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgICAgICBSIGNvbnN0IHZvbGF0aWxlKgotICAgICAgICAgICAgICAsIFZhbHVlIGNvbnN0IHZvbGF0aWxlKgotICAgICAgICAgICAgPgotICAgICAgICAgICwgY2hhclsxXQotICAgICAgICAgICwgY2hhclsyXQotICAgICAgICA+Ojp0eXBlJiBoZWxwZXIoUiBjb25zdCYpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gc2l6ZW9mKGhlbHBlcihyKSkgPT0gMSk7Ci0gICAgfTsKLSAgICAgICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5jZSwgY2xhc3MgVmFsdWU+Ci0gICAgc3RydWN0IGlzX25vbl9wcm94eV9yZWZlcmVuY2UKLSAgICAgIDogbXBsOjpib29sXzwKLSAgICAgICAgICAgIGlzX25vbl9wcm94eV9yZWZlcmVuY2VfaW1wbDxSZWZlcmVuY2UsIFZhbHVlPjo6dmFsdWUKLSAgICAgICAgPgotICAgIHt9OwotIyBlbHNlIAotICAgIHRlbXBsYXRlIDxjbGFzcyBSZWZlcmVuY2UsIGNsYXNzIFZhbHVlPgotICAgIHN0cnVjdCBpc19ub25fcHJveHlfcmVmZXJlbmNlCi0gICAgICA6IGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxSZWZlcmVuY2U+Ojp0eXBlCi0gICAgICAgICAgICBjb25zdCB2b2xhdGlsZSoKLSAgICAgICAgICAsIFZhbHVlIGNvbnN0IHZvbGF0aWxlKgotICAgICAgICA+Ci0gICAge307Ci0jIGVuZGlmIAotICAgICAgICAKLSAgICAvLyBBIG1ldGFmdW5jdGlvbiB0byBjaG9vc2UgdGhlIHJlc3VsdCB0eXBlIG9mIHBvc3RmaXggKysKLSAgICAvLwotICAgIC8vIEJlY2F1c2UgdGhlIEMrKzk4IGlucHV0IGl0ZXJhdG9yIHJlcXVpcmVtZW50cyBzYXkgdGhhdCAqcisrIGhhcwotICAgIC8vIHR5cGUgVCAodmFsdWVfdHlwZSksIGltcGxlbWVudGF0aW9ucyBvZiBzb21lIHN0YW5kYXJkCi0gICAgLy8gYWxnb3JpdGhtcyBsaWtlIGxleGljb2dyYXBoaWNhbF9jb21wYXJlIG1heSB1c2UgY29uc3RydWN0aW9ucwotICAgIC8vIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgICAgICAqcisrIDwgKnMrKwotICAgIC8vCi0gICAgLy8gSWYgKnIrKyByZXR1cm5zIGEgcHJveHkgKGFzIHJlcXVpcmVkIGlmIHIgaXMgd3JpdGFibGUgYnV0IG5vdAotICAgIC8vIG11bHRpcGFzcyksIHRoaXMgc29ydCBvZiBleHByZXNzaW9uIHdpbGwgZmFpbCB1bmxlc3MgdGhlIHByb3h5Ci0gICAgLy8gc3VwcG9ydHMgdGhlIG9wZXJhdG9yPC4gIFNpbmNlIHRoZXJlIGFyZSBhbnkgbnVtYmVyIG9mIHN1Y2gKLSAgICAvLyBvcGVyYXRpb25zLCB3ZSdyZSBub3QgZ29pbmcgdG8gdHJ5IHRvIHN1cHBvcnQgdGhlbS4gIFRoZXJlZm9yZSwKLSAgICAvLyBldmVuIGlmIHIrKyByZXR1cm5zIGEgcHJveHksICpyKysgd2lsbCBvbmx5IHJldHVybiBhIHByb3h5IGlmCi0gICAgLy8gKnIgYWxzbyByZXR1cm5zIGEgcHJveHkuCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBWYWx1ZSwgY2xhc3MgUmVmZXJlbmNlLCBjbGFzcyBDYXRlZ29yeU9yVHJhdmVyc2FsPgotICAgIHN0cnVjdCBwb3N0Zml4X2luY3JlbWVudF9yZXN1bHQKLSAgICAgIDogbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgIC8vIEEgcHJveHkgaXMgb25seSBuZWVkZWQgZm9yIHJlYWRhYmxlIGl0ZXJhdG9ycwotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPFJlZmVyZW5jZSxWYWx1ZSBjb25zdCY+Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gTm8gbXVsdGlwYXNzIGl0ZXJhdG9yIGNhbiBoYXZlIHZhbHVlcyB0aGF0IGRpc2FwcGVhcgotICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBwb3NpdGlvbnMgY2FuIGJlIHJlLXZpc2l0ZWQKLSAgICAgICAgICAgICAgLCBtcGw6Om5vdF88Ci0gICAgICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfY2F0ZWdvcnlfdG9fdHJhdmVyc2FsPENhdGVnb3J5T3JUcmF2ZXJzYWw+Ojp0eXBlCi0gICAgICAgICAgICAgICAgICAgICAgLCBmb3J3YXJkX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgID4KLSAgICAgICAgICAsIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgIGlzX25vbl9wcm94eV9yZWZlcmVuY2U8UmVmZXJlbmNlLFZhbHVlPgotICAgICAgICAgICAgICAsIHBvc3RmaXhfaW5jcmVtZW50X3Byb3h5PEl0ZXJhdG9yPgotICAgICAgICAgICAgICAsIHdyaXRhYmxlX3Bvc3RmaXhfaW5jcmVtZW50X3Byb3h5PEl0ZXJhdG9yPgotICAgICAgICAgICAgPgotICAgICAgICAgICwgbXBsOjppZGVudGl0eTxJdGVyYXRvcj4KLSAgICAgICAgPgotICAgIHt9OwotCi0gICAgLy8gb3BlcmF0b3ItPigpIG5lZWRzIHNwZWNpYWwgc3VwcG9ydCBmb3IgaW5wdXQgaXRlcmF0b3JzIHRvIHN0cmljdGx5IG1lZXQgdGhlCi0gICAgLy8gc3RhbmRhcmQncyByZXF1aXJlbWVudHMuIElmICppIGlzIG5vdCBhIHJlZmVyZW5jZSB0eXBlLCB3ZSBtdXN0IHN0aWxsCi0gICAgLy8gcHJvZHVjZSBhbiBsdmFsdWUgdG8gd2hpY2ggYSBwb2ludGVyIGNhbiBiZSBmb3JtZWQuICBXZSBkbyB0aGF0IGJ5Ci0gICAgLy8gcmV0dXJuaW5nIGEgcHJveHkgb2JqZWN0IGNvbnRhaW5pbmcgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlZmVyZW5jZSBvYmplY3QuCi0gICAgdGVtcGxhdGUgPGNsYXNzIFJlZmVyZW5jZSwgY2xhc3MgUG9pbnRlcj4KLSAgICBzdHJ1Y3Qgb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2ggLy8gcHJveHkgcmVmZXJlbmNlcwotICAgIHsKLSAgICAgICAgc3RydWN0IHByb3h5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGV4cGxpY2l0IHByb3h5KFJlZmVyZW5jZSBjb25zdCAmIHgpIDogbV9yZWYoeCkge30KLSAgICAgICAgICAgIFJlZmVyZW5jZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YobV9yZWYpOyB9Ci0gICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCBmb3IgTVdDVyBhbmQgQkNDLCB3aGljaCB3b24ndCBjYWxsCi0gICAgICAgICAgICAvLyBvcGVyYXRvci0+IGFnYWluIGF1dG9tYXRpY2FsbHkgcGVyIDEzLjMuMS4yIHBhcmEgOAotICAgICAgICAgICAgb3BlcmF0b3IgUmVmZXJlbmNlKigpIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YobV9yZWYpOyB9Ci0gICAgICAgICAgICBSZWZlcmVuY2UgbV9yZWY7Ci0gICAgICAgIH07Ci0gICAgICAgIHR5cGVkZWYgcHJveHkgcmVzdWx0X3R5cGU7Ci0gICAgICAgIHN0YXRpYyByZXN1bHRfdHlwZSBhcHBseShSZWZlcmVuY2UgY29uc3QgJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0X3R5cGUoeCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvaW50ZXI+Ci0gICAgc3RydWN0IG9wZXJhdG9yX2Fycm93X2Rpc3BhdGNoPFQmLCBQb2ludGVyPiAvLyAicmVhbCIgcmVmZXJlbmNlcwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBQb2ludGVyIHJlc3VsdF90eXBlOwotICAgICAgICBzdGF0aWMgcmVzdWx0X3R5cGUgYXBwbHkoVCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YoeCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIC8vIERlYWwgd2l0aCBFVEkKLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IG9wZXJhdG9yX2Fycm93X2Rpc3BhdGNoPGludCwgaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgcmVzdWx0X3R5cGU7Ci0gICAgfTsKLSMgZW5kaWYKLQotICAgIC8vIEEgcHJveHkgcmV0dXJuIHR5cGUgZm9yIG9wZXJhdG9yW10sIG5lZWRlZCB0byBkZWFsIHdpdGgKLSAgICAvLyBpdGVyYXRvcnMgdGhhdCBtYXkgaW52YWxpZGF0ZSByZWZlcmVudHMgdXBvbiBkZXN0cnVjdGlvbi4KLSAgICAvLyBDb25zaWRlciB0aGUgdGVtcG9yYXJ5IGl0ZXJhdG9yIGluICooYSArIG4pCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICAgIGNsYXNzIG9wZXJhdG9yX2JyYWNrZXRzX3Byb3h5Ci0gICAgewotICAgICAgICAvLyBJdGVyYXRvciBpcyBhY3R1YWxseSBhbiBpdGVyYXRvcl9mYWNhZGUsIHNvIHdlIGRvIG5vdCBoYXZlIHRvCi0gICAgICAgIC8vIGdvIHRocm91Z2ggaXRlcmF0b3JfdHJhaXRzIHRvIGFjY2VzcyB0aGUgdHJhaXRzLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpyZWZlcmVuY2UgIHJlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgb3BlcmF0b3JfYnJhY2tldHNfcHJveHkoSXRlcmF0b3IgY29uc3QmIGl0ZXIpCi0gICAgICAgICAgOiBtX2l0ZXIoaXRlcikKLSAgICAgICAge30KLQotICAgICAgICBvcGVyYXRvciByZWZlcmVuY2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKm1faXRlcjsKLSAgICAgICAgfQotCi0gICAgICAgIG9wZXJhdG9yX2JyYWNrZXRzX3Byb3h5JiBvcGVyYXRvcj0odmFsdWVfdHlwZSBjb25zdCYgdmFsKQotICAgICAgICB7Ci0gICAgICAgICAgICAqbV9pdGVyID0gdmFsOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgcHJpdmF0ZToKLSAgICAgICAgSXRlcmF0b3IgbV9pdGVyOwotICAgIH07Ci0KLSAgICAvLyBBIG1ldGFmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBvcGVyYXRvcltdIG11c3QgcmV0dXJuIGEKLSAgICAvLyBwcm94eSwgb3Igd2hldGhlciBpdCBjYW4gc2ltcGx5IHJldHVybiBhIGNvcHkgb2YgdGhlIHZhbHVlX3R5cGUuCi0gICAgdGVtcGxhdGUgPGNsYXNzIFZhbHVlVHlwZSwgY2xhc3MgUmVmZXJlbmNlPgotICAgIHN0cnVjdCB1c2Vfb3BlcmF0b3JfYnJhY2tldHNfcHJveHkKLSAgICAgIDogbXBsOjpub3RfPAotICAgICAgICAgICAgbXBsOjphbmRfPAotICAgICAgICAgICAgICAgIC8vIFJlYWxseSB3ZSB3YW50IGFuIGlzX2NvcHlfY29uc3RydWN0aWJsZSB0cmFpdCBoZXJlLAotICAgICAgICAgICAgICAgIC8vIGJ1dCBpc19QT0Qgd2lsbCBoYXZlIHRvIHN1ZmZpY2UgaW4gdGhlIG1lYW50aW1lLgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19QT0Q8VmFsdWVUeXBlPgotICAgICAgICAgICAgICAsIGl0ZXJhdG9yX3dyaXRhYmlsaXR5X2Rpc2FibGVkPFZhbHVlVHlwZSxSZWZlcmVuY2U+Ci0gICAgICAgICAgICA+Ci0gICAgICAgID4KLSAgICB7fTsKLSAgICAgICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBWYWx1ZSwgY2xhc3MgUmVmZXJlbmNlPgotICAgIHN0cnVjdCBvcGVyYXRvcl9icmFja2V0c19yZXN1bHQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICB1c2Vfb3BlcmF0b3JfYnJhY2tldHNfcHJveHk8VmFsdWUsUmVmZXJlbmNlPgotICAgICAgICAgICwgb3BlcmF0b3JfYnJhY2tldHNfcHJveHk8SXRlcmF0b3I+Ci0gICAgICAgICAgLCBWYWx1ZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgICBvcGVyYXRvcl9icmFja2V0c19wcm94eTxJdGVyYXRvcj4gbWFrZV9vcGVyYXRvcl9icmFja2V0c19yZXN1bHQoSXRlcmF0b3IgY29uc3QmIGl0ZXIsIG1wbDo6dHJ1ZV8pCi0gICAgewotICAgICAgICByZXR1cm4gb3BlcmF0b3JfYnJhY2tldHNfcHJveHk8SXRlcmF0b3I+KGl0ZXIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLSAgICB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSBtYWtlX29wZXJhdG9yX2JyYWNrZXRzX3Jlc3VsdChJdGVyYXRvciBjb25zdCYgaXRlciwgbXBsOjpmYWxzZV8pCi0gICAgewotICAgICAgcmV0dXJuICppdGVyOwotICAgIH0KLQotICAgIHN0cnVjdCBjaG9vc2VfZGlmZmVyZW5jZV90eXBlCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSTEsIGNsYXNzIEkyPgotICAgICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgICA6Ci0jIGlmZGVmIE5ETkJPT1NUX05PX09ORV9XQVlfSVRFUkFUT1JfSU5URVJPUAotICAgICAgICAgIGl0ZXJhdG9yX2RpZmZlcmVuY2U8STE+Ci0jIGVsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPEkyLEkxPgotICAgICAgICAgICAgLCB0eXBlbmFtZSBJMTo6ZGlmZmVyZW5jZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEkyOjpkaWZmZXJlbmNlX3R5cGUKLSAgICAgICAgICA+Ci0jIGVsc2UgCi0gICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICBpc19jb252ZXJ0aWJsZTxJMixJMT4KLSAgICAgICAgICAgICwgaXRlcmF0b3JfZGlmZmVyZW5jZTxJMT4KLSAgICAgICAgICAgICwgaXRlcmF0b3JfZGlmZmVyZW5jZTxJMj4KLSAgICAgICAgICA+Ci0jIGVuZGlmIAotICAgICAgICB7fTsKLQotICAgIH07Ci0gIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0KLSAgLy8gTWFjcm9zIHdoaWNoIGRlc2NyaWJlIHRoZSBkZWNsYXJhdGlvbnMgb2YgYmluYXJ5IG9wZXJhdG9ycwotIyBpZmRlZiBORE5CT09TVF9OT19TVFJJQ1RfSVRFUkFUT1JfSU5URVJPUEVSQUJJTElUWQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QX0hFQUQocHJlZml4LCBvcCwgcmVzdWx0X3R5cGUpICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNsYXNzIERlcml2ZWQxLCBjbGFzcyBWMSwgY2xhc3MgVEMxLCBjbGFzcyBSZWZlcmVuY2UxLCBjbGFzcyBEaWZmZXJlbmNlMSBcCi0gICAgICAsIGNsYXNzIERlcml2ZWQyLCBjbGFzcyBWMiwgY2xhc3MgVEMyLCBjbGFzcyBSZWZlcmVuY2UyLCBjbGFzcyBEaWZmZXJlbmNlMiBcCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHByZWZpeCB0eXBlbmFtZSBtcGw6OmFwcGx5MjxyZXN1bHRfdHlwZSxEZXJpdmVkMSxEZXJpdmVkMj46OnR5cGUgXAotICAgIG9wZXJhdG9yIG9wKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQxLCBWMSwgVEMxLCBSZWZlcmVuY2UxLCBEaWZmZXJlbmNlMT4gY29uc3QmIGxocyAgIFwKLSAgICAgICwgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQyLCBWMiwgVEMyLCBSZWZlcmVuY2UyLCBEaWZmZXJlbmNlMj4gY29uc3QmIHJocykKLSMgZWxzZSAKLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUF9IRUFEKHByZWZpeCwgb3AsIHJlc3VsdF90eXBlKSAgIFwKLSAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2xhc3MgRGVyaXZlZDEsIGNsYXNzIFYxLCBjbGFzcyBUQzEsIGNsYXNzIFJlZmVyZW5jZTEsIGNsYXNzIERpZmZlcmVuY2UxIFwKLSAgICAgICwgY2xhc3MgRGVyaXZlZDIsIGNsYXNzIFYyLCBjbGFzcyBUQzIsIGNsYXNzIFJlZmVyZW5jZTIsIGNsYXNzIERpZmZlcmVuY2UyIFwKLSAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwcmVmaXggdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6ZW5hYmxlX2lmX2ludGVyb3BlcmFibGU8ICAgICAgICAgICAgIFwKLSAgICAgICAgRGVyaXZlZDEsIERlcml2ZWQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICwgdHlwZW5hbWUgbXBsOjphcHBseTI8cmVzdWx0X3R5cGUsRGVyaXZlZDEsRGVyaXZlZDI+Ojp0eXBlICAgICAgIFwKLSAgICA+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvcGVyYXRvciBvcCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQxLCBWMSwgVEMxLCBSZWZlcmVuY2UxLCBEaWZmZXJlbmNlMT4gY29uc3QmIGxocyAgIFwKLSAgICAgICwgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQyLCBWMiwgVEMyLCBSZWZlcmVuY2UyLCBEaWZmZXJlbmNlMj4gY29uc3QmIHJocykKLSMgZW5kaWYgCi0KLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUExVU19IRUFEKHByZWZpeCxhcmdzKSAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBEZXJpdmVkLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4gICBcCi0gICAgcHJlZml4IERlcml2ZWQgb3BlcmF0b3IrIGFyZ3MKLQotICAvLwotICAvLyBIZWxwZXIgY2xhc3MgZm9yIGdyYW50aW5nIGFjY2VzcyB0byB0aGUgaXRlcmF0b3IgY29yZSBpbnRlcmZhY2UuCi0gIC8vCi0gIC8vIFRoZSBzaW1wbGUgY29yZSBpbnRlcmZhY2UgaXMgdXNlZCBieSBpdGVyYXRvcl9mYWNhZGUuIFRoZSBjb3JlCi0gIC8vIGludGVyZmFjZSBvZiBhIHVzZXIvbGlicmFyeSBkZWZpbmVkIGl0ZXJhdG9yIHR5cGUgc2hvdWxkIG5vdCBiZSBtYWRlIHB1YmxpYwotICAvLyBzbyB0aGF0IGl0IGRvZXMgbm90IGNsdXR0ZXIgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIEluc3RlYWQgaXRlcmF0b3JfY29yZV9hY2Nlc3MKLSAgLy8gc2hvdWxkIGJlIG1hZGUgZnJpZW5kIHNvIHRoYXQgaXRlcmF0b3JfZmFjYWRlIGNhbiBhY2Nlc3MgdGhlIGNvcmUKLSAgLy8gaW50ZXJmYWNlIHRocm91Z2ggaXRlcmF0b3JfY29yZV9hY2Nlc3MuCi0gIC8vCi0gIGNsYXNzIGl0ZXJhdG9yX2NvcmVfYWNjZXNzCi0gIHsKLSMgaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykgICAgICAgICAgICAgICAgICAKLSAgICAgIC8vIFRhc3RlbGVzcyBhcyB0aGlzIG1heSBzZWVtLCBtYWtpbmcgYWxsIG1lbWJlcnMgcHVibGljIGFsbG93cyBtZW1iZXIgdGVtcGxhdGVzCi0gICAgICAvLyB0byB3b3JrIGluIHRoZSBhYnNlbmNlIG9mIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLgotICAgcHVibGljOgotIyBlbHNlCi0gICAgICAKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4gZnJpZW5kIGNsYXNzIGl0ZXJhdG9yX2ZhY2FkZTsKLQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTihvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QX0hFQUQoZnJpZW5kLG9wLCBuZG5ib29zdDo6ZGV0YWlsOjphbHdheXNfYm9vbDIpOwotCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPT0pCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oIT0pCi0KLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig8KQotICAgICAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKD4pCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPD0pCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPj0pCi0jICB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04KLQotICAgICAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1BfSEVBRCgKLSAgICAgICAgICBmcmllbmQsIC0sIG5kbmJvb3N0OjpkZXRhaWw6OmNob29zZV9kaWZmZXJlbmNlX3R5cGUpCi0gICAgICA7Ci0KLSAgICAgIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQoCi0gICAgICAgICAgZnJpZW5kIGlubGluZQotICAgICAgICAgICwgKGl0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLCBWLCBUQywgUiwgRD4gY29uc3QmCi0gICAgICAgICAgICwgdHlwZW5hbWUgRGVyaXZlZDo6ZGlmZmVyZW5jZV90eXBlKQotICAgICAgKQotICAgICAgOwotCi0gICAgICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUExVU19IRUFEKAotICAgICAgICAgIGZyaWVuZCBpbmxpbmUKLSAgICAgICAgLCAodHlwZW5hbWUgRGVyaXZlZDo6ZGlmZmVyZW5jZV90eXBlCi0gICAgICAgICAgICwgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsIFYsIFRDLCBSLCBEPiBjb25zdCYpCi0gICAgICApCi0gICAgICA7Ci0KLSMgZW5kaWYKLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICAgIHN0YXRpYyB0eXBlbmFtZSBGYWNhZGU6OnJlZmVyZW5jZSBkZXJlZmVyZW5jZShGYWNhZGUgY29uc3QmIGYpCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGYuZGVyZWZlcmVuY2UoKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICAgIHN0YXRpYyB2b2lkIGluY3JlbWVudChGYWNhZGUmIGYpCi0gICAgICB7Ci0gICAgICAgICAgZi5pbmNyZW1lbnQoKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZT4KLSAgICAgIHN0YXRpYyB2b2lkIGRlY3JlbWVudChGYWNhZGUmIGYpCi0gICAgICB7Ci0gICAgICAgICAgZi5kZWNyZW1lbnQoKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZTEsIGNsYXNzIEZhY2FkZTI+Ci0gICAgICBzdGF0aWMgYm9vbCBlcXVhbChGYWNhZGUxIGNvbnN0JiBmMSwgRmFjYWRlMiBjb25zdCYgZjIsIG1wbDo6dHJ1ZV8pCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuIGYxLmVxdWFsKGYyKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZTEsIGNsYXNzIEZhY2FkZTI+Ci0gICAgICBzdGF0aWMgYm9vbCBlcXVhbChGYWNhZGUxIGNvbnN0JiBmMSwgRmFjYWRlMiBjb25zdCYgZjIsIG1wbDo6ZmFsc2VfKQotICAgICAgewotICAgICAgICAgIHJldHVybiBmMi5lcXVhbChmMSk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBGYWNhZGU+Ci0gICAgICBzdGF0aWMgdm9pZCBhZHZhbmNlKEZhY2FkZSYgZiwgdHlwZW5hbWUgRmFjYWRlOjpkaWZmZXJlbmNlX3R5cGUgbikKLSAgICAgIHsKLSAgICAgICAgICBmLmFkdmFuY2Uobik7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBGYWNhZGUxLCBjbGFzcyBGYWNhZGUyPgotICAgICAgc3RhdGljIHR5cGVuYW1lIEZhY2FkZTE6OmRpZmZlcmVuY2VfdHlwZSBkaXN0YW5jZV9mcm9tKAotICAgICAgICAgIEZhY2FkZTEgY29uc3QmIGYxLCBGYWNhZGUyIGNvbnN0JiBmMiwgbXBsOjp0cnVlXykKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gLWYxLmRpc3RhbmNlX3RvKGYyKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGUgPGNsYXNzIEZhY2FkZTEsIGNsYXNzIEZhY2FkZTI+Ci0gICAgICBzdGF0aWMgdHlwZW5hbWUgRmFjYWRlMjo6ZGlmZmVyZW5jZV90eXBlIGRpc3RhbmNlX2Zyb20oCi0gICAgICAgICAgRmFjYWRlMSBjb25zdCYgZjEsIEZhY2FkZTIgY29uc3QmIGYyLCBtcGw6OmZhbHNlXykKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZjIuZGlzdGFuY2VfdG8oZjEpOwotICAgICAgfQotCi0gICAgICAvLwotICAgICAgLy8gQ3VyaW91c2x5IFJlY3VycmluZyBUZW1wbGF0ZSBpbnRlcmZhY2UuCi0gICAgICAvLwotICAgICAgdGVtcGxhdGUgPGNsYXNzIEksIGNsYXNzIFYsIGNsYXNzIFRDLCBjbGFzcyBSLCBjbGFzcyBEPgotICAgICAgc3RhdGljIEkmIGRlcml2ZWQoaXRlcmF0b3JfZmFjYWRlPEksVixUQyxSLEQ+JiBmYWNhZGUpCi0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxJKj4oJmZhY2FkZSk7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBJLCBjbGFzcyBWLCBjbGFzcyBUQywgY2xhc3MgUiwgY2xhc3MgRD4KLSAgICAgIHN0YXRpYyBJIGNvbnN0JiBkZXJpdmVkKGl0ZXJhdG9yX2ZhY2FkZTxJLFYsVEMsUixEPiBjb25zdCYgZmFjYWRlKQotICAgICAgewotICAgICAgICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8SSBjb25zdCo+KCZmYWNhZGUpOwotICAgICAgfQotCi0gICBwcml2YXRlOgotICAgICAgLy8gb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGFyZSB1c2VsZXNzCi0gICAgICBpdGVyYXRvcl9jb3JlX2FjY2VzcygpOyAvL3VuZGVmaW5lZAotICB9OwotCi0gIC8vCi0gIC8vIGl0ZXJhdG9yX2ZhY2FkZSAtIHVzZSBhcyBhIHB1YmxpYyBiYXNlIGNsYXNzIGZvciBkZWZpbmluZyBuZXcKLSAgLy8gc3RhbmRhcmQtY29uZm9ybWluZyBpdGVyYXRvcnMuCi0gIC8vCi0gIHRlbXBsYXRlIDwKLSAgICAgIGNsYXNzIERlcml2ZWQgICAgICAgICAgICAgLy8gVGhlIGRlcml2ZWQgaXRlcmF0b3IgdHlwZSBiZWluZyBjb25zdHJ1Y3RlZAotICAgICwgY2xhc3MgVmFsdWUKLSAgICAsIGNsYXNzIENhdGVnb3J5T3JUcmF2ZXJzYWwKLSAgICAsIGNsYXNzIFJlZmVyZW5jZSAgID0gVmFsdWUmCi0gICAgLCBjbGFzcyBEaWZmZXJlbmNlICA9IHN0ZDo6cHRyZGlmZl90Ci0gID4KLSAgY2xhc3MgaXRlcmF0b3JfZmFjYWRlCi0jIGlmZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9ORUVEU19JVEVSQVRPUl9CQVNFCi0gICAgOiBwdWJsaWMgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfZmFjYWRlX3R5cGVzPAotICAgICAgICAgVmFsdWUsIENhdGVnb3J5T3JUcmF2ZXJzYWwsIFJlZmVyZW5jZSwgRGlmZmVyZW5jZQotICAgICAgPjo6YmFzZQotIyAgdW5kZWYgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX05FRURTX0lURVJBVE9SX0JBU0UKLSMgZW5kaWYKLSAgewotICAgcHJpdmF0ZToKLSAgICAgIC8vCi0gICAgICAvLyBDdXJpb3VzbHkgUmVjdXJyaW5nIFRlbXBsYXRlIGludGVyZmFjZS4KLSAgICAgIC8vCi0gICAgICBEZXJpdmVkJiBkZXJpdmVkKCkKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKTsKLSAgICAgIH0KLQotICAgICAgRGVyaXZlZCBjb25zdCYgZGVyaXZlZCgpIGNvbnN0Ci0gICAgICB7Ci0gICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxEZXJpdmVkIGNvbnN0Kj4odGhpcyk7Ci0gICAgICB9Ci0KLSAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfZmFjYWRlX3R5cGVzPAotICAgICAgICAgVmFsdWUsIENhdGVnb3J5T3JUcmF2ZXJzYWwsIFJlZmVyZW5jZSwgRGlmZmVyZW5jZQotICAgICAgPiBhc3NvY2lhdGVkX3R5cGVzOwotCi0gICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6Om9wZXJhdG9yX2Fycm93X2Rpc3BhdGNoPAotICAgICAgICAgIFJlZmVyZW5jZQotICAgICAgICAsIHR5cGVuYW1lIGFzc29jaWF0ZWRfdHlwZXM6OnBvaW50ZXIKLSAgICAgID4gb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2hfOwotCi0gICBwcm90ZWN0ZWQ6Ci0gICAgICAvLyBGb3IgdXNlIGJ5IGRlcml2ZWQgY2xhc3NlcwotICAgICAgdHlwZWRlZiBpdGVyYXRvcl9mYWNhZGU8RGVyaXZlZCxWYWx1ZSxDYXRlZ29yeU9yVHJhdmVyc2FsLFJlZmVyZW5jZSxEaWZmZXJlbmNlPiBpdGVyYXRvcl9mYWNhZGVfOwotICAgICAgCi0gICBwdWJsaWM6Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzb2NpYXRlZF90eXBlczo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgdHlwZWRlZiBSZWZlcmVuY2UgcmVmZXJlbmNlOwotICAgICAgdHlwZWRlZiBEaWZmZXJlbmNlIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBvcGVyYXRvcl9hcnJvd19kaXNwYXRjaF86OnJlc3VsdF90eXBlIHBvaW50ZXI7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzb2NpYXRlZF90eXBlczo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgICAgIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdAotICAgICAgewotICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9jb3JlX2FjY2Vzczo6ZGVyZWZlcmVuY2UodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgIH0KLQotICAgICAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gb3BlcmF0b3JfYXJyb3dfZGlzcGF0Y2hfOjphcHBseSgqdGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgIH0KLSAgICAgICAgCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpvcGVyYXRvcl9icmFja2V0c19yZXN1bHQ8RGVyaXZlZCxWYWx1ZSxyZWZlcmVuY2U+Ojp0eXBlCi0gICAgICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdAotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6dXNlX29wZXJhdG9yX2JyYWNrZXRzX3Byb3h5PFZhbHVlLFJlZmVyZW5jZT4gdXNlX3Byb3h5OwotICAgICAgICAgIAotICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX29wZXJhdG9yX2JyYWNrZXRzX3Jlc3VsdDxEZXJpdmVkPigKLSAgICAgICAgICAgICAgdGhpcy0+ZGVyaXZlZCgpICsgbgotICAgICAgICAgICAgLCB1c2VfcHJveHkoKQotICAgICAgICAgICk7Ci0gICAgICB9Ci0KLSAgICAgIERlcml2ZWQmIG9wZXJhdG9yKysoKQotICAgICAgewotICAgICAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjppbmNyZW1lbnQodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+ZGVyaXZlZCgpOwotICAgICAgfQotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cG9zdGZpeF9pbmNyZW1lbnRfcmVzdWx0PERlcml2ZWQsVmFsdWUsUmVmZXJlbmNlLENhdGVnb3J5T3JUcmF2ZXJzYWw+Ojp0eXBlCi0gICAgICBvcGVyYXRvcisrKGludCkKLSAgICAgIHsKLSAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpwb3N0Zml4X2luY3JlbWVudF9yZXN1bHQ8RGVyaXZlZCxWYWx1ZSxSZWZlcmVuY2UsQ2F0ZWdvcnlPclRyYXZlcnNhbD46OnR5cGUKLSAgICAgICAgICB0bXAodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgICAgICArKyp0aGlzOwotICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICB9Ci0jIGVuZGlmCi0gICAgICAKLSAgICAgIERlcml2ZWQmIG9wZXJhdG9yLS0oKQotICAgICAgewotICAgICAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjpkZWNyZW1lbnQodGhpcy0+ZGVyaXZlZCgpKTsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+ZGVyaXZlZCgpOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkIG9wZXJhdG9yLS0oaW50KQotICAgICAgewotICAgICAgICAgIERlcml2ZWQgdG1wKHRoaXMtPmRlcml2ZWQoKSk7Ci0gICAgICAgICAgLS0qdGhpczsKLSAgICAgICAgICByZXR1cm4gdG1wOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkJiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBuKQotICAgICAgewotICAgICAgICAgIGl0ZXJhdG9yX2NvcmVfYWNjZXNzOjphZHZhbmNlKHRoaXMtPmRlcml2ZWQoKSwgbik7Ci0gICAgICAgICAgcmV0dXJuIHRoaXMtPmRlcml2ZWQoKTsKLSAgICAgIH0KLQotICAgICAgRGVyaXZlZCYgb3BlcmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgbikKLSAgICAgIHsKLSAgICAgICAgICBpdGVyYXRvcl9jb3JlX2FjY2Vzczo6YWR2YW5jZSh0aGlzLT5kZXJpdmVkKCksIC1uKTsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+ZGVyaXZlZCgpOwotICAgICAgfQotCi0gICAgICBEZXJpdmVkIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgeCkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICBEZXJpdmVkIHJlc3VsdCh0aGlzLT5kZXJpdmVkKCkpOwotICAgICAgICAgIHJldHVybiByZXN1bHQgLT0geDsKLSAgICAgIH0KLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgIC8vIFRoZXJlIGFwcGVhcnMgdG8gYmUgYSBidWcgd2hpY2ggdHJhc2hlcyB0aGUgZGF0YSBvZiBjbGFzc2VzCi0gICAgICAvLyBkZXJpdmVkIGZyb20gaXRlcmF0b3JfZmFjYWRlIHdoZW4gdGhleSBhcmUgYXNzaWduZWQgdW5sZXNzIHdlCi0gICAgICAvLyBkZWZpbmUgdGhpcyBhc3NpZ25tZW50IG9wZXJhdG9yLiAgVGhpcyBidWcgaXMgb25seSByZXZlYWxlZAotICAgICAgLy8gKHNvIGZhcikgaW4gU1RMUG9ydCBkZWJ1ZyBtb2RlLCBidXQgaXQncyBjbGVhcmx5IGEgY29kZWdlbgotICAgICAgLy8gcHJvYmxlbSBzbyB3ZSBhcHBseSB0aGUgd29ya2Fyb3VuZCBmb3IgYWxsIE1TVkM2LgotICAgICAgaXRlcmF0b3JfZmFjYWRlJiBvcGVyYXRvcj0oaXRlcmF0b3JfZmFjYWRlIGNvbnN0JikKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0jIGVuZGlmCi0gIH07Ci0KLSMgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICB0ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgViwgY2xhc3MgVEMsIGNsYXNzIFIsIGNsYXNzIEQ+Ci0gIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpwb3N0Zml4X2luY3JlbWVudF9yZXN1bHQ8SSxWLFIsVEM+Ojp0eXBlCi0gIG9wZXJhdG9yKysoCi0gICAgICBpdGVyYXRvcl9mYWNhZGU8SSxWLFRDLFIsRD4mIGkKLSAgICAsIGludAotICApCi0gIHsKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnBvc3RmaXhfaW5jcmVtZW50X3Jlc3VsdDxJLFYsUixUQz46OnR5cGUKLSAgICAgICAgICB0bXAoKnN0YXRpY19jYXN0PEkqPigmaSkpOwotICAgICAgCi0gICAgICArK2k7Ci0gICAgICAKLSAgICAgIHJldHVybiB0bXA7Ci0gIH0KLSMgZW5kaWYgCi0KLSAgCi0gIC8vCi0gIC8vIENvbXBhcmlzb24gb3BlcmF0b3IgaW1wbGVtZW50YXRpb24uIFRoZSBsaWJyYXJ5IHN1cHBsaWVkIG9wZXJhdG9ycwotICAvLyBlbmFibGVzIHRoZSB1c2VyIHRvIHByb3ZpZGUgZnVsbHkgaW50ZXJvcGVyYWJsZSBjb25zdGFudC9tdXRhYmxlCi0gIC8vIGl0ZXJhdG9yIHR5cGVzLiBJLmUuIHRoZSBsaWJyYXJ5IHByb3ZpZGVzIGFsbCBvcGVyYXRvcnMKLSAgLy8gZm9yIGFsbCBtdXRhYmxlL2NvbnN0YW50IGl0ZXJhdG9yIGNvbWJpbmF0aW9ucy4KLSAgLy8KLSAgLy8gTm90ZSB0aG91Z2ggdGhhdCB0aGlzIGtpbmQgb2YgaW50ZXJvcGVyYWJpbGl0eSBmb3IgY29uc3RhbnQvbXV0YWJsZQotICAvLyBpdGVyYXRvcnMgaXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZCBmb3IgY29udGFpbmVyIGl0ZXJhdG9ycy4KLSAgLy8gQWxsIHRoZSBzdGFuZGFyZCBhc2tzIGZvciBpcyBhIGNvbnZlcnNpb24gbXV0YWJsZSAtPiBjb25zdGFudC4KLSAgLy8gTW9zdCBzdGFuZGFyZCBsaWJyYXJ5IGltcGxlbWVudGF0aW9ucyBub3dhZGF5cyBwcm92aWRlIGZ1bGx5IGludGVyb3BlcmFibGUKLSAgLy8gaXRlcmF0b3IgaW1wbGVtZW50YXRpb25zLCBidXQgdGhlcmUgYXJlIHN0aWxsIGhlYXZpbHkgdXNlZCBpbXBsZW1lbnRhdGlvbnMKLSAgLy8gdGhhdCBkbyBub3QgcHJvdmlkZSB0aGVtLiAoQWN0dWFsbHkgaXQncyBldmVuIHdvcnNlLCB0aGV5IGRvIG5vdCBwcm92aWRlCi0gIC8vIHRoZW0gZm9yIG9ubHkgYSBmZXcgaXRlcmF0b3JzLikKLSAgLy8KLSAgLy8gPz8gTWF5YmUgYSBORE5CT09TVF9JVEVSQVRPUl9OT19GVUxMX0lOVEVST1BFUkFCSUxJVFkgbWFjcm8gc2hvdWxkCi0gIC8vICAgIGVuYWJsZSB0aGUgdXNlciB0byB0dXJuIG9mZiBtaXhlZCB0eXBlIG9wZXJhdG9ycwotICAvLwotICAvLyBUaGUgbGlicmFyeSB0YWtlcyBjYXJlIHRvIHByb3ZpZGUgb25seSB0aGUgcmlnaHQgb3BlcmF0b3Igb3ZlcmxvYWRzLgotICAvLyBJLmUuCi0gIC8vCi0gIC8vIGJvb2wgb3BlcmF0b3I9PShJdGVyYXRvciwgICAgICBJdGVyYXRvcik7Ci0gIC8vIGJvb2wgb3BlcmF0b3I9PShDb25zdEl0ZXJhdG9yLCBJdGVyYXRvcik7Ci0gIC8vIGJvb2wgb3BlcmF0b3I9PShJdGVyYXRvciwgICAgICBDb25zdEl0ZXJhdG9yKTsKLSAgLy8gYm9vbCBvcGVyYXRvcj09KENvbnN0SXRlcmF0b3IsIENvbnN0SXRlcmF0b3IpOwotICAvLwotICAvLyAgIC4uLgotICAvLwotICAvLyBJbiBvcmRlciB0byBkbyBzbyBpdCB1c2VzIGMrKyBpZGlvbXMgdGhhdCBhcmUgbm90IHlldCB3aWRlbHkgc3VwcG9ydGVkCi0gIC8vIGJ5IGN1cnJlbnQgY29tcGlsZXIgcmVsZWFzZXMuIFRoZSBsaWJyYXJ5IGlzIGRlc2lnbmVkIHRvIGRlZ3JhZGUgZ3JhY2VmdWxseQotICAvLyBpbiB0aGUgZmFjZSBvZiBjb21waWxlciBkZWZpY2llbmNpZXMuIEluIGdlbmVyYWwgY29tcGlsZXIKLSAgLy8gZGVmaWNpZW5jaWVzIHJlc3VsdCBpbiBsZXNzIHN0cmljdCBlcnJvciBjaGVja2luZyBhbmQgbW9yZSBvYnNjdXJlCi0gIC8vIGVycm9yIG1lc3NhZ2VzLCBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhZmZlY3RlZC4KLSAgLy8KLSAgLy8gRm9yIGZ1bGwgb3BlcmF0aW9uIGNvbXBpbGVyIHN1cHBvcnQgZm9yICJTdWJzdGl0dXRpb24gRmFpbHVyZSBJcyBOb3QgQW4gRXJyb3IiCi0gIC8vIChha2EuIGVuYWJsZV9pZikgYW5kIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZSBpcyByZXF1aXJlZC4KLSAgLy8KLSAgLy8gVGhlIGZvbGxvd2luZyBwcm9ibGVtcyBvY2N1ciBpZiBzdXBwb3J0IGlzIGxhY2tpbmcuCi0gIC8vCi0gIC8vIFBzZXVkbyBjb2RlCi0gIC8vCi0gIC8vIC0tLS0tLS0tLS0tLS0tLQotICAvLyBBZGFwdG9yQTxJdGVyYXRvcjE+IGExOwotICAvLyBBZGFwdG9yQTxJdGVyYXRvcjI+IGEyOwotICAvLwotICAvLyAvLyBUaGlzIHdpbGwgcmVzdWx0IGluIGEgbm8gc3VjaCBvdmVybG9hZCBlcnJvciBpbiBmdWxsIG9wZXJhdGlvbgotICAvLyAvLyBJZiBlbmFibGVfaWYgb3IgaXNfY29udmVydGlibGUgaXMgbm90IHN1cHBvcnRlZAotICAvLyAvLyBUaGUgaW5zdGFudGlhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiBlcnJvciBob3BlZnVsbHkgaW5kaWNhdGluZyB0aGF0Ci0gIC8vIC8vIHRoZXJlIGlzIG5vIG9wZXJhdG9yPT0gZm9yIEl0ZXJhdG9yMSwgSXRlcmF0b3IyCi0gIC8vIC8vIFRoZSBzYW1lIHdpbGwgaGFwcGVuIGlmIG5vIGVuYWJsZV9pZiBpcyB1c2VkIHRvIHJlbW92ZQotICAvLyAvLyBmYWxzZSBvdmVybG9hZHMgZnJvbSB0aGUgdGVtcGxhdGVkIGNvbnZlcnNpb24gY29uc3RydWN0b3IKLSAgLy8gLy8gb2YgQWRhcHRvckEuCi0gIC8vCi0gIC8vIGExID09IGEyOwotICAvLyAtLS0tLS0tLS0tLS0tLS0tCi0gIC8vCi0gIC8vIEFkYXB0b3JBPEl0ZXJhdG9yPiBhOwotICAvLyBBZGFwdG9yQjxJdGVyYXRvcj4gYjsKLSAgLy8KLSAgLy8gLy8gVGhpcyB3aWxsIHJlc3VsdCBpbiBhIG5vIHN1Y2ggb3ZlcmxvYWQgZXJyb3IgaW4gZnVsbCBvcGVyYXRpb24KLSAgLy8gLy8gSWYgZW5hYmxlX2lmIGlzIG5vdCBzdXBwb3J0ZWQgdGhlIHN0YXRpYyBhc3NlcnQgdXNlZAotICAvLyAvLyBpbiB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gd2lsbCBmYWlsLgotICAvLyAvLyBUaGlzIHdpbGwgYWNjaWRlbnRseSB3b3JrIGlmIGlzX2NvbnZlcnRpYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCi0gIC8vCi0gIC8vIGEgPT0gYjsKLSAgLy8gLS0tLS0tLS0tLS0tLS0tLQotICAvLwotCi0jIGlmZGVmIE5ETkJPT1NUX05PX09ORV9XQVlfSVRFUkFUT1JfSU5URVJPUAotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0NPTlZFUlRJQkxFKGEsYikgbXBsOjp0cnVlXygpCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9DT05WRVJUSUJMRShhLGIpIGlzX2NvbnZlcnRpYmxlPGEsYj4oKQotIyBlbmRpZgotCi0jIGRlZmluZSBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUChvcCwgcmVzdWx0X3R5cGUsIHJldHVybl9wcmVmaXgsIGJhc2Vfb3ApIFwKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1BfSEVBRChpbmxpbmUsIG9wLCByZXN1bHRfdHlwZSkgICAgICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAvKiBGb3IgdGhvc2UgY29tcGlsZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgZW5hYmxlX2lmICovICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIGlzX2ludGVyb3BlcmFibGU8IERlcml2ZWQxLCBEZXJpdmVkMiA+Ojp2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHJldHVybl9wcmVmaXggaXRlcmF0b3JfY29yZV9hY2Nlc3M6OmJhc2Vfb3AoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICpzdGF0aWNfY2FzdDxEZXJpdmVkMSBjb25zdCo+KCZsaHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICwgKnN0YXRpY19jYXN0PERlcml2ZWQyIGNvbnN0Kj4oJnJocykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgLCBORE5CT09TVF9JVEVSQVRPUl9DT05WRVJUSUJMRShEZXJpdmVkMixEZXJpdmVkMSkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0KLQotIyBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKG9wLCByZXR1cm5fcHJlZml4LCBiYXNlX29wKSBcCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9JTlRFUk9QKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6YWx3YXlzX2Jvb2wyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLCByZXR1cm5fcHJlZml4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAsIGJhc2Vfb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApCi0KLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKD09LCByZXR1cm4sIGVxdWFsKQotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oIT0sIHJldHVybiAhLCBlcXVhbCkKLQotICBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUkVMQVRJT04oPCwgcmV0dXJuIDAgPiwgZGlzdGFuY2VfZnJvbSkKLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX1JFTEFUSU9OKD4sIHJldHVybiAwIDwsIGRpc3RhbmNlX2Zyb20pCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig8PSwgcmV0dXJuIDAgPj0sIGRpc3RhbmNlX2Zyb20pCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTig+PSwgcmV0dXJuIDAgPD0sIGRpc3RhbmNlX2Zyb20pCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9SRUxBVElPTgotCi0gIC8vIG9wZXJhdG9yLSByZXF1aXJlcyBhbiBhZGRpdGlvbmFsIHBhcnQgaW4gdGhlIHN0YXRpYyBhc3NlcnRpb24KLSAgTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFX0lOVEVST1AoCi0gICAgICAtCi0gICAgLCBuZG5ib29zdDo6ZGV0YWlsOjpjaG9vc2VfZGlmZmVyZW5jZV90eXBlCi0gICAgLCByZXR1cm4KLSAgICAsIGRpc3RhbmNlX2Zyb20KLSAgKQotIyB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUAotIyB1bmRlZiBORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfSU5URVJPUF9IRUFECi0KLSMgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTKGFyZ3MpICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQoaW5saW5lLCBhcmdzKSAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIERlcml2ZWQgdG1wKHN0YXRpY19jYXN0PERlcml2ZWQgY29uc3QmPihpKSk7ICBcCi0gICAgICByZXR1cm4gdG1wICs9IG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLU5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTKCgKLSAgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsIFYsIFRDLCBSLCBEPiBjb25zdCYgaQotICAsIHR5cGVuYW1lIERlcml2ZWQ6OmRpZmZlcmVuY2VfdHlwZSBuCi0pKQotCi1ORE5CT09TVF9JVEVSQVRPUl9GQUNBREVfUExVUygoCi0gICAgdHlwZW5hbWUgRGVyaXZlZDo6ZGlmZmVyZW5jZV90eXBlIG4KLSAgICAsIGl0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLCBWLCBUQywgUiwgRD4gY29uc3QmIGkKLSkpCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTCi0jIHVuZGVmIE5ETkJPT1NUX0lURVJBVE9SX0ZBQ0FERV9QTFVTX0hFQUQKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2RldGFpbC9jb25maWdfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSVRFUkFUT1JfRkFDQURFXzIzMDIyMDAzVEhXX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDhmYjYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotI2lmbmRlZiBJVEVSQVRPUl9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMzQ3X0hQUAotIyBkZWZpbmUgSVRFUkFUT1JfVFJBSVRTX05ETkJPT1NUX0RXQTIwMDM0N19IUFAKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvaXRlcmF0b3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotCi0vLyBVbmZvcnR1bmF0ZWx5LCBnKysgMi45NS54IGNob2tlcyB3aGVuIHdlIGRlZmluZSBhIGNsYXNzIHRlbXBsYXRlCi0vLyBpdGVyYXRvcl9jYXRlZ29yeSB3aGljaCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBpdHMKLS8vIHN0ZDo6aXRlcmF0b3JfY2F0ZWdvcnkoKSBmdW5jdGlvbiwgcHJvYmFibHkgZHVlIGluIHBhcnQgdG8gdGhlCi0vLyAic3RkOjogaXMgdmlzaWJsZSBnbG9iYWxseSIgaGFjayBpdCB1c2VzLiAgVXNlCi0vLyBORE5CT09TVF9JVEVSQVRPUl9DQVRFR09SWSB0byB3cml0ZSBjb2RlIHRoYXQncyBwb3J0YWJsZSB0byBvbGRlcgotLy8gR0NDcy4KLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8PSAyKQotIyAgZGVmaW5lIE5ETkJPT1NUX0lURVJBVE9SX0NBVEVHT1JZIGl0ZXJhdG9yX2NhdGVnb3J5XwotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUlkgaXRlcmF0b3JfY2F0ZWdvcnkKLSMgZW5kaWYKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfdmFsdWUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUgdHlwZTsKLX07Ci0gIAotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotc3RydWN0IGl0ZXJhdG9yX3JlZmVyZW5jZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlIHR5cGU7Ci19OwotICAKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfcG9pbnRlcgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cG9pbnRlciB0eXBlOwotfTsKLSAgCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgaXRlcmF0b3JfZGlmZmVyZW5jZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1zdHJ1Y3QgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUlkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IHR5cGU7Ci19OwotCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpdGVyYXRvcl92YWx1ZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotICAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfcmVmZXJlbmNlPGludD4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfcG9pbnRlcjxpbnQ+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotICAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfZGlmZmVyZW5jZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotICAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTkROQk9PU1RfSVRFUkFUT1JfQ0FURUdPUlk8aW50PgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLSMgZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Oml0ZXJhdG9yCi0KLSNlbmRpZiAvLyBJVEVSQVRPUl9UUkFJVFNfTkROQk9PU1RfRFdBMjAwMzQ3X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9yZXZlcnNlX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvaXRlcmF0b3IvcmV2ZXJzZV9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5Yjc2NWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9pdGVyYXRvci9yZXZlcnNlX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgSmVyZW15IFNpZWsgICAgMjAwMi4KLS8vIChDKSBDb3B5cmlnaHQgVGhvbWFzIFdpdHQgICAgMjAwMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSNpZm5kZWYgTkROQk9PU1RfUkVWRVJTRV9JVEVSQVRPUl8yMzAyMjAwM1RIV19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVWRVJTRV9JVEVSQVRPUl8yMzAyMjAwM1RIV19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9hZGFwdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgLy8KLSAgLy8KLSAgLy8KLSAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgotICBjbGFzcyByZXZlcnNlX2l0ZXJhdG9yCi0gICAgICA6IHB1YmxpYyBpdGVyYXRvcl9hZGFwdG9yPCByZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiwgSXRlcmF0b3IgPgotICB7Ci0gICAgICB0eXBlZGVmIGl0ZXJhdG9yX2FkYXB0b3I8IHJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+LCBJdGVyYXRvciA+IHN1cGVyX3Q7Ci0KLSAgICAgIGZyaWVuZCBjbGFzcyBpdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgcHVibGljOgotICAgICAgcmV2ZXJzZV9pdGVyYXRvcigpIHt9Ci0KLSAgICAgIGV4cGxpY2l0IHJldmVyc2VfaXRlcmF0b3IoSXRlcmF0b3IgeCkgCi0gICAgICAgICAgOiBzdXBlcl90KHgpIHt9Ci0KLSAgICAgIHRlbXBsYXRlPGNsYXNzIE90aGVySXRlcmF0b3I+Ci0gICAgICByZXZlcnNlX2l0ZXJhdG9yKAotICAgICAgICAgIHJldmVyc2VfaXRlcmF0b3I8T3RoZXJJdGVyYXRvcj4gY29uc3QmIHIKLSAgICAgICAgICAsIHR5cGVuYW1lIGVuYWJsZV9pZl9jb252ZXJ0aWJsZTxPdGhlckl0ZXJhdG9yLCBJdGVyYXRvcj46OnR5cGUqID0gMAotICAgICAgICAgICkKLSAgICAgICAgICA6IHN1cGVyX3Qoci5iYXNlKCkpCi0gICAgICB7fQotCi0gICBwcml2YXRlOgotICAgICAgdHlwZW5hbWUgc3VwZXJfdDo6cmVmZXJlbmNlIGRlcmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gKm5kbmJvb3N0Ojpwcmlvcih0aGlzLT5iYXNlKCkpOyB9Ci0gICAgCi0gICAgICB2b2lkIGluY3JlbWVudCgpIHsgLS10aGlzLT5iYXNlX3JlZmVyZW5jZSgpOyB9Ci0gICAgICB2b2lkIGRlY3JlbWVudCgpIHsgKyt0aGlzLT5iYXNlX3JlZmVyZW5jZSgpOyB9Ci0KLSAgICAgIHZvaWQgYWR2YW5jZSh0eXBlbmFtZSBzdXBlcl90OjpkaWZmZXJlbmNlX3R5cGUgbikKLSAgICAgIHsKLSAgICAgICAgICB0aGlzLT5iYXNlX3JlZmVyZW5jZSgpICs9IC1uOwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3RoZXJJdGVyYXRvcj4KLSAgICAgIHR5cGVuYW1lIHN1cGVyX3Q6OmRpZmZlcmVuY2VfdHlwZQotICAgICAgZGlzdGFuY2VfdG8ocmV2ZXJzZV9pdGVyYXRvcjxPdGhlckl0ZXJhdG9yPiBjb25zdCYgeSkgY29uc3QKLSAgICAgIHsKLSAgICAgICAgICByZXR1cm4gdGhpcy0+YmFzZV9yZWZlcmVuY2UoKSAtIHkuYmFzZSgpOwotICAgICAgfQotICB9OwotCi0gIHRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci0gIHJldmVyc2VfaXRlcmF0b3I8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiBtYWtlX3JldmVyc2VfaXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIHgpCi0gIHsKLSAgICAgIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4oeCk7Ci0gIH0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFVkVSU0VfSVRFUkFUT1JfMjMwMjIwMDNUSFdfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjJjODE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLy8gLS0gYmluZC5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgR2FyeSBQb3dlbGwgKGd3cG93ZWxsQGhvdG1haWwuY29tKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIAotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9CSU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQklORF9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9jb3JlLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYmluZF9mdW5jdGlvbnMuaHBwIgotICAgIAotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9jb3JlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2NvcmUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDFlYzQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2NvcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLy8gLS0gY29yZS5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwMCBHYXJ5IFBvd2VsbCAocG93ZWxsZ0BhbWF6b24uY29tKQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0vLyAKLS8vIEluY2x1ZGVzIHRoZSBjb3JlIG9mIExMLCB3aXRob3V0IGFueSByZWFsIGZlYXR1cmVzIGZvciBjbGllbnQ6Ci0vLyAKLS8vIHR1cGxlcywgbGFtYmRhIGZ1bmN0b3JzLCByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gdGVtcGxhdGVzLAotLy8gYXJndW1lbnQgc3Vic3RpdHV0aW9uIG1lY2hhbmlzbSAoc2VsZWN0IGZ1bmN0aW9ucykKLS8vIAotLy8gU29tZSBmdW5jdGlvbmFsaXR5IGNvbWVzIGFzIHdlbGw6Ci0vLyBBc3NpZ25tZW50IGFuZCBzdWJzY3JpcHQgb3BlcmF0b3JzLCBhcyB3ZWxsIGFzIGZ1bmN0aW9uCi0vLyBjYWxsIG9wZXJhdG9yIGZvciBwbGFjZWhvbGRlciB2YXJpYWJsZXMuCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0NPUkVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9DT1JFX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcCIKLQotLy8gaW5qZWN0IHNvbWUgb2YgdGhlIHR1cGxlIG5hbWVzIGludG8gbGFtYmRhIAotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBsYW1iZGEgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0dXBsZXM6OnR1cGxlOwotdXNpbmcgOjpuZG5ib29zdDo6dHVwbGVzOjpudWxsX3R5cGU7Ci0KLX0gLy8gbGFtYmRhCi19IC8vIGJvb3N0Ci0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z3ZC5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2FyaXR5X2NvZGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYWN0aW9ucy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV90cmFpdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9mdW5jdGlvbl9hZGFwdG9ycy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9yZXR1cm5fdHlwZV90cmFpdHMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9zZWxlY3RfZnVuY3Rpb25zLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JfYmFzZS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9ycy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL3JldC5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbGFtYmRhIHsKLQotbmFtZXNwYWNlIHsKLQotICAvLyBUaGVzZSBhcmUgY29uc3RhbnRzIHR5cGVzIGFuZCBuZWVkIHRvIGJlIGluaXRpYWxpc2VkCi0gIG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyMV90eXBlIGZyZWUxID0gbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIxX3R5cGUoKTsKLSAgbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIyX3R5cGUgZnJlZTIgPSBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjJfdHlwZSgpOwotICBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjNfdHlwZSBmcmVlMyA9IG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyM190eXBlKCk7Ci0KLSAgbmRuYm9vc3Q6OmxhbWJkYTo6cGxhY2Vob2xkZXIxX3R5cGUmIF8xID0gZnJlZTE7Ci0gIG5kbmJvb3N0OjpsYW1iZGE6OnBsYWNlaG9sZGVyMl90eXBlJiBfMiA9IGZyZWUyOwotICBuZG5ib29zdDo6bGFtYmRhOjpwbGFjZWhvbGRlcjNfdHlwZSYgXzMgPSBmcmVlMzsKLSAgLy8gXzEsIF8yLCAuLi4gbmFtaW5nIHNjaGVtZSBieSBQZXRlciBEaW1vdgotfSAvLyB1bm5hbWVkCi0gICAKLX0gLy8gbGFtYmRhCi19IC8vIGJvb3N0Ci0gICAKLSAgIAotI2VuZGlmIC8vTkROQk9PU1RfTEFNQkRBX0NPUkVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYWN0aW9ucy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYWN0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMjgyMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2FjdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLS8vIC0tIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0gYWN0aW9ucy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfQUNUSU9OU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FDVElPTlNfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLQotCi10ZW1wbGF0ZTxpbnQgQXJpdHksIGNsYXNzIEFjdD4gY2xhc3MgYWN0aW9uOwotCi0vLyB0aGVzZSBuZWVkIHRvIGJlIGRlZmluZWQgaGVyZSwgc2luY2UgdGhlIGNvcnJlc3BvbmRpbmcgbGFtYmRhIAotLy8gZnVuY3Rpb25zIGFyZSBtZW1iZXJzIG9mIGxhbWJkYV9mdW5jdG9yIGNsYXNzZXMKLQotY2xhc3MgYXNzaWdubWVudF9hY3Rpb24ge307Ci1jbGFzcyBzdWJzY3JpcHRfYWN0aW9uIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBvdGhlcl9hY3Rpb247Ci0KLS8vIGFjdGlvbiBmb3Igc3BlY2lmeWluZyB0aGUgZXhwbGljaXQgcmV0dXJuIHR5cGUKLXRlbXBsYXRlIDxjbGFzcyBSRVQ+IGNsYXNzIGV4cGxpY2l0X3JldHVybl90eXBlX2FjdGlvbiB7fTsKLQotLy8gYWN0aW9uIGZvciBwcmV2ZW50aW5nIHRoZSBleHBhbnNpb24gb2YgYSBsYW1iZGEgZXhwcmVzc2lvbgotc3RydWN0IHByb3RlY3RfYWN0aW9uIHt9OwotCi0gIC8vIG11c3QgYmUgZGVmaW5lZCBoZXJlLCBjb21tYSBpcyBhIHNwZWNpYWwgY2FzZQotc3RydWN0IGNvbW1hX2FjdGlvbiB7fTsKLQotCi0gIC8vIGFjdGlvbnMsIGZvciB3aGljaCB0aGUgZXhpc3RlbmNlIG9mIHByb3RlY3QgaXMgY2hlY2tlZCBpbiByZXR1cm4gdHlwZSAKLSAgLy8gZGVkdWN0aW9uLgotCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGUgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBOT1RFOiBjb21tYSBhY3Rpb24gaXMgcHJvdGVjdGFibGUuIE90aGVyIHByb3RlY3RhYmxlIGFjdGlvbnMKLS8vIGFyZSBsaXN0ZWQgaW4gb3BlcmF0b3JfYWN0aW9ucy5ocHAKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8b3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAvLyB0aGlzIHR5cGUgaXMgdXNlZCBpbiByZXR1cm4gdHlwZSBkZWR1Y3Rpb25zIHRvIHNpZ25hbCB0aGF0IGRlZHVjdGlvbiAKLSAgLy8gZGlkIG5vdCBmaW5kIGEgcmVzdWx0LiBJdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLCBpdCBjb21tb25seQotICAvLyBtZWFucyB0aGF0IHNvbWV0aGluZyBlbHNlIHNob3VsZCBiZSB0cmllZC4KLSAgY2xhc3MgdW5zcGVjaWZpZWQge307Ci19Ci0KLSAgLy8gZnVuY3Rpb24gYWN0aW9uIGlzIGEgc3BlY2lhbCBjYXNlOiBiaW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkIHdpdGggCi0gIC8vIHRoZSByZXR1cm4gdHlwZSBzcGVjaWFsaXplZCBleHBsaWNpdGx5IGUuZy4gYmluZDxpbnQ+KGZvbyk7Ci0gIC8vIElmIHRoaXMgY2FsbCBzeW50YXggaXMgdXNlZCwgdGhlIHJldHVybiB0eXBlIGlzIHN0b3JlZCBpbiB0aGUgbGF0dGVyCi0gIC8vIGFyZ3VtZW50IG9mIGZ1bmN0aW9uX2FjdGlvbiB0ZW1wbGF0ZS4gT3RoZXJ3aXNlIHRoZSBhcmd1bWVudCBnZXRzIHRoZSB0eXBlCi0gIC8vICd1bnNwZWNpZmllZCcuCi0gIC8vIFRoaXMgYXJndW1lbnQgaXMgb25seSByZWxldmFudCBpbiB0aGUgcmV0dXJuIHR5cGUgZGVkdWN0aW9uIGNvZGUKLXRlbXBsYXRlIDxpbnQgSSwgY2xhc3MgUmVzdWx0X3R5cGUgPSBkZXRhaWw6OnVuc3BlY2lmaWVkPiAKLWNsYXNzIGZ1bmN0aW9uX2FjdGlvbiB7fTsKLSAgIAotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDEsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjwyLCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyKTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDMsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzKTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDQsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzLCBhNCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw1LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgZnVuY3Rpb25fYWN0aW9uPDYsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIAotICAgICAgICAgICBjbGFzcyBBNj4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2KSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw3LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCAgCi0gICAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gZnVuY3Rpb25fYWRhcHRvcjx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PEExPjo6dHlwZT46OgotICAgICAgdGVtcGxhdGUgYXBwbHk8UkVUPihhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw4LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCAKLSAgICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIAotICAgICAgICAgICAgICAgICAgIEE4JiBhOCkgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGZ1bmN0aW9uX2FjdGlvbjw5LCBUPiB7Ci1wdWJsaWM6Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCAKLSAgICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCAKLSAgICAgICAgICAgICAgICAgICBBOCYgYTgsIEE5JiBhOSkgewotICAgIHJldHVybiBmdW5jdGlvbl9hZGFwdG9yPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8QTE+Ojp0eXBlPjo6Ci0gICAgICB0ZW1wbGF0ZSBhcHBseTxSRVQ+KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpOwotICB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBmdW5jdGlvbl9hY3Rpb248MTAsIFQ+IHsKLXB1YmxpYzoKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIAotICAgICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgCi0gICAgICAgICAgICAgICAgICAgQTgmIGE4LCBBOSYgYTksIEExMCYgYTEwKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uX2FkYXB0b3I8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxBMT46OnR5cGU+OjoKLSAgICAgIHRlbXBsYXRlIGFwcGx5PFJFVD4oYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKTsKLSAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hcml0eV9jb2RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9hcml0eV9jb2RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTczNTYwOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYXJpdHlfY29kZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLy8gLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfQVJJVFlfQ09ERV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FSSVRZX0NPREVfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0vLyBUaGVzZSBjb25zdGFudHMgc3RhdGUsIHdoZXRoZXIgYSBsYW1iZGFfZnVuY3RvciBpbnN0YW50aWF0aW9uIHJlc3VsdHMgZnJvbSAKLS8vIGFuIGV4cHJlc3Npb24gd2hpY2ggY29udGFpbnMgbm8gcGxhY2Vob2xkZXJzIChOT05FKSwgCi0vLyBvbmx5IGZyZWUxIHBsYWNlaG9sZGVycyAoRklSU1QpLCAKLS8vIGZyZWUyIHBsYWNlaG9sZGVycyBhbmQgbWF5YmUgZnJlZTEgcGxhY2Vob2xkZXJzIChTRUNPTkQpLAotLy8gZnJlZTMgYW5kIG1heWJlIGZyZWUxIGFuZCBmcmVlMiBwbGFjZWhvbGRlcnMgKFRISVJEKSwKLS8vIGZyZWVFIHBsYWNlaG9sZGVycyBhbmQgbWF5YmUgZnJlZTEgYW5kIGZyZWUyICAoRVhDRVBUSU9OKS4KLS8vIFJFVEhST1cgbWVhbnMsIHRoYXQgYSByZXRocm93IGV4cHJlc3Npb24gaXMgdXNlZCBzb21ld2hlcmUgaW4gdGhlIGxhbWJkYV9mdW5jdG9yLgotCi1lbnVtIHsgTk9ORSAgICAgICAgICAgICA9IDB4MDAsIC8vIE5vdGljZSB3ZSBhcmUgdXNpbmcgYml0cyBhcyBmbGFncyBoZXJlLgotICAgICAgIEZJUlNUICAgICAgICAgICAgPSAweDAxLCAKLSAgICAgICBTRUNPTkQgICAgICAgICAgID0gMHgwMiwgCi0gICAgICAgVEhJUkQgICAgICAgICAgICA9IDB4MDQsIAotICAgICAgIEVYQ0VQVElPTiAgICAgICAgPSAweDA4LCAKLSAgICAgICBSRVRIUk9XICAgICAgICAgID0gMHgxMH07Ci0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBnZXRfdHVwbGVfYXJpdHk7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGdldF9hcml0eV87Ci0KLX0gLy8gZW5kIGRldGFpbDsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBnZXRfYXJpdHkgewotCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gZGV0YWlsOjpnZXRfYXJpdHlfPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8dHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGU+Ojp0eXBlPjo6dmFsdWUpOwotCi19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBnZXRfYXJpdHlfIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgZ2V0X2FyaXR5XzxsYW1iZGFfZnVuY3RvcjxUPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBnZXRfYXJpdHk8VD46OnZhbHVlKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFjdGlvbiwgY2xhc3MgQXJncz4KLXN0cnVjdCBnZXRfYXJpdHlfPGxhbWJkYV9mdW5jdG9yX2Jhc2U8QWN0aW9uLCBBcmdzPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBnZXRfdHVwbGVfYXJpdHk8QXJncz46OnZhbHVlKTsKLX07Ci0KLXRlbXBsYXRlPGludCBJPgotc3RydWN0IGdldF9hcml0eV88cGxhY2Vob2xkZXI8ST4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gSSk7Ci19OwotCi19IC8vIGRldGFpbCAKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBnZXRfdHVwbGVfYXJpdHkgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IGdldF9hcml0eTx0eXBlbmFtZSBUOjpoZWFkX3R5cGU+Ojp2YWx1ZSB8IGdldF90dXBsZV9hcml0eTx0eXBlbmFtZSBUOjp0YWlsX3R5cGU+Ojp2YWx1ZSk7Ci19OwotCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBnZXRfdHVwbGVfYXJpdHk8bnVsbF90eXBlPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci19OwotCi0KLSAgLy8gRG9lcyBUIGhhdmUgcGxhY2Vob2xkZXI8ST4gYXMgaXQncyBzdWJleHByZXNzaW9uPwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgST4KLXN0cnVjdCBoYXNfcGxhY2Vob2xkZXIgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoZ2V0X2FyaXR5PFQ+Ojp2YWx1ZSAmIEkpICE9IDApOwotfTsgCi0KLXRlbXBsYXRlPGludCBJLCBpbnQgSj4KLXN0cnVjdCBpbmNsdWRlc19wbGFjZWhvbGRlciB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChKICYgSSkgIT0gMCk7Ci19OwotCi10ZW1wbGF0ZTxpbnQgSSwgaW50IEo+Ci1zdHJ1Y3QgbGFja3NfcGxhY2Vob2xkZXIgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoKEogJiBJKSA9PSAwKSk7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYmluZF9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2JpbmRfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM3ZjRlOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvYmluZF9mdW5jdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg3OSArMCwwIEBACi0vLyAtLSBiaW5kX2Z1bmN0aW9ucy5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfQklORF9GVU5DVElPTlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CSU5EX0ZVTkNUSU9OU19IUFAKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0jaWZkZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HCi0KLSAgLy8gZ2NjIDIuOTYgaW5zdGFudGlhdGVzIGJpbmQgZnVuY3Rpb25zIGl0IGRvZXMgbm90IGV2ZW4gY2FsbC4KLSAgLy8gVGhlc2UgaW5zdGFudGlhdGlvbnMgbGVhZCB0byBpbmNvcnJlY3QgdHlwZXMgaW4gdGhlIHJldHVybiB0eXBlLCAKLSAgLy8gYW5kIGEgY29tcGlsYXRpb24gZXJyb3IgcmVzdWx0cy4gCi0gIC8vIFRoaXMgdHdlYWtpbmcgaXMgdG8gcHJldmVudCB0aGUgZm9ybWF0aW9uIG9mIHRoZSBlcnJvbmVvdXMgdHlwZS4KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RpZnlfbm9uX2Z1bmNzIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRl90eXBlPG5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUsCi0gICAgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD4sCi0gICAgbmRuYm9vc3Q6OmFkZF9jb25zdDxUPgotICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19Ci0jZW5kaWYKLS8vIDEtYXJndW1lbnQgYmluZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSNpZm5kZWYgTkROQk9PU1RfUkVGX1RPX0ZVTkNfQ09ORkxJQ1RTX1dJVEhfUkVGX1RPX1QKLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCYpKCk+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJiBhMSkoKSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPFJlc3VsdCgmKSgpPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCYpKCk+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0gI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDE+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzE+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxPjo6dHlwZQotICAgICAgKGExKQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzE+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDEsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMT46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzE+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDE+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEsIGZ1bmN0aW9uX2FjdGlvbjwxLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgICAgKGExKQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCBmdW5jdGlvbl9hY3Rpb248MSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCopKCk+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKSgpKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MSwgZnVuY3Rpb25fYWN0aW9uPDEsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8UmVzdWx0KCopKCk+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoKT46OnR5cGUKLSAgICAgIChhMSkKLSAgICApOwotfQotCi0KLSNlbmRpZiAKLQotLy8gMi1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJmExKShQYXIxKSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248MiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoJikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgICAoYTEsIGEyKQotICAgICk7Ci19Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyPiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMSwgY29uc3QgQXJnMj46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyPiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxLCBjb25zdCBBcmcyPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxjb25zdCBBcmcxLCBjb25zdCBBcmcyPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Y29uc3QgQXJnMSwgY29uc3QgQXJnMj46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPGNvbnN0IEFyZzEsIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgICAoYTEsIGEyKQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248Mj4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248Mj4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MiwgZnVuY3Rpb25fYWN0aW9uPDIsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgQXJnMj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDIsIGZ1bmN0aW9uX2FjdGlvbjwyLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxKSwgY29uc3QgQXJnMiYgYTIpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwyLCBmdW5jdGlvbl9hY3Rpb248MiwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjxSZXN1bHQoKikoUGFyMSksIGNvbnN0IEFyZzI+Ojp0eXBlCi0gICAgICAoYTEsIGEyKQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gMy1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwzLCBmdW5jdGlvbl9hY3Rpb248MywgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDM+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDM+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzKSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDM+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzPiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMykKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MywgZnVuY3Rpb25fYWN0aW9uPDMsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCogY29uc3QgJiBhMSkoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDMsIGZ1bmN0aW9uX2FjdGlvbjwzLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzKQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gNC1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgQXJnMiwKLSAgICAgICAgICBjbGFzcyBBcmczLCBjbGFzcyBBcmc0PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMyksIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywKLSAgICAgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248NCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0gI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248ND4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQ+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248ND4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248ND4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw0LCBmdW5jdGlvbl9hY3Rpb248NCwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIEFyZzIsCi0gICAgICAgICAgY2xhc3MgQXJnMywgY2xhc3MgQXJnND4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDQsIGZ1bmN0aW9uX2FjdGlvbjw0LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMpLCBjb25zdCBBcmcyJiBhMiwKLSAgICAgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NCwgZnVuY3Rpb25fYWN0aW9uPDQsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzKSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0KQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gNS1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LAotICAgICAgY29uc3QgQXJnNQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsCi0gICAgIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsCi0gICAgICAgIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsCi0gICAgICAgIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUpCi0gICAgKTsKLX0KLSNlbmRpZgotCi0gI2lmbmRlZiBORE5CT09TVF9MQU1CREFfSU5DT1JSRUNUX0JJTkRfT1ZFUkxPQURJTkcgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDU+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzU+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDUsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzU+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NT4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NSwgZnVuY3Rpb25fYWN0aW9uPDU+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNT4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDUsIGZ1bmN0aW9uX2FjdGlvbjw1LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwKLSAgICAgIGNvbnN0IEFyZzUKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw1LCBmdW5jdGlvbl9hY3Rpb248NSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LAotICAgICAgICBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LAotICAgICAgICBjb25zdCBBcmc1Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1KQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gNi1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzY+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw2LCBmdW5jdGlvbl9hY3Rpb248NiwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzImIGEyLAotICAgICBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQotICAgICk7Ci19Ci0jZW5kaWYKLQotICNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzY+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw2LCBmdW5jdGlvbl9hY3Rpb248Nj4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNikgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNj4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDYsIGZ1bmN0aW9uX2FjdGlvbjw2LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NiwgZnVuY3Rpb25fYWN0aW9uPDYsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNgotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyA3LWFyZ3VtZW50IGJpbmQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9UT19GVU5DX0NPTkZMSUNUU19XSVRIX1JFRl9UT19UCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNz4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoJmExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiYgYTIsCi0gICAgIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LAotICAgICBjb25zdCBBcmc3JiBhNykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiksIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248Nz4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNykgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDcsIGZ1bmN0aW9uX2FjdGlvbjw3PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LAotICAgICAgICAgIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwKLSAgICAgICAgICBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDc+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDc+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw3LCBmdW5jdGlvbl9hY3Rpb248NywgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgUGFyNSwgY2xhc3MgUGFyNiwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYpLAotICAgICBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248NywgZnVuY3Rpb25fYWN0aW9uPDcsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2KSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNwotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQotICAgICk7Ci19Ci0KLQotICNlbmRpZiAKLQotLy8gOC1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLAotICAgICAgICAgIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksIGNvbnN0IEFyZzIsCi0gICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCZhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksIGNvbnN0IEFyZzImIGEyLAotICAgICBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwKLSAgICAgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4LCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KQotICAgICk7Ci19Ci0KLQotICNlbHNlIAotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsCi0gICAgICAgICAgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDgsIGZ1bmN0aW9uX2FjdGlvbjw4PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLAotICAgICAgICAgIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzg+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw4LCBmdW5jdGlvbl9hY3Rpb248OCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksIGNvbnN0IEFyZzIsCi0gICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoUmVzdWx0KCogY29uc3QgJiBhMSkoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNyksCi0gICAgIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsIGNvbnN0IEFyZzUmIGE1LAotICAgICBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OCwgZnVuY3Rpb25fYWN0aW9uPDgsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkKLSAgICApOwotfQotCi0KLSAjZW5kaWYgCi0KLS8vIDktYXJndW1lbnQgYmluZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSNpZm5kZWYgTkROQk9PU1RfUkVGX1RPX0ZVTkNfQ09ORkxJQ1RTX1dJVEhfUkVGX1RPX1QKLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIFBhcjEsIGNsYXNzIFBhcjIsIGNsYXNzIFBhcjMsIGNsYXNzIFBhcjQsCi0gICAgICAgICAgY2xhc3MgUGFyNSwgY2xhc3MgUGFyNiwgY2xhc3MgUGFyNywgY2xhc3MgUGFyOCwgY2xhc3MgQXJnMiwKLSAgICAgICAgICBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LAotICAgICAgICAgIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCksIGNvbnN0IEFyZzIsCi0gICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LAotICAgICAgY29uc3QgQXJnOQotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLAotICAgICBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwgY29uc3QgQXJnOSYgYTkpIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OSwgUmVzdWx0PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OT4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDk+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChjb25zdCBBcmcxJiBhMSwgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwKLSAgICAgY29uc3QgQXJnNSYgYTUsIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsCi0gICAgIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotCi0KLSAjZWxzZSAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzk+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjw5LCBmdW5jdGlvbl9hY3Rpb248OT4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5PiA+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsCi0gICAgICAgIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICAgIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzkKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpjb25zdGlmeV9ub25fZnVuY3M8QXJnMT46OnR5cGUsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsCi0gICAgICBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDksIGZ1bmN0aW9uX2FjdGlvbjw5LCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLAotICAgICAgICBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LCBjb25zdCBBcmc3LAotICAgICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5Ci0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0LCBjbGFzcyBQYXIxLCBjbGFzcyBQYXIyLCBjbGFzcyBQYXIzLCBjbGFzcyBQYXI0LAotICAgICAgICAgIGNsYXNzIFBhcjUsIGNsYXNzIFBhcjYsIGNsYXNzIFBhcjcsIGNsYXNzIFBhcjgsIGNsYXNzIEFyZzIsCi0gICAgICAgICAgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywKLSAgICAgICAgICBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5PgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgpLCBjb25zdCBBcmcyLAotICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwKLSAgICAgIGNvbnN0IEFyZzkKLSAgICA+Ojp0eXBlCi0gID4KLT4KLQotYmluZChSZXN1bHQoKiBjb25zdCAmIGExKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4KSwKLSAgICAgY29uc3QgQXJnMiYgYTIsIGNvbnN0IEFyZzMmIGEzLCBjb25zdCBBcmc0JiBhNCwgY29uc3QgQXJnNSYgYTUsCi0gICAgIGNvbnN0IEFyZzYmIGE2LCBjb25zdCBBcmc3JiBhNywgY29uc3QgQXJnOCYgYTgsIGNvbnN0IEFyZzkmIGE5KSB7Ci0gIHJldHVybgotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBhY3Rpb248OSwgZnVuY3Rpb25fYWN0aW9uPDksIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4KSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOQotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpCi0gICAgKTsKLX0KLQotCi0gI2VuZGlmIAotCi0vLyAxMC1hcmd1bWVudCBiaW5kIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmbmRlZiBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBQYXI4LCBjbGFzcyBQYXI5LAotICAgICAgICAgIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsCi0gICAgICAgICAgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwgY2xhc3MgQXJnMTA+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgmKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4LCBQYXI5KSwKLSAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgmYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwgY29uc3QgQXJnOSYgYTksCi0gICAgIGNvbnN0IEFyZzEwJiBhMTApIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoJikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwgUGFyOSksCi0gICAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCYpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICAgICBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgICBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCkKLSAgICApOwotfQotI2VuZGlmCi0KLSAjaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORyAKLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LAotICAgICAgICAgIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIEFyZzksIGNsYXNzIEFyZzEwPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSwgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTA+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBjb25zdCBBcmcxLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LAotICAgICAgICBjb25zdCBBcmc2LCBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgID4KLSAgICAoIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgICAoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKQotICAgICk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsCi0gICAgICAgICAgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwKLSAgICAgICAgICBjbGFzcyBBcmcxMD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwKLSAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSwgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTAsIFJlc3VsdD4gPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICAgIGNvbnN0IEFyZzEsIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsCi0gICAgICAgIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgY29uc3QgQXJnMSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwKLSAgICAgICAgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApCi0gICAgKTsKLX0KLQotCi0gI2Vsc2UgCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwKLSAgICAgICAgICBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LCBjbGFzcyBBcmcxMD4KLWlubGluZSBjb25zdAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTA+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6Y29uc3RpZnlfbm9uX2Z1bmNzPEFyZzE+Ojp0eXBlLCBjb25zdCBBcmcyLCBjb25zdCBBcmczLAotICAgICAgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwKLSAgICAgIGNvbnN0IEFyZzEwCi0gICAgPjo6dHlwZQotICA+Ci0+Ci0KLWJpbmQoY29uc3QgQXJnMSYgYTEsIGNvbnN0IEFyZzImIGEyLCBjb25zdCBBcmczJiBhMywgY29uc3QgQXJnNCYgYTQsCi0gICAgIGNvbnN0IEFyZzUmIGE1LCBjb25zdCBBcmc2JiBhNiwgY29uc3QgQXJnNyYgYTcsIGNvbnN0IEFyZzgmIGE4LAotICAgICBjb25zdCBBcmc5JiBhOSwgY29uc3QgQXJnMTAmIGExMCkgewotICByZXR1cm4KLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEwLCBmdW5jdGlvbl9hY3Rpb248MTA+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwKLSAgICAgICAgICBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LAotICAgICAgICAgIGNsYXNzIEFyZzEwPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248MTAsIGZ1bmN0aW9uX2FjdGlvbjwxMCwgUmVzdWx0PiA+LAotICAgIHR5cGVuYW1lIGRldGFpbDo6YmluZF90dXBsZV9tYXBwZXI8Ci0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwgY29uc3QgQXJnMywKLSAgICAgIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksCi0gICAgICBjb25zdCBBcmcxMAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKGNvbnN0IEFyZzEmIGExLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LAotICAgICBjb25zdCBBcmc1JiBhNSwgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwKLSAgICAgY29uc3QgQXJnOSYgYTksIGNvbnN0IEFyZzEwJiBhMTApIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICA+Ci0gICAgKCB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OmNvbnN0aWZ5X25vbl9mdW5jczxBcmcxPjo6dHlwZSwgY29uc3QgQXJnMiwKLSAgICAgICAgY29uc3QgQXJnMywgY29uc3QgQXJnNCwgY29uc3QgQXJnNSwgY29uc3QgQXJnNiwgY29uc3QgQXJnNywKLSAgICAgICAgY29uc3QgQXJnOCwgY29uc3QgQXJnOSwgY29uc3QgQXJnMTAKLSAgICAgID46OnR5cGUKLSAgICAgIChhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApCi0gICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdCwgY2xhc3MgUGFyMSwgY2xhc3MgUGFyMiwgY2xhc3MgUGFyMywgY2xhc3MgUGFyNCwKLSAgICAgICAgICBjbGFzcyBQYXI1LCBjbGFzcyBQYXI2LCBjbGFzcyBQYXI3LCBjbGFzcyBQYXI4LCBjbGFzcyBQYXI5LAotICAgICAgICAgIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsCi0gICAgICAgICAgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwgY2xhc3MgQXJnMTA+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgIFJlc3VsdCgqKShQYXIxLCBQYXIyLCBQYXIzLCBQYXI0LCBQYXI1LCBQYXI2LCBQYXI3LCBQYXI4LCBQYXI5KSwKLSAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsIGNvbnN0IEFyZzcsCi0gICAgICBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgID46OnR5cGUKLSAgPgotPgotCi1iaW5kKFJlc3VsdCgqIGNvbnN0ICYgYTEpKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsCi0gICAgIFBhcjkpLCBjb25zdCBBcmcyJiBhMiwgY29uc3QgQXJnMyYgYTMsIGNvbnN0IEFyZzQmIGE0LCBjb25zdCBBcmc1JiBhNSwKLSAgICAgY29uc3QgQXJnNiYgYTYsIGNvbnN0IEFyZzcmIGE3LCBjb25zdCBBcmc4JiBhOCwgY29uc3QgQXJnOSYgYTksCi0gICAgIGNvbnN0IEFyZzEwJiBhMTApIHsKLSAgcmV0dXJuCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgIGFjdGlvbjwxMCwgZnVuY3Rpb25fYWN0aW9uPDEwLCBSZXN1bHQ+ID4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgICAgICBSZXN1bHQoKikoUGFyMSwgUGFyMiwgUGFyMywgUGFyNCwgUGFyNSwgUGFyNiwgUGFyNywgUGFyOCwgUGFyOSksCi0gICAgICAgIGNvbnN0IEFyZzIsIGNvbnN0IEFyZzMsIGNvbnN0IEFyZzQsIGNvbnN0IEFyZzUsIGNvbnN0IEFyZzYsCi0gICAgICAgIGNvbnN0IEFyZzcsIGNvbnN0IEFyZzgsIGNvbnN0IEFyZzksIGNvbnN0IEFyZzEwCi0gICAgICA+Ojp0eXBlCi0gICAgPgotICAgICggdHlwZW5hbWUgZGV0YWlsOjpiaW5kX3R1cGxlX21hcHBlcjwKLSAgICAgICAgUmVzdWx0KCopKFBhcjEsIFBhcjIsIFBhcjMsIFBhcjQsIFBhcjUsIFBhcjYsIFBhcjcsIFBhcjgsIFBhcjkpLAotICAgICAgICBjb25zdCBBcmcyLCBjb25zdCBBcmczLCBjb25zdCBBcmc0LCBjb25zdCBBcmc1LCBjb25zdCBBcmc2LAotICAgICAgICBjb25zdCBBcmc3LCBjb25zdCBBcmc4LCBjb25zdCBBcmc5LCBjb25zdCBBcmcxMAotICAgICAgPjo6dHlwZQotICAgICAgKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCkKLSAgICApOwotfQotCi0KLSAjZW5kaWYgCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYSAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2Z1bmN0aW9uX2FkYXB0b3JzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9mdW5jdGlvbl9hZGFwdG9ycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MjczNTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2Z1bmN0aW9uX2FkYXB0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4OSArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtICBmdW5jdGlvbl9hZGFwdG9ycy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfRlVOQ1RJT05fQURBUFRPUlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9GVU5DVElPTl9BREFQVE9SU19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90dXBsZS90dXBsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvc2FtZV90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3V0aWxpdHkvcmVzdWx0X29mLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX0RFRihzaWcpCi0KLXRlbXBsYXRlPGNsYXNzIFR1cGxlPgotc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VzX2Zyb21fZWxlbWVudHMgewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmNvbnM8Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8dHlwZW5hbWUgVHVwbGU6OmhlYWRfdHlwZT46OnR5cGUsCi0gICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czx0eXBlbmFtZSBUdXBsZTo6dGFpbF90eXBlPjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czxuZG5ib29zdDo6dHVwbGVzOjpudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBuZG5ib29zdDo6dHVwbGVzOjpudWxsX3R5cGUgdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEZ1bmM+IHN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yIHsKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8RnVuYz46OnR5cGUgcGxhaW5GOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fUkVTVUxUX09GKQotICAvLyBTdXBwb3J0IGZ1bmN0b3JzIHRoYXQgdXNlIHRoZSBuZG5ib29zdDo6cmVzdWx0X29mIHJldHVybiB0eXBlIGNvbnZlbnRpb24uCi0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlLCBpbnQgTGVuZ3RoLCBib29sIEhhc1NpZz4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI7Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlLCBpbnQgTGVuZ3RoPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgTGVuZ3RoLCB0cnVlPgotICAgIDogcGxhaW5GOjp0ZW1wbGF0ZSBzaWc8Ci0gICAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czxUdXBsZT46OnR5cGUKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgMCwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKCk+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDEsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgMiwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCAzLCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDQsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDIsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDMsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDQsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgNSwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NCwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NSwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCA2LCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw0LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw1LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw2LCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotICB0ZW1wbGF0ZTxjbGFzcyBUdXBsZT4KLSAgc3RydWN0IHJlc3VsdF9jb252ZXJ0ZXI8VHVwbGUsIDcsIGZhbHNlPgotICAgIDogcmVzdWx0X29mPHBsYWluRigKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDEsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDIsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDMsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDQsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDUsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDYsIFR1cGxlPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PDcsIFR1cGxlPjo6dHlwZSkKLSAgICAgID4KLSAge307Ci0gIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICBzdHJ1Y3QgcmVzdWx0X2NvbnZlcnRlcjxUdXBsZSwgOCwgZmFsc2U+Ci0gICAgOiByZXN1bHRfb2Y8cGxhaW5GKAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8MywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NCwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NSwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NiwgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8NywgVHVwbGU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8OCwgVHVwbGU+Ojp0eXBlKQotICAgICAgPgotICB7fTsKLSAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gIHN0cnVjdCByZXN1bHRfY29udmVydGVyPFR1cGxlLCA5LCBmYWxzZT4KLSAgICA6IHJlc3VsdF9vZjxwbGFpbkYoCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwxLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwyLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDwzLCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw0LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw1LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw2LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw3LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw4LCBUdXBsZT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIHR1cGxlczo6ZWxlbWVudDw5LCBUdXBsZT46OnR5cGUpCi0gICAgICA+Ci0gIHt9OwotCi0gIC8vIHdlIGRvIG5vdCBrbm93IHRoZSByZXR1cm4gdHlwZSBvZmYtaGFuZCwgd2UgbXVzdCBhc2sgaXQgZnJvbSBGdW5jCi0gIC8vIFRvIHNpZyB3ZSBwYXNzIGEgY29ucyBsaXN0LCB3aGVyZSB0aGUgaGVhZCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0IHR5cGUKLSAgLy8gaXRzZWxmIChwb3RlbnRpYWxseSBjdi1xdWFsaWZpZWQpCi0gIC8vIGFuZCB0aGUgdGFpbCBjb250YWlucyB0aGUgdHlwZXMgb2YgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkCi0gIC8vIHRvIHRoZSBmdW5jdGlvbiBvYmplY3QuIFRoZSBhcmd1bWVudHMgY2FuIGJlIGN2IHF1YWxpZmllZAotICAvLyBhcyB3ZWxsLgotICB0ZW1wbGF0ZSA8Y2xhc3MgQXJncz4KLSAgc3RydWN0IHNpZwotICAgIDogcmVzdWx0X2NvbnZlcnRlcjwKLSAgICAgICAgQXJncwotICAgICAgLCB0dXBsZXM6Omxlbmd0aDx0eXBlbmFtZSBBcmdzOjp0YWlsX3R5cGU+Ojp2YWx1ZQotICAgICAgLCBkZXRhaWw6Omhhc19zaWc8cGxhaW5GPjo6dmFsdWUKLSAgICAgID4KLSAge307Ci0jZWxzZSAvLyBORE5CT09TVF9OT19SRVNVTFRfT0YKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQXJncz4gY2xhc3Mgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8RnVuYz46OnR5cGUgcGxhaW5GOwotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwbGFpbkY6OnRlbXBsYXRlIHNpZzwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZXNfZnJvbV9lbGVtZW50czxBcmdzPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLSAgfTsKLSNlbmRpZgotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTE+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExKSB7Ci0gICAgcmV0dXJuIGExKCk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gYTEoYTIpOwotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzKSB7Ci0gICAgcmV0dXJuIGExKGEyLCBhMyk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUpOwotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgc3RhdGljIFJFVCBhcHBseShBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2KSB7Ci0gICAgcmV0dXJuIGExKGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTc+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBNyYgYTcpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQTcmIGE3LCBBOCYgYTgpIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgCi0gICAgICAgICAgIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBNyYgYTcsIEE4JiBhOCwgQTkmIGE5KSB7Ci0gICAgcmV0dXJuIGExKGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gIH0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwPgotICBzdGF0aWMgUkVUIGFwcGx5KEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQTcmIGE3LCBBOCYgYTgsIEE5JiBhOSwgQTEwJiBhMTApIHsKLSAgICByZXR1cm4gYTEoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgRnVuYz4gc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8Y29uc3QgRnVuYz47IC8vIGVycm9yIAotCi0vLyAtLSBmdW5jdGlvbiBhZGFwdG9ycyB3aXRoIGRhdGEgbWVtYmVyIGFjY2VzcwotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgVD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFQgT2JqZWN0OjoqPiB7Ci0KLSAgLy8gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOwotCi0gIC8vIFQgY2FuIGhhdmUgcXVhbGlmaWVycyBhbmQgY2FuIGJlIGEgcmVmZXJlbmNlIHR5cGUKLSAgLy8gV2UgZ2V0IHRoZSByZXR1cm4gdHlwZSBieSBhZGRpbmcgY29uc3QsIGlmIHRoZSBvYmplY3QgdGhyb3VnaCB3aGljaAotICAvLyB0aGUgZGF0YSBtZW1iZXIgaXMgYWNjZXNzZWQgaXMgY29uc3QsIGFuZCBmaW5hbGx5IGFkZGluZyBhIHJlZmVyZW5jZQotICB0ZW1wbGF0ZTxjbGFzcyBBcmdzPiBjbGFzcyBzaWcgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8MSwgQXJncz46OnR5cGUgYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPAotICAgICAgYXJndW1lbnRfdHlwZQotICAgID46OnR5cGUgdW5yZWZfdHlwZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfY29uc3Q8dW5yZWZfdHlwZT46OnZhbHVlLAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9jb25zdDxUPjo6dHlwZSwKLSAgICAgIFQKLSAgICA+OjpSRVQgcHJvcGVybHlfY29uc3RlZF9yZXR1cm5fdHlwZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfdm9sYXRpbGU8dW5yZWZfdHlwZT46OnZhbHVlLAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF92b2xhdGlsZTxwcm9wZXJseV9jb25zdGVkX3JldHVybl90eXBlPjo6dHlwZSwKLSAgICAgIHByb3Blcmx5X2NvbnN0ZWRfcmV0dXJuX3R5cGUKLSAgICA+OjpSRVQgcHJvcGVybHlfY3ZkX3JldHVybl90eXBlOwotCi0KLSAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfcmVmZXJlbmNlPGFyZ3VtZW50X3R5cGU+Ojp2YWx1ZSwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPHByb3Blcmx5X2N2ZF9yZXR1cm5fdHlwZT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlCi0gICAgPjo6UkVUIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJFVCBhcHBseSggVCBPYmplY3Q6OipkYXRhLCBPYmplY3QmIG8pIHsKLSAgICByZXR1cm4gby4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIGNvbnN0IE9iamVjdCYgbykgewotICAgIHJldHVybiBvLipkYXRhOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoIFQgT2JqZWN0OjoqZGF0YSwgdm9sYXRpbGUgT2JqZWN0JiBvKSB7Ci0gICAgcmV0dXJuIG8uKmRhdGE7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJFVCBhcHBseSggVCBPYmplY3Q6OipkYXRhLCBjb25zdCB2b2xhdGlsZSBPYmplY3QmIG8pIHsKLSAgICByZXR1cm4gby4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIGNvbnN0IE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIHZvbGF0aWxlIE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUkVUIGFwcGx5KCBUIE9iamVjdDo6KmRhdGEsIGNvbnN0IHZvbGF0aWxlIE9iamVjdCogbykgewotICAgIHJldHVybiBvLT4qZGF0YTsKLSAgfQotfTsKLQotLy8gLS0gZnVuY3Rpb24gYWRhcHRvcnMgd2l0aCAxIGFyZ3VtZW50IGFwcGx5Ci0gICAKLXRlbXBsYXRlIDxjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKHZvaWQpPiB7Ci0gIAotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKSgpKSB7Ci0gICAgcmV0dXJuIGZ1bmMoKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikodm9pZCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKSgpKSB7Ci0gICAgcmV0dXJuIGZ1bmMoKTsKLSAgfQotfTsKLQotCi0vLyAtLSBmdW5jdGlvbiBhZGFwdG9ycyB3aXRoIDIgYXJndW1lbnQgYXBwbHkKLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKSgpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoKSBjb25zdCwgY29uc3QgT2JqZWN0KiBvKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVUPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKCkgY29uc3QsIGNvbnN0IE9iamVjdCYgbykgewotICAgIHJldHVybiAoby4qZnVuYykoKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKSgpLCBPYmplY3QqIG8pIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKSgpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQ+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoKSwgT2JqZWN0JiBvKSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKSgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxKSwgQTEmIGExKSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxKSwgQTEmIGExKSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggMyBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIAotICAgIEExJiBhMSkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxKSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCAKLSAgICBBMSYgYTEpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEpLCBPYmplY3QqIG8sIEExJiBhMSkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxKSwgT2JqZWN0JiBvLCBBMSYgYTEpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIpLCBBMSYgYTEsIEEyJiBhMikgewotICAgIHJldHVybiBmdW5jKGExLCBhMik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyKSwgQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNCBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyKSBjb25zdCwgY29uc3QgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMikgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMik7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyKSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiksIE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEsIEFyZzIsIEFyZzMpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMyksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMiwgQXJnMyk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczKSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNSBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMykgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMykgY29uc3QsIGNvbnN0IE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMykgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMyk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyLCBBcmczKT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIsIGEzKTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNiBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0KSwgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSkgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggNyBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1KSBjb25zdCwgY29uc3QgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpIGNvbnN0LCBjb25zdCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0LCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKE9iamVjdDo6KikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1KSB7Ci0gICAgcmV0dXJuIChvLT4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSksIE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoKikoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNik+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggOCBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNikgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNikgY29uc3QsIGNvbnN0IE9iamVjdCYgbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNikgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0ICgqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggOSBhcmd1bWVudCBhcHBseQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpIGNvbnN0PiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpIGNvbnN0LCBjb25zdCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcpLCBPYmplY3QqIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNykgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNz4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KSwgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcpIHsKLSAgICByZXR1cm4gKG8uKmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCk+IHsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSZXN1bHQgdHlwZTsgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiBmdW5jKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseShSZXN1bHQgKCpmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSwgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCBBOCYgYTgpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci19OwotCi0KLS8vIC0tIGZ1bmN0aW9uIGFkYXB0b3JzIHdpdGggMTAgYXJndW1lbnQgYXBwbHkKLXRlbXBsYXRlIDxjbGFzcyBPYmplY3QsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzcsIGNsYXNzIEFyZzgsIGNsYXNzIFJlc3VsdD4KLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yPFJlc3VsdCAoT2JqZWN0OjoqKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSBjb25zdD4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoIFJlc3VsdCAoT2JqZWN0OjoqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCkgY29uc3QsIGNvbnN0IE9iamVjdCogbywgQTEmIGExLCBBMiYgYTIsIEEzJiBhMywgQTQmIGE0LCBBNSYgYTUsIEE2JiBhNiwgQTcmIGE3LCBBOCYgYTgpIHsKLSAgICByZXR1cm4gKG8tPipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSBjb25zdCwgY29uc3QgT2JqZWN0JiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiAoby4qZnVuYykoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE9iamVjdCwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChPYmplY3Q6OiopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLSAgc3RhdGljIFJlc3VsdCBhcHBseSggUmVzdWx0IChPYmplY3Q6OipmdW5jKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4KSwgT2JqZWN0KiBvLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCkgewotICAgIHJldHVybiAoby0+KmZ1bmMpKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7Ci0gIH0KLSAgdGVtcGxhdGUgPGNsYXNzIFJFVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KCBSZXN1bHQgKE9iamVjdDo6KmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpLCBPYmplY3QmIG8sIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4KSB7Ci0gICAgcmV0dXJuIChvLipmdW5jKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOSwgY2xhc3MgUmVzdWx0Pgotc3RydWN0IGZ1bmN0aW9uX2FkYXB0b3I8UmVzdWx0IChBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4LCBBcmc5KT4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIFJlc3VsdCB0eXBlOyB9OwotICB0ZW1wbGF0ZSA8Y2xhc3MgUkVULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PgotICBzdGF0aWMgUmVzdWx0IGFwcGx5KFJlc3VsdCAoKmZ1bmMpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpLCBBMSYgYTEsIEEyJiBhMiwgQTMmIGEzLCBBNCYgYTQsIEE1JiBhNSwgQTYmIGE2LCBBNyYgYTcsIEE4JiBhOCwgQTkmIGE5KSB7Ci0gICAgcmV0dXJuIGZ1bmMoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4LCBjbGFzcyBBcmc5LCBjbGFzcyBSZXN1bHQ+Ci1zdHJ1Y3QgZnVuY3Rpb25fYWRhcHRvcjxSZXN1bHQgKCopKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHNpZyB7IHR5cGVkZWYgUmVzdWx0IHR5cGU7IH07Ci0gIHRlbXBsYXRlIDxjbGFzcyBSRVQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci0gIHN0YXRpYyBSZXN1bHQgYXBwbHkoUmVzdWx0ICgqZnVuYykoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCwgQXJnOSksIEExJiBhMSwgQTImIGEyLCBBMyYgYTMsIEE0JiBhNCwgQTUmIGE1LCBBNiYgYTYsIEE3JiBhNywgQTgmIGE4LCBBOSYgYTkpIHsKLSAgICByZXR1cm4gZnVuYyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLSAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9pc19pbnN0YW5jZV9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMDM1OTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtIGlzX2luc3RhbmNlX29mLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAyMDAxIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9JU19JTlNUQU5DRV9PRgotI2RlZmluZSBORE5CT09TVF9MQU1CREFfSVNfSU5TVEFOQ0VfT0YKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiIC8vIGZvciBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jb252ZXJzaW9uX3RyYWl0cy5ocHAiIC8vIGZvciBpc19jb252ZXJ0aWJsZQotI2luY2x1ZGUgIm5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0XzJuZC5ocHAiCi0KLS8vIGlzX2luc3RhbmNlX29mIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAKLS8vIGlzX2luc3RhbmNlX29mX248QSwgQj46OnZhbHVlIGlzIHRydWUsIGlmIHR5cGUgQSBpcyAKLS8vIGFuIGluc3RhbnRpYXRpb24gb2YgYSB0ZW1wbGF0ZSBCLCBvciBBIGRlcml2ZXMgZnJvbSBhbiBpbnN0YW50aWF0aW9uIAotLy8gb2YgdGVtcGxhdGUgQgotLy8KLS8vIG4gaXMgdGhlIG51bWJlciBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMgZm9yIEIKLS8vIAotLy8gRXhhbXBsZToKLS8vIGlzX2luc3RhbmNlX29mXzI8c3RkOjppc3RyZWFtLCBiYXNpY19zdHJlYW0+Ojp2YWx1ZSA9PSB0cnVlCi0KLS8vIFRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiB3YXMgc29tZXdoYXQgZGlmZmVyZW50LCB3aXRoIGRpZmZlcmVudCB2ZXJzaW9ucwotLy8gZm9yIGRpZmZlcmVudCBjb21waWxlcnMuIEhvd2V2ZXIsIHRoZXJlIHdhcyBzdGlsbCBhIHByb2JsZW0KLS8vIHdpdGggZ2NjLjMuMC4yIGFuZCAzLjAuMyBjb21waWxlcnMsIHdoaWNoIGRpZG4ndCB0aGluayByZWdhcmQKLS8vIGlzX2luc3RhbmNlX29mX048Li4uPjo6dmFsdWUgd2FzIGEgY29uc3RhbnQuCi0vLyBKb2huIE1hZGRvY2sgc3VnZ2VzdGVkIHRoZSB3YXkgYXJvdW5kIHRoaXMgcHJvYmxlbSBieSBidWlsZGluZyAKLS8vIGlzX2luc3RhbmNlX29mIHRlbXBsYXRlcyB1c2luZyBuZG5ib29zdDo6aXNfY29udmVydGlibGUuCi0vLyBOb3cgd2Ugb25seSBoYXZlIG9uZSB2ZXJzaW9uIG9mIGlzX2luc3RhbmNlX29mIHRlbXBsYXRlcywgd2hpY2ggZGVsYWdhdGUKLS8vIGFsbCB0aGUgbmFzdHkgY29tcGlsZXIgdHJpY2tzIHRvIGlzX2NvbnZlcnRpYmxlLiAKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQ0xBU1MoeiwgTixBKSBORE5CT09TVF9QUF9DT01NQV9JRihOKSBjbGFzcwotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQ0xBU1NfQVJHKHosIE4sQSkgTkROQk9PU1RfUFBfQ09NTUFfSUYoTikgY2xhc3MgQSMjTiAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FSRyh6LCBOLEEpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE4pIEEjI04gCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0NMQVNTX0xJU1QobiwgTkFNRSkgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX0xBTUJEQV9DTEFTUywgTkFNRSkKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQ0xBU1NfQVJHX0xJU1QobiwgTkFNRSkgTkROQk9PU1RfUFBfUkVQRUFUKG4sIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkcsIE5BTUUpCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0FSR19MSVNUKG4sIE5BTUUpIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9MQU1CREFfQVJHLCBOQU1FKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0lTX0lOU1RBTkNFX09GX1RFTVBMQVRFKElOREVYKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbmFtZXNwYWNlIGRldGFpbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8dGVtcGxhdGU8TkROQk9PU1RfTEFNQkRBX0NMQVNTX0xJU1QoSU5ERVgsVCk+IGNsYXNzIEY+ICAgICAgICAgICAgICAgXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChjb252ZXJzaW9uX3Rlc3Rlcl8sSU5ERVgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8TkROQk9PU1RfTEFNQkRBX0NMQVNTX0FSR19MSVNUKElOREVYLEEpPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0NBVChjb252ZXJzaW9uX3Rlc3Rlcl8sSU5ERVgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChjb25zdCBGPE5ETkJPT1NUX0xBTUJEQV9BUkdfTElTVChJTkRFWCxBKT4mKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAvKiBlbmQgZGV0YWlsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgdGVtcGxhdGUgPE5ETkJPT1NUX0xBTUJEQV9DTEFTU19MSVNUKElOREVYLFQpPiBjbGFzcyBUbz4gXAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChpc19pbnN0YW5jZV9vZl8sSU5ERVgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgRnJvbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIE5ETkJPT1NUX1BQX0NBVChkZXRhaWw6OmNvbnZlcnNpb25fdGVzdGVyXyxJTkRFWCk8VG8+ICAgICAgICAgICAgICAgICAgICAgXAotICAgPiBoZWxwZXJfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBoZWxwZXJfdHlwZTo6dmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKLX07Ci0KLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfSEVMUEVSKHosIE4sIEEpIE5ETkJPT1NUX0xBTUJEQV9JU19JTlNUQU5DRV9PRl9URU1QTEFURSggTkROQk9PU1RfUFBfSU5DKE4pICkKLQotLy8gR2VuZXJhdGUgdGhlIHRyYWl0cyBmb3IgMS00IGFyZ3VtZW50IHRlbXBsYXRlcwotCi1ORE5CT09TVF9QUF9SRVBFQVRfMk5EKDQsTkROQk9PU1RfTEFNQkRBX0hFTFBFUixGT08pCi0KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfSEVMUEVSCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0lTX0lOU1RBTkNFX09GX1RFTVBMQVRFCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0NMQVNTCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0FSRwotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkcKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQ0xBU1NfTElTVAotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9BUkdfTElTVAotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9DTEFTU19BUkdfTElTVAotCi19IC8vIGxhbWJkYQotfSAvLyBib29zdAotCi0jZW5kaWYKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNWRjZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLy8gQm9vc3QgTGFtYmRhIExpYnJhcnkgLSBsYW1iZGFfY29uZmlnLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX0NPTkZJR19IUFAKLQotLy8gYWRkIHRvIG5kbmJvb3N0L2NvbmZpZy5ocHAKLS8vIGZvciBub3cKLQotCi0jIGlmIGRlZmluZWQgX19HTlVDX18KLSMgICBpZiAoX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA+PSA0KSAKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUZfVE9fRlVOQ19DT05GTElDVFNfV0lUSF9SRUZfVE9fVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9JTkNPUlJFQ1RfQklORF9PVkVSTE9BRElORwotIyAgIGVuZGlmCi0jICAgaWYgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPD0gOTcpIAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9TVFJFQU1TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0lOQ09SUkVDVF9CSU5EX09WRVJMT0FESU5HCi0jICAgZW5kaWYKLSMgICBpZiAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8PSA5NSkgCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0ZBSUxTX0lOX1RFTVBMQVRFX0tFWVdPUkRfQUZURVJfU0NPUEVfT1BFUgotIyAgIGVuZGlmCi0jIGVuZGlmICAvLyBfX0dOVUNfXwotIAotCi0jaWYgZGVmaW5lZCBfX0tDQwotCi0jZGVmaW5lIE5ETkJPT1NUX05PX0ZERUNMX1RFTVBMQVRFU19BU19URU1QTEFURV9URU1QTEFURV9QQVJBTVMKLQotI2VuZGlmICAvLyBfX0tDQwotCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9yX2Jhc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9yX2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmIwMTJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZnVuY3Rvcl9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxNSArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAgbGFtYmRhX2Z1bmN0b3JfYmFzZS5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z3ZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfdHJhaXRzLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPj0gMTQwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxMikgLy9hc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi0gIC8vIGZvciByZXR1cm4gdHlwZSBkZWR1Y3Rpb25zIHdlIHdyYXAgYm91bmQgYXJndW1lbnQgdG8gdGhpcyBjbGFzcywKLSAgLy8gd2hpY2ggZnVsZmlscyB0aGUgYmFzZSBjbGFzcyBjb250cmFjdCBmb3IgbGFtYmRhX2Z1bmN0b3JzCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGlkZW50aXR5IHsKLQotICBUIGVsZW07Ci1wdWJsaWM6Ci0gIAotICB0eXBlZGVmIFQgZWxlbWVudF90OwotCi0gIC8vIHRha2UgYWxsIHBhcmFtZXRlcnMgYXMgY29uc3QgcmVmZXJlbmNlcy4gTm90ZSB0aGF0IG5vbi1jb25zdCByZWZlcmVuY2VzCi0gIC8vIHN0YXkgYXMgdGhleSBhcmUuCi0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8Ci0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9jb25zdDxUPjo6dHlwZQotICA+Ojp0eXBlIHBhcl90OwotCi0gIGV4cGxpY2l0IGlkZW50aXR5KHBhcl90IHQpIDogZWxlbSh0KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBTaWdBcmdzPiAKLSAgc3RydWN0IHNpZyB7IHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDxlbGVtZW50X3Q+Ojp0eXBlIHR5cGU7IH07Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgQ0FMTF9VU0VfQVJHUzsgcmV0dXJuIGVsZW07IH0KLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE0MDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSBsYW1iZGFfZnVuY3RvcjxpZGVudGl0eTxUJj4gPiB2YXIoVCYgdCkgeyByZXR1cm4gaWRlbnRpdHk8VCY+KHQpOyB9Ci0KLSAgLy8gZm9yIGxhbWJkYSBmdW5jdG9ycywgdmFyIGlzIGFuIGlkZW50aXR5IG9wZXJhdG9yLiBJdCB3YXMgZm9yYmlkZGVuCi0gIC8vIGF0IHNvbWUgcG9pbnQsIGJ1dCB3ZSBtaWdodCB3YW50IHRvIHZhciBzb21ldGhpbmcgdGhhdCBjYW4gYmUgYSAKLSAgLy8gbm9uLWxhbWJkYSBmdW5jdG9yIG9yIGEgbGFtYmRhIGZ1bmN0b3IuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWxhbWJkYV9mdW5jdG9yPFQ+IHZhcihjb25zdCBsYW1iZGFfZnVuY3RvcjxUPiYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHZhcl90eXBlIHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxpZGVudGl0eTxUJj4gPiB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gCi1pbmxpbmUgCi1sYW1iZGFfZnVuY3RvcjxpZGVudGl0eTx0eXBlbmFtZSBib3VuZF9hcmd1bWVudF9jb252ZXJzaW9uPGNvbnN0IFQ+Ojp0eXBlPiA+Ci1jb25zdGFudChjb25zdCBUJiB0KSB7IAotICByZXR1cm4gaWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxjb25zdCBUPjo6dHlwZT4odCk7IAotfQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1sYW1iZGFfZnVuY3RvcjxUPiBjb25zdGFudChjb25zdCBsYW1iZGFfZnVuY3RvcjxUPiYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGNvbnN0YW50X3R5cGUgewotICB0eXBlZGVmIAotICAgbGFtYmRhX2Z1bmN0b3I8Ci0gICAgIGlkZW50aXR5PHR5cGVuYW1lIGJvdW5kX2FyZ3VtZW50X2NvbnZlcnNpb248Y29uc3QgVD46OnR5cGU+IAotICAgPiB0eXBlOwotfTsKLQotCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSBsYW1iZGFfZnVuY3RvcjxpZGVudGl0eTxjb25zdCBUJj4gPiBjb25zdGFudF9yZWYoY29uc3QgVCYgdCkgeyAKLSAgcmV0dXJuIGlkZW50aXR5PGNvbnN0IFQmPih0KTsgCi19Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWxhbWJkYV9mdW5jdG9yPFQ+IGNvbnN0YW50X3JlZihjb25zdCBsYW1iZGFfZnVuY3RvcjxUPiYgdCkgeyByZXR1cm4gdDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGNvbnN0YW50X3JlZl90eXBlIHsKLSAgdHlwZWRlZiAKLSAgIGxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PGNvbnN0IFQmPiA+IHR5cGU7Ci19OwotCi0KLQotICAvLyBhc19sYW1iZGFfZnVuY3RvciB0dXJucyBhbnkgdHlwZXMgdG8gbGFtYmRhIGZ1bmN0b3JzIAotICAvLyBub24tbGFtYmRhX2Z1bmN0b3JzIHdpbGwgYmUgYm91bmQgYXJndW1lbnQgdHlwZXMKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGFzX2xhbWJkYV9mdW5jdG9yIHsgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxUPjo6dHlwZSBwbGFpbl9UOwotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUY8aXNfbGFtYmRhX2Z1bmN0b3I8cGxhaW5fVD46OnZhbHVlLCAKLSAgICAgIHBsYWluX1QsCi0gICAgICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgICAgaWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxUPjo6dHlwZT4gCi0gICAgICA+Ci0gICAgPjo6UkVUIHR5cGU7IAotfTsKLQotLy8gdHVybnMgYXJiaXRyYXJ5IG9iamVjdHMgaW50byBsYW1iZGEgZnVuY3RvcnMKLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSAKLWxhbWJkYV9mdW5jdG9yPGlkZW50aXR5PHR5cGVuYW1lIGJvdW5kX2FyZ3VtZW50X2NvbnZlcnNpb248Y29uc3QgVD46OnR5cGU+ID4gCi10b19sYW1iZGFfZnVuY3Rvcihjb25zdCBUJiB0KSB7IAotICByZXR1cm4gaWRlbnRpdHk8dHlwZW5hbWUgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxjb25zdCBUPjo6dHlwZT4odCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiAKLWlubGluZSBsYW1iZGFfZnVuY3RvcjxUPiAKLXRvX2xhbWJkYV9mdW5jdG9yKGNvbnN0IGxhbWJkYV9mdW5jdG9yPFQ+JiB0KSB7IAotICByZXR1cm4gdDsKLX0KLQotbmFtZXNwYWNlIGRldGFpbCB7ICAgCi0KLQotCi0vLyBJbiBhIGNhbGwgY29uc3RpZnlfcnZhbHM8VD46OmdvKHgpCi0vLyB4IHNob3VsZCBiZSBvZiB0eXBlIFQuIElmIFQgaXMgYSBub24tcmVmZXJlbmNlIHR5cGUsIGRvCi0vLyByZXR1cm5zIHggYXMgY29uc3QgcmVmZXJlbmNlLiAKLS8vIE90aGVyd2lzZSB0aGUgdHlwZSBkb2Vzbid0IGNoYW5nZS4KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8gYXZvaWQgCi0vLyAnY2Fubm90IGJpbmQgdGVtcG9yYXJpZXMgdG8gbm9uLWNvbnN0IHJlZmVyZW5jZXMnIGVycm9ycy4KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RpZnlfcnZhbHMgewotICB0ZW1wbGF0ZTxjbGFzcyBVPgotICBzdGF0aWMgaW5saW5lIGNvbnN0IFUmIGdvKGNvbnN0IFUmIHUpIHsgcmV0dXJuIHU7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgY29uc3RpZnlfcnZhbHM8VCY+IHsKLSAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgc3RhdGljIGlubGluZSBVJiBnbyhVJiB1KSB7IHJldHVybiB1OyB9Ci19OwotCi0gIC8vIGNoZWNrIHdoZXRoZXIgb25lIG9mIHRoZSBlbGVtZW50cyBvZiBhIHR1cGxlIChjb25zIGxpc3QpIGlzIG9mIHR5cGUKLSAgLy8gbnVsbF90eXBlLiBOZWVkZWQsIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGdvZXMgYWhlYWQgYW5kIGluc3RhbnRpYXRlcwotICAvLyBzaWcgdGVtcGxhdGUgZm9yIG51bGxhcnkgY2FzZSBldmVuIGlmIHRoZSBudWxsYXJ5IG9wZXJhdG9yKCkgaXMgbm90Ci0gIC8vIGNhbGxlZAotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc19udWxsX3R5cGUgCi17IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsgfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IGlzX251bGxfdHlwZTxudWxsX3R5cGU+IAoteyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGU8Y2xhc3MgVHVwbGU+IHN0cnVjdCBoYXNfbnVsbF90eXBlIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKGlzX251bGxfdHlwZTx0eXBlbmFtZSBUdXBsZTo6aGVhZF90eXBlPjo6dmFsdWUgfHwgaGFzX251bGxfdHlwZTx0eXBlbmFtZSBUdXBsZTo6dGFpbF90eXBlPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBoYXNfbnVsbF90eXBlPG51bGxfdHlwZT4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0KLS8vIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLXRlbXBsYXRlPGNsYXNzIEFyZ3MsIGNsYXNzIFNpZ0FyZ3M+Ci1jbGFzcyBkZWR1Y2VfYXJndW1lbnRfdHlwZXNfIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBhc19sYW1iZGFfZnVuY3Rvcjx0eXBlbmFtZSBBcmdzOjpoZWFkX3R5cGU+Ojp0eXBlIGxmX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbGZfdDo6aW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8U2lnQXJncz46OnR5cGUgZWxfdDsgIAotcHVibGljOgotICB0eXBlZGVmCi0gICAgbmRuYm9vc3Q6OnR1cGxlczo6Y29uczwKLSAgICAgIGVsX3QsIAotICAgICAgdHlwZW5hbWUgZGVkdWNlX2FyZ3VtZW50X3R5cGVzXzx0eXBlbmFtZSBBcmdzOjp0YWlsX3R5cGUsIFNpZ0FyZ3M+Ojp0eXBlCi0gICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4KLWNsYXNzIGRlZHVjZV9hcmd1bWVudF90eXBlc188bnVsbF90eXBlLCBTaWdBcmdzPiB7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7IAotfTsKLQotCi0vLyAgLy8gbm90ZSB0aGF0IHR1cGxlcyBjYW5ub3QgaGF2ZSBwbGFpbiBmdW5jdGlvbiB0eXBlcyBhcyBlbGVtZW50cy4KLS8vICAvLyBIZW5jZSwgYWxsIG90aGVyIHR5cGVzIHdpbGwgYmUgbm9uLWNvbnN0LCBleGNlcHQgcmVmZXJlbmNlcyB0byAKLS8vICAvLyBmdW5jdGlvbnMuCi0vLyAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlX2V4Y2VwdF9mcm9tX2Z1bmN0aW9ucyB7Ci0vLyAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIHQ7Ci0vLyAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHQ+Ojp2YWx1ZSwgVCwgdD46OlJFVCB0eXBlOwotLy8gIH07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZ3MsIGNsYXNzIFNpZ0FyZ3M+Ci1jbGFzcyBkZWR1Y2Vfbm9uX3JlZl9hcmd1bWVudF90eXBlc18gewotICB0eXBlZGVmIHR5cGVuYW1lIGFzX2xhbWJkYV9mdW5jdG9yPHR5cGVuYW1lIEFyZ3M6OmhlYWRfdHlwZT46OnR5cGUgbGZfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBsZl90Ojppbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzxTaWdBcmdzPjo6dHlwZSBlbF90OyAgCi1wdWJsaWM6Ci0gIHR5cGVkZWYKLSAgICBuZG5ib29zdDo6dHVwbGVzOjpjb25zPAotICAvLyAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9leGNlcHRfZnJvbV9mdW5jdGlvbnM8ZWxfdD46OnR5cGUsIAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8ZWxfdD46OnR5cGUsIAotICAgICAgdHlwZW5hbWUgZGVkdWNlX25vbl9yZWZfYXJndW1lbnRfdHlwZXNfPHR5cGVuYW1lIEFyZ3M6OnRhaWxfdHlwZSwgU2lnQXJncz46OnR5cGUKLSAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPgotY2xhc3MgZGVkdWNlX25vbl9yZWZfYXJndW1lbnRfdHlwZXNfPG51bGxfdHlwZSwgU2lnQXJncz4gewotcHVibGljOgotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOyAKLX07Ci0KLSAgLy8gLS0tLS0tLS0tLS0tLQotCi0vLyB0YWtlIHN0b3JlZCBBcmdzIGFuZCBPcGVuIEFyZ3MsIGFuZCByZXR1cm4gYSBjb25zdCBsaXN0IHdpdGggCi0vLyBkZWR1Y2VkIGVsZW1lbnRzIChyZWFsIHJldHVybiB0eXBlcykKLXRlbXBsYXRlPGNsYXNzIEFyZ3MsIGNsYXNzIFNpZ0FyZ3M+Ci1jbGFzcyBkZWR1Y2VfYXJndW1lbnRfdHlwZXMgewotICB0eXBlZGVmIHR5cGVuYW1lIGRlZHVjZV9hcmd1bWVudF90eXBlc188QXJncywgU2lnQXJncz46OnR5cGUgdDE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBoYXNfbnVsbF90eXBlPHQxPjo6dmFsdWUsIG51bGxfdHlwZSwgdDEKLSAgPjo6UkVUIHR5cGU7IAotfTsKLQotLy8gdGFrZSBzdG9yZWQgQXJncyBhbmQgT3BlbiBBcmdzLCBhbmQgcmV0dXJuIGEgY29uc3QgbGlzdCB3aXRoIAotLy8gZGVkdWNlZCBlbGVtZW50cyAocmVmZXJlbmNlcyBhcmUgc3RyaXBwZWQgZnJvbSB0aGUgZWxlbWVudCB0eXBlcykKLQotdGVtcGxhdGU8Y2xhc3MgQXJncywgY2xhc3MgU2lnQXJncz4KLWNsYXNzIGRlZHVjZV9ub25fcmVmX2FyZ3VtZW50X3R5cGVzIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZWR1Y2Vfbm9uX3JlZl9hcmd1bWVudF90eXBlc188QXJncywgU2lnQXJncz46OnR5cGUgdDE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBoYXNfbnVsbF90eXBlPHQxPjo6dmFsdWUsIG51bGxfdHlwZSwgdDEKLSAgPjo6UkVUIHR5cGU7IAotfTsKLQotdGVtcGxhdGUgPGludCBOLCBjbGFzcyBBcmdzLCBjbGFzcyBTaWdBcmdzPgotc3RydWN0IG50aF9yZXR1cm5fdHlwZV9zaWcgewotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgICAgICAgIGFzX2xhbWJkYV9mdW5jdG9yPAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDxOLCBBcmdzPjo6dHlwZSAKLSAgLy8gICAgICAgICAgICB0eXBlbmFtZSB0dXBsZV9lbGVtZW50X2FzX3JlZmVyZW5jZTxOLCBBcmdzPjo6dHlwZSAKLSAgICAgICAgPjo6dHlwZSBsZl90eXBlOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbGZfdHlwZTo6aW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8U2lnQXJncz46OnR5cGUgdHlwZTsgIAotfTsKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFR1cGxlPiBzdHJ1Y3QgZWxlbWVudF9vcl9udWxsIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHVwbGVzOjplbGVtZW50PE4sIFR1cGxlPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8aW50IE4+IHN0cnVjdCBlbGVtZW50X29yX251bGw8TiwgbnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi0KLSAgIAotICAgCi19IC8vIGVuZCBkZXRhaWwKLSAgIAotIC8vIC0tIGxhbWJkYV9mdW5jdG9yIGJhc2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIHRoZSBleHBsaWNpdF9yZXR1cm5fdHlwZV9hY3Rpb24gY2FzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGU8Y2xhc3MgUkVULCBjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxleHBsaWNpdF9yZXR1cm5fdHlwZV9hY3Rpb248UkVUPiwgQXJncz4gCi17Ci1wdWJsaWM6Ci0gIEFyZ3MgYXJnczsKLQotICB0eXBlZGVmIFJFVCByZXN1bHRfdHlwZTsKLQotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiBSRVQgdHlwZTsgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVRfLCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IAotICB7Ci0gICAgcmV0dXJuIGRldGFpbDo6Y29uc3RpZnlfcnZhbHM8UkVUPjo6Z28oCi0gICAgIGRldGFpbDo6cl9zZWxlY3Q8UkVUPjo6Z28obmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSk7Ci0gIH0KLX07Ci0KLS8vIHRoZSBwcm90ZWN0X2FjdGlvbiBjYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxwcm90ZWN0X2FjdGlvbiwgQXJncz4KLXsKLXB1YmxpYzoKLSAgQXJncyBhcmdzOwotcHVibGljOgotCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4KLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgCi0gIHsKLSAgICAgQ0FMTF9VU0VfQVJHUzsKLSAgICAgcmV0dXJuIG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAKLSAgICAvLyAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dHVwbGVfZWxlbWVudF9hc19yZWZlcmVuY2U8MCwgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8MCwgQXJncz46OnR5cGUgdHlwZTsKLSAgfTsKLX07Ci0KLS8vIERvIG5vdGhpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWNsYXNzIGRvX25vdGhpbmdfYWN0aW9uIHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxkb19ub3RoaW5nX2FjdGlvbiwgQXJncz4gewotICAvLyAgQXJncyBhcmdzOwotcHVibGljOgotICAvLyAgZXhwbGljaXQgbGFtYmRhX2Z1bmN0b3JfYmFzZShjb25zdCBBcmdzJiBhKSB7fQotICBsYW1iZGFfZnVuY3Rvcl9iYXNlKCkge30KLQotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7Ci0gICAgcmV0dXJuIENBTExfVVNFX0FSR1M7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci19OyAgCi0KLQotLy8gIFRoZXNlIHNwZWNpYWxpemF0aW9ucyBwcm92aWRlIGEgc2hvcnRlciBub3RhdGlvbiB0byBkZWZpbmUgYWN0aW9ucy4KLS8vICBUaGVzZSBsYW1iZGFfZnVuY3Rvcl9iYXNlIGluc3RhbmNlcyB0YWtlIGNhcmUgb2YgdGhlIHJlY3Vyc2l2ZSBldmFsdWF0aW9uCi0vLyAgb2YgdGhlIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgZXZhbHVhdGVkIGFyZ3VtZW50cyB0byB0aGUgYXBwbHkgZnVuY3Rpb24KLS8vICBvZiBhbiBhY3Rpb24gY2xhc3MuIFRvIG1ha2UgYWN0aW9uIFggd29yayB3aXRoIHRoZXNlIGNsYXNzZXMsIG9uZSBtdXN0Ci0vLyAgaW5zdGFudGlhdGUgdGhlIGxhbWJkYV9mdW5jdG9yX2Jhc2UgYXM6Ci0vLyAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxhY3Rpb248QVJJVFksIFg+LCBBcmdzPgotLy8gIFdoZXJlIEFSSVRZIGlzIHRoZSBhcml0eSBvZiB0aGUgYXBwbHkgZnVuY3Rpb24gaW4gWAotCi0vLyAgVGhlIHJldHVybiB0eXBlIGlzIHF1ZXJpZWQgYXM6Ci0vLyAgcmV0dXJuX3R5cGVfTjxYLCBFdmFsdWF0ZWRBcmd1bWVudFR5cGVzPjo6dHlwZQotLy8gIGZvciB3aGljaCB0aGVyZSBtdXN0IGJlIGEgc3BlY2lhbGl6YXRpb24uCi0KLS8vICBGdW5jdGlvbiBhY3Rpb25zLCBjYXN0cywgdGhyb3dzLC4uLiBhbGwgZ28gdmlhIHRoZXNlIGNsYXNzZXMuCi0KLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiAgCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPGFjdGlvbjwwLCBBY3Q+LCBBcmdzPiAgICAgICAgICAgCi17ICAKLXB1YmxpYzogIAotLy8gIEFyZ3MgYXJnczsgbm90IG5lZWRlZAotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIC8qYSovKSB7fSAgCi0gIAotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmV0dXJuX3R5cGVfTjxBY3QsIG51bGxfdHlwZT46OnR5cGUgdHlwZTsKLSAgfTsKLSAgCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAgCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgIAotICAgIENBTExfVVNFX0FSR1M7Ci0gICAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigpOwotICB9Ci19OwotCi0KLSNpZiBkZWZpbmVkIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQgIAotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQiICAKLSNlbmRpZiAgCi0gIAotICAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVChBUklUWSkgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPGFjdGlvbjxBUklUWSwgQWN0PiwgQXJncz4gICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIEFyZ3MgYXJnczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fSAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZGV0YWlsOjpkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgU2lnQXJncz46OnR5cGUgcmV0c190OyAgICAgICAgIFwKLSAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICByZXR1cm5fdHlwZV9OX3Byb3Q8QWN0LCByZXRzX3Q+Ojp0eXBlIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdXNpbmcgbmRuYm9vc3Q6OnR1cGxlczo6Z2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBkZXRhaWw6OmNvbnN0aWZ5X3J2YWxzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIGRldGFpbDo6cl9zZWxlY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdXNpbmcgZGV0YWlsOjplbGVtZW50X29yX251bGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDEpCi0KLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoMikKLSAgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDMpCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgdHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUgcmV0c190OwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0KLSAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDI+OjpnbyhyX3NlbGVjdDxydDI+OjpnbyhnZXQ8Mj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKQotICAgICk7Ci0gIH0KLX07Ci0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoNCkKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgdHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUgcmV0c190OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwwLCByZXRzX3Q+Ojp0eXBlIHJ0MDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MSwgcmV0c190Pjo6dHlwZSBydDE7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDIsIHJldHNfdD46OnR5cGUgcnQyOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwzLCByZXRzX3Q+Ojp0eXBlIHJ0MzsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg1KQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg2KQotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw1LCByZXRzX3Q+Ojp0eXBlIHJ0NTsKLQotCi0gICAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDI+OjpnbyhyX3NlbGVjdDxydDI+OjpnbyhnZXQ8Mj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDM+OjpnbyhyX3NlbGVjdDxydDM+OjpnbyhnZXQ8Mz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDQ+OjpnbyhyX3NlbGVjdDxydDQ+OjpnbyhnZXQ8ND4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDU+OjpnbyhyX3NlbGVjdDxydDU+OjpnbyhnZXQ8NT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSAKLSAgICApOwotICB9Ci19OwotCi1ORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JfQkFTRV9GSVJTVF9QQVJUKDcpCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGVkdWNlX2FyZ3VtZW50X3R5cGVzPEFyZ3MsIHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlIHJldHNfdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MCwgcmV0c190Pjo6dHlwZSBydDA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDEsIHJldHNfdD46OnR5cGUgcnQxOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwyLCByZXRzX3Q+Ojp0eXBlIHJ0MjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MywgcmV0c190Pjo6dHlwZSBydDM7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDQsIHJldHNfdD46OnR5cGUgcnQ0OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw1LCByZXRzX3Q+Ojp0eXBlIHJ0NTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NiwgcmV0c190Pjo6dHlwZSBydDY7Ci0KLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0NT46OmdvKHJfc2VsZWN0PHJ0NT46OmdvKGdldDw1PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nj46OmdvKHJfc2VsZWN0PHJ0Nj46OmdvKGdldDw2PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg4KQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NSwgcmV0c190Pjo6dHlwZSBydDU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDYsIHJldHNfdD46OnR5cGUgcnQ2OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw3LCByZXRzX3Q+Ojp0eXBlIHJ0NzsKLQotICByZXR1cm4gQWN0Ojp0ZW1wbGF0ZSBhcHBseTxSRVQ+KAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MD46OmdvKHJfc2VsZWN0PHJ0MD46OmdvKGdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0MT46OmdvKHJfc2VsZWN0PHJ0MT46OmdvKGdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mj46OmdvKHJfc2VsZWN0PHJ0Mj46OmdvKGdldDwyPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Mz46OmdvKHJfc2VsZWN0PHJ0Mz46OmdvKGdldDwzPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0ND46OmdvKHJfc2VsZWN0PHJ0ND46OmdvKGdldDw0PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0NT46OmdvKHJfc2VsZWN0PHJ0NT46OmdvKGdldDw1PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nj46OmdvKHJfc2VsZWN0PHJ0Nj46OmdvKGdldDw2PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpLAotICAgIGNvbnN0aWZ5X3J2YWxzPHJ0Nz46OmdvKHJfc2VsZWN0PHJ0Nz46OmdvKGdldDw3PihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykpCi0gICAgKTsKLSAgfQotfTsKLQotTkROQk9PU1RfTEFNQkRBX0xBTUJEQV9GVU5DVE9SX0JBU0VfRklSU1RfUEFSVCg5KQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NSwgcmV0c190Pjo6dHlwZSBydDU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDYsIHJldHNfdD46OnR5cGUgcnQ2OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw3LCByZXRzX3Q+Ojp0eXBlIHJ0NzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8OCwgcmV0c190Pjo6dHlwZSBydDg7Ci0KLSAgcmV0dXJuIEFjdDo6dGVtcGxhdGUgYXBwbHk8UkVUPigKLSAgICBjb25zdGlmeV9ydmFsczxydDA+OjpnbyhyX3NlbGVjdDxydDA+OjpnbyhnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDE+OjpnbyhyX3NlbGVjdDxydDE+OjpnbyhnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDI+OjpnbyhyX3NlbGVjdDxydDI+OjpnbyhnZXQ8Mj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDM+OjpnbyhyX3NlbGVjdDxydDM+OjpnbyhnZXQ8Mz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDQ+OjpnbyhyX3NlbGVjdDxydDQ+OjpnbyhnZXQ8ND4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDU+OjpnbyhyX3NlbGVjdDxydDU+OjpnbyhnZXQ8NT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDY+OjpnbyhyX3NlbGVjdDxydDY+OjpnbyhnZXQ8Nj4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDc+OjpnbyhyX3NlbGVjdDxydDc+OjpnbyhnZXQ8Nz4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKSwKLSAgICBjb25zdGlmeV9ydmFsczxydDg+OjpnbyhyX3NlbGVjdDxydDg+OjpnbyhnZXQ8OD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpKQotICAgICk7Ci0gIH0KLX07Ci0KLU5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQoMTApIAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRlZHVjZV9hcmd1bWVudF90eXBlczxBcmdzLCB0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZSByZXRzX3Q7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUgcnQwOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlIHJ0MTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8MiwgcmV0c190Pjo6dHlwZSBydDI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDMsIHJldHNfdD46OnR5cGUgcnQzOwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw0LCByZXRzX3Q+Ojp0eXBlIHJ0NDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8NSwgcmV0c190Pjo6dHlwZSBydDU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDYsIHJldHNfdD46OnR5cGUgcnQ2OwotICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnRfb3JfbnVsbDw3LCByZXRzX3Q+Ojp0eXBlIHJ0NzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50X29yX251bGw8OCwgcmV0c190Pjo6dHlwZSBydDg7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudF9vcl9udWxsPDksIHJldHNfdD46OnR5cGUgcnQ5OwotCi0gIHJldHVybiBBY3Q6OnRlbXBsYXRlIGFwcGx5PFJFVD4oCi0gICAgY29uc3RpZnlfcnZhbHM8cnQwPjo6Z28ocl9zZWxlY3Q8cnQwPjo6Z28oZ2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQxPjo6Z28ocl9zZWxlY3Q8cnQxPjo6Z28oZ2V0PDE+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQyPjo6Z28ocl9zZWxlY3Q8cnQyPjo6Z28oZ2V0PDI+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQzPjo6Z28ocl9zZWxlY3Q8cnQzPjo6Z28oZ2V0PDM+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ0Pjo6Z28ocl9zZWxlY3Q8cnQ0Pjo6Z28oZ2V0PDQ+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ1Pjo6Z28ocl9zZWxlY3Q8cnQ1Pjo6Z28oZ2V0PDU+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ2Pjo6Z28ocl9zZWxlY3Q8cnQ2Pjo6Z28oZ2V0PDY+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ3Pjo6Z28ocl9zZWxlY3Q8cnQ3Pjo6Z28oZ2V0PDc+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ4Pjo6Z28ocl9zZWxlY3Q8cnQ4Pjo6Z28oZ2V0PDg+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSksCi0gICAgY29uc3RpZnlfcnZhbHM8cnQ5Pjo6Z28ocl9zZWxlY3Q8cnQ5Pjo6Z28oZ2V0PDk+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSkgCi0gICAgKTsKLSAgfQotfTsKLQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfRlVOQ1RPUl9CQVNFX0ZJUlNUX1BBUlQKLQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL2xhbWJkYV9mdW5jdG9ycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwZTg2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z1bmN0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1NyArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtICBsYW1iZGFfZnVuY3RvcnMuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JTX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX0ZVTkNUT1JTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzEwKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMShBMSwgUjEpXAotICB0eXBlbmFtZSBsYXp5X2Rpc2FibGVfaWY8aXNfYXJyYXk8QTE+LCB0eXBlbmFtZSBSMSA+Ojp0eXBlCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMihBMSwgQTIsIFIxLCBSMikgXAotICB0eXBlbmFtZSBsYXp5X2Rpc2FibGVfaWY8bXBsOjpvcl88aXNfYXJyYXk8QTE+LCBpc19hcnJheTxBMj4gPiwgdHlwZW5hbWUgUjEsIFIyID46OnR5cGUKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkzKEExLCBBMiwgQTMsIFIxLCBSMiwgUjMpIFwKLSAgdHlwZW5hbWUgbGF6eV9kaXNhYmxlX2lmPG1wbDo6b3JfPGlzX2FycmF5PEExPiwgaXNfYXJyYXk8QTI+LCBpc19hcnJheTxBMz4gPiwgdHlwZW5hbWUgUjEsIFIyLCBSMyA+Ojp0eXBlCi0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkxKEExLCBSMSkgdHlwZW5hbWUgUjE6OnR5cGUKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkyKEExLCBBMiwgUjEsIFIyKSB0eXBlbmFtZSBSMSwgUjI6OnR5cGUKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkzKEExLCBBMiwgQTMsIFIxLCBSMiwgUjMpIHR5cGVuYW1lIFIxLCBSMiwgUjM6OnR5cGUKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLS8vIC0tIGxhbWJkYV9mdW5jdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vL2lubGluZSBjb25zdCBudWxsX3R5cGUgY29uc3RfbnVsbF90eXBlKCkgeyByZXR1cm4gbnVsbF90eXBlKCk7IH0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci1uYW1lc3BhY2UgewotCi0gIHN0YXRpYyBjb25zdCBudWxsX3R5cGUgY29uc3RhbnRfbnVsbF90eXBlID0gbnVsbF90eXBlKCk7Ci0KLX0gLy8gdW5uYW1lZAotfSAvLyBkZXRhaWwKLQotY2xhc3MgdW51c2VkIHt9OwotCi0jZGVmaW5lIGNudWxsX3R5cGUoKSBkZXRhaWw6OmNvbnN0YW50X251bGxfdHlwZQotCi0vLyAtLSBmcmVlIHZhcmlhYmxlcyB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLSAKLSAgLy8gaGVscGVyIHRvIHdvcmsgYXJvdW5kIHRoZSBjYXNlIHdoZXJlIHRoZSBudWxsYXJ5IHJldHVybiB0eXBlIGRlZHVjdGlvbiAKLSAgLy8gaXMgYWx3YXlzIHBlcmZvcm1lZCwgZXZlbiB0aG91Z2ggdGhlIGZ1bmN0b3IgaXMgbm90IG51bGxhcnkgIAotbmFtZXNwYWNlIGRldGFpbCB7Ci0gIHRlbXBsYXRlPGludCBOLCBjbGFzcyBUdXBsZT4gc3RydWN0IGdldF9lbGVtZW50X29yX251bGxfdHlwZSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgIGRldGFpbDo6dHVwbGVfZWxlbWVudF9hc19yZWZlcmVuY2U8TiwgVHVwbGU+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0gIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgZ2V0X2VsZW1lbnRfb3JfbnVsbF90eXBlPE4sIG51bGxfdHlwZT4gewotICAgIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci0gIH07Ci19Ci0KLXRlbXBsYXRlIDxpbnQgST4gc3RydWN0IHBsYWNlaG9sZGVyOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBwbGFjZWhvbGRlcjxGSVJTVD4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpnZXRfZWxlbWVudF9vcl9udWxsX3R5cGU8MCwgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFJFVD46OnZhbHVlKTsgCi0gICAgQ0FMTF9VU0VfQVJHUzsgLy8gZG9lcyBub3RoaW5nLCBwcmV2ZW50cyB3YXJuaW5ncyBmb3IgdW51c2VkIGFyZ3MKLSAgICByZXR1cm4gYTsgCi0gIH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsYWNlaG9sZGVyPFNFQ09ORD4gewotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpnZXRfZWxlbWVudF9vcl9udWxsX3R5cGU8MSwgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgQ0FMTF9VU0VfQVJHUzsgcmV0dXJuIGI7IH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsYWNlaG9sZGVyPFRISVJEPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmdldF9lbGVtZW50X29yX251bGxfdHlwZTwyLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyBDQUxMX1VTRV9BUkdTOyByZXR1cm4gYzsgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGxhY2Vob2xkZXI8RVhDRVBUSU9OPiB7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmdldF9lbGVtZW50X29yX251bGxfdHlwZTwzLCBTaWdBcmdzPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgUkVUIGNhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyBDQUxMX1VTRV9BUkdTOyByZXR1cm4gZW52OyB9Ci19OwotICAgCi10eXBlZGVmIGNvbnN0IGxhbWJkYV9mdW5jdG9yPHBsYWNlaG9sZGVyPEZJUlNUPiA+ICBwbGFjZWhvbGRlcjFfdHlwZTsKLXR5cGVkZWYgY29uc3QgbGFtYmRhX2Z1bmN0b3I8cGxhY2Vob2xkZXI8U0VDT05EPiA+IHBsYWNlaG9sZGVyMl90eXBlOwotdHlwZWRlZiBjb25zdCBsYW1iZGFfZnVuY3RvcjxwbGFjZWhvbGRlcjxUSElSRD4gPiAgcGxhY2Vob2xkZXIzX3R5cGU7Ci0gICAKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLS8vIGZyZWUgdmFyaWFibGVzIGFyZSBsYW1iZGFfZnVuY3RvcnMuIFRoaXMgaXMgdG8gYWxsb3cgdW5pZm9ybSBoYW5kbGluZyB3aXRoIAotLy8gb3RoZXIgbGFtYmRhX2Z1bmN0b3JzLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTEyKSAvL2Fzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KLS8vIC0tIGxhbWJkYV9mdW5jdG9yIE5PTkUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGxhbWJkYV9mdW5jdG9yIDogcHVibGljIFQgCi17Ci0KLU5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIGFyaXR5X2JpdHMgPSBnZXRfYXJpdHk8VD46OnZhbHVlKTsKLSAKLXB1YmxpYzoKLSAgdHlwZWRlZiBUIGluaGVyaXRlZDsKLQotICBsYW1iZGFfZnVuY3RvcigpIHt9Ci0gIGxhbWJkYV9mdW5jdG9yKGNvbnN0IGxhbWJkYV9mdW5jdG9yJiBsKSA6IGluaGVyaXRlZChsKSB7fQotCi0gIGxhbWJkYV9mdW5jdG9yKGNvbnN0IFQmIHQpIDogaW5oZXJpdGVkKHQpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSAKLSAgICAgIHNpZzx0eXBlbmFtZSBTaWdBcmdzOjp0YWlsX3R5cGU+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgLy8gTm90ZSB0aGF0IHRoaXMgcmV0dXJuIHR5cGUgZGVkdWN0aW9uIHRlbXBsYXRlIGlzIGluc3RhbnRpYXRlZCwgZXZlbiAKLSAgLy8gaWYgdGhlIG51bGxhcnkgCi0gIC8vIG9wZXJhdG9yKCkgaXMgbm90IGNhbGxlZCBhdCBhbGwuIE9uZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IGl0IGRvZXMgbm90IGZhaWwuCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8bnVsbF90eXBlPjo6dHlwZQotICAgICAgbnVsbGFyeV9yZXR1cm5fdHlwZTsKLQotICAvLyBTdXBwb3J0IGZvciBuZG5ib29zdDo6cmVzdWx0X29mLgotICB0ZW1wbGF0ZSA8Y2xhc3MgU2lnPiBzdHJ1Y3QgcmVzdWx0OwotICB0ZW1wbGF0ZSA8Y2xhc3MgRj4KLSAgc3RydWN0IHJlc3VsdDxGKCk+IHsKLSAgICB0eXBlZGVmIG51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLSAgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEE+Ci0gIHN0cnVjdCByZXN1bHQ8RihBKT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2lnPHR1cGxlPEYsIEE+ID46OnR5cGUgdHlwZTsKLSAgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0cnVjdCByZXN1bHQ8RihBLCBCKT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2lnPHR1cGxlPEYsIEEsIEI+ID46OnR5cGUgdHlwZTsKLSAgfTsKLSAgdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEM+Ci0gIHN0cnVjdCByZXN1bHQ8RihBLCBCLCBDKT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2lnPHR1cGxlPEYsIEEsIEIsIEM+ID46OnR5cGUgdHlwZTsKLSAgfTsKLQotICBudWxsYXJ5X3JldHVybl90eXBlIG9wZXJhdG9yKCkoKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgY2FsbDxudWxsYXJ5X3JldHVybl90eXBlPgotICAgICAgICAoY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKEEmIGEpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEmPiA+Ojp0eXBlCi0gICAgPihhLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMShBLCBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0Jj4gPikKLSAgb3BlcmF0b3IoKShBIGNvbnN0JiBhKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0Jj4gPjo6dHlwZQotICAgID4oYSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShBJiBhLCBCJiBiKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiY+ID46OnR5cGUKLSAgICA+KGEsIGIsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTIoQSwgQiwgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSBjb25zdCYsIEImPiA+KQotICBvcGVyYXRvcigpKEEgY29uc3QmIGEsIEImIGIpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgY2FsbDwKLSAgICAgIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmLCBCJj4gPjo6dHlwZQotICAgID4oYSwgYiwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIE5ETkJPT1NUX0xBTUJEQV9ESVNBQkxFX0lGX0FSUkFZMihBLCBCLCBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiBjb25zdCY+ID4pCi0gIG9wZXJhdG9yKCkoQSYgYSwgQiBjb25zdCYgYikgY29uc3QgeyAKLSAgICByZXR1cm4gaW5oZXJpdGVkOjp0ZW1wbGF0ZSBjYWxsPAotICAgICAgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSYsIEIgY29uc3QmPiA+Ojp0eXBlCi0gICAgPihhLCBiLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7IAotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLSAgTkROQk9PU1RfTEFNQkRBX0RJU0FCTEVfSUZfQVJSQVkyKEEsIEIsIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPEEgY29uc3QmLCBCIGNvbnN0Jj4gPikKLSAgb3BlcmF0b3IoKShBIGNvbnN0JiBhLCBCIGNvbnN0JiBiKSBjb25zdCB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0JiwgQiBjb25zdCY+ID46OnR5cGUKLSAgICA+KGEsIGIsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDPgotICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBJiwgQiYsIEMmPiA+Ojp0eXBlCi0gIG9wZXJhdG9yKCkoQSYgYSwgQiYgYiwgQyYgYykgY29uc3QKLSAgeyAKLSAgICByZXR1cm4gaW5oZXJpdGVkOjp0ZW1wbGF0ZSBjYWxsPAotICAgICAgdHlwZW5hbWUgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSYsIEImLCBDJj4gPjo6dHlwZQotICAgID4oYSwgYiwgYywgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDPgotICBORE5CT09TVF9MQU1CREFfRElTQUJMRV9JRl9BUlJBWTMoQSwgQiwgQywgaW5oZXJpdGVkOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8QSBjb25zdCYsIEIgY29uc3QmLCBDIGNvbnN0Jj4gPikKLSAgb3BlcmF0b3IoKShBIGNvbnN0JiBhLCBCIGNvbnN0JiBiLCBDIGNvbnN0JiBjKSBjb25zdAotICB7IAotICAgIHJldHVybiBpbmhlcml0ZWQ6OnRlbXBsYXRlIGNhbGw8Ci0gICAgICB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIHNpZzx0dXBsZTxBIGNvbnN0JiwgQiBjb25zdCYsIEMgY29uc3QmPiA+Ojp0eXBlCi0gICAgPihhLCBiLCBjLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotCi0gIC8vIGZvciBpbnRlcm5hbCBjYWxscyB3aXRoIGVudgotICB0ZW1wbGF0ZTxDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIHR5cGVuYW1lIGluaGVyaXRlZDo6dGVtcGxhdGUgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlCi0gIGludGVybmFsX2NhbGwoQ0FMTF9GT1JNQUxfQVJHUykgY29uc3QgeyAKLSAgICAgcmV0dXJuIGluaGVyaXRlZDo6dGVtcGxhdGUgCi0gICAgICAgY2FsbDx0eXBlbmFtZSBpbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgICAgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlPihDQUxMX0FDVFVBTF9BUkdTKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICBjb25zdCBsYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICAgICAgICAgICAgb3RoZXJfYWN0aW9uPGFzc2lnbm1lbnRfYWN0aW9uPiwKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPGNvbnN0IEE+Ojp0eXBlPiA+ID4KLSAgb3BlcmF0b3I9KGNvbnN0IEEmIGEpIGNvbnN0IHsKLSAgICByZXR1cm4gbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgICAgICAgICAgIG90aGVyX2FjdGlvbjxhc3NpZ25tZW50X2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHVwbGU8bGFtYmRhX2Z1bmN0b3IsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4gPgotICAgICAoICBuZG5ib29zdDo6dHVwbGU8bGFtYmRhX2Z1bmN0b3IsCi0gICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Y29uc3QgQT46OnR5cGU+KCp0aGlzLCBhKSApOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQT4gCi0gIGNvbnN0IGxhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICAgICAgICAgICAgb3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCAKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4gPiA+IAotICBvcGVyYXRvcltdKGNvbnN0IEEmIGEpIGNvbnN0IHsgCi0gICAgcmV0dXJuIGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICAgICAgICAgICAgb3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCAKLSAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxjb25zdCBBPjo6dHlwZT4gPgotICAgICAoIG5kbmJvb3N0Ojp0dXBsZTxsYW1iZGFfZnVuY3RvciwgCi0gICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Y29uc3QgQT46OnR5cGU+KCp0aGlzLCBhICkgKTsgCi0gIH0gCi19OwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxNDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX0RFQ0xUWVBFKQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlc3VsdF9vZjxuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPigpPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8VD46Om51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVzdWx0X29mPGNvbnN0IG5kbmJvb3N0OjpsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPFQ+KCk+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPjo6bnVsbGFyeV9yZXR1cm5fdHlwZSB0eXBlOwotfTsKLQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZjxuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPigpPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8VD46Om51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZjxjb25zdCBuZG5ib29zdDo6bGFtYmRhOjpsYW1iZGFfZnVuY3RvcjxUPigpPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmxhbWJkYTo6bGFtYmRhX2Z1bmN0b3I8VD46Om51bGxhcnlfcmV0dXJuX3R5cGUgdHlwZTsKLX07Ci0KLX0KLQotLy8gaXNfcGxhY2Vob2xkZXIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2lzX3BsYWNlaG9sZGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPCBsYW1iZGE6OnBsYWNlaG9sZGVyPGxhbWJkYTo6RklSU1Q+ID4gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAxIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpc19wbGFjZWhvbGRlcjwgbGFtYmRhOjpsYW1iZGFfZnVuY3RvcjwgbGFtYmRhOjpwbGFjZWhvbGRlcjxsYW1iZGE6OlNFQ09ORD4gPiA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IDIgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlzX3BsYWNlaG9sZGVyPCBsYW1iZGE6OmxhbWJkYV9mdW5jdG9yPCBsYW1iZGE6OnBsYWNlaG9sZGVyPGxhbWJkYTo6VEhJUkQ+ID4gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSAzIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk4Y2VmNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vLyAgbGFtYmRhX2Z3ZC5ocHAgLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0ZXRF9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsgCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgZ2VuZXJhdGVfZXJyb3I7Ci0KLX0gICAKLS8vIC0tIHBsYWNlaG9sZGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZSA8aW50IEk+IHN0cnVjdCBwbGFjZWhvbGRlcjsKLQotLy8gZnVuY3Rpb25fYWRhcHRvcnMKLXRlbXBsYXRlIDxjbGFzcyBGdW5jPiAKLXN0cnVjdCBmdW5jdGlvbl9hZGFwdG9yOwotCi10ZW1wbGF0ZSA8aW50IEksIGNsYXNzIEFjdD4gY2xhc3MgYWN0aW9uOwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4gCi1jbGFzcyBsYW1iZGFfZnVuY3RvcjsKLQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQXJncz4gCi1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlOwotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotLy8gICNkZWZpbmUgQ0FMTF9URU1QTEFURV9BUkdTIGNsYXNzIEEsIGNsYXNzIEVudgotLy8gICNkZWZpbmUgQ0FMTF9GT1JNQUxfQVJHUyBBJiBhLCBFbnYmIGVudgotLy8gICNkZWZpbmUgQ0FMTF9BQ1RVQUxfQVJHUyBhLCBlbnYKLS8vICAjZGVmaW5lIENBTExfQUNUVUFMX0FSR1NfTk9fRU5WIGEKLS8vICAjZGVmaW5lIENBTExfUkVGRVJFTkNFX1RZUEVTIEEmLCBFbnYmCi0vLyAgI2RlZmluZSBDQUxMX1BMQUlOX1RZUEVTIEEsIEVudgotI2RlZmluZSBDQUxMX1RFTVBMQVRFX0FSR1MgY2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQywgY2xhc3MgRW52Ci0jZGVmaW5lIENBTExfRk9STUFMX0FSR1MgQSYgYSwgQiYgYiwgQyYgYywgRW52JiBlbnYKLSNkZWZpbmUgQ0FMTF9BQ1RVQUxfQVJHUyBhLCBiLCBjLCBlbnYKLSNkZWZpbmUgQ0FMTF9BQ1RVQUxfQVJHU19OT19FTlYgYSwgYiwgYwotI2RlZmluZSBDQUxMX1JFRkVSRU5DRV9UWVBFUyBBJiwgQiYsIEMmLCBFbnYmCi0jZGVmaW5lIENBTExfUExBSU5fVFlQRVMgQSwgQiwgQywgRW52Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbGFtYmRhIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBND4KLXZvaWQgZG9fbm90aGluZyhBMSYsIEEyJiwgQTMmLCBBNCYpIHt9Ci0KLX0gLy8gZGV0YWlsCi19IC8vIGxhbWJkYQotfSAvLyBib29zdAotCi0vLyBwcmV2ZW50IHRoZSB3YXJuaW5ncyBmcm9tIHVudXNlZCBhcmd1bWVudHMKLSNkZWZpbmUgQ0FMTF9VU0VfQVJHUyBcCi06Om5kbmJvb3N0OjpsYW1iZGE6OmRldGFpbDo6ZG9fbm90aGluZyhhLCBiLCBjLCBlbnYpCi0KLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9sYW1iZGFfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIzNmUwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvbGFtYmRhX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NzggKzAsMCBAQAotLy8gLSBsYW1iZGFfdHJhaXRzLmhwcCAtLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9MQU1CREFfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2N2X3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90dXBsZS90dXBsZS5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbGFtYmRhIHsKLQotLy8gLS0gaWYgY29uc3RydWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gUHJvcG9zZWQgYnkgS3J6eXN6dG9mIEN6YXJuZWNraSBhbmQgVWxyaWNoIEVpc2VuZWNrZXIKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDxib29sIElmLCBjbGFzcyBUaGVuLCBjbGFzcyBFbHNlPiBzdHJ1Y3QgSUYgeyB0eXBlZGVmIFRoZW4gUkVUOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVGhlbiwgY2xhc3MgRWxzZT4gc3RydWN0IElGPGZhbHNlLCBUaGVuLCBFbHNlPiB7Ci0gIHR5cGVkZWYgRWxzZSBSRVQ7Ci19OwotCi0KLS8vIEFuIGlmIGNvbnN0cnVjdCB0aGF0IGRvZXNuJ3QgaW5zdGFudGlhdGUgdGhlIG5vbi1tYXRjaGluZyB0ZW1wbGF0ZToKLQotLy8gQ2FsbGVkIGFzOiAKLS8vICBJRl90eXBlPGNvbmRpdGlvbiwgQSwgQj46OnR5cGUgCi0vLyBUaGUgbWF0Y2hpbmcgdGVtcGxhdGUgbXVzdCBkZWZpbmUgdGhlIHR5cGVkZWQgJ3R5cGUnCi0vLyBJLmUuIEE6OnR5cGUgaWYgY29uZGl0aW9uIGlzIHRydWUsIEI6OnR5cGUgaWYgY29uZGl0aW9uIGlzIGZhbHNlCi0vLyBJZGVhIGZyb20gVmVzYSBLYXJ2b25lbiAoZnJvbSBDJkUgYXMgd2VsbCBJIGd1ZXNzKQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBJRl90eXBlXwotewotICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8Ym9vbCBDLCBjbGFzcyBULCBjbGFzcyBFPgotc3RydWN0IElGX3R5cGUKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIElGX3R5cGVfPHR5cGVuYW1lIElGPEMsIFQsIEU+OjpSRVQgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gaGVscGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2l2ZSB0eXBlZGVmIFQgdG8gc29tZSB0eXBlCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlkZW50aXR5X21hcHBpbmcgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotLy8gQW4gaWYgY29uc3RydWN0IGZvciBmaW5kaW5nIGFuIGludGVncmFsIGNvbnN0YW50ICd2YWx1ZScKLS8vIERvZXMgbm90IGluc3RhbnRpYXRlIHRoZSBub24tbWF0Y2hpbmcgYnJhbmNoCi0vLyBDYWxsZWQgYXMgSUZfdmFsdWU8Y29uZGl0aW9uLCBBLCBCPjo6dmFsdWUKLS8vIElmIGNvbmRpdGlvbiBpcyB0cnVlIEE6OnZhbHVlIG11c3QgYmUgZGVmaW5lZCwgb3RoZXJ3aXNlIEI6OnZhbHVlCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgSUZfdmFsdWVfCi17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gVDo6dmFsdWUpOwotfTsKLQotCi10ZW1wbGF0ZTxib29sIEMsIGNsYXNzIFQsIGNsYXNzIEU+Ci1zdHJ1Y3QgSUZfdmFsdWUKLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAoSUZfdmFsdWVfPHR5cGVuYW1lIElGPEMsIFQsIEU+OjpSRVQ+Ojp2YWx1ZSkpOwotfTsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyByZW1vdmVzIHJlZmVyZW5jZSBmcm9tIG90aGVyIHRoYW4gZnVuY3Rpb24gdHlwZXM6Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyByZW1vdmVfcmVmZXJlbmNlX2lmX3ZhbGlkCi17Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSBwbGFpblQ7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgSUY8Ci0gICAgbmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHBsYWluVD46OnZhbHVlLAotICAgIFQsCi0gICAgcGxhaW5UCi0gID46OlJFVCB0eXBlOwotCi19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlX2FuZF9jdiB7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8Ci0gICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlCi0gICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLSAgIAotLy8gcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvZiB0dXBsZSBUCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4gc3RydWN0IHR1cGxlX2VsZW1lbnRfYXNfcmVmZXJlbmNlIHsgICAKLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgICBuZG5ib29zdDo6dHVwbGVzOjphY2Nlc3NfdHJhaXRzPAotICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8TiwgVD46OnR5cGUKLSAgICAgPjo6bm9uX2NvbnN0X3R5cGUgdHlwZTsKLX07Ci0KLS8vIHJldHVybnMgdGhlIGN2IGFuZCByZXZlcmVuY2Ugc3RyaXBwZWQgdHlwZSBvZiBhIHR1cGxlIGVsZW1lbnQKLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPiBzdHJ1Y3QgdHVwbGVfZWxlbWVudF9zdHJpcHBlZCB7ICAgCi0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgcmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Ci0gICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR1cGxlczo6ZWxlbWVudDxOLCBUPjo6dHlwZQotICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBpc19sYW1iZGFfZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfbGFtYmRhX2Z1bmN0b3JfIHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLSAgIAotdGVtcGxhdGUgPGNsYXNzIEFyZz4gc3RydWN0IGlzX2xhbWJkYV9mdW5jdG9yXzxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0gICAKLX0gLy8gZW5kIGRldGFpbAotCi0gICAKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfbGFtYmRhX2Z1bmN0b3IgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgCi0gICAgIHZhbHVlID0gCi0gICAgICAgZGV0YWlsOjppc19sYW1iZGFfZnVuY3Rvcl88Ci0gICAgICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PFQ+Ojp0eXBlCi0gICAgICAgPjo6dmFsdWUpOwotfTsKLSAgIAotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gLS0gcGFyYW1ldGVyX3RyYWl0c18gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIEFuIGludGVybmFsIHBhcmFtZXRlciB0eXBlIHRyYWl0cyBjbGFzcyB0aGF0IHJlc3BlY3RzCi0vLyB0aGUgcmVmZXJlbmNlX3dyYXBwZXIgY2xhc3MuCi0KLS8vIFRoZSBjb252ZXJzaW9ucyBwZXJmb3JtZWQgYXJlOgotLy8gcmVmZXJlbmNlcyAtPiBjb21waWxlX3RpbWVfZXJyb3IKLS8vIFQxIC0+IFQyLCAKLS8vIHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi0vLyBjb25zdCBhcnJheSAtPiByZWYgdG8gY29uc3QgYXJyYXkKLS8vIGFycmF5IC0+IHJlZiB0byBhcnJheQotLy8gZnVuY3Rpb24gLT4gcmVmIHRvIGZ1bmN0aW9uCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IAotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfIHsKLSAgdHlwZWRlZiBUMiB0eXBlOwotfTsKLQotLy8gRG8gbm90IGluc3RhbnRpYXRlIHdpdGggcmVmZXJlbmNlIHR5cGVzCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBbnk+IHN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxUJiwgQW55PiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZ2VuZXJhdGVfZXJyb3I8VCY+OjoKLSAgICAgIHBhcmFtZXRlcl90cmFpdHNfY2xhc3NfaW5zdGFudGlhdGVkX3dpdGhfcmVmZXJlbmNlX3R5cGUgdHlwZTsKLX07Ci0KLS8vIEFycmF5cyBjYW4ndCBiZSBzdG9yZWQgYXMgcGxhaW4gdHlwZXM7IGNvbnZlcnQgdGhlbSB0byByZWZlcmVuY2VzCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbiwgY2xhc3MgQW55PiBzdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188VFtuXSwgQW55PiB7Ci0gIHR5cGVkZWYgVCAoJnR5cGUpW25dOwotfTsKLSAgIAotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4sIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188Y29uc3QgVFtuXSwgQW55PiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4sIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188dm9sYXRpbGUgVFtuXSwgQW55PiB7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgIFQgKCZ0eXBlKVtuXTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbiwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCB2b2xhdGlsZSBUW25dLCBBbnk+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188bmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPFQ+LCBBbnkgPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQW55PiAKLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCBuZG5ib29zdDo6cmVmZXJlbmNlX3dyYXBwZXI8VD4sIEFueSA+ewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBbnk+IAotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPHZvbGF0aWxlIG5kbmJvb3N0OjpyZWZlcmVuY2Vfd3JhcHBlcjxUPiwgQW55ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFueT4gCi1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188Y29uc3Qgdm9sYXRpbGUgbmRuYm9vc3Q6OnJlZmVyZW5jZV93cmFwcGVyPFQ+LCBBbnkgPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQW55Pgotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPHZvaWQsIEFueT4gewotICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZywgY2xhc3MgQW55Pgotc3RydWN0IHBhcmFtZXRlcl90cmFpdHNfPGxhbWJkYV9mdW5jdG9yPEFyZz4sIEFueSA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIEFueT4KLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzxjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+LCBBbnkgPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotLy8gQXJlIHRoZSB2b2xhdGlsZSB2ZXJzaW9ucyBuZWVkZWQ/Ci10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIEFueT4KLXN0cnVjdCBwYXJhbWV0ZXJfdHJhaXRzXzx2b2xhdGlsZSBsYW1iZGFfZnVuY3RvcjxBcmc+LCBBbnkgPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnLCBjbGFzcyBBbnk+Ci1zdHJ1Y3QgcGFyYW1ldGVyX3RyYWl0c188Y29uc3Qgdm9sYXRpbGUgbGFtYmRhX2Z1bmN0b3I8QXJnPiwgQW55ID4gewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPEFyZz4gdHlwZTsKLX07Ci0KLX0gLy8gZW5kIG5hbWVzcGFjZSBkZXRhaWwKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHRyYWl0cyBjbGFzc2VzIGZvciBsYW1iZGEgZXhwcmVzc2lvbnMgKGJpbmQgZnVuY3Rpb25zLCBvcGVyYXRvcnMgLi4uKSAgIAotCi0vLyBtdXN0IGJlIGluc3RhbnRpYXRlZCB3aXRoIG5vbi1yZWZlcmVuY2UgdHlwZXMKLQotLy8gVGhlIGRlZmF1bHQgaXMgY29uc3QgcGxhaW4gdHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBjb25zdCBUIC0+IGNvbnN0IFQsIAotLy8gVCAtPiBjb25zdCBULCAKLS8vIHJlZmVyZW5jZXMgLT4gY29tcGlsZV90aW1lX2Vycm9yCi0vLyByZWZlcmVuY2Vfd3JhcHBlcjxUPiAtPiBUJgotLy8gYXJyYXkgLT4gY29uc3QgcmVmIGFycmF5Ci10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGNvbnN0X2NvcHlfYXJndW1lbnQgewotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6cGFyYW1ldGVyX3RyYWl0c188Ci0gICAgICBULAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpJRjxuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlLCBUJiwgY29uc3QgVD46OlJFVAotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIFQgbWF5IGJlIGEgZnVuY3Rpb24gdHlwZS4gV2l0aG91dCB0aGUgSUYgdGVzdCwgY29uc3Qgd291bGQgYmUgYWRkZWQgCi0vLyB0byBhIGZ1bmN0aW9uIHR5cGUsIHdoaWNoIGlzIGlsbGVnYWwuCi0KLS8vIGFsbCBhcnJheXMgYXJlIGNvbnZlcnRlZCB0byBjb25zdC4KLS8vIFRoaXMgdHJhaXRzIHRlbXBsYXRlIGlzIHVzZWQgZm9yICdjb25zdCBUJicgcGFyYW1ldGVyIHBhc3NpbmcgCi0vLyBhbmQgdGh1cyB0aGUga25vd2xlZGdlIG9mIHRoZSBwb3RlbnRpYWwgCi0vLyBub24tY29uc3RuZXNzIG9mIGFuIGFjdHVhbCBhcmd1bWVudCBpcyBsb3N0LiAgIAotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+ICBzdHJ1Y3QgY29uc3RfY29weV9hcmd1bWVudCA8VFtuXT4gewotICB0eXBlZGVmIGNvbnN0IFQgKCZ0eXBlKVtuXTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gIHN0cnVjdCBjb25zdF9jb3B5X2FyZ3VtZW50IDx2b2xhdGlsZSBUW25dPiB7Ci0gICAgIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVCAoJnR5cGUpW25dOwotfTsKLSAgIAotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBjb25zdF9jb3B5X2FyZ3VtZW50PFQmPiB7fTsKLS8vIGRvIG5vdCBpbnN0YW50aWF0ZSB3aXRoIHJlZmVyZW5jZXMKLSAgLy8gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpnZW5lcmF0ZV9lcnJvcjxUJj46OnJlZmVyZW5jZXNfbm90X2FsbG93ZWQgdHlwZTsKLQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY29uc3RfY29weV9hcmd1bWVudDx2b2lkPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotCi0vLyBEb2VzIHRoZSBzYW1lIGFzIGNvbnN0X2NvcHlfYXJndW1lbnQsIGJ1dCBwYXNzZXMgcmVmZXJlbmNlcyB0aHJvdWdoIGFzIHN1Y2gKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudDxUPjo6dHlwZSB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgYm91bmRfYXJndW1lbnRfY29udmVyc2lvbjxUJj4gewotICB0eXBlZGVmIFQmIHR5cGU7IAotfTsKLSAgIAotLy8gVGhlIGRlZmF1bHQgaXMgbm9uLWNvbnN0IHJlZmVyZW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBjb25zdCBUIC0+IGNvbnN0IFQmLCAKLS8vIFQgLT4gVCYsIAotLy8gcmVmZXJlbmNlcyAtPiBjb21waWxlX3RpbWVfZXJyb3IKLS8vIHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwYXJhbWV0ZXJfdHJhaXRzXzxULCBUJj46OnR5cGUgdHlwZTsgCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDxUJj4gewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6Z2VuZXJhdGVfZXJyb3I8VCY+OjpyZWZlcmVuY2VzX25vdF9hbGxvd2VkIHR5cGU7IAotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnPgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gewotICB0eXBlZGVmIGxhbWJkYV9mdW5jdG9yPEFyZz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEFyZz4KLXN0cnVjdCByZWZlcmVuY2VfYXJndW1lbnQ8Y29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi0vLyBBcmUgdGhlIHZvbGF0aWxlIHZlcnNpb25zIG5lZWRlZD8KLXRlbXBsYXRlPGNsYXNzIEFyZz4KLXN0cnVjdCByZWZlcmVuY2VfYXJndW1lbnQ8dm9sYXRpbGUgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+IHsKLSAgdHlwZWRlZiBsYW1iZGFfZnVuY3RvcjxBcmc+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmc+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FyZ3VtZW50PGNvbnN0IHZvbGF0aWxlIGxhbWJkYV9mdW5jdG9yPEFyZz4gPiB7Ci0gIHR5cGVkZWYgbGFtYmRhX2Z1bmN0b3I8QXJnPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlZmVyZW5jZV9hcmd1bWVudDx2b2lkPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAKLS8vIEFycmF5IHRvIHBvaW50ZXIgY29udmVyc2lvbgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgYXJyYXlfdG9fcG9pbnRlciB7IAotICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBpbnQgTj4KLXN0cnVjdCBhcnJheV90b19wb2ludGVyIDxjb25zdCBUW05dPiB7IAotICB0eXBlZGVmIGNvbnN0IFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIGludCBOPgotc3RydWN0IGFycmF5X3RvX3BvaW50ZXIgPFRbTl0+IHsgCi0gIHR5cGVkZWYgVCogdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBpbnQgTj4KLXN0cnVjdCBhcnJheV90b19wb2ludGVyIDxjb25zdCBUICgmKSBbTl0+IHsgCi0gIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgaW50IE4+Ci1zdHJ1Y3QgYXJyYXlfdG9fcG9pbnRlciA8VCAoJikgW05dPiB7IAotICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVGhlIGNhbGxfdHJhaXRzIGZvciBiaW5kCi0vLyBSZXNwZWN0cyB0aGUgcmVmZXJlbmNlX3dyYXBwZXIgY2xhc3MuCi0KLS8vIFRoZXNlIHRlbXBsYXRlcyBhcmUgdXNlZCBvdXRzaWRlIG9mIGJpbmQgZnVuY3Rpb25zIGFzIHdlbGwuCi0vLyB0aGUgYmluZF90dXBsZV9tYXBwZXIgcHJvdmlkZXMgYSBzaG9ydGVyIG5vdGF0aW9uIGZvciBkZWZhdWx0Ci0vLyBib3VuZCBhcmd1bWVudCBzdG9yaW5nIHNlbWFudGljcywgaWYgYWxsIGFyZ3VtZW50cyBhcmUgdHJlYXRlZAotLy8gdW5pZm9ybWx5LgotCi0vLyBmcm9tIHRlbXBsYXRlPGNsYXNzIFQ+IGZvbyhjb25zdCBUJiB0KSA6IGJpbmRfdHJhaXRzPGNvbnN0IFQ+Ojp0eXBlCi0vLyBmcm9tIHRlbXBsYXRlPGNsYXNzIFQ+IGZvbyhUJiB0KSA6IGJpbmRfdHJhaXRzPFQ+Ojp0eXBlCi0KLS8vIENvbnZlcnNpb25zOgotLy8gVCAtPiBjb25zdCBULAotLy8gY3YgVCAtPiBjdiBULCAKLS8vIFQmIC0+IFQmIAotLy8gcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLS8vIGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+IC0+IFQmCi0vLyBhcnJheSAtPiBjb25zdCByZWYgYXJyYXkKLQotLy8gbWFrZSBib3VuZCBhcmd1bWVudHMgY29uc3QsIHRoaXMgaXMgYSBkZWxpYmVyYXRlIGRlc2lnbiBjaG9pY2UsIHRoZQotLy8gcHVycG9zZSBpcyB0byBwcmV2ZW50IHNpZGUgZWZmZWN0cyB0byBib3VuZCBhcmd1bWVudHMgdGhhdCBhcmUgc3RvcmVkCi0vLyBhcyBjb3BpZXMKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgYmluZF90cmFpdHMgewotICB0eXBlZGVmIGNvbnN0IFQgdHlwZTsgCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGJpbmRfdHJhaXRzPFQmPiB7Ci0gIHR5cGVkZWYgVCYgdHlwZTsgCi19OwotCi0vLyBudWxsX3R5cGVzIGFyZSBhbiBleGNlcHRpb24sIHdlIGFsd2F5cyB3YW50IHRvIHN0b3JlIHRoZW0gYXMgbm9uIGNvbnN0Ci0vLyBzbyB0aGF0IG90aGVyIHRlbXBsYXRlcyBjYW4gYXNzdW1lIHRoYXQgbnVsbF90eXBlIGlzIGFsd2F5cyB3aXRob3V0IGNvbnN0Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8bnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotCi0vLyB0aGUgYmluZF90dXBsZV9tYXBwZXIsIGJpbmRfdHlwZV9nZW5lcmF0b3JzIG1heSAKLS8vIGludHJvZHVjZSBjb25zdCB0byBudWxsX3R5cGUKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX3RyYWl0czxjb25zdCBudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0KLS8vIEFycmF5cyBjYW4ndCBiZSBzdG9yZWQgYXMgcGxhaW4gdHlwZXM7IGNvbnZlcnQgdGhlbSB0byByZWZlcmVuY2VzLgotLy8gQWxsIGFycmF5cyBhcmUgY29udmVydGVkIHRvIGNvbnN0LiBUaGlzIGlzIGJlY2F1c2UgYmluZCB0YWtlcyBpdHMKLS8vIHBhcmFtZXRlcnMgYXMgY29uc3QgVCYgYW5kIHRodXMgdGhlIGtub3dsZWRnZSBvZiB0aGUgcG90ZW50aWFsIAotLy8gbm9uLWNvbnN0bmVzcyBvZiBhY3R1YWwgYXJndW1lbnQgaXMgbG9zdC4KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPiAgc3RydWN0IGJpbmRfdHJhaXRzIDxUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+IAotc3RydWN0IGJpbmRfdHJhaXRzPGNvbnN0IFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4gIHN0cnVjdCBiaW5kX3RyYWl0czx2b2xhdGlsZSBUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+IAotc3RydWN0IGJpbmRfdHJhaXRzPGNvbnN0IHZvbGF0aWxlIFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSPgotc3RydWN0IGJpbmRfdHJhaXRzPFIoKT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzE+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxKT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMik+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMz4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQ+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxLCBBcmcyLCBBcmczLCBBcmc0KT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1Pgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSk+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNj4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2KTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFIsIGNsYXNzIEFyZzEsIGNsYXNzIEFyZzIsIGNsYXNzIEFyZzMsIGNsYXNzIEFyZzQsIGNsYXNzIEFyZzUsIGNsYXNzIEFyZzYsIGNsYXNzIEFyZzc+Ci1zdHJ1Y3QgYmluZF90cmFpdHM8UihBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3KT4gewotICAgIHR5cGVkZWYgUigmdHlwZSkoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNyk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBSLCBjbGFzcyBBcmcxLCBjbGFzcyBBcmcyLCBjbGFzcyBBcmczLCBjbGFzcyBBcmc0LCBjbGFzcyBBcmc1LCBjbGFzcyBBcmc2LCBjbGFzcyBBcmc3LCBjbGFzcyBBcmc4Pgotc3RydWN0IGJpbmRfdHJhaXRzPFIoQXJnMSwgQXJnMiwgQXJnMywgQXJnNCwgQXJnNSwgQXJnNiwgQXJnNywgQXJnOCk+IHsKLSAgICB0eXBlZGVmIFIoJnR5cGUpKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUiwgY2xhc3MgQXJnMSwgY2xhc3MgQXJnMiwgY2xhc3MgQXJnMywgY2xhc3MgQXJnNCwgY2xhc3MgQXJnNSwgY2xhc3MgQXJnNiwgY2xhc3MgQXJnNywgY2xhc3MgQXJnOCwgY2xhc3MgQXJnOT4KLXN0cnVjdCBiaW5kX3RyYWl0czxSKEFyZzEsIEFyZzIsIEFyZzMsIEFyZzQsIEFyZzUsIEFyZzYsIEFyZzcsIEFyZzgsIEFyZzkpPiB7Ci0gICAgdHlwZWRlZiBSKCZ0eXBlKShBcmcxLCBBcmcyLCBBcmczLCBBcmc0LCBBcmc1LCBBcmc2LCBBcmc3LCBBcmc4LCBBcmc5KTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IAotc3RydWN0IGJpbmRfdHJhaXRzPHJlZmVyZW5jZV93cmFwcGVyPFQ+ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IAotc3RydWN0IGJpbmRfdHJhaXRzPGNvbnN0IHJlZmVyZW5jZV93cmFwcGVyPFQ+ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX3RyYWl0czx2b2lkPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotCi0KLXRlbXBsYXRlIDwKLSAgY2xhc3MgVDAgPSBudWxsX3R5cGUsIGNsYXNzIFQxID0gbnVsbF90eXBlLCBjbGFzcyBUMiA9IG51bGxfdHlwZSwgCi0gIGNsYXNzIFQzID0gbnVsbF90eXBlLCBjbGFzcyBUNCA9IG51bGxfdHlwZSwgY2xhc3MgVDUgPSBudWxsX3R5cGUsIAotICBjbGFzcyBUNiA9IG51bGxfdHlwZSwgY2xhc3MgVDcgPSBudWxsX3R5cGUsIGNsYXNzIFQ4ID0gbnVsbF90eXBlLCAKLSAgY2xhc3MgVDkgPSBudWxsX3R5cGUKLT4KLXN0cnVjdCBiaW5kX3R1cGxlX21hcHBlciB7Ci0gIHR5cGVkZWYKLSAgICB0dXBsZTx0eXBlbmFtZSBiaW5kX3RyYWl0czxUMD46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQxPjo6dHlwZSwgCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDI+Ojp0eXBlLCAKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUMz46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQ0Pjo6dHlwZSwgCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDU+Ojp0eXBlLCAKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUNj46OnR5cGUsIAotICAgICAgICAgIHR5cGVuYW1lIGJpbmRfdHJhaXRzPFQ3Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBiaW5kX3RyYWl0czxUOD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgYmluZF90cmFpdHM8VDk+Ojp0eXBlPiB0eXBlOwotfTsKLQotLy8gYmluZF90cmFpdHMsIGV4Y2VwdCBtYXAgY29uc3QgVCYgLT4gY29uc3QgVAotICAvLyB0aGlzIGlzIG5lZWRlZCBlLmcuIGluIGN1cnJ5aW5nLiBDb25zdCByZWZlcmVuY2UgYXJndW1lbnRzIGNhbgotICAvLyByZWZlciB0byB0ZW1wb3Jhcmllcywgc28gaXQgaXMgbm90IHNhZmUgdG8gc3RvcmUgdGhlbSBhcyByZWZlcmVuY2VzLgotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHJlbW92ZV9jb25zdF9yZWZlcmVuY2UgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZF90cmFpdHM8VD46OnR5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHJlbW92ZV9jb25zdF9yZWZlcmVuY2U8Y29uc3QgVCY+IHsKLSAgICB0eXBlZGVmIGNvbnN0IFQgdHlwZTsKLSAgfTsKLQotCi0vLyBtYXBzIHRoZSBiaW5kIGFyZ3VtZW50IHR5cGVzIHRvIHRoZSByZXN1bHRpbmcgbGFtYmRhIGZ1bmN0b3IgdHlwZQotdGVtcGxhdGUgPAotICBjbGFzcyBUMCA9IG51bGxfdHlwZSwgY2xhc3MgVDEgPSBudWxsX3R5cGUsIGNsYXNzIFQyID0gbnVsbF90eXBlLCAKLSAgY2xhc3MgVDMgPSBudWxsX3R5cGUsIGNsYXNzIFQ0ID0gbnVsbF90eXBlLCBjbGFzcyBUNSA9IG51bGxfdHlwZSwgCi0gIGNsYXNzIFQ2ID0gbnVsbF90eXBlLCBjbGFzcyBUNyA9IG51bGxfdHlwZSwgY2xhc3MgVDggPSBudWxsX3R5cGUsIAotICBjbGFzcyBUOSA9IG51bGxfdHlwZQotPgotY2xhc3MgYmluZF90eXBlX2dlbmVyYXRvciB7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZQotICBkZXRhaWw6OmJpbmRfdHVwbGVfbWFwcGVyPAotICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gID46OnR5cGUgYXJnc190OwotCi0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG5vZl9lbGVtcyA9IG5kbmJvb3N0Ojp0dXBsZXM6Omxlbmd0aDxhcmdzX3Q+Ojp2YWx1ZSk7Ci0KLSAgdHlwZWRlZiAKLSAgICBhY3Rpb248Ci0gICAgICBub2ZfZWxlbXMsIAotICAgICAgZnVuY3Rpb25fYWN0aW9uPG5vZl9lbGVtcz4KLSAgICA+IGFjdGlvbl90eXBlOwotCi1wdWJsaWM6Ci0gIHR5cGVkZWYKLSAgICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGFjdGlvbl90eXBlLCAKLSAgICAgICAgYXJnc190Ci0gICAgICA+Ci0gICAgPiB0eXBlOyAKLSAgICAKLX07Ci0KLQotICAgCi19IC8vIGRldGFpbAotICAgCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGNvbnN0IFQmICBtYWtlX2NvbnN0KGNvbnN0IFQmIHQpIHsgcmV0dXJuIHQ7IH0KLQotCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0gICAKLSNlbmRpZiAvLyBORE5CT09TVF9MQU1CREFfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL21lbWJlcl9wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL21lbWJlcl9wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmFiYjc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9tZW1iZXJfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczNyArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtLSBtZW1iZXJfcHRyLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vIENvcHlyaWdodCAoQykgMjAwMCBHYXJ5IFBvd2VsbCAoZ2FyeS5wb3dlbGxAc2llcnJhLmNvbSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9MQU1CREFfTUVNQkVSX1BUUl9IUFApCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9NRU1CRVJfUFRSX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0KLWNsYXNzIG1lbWJlcl9wb2ludGVyX2FjdGlvbiB7fTsKLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gdGhlIGJvb3N0IHR5cGVfdHJhaXRzIG1lbWJlcl9wb2ludGVyIHRyYWl0cyBhcmUgbm90IGVub3VnaCwgCi0vLyBuZWVkIHRvIGtub3cgbW9yZSBkZXRhaWxzLgotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlciB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUgdHlwZTsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIFU6Oio+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxUPjo6dHlwZSB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSB0cnVlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8Y29uc3QgVCBVOjoqPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8Y29uc3QgVD46OnR5cGUgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gdHJ1ZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IG1lbWJlcl9wb2ludGVyPHZvbGF0aWxlIFQgVTo6Kj4gewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPHZvbGF0aWxlIFQ+Ojp0eXBlIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IHRydWUpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxjb25zdCB2b2xhdGlsZSBUIFU6Oio+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTxjb25zdCB2b2xhdGlsZSBUPjo6dHlwZSB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSB0cnVlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IGZhbHNlKTsKLX07Ci0KLS8vIC0tIG5vbmNvbnN0IG1lbWJlciBmdW5jdGlvbnMgLS0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1KT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTY+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLS8vIC0tIGNvbnN0IG1lbWJlciBmdW5jdGlvbnMgLS0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpIGNvbnN0PiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1KSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTY+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSBjb25zdD4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3QgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSkgY29uc3Q+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIGNvbnN0IFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLSAgLy8gLS0gdm9sYXRpbGUgLS0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1KSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTY+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNikgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNykgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwKLSAgICAgICAgIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTk+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSkgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBUIHR5cGU7Ci0gIHR5cGVkZWYgVSBjbGFzc190eXBlOwotICB0eXBlZGVmIHZvbGF0aWxlIFUgcXVhbGlmaWVkX2NsYXNzX3R5cGU7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19kYXRhX21lbWJlciA9IGZhbHNlKTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2Z1bmN0aW9uX21lbWJlciA9IHRydWUpOwotfTsKLSAgLy8gLS0gY29uc3Qgdm9sYXRpbGUKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoKSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTE+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTI+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyKSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzKSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXI8VCAoVTo6KikoQTEsIEEyLCBBMywgQTQpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3Pgotc3RydWN0IG1lbWJlcl9wb2ludGVyPFQgKFU6OiopKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LAotICAgICAgICAgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpIGNvbnN0IHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotICB0eXBlZGVmIFUgY2xhc3NfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBVIHF1YWxpZmllZF9jbGFzc190eXBlOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZGF0YV9tZW1iZXIgPSBmYWxzZSk7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19mdW5jdGlvbl9tZW1iZXIgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsCi0gICAgICAgICBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcjxUIChVOjoqKShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KSBjb25zdCB2b2xhdGlsZT4gewotICB0eXBlZGVmIFQgdHlwZTsKLSAgdHlwZWRlZiBVIGNsYXNzX3R5cGU7Ci0gIHR5cGVkZWYgY29uc3Qgdm9sYXRpbGUgVSBxdWFsaWZpZWRfY2xhc3NfdHlwZTsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2RhdGFfbWVtYmVyID0gZmFsc2UpOwotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfZnVuY3Rpb25fbWVtYmVyID0gdHJ1ZSk7Ci19OwotCi19IC8vIGRldGFpbAotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAvLyB0aGlzIGNsYXNzIGhvbGRzIGEgcG9pbnRlciB0byBhIG1lbWJlciBmdW5jdGlvbiBhbmQgdGhlIG9iamVjdC4KLSAgLy8gd2hlbiBjYWxsZWQsIGl0IGp1c3QgY2FsbHMgdGhlIG1lbWJlciBmdW5jdGlvbiB3aXRoIHRoZSBwYXJhbWV0ZXJzIAotICAvLyBwcm92aWRlZAotCi0gIC8vIEl0IHdvdWxkIGhhdmUgYmVlbiBwb3NzaWJsZSB0byB1c2UgZXhpc3RpbmcgbGFtYmRhX2Z1bmN0b3JzIHRvIHJlcHJlc2VudAotICAvLyBhIGJvdW5kIG1lbWJlciBmdW5jdGlvbiBsaWtlIHRoaXMsIGJ1dCB0byBoYXZlIGEgc2VwYXJhdGUgdGVtcGxhdGUgaXMgCi0gIC8vIHNhZmVyLCBzaW5jZSBub3cgdGhpcyBmdW5jdG9yIGRvZXNuJ3QgbWl4IGFuZCBtYXRjaCB3aXRoIGxhbWJkYV9mdW5jdG9ycwotICAvLyBvbmx5IHRoaW5nIHlvdSBjYW4gZG8gd2l0aCB0aGlzIGlzIHRvIGNhbGwgaXQKLQotICAvLyBub3RlIHRoYXQgcHJldmlvdXNseSBpbnN0YW50aWF0ZWQgY2xhc3NlcyAKLSAgLy8gKG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+IGFuZCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyCi0gIC8vIGd1YXJhbnRlZSwgdGhhdCBBIGFuZCBCIGFyZSAKLSAgLy8gc3VjaCB0eXBlcywgdGhhdCBmb3Igb2JqZWN0cyBhIGFuZCBiIG9mIGNvcnJlc3BvbmRpbmcgdHlwZXMsIGEtPipiIGxlYWRzIAotICAvLyB0byB0aGUgYnVpbHRpbiAtPiogdG8gYmUgY2FsbGVkLiBTbyB0eXBlcyB0aGF0IHdvdWxkIGVuZCBpbiBhICBjYWxsIHRvIAotICAvLyBhIHVzZXIgZGVmaW5lZCAtPiogZG8gbm90IGNyZWF0ZSBhIG1lbWJlcl9wb2ludGVyX2NhbGxlciBvYmplY3QuCi0KLXRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQSwgY2xhc3MgQj4KLWNsYXNzIG1lbWJlcl9wb2ludGVyX2NhbGxlciB7Ci0gIEEgYTsgQiBiOwotCi1wdWJsaWM6Ci0gIG1lbWJlcl9wb2ludGVyX2NhbGxlcihjb25zdCBBJiBhYSwgY29uc3QgQiYgYmIpIDogYShhYSksIGIoYmIpIHt9Ci0KLSAgUkVUIG9wZXJhdG9yKCkoKSBjb25zdCB7IHJldHVybiAoYS0+KmIpKCk7IH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTE+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSkgY29uc3QgeyByZXR1cm4gKGEtPipiKShhMSk7IH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyPgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMikgY29uc3QgeyByZXR1cm4gKGEtPipiKShhMSwgYTIpOyB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTM+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMyk7IAotICB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0PgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTQmIGE0KSBjb25zdCB7IAotICAgIHJldHVybiAoYS0+KmIpKGExLCBhMiwgYTMsIGE0KTsgCi0gIH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1PgotICBSRVQgb3BlcmF0b3IoKShjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsIAotICAgICAgICAgICAgICAgICBjb25zdCBBNSYgYTUpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMywgYTQsIGE1KTsgCi0gIH0gCi0KLSAgdGVtcGxhdGU8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMywgYTQsIGE1LCBhNik7IAotICB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNz4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNykgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7IAotICB9IAotCi0gIHRlbXBsYXRlPGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIAotICAgICAgICAgICBjbGFzcyBBNywgY2xhc3MgQTg+Ci0gIFJFVCBvcGVyYXRvcigpKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsCi0gICAgICAgICAgICAgICAgIGNvbnN0IEE4JiBhOCkgY29uc3QgeyAKLSAgICByZXR1cm4gKGEtPipiKShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOyAKLSAgfSAKLQotICB0ZW1wbGF0ZTxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCAKLSAgICAgICAgICAgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLSAgUkVUIG9wZXJhdG9yKCkoY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNywKLSAgICAgICAgICAgICAgICAgY29uc3QgQTgmIGE4LCBjb25zdCBBOSYgYTkpIGNvbnN0IHsgCi0gICAgcmV0dXJuIChhLT4qYikoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7IAotICB9IAotCi19OwotCi0vLyBoZWxwZXIgdGVtcGxhdGVzIGZvciByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gYW5kIGFjdGlvbiBjbGFzc2VzCi0vLyBkaWZmZXJlbnQgY2FzZXMgZm9yIGRhdGEgbWVtYmVyLCBmdW5jdGlvbiBtZW1iZXIsIG5laXRoZXIKLQotLy8gdHJ1ZS10cnVlIGNhc2UKLXRlbXBsYXRlIDxib29sIElzX2RhdGFfbWVtYmVyLCBib29sIElzX2Z1bmN0aW9uX21lbWJlcj4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyOwotICAvLyBjYW5ub3QgYmUgYm90aCwgbm8gYm9keSBwcm92aWRlZAotCi0gIC8vIGRhdGEgbWVtYmVyIGNhc2UKLSAgLy8gdGhpcyBtZWFucywgdGhhdCBCIGlzIGEgZGF0YSBtZW1iZXIgYW5kIEEgaXMgYSBwb2ludGVyIHR5cGUsCi0gIC8vIHNvIGVpdGhlciBidWlsdC1pbiAtPiogc2hvdWxkIGJlIGNhbGxlZCwgb3IgdGhlcmUgaXMgYW4gZXJyb3IKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgbWVtYmVyX3BvaW50ZXJfYWN0aW9uX2hlbHBlcjx0cnVlLCBmYWxzZT4gewotcHVibGljOgotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQSwgY2xhc3MgQj4KLSAgc3RhdGljIFJFVCBhcHBseShBJiBhLCBCJiBiKSB7IAotICAgIHJldHVybiBhLT4qYjsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBzdHJ1Y3QgcmV0dXJuX3R5cGUgewotICBwcml2YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbkI7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6dHlwZSB0eXBlMDsKLSAgICAvLyB3ZSByZW1vdmUgdGhlIHJlZmVyZW5jZSBub3csIGFzIHdlIG1heSBoYXZlIHRvIGFkZCBjdjpzIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8dHlwZTA+Ojp0eXBlIHR5cGUxOwotCi0gICAgLy8gQSBpcyBhIHJlZmVyZW5jZSB0byBwb2ludGVyCi0gICAgLy8gcmVtb3ZlIHRoZSB0b3AgbGV2ZWwgY3YgcXVhbGlmaWVycyBhbmQgcmVmZXJlbmNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgbm9uX3JlZl9BOwotCi0gICAgLy8gQSBpcyBhIHBvaW50ZXIgdHlwZSwgc28gdGFrZSB0aGUgdHlwZSBwb2ludGVkIHRvCi0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxub25fcmVmX0E+Ojp0eXBlIG5vbl9wb2ludGVyX0E7IAotCi0gIHB1YmxpYzoKLSAgICAvLyBGb3Igbm9uLXJlZmVyZW5jZSB0eXBlcywgd2UgbXVzdCBhZGQgY29uc3QgYW5kL29yIHZvbGF0aWxlIGlmCi0gICAgLy8gdGhlIHBvaW50ZXIgdHlwZSBoYXMgdGhlc2UgcXVhbGlmaWVycwotICAgIC8vIElmIHRoZSBtZW1iZXIgaXMgYSByZWZlcmVuY2UsIHRoZXNlIGRvIG5vdCBoYXZlIGFueSBlZmZlY3QKLSAgICAvLyAgIChjdiBUID09IFQgaWYgVCBpcyBhIHJlZmVyZW5jZSB0eXBlKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PG5vbl9wb2ludGVyX0E+Ojp2YWx1ZSwgCi0gICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0OjphZGRfY29uc3Q8dHlwZTE+Ojp0eXBlLAotICAgICAgdHlwZTEKLSAgICA+OjpSRVQgdHlwZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8bm9uX3BvaW50ZXJfQT46OnZhbHVlLCAKLSAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmFkZF92b2xhdGlsZTx0eXBlMj46OnR5cGUsCi0gICAgICB0eXBlMgotICAgID46OlJFVCB0eXBlMzsKLSAgICAvLyBhZGQgcmVmZXJlbmNlIGJhY2sKLSAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8dHlwZTM+Ojp0eXBlIHR5cGU7Ci0gIH07Ci19OwotCi0gIC8vIG5laXRoZXIgY2FzZQotdGVtcGxhdGUgPD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPGZhbHNlLCBmYWxzZT4gewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQSYgYSwgQiYgYikgeyAKLS8vIG5vdCBhIGJ1aWx0IGluIG1lbWJlciBwb2ludGVyIG9wZXJhdG9yLCBqdXN0IGNhbGwgLT4qCi0gICAgcmV0dXJuIGEtPipiOyAKLSAgfQotICAvLyBhbiBvdmVybG9hZGVkIG1lbWJlciBwb2ludGVyIG9wZXJhdG9ycywgdXNlciBzaG91bGQgaGF2ZSBzcGVjaWZpZWQKLSAgLy8gdGhlIHJldHVybiB0eXBlCi0gIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNwZWNpYWxpemF0aW9uIGZvcgotICAvLyByZXR1cm5fdHlwZV8yLCBzbyB0cnkgcmV0dXJuX3R5cGVfMl9wbGFpbgotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBzdHJ1Y3QgcmV0dXJuX3R5cGUgewotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4sIEEsIEIKLSAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci0gIAotfTsKLQotCi0vLyBtZW1iZXIgcG9pbnRlciBmdW5jdGlvbiBjYXNlCi0vLyBUaGlzIGlzIGEgYnVpbHQgaW4gLT4qIGNhbGwgZm9yIGEgbWVtYmVyIGZ1bmN0aW9uLCAKLS8vIHRoZSBvbmx5IHRoaW5nIHRoYXQgeW91IGNhbiBkbyB3aXRoIHRoYXQsIGlzIHRvIGdpdmUgaXQgc29tZSBhcmd1bWVudHMKLS8vIG5vdGUsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBBIGlzIGEgcG9pbnRlciB0eXBlLCBhbmQgdGh1cyBpdCBjYW5ub3QKLS8vIGJlIGEgY2FsbCB0byBvdmVybG9hZGVkIC0+KgotdGVtcGxhdGUgPD4KLXN0cnVjdCBtZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPGZhbHNlLCB0cnVlPiB7Ci0gIHB1YmxpYzoKLQotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQSYgYSwgQiYgYikgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxCPjo6dHlwZSBwbGFpbkI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1lbWJlcl9wb2ludGVyPHBsYWluQj46OnR5cGUgcmV0X3Q7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PEE+Ojp0eXBlIHBsYWluQTsKLQotICAgIC8vIHdlIGFsd2F5cyBzdHJpcCBjdjpzIHRvIAotICAgIC8vIG1ha2UgdGhlIHR3byByb3V0ZXMgKGNhbGxpbmcgYW5kIHR5cGUgZGVkdWN0aW9uKQotICAgIC8vIHRvIGdpdmUgdGhlIHNhbWUgcmVzdWx0cyAoYW5kIHRoZSBjb25zdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsCi0gICAgLy8gZGlmZmVyZW5jZSkKLSAgICByZXR1cm4gZGV0YWlsOjptZW1iZXJfcG9pbnRlcl9jYWxsZXI8cmV0X3QsIHBsYWluQSwgcGxhaW5CPihhLCBiKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICBzdHJ1Y3QgcmV0dXJuX3R5cGUgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbkI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1lbWJlcl9wb2ludGVyPHBsYWluQj46OnR5cGUgcmV0X3Q7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbkE7IAotCi0gICAgdHlwZWRlZiBkZXRhaWw6Om1lbWJlcl9wb2ludGVyX2NhbGxlcjxyZXRfdCwgcGxhaW5BLCBwbGFpbkI+IHR5cGU7IAotICB9OwotfTsKLQotfSAvLyBkZXRhaWwKLQotdGVtcGxhdGU8PiBjbGFzcyBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiAgewotcHVibGljOgotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHN0YXRpYyBSRVQgYXBwbHkoQSYgYSwgQiYgYikgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8Qj46OnR5cGUgcGxhaW5COwotCi0gICAgcmV0dXJuIGRldGFpbDo6bWVtYmVyX3BvaW50ZXJfYWN0aW9uX2hlbHBlcjwKLSAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8QT46OnZhbHVlICYmIAotICAgICAgICAgIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6aXNfZGF0YV9tZW1iZXIsCi0gICAgICAgIG5kbmJvb3N0Ojppc19wb2ludGVyPEE+Ojp2YWx1ZSAmJiAKLSAgICAgICAgICBkZXRhaWw6Om1lbWJlcl9wb2ludGVyPHBsYWluQj46OmlzX2Z1bmN0aW9uX21lbWJlcgotICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8UkVUPihhLCBiKTsgCi0gICAgfQotfTsKLQotICAvLyByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gLS0KLQotICAvLyBJZiB0aGUgcmlnaHQgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGRhdGEgbWVtYmVyLCAKLSAgLy8gYW5kIHRoZSBsZWZ0IGFyZ3VtZW50IGlzIG9mIGNvbXBhdGlibGUgcG9pbnRlciB0byBjbGFzcyB0eXBlCi0gIC8vIHJldHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG1lbWJlciB0eXBlCi0KLSAgLy8gaWYgcmlnaHQgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEgbWVtYmVyIGZ1bmN0aW9uLCBhbmQgdGhlIGxlZnQgCi0gIC8vIGFyZ3VtZW50IGlzIG9mIGEgY29tcGF0aWJsZSB0eXBlLCB0aGUgcmV0dXJuIHR5cGUgaXMgYSAKLSAgLy8gbWVtYmVyX3BvaW50ZXJfY2FsbGVyIChzZWUgYWJvdmUpCi0KLSAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gZmFpbHMuIFRoZXJlIGlzIGVpdGhlciBhbiBlcnJvciwgCi0gIC8vIG9yIHRoZSB1c2VyIGlzIHRyeWluZyB0byBjYWxsIGFuIG92ZXJsb2FkZWQgLT4qCi0gIC8vIEluIHN1Y2ggYSBjYXNlIGVpdGhlciByZXQ8PiBtdXN0IGJlIHVzZWQsIG9yIGEgcmV0dXJuX3R5cGVfMiB1c2VyIAotICAvLyBkZWZpbmVkIHNwZWNpYWxpemF0aW9uIG11c3QgYmUgcHJvdmlkZWQKLQotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotc3RydWN0IHJldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4sIEEsIEI+IHsKLXByaXZhdGU6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbkI7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjptZW1iZXJfcG9pbnRlcl9hY3Rpb25faGVscGVyPAotICAgICAgZGV0YWlsOjptZW1iZXJfcG9pbnRlcjxwbGFpbkI+Ojppc19kYXRhX21lbWJlciwKLSAgICAgIGRldGFpbDo6bWVtYmVyX3BvaW50ZXI8cGxhaW5CPjo6aXNfZnVuY3Rpb25fbWVtYmVyCi0gICAgPjo6dGVtcGxhdGUgcmV0dXJuX3R5cGU8QSwgQj46OnR5cGUgdHlwZTsgCi19OwotCi0gIC8vIHRoaXMgaXMgdGhlIHdheSB0aGUgZ2VuZXJpYyBsYW1iZGFfZnVuY3Rvcl9iYXNlIGZ1bmN0aW9ucyBpbnN0YW50aWF0ZQotICAvLyByZXR1cm4gdHlwZSBkZWR1Y3Rpb24uIFdlIHR1cm4gaXQgaW50byByZXR1cm5fdHlwZV8yLCBzbyB0aGF0IHRoZSAKLSAgLy8gdXNlciBjYW4gcHJvdmlkZSBzcGVjaWFsaXphdGlvbnMgb24gdGhhdCBsZXZlbC4KLXRlbXBsYXRlPGNsYXNzIEFyZ3M+Ci1zdHJ1Y3QgcmV0dXJuX3R5cGVfTjxvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiwgQXJncz4gewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0dXBsZXM6OmVsZW1lbnQ8MCwgQXJncz46OnR5cGUgQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHVwbGVzOjplbGVtZW50PDEsIEFyZ3M+Ojp0eXBlIEI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiwgCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSwgCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxCPjo6dHlwZQotICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci1pbmxpbmUgY29uc3QKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwyLCBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiA+LAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+LCB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PEFyZzI+Ojp0eXBlPgotICA+Ci0+Ci1vcGVyYXRvci0+Kihjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmcxPiYgYTEsIGNvbnN0IEFyZzImIGEyKQotewotICByZXR1cm4gCi0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICBhY3Rpb248Miwgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gPiwKLSAgICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4sIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQ8QXJnMj46OnR5cGU+Ci0gICAgICA+Ci0gICAgICAodHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4sIAotICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQ8QXJnMj46OnR5cGU+KGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248Miwgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gPiwKLSAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiwgbGFtYmRhX2Z1bmN0b3I8QXJnMj4gPgotICA+Ci0+Ci1vcGVyYXRvci0+Kihjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmcxPiYgYTEsIGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZzI+JiBhMikKLXsKLSAgcmV0dXJuIAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgYWN0aW9uPDIsIG90aGVyX2FjdGlvbjxtZW1iZXJfcG9pbnRlcl9hY3Rpb24+ID4sCi0gICAgICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+LCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+Ci0gICAgICA+Ci0gICAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZzE+LCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+KGExLCBhMikpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcxLCBjbGFzcyBBcmcyPgotaW5saW5lIGNvbnN0Ci1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBhY3Rpb248Miwgb3RoZXJfYWN0aW9uPG1lbWJlcl9wb2ludGVyX2FjdGlvbj4gPiwKLSAgICB0dXBsZTx0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PEFyZzE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+Ci0gID4KLT4KLW9wZXJhdG9yLT4qKGNvbnN0IEFyZzEmIGExLCBjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmcyPiYgYTIpCi17Ci0gIHJldHVybiAKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGFjdGlvbjwyLCBvdGhlcl9hY3Rpb248bWVtYmVyX3BvaW50ZXJfYWN0aW9uPiA+LAotICAgICAgICB0dXBsZTx0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50PEFyZzE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmcyPiA+Ci0gICAgICA+Ci0gICAgICAodHVwbGU8dHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudDxBcmcxPjo6dHlwZSwgCi0gICAgICAgICAgICAgbGFtYmRhX2Z1bmN0b3I8QXJnMj4gPihhMSwgYTIpKTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZgotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2FjdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2FjdGlvbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDA1ZjlmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9hY3Rpb25zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vLyAtLSBvcGVyYXRvcl9hY3Rpb25zLmhwcCAtIEJvb3N0IExhbWJkYSBMaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL2xhbWJkYS5jcy51dHUuZmkgCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX09QRVJBVE9SX0FDVElPTlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9BQ1RJT05TX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyAKLW5hbWVzcGFjZSBsYW1iZGEgewotCi0KLS8vIC0tIGFydGlobWV0aWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBwbHVzX2FjdGlvbiB7fTsKLWNsYXNzIG1pbnVzX2FjdGlvbiB7fTsKLWNsYXNzIG11bHRpcGx5X2FjdGlvbiB7fTsKLWNsYXNzIGRpdmlkZV9hY3Rpb24ge307Ci1jbGFzcyByZW1haW5kZXJfYWN0aW9uIHt9OwotCi0vLyAtLSBiaXR3aXNlICAtLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIGxlZnRzaGlmdF9hY3Rpb24ge307Ci1jbGFzcyByaWdodHNoaWZ0X2FjdGlvbiB7fTsKLWNsYXNzIHhvcl9hY3Rpb24ge307Ci0KLQotLy8gLS0gYml0d2lzZS9sb2dpY2FsIC0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgYW5kX2FjdGlvbiB7fTsKLWNsYXNzIG9yX2FjdGlvbiB7fTsKLWNsYXNzIG5vdF9hY3Rpb24ge307Ci0KLS8vIC0tIHJlbGF0aW9uYWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBsZXNzX2FjdGlvbiB7fTsKLWNsYXNzIGdyZWF0ZXJfYWN0aW9uIHt9OwotY2xhc3MgbGVzc29yZXF1YWxfYWN0aW9uIHt9OwotY2xhc3MgZ3JlYXRlcm9yZXF1YWxfYWN0aW9uIHt9OwotY2xhc3MgZXF1YWxfYWN0aW9uIHt9OwotY2xhc3Mgbm90ZXF1YWxfYWN0aW9uIHt9OwotCi0vLyAtLSBpbmNyZW1lbnQvZGVjcmVtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBpbmNyZW1lbnRfYWN0aW9uIHt9OwotY2xhc3MgZGVjcmVtZW50X2FjdGlvbiB7fTsKLQotLy8gLS0gdm9pZCByZXR1cm4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIC0tIG90aGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgYWRkcmVzc29mX2FjdGlvbiB7fTsKLSAgLy8gY2xhc3MgY29tbWFfYWN0aW9uIHt9OyAvLyBkZWZpbmVkIGluIGFjdGlvbnMuaHBwCi1jbGFzcyBjb250ZW50c29mX2FjdGlvbiB7fTsKLS8vIGNsYXNzIG1lbWJlcl9wb2ludGVyX2FjdGlvbiB7fTsgKGRlZmluZWQgaW4gbWVtYmVyX3B0ci5ocHApCi0KLQotLy8gLS0gYWN0aW91biBncm91cCB0ZW1wbGF0ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgYXJpdGhtZXRpY19hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBiaXR3aXNlX2FjdGlvbjsKLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IGNsYXNzIGxvZ2ljYWxfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgcmVsYXRpb25hbF9hY3Rpb247Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0aW9uPiBjbGFzcyBhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjsKLXRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+IGNsYXNzIHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgcHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uOwotdGVtcGxhdGUgPGNsYXNzIEFjdGlvbj4gY2xhc3MgcG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8gYWN0aW9ucywgZm9yIHdoaWNoIHRoZSBleGlzdGVuY2Ugb2YgcHJvdGVjdCBpcyBjaGVja2VkIGluIHJldHVybiB0eXBlIAotICAvLyBkZWR1Y3Rpb24uCi0KLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxhcml0aG1ldGljX2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8Yml0d2lzZV9hY3Rpb248QWN0PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPGxvZ2ljYWxfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxyZWxhdGlvbmFsX2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiAKLXN0cnVjdCBpc19wcm90ZWN0YWJsZTxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPEFjdD4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBY3Q+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTx1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0PiAKLXN0cnVjdCBpc19wcm90ZWN0YWJsZTxwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248QWN0PiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEFjdD4gc3RydWN0IAotaXNfcHJvdGVjdGFibGU8cG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248YWRkcmVzc29mX2FjdGlvbj4gPiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248Y29udGVudHNvZl9hY3Rpb24+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGlzX3Byb3RlY3RhYmxlPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfcHJvdGVjdGFibGU8b3RoZXJfYWN0aW9uPGFzc2lnbm1lbnRfYWN0aW9uPiA+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi0vLyBOT1RFOiBjb21tYSBhY3Rpb24gaXMgYWxzbyBwcm90ZWN0YWJsZSwgYnV0IHRoZSBzcGVjaWFsaXphdGlvbiBpcwotICAvLyBpbiBhY3Rpb25zLmhwcAotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYSAKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYmI0NWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2xhbWJkYV9mdW5jX2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcxICswLDAgQEAKLS8vIEJvb3N0IExhbWJkYSBMaWJyYXJ5ICAtIG9wZXJhdG9yX2xhbWJkYV9mdW5jX2Jhc2UuaHBwIC0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9MQU1CREFfRlVOQ19CQVNFX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfT1BFUkFUT1JfTEFNQkRBX0ZVTkNfQkFTRV9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotCi0vLyBUaGVzZSBvcGVyYXRvcnMgY2Fubm90IGJlIGltcGxlbWVudGVkIGFzIGFwcGx5IGZ1bmN0aW9ucyBvZiBhY3Rpb24gCi0vLyB0ZW1wbGF0ZXMKLQotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3IgY29tbWEuCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPgotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiwgQXJncz4gewotcHVibGljOgotICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsKLSAgICByZXR1cm4gZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSwgCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci0KLQotICB0ZW1wbGF0ZTxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsgCi0gIHByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZGV0YWlsOjpkZWR1Y2VfYXJndW1lbnRfdHlwZXM8QXJncywgU2lnQXJncz46OnR5cGUgcmV0c190OyAgICAgIAotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV8yX2NvbW1hPCAvLyBjb21tYSBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfb3JfbnVsbDwwLCByZXRzX3Q+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X29yX251bGw8MSwgcmV0c190Pjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLSAgfTsKLQotfTsgIAotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gaGVscGVyIHRyYWl0cyB0byBtYWtlIHRoZSBleHByZXNzaW9uIHNob3J0ZXIsIHRha2VzIGJpbmFyeSBhY3Rpb24KLS8vIGJvdW5kIGFyZ3VtZW50IHR1cGxlLCBvcGVuIGFyZ3VtZW50IHR1cGxlIGFuZCBnaXZlcyB0aGUgcmV0dXJuIHR5cGUKLQotdGVtcGxhdGU8Y2xhc3MgQWN0aW9uLCBjbGFzcyBCb3VuZCwgY2xhc3MgT3Blbj4gY2xhc3MgYmluYXJ5X3J0IHsKLSAgcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczxCb3VuZCwgT3Blbj46OnR5cGUgcmV0c190OyAgICAgIAotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV8yX3Byb3Q8Ci0gICAgICBBY3Rpb24sICAKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfb3JfbnVsbDwxLCByZXRzX3Q+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0gIC8vIHNhbWUgZm9yIHVuYXJ5IGFjdGlvbnMKLXRlbXBsYXRlPGNsYXNzIEFjdGlvbiwgY2xhc3MgQm91bmQsIGNsYXNzIE9wZW4+IGNsYXNzIHVuYXJ5X3J0IHsKLSAgcHJpdmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmRlZHVjZV9hcmd1bWVudF90eXBlczxCb3VuZCwgT3Blbj46OnR5cGUgcmV0c190OyAgICAgIAotICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV8xX3Byb3Q8Ci0gICAgICBBY3Rpb24sICAKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9vcl9udWxsPDAsIHJldHNfdD46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLX0gLy8gZW5kIGRldGFpbAotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3IgbG9naWNhbCBhbmQgKHRvIHByZXNlcnZlIHNob3J0Y2lyY3VpdGluZykKLS8vIHRoaXMgY291bGQgYmUgZG9uZSB3aXRoIGEgbWFjcm8gYXMgdGhlIG90aGVycywgY29kZSB1c2VkIHRvIGJlIGRpZmZlcmVudAotdGVtcGxhdGU8Y2xhc3MgQXJncz4KLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8bG9naWNhbF9hY3Rpb248YW5kX2FjdGlvbj4sIEFyZ3M+IHsKLXB1YmxpYzoKLSAgQXJncyBhcmdzOwotcHVibGljOgotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fQotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPgotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7Ci0gICAgcmV0dXJuIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgJiYgCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmJpbmFyeV9ydDxsb2dpY2FsX2FjdGlvbjxhbmRfYWN0aW9uPiwgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsKLSAgfTsgICAgICAKLX07ICAKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9yIGxvZ2ljYWwgb3IgKHRvIHByZXNlcnZlIHNob3J0Y2lyY3VpdGluZykKLS8vIHRoaXMgY291bGQgYmUgZG9uZSB3aXRoIGEgbWFjcm8gYXMgdGhlIG90aGVycywgY29kZSB1c2VkIHRvIGJlIGRpZmZlcmVudAotdGVtcGxhdGU8Y2xhc3MgQXJncz4KLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8bG9naWNhbF9hY3Rpb248IG9yX2FjdGlvbj4sIEFyZ3M+IHsKLXB1YmxpYzoKLSAgQXJncyBhcmdzOwotcHVibGljOgotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fQotCi0gIHRlbXBsYXRlPGNsYXNzIFJFVCwgQ0FMTF9URU1QTEFURV9BUkdTPgotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7Ci0gICAgcmV0dXJuIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgfHwgCi0gICAgICAgICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7IAotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGRldGFpbDo6YmluYXJ5X3J0PGxvZ2ljYWxfYWN0aW9uPG9yX2FjdGlvbj4sIEFyZ3MsIFNpZ0FyZ3M+Ojp0eXBlIHR5cGU7Ci0gIH07ICAgICAgCi19OyAgCi0KLS8vIFNwZWNpYWxpemF0aW9uIGZvciBzdWJzY3JpcHQKLXRlbXBsYXRlPGNsYXNzIEFyZ3M+Ci1jbGFzcyBsYW1iZGFfZnVuY3Rvcl9iYXNlPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgQXJncz4gewotcHVibGljOgotICBBcmdzIGFyZ3M7Ci1wdWJsaWM6Ci0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+Ci0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsKLSAgICByZXR1cm4gZGV0YWlsOjpzZWxlY3QobmRuYm9vc3Q6OnR1cGxlczo6Z2V0PDA+KGFyZ3MpLCBDQUxMX0FDVFVBTF9BUkdTKSAKLSAgICAgICAgICAgW2RldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwxPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUyldOyAKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFNpZ0FyZ3M+IHN0cnVjdCBzaWcgeyAKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBkZXRhaWw6OmJpbmFyeV9ydDxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIEFyZ3MsIFNpZ0FyZ3M+Ojp0eXBlIAotICAgICAgICB0eXBlOwotICB9OyAgICAgIAotfTsgIAotCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oU1lNQk9MLCBBQ1RJT05fQ0xBU1MpICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWNsYXNzIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OX0NMQVNTLCBBcmdzPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIEFyZ3MgYXJnczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBleHBsaWNpdCBsYW1iZGFfZnVuY3Rvcl9iYXNlKGNvbnN0IEFyZ3MmIGEpIDogYXJncyhhKSB7fSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgUkVULCBDQUxMX1RFTVBMQVRFX0FSR1M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBSRVQgY2FsbChDQUxMX0ZPUk1BTF9BUkdTKSBjb25zdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgIFwKLSAgICAgICAgICAgU1lNQk9MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICBkZXRhaWw6OnNlbGVjdChuZG5ib29zdDo6dHVwbGVzOjpnZXQ8MT4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpOyBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBkZXRhaWw6OmJpbmFyeV9ydDxBQ1RJT05fQ0xBU1MsIEFyZ3MsIFNpZ0FyZ3M+Ojp0eXBlIHR5cGU7ICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKFNZTUJPTCwgQUNUSU9OX0NMQVNTKSAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZ3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT05fQ0xBU1MsIEFyZ3M+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgQXJncyBhcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gU1lNQk9MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICBkZXRhaWw6OnNlbGVjdChuZG5ib29zdDo6dHVwbGVzOjpnZXQ8MD4oYXJncyksIENBTExfQUNUVUFMX0FSR1MpOyBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBkZXRhaWw6OnVuYXJ5X3J0PEFDVElPTl9DTEFTUywgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsgICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VOQVJZX0FDVElPTihTWU1CT0wsIEFDVElPTl9DTEFTUykgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZ3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2xhc3MgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT05fQ0xBU1MsIEFyZ3M+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1wdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgQXJncyBhcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGV4cGxpY2l0IGxhbWJkYV9mdW5jdG9yX2Jhc2UoY29uc3QgQXJncyYgYSkgOiBhcmdzKGEpIHt9ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBSRVQsIENBTExfVEVNUExBVEVfQVJHUz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIFJFVCBjYWxsKENBTExfRk9STUFMX0FSR1MpIGNvbnN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRldGFpbDo6c2VsZWN0KG5kbmJvb3N0Ojp0dXBsZXM6OmdldDwwPihhcmdzKSwgQ0FMTF9BQ1RVQUxfQVJHUykgU1lNQk9MOyBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdGVtcGxhdGU8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBkZXRhaWw6OnVuYXJ5X3J0PEFDVElPTl9DTEFTUywgQXJncywgU2lnQXJncz46OnR5cGUgdHlwZTsgICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgIAotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigrLGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKC0sYXJpdGhtZXRpY19hY3Rpb248bWludXNfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCosYXJpdGhtZXRpY19hY3Rpb248bXVsdGlwbHlfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKC8sYXJpdGhtZXRpY19hY3Rpb248ZGl2aWRlX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTiglLGFyaXRobWV0aWNfYWN0aW9uPHJlbWFpbmRlcl9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig8PCxiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD4+LGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKCYsYml0d2lzZV9hY3Rpb248YW5kX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTih8LGJpdHdpc2VfYWN0aW9uPG9yX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTiheLGJpdHdpc2VfYWN0aW9uPHhvcl9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig8LHJlbGF0aW9uYWxfYWN0aW9uPGxlc3NfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD4scmVsYXRpb25hbF9hY3Rpb248Z3JlYXRlcl9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPD0scmVsYXRpb25hbF9hY3Rpb248bGVzc29yZXF1YWxfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OKD49LHJlbGF0aW9uYWxfYWN0aW9uPGdyZWF0ZXJvcmVxdWFsX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig9PSxyZWxhdGlvbmFsX2FjdGlvbjxlcXVhbF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oIT0scmVsYXRpb25hbF9hY3Rpb248bm90ZXF1YWxfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oKz0sYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxwbHVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigtPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPG1pbnVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigqPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPG11bHRpcGx5X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigvPSxhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPGRpdmlkZV9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oJT0sYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxyZW1haW5kZXJfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPDw9LGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTig+Pj0sYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfQklOQVJZX0FDVElPTigmPSxiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPGFuZF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04ofD0sYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxvcl9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oXj0sYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjx4b3JfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX0JJTkFSWV9BQ1RJT04oPSxvdGhlcl9hY3Rpb248IGFzc2lnbm1lbnRfYWN0aW9uPikKLQotCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigrLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigtLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1BSRUZJWF9VTkFSWV9BQ1RJT04ofiwgYml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTighLCBsb2dpY2FsX2FjdGlvbjxub3RfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKCsrLCBwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248aW5jcmVtZW50X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigtLSwgcHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGRlY3JlbWVudF9hY3Rpb24+KQotCi1ORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTigmLG90aGVyX2FjdGlvbjxhZGRyZXNzb2ZfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QUkVGSVhfVU5BUllfQUNUSU9OKCosb3RoZXJfYWN0aW9uPGNvbnRlbnRzb2ZfYWN0aW9uPikKLQotTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVU5BUllfQUNUSU9OKCsrLCBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGluY3JlbWVudF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVU5BUllfQUNUSU9OKC0tLCBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGRlY3JlbWVudF9hY3Rpb24+KQotCi0KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VTkFSWV9BQ1RJT04KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfUFJFRklYX1VOQVJZX0FDVElPTgotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9CSU5BUllfQUNUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9yZXR1cm5fdHlwZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYjM3Y2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MTcgKzAsMCBAQAotLy8gIG9wZXJhdG9yX3JldHVybl90eXBlX3RyYWl0cy5ocHAgLS0gQm9vc3QgTGFtYmRhIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgd3d3LmJvb3N0Lm9yZwotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9SRVRVUk5fVFlQRV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUl9SRVRVUk5fVFlQRV9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9zYW1lX3RyYWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9pbmRpcmVjdF9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2RldGFpbC9jb250YWluZXJfZndkLmhwcCIKLQotI2luY2x1ZGUgPGNzdGRkZWY+IC8vIG5lZWRlZCBmb3IgdGhlIHB0cmRpZmZfdAotI2luY2x1ZGUgPGlvc2Z3ZD4gIC8vIGZvciBpc3RyZWFtIGFuZCBvc3RyZWFtCi0KLSNpbmNsdWRlIDxpdGVyYXRvcj4gLy8gbmVlZGVkIGZvciBvcGVyYXRvciYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAtLSBnZW5lcmFsIGhlbHBlciB0ZW1wbGF0ZXMgZm9yIHR5cGUgZGVkdWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBNdWNoIG9mIHRoZSB0eXBlIGRlZHVjdGlvbiBjb2RlIGZvciBzdGFuZGFyZCBhcml0aG1ldGljIHR5cGVzIGZyb20gR2FyeSBQb3dlbGwKLQotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBwcm9tb3RlX2NvZGUgeyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gLTE7IH07Ci0vLyB0aGlzIG1lYW5zIHRoYXQgYSBjb2RlIGlzIG5vdCBkZWZpbmVkIGZvciBBCi0KLS8vIC0tIHRoZSBuZXh0IDUgdHlwZXMgYXJlIG5lZWRlZCBpbiBpZl90aGVuX2Vsc2VfcmV0dXJuIAotLy8gdGhlIHByb21vdGlvbiBvcmRlciBpcyBub3QgaW1wb3J0YW50LCBidXQgdGhleSBtdXN0IGhhdmUgZGlzdGluY3QgdmFsdWVzLgotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxib29sPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8Y2hhcj4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHVuc2lnbmVkIGNoYXI+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDMwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxzaWduZWQgY2hhcj4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHNob3J0IGludD4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTA7IH07Ci0vLyAtLS0tLS0tLS0tCi0KLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8aW50PiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAxMDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHVuc2lnbmVkIGludD4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMjAwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxsb25nPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAzMDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPHVuc2lnbmVkIGxvbmc+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDQwMDsgfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxmbG9hdD4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNTAwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTxkb3VibGU+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDYwMDsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2NvZGU8bG9uZyBkb3VibGU+IHsgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDcwMDsgfTsKLQotLy8gVE9ETzogd2NoYXJfdAotCi0vLyBmb3J3YXJkIGRlbGNhcmF0aW9uIG9mIGNvbXBsZXguCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbGFtYmRhIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPCBzdGQ6OmNvbXBsZXg8ZmxvYXQ+ID4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gODAwOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfY29kZTwgc3RkOjpjb21wbGV4PGRvdWJsZT4gPiB7IHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA5MDA7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9jb2RlPCBzdGQ6OmNvbXBsZXg8bG9uZyBkb3VibGU+ID4geyBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTAwMDsgfTsKLQotLy8gLS0gaW50IHByb21vdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHByb21vdGVfdG9faW50IHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX3RvX2ludDxib29sPiB7IHR5cGVkZWYgaW50IHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV90b19pbnQ8Y2hhcj4geyB0eXBlZGVmIGludCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfdG9faW50PHVuc2lnbmVkIGNoYXI+IHsgdHlwZWRlZiBpbnQgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX3RvX2ludDxzaWduZWQgY2hhcj4geyB0eXBlZGVmIGludCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfdG9faW50PHNob3J0IGludD4geyB0eXBlZGVmIGludCB0eXBlOyB9OwotCi0vLyBUaGUgdW5zaWduZWQgc2hvcnQgaW50IHByb21vdGlvbiBydWxlIGlzIHRoaXM6Ci0vLyB1bnNpZ25lZCBzaG9ydCBpbnQgdG8gc2lnbmVkIGludCBpZiBhIHNpZ25lZCBpbnQgY2FuIGhvbGQgYWxsIHZhbHVlcyAKLS8vIG9mIHVuc2lnbmVkIHNob3J0IGludCwgb3RoZXJ3aXNlIGdvIHRvIHVuc2lnbmVkIGludC4KLXRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX3RvX2ludDx1bnNpZ25lZCBzaG9ydCBpbnQ+Ci17IAotICAgICAgICB0eXBlZGVmCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpJRjxzaXplb2YoaW50KSA8PSBzaXplb2YodW5zaWduZWQgc2hvcnQgaW50KSwgICAgICAgIAotLy8gSSBoYWQgdGhlIGxvZ2ljIHJldmVyc2VkIGJ1dCAiPiIgbWVzc2VzIHVwIHRoZSBwYXJzaW5nLgotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKLSAgICAgICAgICAgICAgICBpbnQ+OjpSRVQgdHlwZTsgCi19OwotCi0KLS8vIFRPRE86IHRoaW5rLCBzaG91bGQgdGhlcmUgYmUgZGVmYXVsdCBiZWhhdmlvdXIgZm9yIG5vbi1zdGFuZGFyZCB0eXBlcz8KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLS8vIFVuYXJ5IGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+Ci1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMSB7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOwotfTsKLQotCi0KLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQT4KLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8xPHVuYXJ5X2FyaXRobWV0aWNfYWN0aW9uPEFjdD4sIEE+IHsKLSAgdHlwZWRlZiBBIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8dW5hcnlfYXJpdGhtZXRpY19hY3Rpb248QWN0PiwgQT4geyAKLSAgdHlwZWRlZiAKLSAgICB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8xPAotICAgICAgdW5hcnlfYXJpdGhtZXRpY19hY3Rpb248QWN0PiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIEE+Ci1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMTxiaXR3aXNlX2FjdGlvbjxub3RfYWN0aW9uPiwgQT4gewotICB0eXBlZGVmIEEgdHlwZTsKLX07Ci0KLS8vIGJpdHdpc2Ugbm90LCBvcGVyYXRvcn4oKQotdGVtcGxhdGU8Y2xhc3MgQT4gc3RydWN0IHJldHVybl90eXBlXzE8Yml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4sIEE+IHsKLSAgdHlwZWRlZiAKLSAgICB0eXBlbmFtZSBwbGFpbl9yZXR1cm5fdHlwZV8xPAotICAgICAgYml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0vLyBwcmVmaXggaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgb3BlcmF0b3JzIHJldHVybiAKLS8vIHRoZWlyIGFyZ3VtZW50IGJ5IGRlZmF1bHQgYXMgYSBub24tY29uc3QgcmVmZXJlbmNlCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIEE+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzE8cHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4sIEE+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8xPHByZV9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+LCBBPiB7Ci0gIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgcGxhaW5fcmV0dXJuX3R5cGVfMTwKLSAgICAgIHByZV9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIHBvc3QgZGVjcmVtZW50IGp1c3QgcmV0dXJucyB0aGUgc2FtZSBwbGFpbiB0eXBlLgotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPgotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzE8cG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxBY3Q+LCBBPiB7Ci0gIHR5cGVkZWYgQSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8xPHBvc3RfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248QWN0PiwgQT4gCi17IAotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICBwb3N0X2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPEFjdD4sCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gbG9naWNhbCBub3QsIG9wZXJhdG9yISgpCi10ZW1wbGF0ZTxjbGFzcyBBPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8xPGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+LCBBPiB7Ci0gIHR5cGVkZWYgYm9vbCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQT4KLXN0cnVjdCByZXR1cm5fdHlwZV8xPGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+LCBBPiB7Ci0gIHR5cGVkZWYgCi0gICAgdHlwZW5hbWUgcGxhaW5fcmV0dXJuX3R5cGVfMTwKLSAgICAgIGxvZ2ljYWxfYWN0aW9uPG5vdF9hY3Rpb24+LAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIGFkZHJlc3Mgb2YgYWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLXRlbXBsYXRlPGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8b3RoZXJfYWN0aW9uPGFkZHJlc3NvZl9hY3Rpb24+LCBBPiB7IAotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICBvdGhlcl9hY3Rpb248YWRkcmVzc29mX2FjdGlvbj4sIAotICAgICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICAgID46OnR5cGUgdHlwZTE7Ci0KLSAgLy8gSWYgbm8gdXNlciBkZWZpbmVkIHNwZWNpYWxpemF0aW9uIGZvciBBLCB0aGVuIHJldHVybiB0aGUKLSAgLy8gY3YgcXVhbGlmaWVkIHBvaW50ZXIgdG8gQQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGUqLAotICAgIHR5cGUxCi0gID46OlJFVCB0eXBlOwotfTsKLQotLy8gY29udGVudHNvZiBhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIFRPRE86IHRoaXMgZGVkdWN0aW9uIG1heSBsZWFkIHRvIGZhaWwgZGlyZWN0bHksIAotLy8gKGlmIEEgaGFzIG5vIHNwZWNpYWxpemF0aW9uIGZvciBpdGVyYXRvcl90cmFpdHMgYW5kIGhhcyBubwotLy8gdHlwZWRlZiBBOjpyZWZlcmVuY2UuCi0vLyBUaGVyZSBpcyBubyBlYXN5IHdheSBhcm91bmQgdGhpcywgY2F1c2UgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgd2F5Ci0vLyB0byB0ZXN0IHdoZXRoZXIgYSBjbGFzcyBpcyBhbiBpdGVyYXRvciBvciBub3QuCi0gCi0vLyBUaGUgZGVmYXVsdCB3b3JrcyB3aXRoIHN0ZDo6aXRlcmF0b3JzLgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAvLyBBIGlzIGEgbm9ucmVmZXJlbmNlIHR5cGUKLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW5kaXJlY3RfcmVmZXJlbmNlPEE+Ojp0eXBlIHR5cGU7IAotfTsKLQotICAvLyB0aGlzIGlzIHNpbmNlIHRoZSBudWxsYXJ5ICgpIGluIGxhbWJkYV9mdW5jdG9yIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQKLXRlbXBsYXRlIDw+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8bnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxjb25zdCBBPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29udGVudHNvZl90eXBlPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTx2b2xhdGlsZSBBPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29udGVudHNvZl90eXBlPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxjb25zdCB2b2xhdGlsZSBBPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgY29udGVudHNvZl90eXBlPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi0gIC8vIHN0YW5kYXJkIGl0ZXJhdG9yIHRyYWl0cyBzaG91bGQgdGFrZSBjYXJlIG9mIHRoZSBwb2ludGVyIHR5cGVzIAotICAvLyBidXQganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLCB3ZSBoYXZlIHRoZSBzcGVjaWFsaXphdGlvbnMgaGVyZToKLSAgLy8gdGhlc2Ugd29yayBldmVuIGlmIEEgaXMgY3YtcXVhbGlmaWVkLgotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8QSo+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPEEqIGNvbnN0PiB7Ci0gIHR5cGVkZWYgQSYgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgQT4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxBKiB2b2xhdGlsZT4gewotICB0eXBlZGVmIEEmIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEE+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8QSogY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgaW50IE4+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8QVtOXT4geyAKLSAgdHlwZWRlZiBBJiB0eXBlOyAKLX07Ci10ZW1wbGF0ZTxjbGFzcyBBLCBpbnQgTj4gc3RydWN0IGNvbnRlbnRzb2ZfdHlwZTxjb25zdCBBW05dPiB7IAotICB0eXBlZGVmIGNvbnN0IEEmIHR5cGU7IAotfTsKLXRlbXBsYXRlPGNsYXNzIEEsIGludCBOPiBzdHJ1Y3QgY29udGVudHNvZl90eXBlPHZvbGF0aWxlIEFbTl0+IHsgCi0gIHR5cGVkZWYgdm9sYXRpbGUgQSYgdHlwZTsgCi19OwotdGVtcGxhdGU8Y2xhc3MgQSwgaW50IE4+IHN0cnVjdCBjb250ZW50c29mX3R5cGU8Y29uc3Qgdm9sYXRpbGUgQVtOXT4geyAKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBBJiB0eXBlOyAKLX07Ci0KLQotCi0KLQotfSAvLyBlbmQgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIEE+IAotc3RydWN0IHJldHVybl90eXBlXzE8b3RoZXJfYWN0aW9uPGNvbnRlbnRzb2ZfYWN0aW9uPiwgQT4geyAKLQotICB0eXBlZGVmIAotICAgIHR5cGVuYW1lIHBsYWluX3JldHVybl90eXBlXzE8Ci0gICAgICBvdGhlcl9hY3Rpb248Y29udGVudHNvZl9hY3Rpb24+LCAKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGUxOwotCi0gIC8vIElmIG5vIHVzZXIgZGVmaW5lZCBzcGVjaWFsaXphdGlvbiBmb3IgQSwgdGhlbiByZXR1cm4gdGhlCi0gIC8vIGN2IHF1YWxpZmllZCBwb2ludGVyIHRvIEEKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRl90eXBlPAotICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgIGRldGFpbDo6Y29udGVudHNvZl90eXBlPAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGUKLSAgICA+LAotICAgIGRldGFpbDo6aWRlbnRpdHlfbWFwcGluZzx0eXBlMT4KLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGJpbmFyeSBhY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIGhlcmUgdGhlIGRlZmF1bHQgY2FzZSBpczogbm8gdXNlciBkZWZpbmVkIHZlcnNpb25zOgotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yIHsKLSAgdHlwZWRlZiBkZXRhaWw6OnVuc3BlY2lmaWVkIHR5cGU7IAotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIGVycm9yIGNsYXNzZXMKLWNsYXNzIGlsbGVnYWxfcG9pbnRlcl9hcml0aG1ldGlje307Ci0KLS8vIHBvaW50ZXIgYXJpdGhtZXRpYyB0eXBlIGRlZHVjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdmFsdWUgPSBmYWxzZSBtZWFucyB0aGF0IHRoaXMgaXMgbm90IGEgcG9pbnRlciBhcml0aG1ldGljIGNhc2UKLS8vIHZhbHVlID0gdHJ1ZSBtZWFucywgdGhhdCB0aGlzIGNhbiBiZSBhIHBvaW50ZXIgYXJpdGhtZXRpYyBjYXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IGlzCi0vLyBUaGlzIG1lYW5zLCB0aGF0IGZvciB1c2VyIGRlZmluZWQgb3BlcmF0b3JzIGZvciBwb2ludGVyIHR5cGVzLCBzYXkgZm9yIHNvbWUgb3BlcmF0b3IrKFgsICpZKSwKLS8vIHRoZSBkZWR1Y3Rpb25zIG11c3QgYmUgY29kZWQgYXQgYW4gZWFybGllbCBsZXZlbCAocmV0dXJuX3R5cGVfMikuCi0KLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcG9pbnRlcl9hcml0aG1ldGljX3RyYWl0cyB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7IH07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHBvaW50ZXJfYXJpdGhtZXRpY190cmFpdHM8cGx1c19hY3Rpb24sIEEsIEI+IHsgCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlPjo6dHlwZSBBUDsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlPjo6dHlwZSBCUDsKLQotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0EgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxBUD46OnZhbHVlOwotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0IgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxCUD46OnZhbHVlOyAgCi0KLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBpc19wb2ludGVyX0EgfHwgaXNfcG9pbnRlcl9COwotCi0gIC8vIGNhbid0IGFkZCB0d28gcG9pbnRlcnMuCi0gIC8vIG5vdGUsIHRoYXQgd2UgZG8gbm90IGNoZWNrIHdldGhlciB0aGUgb3RoZXIgdHlwZSBpcyB2YWxpZCBmb3IgCi0gIC8vIGFkZGl0aW9uIHdpdGggYSBwb2ludGVyLgotICAvLyB0aGUgY29tcGlsZXIgd2lsbCBjYXRjaCBpdCBpbiB0aGUgYXBwbHkgZnVuY3Rpb24KLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICBkZXRhaWw6OklGPAotICAgIGlzX3BvaW50ZXJfQSAmJiBpc19wb2ludGVyX0IsIAotICAgICAgZGV0YWlsOjpyZXR1cm5fdHlwZV9kZWR1Y3Rpb25fZmFpbHVyZTwKLSAgICAgICAgZGV0YWlsOjppbGxlZ2FsX3BvaW50ZXJfYXJpdGhtZXRpYwotICAgICAgPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6SUY8aXNfcG9pbnRlcl9BLCBBUCwgQlA+OjpSRVQKLSAgPjo6UkVUIHR5cGU7IAotCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCBwb2ludGVyX2FyaXRobWV0aWNfdHJhaXRzPG1pbnVzX2FjdGlvbiwgQSwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlPjo6dHlwZSBBUDsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBhcnJheV90b19wb2ludGVyPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlPjo6dHlwZSBCUDsKLQotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0EgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxBUD46OnZhbHVlOwotICBzdGF0aWMgY29uc3QgYm9vbCBpc19wb2ludGVyX0IgPSBuZG5ib29zdDo6aXNfcG9pbnRlcjxCUD46OnZhbHVlOyAgCi0KLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBpc19wb2ludGVyX0EgfHwgaXNfcG9pbnRlcl9COwotCi0gIHN0YXRpYyBjb25zdCBib29sIHNhbWVfcG9pbnRlcl90eXBlID0KLSAgICBpc19wb2ludGVyX0EgJiYgaXNfcG9pbnRlcl9CICYmIAotICAgIG5kbmJvb3N0Ojppc19zYW1lPAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPAotICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY29uc3Q8QVA+Ojp0eXBlCi0gICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2NvbnN0PAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8Ci0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jb25zdDxCUD46OnR5cGUKLSAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgID46OnZhbHVlOwotCi0gIC8vIHB0ciAtIHB0ciBoYXMgdHlwZSBwdHJkaWZmX3QKLSAgLy8gbm90ZSwgdGhhdCB3ZSBkbyBub3QgY2hlY2sgaWYsIGluIHB0ciAtIEIsIEIgaXMgCi0gIC8vIHZhbGlkIGZvciBzdWJ0cmFjdGlvbiB3aXRoIGEgcG9pbnRlci4KLSAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgY2F0Y2ggaXQgaW4gdGhlIGFwcGx5IGZ1bmN0aW9uCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRjwKLSAgICBzYW1lX3BvaW50ZXJfdHlwZSwgY29uc3Qgc3RkOjpwdHJkaWZmX3QsCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgIGlzX3BvaW50ZXJfQSwgCi0gICAgICBBUCwgCi0gICAgICBkZXRhaWw6OnJldHVybl90eXBlX2RlZHVjdGlvbl9mYWlsdXJlPGRldGFpbDo6aWxsZWdhbF9wb2ludGVyX2FyaXRobWV0aWM+Ci0gICAgPjo6UkVUCi0gID46OlJFVCB0eXBlOyAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotICAgCi0vLyAtLSBhcml0aG1ldGljIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotICAgCi10ZW1wbGF0ZTxib29sIGlzX3BvaW50ZXJfYXJpdGhtZXRpYywgY2xhc3MgQWN0LCBjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yOwotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8zOwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSAgCi0KLS8vIGRyb3AgYW55IHF1YWxpZmllcnMgZnJvbSB0aGUgYXJndW1lbnQgdHlwZXMgd2l0aGluIGFyaXRobWV0aWNfYWN0aW9uCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBBY3Q+IAotc3RydWN0IHJldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248QWN0PiwgQSwgQj4KLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CPjo6dHlwZSB0eXBlMTsKLSAgCi0gIC8vIGlmIHVzZXIgZGVmaW5lZCByZXR1cm4gdHlwZSwgZG8gbm90IGVudGVyIHRoZSB3aG9sZSBhcml0aG1ldGljIGRlZHVjdGlvbnMKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIGRldGFpbDo6cmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzE8Ci0gICAgICAgICBkZXRhaWw6OnBvaW50ZXJfYXJpdGhtZXRpY190cmFpdHM8QWN0LCBBLCBCPjo6dmFsdWUsIEFjdCwgQSwgQgotICAgICAgPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj4KLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgIAotLy8gcGVyZm9ybSBpbnRlZ3JhbCBwcm9tb3Rpb24sIG5vIHBvaW50ZXIgYXJpdGhtZXRpYwotdGVtcGxhdGU8Ym9vbCBpc19wb2ludGVyX2FyaXRobWV0aWMsIGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzEKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMjwKLSAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBwb2ludGVyX2FyaXRobWV0aWMKLXRlbXBsYXRlPGNsYXNzIEFjdCwgY2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9hcml0aG1ldGljX3BoYXNlXzE8dHJ1ZSwgQWN0LCBBLCBCPgotewotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBvaW50ZXJfYXJpdGhtZXRpY190cmFpdHM8QWN0LCBBLCBCPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMzwKLSAgICAgIHR5cGVuYW1lIHByb21vdGVfdG9faW50PEE+Ojp0eXBlLCAKLSAgICAgIHR5cGVuYW1lIHByb21vdGVfdG9faW50PEI+Ojp0eXBlCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8gc3BlY2lhbGl6YXRpb24gZm9yIHVuc2lnbmVkIGludC4KLS8vIFdlIG9ubHkgaGF2ZSB0byBkbyB0aGVzZSB0d28gc3BlY2lhbGl6YXRpb24gYmVjYXVzZSB0aGUgdmFsdWUgcHJvbW90aW9uIHdpbGwKLS8vIHRha2UgY2FyZSBvZiB0aGUgb3RoZXIgY2FzZXMuCi0vLyBUaGUgdW5zaWduZWQgaW50IHByb21vdGlvbiBydWxlIGlzIHRoaXM6Ci0vLyB1bnNpZ25lZCBpbnQgdG8gbG9uZyBpZiBhIGxvbmcgY2FuIGhvbGQgYWxsIHZhbHVlcyBvZiB1bnNpZ25lZCBpbnQsCi0vLyBvdGhlcndpc2UgZ28gdG8gdW5zaWduZWQgbG9uZy4KLQotLy8gc3RydWN0IHNvIEkgZG9uJ3QgaGF2ZSB0byB0eXBlIHRoaXMgdHdpY2UuCi1zdHJ1Y3QgcHJvbW90aW9uX29mX3Vuc2lnbmVkX2ludAotewotICAgICAgICB0eXBlZGVmCi0gICAgICAgIGRldGFpbDo6SUY8c2l6ZW9mKGxvbmcpIDw9IHNpemVvZih1bnNpZ25lZCBpbnQpLCAgICAgICAgCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywKLSAgICAgICAgICAgICAgICBsb25nPjo6UkVUIHR5cGU7IAotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yPHVuc2lnbmVkIGludCwgbG9uZz4KLXsKLSAgICAgICAgdHlwZWRlZiBwcm9tb3Rpb25fb2ZfdW5zaWduZWRfaW50Ojp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8Pgotc3RydWN0IHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8yPGxvbmcsIHVuc2lnbmVkIGludD4KLXsKLSAgICAgICAgdHlwZWRlZiBwcm9tb3Rpb25fb2ZfdW5zaWduZWRfaW50Ojp0eXBlIHR5cGU7Ci19OwotCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCByZXR1cm5fdHlwZV8yX2FyaXRobWV0aWNfcGhhc2VfMyB7IAotICAgZW51bSB7IHByb21vdGVfY29kZV9BX3ZhbHVlID0gcHJvbW90ZV9jb2RlPEE+Ojp2YWx1ZSwKLSAgICAgICAgIHByb21vdGVfY29kZV9CX3ZhbHVlID0gcHJvbW90ZV9jb2RlPEI+Ojp2YWx1ZSB9OyAvLyBlbnVtcyBmb3IgS0NDCi0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICBkZXRhaWw6OklGPAotICAgICAgcHJvbW90ZV9jb2RlX0FfdmFsdWUgPT0gLTEgfHwgcHJvbW90ZV9jb2RlX0JfdmFsdWUgPT0gLTEsCi0gICAgICBkZXRhaWw6OnJldHVybl90eXBlX2RlZHVjdGlvbl9mYWlsdXJlPHJldHVybl90eXBlXzJfYXJpdGhtZXRpY19waGFzZV8zPiwKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgICAgICgoaW50KXByb21vdGVfY29kZV9BX3ZhbHVlID4gKGludClwcm9tb3RlX2NvZGVfQl92YWx1ZSksIAotICAgICAgICBBLCAKLSAgICAgICAgQgotICAgICAgPjo6UkVUCi0gICAgPjo6UkVUIHR5cGU7ICAgICAgICAgICAgICAgICAgICAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAtLSAgYml0d2lzZSBhY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIG5vdGU6IGZvciBpbnRlZ3JhbCB0eXBlcyBkZXVkdWN0aW9uIGlzIHNpbWlsYXIgdG8gYXJpdGhtZXRpYyBhY3Rpb25zLiAKLQotLy8gZHJvcCBhbnkgcXVhbGlmaWVycyBmcm9tIHRoZSBhcmd1bWVudCB0eXBlcyB3aXRoaW4gYXJpdGhtZXRpYyBhY3Rpb24KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEFjdD4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxBY3Q+LCBBLCBCPgotewotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTE7Ci0gIAotICAvLyBpZiB1c2VyIGRlZmluZWQgcmV0dXJuIHR5cGUsIGRvIG5vdCBlbnRlciB0eXBlIGRlZHVjdGlvbnMKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIHJldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LCBBLCBCPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj4KLSAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgLy8gcGx1c19hY3Rpb24gaXMganVzdCBhIHJhbmRvbSBwaWNrLCBoYXMgdG8gYmUgYSBjb25jcmV0ZSBpbnN0YW5jZQotCi0gIC8vIFRPRE86IFRoaXMgY2hlY2sgaXMgb25seSB2YWxpZCBmb3IgYnVpbHQtaW4gdHlwZXMsIG92ZXJsb2FkZWQgdHlwZXMgbWlnaHQKLSAgLy8gYWNjZXB0IGZsb2F0aW5nIHBvaW50IG9wZXJhdG9ycwotCi0gIC8vIGJpdHdpc2Ugb3BlcmF0b3JzIG5vdCBkZWZpbmVkIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcwotICAvLyB0aGVzZSB0ZXN0IGFyZSBub3Qgc3RyaWN0bHkgbmVlZGVkIGhlcmUsIHNpbmNlIHRoZSBlcnJvciB3aWxsIGJlIGNhdWdodCBpbgotICAvLyB0aGUgYXBwbHkgZnVuY3Rpb24KLSAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghKG5kbmJvb3N0Ojppc19mbG9hdDxwbGFpbl9BPjo6dmFsdWUgJiYgbmRuYm9vc3Q6OmlzX2Zsb2F0PHBsYWluX0I+Ojp2YWx1ZSkpOwotCi19OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9TVFJFQU1TCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgbGVmdHNoaWZ0X3R5cGUgewotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSosCi0gICAgICBzdGQ6Om9zdHJlYW0qCi0gICAgPjo6dmFsdWUsCi0gICAgc3RkOjpvc3RyZWFtJiwgCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICA+OjpSRVQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgcmlnaHRzaGlmdF90eXBlIHsKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0KLSAgICBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Ci0gICAgICB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSosCi0gICAgICBzdGQ6OmlzdHJlYW0qCi0gICAgPjo6dmFsdWUsIAotICAgIHN0ZDo6aXN0cmVhbSYsCi0gICAgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZQotICA+OjpSRVQgdHlwZTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgZ2V0X29zdHJlYW1fdHlwZSB7Ci0gIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPHR5cGVuYW1lIFQ6OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnRyYWl0c190eXBlPiYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgZ2V0X2lzdHJlYW1fdHlwZSB7Ci0gIHR5cGVkZWYgc3RkOjpiYXNpY19pc3RyZWFtPHR5cGVuYW1lIFQ6OmNoYXJfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFQ6OnRyYWl0c190eXBlPiYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgbGVmdHNoaWZ0X3R5cGUgewotcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSBwbGFpbkE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRl90eXBlPAotICAgIGlzX2luc3RhbmNlX29mXzI8cGxhaW5BLCBzdGQ6OmJhc2ljX29zdHJlYW0+Ojp2YWx1ZSwgCi0gICAgZ2V0X29zdHJlYW1fdHlwZTxwbGFpbkE+LCAvL3JlZmVyZW5jZSB0byB0aGUgc3RyZWFtIAotICAgIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT4KLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4KLXN0cnVjdCByaWdodHNoaWZ0X3R5cGUgewotcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSBwbGFpbkE7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRl90eXBlPAotICAgIGlzX2luc3RhbmNlX29mXzI8cGxhaW5BLCBzdGQ6OmJhc2ljX2lzdHJlYW0+Ojp2YWx1ZSwgCi0gICAgZ2V0X2lzdHJlYW1fdHlwZTxwbGFpbkE+LCAvL3JlZmVyZW5jZSB0byB0aGUgc3RyZWFtIAotICAgIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT4KLSAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi0jZW5kaWYKLQotfSAvLyBlbmQgZGV0YWlsCi0KLS8vIG9zdHJlYW0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHJldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sIEEsIEI+Ci17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0I+Ojp0eXBlIHR5cGUxOwotICAKLSAgLy8gaWYgdXNlciBkZWZpbmVkIHJldHVybiB0eXBlLCBkbyBub3QgZW50ZXIgdHlwZSBkZWR1Y3Rpb25zCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRl90eXBlPAotICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgICBkZXRhaWw6OmxlZnRzaGlmdF90eXBlPEEsIEI+LAotICAgICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwgcGxhaW5fQSwgcGxhaW5fQj4KLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLyBpc3RyZWFtCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwgQSwgQj4KLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjxiaXR3aXNlX2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0I+Ojp0eXBlIHR5cGUxOwotICAKLSAgLy8gaWYgdXNlciBkZWZpbmVkIHJldHVybiB0eXBlLCBkbyBub3QgZW50ZXIgdHlwZSBkZWR1Y3Rpb25zCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRl90eXBlPAotICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8dHlwZTEsIGRldGFpbDo6dW5zcGVjaWZpZWQ+Ojp2YWx1ZSwgCi0gICAgICBkZXRhaWw6OnJpZ2h0c2hpZnRfdHlwZTxBLCBCPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8Yml0d2lzZV9hY3Rpb248cmlnaHRzaGlmdF9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CPgotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIC0tIGxvZ2ljYWwgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBhbHdheXMgYm9vbAotLy8gTk9URTogdGhpcyBtYXkgbm90IGJlIHRydWUgZm9yIHNvbWUgd2VpcmQgdXNlci1kZWZpbmVkIHR5cGVzLAotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPGxvZ2ljYWxfYWN0aW9uPEFjdD4sIEEsIEI+IHsgCi0gIHR5cGVkZWYgYm9vbCB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEFjdD4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxsb2dpY2FsX2FjdGlvbjxBY3Q+LCBBLCBCPiB7IAotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8bG9naWNhbF9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTsKLSAgCi19OwotCi0KLS8vIC0tIHJlbGF0aW9uYWwgYWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBhbHdheXMgYm9vbAotLy8gTk9URTogdGhpcyBtYXkgbm90IGJlIHRydWUgZm9yIHNvbWUgd2VpcmQgdXNlci1kZWZpbmVkIHR5cGVzLAotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPHJlbGF0aW9uYWxfYWN0aW9uPEFjdD4sIEEsIEI+IHsgCi0gIHR5cGVkZWYgYm9vbCB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEFjdD4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxyZWxhdGlvbmFsX2FjdGlvbjxBY3Q+LCBBLCBCPiB7IAotCi0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxBPjo6dHlwZSBwbGFpbl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8Qj46OnR5cGUgcGxhaW5fQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8cmVsYXRpb25hbF9hY3Rpb248QWN0PiwgcGxhaW5fQSwgcGxhaW5fQj46OnR5cGUgdHlwZTsgCi19OwotCi0vLyBBc3NpbmdtZW50IGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHJldHVybiB0eXBlIGlzIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBhcyByZWZlcmVuY2UKLQotLy8gbm90ZSB0aGF0IGN2LXF1YWxpZmllcnMgYXJlIHByZXNlcnZlZC4KLS8vIFllcywgYXNzaWdubWVudCBvcGVyYXRvciBjYW4gYmUgY29uc3QhCi0KLS8vIE5PVEU6IHRoaXMgbWF5IG5vdCBiZSB0cnVlIGZvciBzb21lIHdlaXJkIHVzZXItZGVmaW5lZCB0eXBlcywKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248QWN0PiwgQSwgQj4geyAKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgYXJpdGhtZXRpY19hc3NpZ25tZW50X2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CCi0gICAgPjo6dHlwZSB0eXBlMTsKLSAgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8QT46OnR5cGUsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQWN0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV8yPGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248QWN0PiwgQSwgQj4geyAKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxBY3Q+LCBwbGFpbl9BLCBwbGFpbl9CCi0gICAgPjo6dHlwZSB0eXBlMTsKLSAgCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgICAgIG5kbmJvb3N0Ojppc19zYW1lPHR5cGUxLCBkZXRhaWw6OnVuc3BlY2lmaWVkPjo6dmFsdWUsIAotICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8QT46OnR5cGUsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248YXNzaWdubWVudF9hY3Rpb24+LCBBLCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBwbGFpbl9yZXR1cm5fdHlwZV8yPAotICAgICAgb3RoZXJfYWN0aW9uPGFzc2lnbm1lbnRfYWN0aW9uPiwgcGxhaW5fQSwgcGxhaW5fQgotICAgID46OnR5cGUgdHlwZTE7Ci0gIAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUY8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPEE+Ojp0eXBlLAotICAgICAgdHlwZTEKLSAgICA+OjpSRVQgdHlwZTsKLX07Ci0KLS8vIC0tIG90aGVyIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBjb21tYSBhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTm90ZTogdGhpcyBtYXkgbm90IGJlIHRydWUgZm9yIHNvbWUgd2VpcmQgdXNlci1kZWZpbmVkIHR5cGVzLAotCi0vLyBOT1RFISBUaGlzIG9ubHkgdHJpZXMgdGhlIHBsYWluX3JldHVybl90eXBlXzIgbGF5ZXIgYW5kIGdpdmVzCi0vLyBkZXRhaWw6OnVuc3BlY2lmaWVkIGFzIGRlZmF1bHQuIElmIG5vIHN1Y2ggc3BlY2lhbGl6YXRpb24gaXMgZm91bmQsIHRoZSAKLS8vIHR5cGUgcnVsZSBpbiB0aGUgc3BjZWNpYWxpemF0aW9uIG9mIHRoZSByZXR1cm5fdHlwZV8yX3Byb3QgaXMgdXNlZAotLy8gdG8gZ2l2ZSB0aGUgdHlwZSBvZiB0aGUgcmlnaHQgYXJndW1lbnQgKHdoaWNoIGNhbiBiZSBhIHJlZmVyZW5jZSB0b28pCi0vLyAoVGhlIGJ1aWx0IGluIG9wZXJhdG9yLCBjYW4gcmV0dXJuIGEgbC0gb3IgcnZhbHVlKS4KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+IAotc3RydWN0IHJldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIEEsIEI+IHsgCi0KLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEE+Ojp0eXBlIHBsYWluX0E7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2FuZF9jdjxCPjo6dHlwZSBwbGFpbl9COwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgcGxhaW5fcmV0dXJuX3R5cGVfMjwKLSAgICAgIG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CCi0gICAgPjo6dHlwZSB0eXBlOwotICB9OwotCi0vLyBzdWJzY3JpcHQgYWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0gIC8vIEEgYW5kIEIgYXJlIG5vbnJlZmVyZW5jZSB0eXBlcwotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZSB7Ci0gIHR5cGVkZWYgZGV0YWlsOjp1bnNwZWNpZmllZCB0eXBlOyAKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSosIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSogY29uc3QsIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSogdm9sYXRpbGUsIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8QSogY29uc3Qgdm9sYXRpbGUsIEI+IHsKLSAgdHlwZWRlZiBBJiB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBpbnQgTj4gc3RydWN0IHN1YnNjcmlwdF90eXBlPEFbTl0sIEI+IHsgCi0gIHR5cGVkZWYgQSYgdHlwZTsgCi19OwotCi0gIC8vIHRoZXNlIDMgc3BlY2lhbGl6YXRpb25zIGFyZSBuZWVkZWQgdG8gbWFrZSBnY2MgPDMgaGFwcHkKLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGludCBOPiBzdHJ1Y3Qgc3Vic2NyaXB0X3R5cGU8Y29uc3QgQVtOXSwgQj4geyAKLSAgdHlwZWRlZiBjb25zdCBBJiB0eXBlOyAKLX07Ci10ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBpbnQgTj4gc3RydWN0IHN1YnNjcmlwdF90eXBlPHZvbGF0aWxlIEFbTl0sIEI+IHsgCi0gIHR5cGVkZWYgdm9sYXRpbGUgQSYgdHlwZTsgCi19OwotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgaW50IE4+IHN0cnVjdCBzdWJzY3JpcHRfdHlwZTxjb25zdCB2b2xhdGlsZSBBW05dLCBCPiB7IAotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIEEmIHR5cGU7IAotfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3QgcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIEEsIEI+IHsKLQotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGUgcGxhaW5fQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnJlbW92ZV9yZWZlcmVuY2VfYW5kX2N2PEI+Ojp0eXBlIHBsYWluX0I7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxBPjo6dHlwZSBub25yZWZfQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxCPjo6dHlwZSBub25yZWZfQjsKLQotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIHBsYWluX3JldHVybl90eXBlXzI8Ci0gICAgICBvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHBsYWluX0EsIHBsYWluX0IKLSAgICA+Ojp0eXBlIHR5cGUxOwotICAKLSAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICBkZXRhaWw6OklGX3R5cGU8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIGRldGFpbDo6c3Vic2NyaXB0X3R5cGU8bm9ucmVmX0EsIG5vbnJlZl9CPiwKLSAgICAgIHBsYWluX3JldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCBwbGFpbl9BLCBwbGFpbl9CPgotICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgS2V5LCBjbGFzcyBULCBjbGFzcyBDbXAsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6bWFwPEtleSwgVCwgQ21wLCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIFQmIHR5cGU7Ci0gIC8vIFQgPT0gc3RkOjptYXA8S2V5LCBULCBDbXAsIEFsbG9jYXRvcj46Om1hcHBlZF90eXBlOyAKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ21wLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEI+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8b3RoZXJfYWN0aW9uPHN1YnNjcmlwdF9hY3Rpb24+LCBzdGQ6Om11bHRpbWFwPEtleSwgVCwgQ21wLCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIFQmIHR5cGU7Ci0gIC8vIFQgPT0gc3RkOjptYXA8S2V5LCBULCBDbXAsIEFsbG9jYXRvcj46Om1hcHBlZF90eXBlOyAKLX07Ci0KLSAgLy8gZGVxdWUKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6ZGVxdWU8VCwgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmRlcXVlPFQsIEFsbG9jYXRvcj46OnJlZmVyZW5jZSB0eXBlOwotfTsKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIGNvbnN0IHN0ZDo6ZGVxdWU8VCwgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmRlcXVlPFQsIEFsbG9jYXRvcj46OmNvbnN0X3JlZmVyZW5jZSB0eXBlOwotfTsKLQotICAvLyB2ZWN0b3IKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6dmVjdG9yPFQsIEFsbG9jYXRvcj4sIEI+IHsgCi0gIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjp2ZWN0b3I8VCwgQWxsb2NhdG9yPjo6cmVmZXJlbmNlIHR5cGU7Ci19OwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgY29uc3Qgc3RkOjp2ZWN0b3I8VCwgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxULCBBbGxvY2F0b3I+Ojpjb25zdF9yZWZlcmVuY2UgdHlwZTsKLX07Ci0KLSAgLy8gYmFzaWNfc3RyaW5nCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgQj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxvdGhlcl9hY3Rpb248c3Vic2NyaXB0X2FjdGlvbj4sIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiwgQj4geyAKLSAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj46OnJlZmVyZW5jZSB0eXBlOwotfTsKLXRlbXBsYXRlPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBCPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxzdWJzY3JpcHRfYWN0aW9uPiwgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+LCBCPiB7IAotICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPjo6Y29uc3RfcmVmZXJlbmNlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gPiB7IAotICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2hhciosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gPiB7IAotICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+IAotc3RydWN0IHBsYWluX3JldHVybl90eXBlXzI8YXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2hhcio+IHsgCi0gIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jYXRvciwgc3RkOjpzaXplX3QgTj4gCi1zdHJ1Y3QgcGxhaW5fcmV0dXJuX3R5cGVfMjxhcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyW05dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+ID4geyAKLSAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyLCBUcmFpdHMsIEFsbG9jYXRvcj4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBOPiAKLXN0cnVjdCBwbGFpbl9yZXR1cm5fdHlwZV8yPGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoYXIsIFRyYWl0cywgQWxsb2NhdG9yPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJbTl0+IHsgCi0gIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Q2hhciwgVHJhaXRzLCBBbGxvY2F0b3I+IHR5cGU7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9ycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFjOWE0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3MCArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAtIG9wZXJhdG9ycy5ocHAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9PUEVSQVRPUlNfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL2lzX2luc3RhbmNlX29mLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgCi1uYW1lc3BhY2UgbGFtYmRhIHsKLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX0JFMQotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9CRTEiCi0jZW5kaWYKLQotICAvLyBGb3IgYWxsIEJPT1NUQV9MQU1CREFfQkUqIG1hY3JvczoKLQotICAvLyBDT05TVEEgbXVzdCBiZSBlaXRoZXIgJ0EnIG9yICdjb25zdCBBJwotICAvLyBDT05TVEIgbXVzdCBiZSBlaXRoZXIgJ0InIG9yICdjb25zdCBCJwotCi0gIC8vIEl0IGlzIHN0dXBpZCB0byBoYXZlIHRoZSBuYW1lcyBBIGFuZCBCIGFzIG1hY3JvIGFyZ3VtZW50cywgYnV0IGl0IGF2b2lkcwotICAvLyB0aGUgbmVlZCB0byBwYXNzIGluIGVtdHB5IG1hY3JvIGFyZ3VtZW50cywgd2hpY2ggZ2l2ZXMgd2FybmluZ3Mgb24gc29tZQotICAvLyBjb21waWxlcnMKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQkUxKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEsIENPTlNUQiwgQ09OVkVSU0lPTikgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbGFtYmRhX2Z1bmN0b3I8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBBQ1RJT04sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4sIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPENPTlNUQj46OnR5cGU+ICBcCi0gID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhLCBDT05TVEImIGIpIHsgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8Q09OU1RCPjo6dHlwZT5cCi0gICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxDT05TVEI+Ojp0eXBlPihhLCBiKSk7IFwKLX0KLQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfQkUyCi0jZXJyb3IgIk11bHRpcGxlIGRlZmluZXMgb2YgTkROQk9PU1RfTEFNQkRBX0JFMiIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9CRTIoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05WRVJTSU9OKSAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEFyZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1sYW1iZGFfZnVuY3RvcjwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHVwbGU8dHlwZW5hbWUgQ09OVkVSU0lPTiA8Q09OU1RBPjo6dHlwZSwgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+ICAgICAgICBcCi0gID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChDT05TVEEmIGEsIGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGIpIHsgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHVwbGU8dHlwZW5hbWUgQ09OVkVSU0lPTiA8Q09OU1RBPjo6dHlwZSwgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+ICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICh0dXBsZTx0eXBlbmFtZSBDT05WRVJTSU9OIDxDT05TVEE+Ojp0eXBlLCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4oYSwgYikpOyBcCi19Ci0KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX0JFMwotI2Vycm9yICJNdWx0aXBsZSBkZWZpbmVzIG9mIE5ETkJPT1NUX0xBTUJEQV9CRTMiCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQkUzKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEsIENPTlNUQiwgQ09OVkVSU0lPTikgICAgXAotdGVtcGxhdGU8Y2xhc3MgQXJnQSwgY2xhc3MgQXJnQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbGFtYmRhX2Z1bmN0b3I8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEFDVElPTiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZ0E+LCBsYW1iZGFfZnVuY3RvcjxBcmdCPiA+ICAgICAgICAgICAgICAgICAgICAgXAotICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotT1BFUl9OQU1FIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmdBPiYgYSwgY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnQj4mIGIpIHsgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgQUNUSU9OLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnQT4sIGxhbWJkYV9mdW5jdG9yPEFyZ0I+ID4gICAgICAgICAgICAgICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAodHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnQT4sIGxhbWJkYV9mdW5jdG9yPEFyZ0I+ID4oYSwgYikpOyAgICAgICAgICAgICAgXAotfQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9MQU1CREFfQkUKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfQkUiCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9MQU1CREFfQkUoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05TVF9DT05WRVJTSU9OKSBcCi1ORE5CT09TVF9MQU1CREFfQkUxKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEsIENPTlNUQiwgQ09OU1RfQ09OVkVSU0lPTikgICAgICAgIFwKLU5ETkJPT1NUX0xBTUJEQV9CRTIoT1BFUl9OQU1FLCBBQ1RJT04sIENPTlNUQSwgQ09OU1RCLCBDT05TVF9DT05WRVJTSU9OKSAgICAgICAgXAotTkROQk9PU1RfTEFNQkRBX0JFMyhPUEVSX05BTUUsIEFDVElPTiwgQ09OU1RBLCBDT05TVEIsIENPTlNUX0NPTlZFUlNJT04pCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX0VNUFRZKCkgCi0KLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvci0sIGFyaXRobWV0aWNfYWN0aW9uPG1pbnVzX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IqLCBhcml0aG1ldGljX2FjdGlvbjxtdWx0aXBseV9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yLywgYXJpdGhtZXRpY19hY3Rpb248ZGl2aWRlX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3IlLCBhcml0aG1ldGljX2FjdGlvbjxyZW1haW5kZXJfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcjw8LCBiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcj4+LCBiaXR3aXNlX2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3ImLCBiaXR3aXNlX2FjdGlvbjxhbmRfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcnwsIGJpdHdpc2VfYWN0aW9uPG9yX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3JeLCBiaXR3aXNlX2FjdGlvbjx4b3JfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciYmLCBsb2dpY2FsX2FjdGlvbjxhbmRfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcnx8LCBsb2dpY2FsX2FjdGlvbjxvcl9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPCwgcmVsYXRpb25hbF9hY3Rpb248bGVzc19hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPiwgcmVsYXRpb25hbF9hY3Rpb248Z3JlYXRlcl9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yPD0sIHJlbGF0aW9uYWxfYWN0aW9uPGxlc3NvcmVxdWFsX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3I+PSwgcmVsYXRpb25hbF9hY3Rpb248Z3JlYXRlcm9yZXF1YWxfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcj09LCByZWxhdGlvbmFsX2FjdGlvbjxlcXVhbF9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yIT0sIHJlbGF0aW9uYWxfYWN0aW9uPG5vdGVxdWFsX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi0KLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcis9LCBhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPHBsdXNfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yLT0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248bWludXNfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yKj0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248bXVsdGlwbHlfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFKG9wZXJhdG9yLz0sIGFyaXRobWV0aWNfYXNzaWdubWVudF9hY3Rpb248ZGl2aWRlX2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciU9LCBhcml0aG1ldGljX2Fzc2lnbm1lbnRfYWN0aW9uPHJlbWFpbmRlcl9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3I8PD0sIGJpdHdpc2VfYXNzaWdubWVudF9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvcj4+PSwgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sIEEsIGNvbnN0IEIsIHJlZmVyZW5jZV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRShvcGVyYXRvciY9LCBiaXR3aXNlX2Fzc2lnbm1lbnRfYWN0aW9uPGFuZF9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3J8PSwgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjxvcl9hY3Rpb24+LCBBLCBjb25zdCBCLCByZWZlcmVuY2VfYXJndW1lbnQpCi1ORE5CT09TVF9MQU1CREFfQkUob3BlcmF0b3JePSwgYml0d2lzZV9hc3NpZ25tZW50X2FjdGlvbjx4b3JfYWN0aW9uPiwgQSwgY29uc3QgQiwgcmVmZXJlbmNlX2FyZ3VtZW50KQotCi0KLS8vIEEgc3BlY2lhbCB0cmljayBmb3IgY29tbWEgb3BlcmF0b3IgZm9yIGNvcnJlY3QgcHJlcHJvY2Vzc2luZwotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfQ09NTUFfT1BFUkFUT1JfTkFNRSIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9DT01NQV9PUEVSQVRPUl9OQU1FIG9wZXJhdG9yLAotCi1ORE5CT09TVF9MQU1CREFfQkUxKE5ETkJPT1NUX0xBTUJEQV9DT01NQV9PUEVSQVRPUl9OQU1FLCBvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiwgY29uc3QgQSwgY29uc3QgQiwgY29uc3RfY29weV9hcmd1bWVudCkKLU5ETkJPT1NUX0xBTUJEQV9CRTIoTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUsIG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBjb25zdCBBLCBjb25zdCBCLCBjb25zdF9jb3B5X2FyZ3VtZW50KQotTkROQk9PU1RfTEFNQkRBX0JFMyhORE5CT09TVF9MQU1CREFfQ09NTUFfT1BFUkFUT1JfTkFNRSwgb3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIGNvbnN0IEEsIGNvbnN0IEIsIGNvbnN0X2NvcHlfYXJndW1lbnQpCi0KLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gc3BlY2lhbCBjYXNlcyBmb3Igb3N0cmVhbSYgPDwgQW55IGFuZCBpc3RyZWFtJiA+PiBBbnkgLS0tLS0tLS0tLS0tLS0tCi0vLyB0aGUgYWN0dWFsIHN0cmVhbSBjbGFzc2VzIG1heSB2YXJ5IGFuZCB0aHVzIGEgc3BlY2lhbGlzYXRpb24gZm9yLCAKLS8vIHNheSBvc3RyZWFtJiBkb2VzIG5vdCBtYXRjaCAodGhlIGdlbmVyYWwgY2FzZSBhYm92ZSBpcyBjaG9zZW4pLiAKLS8vIFRoZXJlZm9yZSB3ZSBzcGVjaWFsaXNlIGZvciBub24tY29uc3QgcmVmZXJlbmNlOgotLy8gaWYgdGhlIGxlZnQgYXJndW1lbnQgaXMgYSBzdHJlYW0sIHdlIHN0b3JlIHRoZSBzdHJlYW0gYXMgcmVmZXJlbmNlCi0vLyBpZiBpdCBpcyBzb21ldGhpbmcgZWxzZSwgd2Ugc3RvcmUgYSBjb25zdCBwbGFpbiBieSBkZWZhdWx0Ci0KLS8vIE5vdGUgdGhhdCB0aGUgb3ZlcmxvYWRpbmcgaXMgY29uc3QgdnMuIG5vbi1jb25zdCBmaXJzdCBhcmd1bWVudAotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVEX1NUUkVBTVMKLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBjb252ZXJ0X29zdHJlYW1fdG9fcmVmX290aGVyc190b19jX3BsYWluX2J5X2RlZmF1bHQgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxUKiwgc3RkOjpvc3RyZWFtKj46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICBUJiwKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgY29uc3RfY29weV9hcmd1bWVudCA8VD46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OlJFVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGNvbnZlcnRfaXN0cmVhbV90b19yZWZfb3RoZXJzX3RvX2NfcGxhaW5fYnlfZGVmYXVsdCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQqLCBzdGQ6OmlzdHJlYW0qPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFQmLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxUPjo6dHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6UkVUIHR5cGU7Ci19OwotI2Vsc2UKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGNvbnZlcnRfb3N0cmVhbV90b19yZWZfb3RoZXJzX3RvX2NfcGxhaW5fYnlfZGVmYXVsdCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRjwKLSAgICAgICAgICAgICAgICAgICAgICAgaXNfaW5zdGFuY2Vfb2ZfMjwKLSAgICAgICAgICAgICAgICAgICAgICAgICBULCBzdGQ6OmJhc2ljX29zdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFQmLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBjb25zdF9jb3B5X2FyZ3VtZW50IDxUPjo6dHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6UkVUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgY29udmVydF9pc3RyZWFtX3RvX3JlZl9vdGhlcnNfdG9fY19wbGFpbl9ieV9kZWZhdWx0IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OklGPAotICAgICAgICAgICAgICAgICAgICAgICBpc19pbnN0YW5jZV9vZl8yPAotICAgICAgICAgICAgICAgICAgICAgICAgIFQsIHN0ZDo6YmFzaWNfaXN0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgVCYsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGNvbnN0X2NvcHlfYXJndW1lbnQgPFQ+Ojp0eXBlCi0gICAgICAgICAgICAgICAgICAgICA+OjpSRVQgdHlwZTsKLX07Ci0jZW5kaWYKLQotfSAvLyBkZXRhaWwKLQotTkROQk9PU1RfTEFNQkRBX0JFMihvcGVyYXRvcjw8LCBiaXR3aXNlX2FjdGlvbjwgbGVmdHNoaWZ0X2FjdGlvbj4sIEEsIGNvbnN0IEIsIGRldGFpbDo6Y29udmVydF9vc3RyZWFtX3RvX3JlZl9vdGhlcnNfdG9fY19wbGFpbl9ieV9kZWZhdWx0KQotTkROQk9PU1RfTEFNQkRBX0JFMihvcGVyYXRvcj4+LCBiaXR3aXNlX2FjdGlvbjwgcmlnaHRzaGlmdF9hY3Rpb24+LCBBLCBjb25zdCBCLCBkZXRhaWw6OmNvbnZlcnRfaXN0cmVhbV90b19yZWZfb3RoZXJzX3RvX2NfcGxhaW5fYnlfZGVmYXVsdCkgICAgICAKLQotCi0vLyBzcGVjaWFsIGNhc2UgZm9yIGlvX21hbmlwdWxhdG9ycy4KLS8vIGZ1bmN0aW9uIHJlZmVyZW5jZXMgY2Fubm90IGJlIGdpdmVuIGFzIGFyZ3VtZW50cyB0byBsYW1iZGEgb3BlcmF0b3IKLS8vIGV4cHJlc3Npb25zIGluIGdlbmVyYWwuIFdpdGggPDwgYW5kID4+IHRoZSB1c2Ugb2YgbWFuaXB1bGF0b3JzIGlzCi0vLyBzbyBjb21tb24sIHRoYXQgc3BlY2lhbGl6YXRpb25zIGFyZSBwcm92aWRlZCB0byBtYWtlIHRoZW0gd29yay4KLQotdGVtcGxhdGU8Y2xhc3MgQXJnLCBjbGFzcyBSZXQsIGNsYXNzIE1hbmlwQXJnPgotaW5saW5lIGNvbnN0IAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgYml0d2lzZV9hY3Rpb248bGVmdHNoaWZ0X2FjdGlvbj4sCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4gCi0gID4gCi0+Ci1vcGVyYXRvcjw8KGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGEsIFJldCgmYikoTWFuaXBBcmcpKQotewotICByZXR1cm4gCi0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgICBiaXR3aXNlX2FjdGlvbjxsZWZ0c2hpZnRfYWN0aW9uPiwKLSAgICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4KLSAgICAgID4gCi0gICAgKCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPihhLCBiKSApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGNsYXNzIFJldCwgY2xhc3MgTWFuaXBBcmc+Ci1pbmxpbmUgY29uc3QgCi1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICBiaXR3aXNlX2FjdGlvbjxyaWdodHNoaWZ0X2FjdGlvbj4sCi0gICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4KLSAgPiAKLT4KLW9wZXJhdG9yPj4oY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSwgUmV0KCZiKShNYW5pcEFyZykpCi17Ci0gIHJldHVybiAKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICAgIGJpdHdpc2VfYWN0aW9uPHJpZ2h0c2hpZnRfYWN0aW9uPiwKLSAgICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgUmV0KCYpKE1hbmlwQXJnKT4KLSAgICAgID4gCi0gICAgKCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBSZXQoJikoTWFuaXBBcmcpPihhLCBiKSApOwotfQotCi0KLS8vICgrIGFuZCAtKSB0YWtlIHRoZWlyIGFyZ3VtZW50cyBhcyBjb25zdCByZWZlcmVuY2VzLiAKLS8vIFRoaXMgaGFzIGNvbnNxdWVuY2VzIHdpdGggcG9pbnRlciBhcnRpaG1ldGljCi0vLyBFLmcgaW50IGFbXTsgLi4uICphID0gMSB3b3JrcyBidXQgbm90ICooYSsxKSA9IDEuIAotLy8gdGhlIHJlc3VsdCBvZiBhKzEgd291bGQgYmUgY29uc3QKLS8vIFRvIG1ha2UgdGhlIGxhdHRlciB3b3JrIHRvbywgCi0vLyBub24tY29uc3QgYXJyYXlzIGFyZSB0YWtlbiBhcyBub24tY29uc3QgYW5kIHN0b3JlZCBhcyBub24tY29uc3QgYXMgd2VsbC4KLSNpZiBkZWZpbmVkICBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTEKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiAgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UxIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UxKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEIpICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIGludCBOLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBDT05TVEIoJilbTl0+ID4gICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU9QRVJfTkFNRSAoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSwgQ09OU1RCKCZiKVtOXSkgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiwgQ09OU1RCKCYpW05dPiA+ICBcCi0gICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+LCBDT05TVEIoJilbTl0+KGEsIGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0KLSNpZiBkZWZpbmVkICBORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiAgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyKE9QRVJfTkFNRSwgQUNUSU9OLCBDT05TVEEpICAgICAgICAgICBcCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgQSwgY2xhc3MgQXJnPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxDT05TVEEoJilbTl0sIGxhbWJkYV9mdW5jdG9yPEFyZz4gPiA+ICAgXAotPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU9QRVJfTkFNRSAoQ09OU1RBKCZhKVtOXSwgY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYikgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8Q09OU1RBKCYpW05dLCBsYW1iZGFfZnVuY3RvcjxBcmc+ID4gPiBcCi0gICAgKHR1cGxlPENPTlNUQSgmKVtOXSwgbGFtYmRhX2Z1bmN0b3I8QXJnPiA+KGEsIGIpKTsgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0KLU5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMShvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwgQikKLU5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMihvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPiwgQSkKLU5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMShvcGVyYXRvcissIGFyaXRobWV0aWNfYWN0aW9uPHBsdXNfYWN0aW9uPixjb25zdCBCKQotTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyKG9wZXJhdG9yKywgYXJpdGhtZXRpY19hY3Rpb248cGx1c19hY3Rpb24+LGNvbnN0IEEpCi0KLQotLy9ORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTEob3BlcmF0b3ItLCBhcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+KQotLy8gVGhpcyBpcyBub3QgbmVlZGVkLCBzaW5jZSB0aGUgcmVzdWx0IG9mIHB0ci1wdHIgaXMgYW4gcnZhbHVlIGFueXdheQotCi1ORE5CT09TVF9MQU1CREFfUFRSX0FSSVRITUVUSUNfRTIob3BlcmF0b3ItLCBhcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+LCBBKQotTkROQk9PU1RfTEFNQkRBX1BUUl9BUklUSE1FVElDX0UyKG9wZXJhdG9yLSwgYXJpdGhtZXRpY19hY3Rpb248bWludXNfYWN0aW9uPiwgY29uc3QgQSkKLQotCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0JFMQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9CRTIKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfQkUzCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0JFCi0jdW5kZWYgTkROQk9PU1RfTEFNQkRBX0NPTU1BX09QRVJBVE9SX05BTUUKLQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMQotI3VuZGVmIE5ETkJPT1NUX0xBTUJEQV9QVFJfQVJJVEhNRVRJQ19FMgotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdW5hcnkgb3BlcmF0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX1VFCi0jZXJyb3IgIk11bHRpcGxlIGRlZmluZXMgb2YgTkROQk9PU1RfTEFNQkRBX1VFIgotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1VFKE9QRVJfTkFNRSwgQUNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIEFyZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWxhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yX2Jhc2U8QUNUSU9OLCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gPiA+IFwKLU9QRVJfTkFNRSAoY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcmV0dXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+ID4gICAgICAgICAgICAgIFwKLSAgICAoIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhKSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0KLQotCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3IrLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxwbHVzX2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3ItLCB1bmFyeV9hcml0aG1ldGljX2FjdGlvbjxtaW51c19hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1VFKG9wZXJhdG9yfiwgYml0d2lzZV9hY3Rpb248bm90X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3IhLCBsb2dpY2FsX2FjdGlvbjxub3RfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvcisrLCBwcmVfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248aW5jcmVtZW50X2FjdGlvbj4pCi1ORE5CT09TVF9MQU1CREFfVUUob3BlcmF0b3ItLSwgcHJlX2luY3JlbWVudF9kZWNyZW1lbnRfYWN0aW9uPGRlY3JlbWVudF9hY3Rpb24+KQotTkROQk9PU1RfTEFNQkRBX1VFKG9wZXJhdG9yKiwgb3RoZXJfYWN0aW9uPGNvbnRlbnRzb2ZfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9VRShvcGVyYXRvciYsIG90aGVyX2FjdGlvbjxhZGRyZXNzb2ZfYWN0aW9uPikKLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVUUKLSNlcnJvciAiTXVsdGlwbGUgZGVmaW5lcyBvZiBORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VRSIKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VFKE9QRVJfTkFNRSwgQUNUSU9OKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBBcmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3Rvcl9iYXNlPEFDVElPTiwgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+ID4gPiBcCi1PUEVSX05BTUUgKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGEsIGludCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxBQ1RJT04sIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPiA+ICAgICAgICAgICAgICBcCi0gICAgKCB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4oYSkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19Ci0KLQotTkROQk9PU1RfTEFNQkRBX1BPU1RGSVhfVUUob3BlcmF0b3IrKywgcG9zdF9pbmNyZW1lbnRfZGVjcmVtZW50X2FjdGlvbjxpbmNyZW1lbnRfYWN0aW9uPikKLU5ETkJPT1NUX0xBTUJEQV9QT1NURklYX1VFKG9wZXJhdG9yLS0sIHBvc3RfaW5jcmVtZW50X2RlY3JlbWVudF9hY3Rpb248ZGVjcmVtZW50X2FjdGlvbj4pCi0KLSN1bmRlZiBORE5CT09TVF9MQU1CREFfVUUKLSN1bmRlZiBORE5CT09TVF9MQU1CREFfUE9TVEZJWF9VRQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL3JldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE0NWVjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi0vLyBCb29zdCBMYW1iZGEgTGlicmFyeSAgcmV0LmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHd3dy5ib29zdC5vcmcKLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xBTUJEQV9SRVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX0xBTUJEQV9SRVRfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLSAgLy8gVE9ETzoKLQotLy8gIEFkZCBzcGVjaWFsaXphdGlvbnMgZm9yIGZ1bmN0aW9uIHJlZmVyZW5jZXMgZm9yIHJldCwgcHJvdGVjdCBhbmQgdW5sYW1iZGEKLS8vICBlLmcgdm9pZCBmb28oKTsgdW5sYW1iZGEoZm9vKTsgZmFpbHMsIGFzIGl0IHdvdWxkIGFkZCBhIGNvbnN0IHF1YWxpZmllcgotICAvLyBmb3IgYSBmdW5jdGlvbiB0eXBlLiAKLSAgLy8gb24gdGhlIG90aGVyIGhhbmQgdW5sYW1iZGEoKmZvbykgZG9lcyB3b3JrCi0KLQotLy8gLS0gcmV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIHRoZSBleHBsaWNpdCByZXR1cm4gdHlwZSB0ZW1wbGF0ZSAKLQotICAvLyBUT0RPOiBJdCdkIGJlIG5pY2UgdG8gbWFrZSByZXQgYSBub3AgZm9yIG90aGVyIHRoYW4gbGFtYmRhIGZ1bmN0b3JzCi0gIC8vIGJ1dCBjYXVzZXMgYW4gYW1iaWd1aXl0eSB3aXRoIGdjYyAobm90IHdpdGggS0NDKSwgY2hlY2sgd2hhdCBpcyB0aGUKLSAgLy8gcmlnaHQgaW50ZXJwcmV0YXRpb24uCi0KLSAgLy8gIC8vIHJldCBmb3Igb3RoZXJzIHRoYW4gbGFtYmRhIGZ1bmN0b3JzIGhhcyBubyBlZmZlY3QKLSAgLy8gdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIFQ+Ci0gIC8vIGlubGluZSBjb25zdCBUJiByZXQoY29uc3QgVCYgdCkgeyByZXR1cm4gdDsgfQotCi0KLXRlbXBsYXRlPGNsYXNzIFJFVCwgY2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgZXhwbGljaXRfcmV0dXJuX3R5cGVfYWN0aW9uPFJFVD4sIAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotICA+IAotPgotcmV0KGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZz4mIGExKQotewotICByZXR1cm4gIAotICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgICBleHBsaWNpdF9yZXR1cm5fdHlwZV9hY3Rpb248UkVUPiwgCi0gICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4KLSAgICA+IAotICAgICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4oYTEpKTsKLX0KLQotLy8gcHJvdGVjdCAtLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLyBwcm90ZWN0aW5nIG90aGVycyB0aGFuIGxhbWJkYSBmdW5jdG9ycyBoYXMgbm8gZWZmZWN0Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBjb25zdCBUJiBwcm90ZWN0KGNvbnN0IFQmIHQpIHsgcmV0dXJuIHQ7IH0KLQotdGVtcGxhdGU8Y2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IAotbGFtYmRhX2Z1bmN0b3I8Ci0gIGxhbWJkYV9mdW5jdG9yX2Jhc2U8Ci0gICAgcHJvdGVjdF9hY3Rpb24sIAotICAgIHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotICA+IAotPgotcHJvdGVjdChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhMSkKLXsKLSAgcmV0dXJuIAotICAgICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTwKLSAgICAgICAgcHJvdGVjdF9hY3Rpb24sIAotICAgICAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmc+ID4KLSAgICAgID4gCi0gICAgKHR1cGxlPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhMSkpOwotfQotICAgCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIEhpZGVzIHRoZSBsYW1iZGEgZnVuY3Rvcm5lc3Mgb2YgYSBsYW1iZGEgZnVuY3Rvci4gCi0vLyBBZnRlciB0aGlzLCB0aGUgZnVuY3RvciBpcyBpbW11bmUgdG8gYXJndW1lbnQgc3Vic3RpdHV0aW9uLCBldGMuCi0vLyBUaGlzIGNhbiBiZSB1c2VkLCBlLmcuIHRvIG1ha2UgaXQgc2FmZSB0byBwYXNzIGxhbWJkYSBmdW5jdG9ycyBhcyAKLS8vIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMsIHdoaWNoIG1pZ2h0IHVzZSB0aGVtIGFzIHRhcmdldCBmdW5jdGlvbnMKLQotLy8gbm90ZSwgdW5sYW1iZGEgYW5kIHByb3RlY3QgYXJlIGRpZmZlcmVudCB0aGluZ3MuIFByb3RlY3QgaGlkZXMgdGhlIGxhbWJkYQotLy8gZnVuY3RvciBmb3Igb25lIGFwcGxpY2F0aW9uLCB1bmxhbWJkYSBmb3IgZ29vZC4KLQotdGVtcGxhdGUgPGNsYXNzIExhbWJkYUZ1bmN0b3I+Ci1jbGFzcyBub25fbGFtYmRhX2Z1bmN0b3IKLXsKLSAgTGFtYmRhRnVuY3RvciBsZjsKLXB1YmxpYzoKLSAgCi0gIC8vIFRoaXMgZnVuY3RvciBkZWZpbmVzIHRoZSByZXN1bHRfdHlwZSB0eXBlZGVmLgotICAvLyBUaGUgcmVzdWx0IHR5cGUgbXVzdCBiZSBkZWR1Y2libGUgd2l0aG91dCBrbm93aW5nIHRoZSBhcmd1bWVudHMKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgIExhbWJkYUZ1bmN0b3I6OmluaGVyaXRlZDo6IAotICAgICAgICB0ZW1wbGF0ZSBzaWc8dHlwZW5hbWUgU2lnQXJnczo6dGFpbF90eXBlPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIGV4cGxpY2l0IG5vbl9sYW1iZGFfZnVuY3Rvcihjb25zdCBMYW1iZGFGdW5jdG9yJiBhKSA6IGxmKGEpIHt9Ci0KLSAgdHlwZW5hbWUgTGFtYmRhRnVuY3Rvcjo6bnVsbGFyeV9yZXR1cm5fdHlwZSAgCi0gIG9wZXJhdG9yKCkoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIAotICAgICAgY2FsbDx0eXBlbmFtZSBMYW1iZGFGdW5jdG9yOjpudWxsYXJ5X3JldHVybl90eXBlPgotICAgICAgICAoY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJj4gPjo6dHlwZSAKLSAgb3BlcmF0b3IoKShBJiBhKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IG5vbl9sYW1iZGFfZnVuY3RvciwgQSY+ID46OnR5cGUgPihhLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJiwgQiY+ID46OnR5cGUgCi0gIG9wZXJhdG9yKCkoQSYgYSwgQiYgYikgY29uc3QgewotICAgIHJldHVybiBsZi50ZW1wbGF0ZSBjYWxsPHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBub25fbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJj4gPjo6dHlwZSA+KGEsIGIsIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsgCi0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCLCBjbGFzcyBDPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJiwgQiYsIEMmPiA+Ojp0eXBlIAotICBvcGVyYXRvcigpKEEmIGEsIEImIGIsIEMmIGMpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3Qgbm9uX2xhbWJkYV9mdW5jdG9yLCBBJiwgQiYsIEMmPiA+Ojp0eXBlPihhLCBiLCBjLCBjbnVsbF90eXBlKCkpOyAKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZz4KLWlubGluZSBjb25zdCBBcmcmIHVubGFtYmRhKGNvbnN0IEFyZyYgYSkgeyByZXR1cm4gYTsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotaW5saW5lIGNvbnN0IG5vbl9sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3RvcjxBcmc+ID4gCi11bmxhbWJkYShjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBhKQotewotICByZXR1cm4gbm9uX2xhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yPEFyZz4gPihhKTsKLX0KLQotICAvLyBEdWUgdG8gYSBsYW5ndWFnZSByZXN0cmljdGlvbiwgbGFtYmRhIGZ1bmN0b3JzIGNhbm5vdCBiZSBtYWRlIHRvCi0gIC8vIGFjY2VwdCBub24tY29uc3QgcnZhbHVlIGFyZ3VtZW50cy4gVXN1YWxseSBpdGVyYXRvcnMgZG8gbm90IHJldHVybiAKLSAgLy8gdGVtcG9yYXJpZXMsIGJ1dCBzb21ldGltZXMgdGhleSBkby4gVGhhdCdzIHdoeSBhIHdvcmthcm91bmQgaXMgcHJvdmlkZWQuCi0gIC8vIE5vdGUsIHRoYXQgdGhpcyBwb3RlbnRpYWxseSBicmVha3MgY29uc3QgY29ycmVjdG5lc3MsIHNvIGJlIGNhcmVmdWwhCi0KLS8vIGFueSBsYW1iZGEgZnVuY3RvciBjYW4gYmUgdHVybmVkIGludG8gYSBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IKLS8vIFRoZSBvcGVyYXRvcigpIHRha2VzIGFyZ3VtZW50cyBhcyBjb25zdHMgYW5kIHRoZW4gY2FzdHMgY29uc3RuZXNzCi0vLyBhd2F5LiBTbyB0aGlzIGJyZWFrcyBjb25zdCBjb3JyZWN0bmVzcyEhISBidXQgaXMgYSBuZWNlc3Nhcnkgd29ya2Fyb3VuZAotLy8gaW4gc29tZSBjYXNlcyBkdWUgdG8gbGFuZ3VhZ2UgbGltaXRhdGlvbnMuCi0vLyBOb3RlLCB0aGF0IHRoaXMgaXMgbm90IGEgbGFtYmRhX2Z1bmN0b3IgYW55bW9yZSwgc28gaXQgY2FuIG5vdCBiZSB1c2VkCi0vLyBhcyBhIHN1YiBsYW1iZGEgZXhwcmVzc2lvbi4KLQotdGVtcGxhdGUgPGNsYXNzIExhbWJkYUZ1bmN0b3I+Ci1zdHJ1Y3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yIHsKLSAgTGFtYmRhRnVuY3RvciBsZjsKLXB1YmxpYzoKLQotICBleHBsaWNpdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IoY29uc3QgTGFtYmRhRnVuY3RvciYgYSkgOiBsZihhKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBTaWdBcmdzPiBzdHJ1Y3Qgc2lnIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBMYW1iZGFGdW5jdG9yOjppbmhlcml0ZWQ6OnRlbXBsYXRlIAotICAgICAgICBzaWc8dHlwZW5hbWUgU2lnQXJnczo6dGFpbF90eXBlPjo6dHlwZSB0eXBlOwotICB9OwotCi0gIC8vIFRoZSBudWxsYXJ5IGNhc2UgaXMgbm90IG5lZWRlZCAobm8gYXJndW1lbnRzLCBubyBwYXJhbWV0ZXIgdHlwZSBwcm9ibGVtcykKLQotICB0ZW1wbGF0ZTxjbGFzcyBBPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yLCBBJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKGNvbnN0IEEmIGEpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yLCBBJj4gPjo6dHlwZSA+KGNvbnN0X2Nhc3Q8QSY+KGEpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJj4gPjo6dHlwZQotICBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsKLSAgICByZXR1cm4gbGYudGVtcGxhdGUgY2FsbDx0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfaW5jb3JyZWN0X2xhbWJkYV9mdW5jdG9yLCBBJiwgQiY+ID46OnR5cGUgPihjb25zdF9jYXN0PEEmPihhKSwgY29uc3RfY2FzdDxCJj4oYiksIGNudWxsX3R5cGUoKSwgY251bGxfdHlwZSgpKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEIsIGNsYXNzIEM+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3IsIEEmLCBCJiwgQyY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiLCBjb25zdCBDJiBjKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvciwgQSYsIEImLCBDJj4gPjo6dHlwZT4oY29uc3RfY2FzdDxBJj4oYSksIGNvbnN0X2Nhc3Q8QiY+KGIpLCBjb25zdF9jYXN0PEMmPihjKSwgY251bGxfdHlwZSgpKTsKLSAgfQotfTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBhbnkgbGFtYmRhIGZ1bmN0b3IgY2FuIGJlIHR1cm5lZCBpbnRvIGEgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yCi0vLyBUaGUgb3BlcmF0b3IoKSB0YWtlcyBhcmd1bWVudHMgYXMgY29uc3QuCi0vLyBUaGlzIGlzIHVzZWZ1bCBpZiBsYW1iZGEgZnVuY3RvcnMgYXJlIGNhbGxlZCB3aXRoIG5vbi1jb25zdCBydmFsdWVzLgotLy8gTm90ZSwgdGhhdCB0aGlzIGlzIG5vdCBhIGxhbWJkYV9mdW5jdG9yIGFueW1vcmUsIHNvIGl0IGNhbiBub3QgYmUgdXNlZAotLy8gYXMgYSBzdWIgbGFtYmRhIGV4cHJlc3Npb24uCi0KLXRlbXBsYXRlIDxjbGFzcyBMYW1iZGFGdW5jdG9yPgotc3RydWN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciB7Ci0gIExhbWJkYUZ1bmN0b3IgbGY7Ci1wdWJsaWM6Ci0KLSAgZXhwbGljaXQgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yKGNvbnN0IExhbWJkYUZ1bmN0b3ImIGEpIDogbGYoYSkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgU2lnQXJncz4gc3RydWN0IHNpZyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgTGFtYmRhRnVuY3Rvcjo6aW5oZXJpdGVkOjp0ZW1wbGF0ZSAKLSAgICAgICAgc2lnPHR5cGVuYW1lIFNpZ0FyZ3M6OnRhaWxfdHlwZT46OnR5cGUgdHlwZTsKLSAgfTsKLQotICAvLyBUaGUgbnVsbGFyeSBjYXNlIGlzIG5vdCBuZWVkZWQ6IG5vIGFyZ3VtZW50cywgbm8gY29uc3RuZXNzIHByb2JsZW1zLgotCi0gIHRlbXBsYXRlPGNsYXNzIEE+Ci0gIHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3IsIGNvbnN0IEEmPiA+Ojp0eXBlCi0gIG9wZXJhdG9yKCkoY29uc3QgQSYgYSkgY29uc3QgewotICAgIHJldHVybiBsZi50ZW1wbGF0ZSBjYWxsPHR5cGVuYW1lIHNpZzx0dXBsZTxjb25zdCBjb25zdF9wYXJhbWV0ZXJfbGFtYmRhX2Z1bmN0b3IsIGNvbnN0IEEmPiA+Ojp0eXBlID4oYSwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCksIGNudWxsX3R5cGUoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBBLCBjbGFzcyBCPgotICB0eXBlbmFtZSBzaWc8dHVwbGU8Y29uc3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yLCBjb25zdCBBJiwgY29uc3QgQiY+ID46OnR5cGUKLSAgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSYsIGNvbnN0IEImPiA+Ojp0eXBlID4oYSwgYiwgY251bGxfdHlwZSgpLCBjbnVsbF90eXBlKCkpOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQz4KLSAgdHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSYsIGNvbnN0IEImLCBjb25zdCBDJj4KLT46OnR5cGUKLSAgb3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiLCBjb25zdCBDJiBjKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxmLnRlbXBsYXRlIGNhbGw8dHlwZW5hbWUgc2lnPHR1cGxlPGNvbnN0IGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvciwgY29uc3QgQSYsIGNvbnN0IEImLCBjb25zdCBDJj4gPjo6dHlwZT4oYSwgYiwgYywgY251bGxfdHlwZSgpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEFyZz4KLWlubGluZSBjb25zdCBjb25zdF9pbmNvcnJlY3RfbGFtYmRhX2Z1bmN0b3I8bGFtYmRhX2Z1bmN0b3I8QXJnPiA+Ci1icmVha19jb25zdChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBsZikKLXsKLSAgcmV0dXJuIGNvbnN0X2luY29ycmVjdF9sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3RvcjxBcmc+ID4obGYpOwotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyBBcmc+Ci1pbmxpbmUgY29uc3QgY29uc3RfcGFyYW1ldGVyX2xhbWJkYV9mdW5jdG9yPGxhbWJkYV9mdW5jdG9yPEFyZz4gPgotY29uc3RfcGFyYW1ldGVycyhjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBsZikKLXsKLSAgcmV0dXJuIGNvbnN0X3BhcmFtZXRlcl9sYW1iZGFfZnVuY3RvcjxsYW1iZGFfZnVuY3RvcjxBcmc+ID4obGYpOwotfQotCi0vLyBtYWtlIHZvaWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBtYWtlX3ZvaWQoIHggKSB0dXJucyBhIGxhbWJkYSBmdW5jdG9yIHggd2l0aCBzb21lIHJldHVybiB0eXBlIHkgaW50bwotLy8gYW5vdGhlciBsYW1iZGEgZnVuY3Rvciwgd2hpY2ggaGFzIGEgdm9pZCByZXR1cm4gdHlwZQotLy8gd2hlbiBjYWxsZWQsIHRoZSBvcmlnaW5hbCByZXR1cm4gdHlwZSBpcyBkaXNjYXJkZWQKLQotLy8gd2UgdXNlIHRoaXMgYWN0aW9uLiBUaGUgYWN0aW9uIGNsYXNzIHdpbGwgYmUgY2FsbGVkLCB3aGljaCBtZWFucyB0aGF0Ci0vLyB0aGUgd3JhcHBlZCBsYW1iZGEgZnVuY3RvciBpcyBldmFsdWF0ZWQsIGJ1dCB3ZSBqdXN0IGRvbid0IGRvIGFueXRoaW5nCi0vLyB3aXRoIHRoZSByZXN1bHQuCi1zdHJ1Y3Qgdm9pZGlmaWVyX2FjdGlvbiB7Ci0gIHRlbXBsYXRlPGNsYXNzIFJldCwgY2xhc3MgQT4gc3RhdGljIHZvaWQgYXBwbHkoQSYpIHt9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBBcmdzPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfTjx2b2lkaWZpZXJfYWN0aW9uLCBBcmdzPiB7Ci0gIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgQXJnMT4KLWlubGluZSBjb25zdCAKLWxhbWJkYV9mdW5jdG9yPAotICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgIGFjdGlvbjwxLCB2b2lkaWZpZXJfYWN0aW9uPiwKLSAgICB0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiA+Ci0gID4gCi0+IAotbWFrZV92b2lkKGNvbnN0IGxhbWJkYV9mdW5jdG9yPEFyZzE+JiBhMSkgeyAKLXJldHVybiAKLSAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPAotICAgICAgYWN0aW9uPDEsIHZvaWRpZmllcl9hY3Rpb24+LAotICAgICAgdHVwbGU8bGFtYmRhX2Z1bmN0b3I8QXJnMT4gPgotICAgID4gCi0gICh0dXBsZTxsYW1iZGFfZnVuY3RvcjxBcmcxPiA+IChhMSkpOwotfQotCi0vLyBmb3Igbm9uLWxhbWJkYSBmdW5jdG9ycywgbWFrZV92b2lkIGRvZXMgbm90aGluZyAKLS8vICh0aGUgYXJndW1lbnQgZ2V0cyBldmFsdWF0ZWQgaW1tZWRpYXRlbHkpCi0KLXRlbXBsYXRlPGNsYXNzIEFyZzE+Ci1pbmxpbmUgY29uc3QgCi1sYW1iZGFfZnVuY3RvcjwKLSAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxkb19ub3RoaW5nX2FjdGlvbiwgbnVsbF90eXBlPiAKLT4gCi1tYWtlX3ZvaWQoY29uc3QgQXJnMSYpIHsgCi1yZXR1cm4gCi0gICAgbGFtYmRhX2Z1bmN0b3JfYmFzZTxkb19ub3RoaW5nX2FjdGlvbiwgbnVsbF90eXBlPigpOwotfQotCi0vLyBzdGRfZnVuY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyAgVGhlIFNUTCB1c2VzIHRoZSByZXN1bHRfdHlwZSB0eXBlZGVmIGFzIHRoZSBjb252ZW50aW9uIHRvIGxldCBiaW5kZXJzIGtub3cKLS8vICB0aGUgcmV0dXJuIHR5cGUgb2YgYSBmdW5jdGlvbiBvYmplY3QuIAotLy8gIExMIHVzZXMgdGhlIHNpZyB0ZW1wbGF0ZS4KLS8vICBUbyBsZXQgTEwga25vdyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgaGFzIHRoZSByZXN1bHRfdHlwZSB0eXBlZGVmIAotLy8gIGRlZmluZWQsIGl0IGNhbiBiZSB3cmFwcGVkIHdpdGggdGhlIHN0ZF9mdW5jdG9yIGZ1bmN0aW9uLgotCi0KLS8vIEp1c3QgaW5oZXJpdCBmb3JtIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgKHRoZSBzdGFuZGFyZCBmdW5jdG9yKSwgCi0vLyBhbmQgcHJvdmlkZSBhIHNpZyB0ZW1wbGF0ZS4gU28gd2UgaGF2ZSBhIGNsYXNzIHdoaWNoIGlzIHN0aWxsIHRoZQotLy8gc2FtZSBmdW5jdG9yICsgdGhlIHNpZyB0ZW1wbGF0ZS4KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCByZXN1bHRfdHlwZV90b19zaWcgOiBwdWJsaWMgVCB7Ci0gIHRlbXBsYXRlPGNsYXNzIEFyZ3M+IHN0cnVjdCBzaWcgeyB0eXBlZGVmIHR5cGVuYW1lIFQ6OnJlc3VsdF90eXBlIHR5cGU7IH07Ci0gIHJlc3VsdF90eXBlX3RvX3NpZyhjb25zdCBUJiB0KSA6IFQodCkge30KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEY+Ci1pbmxpbmUgcmVzdWx0X3R5cGVfdG9fc2lnPEY+IHN0ZF9mdW5jdG9yKGNvbnN0IEYmIGYpIHsgcmV0dXJuIGY7IH0KLQotCi19IC8vIG5hbWVzcGFjZSBsYW1iZGEgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvZGV0YWlsL3JldHVybl90eXBlX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0dXJuX3R5cGVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk1MGE2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvcmV0dXJuX3R5cGVfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBACi0vLyAgcmV0dXJuX3R5cGVfdHJhaXRzLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB3d3cuYm9vc3Qub3JnCi0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfUkVUVVJOX1RZUEVfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfUkVUVVJOX1RZUEVfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2hhc194eHguaHBwIgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gLy8gbmVlZGVkIGZvciB0aGUgcHRyZGlmZl90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90OwotCi0vLyBNdWNoIG9mIHRoZSB0eXBlIGRlZHVjdGlvbiBjb2RlIGZvciBzdGFuZGFyZCBhcml0aG1ldGljIHR5cGVzIAotLy8gZnJvbSBHYXJ5IFBvd2VsbAotCi0gIC8vIGRpZmZlcmVudCBhcml0aWVzOgotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQTE+IHN0cnVjdCByZXR1cm5fdHlwZV8xOyAvLyAxLWFyeSBhY3Rpb25zCi10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCByZXR1cm5fdHlwZV8yOyAvLyAyLWFyeQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQXJncz4gc3RydWN0IHJldHVybl90eXBlX047IC8vID4zLSBhcnkKLQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQTE+IHN0cnVjdCByZXR1cm5fdHlwZV8xX3Byb3Q7Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMSwgY2xhc3MgQTI+IHN0cnVjdCByZXR1cm5fdHlwZV8yX3Byb3Q7IC8vIDItYXJ5Ci10ZW1wbGF0ZSA8Y2xhc3MgQWN0LCBjbGFzcyBBMT4gc3RydWN0IHJldHVybl90eXBlX05fcHJvdDsgLy8gPjMtYXJ5Ci0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzPiBjbGFzcyByZXR1cm5fdHlwZV9kZWR1Y3Rpb25fZmFpbHVyZSB7fTsKLQotICAvLyBJbiBzb21lIGNhc2VzIHJldHVybiB0eXBlIGRlZHVjdGlvbiBzaG91bGQgZmFpbCAoYW4gaW52YWxpZCBsYW1iZGEgCi0gIC8vIGV4cHJlc3Npb24pLiBTb21ldGltZXMgdGhlIGxhbWJkYSBleHByZXNzaW9uIGNhbiBiZSBvaywgdGhlIHJldHVybiB0eXBlCi0gIC8vIGp1c3QgaXMgbm90IGRlZHVjaWJsZSAodXNlciBkZWZpbmVkIG9wZXJhdG9ycykuIFRoZW4gcmV0dXJuIHR5cGUgZGVkdWN0aW9uCi0gIC8vIHNob3VsZCBuZXZlciBiZSBlbnRlcmVkIGF0IGFsbCwgYW5kIHRoZSB1c2Ugb2YgcmV0PD4gZG9lcyB0aGlzLgotICAvLyBIb3dldmVyLCBmb3IgbnVsbGFyeSBsYW1iZGEgZnVuY3RvcnMsIHJldHVybiB0eXBlIGRlZHVjdGlvbiBpcyBhbHdheXMKLSAgLy8gZW50ZXJlZCwgYW5kIHRoZXJlIHNlZW1zIHRvIGJlIG5vIHdheSBhcm91bmQgdGhpcy4KLQotICAvLyAodGhlIHJldHVybiB0eXBlIGlzIHBhcnQgb2YgdGhlIHByb3RvdHlwZSBvZiB0aGUgbm9uLXRlbXBsYXRlCi0gIC8vIG9wZXJhdG9yKCkoKS4gVGhlIHByb3RvdHlwZSBpcyBpbnN0YW50aWF0ZWQsIGV2ZW4gdGhvdWdoIHRoZSBib2R5IAotICAvLyBpcyBub3QuKSAKLSAKLSAgLy8gU28sIGluIHRoZSBjYXNlIHRoZSByZXR1cm4gdHlwZSBkZWR1Y3Rpb24gc2hvdWxkIGZhaWwsIGl0IHNob3VsZCBub3QKLSAgLy8gZmFpbCBkaXJlY3RseSwgYnV0IHJhdGhlciByZXN1bHQgaW4gYSB2YWxpZCBidXQgd3JvbmcgcmV0dXJuIHR5cGUsCi0gIC8vIGNhdXNpbmcgYSBjb21waWxlIHRpbWUgZXJyb3Igb25seSBpZiB0aGUgZnVuY3Rpb24gaXMgcmVhbGx5IGNhbGxlZC4KLQotCi0KLX0gLy8gZW5kIGRldGFpbAotCi0KLQotLy8gcmV0dXJuX3R5cGVfWF9wcm90IGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFRoZXNlIGNsYXNzZXMgYXJlIHRoZSBmaXJzdCBsYXllciB0aGF0IGdldHMgaW5zdGFudGlhdGVkIGZyb20gdGhlIAotLy8gbGFtYmRhX2Z1bmN0b3JfYmFzZSBzaWcgdGVtcGxhdGVzLiBJdCB3aWxsIGNoZWNrIHdoZXRoZXIgCi0vLyB0aGUgYWN0aW9uIGlzIHByb3RlY3RhYmxlIGFuZCBvbmUgb2YgYXJndW1lbnRzIGlzICJwcm90ZWN0ZWQiIG9yIGl0cwotLy8gZXZhbHVhdGlvbiB3aWxsIG90aGVyd2lzZSByZXN1bHQgaW4gYW5vdGhlciBsYW1iZGEgZnVuY3Rvci4KLS8vIElmIHRoaXMgaXMgYSBjYXNlLCB0aGUgcmVzdWx0IHR5cGUgd2lsbCBiZSBhbm90aGVyIGxhbWJkYSBmdW5jdG9yLgotCi0vLyBUaGUgYXJndW1lbnRzIGFyZSBhbHdheXMgbm9uLXJlZmVyZW5jZSB0eXBlcywgZXhjZXB0IGZvciBjb21tYSBhY3Rpb24KLS8vIHdoZXJlIHRoZSByaWdodCBhcmd1bWVudCBjYW4gYmUgYSByZWZlcmVuY2UgdG9vLiBUaGlzIGlzIGJlY2F1c2UgaXQgCi0vLyBtYXR0ZXJzIChpbiB0aGUgYnVpbHRpbiBjYXNlKSB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBhbiBsdmFsdWUgb3IgCi0vLyBydmFsdWU6IGludCBpOyBpLCAxIC0+IHJ2YWx1ZTsgMSwgaSAtPiBsdmFsdWUKLQotdGVtcGxhdGUgPGNsYXNzIEFjdCwgY2xhc3MgQT4gc3RydWN0IHJldHVybl90eXBlXzFfcHJvdCB7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgZGV0YWlsOjpJRjwKLSAgLy8gICAgICBpc19wcm90ZWN0YWJsZTxBY3Q+Ojp2YWx1ZSAmJiBpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWUsCi0gICAgICBpY2VfYW5kPGlzX3Byb3RlY3RhYmxlPEFjdD46OnZhbHVlLCBpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgIGxhbWJkYV9mdW5jdG9yPAotICAgICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAKLSAgICAgICAgICBBY3QsIAotICAgICAgICAgIHR1cGxlPHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8QT46OnR5cGU+Ci0gICAgICAgID4KLSAgICAgID4sCi0gICAgICB0eXBlbmFtZSByZXR1cm5fdHlwZV8xPEFjdCwgQT46OnR5cGUKLSAgICA+OjpSRVQgdHlwZTsgIAotfTsKLQotICAvLyB0YWtlIGNhcmUgb2YgdGhlIHVuYXZvaWRhYmxlIGluc3RhbnRpYXRpb24gZm9yIG51bGxhcnkgY2FzZQotdGVtcGxhdGU8Y2xhc3MgQWN0PiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMV9wcm90PEFjdCwgbnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotIAotLy8gVW5hcnkgYWN0aW9ucyAocmVzdWx0IGZyb20gdW5hcnkgb3BlcmF0b3JzKQotLy8gZG8gbm90IGhhdmUgYSBkZWZhdWx0IHJldHVybiB0eXBlLgotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMSB7IAotICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgZGV0YWlsOjpyZXR1cm5fdHlwZV9kZWR1Y3Rpb25fZmFpbHVyZTxyZXR1cm5fdHlwZV8xPiB0eXBlOwotfTsKLQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgY2xhc3MgcHJvdGVjdF9jb252ZXJzaW9uIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgbm9uX3JlZl9UOwotICAgIHB1YmxpYzoKLQotICAvLyBhZGQgY29uc3QgdG8gcnZhbHVlcywgc28gdGhhdCBhbGwgcnZhbHVlcyBhcmUgc3RvcmVkIGFzIGNvbnN0IGluIAotICAvLyB0aGUgYXJncyB0dXBsZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpJRl90eXBlPAotLy8gICAgICBuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSAmJiAhbmRuYm9vc3Q6OmlzX2NvbnN0PG5vbl9yZWZfVD46OnZhbHVlLAotICAgICAgaWNlX2FuZDxuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgaWNlX25vdDxuZG5ib29zdDo6aXNfY29uc3Q8bm9uX3JlZl9UPjo6dmFsdWU+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgZGV0YWlsOjppZGVudGl0eV9tYXBwaW5nPFQ+LAotICAgICAgY29uc3RfY29weV9hcmd1bWVudDxub25fcmVmX1Q+IC8vIGhhbmRsZXMgZnVudGlvbiBhbmQgYXJyYXkgCi0gICAgPjo6dHlwZSB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAvLyB0eXBlcyBjb3JyZWN0bHkKLSAgfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBBY3QsIGNsYXNzIEEsIGNsYXNzIEI+IHN0cnVjdCByZXR1cm5fdHlwZV8yX3Byb3QgewotCi0vLyBleHBlcmltZW50YWwgZmVhdHVyZQotICAvLyBXZSBtYXkgaGF2ZSBhIGxhbWJkYSBmdW5jdG9yIGFzIGEgcmVzdWx0IHR5cGUgb2YgYSBzdWJleHByZXNzaW9uIAotICAvLyAoaWYgcHJvdGVjdCkgaGFzICBiZWVuIHVzZWQuCi0gIC8vIFRodXMsIGlmIG9uZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGVzIGlzIGEgbGFtYmRhIGZ1bmN0b3IsIHRoZSByZXN1bHQKLSAgLy8gaXMgYSBsYW1iZGEgZnVuY3RvciBhcyB3ZWxsLiAKLSAgLy8gV2UgbmVlZCB0byBtYWtlIGEgY29uc2VydmF0aXZlIGNob2lzZSBoZXJlLgotICAvLyBUaGUgcmVzdWx0aW5nIGxhbWJkYSBmdW5jdG9yIHN0b3JlcyBhbGwgY29uc3QgcmVmZXJlbmNlIGFyZ3VtZW50cyBhcwotICAvLyBjb25zdCBjb3BpZXMuIFJlZmVyZW5jZXMgdG8gbm9uLWNvbnN0IGFyZSBzdG9yZWQgYXMgc3VjaC4KLSAgLy8gU28gaWYgdGhlIHNvdXJjZSBvZiB0aGUgYXJndW1lbnQgaXMgYSBjb25zdCBvcGVuIGFyZ3VtZW50LCBhIGJvdW5kCi0gIC8vIGFyZ3VtZW50IHN0b3JlZCBhcyBhIGNvbnN0IHJlZmVyZW5jZSwgb3IgYSBmdW5jdGlvbiByZXR1cm5pbmcgYSAKLSAgLy8gY29uc3QgcmVmZXJlbmNlLCB0aGF0IGluZm9ybWF0aW9uIGlzIGxvc3QuIFRoZXJlIGlzIG5vIHdheSBvZiAKLSAgLy8gdGVsbGluZyBhcGFydCAncmVhbCBjb25zdCByZWZlcmVuY2VzJyBmcm9tIGp1c3QgJ0xMIGludGVybmFsCi0gIC8vIGNvbnN0IHJlZmVyZW5jZXMnIChvciBpdCB3b3VsZCBiZSByZWFsbHkgaGFyZCkKLQotICAvLyBUaGUgcmV0dXJuIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiBsYW1iZGFfZnVuY3Rvciwgd2hpY2ggaGFzIGEgY29udmVydGluZyAKLSAgLy8gY29weSBjb25zdHJ1Y3Rvci4gSXQgY2FuIGNvcHkgYW55IGxhbWJkYSBmdW5jdG9yLCB0aGF0IGhhcyB0aGUgc2FtZSAKLSAgLy8gYWN0aW9uIHR5cGUgYW5kIGNvZGUsIGFuZCBhIGNvcHkgY29tcGF0aWJsZSBhcmd1bWVudCB0dXBsZS4KLQotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8QT46OnR5cGUgbm9uX3JlZl9BOwotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEI+Ojp0eXBlIG5vbl9yZWZfQjsKLQotdHlwZWRlZiB0eXBlbmFtZSAKLSAgZGV0YWlsOjpJRjwKLS8vICAgIGlzX3Byb3RlY3RhYmxlPEFjdD46OnZhbHVlICYmCi0vLyAgICAgIChpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWUgfHwgaXNfbGFtYmRhX2Z1bmN0b3I8Qj46OnZhbHVlKSwKLSAgICBpY2VfYW5kPGlzX3Byb3RlY3RhYmxlPEFjdD46OnZhbHVlLAotICAgICAgICAgICAgaWNlX29yPGlzX2xhbWJkYV9mdW5jdG9yPEE+Ojp2YWx1ZSwgCi0gICAgICAgICAgICAgICAgICAgaXNfbGFtYmRhX2Z1bmN0b3I8Qj46OnZhbHVlPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICBsYW1iZGFfZnVuY3RvcjwKLSAgICAgIGxhbWJkYV9mdW5jdG9yX2Jhc2U8IAotICAgICAgICBBY3QsIAotICAgICAgICB0dXBsZTx0eXBlbmFtZSBkZXRhaWw6OnByb3RlY3RfY29udmVyc2lvbjxBPjo6dHlwZSwgCi0gICAgICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6cHJvdGVjdF9jb252ZXJzaW9uPEI+Ojp0eXBlPgotICAgICAgPgotICAgID4sCi0gICAgdHlwZW5hbWUgcmV0dXJuX3R5cGVfMjxBY3QsIG5vbl9yZWZfQSwgbm9uX3JlZl9CPjo6dHlwZQotICA+OjpSRVQgdHlwZTsKLX07Ci0KLSAgLy8gdGFrZSBjYXJlIG9mIHRoZSB1bmF2b2lkYWJsZSBpbnN0YW50aWF0aW9uIGZvciBudWxsYXJ5IGNhc2UKLXRlbXBsYXRlPGNsYXNzIEFjdD4gc3RydWN0IHJldHVybl90eXBlXzJfcHJvdDxBY3QsIG51bGxfdHlwZSwgbnVsbF90eXBlPiB7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHR5cGU7Ci19OwotICAvLyB0YWtlIGNhcmUgb2YgdGhlIHVuYXZvaWRhYmxlIGluc3RhbnRpYXRpb24gZm9yIG51bGxhcnkgY2FzZQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBPdGhlcj4gc3RydWN0IHJldHVybl90eXBlXzJfcHJvdDxBY3QsIE90aGVyLCBudWxsX3R5cGU+IHsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0gIC8vIHRha2UgY2FyZSBvZiB0aGUgdW5hdm9pZGFibGUgaW5zdGFudGlhdGlvbiBmb3IgbnVsbGFyeSBjYXNlCi10ZW1wbGF0ZTxjbGFzcyBBY3QsIGNsYXNzIE90aGVyPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfMl9wcm90PEFjdCwgbnVsbF90eXBlLCBPdGhlcj4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotICAvLyBjb21tYSBpcyBhIHNwZWNpYWwgY2FzZSwgYXMgdGhlIHVzZXIgZGVmaW5lZCBvcGVyYXRvciBjYW4gcmV0dXJuCi0gIC8vIGFuIGx2YWx1ZSAocmVmZXJlbmNlKSB0b28sIGhlbmNlIGl0IG11c3QgYmUgaGFuZGxlZCBhdCB0aGlzIGxldmVsLgotdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gCi1zdHJ1Y3QgcmV0dXJuX3R5cGVfMl9jb21tYQotewotICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPEE+Ojp0eXBlIG5vbl9yZWZfQTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxCPjo6dHlwZSBub25fcmVmX0I7Ci0KLXR5cGVkZWYgdHlwZW5hbWUgCi0gIGRldGFpbDo6SUY8Ci0vLyAgaXNfcHJvdGVjdGFibGU8b3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4gPjo6dmFsdWUgJiYgLy8gaXQgaXMgcHJvdGVjdGFibGUKLS8vICAoaXNfbGFtYmRhX2Z1bmN0b3I8QT46OnZhbHVlIHx8IGlzX2xhbWJkYV9mdW5jdG9yPEI+Ojp2YWx1ZSksCi0gICAgaWNlX2FuZDxpc19wcm90ZWN0YWJsZTxvdGhlcl9hY3Rpb248Y29tbWFfYWN0aW9uPiA+Ojp2YWx1ZSwgLy8gaXQgaXMgcHJvdGVjdGFibGUKLSAgICAgICAgICAgIGljZV9vcjxpc19sYW1iZGFfZnVuY3RvcjxBPjo6dmFsdWUsIAotICAgICAgICAgICAgICAgICAgIGlzX2xhbWJkYV9mdW5jdG9yPEI+Ojp2YWx1ZT46OnZhbHVlPjo6dmFsdWUsCi0gICAgbGFtYmRhX2Z1bmN0b3I8Ci0gICAgICBsYW1iZGFfZnVuY3Rvcl9iYXNlPCAKLSAgICAgICAgb3RoZXJfYWN0aW9uPGNvbW1hX2FjdGlvbj4sIAotICAgICAgICB0dXBsZTx0eXBlbmFtZSBkZXRhaWw6OnByb3RlY3RfY29udmVyc2lvbjxBPjo6dHlwZSwgCi0gICAgICAgICAgICAgIHR5cGVuYW1lIGRldGFpbDo6cHJvdGVjdF9jb252ZXJzaW9uPEI+Ojp0eXBlPgotICAgICAgPgotICAgID4sCi0gICAgdHlwZW5hbWUgCi0gICAgICByZXR1cm5fdHlwZV8yPG90aGVyX2FjdGlvbjxjb21tYV9hY3Rpb24+LCBub25fcmVmX0EsIG5vbl9yZWZfQj46OnR5cGUKLSAgPjo6UkVUIHR5cGUxOwotCi0gICAvLyBpZiBubyB1c2VyIGRlZmluZWQgcmV0dXJuX3R5cGVfMiAob3IgcGxhaW5fcmV0dXJuX3R5cGVfMikgc3BlY2lhbGl6YXRpb24KLSAgLy8gbWF0Y2hlcywgdGhlbiByZXR1cm4gdGhlIHJpZ2h0aGFuZCBhcmd1bWVudAotICB0eXBlZGVmIHR5cGVuYW1lIAotICAgIGRldGFpbDo6SUY8Ci0gICAgICBuZG5ib29zdDo6aXNfc2FtZTx0eXBlMSwgZGV0YWlsOjp1bnNwZWNpZmllZD46OnZhbHVlLCAKLSAgICAgIEIsCi0gICAgICB0eXBlMQotICAgID46OlJFVCB0eXBlOwotCi19OwotCi0KLSAgLy8gY3VycmVudGx5IHRoZXJlIGFyZSBubyBwcm90ZWN0YWJsZSBhY3Rpb25zIHdpdGggPiAyIGFyZ3MKLQotdGVtcGxhdGU8Y2xhc3MgQWN0LCBjbGFzcyBBcmdzPiBzdHJ1Y3QgcmV0dXJuX3R5cGVfTl9wcm90IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSByZXR1cm5fdHlwZV9OPEFjdCwgQXJncz46OnR5cGUgdHlwZTsKLX07Ci0KLSAgLy8gdGFrZSBjYXJlIG9mIHRoZSB1bmF2b2lkYWJsZSBpbnN0YW50aWF0aW9uIGZvciBudWxsYXJ5IGNhc2UKLXRlbXBsYXRlPGNsYXNzIEFjdD4gc3RydWN0IHJldHVybl90eXBlX05fcHJvdDxBY3QsIG51bGxfdHlwZT4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotLy8gaGFuZGxlIGRpZmZlcmVudCBraW5kIG9mIGFjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgLy8gdXNlIHRoZSByZXR1cm4gdHlwZSBnaXZlbiBpbiB0aGUgYmluZCBpbnZvY2F0aW9uIGFzIGJpbmQ8UmV0PiguLi4pCi10ZW1wbGF0ZTxpbnQgSSwgY2xhc3MgQXJncywgY2xhc3MgUmV0PiAKLXN0cnVjdCByZXR1cm5fdHlwZV9OPGZ1bmN0aW9uX2FjdGlvbjxJLCBSZXQ+LCBBcmdzPiB7IAotICB0eXBlZGVmIFJldCB0eXBlOwotfTsKLQotLy8gOjpyZXN1bHRfdHlwZSBzdXBwb3J0Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKHJlc3VsdF90eXBlKQotCi10ZW1wbGF0ZTxjbGFzcyBGPiBzdHJ1Y3QgZ2V0X3Jlc3VsdF90eXBlCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRjo6cmVzdWx0X3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEYsIGNsYXNzIEE+IHN0cnVjdCBnZXRfc2lnCi17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZnVuY3Rpb25fYWRhcHRvcjxGPjo6dGVtcGxhdGUgc2lnPEE+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAvLyBSZXQgaXMgZGV0YWlsOjp1bnNwZWNpZmllZCwgc28gdHJ5IHRvIGRlZHVjZSByZXR1cm4gdHlwZQotdGVtcGxhdGU8aW50IEksIGNsYXNzIEFyZ3M+IAotc3RydWN0IHJldHVybl90eXBlX048ZnVuY3Rpb25fYWN0aW9uPEksIGRldGFpbDo6dW5zcGVjaWZpZWQ+LCBBcmdzID4geyAKLQotICAvLyBpbiB0aGUgY2FzZSBvZiBmdW5jdGlvbiBhY3Rpb24sIHRoZSBmaXJzdCBlbGVtZW50IGluIEFyZ3MgaXMgCi0gIC8vIHNvbWUgdHlwZSBvZiBmdW5jdGlvbgotICB0eXBlZGVmIHR5cGVuYW1lIEFyZ3M6OmhlYWRfdHlwZSBGdW5jOwotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6cmVtb3ZlX3JlZmVyZW5jZV9hbmRfY3Y8RnVuYz46OnR5cGUgcGxhaW5fRnVuYzsKLQotcHVibGljOiAKLSAgLy8gcGFzcyB0aGUgZnVuY3Rpb24gdG8gZnVuY3Rpb25fYWRhcHRvciwgYW5kIGdldCB0aGUgcmV0dXJuIHR5cGUgZnJvbSAKLSAgLy8gdGhhdAotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6SUY8Ci0gICAgZGV0YWlsOjpoYXNfcmVzdWx0X3R5cGU8cGxhaW5fRnVuYz46OnZhbHVlLAotICAgIGRldGFpbDo6Z2V0X3Jlc3VsdF90eXBlPHBsYWluX0Z1bmM+LAotICAgIGRldGFpbDo6Z2V0X3NpZzxwbGFpbl9GdW5jLCBBcmdzPgotICA+OjpSRVQ6OnR5cGUgdHlwZTsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgbGFtYmRhCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9zZWxlY3RfZnVuY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGFtYmRhL2RldGFpbC9zZWxlY3RfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1Y2UwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9kZXRhaWwvc2VsZWN0X2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vLyAtLSBzZWxlY3RfZnVuY3Rpb25zLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnCi0KLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfU0VMRUNUX0ZVTkNUSU9OU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTEFNQkRBX1NFTEVDVF9GVU5DVElPTlNfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotbmFtZXNwYWNlIGxhbWJkYSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotCi0vLyBzZWxlY3QgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlPGNsYXNzIEFueSwgQ0FMTF9URU1QTEFURV9BUkdTPgotaW5saW5lIEFueSYgc2VsZWN0KEFueSYgYW55LCBDQUxMX0ZPUk1BTF9BUkdTKSB7IENBTExfVVNFX0FSR1M7IHJldHVybiBhbnk7IH0KLQotCi10ZW1wbGF0ZTxjbGFzcyBBcmcsIENBTExfVEVNUExBVEVfQVJHUz4KLWlubGluZSB0eXBlbmFtZSBBcmc6OnRlbXBsYXRlIHNpZzx0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZQotc2VsZWN0ICggY29uc3QgbGFtYmRhX2Z1bmN0b3I8QXJnPiYgb3AsIENBTExfRk9STUFMX0FSR1MgKSB7IAotICByZXR1cm4gb3AudGVtcGxhdGUgY2FsbDwKLSAgICB0eXBlbmFtZSBBcmc6OnRlbXBsYXRlIHNpZzx0dXBsZTxDQUxMX1JFRkVSRU5DRV9UWVBFUz4gPjo6dHlwZQotICA+KENBTExfQUNUVUFMX0FSR1MpOyAKLX0KLXRlbXBsYXRlPGNsYXNzIEFyZywgQ0FMTF9URU1QTEFURV9BUkdTPgotaW5saW5lIHR5cGVuYW1lIEFyZzo6dGVtcGxhdGUgc2lnPHR1cGxlPENBTExfUkVGRVJFTkNFX1RZUEVTPiA+Ojp0eXBlCi1zZWxlY3QgKCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBvcCwgQ0FMTF9GT1JNQUxfQVJHUykgeyAKLSAgcmV0dXJuIG9wLnRlbXBsYXRlIGNhbGw8Ci0gICAgdHlwZW5hbWUgQXJnOjp0ZW1wbGF0ZSBzaWc8dHVwbGU8Q0FMTF9SRUZFUkVOQ0VfVFlQRVM+ID46OnR5cGUKLSAgPihDQUxMX0FDVFVBTF9BUkdTKTsgCi19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gc2VsZWN0IGZ1bmN0aW9ucyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgZXhwbGljaXRseSBnaXZlbgotLy8gTm90ZTogb24gbWFueSBmdW5jdGlvbnMsIHRoaXMgcmV0dXJuIHR5cGUgaXMganVzdCBkaXNjYXJkZWQuCi0vLyBUaGUgc2VsZWN0IGZ1bmN0aW9ucyBhcmUgaW5zaWRlIGEgY2xhc3MgdGVtcGxhdGUsIGFuZCB0aGUgcmV0dXJuIHR5cGUKLS8vIGlzIGEgY2xhc3MgdGVtcGxhdGUgYXJndW1lbnQuCi0vLyBUaGUgZmlyc3QgaW1wbGVtZW50YXRpb24gdXNlZCBmdW5jdGlvbiB0ZW1wbGF0ZXMgd2l0aCBhbiBleHBsaWNpdGx5IAotLy8gc3BlY2lmaWVkIHRlbXBsYXRlIHBhcmFtZXRlci4KLS8vIEhvd2V2ZXIsIHRoaXMgcmVzdWx0ZWQgaW4gYW1iaWd1b3VzIGNhbGxzIChhdCBsZWFzdCB3aXRoIGdjYyAyLjk1LjIgCi0vLyBhbmQgZWRnIDIuNDQpLiBOb3Qgc3VyZSB3aGV0aGVyIHRoZSBjb21waWxlcnMgd2VyZSByaWdodCBvciB3cm9uZy4gCi0gIAotdGVtcGxhdGU8Y2xhc3MgUkVUPiBzdHJ1Y3Qgcl9zZWxlY3QgewotCi0vLyBBbnkgPT0gUkVUCi0gIHRlbXBsYXRlPGNsYXNzIEFueSwgQ0FMTF9URU1QTEFURV9BUkdTPgotICBzdGF0aWMgCi0gIGlubGluZSBSRVQgZ28gKEFueSYgYW55LCBDQUxMX0ZPUk1BTF9BUkdTKSB7IENBTExfVVNFX0FSR1M7IHJldHVybiBhbnk7IH0KLQotCi0gIHRlbXBsYXRlPGNsYXNzIEFyZywgQ0FMTF9URU1QTEFURV9BUkdTPiAKLSAgc3RhdGljIAotICBpbmxpbmUgUkVUIGdvIChjb25zdCBsYW1iZGFfZnVuY3RvcjxBcmc+JiBvcCwgQ0FMTF9GT1JNQUxfQVJHUyApIHsKLSAgICByZXR1cm4gb3AudGVtcGxhdGUgY2FsbDxSRVQ+KENBTExfQUNUVUFMX0FSR1MpOyAKLSAgfQotICB0ZW1wbGF0ZTxjbGFzcyBBcmcsIENBTExfVEVNUExBVEVfQVJHUz4gCi0gIHN0YXRpYyAKLSAgaW5saW5lIFJFVCBnbyAobGFtYmRhX2Z1bmN0b3I8QXJnPiYgb3AsIENBTExfRk9STUFMX0FSR1MgKSB7IAotICAgIHJldHVybiBvcC50ZW1wbGF0ZSBjYWxsPFJFVD4oQ0FMTF9BQ1RVQUxfQVJHUyk7IAotICB9Ci19OwotICAgCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIGxhbWJkYQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9sYW1iZGEvbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQzNDY1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xhbWJkYS9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gLS0gbGFtYmRhLmhwcCAtLSBCb29zdCBMYW1iZGEgTGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vbGFtYmRhLmNzLnV0dS5maSAKLQotI2lmbmRlZiBORE5CT09TVF9MQU1CREFfTEFNQkRBX0hQUAotI2RlZmluZSBORE5CT09TVF9MQU1CREFfTEFNQkRBX0hQUAotCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvY29yZS5ocHAiCi0KLSNpZmRlZiBORE5CT09TVF9OT19GREVDTF9URU1QTEFURVNfQVNfVEVNUExBVEVfVEVNUExBVEVfUEFSQU1TCi0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNsdWRlIDxvc3RyZWFtPgotI2VuZGlmCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9yX2FjdGlvbnMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xhbWJkYS9kZXRhaWwvb3BlcmF0b3JfbGFtYmRhX2Z1bmNfYmFzZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGFtYmRhL2RldGFpbC9vcGVyYXRvcl9yZXR1cm5fdHlwZV90cmFpdHMuaHBwIgotCi0KLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL29wZXJhdG9ycy5ocHAiCi0KLSNpZm5kZWYgTkROQk9PU1RfTEFNQkRBX0ZBSUxTX0lOX1RFTVBMQVRFX0tFWVdPUkRfQUZURVJfU0NPUEVfT1BFUgotLy8gc29ycnksIG1lbWJlciBwdHIgZG9lcyBub3Qgd29yayB3aXRoIGdjYzIuOTUKLSNpbmNsdWRlICJuZG5ib29zdC9sYW1iZGEvZGV0YWlsL21lbWJlcl9wdHIuaHBwIgotI2VuZGlmCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L2xleGljYWxfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L2xleGljYWxfY2FzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOGExZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcyNSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9MRVhJQ0FMX0NBU1RfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vIEJvb3N0IGxleGljYWxfY2FzdC5ocHAgaGVhZGVyICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb252ZXJzaW9uIGZvciBkb2N1bWVudGF0aW9uLgotLy8gU2VlIGVuZCBvZiB0aGlzIGhlYWRlciBmb3IgcmlnaHRzIGFuZCBwZXJtaXNzaW9ucy4KLS8vCi0vLyB3aGF0OiAgbGV4aWNhbF9jYXN0IGN1c3RvbSBrZXl3b3JkIGNhc3QKLS8vIHdobzogICBjb250cmlidXRlZCBieSBLZXZsaW4gSGVubmV5LAotLy8gICAgICAgIGVuaGFuY2VkIHdpdGggY29udHJpYnV0aW9ucyBmcm9tIFRlcmplIFNsZXR0ZWJvLAotLy8gICAgICAgIHdpdGggYWRkaXRpb25hbCBmaXhlcyBhbmQgc3VnZ2VzdGlvbnMgZnJvbSBHZW5uYXJvIFByb3RhLAotLy8gICAgICAgIEJlbWFuIERhd2VzLCBEYXZlIEFicmFoYW1zLCBEYXJ5bGUgV2Fsa2VyLCBQZXRlciBEaW1vdiwKLS8vICAgICAgICBBbGV4YW5kZXIgTmFzb25vdiwgQW50b255IFBvbHVraGluLCBKdXN0aW4gVmlpcmV0LCBNaWNoYWVsIEhvZm1hbm4sCi0vLyAgICAgICAgQ2hlbmcgWWFuZywgTWF0dGhldyBCcmFkYnVyeSwgRGF2aWQgVy4gQmlyZHNhbGwsIFBhdmVsIEtvcnpoIGFuZCBvdGhlciBCb29zdGVycwotLy8gd2hlbjogIE5vdmVtYmVyIDIwMDAsIE1hcmNoIDIwMDMsIEp1bmUgMjAwNSwgSnVuZSAyMDA2LCBNYXJjaCAyMDExIC0gMjAxMwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkgfHwgZGVmaW5lZChORE5CT09TVF9OT19TVERfV1NUUklORykKLSNkZWZpbmUgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotI2VuZGlmCi0KLSNpbmNsdWRlIDxjbGltaXRzPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPHR5cGVpbmZvPgotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9sY2FzdF9wcmVjaXNpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgICBpbmNsdWRlIDxsb2NhbGU+Ci0jZWxzZQotIyAgIGlmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgIC8vIEdldHRpbmcgZXJyb3IgYXQgdGhpcyBwb2ludCBtZWFucywgdGhhdCB5b3VyIFNUTCBsaWJyYXJ5IGlzIG9sZC9sYW1lL21pc2NvbmZpZ3VyZWQuCi0gICAgICAgIC8vIElmIG5vdGhpbmcgY2FuIGJlIGRvbmUgd2l0aCBTVEwgbGlicmFyeSwgZGVmaW5lIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUsCi0gICAgICAgIC8vIGJ1dCBiZXdhcmU6IGxleGljYWxfY2FzdCB3aWxsIHVuZGVyc3RhbmQgb25seSAnQycgbG9jYWxlIGRlbGltZXRlcnMgYW5kIHRob3VzYW5kcwotICAgICAgICAvLyBzZXBhcmF0b3JzLgotIyAgICAgICBlcnJvciAiVW5hYmxlIHRvIHVzZSA8bG9jYWxlPiBoZWFkZXIuIERlZmluZSBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFIHRvIGZvcmNlICIKLSMgICAgICAgZXJyb3IgIm5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgdG8gdXNlIG9ubHkgJ0MnIGxvY2FsZSBkdXJpbmcgY29udmVyc2lvbnMuIgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotI2luY2x1ZGUgPHN0cnN0cmVhbT4KLSNlbHNlCi0jaW5jbHVkZSA8c3N0cmVhbT4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVFlQRUlECi0jZGVmaW5lIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFMsIFQpIHRocm93X2V4Y2VwdGlvbihiYWRfbGV4aWNhbF9jYXN0KCkpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9MQ0FTVF9USFJPV19CQURfQ0FTVChTb3VyY2UsIFRhcmdldCkgXAotICAgIHRocm93X2V4Y2VwdGlvbihiYWRfbGV4aWNhbF9jYXN0KHR5cGVpZChTb3VyY2UpLCB0eXBlaWQoVGFyZ2V0KSkpCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgpICYmICFkZWZpbmVkKF9fR05VQ19fKSkgfHwgR0NDX1ZFUlNJT04gPiA0MDcwMAotI2RlZmluZSBORE5CT09TVF9MQ0FTVF9IQVNfSU5UMTI4Ci0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICAvLyBleGNlcHRpb24gdXNlZCB0byBpbmRpY2F0ZSBydW50aW1lIGxleGljYWxfY2FzdCBmYWlsdXJlCi0gICAgY2xhc3MgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgYmFkX2xleGljYWxfY2FzdCA6Ci0gICAgLy8gd29ya2Fyb3VuZCBNU1ZDIGJ1ZyB3aXRoIHN0ZDo6YmFkX2Nhc3Qgd2hlbiBfSEFTX0VYQ0VQVElPTlMgPT0gMCAKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoX0hBU19FWENFUFRJT05TKSAmJiAhX0hBU19FWENFUFRJT05TIAotICAgICAgICBwdWJsaWMgc3RkOjpleGNlcHRpb24gCi0jZWxzZSAKLSAgICAgICAgcHVibGljIHN0ZDo6YmFkX2Nhc3QgCi0jZW5kaWYgCi0KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NTYwICkKLSAgICAgICAgLy8gdW5kZXIgYmNjMzIgNS41LjEgYmFkX2Nhc3QgZG9lc24ndCBkZXJpdmUgZnJvbSBleGNlcHRpb24KLSAgICAgICAgLCBwdWJsaWMgc3RkOjpleGNlcHRpb24KLSNlbmRpZgotCi0gICAgewotICAgIHB1YmxpYzoKLSAgICAgICAgYmFkX2xleGljYWxfY2FzdCgpIE5ETkJPT1NUX05PRVhDRVBUIDoKLSNpZm5kZWYgTkROQk9PU1RfTk9fVFlQRUlECi0gICAgICAgICAgc291cmNlKCZ0eXBlaWQodm9pZCkpLCB0YXJnZXQoJnR5cGVpZCh2b2lkKSkKLSNlbHNlCi0gICAgICAgICAgc291cmNlKDApLCB0YXJnZXQoMCkgLy8gdGhpcyBicmVha3MgZ2V0dGVycwotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJhZF9sZXhpY2FsX2Nhc3QoCi0gICAgICAgICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAmc291cmNlX3R5cGVfYXJnLAotICAgICAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJnRhcmdldF90eXBlX2FyZykgTkROQk9PU1RfTk9FWENFUFQgOgotICAgICAgICAgICAgc291cmNlKCZzb3VyY2VfdHlwZV9hcmcpLCB0YXJnZXQoJnRhcmdldF90eXBlX2FyZykKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJnNvdXJjZV90eXBlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICpzb3VyY2U7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJnRhcmdldF90eXBlKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICp0YXJnZXQ7Ci0gICAgICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotICAgICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKndoYXQoKSBjb25zdCBub2V4Y2VwdAotI2Vsc2UKLSAgICAgICAgdmlydHVhbCBjb25zdCBjaGFyICp3aGF0KCkgY29uc3QgdGhyb3coKQotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAiYmFkIGxleGljYWwgY2FzdDogIgotICAgICAgICAgICAgICAgICAgICJzb3VyY2UgdHlwZSB2YWx1ZSBjb3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgdGFyZ2V0IjsKLSAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0gICAgICAgIHZpcnR1YWwgfmJhZF9sZXhpY2FsX2Nhc3QoKSBORE5CT09TVF9OT0VYQ0VQVAotI2Vsc2UKLSAgICAgICAgdmlydHVhbCB+YmFkX2xleGljYWxfY2FzdCgpIHRocm93KCkKLSNlbmRpZgotICAgICAgICB7fQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICpzb3VyY2U7Ci0gICAgICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICp0YXJnZXQ7Ci0gICAgfTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gd2lkZXN0X2NoYXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXRDaGFyLCB0eXBlbmFtZSBTb3VyY2VDaGFyPgotICAgICAgICBzdHJ1Y3Qgd2lkZXN0X2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgKHNpemVvZihUYXJnZXRDaGFyKSA+IHNpemVvZihTb3VyY2VDaGFyKSkKLSAgICAgICAgICAgICAgICAsIFRhcmdldENoYXIKLSAgICAgICAgICAgICAgICAsIFNvdXJjZUNoYXIgPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgIH0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoX19QR0lDX18pCi0KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxpc3RyZWFtPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotI2luY2x1ZGUgPGFycmF5PgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZnBjbGFzc2lmeS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19DV0NIQVIKLSMgICBpbmNsdWRlIDxjd2NoYXI+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gaXNfY2hhcl9vcl93Y2hhcjwuLi4+Ci0gICAgewotICAgICAgICAvLyByZXR1cm5zIHRydWUsIGlmIFQgaXMgb25lIG9mIHRoZSBjaGFyYWN0ZXIgdHlwZXMKLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IGlzX2NoYXJfb3Jfd2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIGNoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIHdjaGFyX3QgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0NIQVIxNl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgY2hhcjE2X3QgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgY2hhcjMyX3QgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTwgVCwgdW5zaWduZWQgY2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8IFQsIHNpZ25lZCBjaGFyID46OnZhbHVlCi0gICAgICAgICAgICA+IHJlc3VsdF90eXBlOwotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAocmVzdWx0X3R5cGU6OnZhbHVlKSApOwotICAgICAgICB9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8Q2hhcj4KLSAgICB7Ci0gICAgICAgIC8vIENvbnZlcnRzIHNpZ25lZC91bnNpZ25lZCBjaGFyIHRvIGNoYXIKLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyID4KLSAgICAgICAgc3RydWN0IG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyIAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIENoYXIgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3Qgbm9ybWFsaXplX3NpbmdsZV9ieXRlX2NoYXI8IHNpZ25lZCBjaGFyID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPD4KLSAgICAgICAgc3RydWN0IG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPCB1bnNpZ25lZCBjaGFyID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8VD4KLSAgICB7Ci0gICAgICAgIC8vIEhlbHBlciB0eXBlLCBtZWFuaW5nIHRoYXQgc3RyYW0gY2hhcmFjdGVyIGZvciBUIG11c3QgYmUgZGVkdWNlZCAKLSAgICAgICAgLy8gYXQgU3RhZ2UgMiAoU2VlIGRlZHVjZV9zb3VyY2VfY2hhcjxUPiBhbmQgZGVkdWNlX3RhcmdldF9jaGFyPFQ+KQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPiBzdHJ1Y3QgZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyIHt9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gc3RyZWFtX2NoYXJfY29tbW9uPFQ+Ci0gICAgewotICAgICAgICAvLyBTZWxlY3RvcnMgdG8gY2hvb3NlIHN0cmVhbSBjaGFyYWN0ZXIgdHlwZSAoY29tbW9uIGZvciBTb3VyY2UgYW5kIFRhcmdldCkKLSAgICAgICAgLy8gUmV0dXJucyBvbmUgb2YgY2hhciwgd2NoYXJfdCwgY2hhcjE2X3QsIGNoYXIzMl90IG9yIGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjxUPiB0eXBlcwotICAgICAgICAvLyBFeGVjdXRlZCBvbiBTdGFnZSAxIChTZWUgZGVkdWNlX3NvdXJjZV9jaGFyPFQ+IGFuZCBkZWR1Y2VfdGFyZ2V0X2NoYXI8VD4pCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgVHlwZSA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb246IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgVHlwZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIFR5cGUsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IFR5cGUgPgotICAgICAgICA+IHt9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IENoYXIqID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IENoYXIqID4KLSAgICAgICAgPiB7fTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIgPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBjb25zdCBDaGFyKiA+OiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8IENoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICBDaGFyLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPCBjb25zdCBDaGFyKiA+Ci0gICAgICAgID4ge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgbmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPCBDaGFyKiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTwgQ2hhciogPiA+Ci0gICAgICAgID4ge307Ci0gICAgCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IG5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTwgY29uc3QgQ2hhciogPiA+OiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8IENoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICBDaGFyLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPCBuZG5ib29zdDo6aXRlcmF0b3JfcmFuZ2U8IGNvbnN0IENoYXIqID4gPgotICAgICAgICA+IHt9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYyA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4gPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIENoYXIgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MgPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MgPiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgQ2hhciB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciwgc3RkOjpzaXplX3QgTiA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IG5kbmJvb3N0OjphcnJheTwgQ2hhciwgTiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IG5kbmJvb3N0OjphcnJheTwgQ2hhciwgTiA+ID4KLSAgICAgICAgPiB7fTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIsIHN0ZDo6c2l6ZV90IE4gPgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6YXJyYXk8IGNvbnN0IENoYXIsIE4gPiA+OiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8IENoYXIgPjo6dmFsdWUsCi0gICAgICAgICAgICBDaGFyLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZGVkdWNlX2NoYXJhY3Rlcl90eXBlX2xhdGVyPCBuZG5ib29zdDo6YXJyYXk8IGNvbnN0IENoYXIsIE4gPiA+Ci0gICAgICAgID4ge307Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0gICAgICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgQ2hhciwgc3RkOjpzaXplX3QgTiA+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcl9jb21tb248IHN0ZDo6YXJyYXk8Q2hhciwgTiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IHN0ZDo6YXJyYXk8IENoYXIsIE4gPiA+Ci0gICAgICAgID4ge307Ci0KLSAgICAgICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyLCBzdGQ6OnNpemVfdCBOID4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgc3RkOjphcnJheTwgY29uc3QgQ2hhciwgTiA+ID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY2hhcl9vcl93Y2hhcjwgQ2hhciA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIENoYXIsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IHN0ZDo6YXJyYXk8IGNvbnN0IENoYXIsIE4gPiA+Ci0gICAgICAgID4ge307Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHN0cmVhbV9jaGFyX2NvbW1vbjwgbmRuYm9vc3Q6OmludDEyOF90eXBlID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZGVudGl0eTwgY2hhciA+IHt9OwotICAgICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCBuZG5ib29zdDo6dWludDEyOF90eXBlID46IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppZGVudGl0eTwgY2hhciA+IHt9OwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXJfY29tbW9uPCB3Y2hhcl90ID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgICAgIH07Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsPFQ+Ci0gICAgewotICAgICAgICAvLyBJZiB0eXBlIFQgaXMgYGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcmAgdHlwZSwgdGhlbiB0cmllcyB0byBkZWR1Y2UKLSAgICAgICAgLy8gY2hhcmFjdGVyIHR5cGUgdXNpbmcgbmRuYm9vc3Q6Omhhc19sZWZ0X3NoaWZ0PFQ+IG1ldGFmdW5jdGlvbi4KLSAgICAgICAgLy8gT3RoZXJ3aXNlIHN1cHBsaWVkIHR5cGUgVCBpcyBhIGNoYXJhY3RlciB0eXBlLCB0aGF0IG11c3QgYmUgbm9ybWFsaXplZAotICAgICAgICAvLyB1c2luZyBub3JtYWxpemVfc2luZ2xlX2J5dGVfY2hhcjxDaGFyPi4KLSAgICAgICAgLy8gRXhlY3V0ZWQgYXQgU3RhZ2UgMiAgKFNlZSBkZWR1Y2Vfc291cmNlX2NoYXI8VD4gYW5kIGRlZHVjZV90YXJnZXRfY2hhcjxUPikKLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyID4gCi0gICAgICAgIHN0cnVjdCBkZWR1Y2Vfc291cmNlX2NoYXJfaW1wbAotICAgICAgICB7IAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Om5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPCBDaGFyID46OnR5cGUgdHlwZTsgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPiAKLSAgICAgICAgc3RydWN0IGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsPCBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8IFQgPiA+IAotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpoYXNfbGVmdF9zaGlmdDwgc3RkOjpiYXNpY19vc3RyZWFtPCBjaGFyID4sIFQgPiByZXN1bHRfdDsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVCkKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKChyZXN1bHRfdDo6dmFsdWUpLCAKLSAgICAgICAgICAgICAgICAiU291cmNlIHR5cGUgaXMgbm90IHN0ZDo6b3N0cmVhbWBhYmxlIGFuZCBzdGQ6Ondvc3RyZWFtYHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBTVEwgaW1wbGVtZW50YXRpb24iKTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotI2Vsc2UKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgIHJlc3VsdF90Ojp2YWx1ZSwgY2hhciwgd2NoYXJfdAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygocmVzdWx0X3Q6OnZhbHVlIHx8IG5kbmJvb3N0OjpoYXNfbGVmdF9zaGlmdDwgc3RkOjpiYXNpY19vc3RyZWFtPCB0eXBlID4sIFQgPjo6dmFsdWUpLCAKLSAgICAgICAgICAgICAgICAiU291cmNlIHR5cGUgaXMgbmVpdGhlciBzdGQ6Om9zdHJlYW1gYWJsZSBub3Igc3RkOjp3b3N0cmVhbWBhYmxlIik7Ci0jZW5kaWYKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsICAvLyBkZWR1Y2VfdGFyZ2V0X2NoYXJfaW1wbDxUPgotICAgIHsKLSAgICAgICAgLy8gSWYgdHlwZSBUIGlzIGBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXJgIHR5cGUsIHRoZW4gdHJpZXMgdG8gZGVkdWNlCi0gICAgICAgIC8vIGNoYXJhY3RlciB0eXBlIHVzaW5nIG5kbmJvb3N0OjpoYXNfcmlnaHRfc2hpZnQ8VD4gbWV0YWZ1bmN0aW9uLgotICAgICAgICAvLyBPdGhlcndpc2Ugc3VwcGxpZWQgdHlwZSBUIGlzIGEgY2hhcmFjdGVyIHR5cGUsIHRoYXQgbXVzdCBiZSBub3JtYWxpemVkCi0gICAgICAgIC8vIHVzaW5nIG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPENoYXI+LgotICAgICAgICAvLyBFeGVjdXRlZCBhdCBTdGFnZSAyICAoU2VlIGRlZHVjZV9zb3VyY2VfY2hhcjxUPiBhbmQgZGVkdWNlX3RhcmdldF9jaGFyPFQ+KQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIgPiAKLSAgICAgICAgc3RydWN0IGRlZHVjZV90YXJnZXRfY2hhcl9pbXBsIAotICAgICAgICB7IAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5vcm1hbGl6ZV9zaW5nbGVfYnl0ZV9jaGFyPCBDaGFyID46OnR5cGUgdHlwZTsgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPiAKLSAgICAgICAgc3RydWN0IGRlZHVjZV90YXJnZXRfY2hhcl9pbXBsPCBkZWR1Y2VfY2hhcmFjdGVyX3R5cGVfbGF0ZXI8VD4gPiAKLSAgICAgICAgeyAKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Omhhc19yaWdodF9zaGlmdDxzdGQ6OmJhc2ljX2lzdHJlYW08Y2hhcj4sIFQgPiByZXN1bHRfdDsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVCkKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKChyZXN1bHRfdDo6dmFsdWUpLCAKLSAgICAgICAgICAgICAgICAiVGFyZ2V0IHR5cGUgaXMgbm90IHN0ZDo6aXN0cmVhbWBhYmxlIGFuZCBzdGQ6Ondpc3RyZWFtYHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBTVEwgaW1wbGVtZW50YXRpb24iKTsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotI2Vsc2UKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgIHJlc3VsdF90Ojp2YWx1ZSwgY2hhciwgd2NoYXJfdAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygocmVzdWx0X3Q6OnZhbHVlIHx8IG5kbmJvb3N0OjpoYXNfcmlnaHRfc2hpZnQ8c3RkOjpiYXNpY19pc3RyZWFtPHdjaGFyX3Q+LCBUID46OnZhbHVlKSwgCi0gICAgICAgICAgICAgICAgIlRhcmdldCB0eXBlIGlzIG5laXRoZXIgc3RkOjppc3RyZWFtYGFibGUgbm9yIHN0ZDo6d2lzdHJlYW1gYWJsZSIpOwotI2VuZGlmCi0gICAgICAgIH07Ci0gICAgfSAKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgIC8vIGRlZHVjZV90YXJnZXRfY2hhcjxUPiBhbmQgZGVkdWNlX3NvdXJjZV9jaGFyPFQ+Ci0gICAgewotICAgICAgICAvLyBXZSBkZWR1Y2Ugc3RyZWFtIGNoYXJhY3RlciB0eXBlcyBpbiB0d28gc3RhZ2VzLgotICAgICAgICAvLwotICAgICAgICAvLyBTdGFnZSAxIGlzIGNvbW1vbiBmb3IgVGFyZ2V0IGFuZCBTb3VyY2UuIEF0IFN0YWdlIDEgd2UgZ2V0IAotICAgICAgICAvLyBub24gbm9ybWFsaXplZCBjaGFyYWN0ZXIgdHlwZSAobWF5IGNvbnRhaW4gdW5zaWduZWQvc2lnbmVkIGNoYXIpCi0gICAgICAgIC8vIG9yIGRlZHVjZV9jaGFyYWN0ZXJfdHlwZV9sYXRlcjxUPiB3aGVyZSBUIGlzIHRoZSBvcmlnaW5hbCB0eXBlLgotICAgICAgICAvLyBTdGFnZSAxIGlzIGV4ZWN1dGVkIGJ5IHN0cmVhbV9jaGFyX2NvbW1vbjxUPgotICAgICAgICAvLwotICAgICAgICAvLyBBdCBTdGFnZSAyIHdlIG5vcm1hbGl6ZSBjaGFyYWN0ZXIgdHlwZXMgb3IgdHJ5IHRvIGRlZHVjZSBjaGFyYWN0ZXIgCi0gICAgICAgIC8vIHR5cGUgdXNpbmcgbWV0YWZ1bmN0aW9ucy4gCi0gICAgICAgIC8vIFN0YWdlIDIgaXMgZXhlY3V0ZWQgYnkgZGVkdWNlX3RhcmdldF9jaGFyX2ltcGw8VD4gYW5kIAotICAgICAgICAvLyBkZWR1Y2Vfc291cmNlX2NoYXJfaW1wbDxUPgotICAgICAgICAvLwotICAgICAgICAvLyBkZWR1Y2VfdGFyZ2V0X2NoYXI8VD4gYW5kIGRlZHVjZV9zb3VyY2VfY2hhcjxUPiBmdW5jdGlvbnMgY29tYmluZSAKLSAgICAgICAgLy8gYm90aCBzdGFnZXMKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIFQgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX3RhcmdldF9jaGFyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdHJlYW1fY2hhcl9jb21tb248IFQgPjo6dHlwZSBzdGFnZTFfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZWR1Y2VfdGFyZ2V0X2NoYXJfaW1wbDwgc3RhZ2UxX3R5cGUgPjo6dHlwZSBzdGFnZTJfdHlwZTsKLQotICAgICAgICAgICAgdHlwZWRlZiBzdGFnZTJfdHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVCA+Ci0gICAgICAgIHN0cnVjdCBkZWR1Y2Vfc291cmNlX2NoYXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0cmVhbV9jaGFyX2NvbW1vbjwgVCA+Ojp0eXBlIHN0YWdlMV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRlZHVjZV9zb3VyY2VfY2hhcl9pbXBsPCBzdGFnZTFfdHlwZSA+Ojp0eXBlIHN0YWdlMl90eXBlOwotCi0gICAgICAgICAgICB0eXBlZGVmIHN0YWdlMl90eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBkZWR1Y2VfY2hhcl90cmFpdHMgdGVtcGxhdGUKLSAgICB7Ci0gICAgICAgIC8vIFdlIGFyZSBhdHRlbXB0aW5nIHRvIGdldCBjaGFyX3RyYWl0czw+IGZyb20gU291cmNlIG9yIFRhZ3JldAotICAgICAgICAvLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIuIE90aGVyd2lzZSB3ZSdsbCBiZSB1c2luZyBzdGQ6OmNoYXJfdHJhaXRzPENoYXI+Ci0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVGFyZ2V0LCBjbGFzcyBTb3VyY2UgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpjaGFyX3RyYWl0czwgQ2hhciA+IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jLCBjbGFzcyBTb3VyY2UgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgU291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUYXJnZXQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzdGQ6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYyA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jLCBjbGFzcyBTb3VyY2UgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYyA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFRyYWl0cyB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgQ2hhciwgY2xhc3MgVGFyZ2V0LCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jID4KLSAgICAgICAgc3RydWN0IGRlZHVjZV9jaGFyX3RyYWl0czwgQ2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBUYXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MxLCBjbGFzcyBBbGxvYzIgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMSA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMiA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgQ2hhciwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYzEsIGNsYXNzIEFsbG9jMj4KLSAgICAgICAgc3RydWN0IGRlZHVjZV9jaGFyX3RyYWl0czwgQ2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MxID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMiA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPCBjbGFzcyBDaGFyLCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jMSwgY2xhc3MgQWxsb2MyID4KLSAgICAgICAgc3RydWN0IGRlZHVjZV9jaGFyX3RyYWl0czwgQ2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MxID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3RkOjpiYXNpY19zdHJpbmc8IENoYXIsIFRyYWl0cywgQWxsb2MyID4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUcmFpdHMgdHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8IGNsYXNzIENoYXIsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2MxLCBjbGFzcyBBbGxvYzIgPgotICAgICAgICBzdHJ1Y3QgZGVkdWNlX2NoYXJfdHJhaXRzPCBDaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHN0ZDo6YmFzaWNfc3RyaW5nPCBDaGFyLCBUcmFpdHMsIEFsbG9jMSA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzwgQ2hhciwgVHJhaXRzLCBBbGxvYzIgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIFRyYWl0cyB0eXBlOwotICAgICAgICB9OwotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gYXJyYXlfdG9fcG9pbnRlcl9kZWNheTxUPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X3RvX3BvaW50ZXJfZGVjYXkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLSAgICAgICAgc3RydWN0IGFycmF5X3RvX3BvaW50ZXJfZGVjYXk8VFtOXT4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBUICogdHlwZTsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vIGlzX3RoaXNfZmxvYXRfY29udmVyc2lvbl9vcHRpbWl6ZWQ8RmxvYXQsIENoYXI+Ci0gICAgewotICAgICAgICAvLyB0aGlzIG1ldGFmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZSwgaWYgd2UgaGF2ZSBvcHRpbWl6ZWQgY29tbnZlcnNpb24gCi0gICAgICAgIC8vIGZyb20gRmxvYXQgdHlwZSB0byBDaGFyIGFycmF5LiAKLSAgICAgICAgLy8gTXVzdCBiZSBpbiBzeW5jIHdpdGggbGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmM8Q2hhciwgLi4uPjo6c2hsX3JlYWxfdHlwZSguLi4pCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdCwgdHlwZW5hbWUgQ2hhcj4KLSAgICAgICAgc3RydWN0IGlzX3RoaXNfZmxvYXRfY29udmVyc2lvbl9vcHRpbWl6ZWQgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19mbG9hdDxGbG9hdD46OnZhbHVlLAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NXUFJJTlRGKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfZXE8c2l6ZW9mKENoYXIpLCBzaXplb2YoY2hhcikgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPENoYXIsIHdjaGFyX3Q+Ojp2YWx1ZQotICAgICAgICAgICAgICAgID46OnZhbHVlCi0jZWxzZQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2VxPHNpemVvZihDaGFyKSwgc2l6ZW9mKGNoYXIpID46OnZhbHVlCi0jZW5kaWYKLSAgICAgICAgICAgID4gcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChyZXN1bHRfdHlwZTo6dmFsdWUpICk7Ci0gICAgICAgIH07Ci0gICAgfQotICAgIAotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3Rfc3JjX2xlbmd0aAotICAgIHsKLSAgICAgICAgLy8gUmV0dXJuIG1heC4gbGVuZ3RoIG9mIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBTb3VyY2U7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTb3VyY2UgLy8gU291cmNlIHR5cGUgb2YgbGV4aWNhbF9jYXN0LgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgc3RydWN0IGxjYXN0X3NyY19sZW5ndGgKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDEpOwotICAgICAgICAgICAgLy8gVG8gY2hlY2sgY292ZXJhZ2UsIGJ1aWxkIHRoZSB0ZXN0IHdpdGgKLSAgICAgICAgICAgIC8vIGJqYW0gLS12MiBwcm9maWxlIG9wdGltaXphdGlvbj1vZmYKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30KLSAgICAgICAgfTsKLQotICAgICAgICAvLyBIZWxwZXIgZm9yIGludGVncmFsIHR5cGVzLgotICAgICAgICAvLyBOb3RlcyBvbiBsZW5ndGggY2FsY3VsYXRpb246Ci0gICAgICAgIC8vIE1heCBsZW5ndGggZm9yIDMyYml0IGludCB3aXRoIGdyb3VwaW5nICJcMSIgYW5kIHRob3VzYW5kc19zZXAgJywnOgotICAgICAgICAvLyAiLTIsMSw0LDcsNCw4LDMsNiw0LDciCi0gICAgICAgIC8vICBeICAgICAgICAgICAgICAgICAgICAtIGlzX3NpZ25lZAotICAgICAgICAvLyAgIF4gICAgICAgICAgICAgICAgICAgLSAxIGRpZ2l0IG5vdCBjb3VudGVkIGJ5IGRpZ2l0czEwCi0gICAgICAgIC8vICAgIF5eXl5eXl5eXl5eXl5eXl5eXiAtIGRpZ2l0czEwICogMgotICAgICAgICAvLwotICAgICAgICAvLyBDb25zdGFudCBpc19zcGVjaWFsaXplZCBpcyB1c2VkIGluc3RlYWQgb2YgY29uc3RhbnQgMQotICAgICAgICAvLyB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiBhIHJhcmUgY2FzZSB3aGVuCi0gICAgICAgIC8vIDxuZG5ib29zdC9saW1pdHMuaHBwPiBkb2Vzbid0IGFkZCBtaXNzaW5nIHNwZWNpYWxpemF0aW9uIGZvcgotICAgICAgICAvLyBudW1lcmljX2xpbWl0czxUPiBmb3Igc29tZSBpbnRlZ3JhbCB0eXBlIFQuCi0gICAgICAgIC8vIFdoZW4gaXNfc3BlY2lhbGl6ZWQgaXMgZmFsc2UsIHRoZSB3aG9sZSBleHByZXNzaW9uIGlzIDAuCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGxjYXN0X3NyY19sZW5ndGhfaW50ZWdyYWwKLSAgICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NpZ25lZCArCi0gICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46OmlzX3NwZWNpYWxpemVkICsgLyogPT0gMSAqLwotICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2U+OjpkaWdpdHMxMCAqIDIKLSAgICAgICAgICAgICAgKTsKLSNlbHNlCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gMTU2KTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFNvdXJjZSkgKiBDSEFSX0JJVCA8PSAyNTYpOwotI2VuZGlmCi0gICAgICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfTENBU1RfREVGKFQpICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGxjYXN0X3NyY19sZW5ndGg8VD4gXAotICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfaW50ZWdyYWw8VD4gICAgICAgICAgIFwKLSAgICB7IHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30gfTsKLQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYoc2hvcnQpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRih1bnNpZ25lZCBzaG9ydCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKGludCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKHVuc2lnbmVkIGludCkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKGxvbmcpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRih1bnNpZ25lZCBsb25nKQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgIE5ETkJPT1NUX0xDQVNUX0RFRih1bnNpZ25lZCBfX2ludDY0KQotICAgICAgICBORE5CT09TVF9MQ0FTVF9ERUYoICAgICAgICAgX19pbnQ2NCkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKG5kbmJvb3N0OjppbnQxMjhfdHlwZSkKLSAgICAgICAgTkROQk9PU1RfTENBU1RfREVGKG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX0xDQVNUX0RFRgotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX0NPTVBJTEVfVElNRV9QUkVDSVNJT04KLSAgICAgICAgLy8gSGVscGVyIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcy4KLSAgICAgICAgLy8gLTEuMjM0NTY3ODllLTEyMzQ1NgotICAgICAgICAvLyBeICAgICAgICAgICAgICAgICAgIHNpZ24KLSAgICAgICAgLy8gIF4gICAgICAgICAgICAgICAgICBsZWFkaW5nIGRpZ2l0Ci0gICAgICAgIC8vICAgXiAgICAgICAgICAgICAgICAgZGVjaW1hbCBwb2ludCAKLSAgICAgICAgLy8gICAgXl5eXl5eXl4gICAgICAgICBsY2FzdF9wcmVjaXNpb248U291cmNlPjo6dmFsdWUKLSAgICAgICAgLy8gICAgICAgICAgICBeICAgICAgICAiZSIKLSAgICAgICAgLy8gICAgICAgICAgICAgXiAgICAgICBleHBvbmVudCBzaWduCi0gICAgICAgIC8vICAgICAgICAgICAgICBeXl5eXl4gZXhwb25lbnQgKGFzc3VtZWQgNiBvciBsZXNzIGRpZ2l0cykKLSAgICAgICAgLy8gc2lnbiArIGxlYWRpbmcgZGlnaXQgKyBkZWNpbWFsIHBvaW50ICsgImUiICsgZXhwb25lbnQgc2lnbiA9PSA1Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFNvdXJjZT4KLSAgICAgICAgc3RydWN0IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmcKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2U+OjptYXhfZXhwb25lbnQxMCA8PSAgOTk5OTk5TCAmJgotICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46Om1pbl9leHBvbmVudDEwID49IC05OTk5OTlMCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPQotICAgICAgICAgICAgICAgICAgICA1ICsgbGNhc3RfcHJlY2lzaW9uPFNvdXJjZT46OnZhbHVlICsgNgotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aDxmbG9hdD4KLSAgICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmc8ZmxvYXQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBsY2FzdF9zcmNfbGVuZ3RoPGRvdWJsZT4KLSAgICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmc8ZG91YmxlPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgdm9pZCBjaGVja19jb3ZlcmFnZSgpIHt9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3Rfc3JjX2xlbmd0aDxsb25nIGRvdWJsZT4KLSAgICAgICAgICA6IGxjYXN0X3NyY19sZW5ndGhfZmxvYXRpbmc8bG9uZyBkb3VibGU+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrX2NvdmVyYWdlKCkge30KLSAgICAgICAgfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fQ09NUElMRV9USU1FX1BSRUNJU0lPTgotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGV4aWNhbF9jYXN0X3N0cmVhbV90cmFpdHM8U291cmNlLCBUYXJnZXQ+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQ+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3Rfc3RyZWFtX3RyYWl0cyB7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG9fcG9pbnRlcl9kZWNheTxTb3VyY2U+Ojp0eXBlIHNyYzsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6cmVtb3ZlX2N2PHNyYz46OnR5cGUgICAgICAgICAgICBub19jdl9zcmM7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmRlZHVjZV9zb3VyY2VfY2hhcjxub19jdl9zcmM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWNlX3NyY19jaGFyX21ldGFmdW5jOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRlZHVjZV9zcmNfY2hhcl9tZXRhZnVuYzo6dHlwZSAgICAgICAgICAgc3JjX2NoYXJfdDsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfdGFyZ2V0X2NoYXI8VGFyZ2V0Pjo6dHlwZSB0YXJnZXRfY2hhcl90OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6OndpZGVzdF9jaGFyPAotICAgICAgICAgICAgICAgIHRhcmdldF9jaGFyX3QsIHNyY19jaGFyX3QKLSAgICAgICAgICAgID46OnR5cGUgY2hhcl90eXBlOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggIW5kbmJvb3N0Ojppc19zYW1lPGNoYXIxNl90LCBzcmNfY2hhcl90Pjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbmRuYm9vc3Q6OmlzX3NhbWU8Y2hhcjE2X3QsIHRhcmdldF9jaGFyX3Q+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgIllvdXIgY29tcGlsZXIgZG9lcyBub3QgaGF2ZSBmdWxsIHN1cHBvcnQgZm9yIGNoYXIxNl90IiApOwotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggIW5kbmJvb3N0Ojppc19zYW1lPGNoYXIzMl90LCBzcmNfY2hhcl90Pjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbmRuYm9vc3Q6OmlzX3NhbWU8Y2hhcjMyX3QsIHRhcmdldF9jaGFyX3Q+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAgIllvdXIgY29tcGlsZXIgZG9lcyBub3QgaGF2ZSBmdWxsIHN1cHBvcnQgZm9yIGNoYXIzMl90IiApOwotI2VuZGlmCi0KLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjpkZWR1Y2VfY2hhcl90cmFpdHM8Ci0gICAgICAgICAgICAgICAgY2hhcl90eXBlLCBUYXJnZXQsIG5vX2N2X3NyYwotICAgICAgICAgICAgPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPGNoYXIsIHNyY19jaGFyX3Q+Ojp2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIGlzIG5vdCBhIHdpZGUgY2hhcmFjdGVyIGJhc2VkIHR5cGUKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9uZTxzaXplb2YoY2hhciksIHNpemVvZih0YXJnZXRfY2hhcl90KSA+Ojp2YWx1ZSwgIC8vIHRhcmdldCB0eXBlIGlzIGJhc2VkIG9uIHdpZGUgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX29yX3djaGFyPG5vX2N2X3NyYz46OnZhbHVlICAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlIGNoYXJhY3RlciB3aWRlbmluZyBpcyBvcHRpbWl6ZWQKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCByZXF1aXJlcyBzdHJpbmdidWZmZXIKLSAgICAgICAgICAgID4gICBpc19zdHJpbmdfd2lkZW5pbmdfcmVxdWlyZWRfdDsKLQotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19pbnRlZ3JhbDxub19jdl9zcmM+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc190aGlzX2Zsb2F0X2NvbnZlcnNpb25fb3B0aW1pemVkPG5vX2N2X3NyYywgY2hhcl90eXBlID46OnZhbHVlLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NoYXJfb3Jfd2NoYXI8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGVkdWNlX3NyY19jaGFyX21ldGFmdW5jOjpzdGFnZTFfdHlwZSAgICAgICAgICAvLyBpZiB3ZSBkaWQgbm90IGdldCBjaGFyYWN0ZXIgdHlwZSBhdCBzdGFnZTEKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2UgaGF2ZSBubyBvcHRpbWl6YXRpb24gZm9yIHRoYXQgdHlwZQotICAgICAgICAgICAgPjo6dmFsdWUgPiAgIGlzX3NvdXJjZV9pbnB1dF9ub3Rfb3B0aW1pemVkX3Q7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gb3B0aW1pemVkIGNvbnZlcnNpb24gZm9yCi0gICAgICAgICAgICAvLyBTb3VyY2UsIHdlIGRvIG5vdCBuZWVkIHRvIGNvbnN0cnVjdCBzdHJpbmdidWYuCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgcmVxdWlyZXNfc3RyaW5nYnVmID0gCi0gICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICBpc19zdHJpbmdfd2lkZW5pbmdfcmVxdWlyZWRfdDo6dmFsdWUsIGlzX3NvdXJjZV9pbnB1dF9ub3Rfb3B0aW1pemVkX3Q6OnZhbHVlCi0gICAgICAgICAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICAgICApOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmxjYXN0X3NyY19sZW5ndGg8bm9fY3Zfc3JjPiBsZW5fdDsKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIC8vICcwJywgJysnIGFuZCAnLScgY29uc3RhbnRzCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXIgPiBzdHJ1Y3QgbGNhc3RfY2hhcl9jb25zdGFudHM7Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgbGNhc3RfY2hhcl9jb25zdGFudHM8Y2hhcj4KLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIsIHplcm8gID0gJzAnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyLCBtaW51cyA9ICctJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgcGx1cyA9ICcrJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgbG93ZXJjYXNlX2UgPSAnZScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXIsIGNhcGl0YWxfZSA9ICdFJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhciwgY19kZWNpbWFsX3NlcGFyYXRvciA9ICcuJyk7Ci0gICAgICAgIH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTENBU1RfTk9fV0NIQVJfVAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBsY2FzdF9jaGFyX2NvbnN0YW50czx3Y2hhcl90PgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQod2NoYXJfdCwgemVybyAgPSBMJzAnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh3Y2hhcl90LCBtaW51cyA9IEwnLScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIHBsdXMgPSBMJysnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh3Y2hhcl90LCBsb3dlcmNhc2VfZSA9IEwnZScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIGNhcGl0YWxfZSA9IEwnRScpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHdjaGFyX3QsIGNfZGVjaW1hbF9zZXBhcmF0b3IgPSBMJy4nKTsKLSAgICAgICAgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IGxjYXN0X2NoYXJfY29uc3RhbnRzPGNoYXIxNl90PgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIHplcm8gID0gdScwJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIG1pbnVzID0gdSctJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIHBsdXMgPSB1JysnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgbG93ZXJjYXNlX2UgPSB1J2UnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMTZfdCwgY2FwaXRhbF9lID0gdSdFJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjE2X3QsIGNfZGVjaW1hbF9zZXBhcmF0b3IgPSB1Jy4nKTsKLSAgICAgICAgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjMyX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IGxjYXN0X2NoYXJfY29uc3RhbnRzPGNoYXIzMl90PgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIHplcm8gID0gVScwJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIG1pbnVzID0gVSctJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIHBsdXMgPSBVJysnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgbG93ZXJjYXNlX2UgPSBVJ2UnKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyMzJfdCwgY2FwaXRhbF9lID0gVSdFJyk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcjMyX3QsIGNfZGVjaW1hbF9zZXBhcmF0b3IgPSBVJy4nKTsKLSAgICAgICAgfTsKLSNlbmRpZgotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3RfdG9fdW5zaWduZWQKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgICAgIGlubGluZQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUgbGNhc3RfdG9fdW5zaWduZWQoVCB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPigKLSAgICAgICAgICAgICAgICB2YWx1ZSA8IDAgPyAwdSAtIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih2YWx1ZSkgOiB2YWx1ZQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3RfcHV0X3Vuc2lnbmVkCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIFQsIGNsYXNzIENoYXJUPgotICAgICAgICBDaGFyVCogbGNhc3RfcHV0X3Vuc2lnbmVkKGNvbnN0IFQgbl9wYXJhbSwgQ2hhclQqIGZpbmlzaCkKLSAgICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkKTsKLSNlbmRpZgotCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7Ci0gICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgIGludF90eXBlIGNvbnN0IHplcm8gPSBUcmFpdHM6OnRvX2ludF90eXBlKGN6ZXJvKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgKHNpemVvZihpbnRfdHlwZSkgPiBzaXplb2YoVCkpCi0gICAgICAgICAgICAgICAgICAgICwgaW50X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgLCBUCi0gICAgICAgICAgICA+Ojp0eXBlIG4gPSBuX3BhcmFtOwotCi0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIGxvYzsKLSAgICAgICAgICAgIGlmIChsb2MgIT0gc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSkgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpudW1wdW5jdDxDaGFyVD4gbnVtcHVuY3Q7Ci0gICAgICAgICAgICAgICAgbnVtcHVuY3QgY29uc3QmIG5wID0gTkROQk9PU1RfVVNFX0ZBQ0VUKG51bXB1bmN0LCBsb2MpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGdyb3VwaW5nID0gbnAuZ3JvdXBpbmcoKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbnN0IGdyb3VwaW5nX3NpemUgPSBncm91cGluZy5zaXplKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGdyb3VwaW5nX3NpemUgJiYgZ3JvdXBpbmdbMF0gPiAwICkKLSAgICAgICAgICAgICAgICB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHVsaW1pdGVkIGdyb3VwIGlzIHVucmVhY2hhYmxlOgotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzMTAgPCBDSEFSX01BWCk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgQ2hhclQgdGhvdXNhbmRzX3NlcCA9IG5wLnRob3VzYW5kc19zZXAoKTsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBncm91cCA9IDA7IC8vIGN1cnJlbnQgZ3JvdXAgbnVtYmVyCi0gICAgICAgICAgICAgICAgICAgIGNoYXIgbGFzdF9ncnBfc2l6ZSA9IGdyb3VwaW5nWzBdOwotICAgICAgICAgICAgICAgICAgICBjaGFyIGxlZnQgPSBsYXN0X2dycF9zaXplOwotCi0gICAgICAgICAgICAgICAgICAgIGRvCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxlZnQgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2dyb3VwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGdyb3VwIDwgZ3JvdXBpbmdfc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgZ3JwX3NpemUgPSBncm91cGluZ1tncm91cF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZ3JwX3NpemUgPSBncnBfc2l6ZSA8PSAwID8gc3RhdGljX2Nhc3Q8Y2hhcj4oQ0hBUl9NQVgpIDogZ3JwX3NpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxhc3RfZ3JwX3NpemU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1maW5pc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24oKmZpbmlzaCwgdGhvdXNhbmRzX3NlcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC0tbGVmdDsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLS1maW5pc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRfdHlwZSBjb25zdCBkaWdpdCA9IHN0YXRpY19jYXN0PGludF90eXBlPihuICUgMTBVKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpmaW5pc2gsIFRyYWl0czo6dG9fY2hhcl90eXBlKHplcm8gKyBkaWdpdCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbiAvPSAxMDsKLSAgICAgICAgICAgICAgICAgICAgfSB3aGlsZShuKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmlzaDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkbwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLS1maW5pc2g7Ci0gICAgICAgICAgICAgICAgICAgIGludF90eXBlIGNvbnN0IGRpZ2l0ID0gc3RhdGljX2Nhc3Q8aW50X3R5cGU+KG4gJSAxMFUpOwotICAgICAgICAgICAgICAgICAgICBUcmFpdHM6OmFzc2lnbigqZmluaXNoLCBUcmFpdHM6OnRvX2NoYXJfdHlwZSh6ZXJvICsgZGlnaXQpKTsKLSAgICAgICAgICAgICAgICAgICAgbiAvPSAxMDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlKG4pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmluaXNoOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBsY2FzdF9yZXRfdW5zaWduZWQKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgVCwgY2xhc3MgQ2hhclQ+Ci0gICAgICAgIGlubGluZSBib29sIGxjYXN0X3JldF91bnNpZ25lZChUJiB2YWx1ZSwgY29uc3QgQ2hhclQqIGNvbnN0IGJlZ2luLCBjb25zdCBDaGFyVCogZW5kKQotICAgICAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQpOwotI2VuZGlmCi0gICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgIC0tZW5kOwotICAgICAgICAgICAgdmFsdWUgPSAwOwotCi0gICAgICAgICAgICBpZiAoYmVnaW4gPiBlbmQgfHwgKmVuZCA8IGN6ZXJvIHx8ICplbmQgPj0gY3plcm8gKyAxMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KCplbmQgLSBjemVybyk7Ci0gICAgICAgICAgICAtLWVuZDsKLSAgICAgICAgICAgIFQgbXVsdGlwbGllciA9IDE7Ci0gICAgICAgICAgICBib29sIG11bHRpcGxpZXJfb3ZlcmZsb3dlZCA9IGZhbHNlOwotCi0jaWZuZGVmIE5ETkJPT1NUX0xFWElDQUxfQ0FTVF9BU1NVTUVfQ19MT0NBTEUKLSAgICAgICAgICAgIHN0ZDo6bG9jYWxlIGxvYzsKLSAgICAgICAgICAgIGlmIChsb2MgIT0gc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSkgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpudW1wdW5jdDxDaGFyVD4gbnVtcHVuY3Q7Ci0gICAgICAgICAgICAgICAgbnVtcHVuY3QgY29uc3QmIG5wID0gTkROQk9PU1RfVVNFX0ZBQ0VUKG51bXB1bmN0LCBsb2MpOwotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiBncm91cGluZyA9IG5wLmdyb3VwaW5nKCk7Ci0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBjb25zdCBncm91cGluZ19zaXplID0gZ3JvdXBpbmcuc2l6ZSgpOwotCi0gICAgICAgICAgICAgICAgLyogQWNjb3JkaW5nIHRvIFByb2dyYW1taW5nIGxhbmd1YWdlcyAtIEMrKwotICAgICAgICAgICAgICAgICAqIHdlIE1VU1QgY2hlY2sgZm9yIGNvcnJlY3QgZ3JvdXBpbmcKLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAoZ3JvdXBpbmdfc2l6ZSAmJiBncm91cGluZ1swXSA+IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGN1cnJlbnRfZ3JvdXBpbmcgPSAwOwotICAgICAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCB0aG91c2FuZHNfc2VwID0gbnAudGhvdXNhbmRzX3NlcCgpOwotICAgICAgICAgICAgICAgICAgICBjaGFyIHJlbWFpbmVkID0gc3RhdGljX2Nhc3Q8Y2hhcj4oZ3JvdXBpbmdbY3VycmVudF9ncm91cGluZ10gLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBzaGFsbF93ZV9yZXR1cm4gPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIGZvcig7ZW5kPj1iZWdpbjsgLS1lbmQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1haW5lZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgY29uc3QgbXVsdGlwbGllcl8xMCA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXIgKiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGxpZXJfMTAgLyAxMCAhPSBtdWx0aXBsaWVyKSBtdWx0aXBsaWVyX292ZXJmbG93ZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVCBjb25zdCBkaWdfdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigqZW5kIC0gY3plcm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgY29uc3QgbmV3X3N1Yl92YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXJfMTAgKiBkaWdfdmFsdWUpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCplbmQgPCBjemVybyB8fCAqZW5kID49IGN6ZXJvICsgMTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRldGVjdGluZyBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGRpZ192YWx1ZSAmJiBuZXdfc3ViX3ZhbHVlIC8gZGlnX3ZhbHVlICE9IG11bHRpcGxpZXJfMTApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxUPigoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpLW5ld19zdWJfdmFsdWUpIDwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtdWx0aXBsaWVyX292ZXJmbG93ZWQgJiYgZGlnX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlICsgbmV3X3N1Yl92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IHN0YXRpY19jYXN0PFQ+KG11bHRpcGxpZXIgKiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1yZW1haW5lZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhVHJhaXRzOjplcSgqZW5kLCB0aG91c2FuZHNfc2VwKSApIC8vfHwgYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQWNjb3JkaW5nIHRvIFByb2dyYW1taW5nIGxhbmd1YWdlcyAtIEMrKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBEaWdpdCBncm91cGluZyBpcyBjaGVja2VkLiBUaGF0IGlzLCB0aGUgcG9zaXRpb25zIG9mIGRpc2NhcmRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZXBhcmF0b3JzIGlzIGV4YW1pbmVkIGZvciBjb25zaXN0ZW5jeSB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVzZV9mYWNldDxudW1wdW5jdDxjaGFyVD4gPihsb2MgKS5ncm91cGluZygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEJVVCB3aGF0IGlmIHRoZXJlIGlzIG5vIHNlcGFyYXRvcnMgYXQgYWxsIGFuZCBncm91cGluZygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIG5vdCBlbXB0eT8gV2VsbCwgd2UgaGF2ZSBubyBleHRyYWNlZCBzZXBhcmF0b3JzLCBzbyB3ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3b25gdCBjaGVjayB0aGVtIGZvciBjb25zaXN0ZW5jeS4gVGhpcyB3aWxsIGFsbG93IHVzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdvcmsgd2l0aCAiQyIgbG9jYWxlIGZyb20gb3RoZXIgbG9jYWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhbGxfd2VfcmV0dXJuID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudF9ncm91cGluZyA8IGdyb3VwaW5nX3NpemUtMSApICsrY3VycmVudF9ncm91cGluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZWQgPSBncm91cGluZ1tjdXJyZW50X2dyb3VwaW5nXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoc2hhbGxfd2VfcmV0dXJuKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoIGJlZ2luIDw9IGVuZCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBUIGNvbnN0IG11bHRpcGxpZXJfMTAgPSBzdGF0aWNfY2FzdDxUPihtdWx0aXBsaWVyICogMTApOwotICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllcl8xMCAvIDEwICE9IG11bHRpcGxpZXIpIG11bHRpcGxpZXJfb3ZlcmZsb3dlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgVCBjb25zdCBkaWdfdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigqZW5kIC0gY3plcm8pOwotICAgICAgICAgICAgICAgICAgICBUIGNvbnN0IG5ld19zdWJfdmFsdWUgPSBzdGF0aWNfY2FzdDxUPihtdWx0aXBsaWVyXzEwICogZGlnX3ZhbHVlKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoKmVuZCA8IGN6ZXJvIHx8ICplbmQgPj0gY3plcm8gKyAxMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRldGVjdGluZyBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChkaWdfdmFsdWUgJiYgbmV3X3N1Yl92YWx1ZSAvIGRpZ192YWx1ZSAhPSBtdWx0aXBsaWVyXzEwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXRpY19jYXN0PFQ+KChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCktbmV3X3N1Yl92YWx1ZSkgPCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtdWx0aXBsaWVyX292ZXJmbG93ZWQgJiYgZGlnX3ZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlICsgbmV3X3N1Yl92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBzdGF0aWNfY2FzdDxUPihtdWx0aXBsaWVyICogMTApOwotICAgICAgICAgICAgICAgICAgICAtLWVuZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KLSAgICAgICAgYm9vbCBsY19pZXF1YWwoY29uc3QgQ2hhclQqIHZhbCwgY29uc3QgQ2hhclQqIGxjYXNlLCBjb25zdCBDaGFyVCogdWNhc2UsIHVuc2lnbmVkIGludCBsZW4pIE5ETkJPT1NUX05PRVhDRVBUIHsKLSAgICAgICAgICAgIGZvciggdW5zaWduZWQgaW50IGk9MDsgaSA8IGxlbjsgKytpICkgewotICAgICAgICAgICAgICAgIGlmICggdmFsW2ldICE9IGxjYXNlW2ldICYmIHZhbFtpXSAhPSB1Y2FzZVtpXSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBSZXR1cm5zIHRydWUgYW5kIHNldHMgdGhlIGNvcnJlY3QgdmFsdWUgaWYgZm91bmQgTmFOIG9yIEluZi4gKi8KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBUPgotICAgICAgICBpbmxpbmUgYm9vbCBwYXJzZV9pbmZfbmFuX2ltcGwoY29uc3QgQ2hhclQqIGJlZ2luLCBjb25zdCBDaGFyVCogZW5kLCBUJiB2YWx1ZQotICAgICAgICAgICAgLCBjb25zdCBDaGFyVCogbGNfTkFOLCBjb25zdCBDaGFyVCogbGNfbmFuCi0gICAgICAgICAgICAsIGNvbnN0IENoYXJUKiBsY19JTkZJTklUWSwgY29uc3QgQ2hhclQqIGxjX2luZmluaXR5Ci0gICAgICAgICAgICAsIGNvbnN0IENoYXJUIG9wZW5pbmdfYnJhY2UsIGNvbnN0IENoYXJUIGNsb3NpbmdfYnJhY2UpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICBpZiAoYmVnaW4gPT0gZW5kKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb25zdCBDaGFyVCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICBjb25zdCBDaGFyVCBwbHVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpwbHVzOwotICAgICAgICAgICAgY29uc3QgaW50IGluaWZpbml0eV9zaXplID0gODsKLQotICAgICAgICAgICAgYm9vbCBoYXNfbWludXMgPSBmYWxzZTsKLSAgICAgICAgICAgIC8qIFBhcnNpbmcgKy8tICovCi0gICAgICAgICAgICBpZiggKmJlZ2luID09IG1pbnVzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIGhhc19taW51cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKCAqYmVnaW4gPT0gcGx1cyApICsrYmVnaW47Ci0KLSAgICAgICAgICAgIGlmKCBlbmQtYmVnaW4gPCAzICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYoIGxjX2llcXVhbChiZWdpbiwgbGNfbmFuLCBsY19OQU4sIDMpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBiZWdpbiArPSAzOwotICAgICAgICAgICAgICAgIGlmIChlbmQgIT0gYmVnaW4pIC8qIEl0IGlzICduYW4oLi4uKScgb3Igc29tZSBiYWQgaW5wdXQqLwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoZW5kLWJlZ2luPDIpIHJldHVybiBmYWxzZTsgLy8gYmFkIGlucHV0Ci0gICAgICAgICAgICAgICAgICAgIC0tIGVuZDsKLSAgICAgICAgICAgICAgICAgICAgaWYoICpiZWdpbiAhPSBvcGVuaW5nX2JyYWNlIHx8ICplbmQgIT0gY2xvc2luZ19icmFjZSkgcmV0dXJuIGZhbHNlOyAvLyBiYWQgaW5wdXQKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiggIWhhc19taW51cyApIHZhbHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6cXVpZXRfTmFOKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB2YWx1ZSA9IChuZG5ib29zdDo6bWF0aDo6Y2hhbmdlc2lnbikgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnF1aWV0X05hTigpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaWYgKCggLyogJ0lORicgb3IgJ2luZicgKi8KLSAgICAgICAgICAgICAgICAgIGVuZC1iZWdpbj09MwotICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgICAgICAgIGxjX2llcXVhbChiZWdpbiwgbGNfaW5maW5pdHksIGxjX0lORklOSVRZLCAzKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICB8fAotICAgICAgICAgICAgICAgICggLyogJ0lORklOSVRZJyBvciAnaW5maW5pdHknICovCi0gICAgICAgICAgICAgICAgICBlbmQtYmVnaW49PWluaWZpbml0eV9zaXplCi0gICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgbGNfaWVxdWFsKGJlZ2luLCBsY19pbmZpbml0eSwgbGNfSU5GSU5JVFksIGluaWZpbml0eV9zaXplKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYoICFoYXNfbWludXMgKSB2YWx1ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB2YWx1ZSA9IChuZG5ib29zdDo6bWF0aDo6Y2hhbmdlc2lnbikgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcHV0X2luZl9uYW5faW1wbChDaGFyVCogYmVnaW4sIENoYXJUKiYgZW5kLCBjb25zdCBUJiB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICwgY29uc3QgQ2hhclQqIGxjX25hbgotICAgICAgICAgICAgICAgICAgICAgICAgICwgY29uc3QgQ2hhclQqIGxjX2luZmluaXR5KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgY29uc3QgQ2hhclQgbWludXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46Om1pbnVzOwotICAgICAgICAgICAgaWYgKCAobmRuYm9vc3Q6Om1hdGg6OmlzbmFuKSh2YWx1ZSkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICggKG5kbmJvb3N0OjptYXRoOjpzaWduYml0KSh2YWx1ZSkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKmJlZ2luID0gbWludXM7Ci0gICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1lbWNweShiZWdpbiwgbGNfbmFuLCAzICogc2l6ZW9mKENoYXJUKSk7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAzOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmICggKG5kbmJvb3N0OjptYXRoOjppc2luZikodmFsdWUpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIChuZG5ib29zdDo6bWF0aDo6c2lnbmJpdCkodmFsdWUpICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICpiZWdpbiA9IG1pbnVzOwotICAgICAgICAgICAgICAgICAgICArKyBiZWdpbjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtZW1jcHkoYmVnaW4sIGxjX2luZmluaXR5LCAzICogc2l6ZW9mKENoYXJUKSk7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAzOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcGFyc2VfaW5mX25hbihjb25zdCB3Y2hhcl90KiBiZWdpbiwgY29uc3Qgd2NoYXJfdCogZW5kLCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2luZl9uYW5faW1wbChiZWdpbiwgZW5kLCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTCJOQU4iLCBMIm5hbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEwiSU5GSU5JVFkiLCBMImluZmluaXR5IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTCcoJywgTCcpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgYm9vbCBwdXRfaW5mX25hbih3Y2hhcl90KiBiZWdpbiwgd2NoYXJfdComIGVuZCwgY29uc3QgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdXRfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlLCBMIm5hbiIsIEwiaW5maW5pdHkiKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9DSEFSMTZfVCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVU5JQ09ERV9MSVRFUkFMUykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcGFyc2VfaW5mX25hbihjb25zdCBjaGFyMTZfdCogYmVnaW4sIGNvbnN0IGNoYXIxNl90KiBlbmQsIFQmIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1Ik5BTiIsIHUibmFuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgdSJJTkZJTklUWSIsIHUiaW5maW5pdHkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1JygnLCB1JyknKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICBib29sIHB1dF9pbmZfbmFuKGNoYXIxNl90KiBiZWdpbiwgY2hhcjE2X3QqJiBlbmQsIGNvbnN0IFQmIHZhbHVlKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcHV0X2luZl9uYW5faW1wbChiZWdpbiwgZW5kLCB2YWx1ZSwgdSJuYW4iLCB1ImluZmluaXR5Iik7Ci0gICAgICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgYm9vbCBwYXJzZV9pbmZfbmFuKGNvbnN0IGNoYXIzMl90KiBiZWdpbiwgY29uc3QgY2hhcjMyX3QqIGVuZCwgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwYXJzZV9pbmZfbmFuX2ltcGwoYmVnaW4sIGVuZCwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFUiTkFOIiwgVSJuYW4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBVIklORklOSVRZIiwgVSJpbmZpbml0eSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFUnKCcsIFUnKScpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcHV0X2luZl9uYW4oY2hhcjMyX3QqIGJlZ2luLCBjaGFyMzJfdComIGVuZCwgY29uc3QgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdXRfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlLCBVIm5hbiIsIFUiaW5maW5pdHkiKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIENoYXJULCBjbGFzcyBUPgotICAgICAgICBib29sIHBhcnNlX2luZl9uYW4oY29uc3QgQ2hhclQqIGJlZ2luLCBjb25zdCBDaGFyVCogZW5kLCBUJiB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2luZl9uYW5faW1wbChiZWdpbiwgZW5kLCB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgIk5BTiIsICJuYW4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAiSU5GSU5JVFkiLCAiaW5maW5pdHkiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnKCcsICcpJyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQsIGNsYXNzIFQ+Ci0gICAgICAgIGJvb2wgcHV0X2luZl9uYW4oQ2hhclQqIGJlZ2luLCBDaGFyVComIGVuZCwgY29uc3QgVCYgdmFsdWUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBwdXRfaW5mX25hbl9pbXBsKGJlZ2luLCBlbmQsIHZhbHVlLCAibmFuIiwgImluZmluaXR5Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgLy8gbGNhc3RfcmV0X2Zsb2F0Ci0gICAgewotCi0vLyBTaWxlbmNlIGJ1Z2d5IE1TIHdhcm5pbmdzIGxpa2UgQzQyNDQ6ICcrPScgOiBjb252ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ3Vuc2lnbmVkIHNob3J0JywgcG9zc2libGUgbG9zcyBvZiBkYXRhIAotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxNDAwKSAKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpIAotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KSAKLSNlbmRpZiAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgIHN0cnVjdCBtYW50aXNzYV9ob2xkZXJfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICAvKiBDYW4gbm90IGJlIHVzZWQgd2l0aCB0aGlzIHR5cGUgKi8KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8PgotICAgICAgICBzdHJ1Y3QgbWFudGlzc2FfaG9sZGVyX3R5cGU8ZmxvYXQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIGRvdWJsZSAgICAgICB3aWRlX3Jlc3VsdF90OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICAgIHN0cnVjdCBtYW50aXNzYV9ob2xkZXJfdHlwZTxkb3VibGU+Ci0gICAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotICAgICAgICAgICAgdHlwZWRlZiBsb25nIGRvdWJsZSAgd2lkZV9yZXN1bHRfdDsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgdHlwZTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHR5cGU7Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgVCwgY2xhc3MgQ2hhclQ+Ci0gICAgICAgIGlubGluZSBib29sIGxjYXN0X3JldF9mbG9hdChUJiB2YWx1ZSwgY29uc3QgQ2hhclQqIGJlZ2luLCBjb25zdCBDaGFyVCogZW5kKQotICAgICAgICB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0FTU1VNRV9DX0xPQ0FMRQotICAgICAgICAgICAgc3RkOjpsb2NhbGUgbG9jOwotICAgICAgICAgICAgdHlwZWRlZiBzdGQ6Om51bXB1bmN0PENoYXJUPiBudW1wdW5jdDsKLSAgICAgICAgICAgIG51bXB1bmN0IGNvbnN0JiBucCA9IE5ETkJPT1NUX1VTRV9GQUNFVChudW1wdW5jdCwgbG9jKTsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0IGdyb3VwaW5nKAotICAgICAgICAgICAgICAgICAgICAobG9jID09IHN0ZDo6bG9jYWxlOjpjbGFzc2ljKCkpCi0gICAgICAgICAgICAgICAgICAgID8gc3RkOjpzdHJpbmcoKQotICAgICAgICAgICAgICAgICAgICA6IG5wLmdyb3VwaW5nKCkKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGNvbnN0IGdyb3VwaW5nX3NpemUgPSBncm91cGluZy5zaXplKCk7Ci0gICAgICAgICAgICBDaGFyVCBjb25zdCB0aG91c2FuZHNfc2VwID0gc3RhdGljX2Nhc3Q8Q2hhclQ+KGdyb3VwaW5nX3NpemUgPyBucC50aG91c2FuZHNfc2VwKCkgOiAwKTsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGRlY2ltYWxfcG9pbnQgPSBucC5kZWNpbWFsX3BvaW50KCk7Ci0gICAgICAgICAgICBib29sIGZvdW5kX2dyb3VwaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGxhc3RfZ3JvdXBpbmdfcG9zID0gZ3JvdXBpbmdfc2l6ZSAtIDE7Ci0jZWxzZQotICAgICAgICAgICAgQ2hhclQgY29uc3QgZGVjaW1hbF9wb2ludCA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6Y19kZWNpbWFsX3NlcGFyYXRvcjsKLSNlbmRpZgotCi0gICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IHBsdXMgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OnBsdXM7Ci0gICAgICAgICAgICBDaGFyVCBjb25zdCBjYXBpdGFsX2UgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OmNhcGl0YWxfZTsKLSAgICAgICAgICAgIENoYXJUIGNvbnN0IGxvd2VyY2FzZV9lID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+Ojpsb3dlcmNhc2VfZTsKLQotICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPigwKTsKLQotICAgICAgICAgICAgaWYgKHBhcnNlX2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsdWUpKSByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmludF90eXBlIGludF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1hbnRpc3NhX2hvbGRlcl90eXBlPFQ+Ojp0eXBlIG1hbnRpc3NhX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbWFudGlzc2FfaG9sZGVyX3R5cGU8VD46OndpZGVfcmVzdWx0X3Qgd2lkZV9yZXN1bHRfdDsKLSAgICAgICAgICAgIGludF90eXBlIGNvbnN0IHplcm8gPSBUcmFpdHM6OnRvX2ludF90eXBlKGN6ZXJvKTsKLSAgICAgICAgICAgIGlmIChiZWdpbiA9PSBlbmQpIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgLyogR2V0dGluZyB0aGUgcGx1cy9taW51cyBzaWduICovCi0gICAgICAgICAgICBib29sIGhhc19taW51cyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKFRyYWl0czo6ZXEoKmJlZ2luLCBtaW51cykgKSB7Ci0gICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgaGFzX21pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPT0gZW5kKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKFRyYWl0czo6ZXEoKmJlZ2luLCBwbHVzKSApIHsKLSAgICAgICAgICAgICAgICArK2JlZ2luOwotICAgICAgICAgICAgICAgIGlmIChiZWdpbiA9PSBlbmQpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBmb3VuZF9kZWNpbWFsID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIGZvdW5kX251bWJlcl9iZWZvcmVfZXhwID0gZmFsc2U7Ci0gICAgICAgICAgICBpbnQgcG93X29mXzEwID0gMDsKLSAgICAgICAgICAgIG1hbnRpc3NhX3R5cGUgbWFudGlzc2E9MDsKLSAgICAgICAgICAgIGJvb2wgaXNfbWFudGlzc2FfZnVsbCA9IGZhbHNlOwotCi0gICAgICAgICAgICBjaGFyIGxlbmd0aF9zaW5jZV9sYXN0X2RlbGltID0gMDsKLQotICAgICAgICAgICAgd2hpbGUgKCBiZWdpbiAhPSBlbmQgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChmb3VuZF9kZWNpbWFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFdlIGFsbG93IG5vIHRob3VzYW5kX3NlcGFyYXRvcnMgYWZ0ZXIgZGVjaW1hbCBwb2ludCAqLwotCi0gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhX3R5cGUgdG1wX21hbnRpc3NhID0gbWFudGlzc2EgKiAxMHU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChUcmFpdHM6OmVxKCpiZWdpbiwgbG93ZXJjYXNlX2UpIHx8IFRyYWl0czo6ZXEoKmJlZ2luLCBjYXBpdGFsX2UpKSBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAqYmVnaW4gPCBjemVybyB8fCAqYmVnaW4gPj0gY3plcm8gKyAxMCApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAgICBpc19tYW50aXNzYV9mdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdG1wX21hbnRpc3NhIC8gMTB1ICE9IG1hbnRpc3NhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHN0ZDo6bnVtZXJpY19saW1pdHM8bWFudGlzc2FfdHlwZT46Om1heCkoKS0oKmJlZ2luIC0gemVybykgPCB0bXBfbWFudGlzc2EKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX21hbnRpc3NhX2Z1bGwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC0tIHBvd19vZl8xMDsKLSAgICAgICAgICAgICAgICAgICAgbWFudGlzc2EgPSB0bXBfbWFudGlzc2E7Ci0gICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhICs9ICpiZWdpbiAtIHplcm87Ci0KLSAgICAgICAgICAgICAgICAgICAgZm91bmRfbnVtYmVyX2JlZm9yZV9leHAgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCpiZWdpbiA+PSBjemVybyAmJiAqYmVnaW4gPCBjemVybyArIDEwKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoZWNraW5nIGZvciBtYW50aXNzYSBvdmVyZmxvdy4gSWYgb3ZlcmZsb3cgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAgICogb2NjdXIsIHRoZW0gd2Ugb25seSBpbmNyZWFzZSBtdWx0aXBseWVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnRpc3NhX3R5cGUgdG1wX21hbnRpc3NhID0gbWFudGlzc2EgKiAxMHU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiggICAgICFpc19tYW50aXNzYV9mdWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRtcF9tYW50aXNzYSAvIDEwdSA9PSBtYW50aXNzYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3RkOjpudW1lcmljX2xpbWl0czxtYW50aXNzYV90eXBlPjo6bWF4KSgpLSgqYmVnaW4gLSB6ZXJvKSA+PSB0bXBfbWFudGlzc2EKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudGlzc2EgPSB0bXBfbWFudGlzc2E7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudGlzc2EgKz0gKmJlZ2luIC0gemVybzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX21hbnRpc3NhX2Z1bGwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrIHBvd19vZl8xMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbnVtYmVyX2JlZm9yZV9leHAgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgKysgbGVuZ3RoX3NpbmNlX2xhc3RfZGVsaW07Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVHJhaXRzOjplcSgqYmVnaW4sIGRlY2ltYWxfcG9pbnQpIHx8IFRyYWl0czo6ZXEoKmJlZ2luLCBsb3dlcmNhc2VfZSkgfHwgVHJhaXRzOjplcSgqYmVnaW4sIGNhcGl0YWxfZSkpIHsKLSNpZm5kZWYgTkROQk9PU1RfTEVYSUNBTF9DQVNUX0FTU1VNRV9DX0xPQ0FMRQotICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgKCB3ZSBuZWVkIHRvIGNoZWNrIGdyb3VwaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgIGFuZCAoICAgZ3JvdXBpbmcgbWlzc21hdGNoZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICBvciBncm91cGluZyBwb3NpdGlvbiBpcyBpbmNvcnJlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICBvciB3ZSBhcmUgdXNpbmcgdGhlIGdyb3VwaW5nIHBvc2l0aW9uIDAgdHdpY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiAgICApIHRoZW4gcmV0dXJuIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBncm91cGluZ19zaXplICYmIGZvdW5kX2dyb3VwaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSAhPSBncm91cGluZ1swXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsYXN0X2dyb3VwaW5nX3Bvcz4xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChsYXN0X2dyb3VwaW5nX3Bvcz09MCAmJiBncm91cGluZ19zaXplPjEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICkgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKFRyYWl0czo6ZXEoKmJlZ2luLCBkZWNpbWFsX3BvaW50KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2RlY2ltYWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRfbnVtYmVyX2JlZm9yZV9leHAgJiYgYmVnaW49PWVuZCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRfbnVtYmVyX2JlZm9yZV9leHApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotI2lmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdyb3VwaW5nX3NpemUgJiYgVHJhaXRzOjplcSgqYmVnaW4sIHRob3VzYW5kc19zZXApKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZvdW5kX2dyb3VwaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0IGlzIG5vdCBoZSBmaXJzdCB0aW1lLCB3aGVuIHdlIGZpbmQgdGhvdXNhbmRzIHNlcGFyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzbyB3ZSBuZWVkIHRvIGNoZWssIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHR3byBncm91cGluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBlcXVhbCB0byBncm91cGluZ1tsYXN0X2dyb3VwaW5nX3Bvc10gKi8KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSAhPSBncm91cGluZ1tsYXN0X2dyb3VwaW5nX3Bvc10gKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0X2dyb3VwaW5nX3BvcykgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGxhc3RfZ3JvdXBpbmdfcG9zOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aF9zaW5jZV9sYXN0X2RlbGltICE9IGdyb3VwaW5nW2xhc3RfZ3JvdXBpbmdfcG9zXSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIGFyZSBjYWxsaW5nIHRoZSBncm91cGluZ1swXSB0d2ljZSwgd2hlbiBncm91cGluZyBzaXplIGlzIG1vcmUgdGhhbiAxICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cGluZ19zaXplPjF1ICYmIGxhc3RfZ3JvdXBpbmdfcG9zKzE8Z3JvdXBpbmdfc2l6ZSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGltaXRlciBhdCB0aGUgYmVnaW5pbmcgJywwMDAnICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZ3JvdXBpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGhfc2luY2VfbGFzdF9kZWxpbSA+IGdyb3VwaW5nW2xhc3RfZ3JvdXBpbmdfcG9zXSApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX3NpbmNlX2xhc3RfZGVsaW0gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGltaXRlciBhdCB0aGUgZW5kICcxMDAsJyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJlZ2luID09IGVuZCkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICArK2JlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBFeHBvbmVudCBmb3VuZAotICAgICAgICAgICAgaWYgKCBiZWdpbiAhPSBlbmQgJiYgKFRyYWl0czo6ZXEoKmJlZ2luLCBsb3dlcmNhc2VfZSkgfHwgVHJhaXRzOjplcSgqYmVnaW4sIGNhcGl0YWxfZSkpICkgewotICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIGlmICggYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAgICAgYm9vbCBleHBfaGFzX21pbnVzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYoVHJhaXRzOjplcSgqYmVnaW4sIG1pbnVzKSkgewotICAgICAgICAgICAgICAgICAgICBleHBfaGFzX21pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgKysgYmVnaW47Ci0gICAgICAgICAgICAgICAgICAgIGlmICggYmVnaW4gPT0gZW5kICkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVHJhaXRzOjplcSgqYmVnaW4sIHBsdXMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgICAgICBpZiAoIGJlZ2luID09IGVuZCApIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpbnQgZXhwX3Bvd19vZl8xMCA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKCBiZWdpbiAhPSBlbmQgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAqYmVnaW4gPCBjemVybwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICpiZWdpbiA+PSBjemVybyArIDEwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZXhwX3Bvd19vZl8xMCAqIDEwIDwgZXhwX3Bvd19vZl8xMCkgLyogT3ZlcmZsb3dzIGFyZSBjaGVja2VkIGxvd2VyIG1vcmUgcHJlY2lzZWx5Ki8KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgICAgICBleHBfcG93X29mXzEwICo9IDEwOwotICAgICAgICAgICAgICAgICAgICBleHBfcG93X29mXzEwICs9ICpiZWdpbiAtIHplcm87Ci0gICAgICAgICAgICAgICAgICAgICsrIGJlZ2luOwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgICAgICBpZiAoIGV4cF9wb3dfb2ZfMTAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE92ZXJmbG93cyBhcmUgY2hlY2tlZCBsb3dlciAqLwotICAgICAgICAgICAgICAgICAgICBpZiAoIGV4cF9oYXNfbWludXMgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwb3dfb2ZfMTAgLT0gZXhwX3Bvd19vZl8xMDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvd19vZl8xMCArPSBleHBfcG93X29mXzEwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBXZSBuZWVkIGEgbW9yZSBhY2N1cmF0ZSBhbGdvcml0aG0uLi4gV2UgY2FuIG5vdCB1c2UgY3VycmVudCBhbGdvcml0aG0KLSAgICAgICAgICAgICAqIHdpdGggbG9uZyBkb3VibGVzIChhbmQgd2l0aCBkb3VibGVzIGlmIHNpemVvZihkb3VibGUpPT1zaXplb2YobG9uZyBkb3VibGUpKS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgY29uc3Qgd2lkZV9yZXN1bHRfdCByZXN1bHQgPSBzdGQ6OnBvdyhzdGF0aWNfY2FzdDx3aWRlX3Jlc3VsdF90PigxMC4wKSwgcG93X29mXzEwKSAqIG1hbnRpc3NhOwotICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPiggaGFzX21pbnVzID8gKG5kbmJvb3N0OjptYXRoOjpjaGFuZ2VzaWduKShyZXN1bHQpIDogcmVzdWx0KTsKLQotICAgICAgICAgICAgaWYgKCAobmRuYm9vc3Q6Om1hdGg6OmlzaW5mKSh2YWx1ZSkgfHwgKG5kbmJvb3N0OjptYXRoOjppc25hbikodmFsdWUpICkgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotLy8gVW5zaWxlbmNlIGJ1Z2d5IE1TIHdhcm5pbmdzIGxpa2UgQzQyNDQ6ICcrPScgOiBjb252ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ3Vuc2lnbmVkIHNob3J0JywgcG9zc2libGUgbG9zcyBvZiBkYXRhIAotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA9PSAxNDAwKSAKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkgCi0jZW5kaWYgCi0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBwYXJzZXJfYnVmCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBjbGFzcyBwYXJzZXJfYnVmOgotICAgICAgICAvLyBhY3RzIGFzIGEgc3RyZWFtIGJ1ZmZlciB3aGljaCB3cmFwcyBhcm91bmQgYSBwYWlyIG9mIHBvaW50ZXJzCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoaXMgY2xhc3MgaXMgY29waWVkIChhbmQgc2xpZ2h0bHkgY2hhbmdlZCkgZnJvbQotICAgICAgICAvLyBuZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcAotICAgICAgICAvLyBUaGFua3MgSm9obiBNYWRkb2NrIGZvciBpdCEgKHByZXZpb3VzIHZlcnNpb24gaGFkIHNvbWUKLSAgICAgICAgLy8gcHJvYmxlbXMgd2l0aCBsaWJjKysgYW5kIHNvbWUgb3RoZXIgU1RMIGltcGxlbWVudGF0aW9ucykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEJ1ZmZlclR5cGUsIGNsYXNzIGNoYXJUPgotICAgICAgICBjbGFzcyBwYXJzZXJfYnVmIDogcHVibGljIEJ1ZmZlclR5cGUgewotICAgICAgICAgICB0eXBlZGVmIEJ1ZmZlclR5cGUgYmFzZV90eXBlOwotICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6aW50X3R5cGUgaW50X3R5cGU7Ci0gICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV90eXBlOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6cG9zX3R5cGUgcG9zX3R5cGU7Ci0gICAgICAgICAgIHR5cGVkZWYgOjpzdGQ6OnN0cmVhbXNpemUgc3RyZWFtc2l6ZTsKLSAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6Om9mZl90eXBlIG9mZl90eXBlOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgcGFyc2VyX2J1ZigpIDogYmFzZV90eXBlKCkgeyBzZXRidWYoMCwgMCk7IH0KLSAgICAgICAgICAgY29uc3QgY2hhclQqIGdldG5leHQoKSB7IHJldHVybiB0aGlzLT5ncHRyKCk7IH0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLSAgICAgICAgICAgIHVzaW5nIGJhc2VfdHlwZTo6cHB0cjsKLSAgICAgICAgICAgIHVzaW5nIGJhc2VfdHlwZTo6cGJhc2U7Ci0jZWxzZQotICAgICAgICAgICAgY2hhclQqIHBwdHIoKSBjb25zdCB7IHJldHVybiBiYXNlX3R5cGU6OnBwdHIoKTsgfQotICAgICAgICAgICAgY2hhclQqIHBiYXNlKCkgY29uc3QgeyByZXR1cm4gYmFzZV90eXBlOjpwYmFzZSgpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgYmFzZV90eXBlKiBzZXRidWYoY2hhcl90eXBlKiBzLCBzdHJlYW1zaXplIG4pIHsKLSAgICAgICAgICAgICAgIHRoaXMtPnNldGcocywgcywgcyArIG4pOwotICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICBwb3NfdHlwZSBzZWVrcG9zKHBvc190eXBlIHNwLCA6OnN0ZDo6aW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoKSB7Ci0gICAgICAgICAgICAgICBpZih3aGljaCAmIDo6c3RkOjppb3NfYmFzZTo6b3V0KQotICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICAgICAgICAgICBvZmZfdHlwZSBzaXplID0gc3RhdGljX2Nhc3Q8b2ZmX3R5cGU+KHRoaXMtPmVncHRyKCkgLSB0aGlzLT5lYmFjaygpKTsKLSAgICAgICAgICAgICAgIGNoYXJUKiBnID0gdGhpcy0+ZWJhY2soKTsKLSAgICAgICAgICAgICAgIGlmKG9mZl90eXBlKHNwKSA8PSBzaXplKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgb2ZmX3R5cGUoc3ApLCBnICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICBwb3NfdHlwZSBzZWVrb2ZmKG9mZl90eXBlIG9mZiwgOjpzdGQ6Omlvc19iYXNlOjpzZWVrZGlyIHdheSwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCkgewotICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aW50X3Q8c2l6ZW9mKHdheSkgKiBDSEFSX0JJVD46OmxlYXN0IGNhc3RfdHlwZTsKLQotICAgICAgICAgICAgICAgaWYod2hpY2ggJiA6OnN0ZDo6aW9zX2Jhc2U6Om91dCkKLSAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3Qgc2l6ZSA9IHRoaXMtPmVncHRyKCkgLSB0aGlzLT5lYmFjaygpOwotICAgICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QgcG9zID0gdGhpcy0+Z3B0cigpIC0gdGhpcy0+ZWJhY2soKTsKLSAgICAgICAgICAgICAgIGNoYXJUKiBnID0gdGhpcy0+ZWJhY2soKTsKLSAgICAgICAgICAgICAgIHN3aXRjaChzdGF0aWNfY2FzdDxjYXN0X3R5cGU+KHdheSkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBjYXNlIDo6c3RkOjppb3NfYmFzZTo6YmVnOgotICAgICAgICAgICAgICAgICAgaWYoKG9mZiA8IDApIHx8IChvZmYgPiBzaXplKSkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgb2ZmLCBnICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjplbmQ6Ci0gICAgICAgICAgICAgICAgICBpZigob2ZmIDwgMCkgfHwgKG9mZiA+IHNpemUpKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBzaXplIC0gb2ZmLCBnICsgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgIGNhc2UgOjpzdGQ6Omlvc19iYXNlOjpjdXI6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCBuZXdwb3MgPSBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4ocG9zICsgb2ZmKTsKLSAgICAgICAgICAgICAgICAgIGlmKChuZXdwb3MgPCAwKSB8fCAobmV3cG9zID4gc2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnNldGcoZywgZyArIG5ld3BvcywgZyArIHNpemUpOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBkZWZhdWx0OiA7Ci0gICAgICAgICAgICAgICB9Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0gICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9zX3R5cGU+KHRoaXMtPmdwdHIoKSAtIHRoaXMtPmViYWNrKCkpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgcGFyc2VyX2J1ZiYgb3BlcmF0b3I9KGNvbnN0IHBhcnNlcl9idWYmKTsKLSAgICAgICAgICAgcGFyc2VyX2J1Zihjb25zdCBwYXJzZXJfYnVmJik7Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgICAgc3RydWN0IGRvX25vdF9jb25zdHJ1Y3Rfb3V0X3N0cmVhbV90e307Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbCAvLyBvcHRpbWl6ZWQgc3RyZWFtIHdyYXBwZXIKLSAgICB7Ci0gICAgICAgIC8vIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBTb3VyY2UgaGFzIGFuIHVwcGVyIGxpbWl0LgotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhclQgLy8gYSByZXN1bHQgb2Ygd2lkZXN0X2NoYXIgdHJhbnNmb3JtYXRpb24KLSAgICAgICAgICAgICAgICAsIGNsYXNzIFRyYWl0cyAvLyB1c3VhbGx5IGNoYXJfdHJhaXRzPENoYXJUPgotICAgICAgICAgICAgICAgICwgYm9vbCBSZXF1aXJlc1N0cmluZ2J1ZmZlcgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgY2xhc3MgbGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmMKLSAgICAgICAgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6b3N0cnN0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtX3Q7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6b3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIHBhcnNlcl9idWY8c3RkOjpzdHJlYW1idWYsIGNoYXI+ICAgICAgICBidWZmZXJfdDsKLSNlbHNlCi0gICAgICAgICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfb3N0cmluZ3N0cmVhbTxDaGFyVCwgVHJhaXRzPiAgICAgICAgICAgICAgICAgb3V0X3N0cmVhbV90OwotICAgICAgICAgICAgdHlwZWRlZiBwYXJzZXJfYnVmPHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoYXJULCBUcmFpdHM+LCBDaGFyVD4gIGJ1ZmZlcl90OwotI2VuZGlmCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICBSZXF1aXJlc1N0cmluZ2J1ZmZlciwKLSAgICAgICAgICAgICAgICBvdXRfc3RyZWFtX3QsCi0gICAgICAgICAgICAgICAgZG9fbm90X2NvbnN0cnVjdF9vdXRfc3RyZWFtX3QKLSAgICAgICAgICAgID46OnR5cGUgZGVkdWNlZF9vdXRfc3RyZWFtX3Q7Ci0KLSAgICAgICAgICAgIC8vIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFNvdXJjZSBpcyB3cml0dGVuIHRvIFtzdGFydCwgZmluaXNoKS4KLSAgICAgICAgICAgIENoYXJUKiBzdGFydDsKLSAgICAgICAgICAgIENoYXJUKiBmaW5pc2g7Ci0gICAgICAgICAgICBkZWR1Y2VkX291dF9zdHJlYW1fdCBvdXRfc3RyZWFtOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGxleGljYWxfc3RyZWFtX2xpbWl0ZWRfc3JjKENoYXJUKiBzdGEsIENoYXJUKiBmaW4pIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICAgIDogc3RhcnQoc3RhKQotICAgICAgICAgICAgICAsIGZpbmlzaChmaW4pCi0gICAgICAgICAgICB7fQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAvLyBVbmRlZmluZWQ6Ci0gICAgICAgICAgICBsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYyhsZXhpY2FsX3N0cmVhbV9saW1pdGVkX3NyYyBjb25zdCYpOwotICAgICAgICAgICAgdm9pZCBvcGVyYXRvcj0obGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmMgY29uc3QmKTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBIRUxQRVIgRlVOQ1RJT05TIEZPUiBPUEVSQVRPUlMgPDwgKCAuLi4gKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICAgICAgICAgIGJvb2wgc2hsX2NoYXIoQ2hhclQgY2gpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24oKnN0YXJ0LCBjaCk7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gc3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgYm9vbCBzaGxfY2hhcihUIGNoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfTVNHKCggc2l6ZW9mKFQpIDw9IHNpemVvZihDaGFyVCkpICwKLSAgICAgICAgICAgICAgICAgICAgIm5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgZG9lcyBub3Qgc3VwcG9ydCBuYXJyb3dpbmcgb2YgY2hhciB0eXBlcy4iCi0gICAgICAgICAgICAgICAgICAgICJVc2UgbmRuYm9vc3Q6OmxvY2FsZSBpbnN0ZWFkIiApOwotI2lmbmRlZiBORE5CT09TVF9MRVhJQ0FMX0NBU1RfQVNTVU1FX0NfTE9DQUxFCi0gICAgICAgICAgICAgICAgc3RkOjpsb2NhbGUgbG9jOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IHcgPSBORE5CT09TVF9VU0VfRkFDRVQoc3RkOjpjdHlwZTxDaGFyVD4sIGxvYykud2lkZW4oY2gpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCB3ID0gc3RhdGljX2Nhc3Q8Q2hhclQ+KGNoKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpzdGFydCwgdyk7Ci0gICAgICAgICAgICAgICAgZmluaXNoID0gc3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIGJvb2wgc2hsX2NoYXJfYXJyYXkoQ2hhclQgY29uc3QqIHN0cikgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGFydCA9IGNvbnN0X2Nhc3Q8Q2hhclQqPihzdHIpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0YXJ0ICsgVHJhaXRzOjpsZW5ndGgoc3RyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICAgICBib29sIHNobF9jaGFyX2FycmF5KFQgY29uc3QqIHN0cikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygoIHNpemVvZihUKSA8PSBzaXplb2YoQ2hhclQpKSwKLSAgICAgICAgICAgICAgICAgICAgIm5kbmJvb3N0OjpsZXhpY2FsX2Nhc3QgZG9lcyBub3Qgc3VwcG9ydCBuYXJyb3dpbmcgb2YgY2hhciB0eXBlcy4iCi0gICAgICAgICAgICAgICAgICAgICJVc2UgbmRuYm9vc3Q6OmxvY2FsZSBpbnN0ZWFkIiApOwotICAgICAgICAgICAgICAgIHJldHVybiBzaGxfaW5wdXRfc3RyZWFtYWJsZShzdHIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBib29sIHNobF9jaGFyX2FycmF5X2xpbWl0ZWQoQ2hhclQgY29uc3QqIHN0ciwgc3RkOjpzaXplX3QgbWF4X3NpemUpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBjb25zdF9jYXN0PENoYXJUKj4oc3RyKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBzdGQ6OmZpbmQoc3RhcnQsIHN0YXJ0ICsgbWF4X3NpemUsIFRyYWl0czo6dG9fY2hhcl90eXBlKDApKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJlYW1hYmxlPgotICAgICAgICAgICAgYm9vbCBzaGxfaW5wdXRfc3RyZWFtYWJsZShJbnB1dFN0cmVhbWFibGUmIGlucHV0KQotICAgICAgICAgICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICAgICAgLy8gSWYgeW91IGhhdmUgY29tcGlsYXRpb24gZXJyb3IgYXQgdGhpcyBwb2ludCwgdGhhbiB5b3VyIFNUTCBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgLy8gZG9lcyBub3Qgc3VwcG9ydCBzdWNoIGNvbnZlcnNpb25zLiBUcnkgdXBkYXRpbmcgaXQuCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgobmRuYm9vc3Q6OmlzX3NhbWU8Y2hhciwgQ2hhclQ+Ojp2YWx1ZSkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgYm9vbCBjb25zdCByZXN1bHQgPSAhKG91dF9zdHJlYW0gPDwgaW5wdXQpLmZhaWwoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBidWZmZXJfdCogY29uc3QgcCA9IHN0YXRpY19jYXN0PGJ1ZmZlcl90Kj4oCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6YmFzaWNfc3RyZWFtYnVmPENoYXJULCBUcmFpdHM+Kj4ob3V0X3N0cmVhbS5yZGJ1ZigpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBwLT5wYmFzZSgpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHAtPnBwdHIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgICAgIGlubGluZSBib29sIHNobF9zaWduZWQoVCBuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obGNhc3RfdG9fdW5zaWduZWQobiksIGZpbmlzaCk7Ci0gICAgICAgICAgICAgICAgaWYobiA8IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAtLXN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgICAgIFRyYWl0czo6YXNzaWduKCpzdGFydCwgbWludXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFNvbWVDaGFyVD4KLSAgICAgICAgICAgIGJvb2wgc2hsX3JlYWxfdHlwZShjb25zdCBUJiB2YWwsIFNvbWVDaGFyVCogYmVnaW4sIFNvbWVDaGFyVComIGVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgbGNhc3Rfc2V0X3ByZWNpc2lvbihvdXRfc3RyZWFtLCAmdmFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hsX2lucHV0X3N0cmVhbWFibGUodmFsKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdGljIGJvb2wgc2hsX3JlYWxfdHlwZShmbG9hdCB2YWwsIGNoYXIqIGJlZ2luLCBjaGFyKiYgZW5kKQotICAgICAgICAgICAgeyAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dF9pbmZfbmFuKGJlZ2luLCBlbmQsIHZhbCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB2YWxfYXNfZG91YmxlID0gdmFsOwotICAgICAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmX3MoYmVnaW4sIGVuZC1iZWdpbiwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYmVnaW4sIAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICIlLipnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGZsb2F0PigpKSwgdmFsX2FzX2RvdWJsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGRvdWJsZSB2YWwsIGNoYXIqIGJlZ2luLCBjaGFyKiYgZW5kKQotICAgICAgICAgICAgeyAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dF9pbmZfbmFuKGJlZ2luLCBlbmQsIHZhbCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE0MDApICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmX3MoYmVnaW4sIGVuZC1iZWdpbiwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYmVnaW4sIAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICIlLipnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGRvdWJsZT4oKSksIHZhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0jaWZuZGVmIF9fTUlOR1czMl9fCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGxvbmcgZG91YmxlIHZhbCwgY2hhciogYmVnaW4sIGNoYXIqJiBlbmQpCi0gICAgICAgICAgICB7ICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGZfcyhiZWdpbiwgZW5kLWJlZ2luLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihiZWdpbiwgCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgIiUuKkxnIiwgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGxvbmcgZG91YmxlPigpKSwgdmFsICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotI2VuZGlmCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NXUFJJTlRGKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKLSAgICAgICAgICAgIHN0YXRpYyBib29sIHNobF9yZWFsX3R5cGUoZmxvYXQgdmFsLCB3Y2hhcl90KiBiZWdpbiwgd2NoYXJfdComIGVuZCkKLSAgICAgICAgICAgIHsgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAgICAgICAgICAgICAgIGlmIChwdXRfaW5mX25hbihiZWdpbiwgZW5kLCB2YWwpKSByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgdmFsX2FzX2RvdWJsZSA9IHZhbDsKLSAgICAgICAgICAgICAgICBlbmQgPSBiZWdpbiArIHN3cHJpbnRmKGJlZ2luLCBlbmQtYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiUuKmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihuZG5ib29zdDo6ZGV0YWlsOjpsY2FzdF9nZXRfcHJlY2lzaW9uPGZsb2F0ID4oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxfYXNfZG91YmxlICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGRvdWJsZSB2YWwsIHdjaGFyX3QqIGJlZ2luLCB3Y2hhcl90KiYgZW5kKQotICAgICAgICAgICAgeyAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgaWYgKHB1dF9pbmZfbmFuKGJlZ2luLCBlbmQsIHZhbCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGVuZCA9IGJlZ2luICsgc3dwcmludGYoYmVnaW4sIGVuZC1iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJS4qZyIsIHN0YXRpY19jYXN0PGludD4obmRuYm9vc3Q6OmRldGFpbDo6bGNhc3RfZ2V0X3ByZWNpc2lvbjxkb3VibGUgPigpKSwgdmFsICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuZCA+IGJlZ2luOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzdGF0aWMgYm9vbCBzaGxfcmVhbF90eXBlKGxvbmcgZG91YmxlIHZhbCwgd2NoYXJfdCogYmVnaW4sIHdjaGFyX3QqJiBlbmQpCi0gICAgICAgICAgICB7ICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgICAgICAgICAgICBpZiAocHV0X2luZl9uYW4oYmVnaW4sIGVuZCwgdmFsKSkgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgZW5kID0gYmVnaW4gKyBzd3ByaW50ZihiZWdpbiwgZW5kLWJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlLipMZyIsIHN0YXRpY19jYXN0PGludD4obmRuYm9vc3Q6OmRldGFpbDo6bGNhc3RfZ2V0X3ByZWNpc2lvbjxsb25nIGRvdWJsZSA+KCkpLCB2YWwgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5kID4gYmVnaW47Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBPUEVSQVRPUlMgPDwgKCAuLi4gKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgQWxsb2M+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQsVHJhaXRzLEFsbG9jPiBjb25zdCYgc3RyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY29uc3RfY2FzdDxDaGFyVCo+KHN0ci5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0YXJ0ICsgc3RyLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBBbGxvYz4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8Q2hhclQsVHJhaXRzLEFsbG9jPiBjb25zdCYgc3RyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY29uc3RfY2FzdDxDaGFyVCo+KHN0ci5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGZpbmlzaCA9IHN0YXJ0ICsgc3RyLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBjemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgICAgICBUcmFpdHM6OmFzc2lnbigqc3RhcnQsIFRyYWl0czo6dG9fY2hhcl90eXBlKGN6ZXJvICsgdmFsdWUpKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBzdGFydCArIDE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTxDaGFyVCo+JiBybmcpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhcnQgPSBybmcuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBybmcuZW5kKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IAotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY29uc3QgaXRlcmF0b3JfcmFuZ2U8Y29uc3QgQ2hhclQqPiYgcm5nKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXJ0ID0gY29uc3RfY2FzdDxDaGFyVCo+KHJuZy5iZWdpbigpKTsKLSAgICAgICAgICAgICAgICBmaW5pc2ggPSBjb25zdF9jYXN0PENoYXJUKj4ocm5nLmVuZCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTxjb25zdCBzaWduZWQgY2hhcio+JiBybmcpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgqdGhpcykgPDwgaXRlcmF0b3JfcmFuZ2U8Y2hhcio+KAotICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihybmcuYmVnaW4oKSkpLAotICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PGNoYXIqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihybmcuZW5kKCkpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTxjb25zdCB1bnNpZ25lZCBjaGFyKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCp0aGlzKSA8PCBpdGVyYXRvcl9yYW5nZTxjaGFyKj4oCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJuZy5iZWdpbigpKSksCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJuZy5lbmQoKSkpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IGl0ZXJhdG9yX3JhbmdlPHNpZ25lZCBjaGFyKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCp0aGlzKSA8PCBpdGVyYXRvcl9yYW5nZTxjaGFyKj4oCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJuZy5iZWdpbigpKSwKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocm5nLmVuZCgpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBpdGVyYXRvcl9yYW5nZTx1bnNpZ25lZCBjaGFyKj4mIHJuZykgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gKCp0aGlzKSA8PCBpdGVyYXRvcl9yYW5nZTxjaGFyKj4oCi0gICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJuZy5iZWdpbigpKSwKLSAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocm5nLmVuZCgpKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyIGNoKSAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXIoY2gpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciBjaCkgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHN0YXRpY19jYXN0PGNoYXI+KGNoKSk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzaWduZWQgY2hhciBjaCkgICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oY2gpKTsgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwod2NoYXJfdCBjb25zdCogc3RyKSAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh3Y2hhcl90ICogc3RyKSAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotI2lmbmRlZiBORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHdjaGFyX3QgY2gpICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcihjaCk7IH0KLSNlbmRpZgotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhcjE2X3QgY2gpICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyKGNoKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIxNl90ICogc3RyKSAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheShzdHIpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhcjE2X3QgY29uc3QgKiBzdHIpICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIzMl90IGNoKSAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcihjaCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyMzJfdCAqIHN0cikgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNoYXIzMl90IGNvbnN0ICogc3RyKSAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheShzdHIpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh1bnNpZ25lZCBjaGFyIGNvbnN0KiBjaCkgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyIGNvbnN0Kj4oY2gpKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHVuc2lnbmVkIGNoYXIgKiBjaCkgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PGNoYXIgKj4oY2gpKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHNpZ25lZCBjaGFyIGNvbnN0KiBjaCkgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PGNoYXIgY29uc3QqPihjaCkpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgKiBjaCkgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPihjaCkpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoY2hhciBjb25zdCogc3RyKSAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5KHN0cik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjaGFyKiBzdHIpICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX2NoYXJfYXJyYXkoc3RyKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHNob3J0IG4pICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfc2lnbmVkKG4pOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoaW50IG4pICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9zaWduZWQobik7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChsb25nIG4pICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hsX3NpZ25lZChuKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHVuc2lnbmVkIHNob3J0IG4pICAgICAgICAgICB7IHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obiwgZmluaXNoKTsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PCh1bnNpZ25lZCBpbnQgbikgICAgICAgICAgICAgeyBzdGFydCA9IGxjYXN0X3B1dF91bnNpZ25lZDxUcmFpdHM+KG4sIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBuKSAgICAgICAgICAgIHsgc3RhcnQgPSBsY2FzdF9wdXRfdW5zaWduZWQ8VHJhaXRzPihuLCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUgbikgICB7IHN0YXJ0ID0gbGNhc3RfcHV0X3Vuc2lnbmVkPFRyYWl0cz4obiwgZmluaXNoKTsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbikgICAgeyByZXR1cm4gc2hsX3NpZ25lZChuKTsgfQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwodW5zaWduZWQgX19pbnQ2NCBuKSAgICAgICAgIHsgc3RhcnQgPSBsY2FzdF9wdXRfdW5zaWduZWQ8VHJhaXRzPihuLCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KCAgICAgICAgIF9faW50NjQgbikgICAgICAgICB7IHJldHVybiBzaGxfc2lnbmVkKG4pOyB9Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUmIG4pICAgeyBzdGFydCA9IGxjYXN0X3B1dF91bnNpZ25lZDxUcmFpdHM+KG4sIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBuZG5ib29zdDo6aW50MTI4X3R5cGUmIG4pICAgIHsgcmV0dXJuIHNobF9zaWduZWQobik7IH0KLSNlbmRpZgotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoZmxvYXQgdmFsKSAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNobF9yZWFsX3R5cGUodmFsLCBzdGFydCwgZmluaXNoKTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGRvdWJsZSB2YWwpICAgICAgICAgICAgICAgICB7IHJldHVybiBzaGxfcmVhbF90eXBlKHZhbCwgc3RhcnQsIGZpbmlzaCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChsb25nIGRvdWJsZSB2YWwpICAgICAgICAgICAgewotI2lmbmRlZiBfX01JTkdXMzJfXwotICAgICAgICAgICAgICAgIHJldHVybiBzaGxfcmVhbF90eXBlKHZhbCwgc3RhcnQsIGZpbmlzaCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBzaGxfcmVhbF90eXBlKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsKSwgc3RhcnQsIGZpbmlzaCk7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PENoYXJULCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiBzaGxfY2hhcl9hcnJheV9saW1pdGVkKGlucHV0LmJlZ2luKCksIE4pOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0OjphcnJheTx1bnNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KG5kbmJvb3N0OjphcnJheTxzaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChuZG5ib29zdDo6YXJyYXk8Y29uc3QgQ2hhclQsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuIHNobF9jaGFyX2FycmF5X2xpbWl0ZWQoaW5wdXQuYmVnaW4oKSwgTik7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PGNvbnN0IHVuc2lnbmVkIGNoYXIsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNvbnN0IGNoYXIsIE4+IGNvbnN0JiA+KGlucHV0KSk7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwobmRuYm9vc3Q6OmFycmF5PGNvbnN0IHNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjb25zdCBjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0gCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX0hEUl9BUlJBWQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc3RkOjphcnJheTxDaGFyVCwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc2l6ZSgpKSByZXR1cm4gc2hsX2NoYXJfYXJyYXlfbGltaXRlZCgmaW5wdXRbMF0sIE4pOwotICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHRydWU7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PHVuc2lnbmVkIGNoYXIsIE4+IGNvbnN0JiBpbnB1dCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgICAgIHsgcmV0dXJuICgoKnRoaXMpIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNoYXIsIE4+IGNvbnN0JiA+KGlucHV0KSk7IH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPDwoc3RkOjphcnJheTxzaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PGNvbnN0IENoYXJULCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zaXplKCkpIHJldHVybiBzaGxfY2hhcl9hcnJheV9saW1pdGVkKCZpbnB1dFswXSwgTik7Ci0gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gdHJ1ZTsgCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KHN0ZDo6YXJyYXk8Y29uc3QgdW5zaWduZWQgY2hhciwgTj4gY29uc3QmIGlucHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgeyByZXR1cm4gKCgqdGhpcykgPDwgcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y29uc3QgY2hhciwgTj4gY29uc3QmID4oaW5wdXQpKTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChzdGQ6OmFycmF5PGNvbnN0IHNpZ25lZCBjaGFyLCBOPiBjb25zdCYgaW5wdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IHJldHVybiAoKCp0aGlzKSA8PCByZWludGVycHJldF9jYXN0PG5kbmJvb3N0OjphcnJheTxjb25zdCBjaGFyLCBOPiBjb25zdCYgPihpbnB1dCkpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEluU3RyZWFtYWJsZT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I8PChjb25zdCBJblN0cmVhbWFibGUmIGlucHV0KSAgeyByZXR1cm4gc2hsX2lucHV0X3N0cmVhbWFibGUoaW5wdXQpOyB9Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogSEVMUEVSIEZVTkNUSU9OUyBGT1IgT1BFUkFUT1JTID4+ICggLi4uICkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgICAgIHByaXZhdGU6Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgotICAgICAgICAgICAgYm9vbCBzaHJfdW5zaWduZWQoVHlwZSYgb3V0cHV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBmaW5pc2gpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgcGx1cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6cGx1czsKLSAgICAgICAgICAgICAgICBib29sIGhhc19taW51cyA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgLyogV2Ugd29uYHQgdXNlIGBzdGFydCcgYW55IG1vcmUsIHNvIG5vIG5lZWQgaW4gZGVjcmVtZW50aW5nIGl0IGFmdGVyICovCi0gICAgICAgICAgICAgICAgaWYgKCBUcmFpdHM6OmVxKG1pbnVzLCpzdGFydCkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKytzdGFydDsKLSAgICAgICAgICAgICAgICAgICAgaGFzX21pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBUcmFpdHM6OmVxKCBwbHVzLCAqc3RhcnQgKSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGJvb2wgY29uc3Qgc3VjY2VlZCA9IGxjYXN0X3JldF91bnNpZ25lZDxUcmFpdHM+KG91dHB1dCwgc3RhcnQsIGZpbmlzaCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaGFzX21pbnVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0YXRpY19jYXN0PFR5cGU+KDB1IC0gb3V0cHV0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+Ci0gICAgICAgICAgICBib29sIHNocl9zaWduZWQoVHlwZSYgb3V0cHV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBmaW5pc2gpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgcGx1cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6cGx1czsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbWFrZV91bnNpZ25lZDxUeXBlPjo6dHlwZSB1dHlwZTsKLSAgICAgICAgICAgICAgICB1dHlwZSBvdXRfdG1wID0wOwotICAgICAgICAgICAgICAgIGJvb2wgaGFzX21pbnVzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICAvKiBXZSB3b25gdCB1c2UgYHN0YXJ0JyBhbnkgbW9yZSwgc28gbm8gbmVlZCBpbiBkZWNyZW1lbnRpbmcgaXQgYWZ0ZXIgKi8KLSAgICAgICAgICAgICAgICBpZiAoIFRyYWl0czo6ZXEobWludXMsKnN0YXJ0KSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICBoYXNfbWludXMgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIFRyYWl0czo6ZXEocGx1cywgKnN0YXJ0KSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGJvb2wgc3VjY2VlZCA9IGxjYXN0X3JldF91bnNpZ25lZDxUcmFpdHM+KG91dF90bXAsIHN0YXJ0LCBmaW5pc2gpOwotICAgICAgICAgICAgICAgIGlmIChoYXNfbWludXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdXR5cGUgY29uc3QgY29tcF92YWwgPSAoc3RhdGljX2Nhc3Q8dXR5cGU+KDEpIDw8IHN0ZDo6bnVtZXJpY19saW1pdHM8VHlwZT46OmRpZ2l0cyk7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2NlZWQgPSBzdWNjZWVkICYmIG91dF90bXA8PWNvbXBfdmFsOwotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdGF0aWNfY2FzdDxUeXBlPigwdSAtIG91dF90bXApOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHV0eXBlIGNvbnN0IGNvbXBfdmFsID0gc3RhdGljX2Nhc3Q8dXR5cGU+KChzdGQ6Om51bWVyaWNfbGltaXRzPFR5cGU+OjptYXgpKCkpOwotICAgICAgICAgICAgICAgICAgICBzdWNjZWVkID0gc3VjY2VlZCAmJiBvdXRfdG1wPD1jb21wX3ZhbDsKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gb3V0X3RtcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtYWJsZT4KLSAgICAgICAgICAgIGJvb2wgc2hyX3VzaW5nX2Jhc2VfY2xhc3MoSW5wdXRTdHJlYW1hYmxlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coCi0gICAgICAgICAgICAgICAgICAgICghbmRuYm9vc3Q6OmlzX3BvaW50ZXI8SW5wdXRTdHJlYW1hYmxlPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAibmRuYm9vc3Q6OmxleGljYWxfY2FzdCBjYW4gbm90IGNvbnZlcnQgdG8gcG9pbnRlcnMiCi0gICAgICAgICAgICAgICAgKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coKG5kbmJvb3N0Ojppc19zYW1lPGNoYXIsIENoYXJUPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAibmRuYm9vc3Q6OmxleGljYWxfY2FzdCBjYW4gbm90IGNvbnZlcnQsIGJlY2F1c2UgeW91ciBTVEwgbGlicmFyeSBkb2VzIG5vdCAiCi0gICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHN1Y2ggY29udmVyc2lvbnMuIFRyeSB1cGRhdGluZyBpdC4iCi0gICAgICAgICAgICAgICAgKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgICAgICAgICAgICAgc3RkOjppc3Ryc3RyZWFtIHN0cmVhbShzdGFydCwgZmluaXNoIC0gc3RhcnQpOwotI2Vsc2UKLQotICAgICAgICAgICAgICAgIGJ1ZmZlcl90IGJ1ZjsKLSAgICAgICAgICAgICAgICBidWYuc2V0YnVmKHN0YXJ0LCBmaW5pc2ggLSBzdGFydCk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKQotICAgICAgICAgICAgICAgIHN0ZDo6aXN0cmVhbSBzdHJlYW0oJmJ1Zik7Ci0jZWxzZQotICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCwgVHJhaXRzPiBzdHJlYW0oJmJ1Zik7Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTQotCi0gICAgICAgICAgICAgICAgc3RyZWFtLnVuc2V0ZihzdGQ6Omlvczo6c2tpcHdzKTsKLSAgICAgICAgICAgICAgICBsY2FzdF9zZXRfcHJlY2lzaW9uKHN0cmVhbSwgc3RhdGljX2Nhc3Q8SW5wdXRTdHJlYW1hYmxlKj4oMCkpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmVhbSA+PiBvdXRwdXQgJiYKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmdldCgpID09Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fPDMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX1dTVFJJTkcpCi0gICAgICAgIC8vIEdDQyAyLjl4IGxhY2tzIHN0ZDo6Y2hhcl90cmFpdHM8Pjo6ZW9mKCkuCi0gICAgICAgIC8vIFdlIHVzZSBORE5CT09TVF9OT19TVERfV1NUUklORyB0byBmaWx0ZXIgb3V0IFNUTHBvcnQgYW5kIGxpYnN0ZGMrKy12MwotICAgICAgICAvLyBjb25maWd1cmF0aW9ucywgd2hpY2ggZG8gcHJvdmlkZSBzdGQ6OmNoYXJfdHJhaXRzPD46OmVvZigpLgotCi0gICAgICAgICAgICAgICAgICAgIEVPRjsKLSNlbHNlCi0gICAgICAgICAgICAgICAgVHJhaXRzOjplb2YoKTsKLSNlbmRpZgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICAgICAgaW5saW5lIGJvb2wgc2hyX3hjaGFyKFQmIG91dHB1dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUX01TRygoIHNpemVvZihDaGFyVCkgPT0gc2l6ZW9mKFQpICksCi0gICAgICAgICAgICAgICAgICAgICJuZG5ib29zdDo6bGV4aWNhbF9jYXN0IGRvZXMgbm90IHN1cHBvcnQgbmFycm93aW5nIG9mIGNoYXJhY3RlciB0eXBlcy4iCi0gICAgICAgICAgICAgICAgICAgICJVc2UgbmRuYm9vc3Q6OmxvY2FsZSBpbnN0ZWFkIiApOwotICAgICAgICAgICAgICAgIGJvb2wgY29uc3Qgb2sgPSAoZmluaXNoIC0gc3RhcnQgPT0gMSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9rKSB7Ci0gICAgICAgICAgICAgICAgICAgIENoYXJUIG91dDsKLSAgICAgICAgICAgICAgICAgICAgVHJhaXRzOjphc3NpZ24ob3V0LCAqc3RhcnQpOwotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdGF0aWNfY2FzdDxUPihvdXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gb2s7Ci0gICAgICAgICAgICB9Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogT1BFUkFUT1JTID4+ICggLi4uICkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pih1bnNpZ25lZCBzaG9ydCYgb3V0cHV0KSAgICAgICAgICAgICB7IHJldHVybiBzaHJfdW5zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYgb3V0cHV0KSAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl91bnNpZ25lZChvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyBpbnQmIG91dHB1dCkgICAgICAgICAgeyByZXR1cm4gc2hyX3Vuc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzaG9ydCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihpbnQmIG91dHB1dCkgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pihsb25nIGludCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4obmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSYgb3V0cHV0KSAgICAgeyByZXR1cm4gc2hyX3Vuc2lnbmVkKG91dHB1dCk7IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUmIG91dHB1dCkgICAgICB7IHJldHVybiBzaHJfc2lnbmVkKG91dHB1dCk7IH0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHVuc2lnbmVkIF9faW50NjQmIG91dHB1dCkgICAgICAgICAgIHsgcmV0dXJuIHNocl91bnNpZ25lZChvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oX19pbnQ2NCYgb3V0cHV0KSAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3NpZ25lZChvdXRwdXQpOyB9Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX0xDQVNUX0hBU19JTlQxMjgKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6dWludDEyOF90eXBlJiBvdXRwdXQpICAgICAgICB7IHJldHVybiBzaHJfdW5zaWduZWQob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KG5kbmJvb3N0OjppbnQxMjhfdHlwZSYgb3V0cHV0KSAgICAgICAgIHsgcmV0dXJuIHNocl9zaWduZWQob3V0cHV0KTsgfQotI2VuZGlmCi0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihjaGFyJiBvdXRwdXQpICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfeGNoYXIob3V0cHV0KTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHVuc2lnbmVkIGNoYXImIG91dHB1dCkgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl94Y2hhcihvdXRwdXQpOyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIG91dHB1dCkgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3hjaGFyKG91dHB1dCk7IH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pih3Y2hhcl90JiBvdXRwdXQpICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBzaHJfeGNoYXIob3V0cHV0KTsgfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfQ0hBUjE2X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUNPREVfTElURVJBTFMpCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oY2hhcjE2X3QmIG91dHB1dCkgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gc2hyX3hjaGFyKG91dHB1dCk7IH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NIQVIzMl9UKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9VTklDT0RFX0xJVEVSQUxTKQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGNoYXIzMl90JiBvdXRwdXQpICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHNocl94Y2hhcihvdXRwdXQpOyB9Ci0jZW5kaWYKLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEFsbG9jPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJULFRyYWl0cyxBbGxvYz4mIHN0cikgeyBzdHIuYXNzaWduKHN0YXJ0LCBmaW5pc2gpOyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBBbGxvYz4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8Q2hhclQsVHJhaXRzLEFsbG9jPiYgc3RyKSB7IHN0ci5hc3NpZ24oc3RhcnQsIGZpbmlzaCk7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTiwgY2xhc3MgQXJyYXlUPgotICAgICAgICAgICAgYm9vbCBzaHJfc3RkX2FycmF5KEFycmF5VCYgb3V0cHV0KSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzaXplX3Qgc2l6ZSA9IGZpbmlzaCAtIHN0YXJ0OwotICAgICAgICAgICAgICAgIGlmIChzaXplID4gTiAtIDEpIHsgLy8gYC0xYCBiZWNhdXNlIHdlIG5lZWQgdG8gc3RvcmUgXDAgYXQgdGhlIGVuZCAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1lbWNweSgmb3V0cHV0WzBdLCBzdGFydCwgc2l6ZSAqIHNpemVvZihDaGFyVCkpOwotICAgICAgICAgICAgICAgIG91dHB1dFtzaXplXSA9IFRyYWl0czo6dG9fY2hhcl90eXBlKDApOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgcHVibGljOgotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6YXJyYXk8Q2hhclQsIE4+JiBvdXRwdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiBzaHJfc3RkX2FycmF5PE4+KG91dHB1dCk7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihuZG5ib29zdDo6YXJyYXk8dW5zaWduZWQgY2hhciwgTj4mIG91dHB1dCkgICAKLSAgICAgICAgICAgIHsgCi0gICAgICAgICAgICAgICAgcmV0dXJuICgoKnRoaXMpID4+IHJlaW50ZXJwcmV0X2Nhc3Q8bmRuYm9vc3Q6OmFycmF5PGNoYXIsIE4+JiA+KG91dHB1dCkpOyAKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4obmRuYm9vc3Q6OmFycmF5PHNpZ25lZCBjaGFyLCBOPiYgb3V0cHV0KSAgIAotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICByZXR1cm4gKCgqdGhpcykgPj4gcmVpbnRlcnByZXRfY2FzdDxuZG5ib29zdDo6YXJyYXk8Y2hhciwgTj4mID4ob3V0cHV0KSk7IAotICAgICAgICAgICAgfQotIAotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKLSAgICAgICAgICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KHN0ZDo6YXJyYXk8Q2hhclQsIE4+JiBvdXRwdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiBzaHJfc3RkX2FycmF5PE4+KG91dHB1dCk7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzdGQ6OmFycmF5PHVuc2lnbmVkIGNoYXIsIE4+JiBvdXRwdXQpICAgCi0gICAgICAgICAgICB7IAotICAgICAgICAgICAgICAgIHJldHVybiAoKCp0aGlzKSA+PiByZWludGVycHJldF9jYXN0PHN0ZDo6YXJyYXk8Y2hhciwgTj4mID4ob3V0cHV0KSk7IAotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzdGQ6OmFycmF5PHNpZ25lZCBjaGFyLCBOPiYgb3V0cHV0KQotICAgICAgICAgICAgeyAKLSAgICAgICAgICAgICAgICByZXR1cm4gKCgqdGhpcykgPj4gcmVpbnRlcnByZXRfY2FzdDxzdGQ6OmFycmF5PGNoYXIsIE4+JiA+KG91dHB1dCkpOyAKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBjYXNlICItMCIgfHwgIjAiIHx8ICIrMCIgOiAgIG91dHB1dCA9IGZhbHNlOyByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAqIGNhc2UgIjEiIHx8ICIrMSI6ICAgICAgICAgICAgb3V0cHV0ID0gdHJ1ZTsgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICogZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+Pihib29sJiBvdXRwdXQpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgemVybyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6emVybzsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBwbHVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjpwbHVzOwotICAgICAgICAgICAgICAgIENoYXJUIGNvbnN0IG1pbnVzID0gbGNhc3RfY2hhcl9jb25zdGFudHM8Q2hhclQ+OjptaW51czsKLQotICAgICAgICAgICAgICAgIHN3aXRjaChmaW5pc2gtc3RhcnQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBUcmFpdHM6OmVxKHN0YXJ0WzBdLCAgemVybysxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQgfHwgVHJhaXRzOjplcShzdGFydFswXSwgemVybyApOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIFRyYWl0czo6ZXEoIHBsdXMsICpzdGFydCkgKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gVHJhaXRzOjplcShzdGFydFswXSwgemVybyArMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dCB8fCBUcmFpdHM6OmVxKHN0YXJ0WzBdLCB6ZXJvICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJhaXRzOjplcSggbWludXMsICpzdGFydCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgVHJhaXRzOjplcSggemVybywgc3RhcnRbMV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gZmFsc2U7IC8vIFN1cHByZXNzIHdhcm5pbmcgYWJvdXQgdW5pbml0YWxpemVkIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oZmxvYXQmIG91dHB1dCkgeyByZXR1cm4gbGNhc3RfcmV0X2Zsb2F0PFRyYWl0cz4ob3V0cHV0LHN0YXJ0LGZpbmlzaCk7IH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgLy8gTm90IG9wdGltaXNlZCBjb252ZXJ0ZXIKLSAgICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgICAgYm9vbCBmbG9hdF90eXBlc19jb252ZXJ0ZXJfaW50ZXJuYWwoVCYgb3V0cHV0LCBpbnQgLyp0YWcqLykgewotICAgICAgICAgICAgICAgIGlmIChwYXJzZV9pbmZfbmFuKHN0YXJ0LCBmaW5pc2gsIG91dHB1dCkpIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGJvb2wgcmV0dXJuX3ZhbHVlID0gc2hyX3VzaW5nX2Jhc2VfY2xhc3Mob3V0cHV0KTsKLQotICAgICAgICAgICAgICAgIC8qIFNvbWUgY29tcGlsZXJzIGFuZCBsaWJyYXJpZXMgc3VjY2Vzc2Z1bGx5Ci0gICAgICAgICAgICAgICAgICogcGFyc2UgJ2luZicsICdJTkZJTklUWScsICcxLjBFJywgJzEuMEUtJy4uLgotICAgICAgICAgICAgICAgICAqIFdlIGFyZSB0cnlpbmcgdG8gcHJvdmlkZSBhIHVuaWZpZWQgYmVoYXZpb3VyLAotICAgICAgICAgICAgICAgICAqIHNvIHdlIGp1c3QgZm9yYmlkIHN1Y2ggY29udmVyc2lvbnMgKGFzIHNvbWUKLSAgICAgICAgICAgICAgICAgKiBvZiB0aGUgbW9zdCBwb3B1bGFyIGNvbXBpbGVycy9saWJyYXJpZXMgZG8pCi0gICAgICAgICAgICAgICAgICogKi8KLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBtaW51cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bWludXM7Ci0gICAgICAgICAgICAgICAgQ2hhclQgY29uc3QgcGx1cyA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6cGx1czsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBjYXBpdGFsX2UgPSBsY2FzdF9jaGFyX2NvbnN0YW50czxDaGFyVD46OmNhcGl0YWxfZTsKLSAgICAgICAgICAgICAgICBDaGFyVCBjb25zdCBsb3dlcmNhc2VfZSA9IGxjYXN0X2NoYXJfY29uc3RhbnRzPENoYXJUPjo6bG93ZXJjYXNlX2U7Ci0gICAgICAgICAgICAgICAgaWYgKCByZXR1cm5fdmFsdWUgJiYKLSAgICAgICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyYWl0czo6ZXEoKihmaW5pc2gtMSksIGxvd2VyY2FzZV9lKSAgICAgICAgICAgICAgICAgICAvLyAxLjBlCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBUcmFpdHM6OmVxKCooZmluaXNoLTEpLCBjYXBpdGFsX2UpICAgICAgICAgICAgICAgICAgLy8gMS4wRQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgVHJhaXRzOjplcSgqKGZpbmlzaC0xKSwgbWludXMpICAgICAgICAgICAgICAgICAgICAgIC8vIDEuMGUtIG9yIDEuMEUtCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBUcmFpdHM6OmVxKCooZmluaXNoLTEpLCBwbHVzKSAgICAgICAgICAgICAgICAgICAgICAgLy8gMS4wZSsgb3IgMS4wRSsKLSAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICApIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE9wdGltaXNlZCBjb252ZXJ0ZXIKLSAgICAgICAgICAgIGJvb2wgZmxvYXRfdHlwZXNfY29udmVydGVyX2ludGVybmFsKGRvdWJsZSYgb3V0cHV0LGNoYXIgLyp0YWcqLykgewotICAgICAgICAgICAgICAgIHJldHVybiBsY2FzdF9yZXRfZmxvYXQ8VHJhaXRzPihvdXRwdXQsc3RhcnQsZmluaXNoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHVibGljOgotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oZG91YmxlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBTb21lIGNvbXBpbGVycyBpbXBsZW1lbnQgbG9uZyBkb3VibGUgYXMgZG91YmxlLiBJbiB0aGF0IGNhc2UgdGhlc2UgdHlwZXMgaGF2ZQotICAgICAgICAgICAgICAgICAqIHNhbWUgc2l6ZSwgc2FtZSBwcmVjaXNpb24sIHNhbWUgbWF4IGFuZCBtaW4gdmFsdWVzLi4uIEFuZCBpdCBtZWFucywKLSAgICAgICAgICAgICAgICAgKiB0aGF0IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgbGNhc3RfcmV0X2Zsb2F0IGNhbm5vdCBiZSB1c2VkIGZvciB0eXBlCi0gICAgICAgICAgICAgICAgICogZG91YmxlLCBiZWNhdXNlIGl0IHdpbGwgZ2l2ZSBhIGJpZyBwcmVjaXNpb24gbG9zcy4KLSAgICAgICAgICAgICAgICAgKiAqLwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmlmX2M8Ci0jaWYgKGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgfHwgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKQotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9lcTwgc2l6ZW9mKGRvdWJsZSksIHNpemVvZihsb25nIGRvdWJsZSkgPjo6dmFsdWUsCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgMSwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBpbnQsCi0gICAgICAgICAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAgICAgICA+Ojp0eXBlIHRhZyA9IDA7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXRfdHlwZXNfY29udmVydGVyX2ludGVybmFsKG91dHB1dCwgdGFnKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KGxvbmcgZG91YmxlJiBvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHRhZyA9IDA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0X3R5cGVzX2NvbnZlcnRlcl9pbnRlcm5hbChvdXRwdXQsIHRhZyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEdlbmVyaWMgaXN0cmVhbS1iYXNlZCBhbGdvcml0aG0uCi0gICAgICAgICAgICAvLyBsY2FzdF9zdHJlYW1idWZfZm9yX3RhcmdldDxJbnB1dFN0cmVhbWFibGU+Ojp2YWx1ZSBpcyB0cnVlLgotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJlYW1hYmxlPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4+KElucHV0U3RyZWFtYWJsZSYgb3V0cHV0KSB7IHJldHVybiBzaHJfdXNpbmdfYmFzZV9jbGFzcyhvdXRwdXQpOyB9Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGlzX3N0ZHN0cmluZwotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfc3Rkc3RyaW5nPCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVCwgVHJhaXRzLCBBbGxvYz4gPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgQWxsb2M+Ci0gICAgICAgIHN0cnVjdCBpc19zdGRzdHJpbmc8IG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzxDaGFyVCwgVHJhaXRzLCBBbGxvYz4gPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBpc19hcml0aG1ldGljX2FuZF9ub3RfeGNoYXJzCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8U291cmNlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUYXJnZXQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jaGFyX29yX3djaGFyPFRhcmdldD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjppc19jaGFyX29yX3djaGFyPFNvdXJjZT46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICAgICApCi0gICAgICAgICAgICApOwotICAgICAgICB9OwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIGlzX3hjaGFyX3RvX3hjaGFyPFRhcmdldCwgU291cmNlPjo6dmFsdWUgaXMgdHJ1ZSwgd2hlbgotICAgICAgICAgKiBUYXJnZXQgYW5kIFNvdWNlIGFyZSB0aGUgc2FtZSBjaGFyIHR5cGVzLCBvciB3aGVuCi0gICAgICAgICAqIFRhcmdldCBhbmQgU291Y2UgYXJlIGNoYXIgdHlwZXMgb2YgdGhlIHNhbWUgc2l6ZS4KLSAgICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgaXNfeGNoYXJfdG9feGNoYXIKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFNvdXJjZSxUYXJnZXQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY2hhcl9vcl93Y2hhcjxUYXJnZXQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2VxPCBzaXplb2YoY2hhciksc2l6ZW9mKFRhcmdldCk+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfZXE8IHNpemVvZihjaGFyKSxzaXplb2YoU291cmNlKT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jaGFyX29yX3djaGFyPFRhcmdldD46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jaGFyX29yX3djaGFyPFNvdXJjZT46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBpc19jaGFyX2FycmF5X3RvX3N0ZHN0cmluZwotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9hcnJheV90b19zdGRzdHJpbmc8IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJULCBUcmFpdHMsIEFsbG9jPiwgQ2hhclQqID4KLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9hcnJheV90b19zdGRzdHJpbmc8IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJULCBUcmFpdHMsIEFsbG9jPiwgY29uc3QgQ2hhclQqID4KLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSApOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEFsbG9jPgotICAgICAgICBzdHJ1Y3QgaXNfY2hhcl9hcnJheV90b19zdGRzdHJpbmc8IG5kbmJvb3N0Ojpjb250YWluZXI6OmJhc2ljX3N0cmluZzxDaGFyVCwgVHJhaXRzLCBBbGxvYz4sIENoYXJUKiA+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUgKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBBbGxvYz4KLSAgICAgICAgc3RydWN0IGlzX2NoYXJfYXJyYXlfdG9fc3Rkc3RyaW5nPCBuZG5ib29zdDo6Y29udGFpbmVyOjpiYXNpY19zdHJpbmc8Q2hhclQsIFRyYWl0cywgQWxsb2M+LCBjb25zdCBDaGFyVCogPgotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlICk7Ci0gICAgICAgIH07Ci0KLSNpZiAoZGVmaW5lZCBfTVNDX1ZFUikKLSMgcHJhZ21hIHdhcm5pbmcoIHB1c2ggKQotIyBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3MDEgKSAvLyBwb3NzaWJsZSB1c2Ugb2YgLi4uIGJlZm9yZSBpbml0aWFsaXphdGlvbgotIyBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3MDIgKSAvLyB1bnJlYWNoYWJsZSBjb2RlCi0jIHByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDI2NyApIC8vIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90JyB0byAndW5zaWduZWQgaW50JwotI2VuZGlmCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGV4aWNhbF9jYXN0X2RvX2Nhc3QKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0X2ltcGwoY29uc3QgU291cmNlJiBhcmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBsZXhpY2FsX2Nhc3Rfc3RyZWFtX3RyYWl0czxTb3VyY2UsIFRhcmdldD4gIHN0cmVhbV90cmFpdDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGRldGFpbDo6bGV4aWNhbF9zdHJlYW1fbGltaXRlZF9zcmM8Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RyZWFtX3RyYWl0OjpjaGFyX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0cmVhbV90cmFpdDo6dHJhaXRzLCAKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3RyYWl0OjpyZXF1aXJlc19zdHJpbmdidWYgCi0gICAgICAgICAgICAgICAgPiBpbnRlcnByZXRlcl90eXBlOwotCi0gICAgICAgICAgICAgICAgLy8gVGFyZ2V0IHR5cGUgbXVzdCBiZSBkZWZhdWx0IGNvbnN0cnVjdGlibGUKLSAgICAgICAgICAgICAgICBUYXJnZXQgcmVzdWx0OyAgICAgICAgICAgICAgIAotCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdHJlYW1fdHJhaXQ6OmNoYXJfdHlwZSBidWZbc3RyZWFtX3RyYWl0OjpsZW5fdDo6dmFsdWUgKyAxXTsKLSAgICAgICAgICAgICAgICBzdHJlYW1fdHJhaXQ6Omxlbl90OjpjaGVja19jb3ZlcmFnZSgpOwotCi0gICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXJfdHlwZSBpbnRlcnByZXRlcihidWYsIGJ1ZiArIHN0cmVhbV90cmFpdDo6bGVuX3Q6OnZhbHVlICsgMSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBEaXNhYmxpbmcgQURMLCBieSBkaXJlY3RseSBzcGVjaWZ5aW5nIG9wZXJhdG9ycy4KLSAgICAgICAgICAgICAgICBpZighKGludGVycHJldGVyLm9wZXJhdG9yIDw8KGFyZykgJiYgaW50ZXJwcmV0ZXIub3BlcmF0b3IgPj4ocmVzdWx0KSkpCi0gICAgICAgICAgICAgICAgICBORE5CT09TVF9MQ0FTVF9USFJPV19CQURfQ0FTVChTb3VyY2UsIFRhcmdldCk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotI2lmIChkZWZpbmVkIF9NU0NfVkVSKQotIyBwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3RfY29weQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgaW5saW5lIGNvbnN0IFNvdXJjZSYgbGV4aWNhbF9jYXN0X2ltcGwoY29uc3QgU291cmNlICZhcmcpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFyZzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQgPgotICAgICAgICBzdHJ1Y3QgZGV0ZWN0X3ByZWNpc2lvbl9sb3NzCi0gICAgICAgIHsKLSAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om51bWVyaWM6OlRydW5jPFNvdXJjZT4gUm91bmRlcjsKLSAgICAgICAgIHR5cGVkZWYgU291cmNlIHNvdXJjZV90eXBlIDsKLQotICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG1wbDo6aWZfPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8U291cmNlPiwgU291cmNlLCBTb3VyY2UgY29uc3QmCi0gICAgICAgICAgPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgICAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBzb3VyY2VfdHlwZSBuZWFyX2ludCA9IFJvdW5kZXI6Om5lYXJieWludChzKTsKLSAgICAgICAgICAgIGlmIChuZWFyX2ludCkgewotICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZV90eXBlIG9yaWdfZGl2X3JvdW5kID0gcyAvIG5lYXJfaW50OwotICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZV90eXBlIGVwcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c291cmNlX3R5cGU+OjplcHNpbG9uKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoKG9yaWdfZGl2X3JvdW5kID4gMSA/IG9yaWdfZGl2X3JvdW5kIC0gMSA6IDEgLSBvcmlnX2Rpdl9yb3VuZCkgPiBlcHMpCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFNvdXJjZSwgVGFyZ2V0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHMgOwotICAgICAgICAgfQotCi0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFJvdW5kZXI6OnJvdW5kX3N0eWxlIHJvdW5kX3N0eWxlOwotICAgICAgICB9IDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU291cmNlLCBjbGFzcyBUYXJnZXQgPgotICAgICAgICBzdHJ1Y3Qgbm90aHJvd19vdmVyZmxvd19oYW5kbGVyCi0gICAgICAgIHsKLSAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkgKCBuZG5ib29zdDo6bnVtZXJpYzo6cmFuZ2VfY2hlY2tfcmVzdWx0IHIgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChyICE9IG5kbmJvb3N0OjpudW1lcmljOjpjSW5SYW5nZSkKLSAgICAgICAgICAgICAgICBORE5CT09TVF9MQ0FTVF9USFJPV19CQURfQ0FTVChTb3VyY2UsIFRhcmdldCk7Ci0gICAgICAgICAgfQotICAgICAgICB9IDsKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgICAgIHN0cnVjdCBsZXhpY2FsX2Nhc3RfZHluYW1pY19udW1fbm90X2lnbm9yaW5nX21pbnVzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdF9pbXBsKGNvbnN0IFNvdXJjZSAmYXJnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVydGVyPAotICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzPFRhcmdldCxTb3VyY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgbm90aHJvd19vdmVyZmxvd19oYW5kbGVyPFNvdXJjZSwgVGFyZ2V0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdF9wcmVjaXNpb25fbG9zczxTb3VyY2UsIFRhcmdldD4KLSAgICAgICAgICAgICAgICA+Ojpjb252ZXJ0KGFyZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtX2lnbm9yaW5nX21pbnVzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdF9pbXBsKGNvbnN0IFNvdXJjZSAmYXJnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjpldmFsX2lmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfZmxvYXQ8U291cmNlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppZGVudGl0eTxTb3VyY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8U291cmNlPgotICAgICAgICAgICAgICAgID46OnR5cGUgdXNvdXJjZV90OwotCi0gICAgICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVydGVyPAotICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgdXNvdXJjZV90LAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZlcnNpb25fdHJhaXRzPFRhcmdldCx1c291cmNlX3Q+LAotICAgICAgICAgICAgICAgICAgICAgICAgbm90aHJvd19vdmVyZmxvd19oYW5kbGVyPHVzb3VyY2VfdCwgVGFyZ2V0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdF9wcmVjaXNpb25fbG9zczx1c291cmNlX3QsIFRhcmdldD4KLSAgICAgICAgICAgICAgICA+IGNvbnZlcnRlcl90OwotCi0gICAgICAgICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICAgICAgICAgYXJnIDwgMCA/IHN0YXRpY19jYXN0PFRhcmdldD4oMHUgLSBjb252ZXJ0ZXJfdDo6Y29udmVydCgwdSAtIGFyZykpIDogY29udmVydGVyX3Q6OmNvbnZlcnQoYXJnKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtIGZvbGxvd3MgdGhlIHJ1bGVzOgotICAgICAgICAgKiAxKSBJZiBTb3VyY2UgY2FuIGJlIGNvbnZlcnRlZCB0byBUYXJnZXQgd2l0aG91dCBwcmVjaXNpb24gbG9zcyBhbmQKLSAgICAgICAgICogd2l0aG91dCBvdmVyZmxvd3MsIHRoZW4gYXNzaWduIFNvdXJjZSB0byBUYXJnZXQgYW5kIHJldHVybgotICAgICAgICAgKgotICAgICAgICAgKiAyKSBJZiBTb3VyY2UgaXMgbGVzcyB0aGFuIDAgYW5kIFRhcmdldCBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLAotICAgICAgICAgKiB0aGVuIG5lZ2F0ZSBTb3VyY2UsIGNoZWNrIHRoZSByZXF1aXJlbWVudHMgb2YgcnVsZSAxKSBhbmQgaWYKLSAgICAgICAgICogc3VjY2Vzc2Z1bCwgYXNzaWduIHN0YXRpY19jYXN0ZWQgU291cmNlIHRvIFRhcmdldCBhbmQgcmV0dXJuCi0gICAgICAgICAqCi0gICAgICAgICAqIDMpIE90aGVyd2lzZSB0aHJvdyBhIGJhZF9sZXhpY2FsX2Nhc3QgZXhjZXB0aW9uCi0gICAgICAgICAqCi0gICAgICAgICAqCi0gICAgICAgICAqIFJ1bGUgMikgcmVxdWlyZWQgYmVjYXVzZSBuZG5ib29zdDo6bGV4aWNhbF9jYXN0IGhhcyB0aGUgYmVoYXZpb3Igb2YKLSAgICAgICAgICogc3RyaW5nc3RyZWFtLCB3aGljaCB1c2VzIHRoZSBydWxlcyBvZiBzY2FuZiBmb3IgY29udmVyc2lvbnMuIEFuZAotICAgICAgICAgKiBpbiB0aGUgQzk5IHN0YW5kYXJkIGZvciB1bnNpZ25lZCBpbnB1dCB2YWx1ZSBtaW51cyBzaWduIGlzCi0gICAgICAgICAqIG9wdGlvbmFsLCBzbyBpZiBhIG5lZ2F0aXZlIG51bWJlciBpcyByZWFkLCBubyBlcnJvcnMgd2lsbCBhcmlzZQotICAgICAgICAgKiBhbmQgdGhlIHJlc3VsdCB3aWxsIGJlIHRoZSB0d28ncyBjb21wbGVtZW50LgotICAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgotICAgICAgICBzdHJ1Y3QgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdF9pbXBsKGNvbnN0IFNvdXJjZSAmYXJnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6bXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2lnbmVkPFNvdXJjZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19mbG9hdDxTb3VyY2U+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8U291cmNlLCBib29sPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19zYW1lPFRhcmdldCwgYm9vbD46OnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc191bnNpZ25lZDxUYXJnZXQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtX2lnbm9yaW5nX21pbnVzPFRhcmdldCwgU291cmNlPiwKLSAgICAgICAgICAgICAgICAgICAgbGV4aWNhbF9jYXN0X2R5bmFtaWNfbnVtX25vdF9pZ25vcmluZ19taW51czxUYXJnZXQsIFNvdXJjZT4KLSAgICAgICAgICAgICAgICA+Ojp0eXBlIGNhc3Rlcl90eXBlOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhc3Rlcl90eXBlOjpsZXhpY2FsX2Nhc3RfaW1wbChhcmcpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBpbmxpbmUgVGFyZ2V0IGxleGljYWxfY2FzdChjb25zdCBTb3VyY2UgJmFyZykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b19wb2ludGVyX2RlY2F5PFNvdXJjZT46OnR5cGUgc3JjOwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc194Y2hhcl90b194Y2hhcjxUYXJnZXQsIHNyYyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19jaGFyX2FycmF5X3RvX3N0ZHN0cmluZzxUYXJnZXQsIHNyYyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxUYXJnZXQsIHNyYyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlzX3N0ZHN0cmluZzxUYXJnZXQgPjo6dmFsdWUKLSAgICAgICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICA+IHNoYWxsX3dlX2NvcHlfdDsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjppc19hcml0aG1ldGljX2FuZF9ub3RfeGNoYXJzPFRhcmdldCwgc3JjID4gc2hhbGxfd2VfY29weV93aXRoX2R5bmFtaWNfY2hlY2tfdDsKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgIHNoYWxsX3dlX2NvcHlfdDo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpsZXhpY2FsX2Nhc3RfY29weTxzcmMgPiwKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbmRuYm9vc3Q6Om1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgc2hhbGxfd2VfY29weV93aXRoX2R5bmFtaWNfY2hlY2tfdDo6dmFsdWUsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmxleGljYWxfY2FzdF9keW5hbWljX251bTxUYXJnZXQsIHNyYyA+LAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpsZXhpY2FsX2Nhc3RfZG9fY2FzdDxUYXJnZXQsIHNyYyA+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgY2FzdGVyX3R5cGU7Ci0KLSAgICAgICAgcmV0dXJuIGNhc3Rlcl90eXBlOjpsZXhpY2FsX2Nhc3RfaW1wbChhcmcpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3QgY2hhciogY2hhcnMsIHN0ZDo6c2l6ZV90IGNvdW50KQotICAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IGNoYXIqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgKTsKLSAgICB9Ci0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3QgdW5zaWduZWQgY2hhciogY2hhcnMsIHN0ZDo6c2l6ZV90IGNvdW50KQotICAgIHsKLSAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgICk7Ci0gICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3Qgc2lnbmVkIGNoYXIqIGNoYXJzLCBzdGQ6OnNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IHNpZ25lZCBjaGFyKj4oY2hhcnMsIGNoYXJzICsgY291bnQpCi0gICAgICAgICk7Ci0gICAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0PgotICAgIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0KGNvbnN0IHdjaGFyX3QqIGNoYXJzLCBzdGQ6OnNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IHdjaGFyX3QqPihjaGFycywgY2hhcnMgKyBjb3VudCkKLSAgICAgICAgKTsKLSAgICB9Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ0hBUjE2X1QKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0PgotICAgIGlubGluZSBUYXJnZXQgbGV4aWNhbF9jYXN0KGNvbnN0IGNoYXIxNl90KiBjaGFycywgc3RkOjpzaXplX3QgY291bnQpCi0gICAgewotICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6bGV4aWNhbF9jYXN0PFRhcmdldD4oCi0gICAgICAgICAgICA6Om5kbmJvb3N0OjppdGVyYXRvcl9yYW5nZTxjb25zdCBjaGFyMTZfdCo+KGNoYXJzLCBjaGFycyArIGNvdW50KQotICAgICAgICApOwotICAgIH0KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19DSEFSMzJfVAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQ+Ci0gICAgaW5saW5lIFRhcmdldCBsZXhpY2FsX2Nhc3QoY29uc3QgY2hhcjMyX3QqIGNoYXJzLCBzdGQ6OnNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpsZXhpY2FsX2Nhc3Q8VGFyZ2V0PigKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6Oml0ZXJhdG9yX3JhbmdlPGNvbnN0IGNoYXIzMl90Kj4oY2hhcnMsIGNoYXJzICsgY291bnQpCi0gICAgICAgICk7Ci0gICAgfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwKLSAgICB7Ci0KLSAgICAgICAgLy8gc2VsZWN0b3JzIGZvciBjaG9vc2luZyBzdHJlYW0gY2hhcmFjdGVyIHR5cGUKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotICAgICAgICB9OwotCi0jaWZuZGVmIE5ETkJPT1NUX0xDQVNUX05PX1dDSEFSX1QKLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXI8d2NoYXJfdD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB3Y2hhcl90IHR5cGU7Ci0gICAgICAgIH07Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBzdHJlYW1fY2hhcjx3Y2hhcl90ICo+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgd2NoYXJfdCB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHN0cmVhbV9jaGFyPGNvbnN0IHdjaGFyX3QgKj4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB3Y2hhcl90IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3Qgc3RyZWFtX2NoYXI8c3RkOjp3c3RyaW5nPgotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHdjaGFyX3QgdHlwZTsKLSAgICAgICAgfTsKLSNlbmRpZgotCi0gICAgICAgIC8vIHN0cmVhbSB3cmFwcGVyIGZvciBoYW5kbGluZyBsZXhpY2FsIGNvbnZlcnNpb25zCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBUcmFpdHM+Ci0gICAgICAgIGNsYXNzIGxleGljYWxfc3RyZWFtCi0gICAgICAgIHsKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgd2lkZXN0X2NoYXI8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RyZWFtX2NoYXI8VGFyZ2V0Pjo6dHlwZSwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdHJlYW1fY2hhcjxTb3VyY2U+Ojp0eXBlPjo6dHlwZSBjaGFyX3R5cGU7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgVHJhaXRzIHRyYWl0c190eXBlOwotCi0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGxleGljYWxfc3RyZWFtKGNoYXJfdHlwZSogPSAwLCBjaGFyX3R5cGUqID0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdHJlYW0udW5zZXRmKHN0ZDo6aW9zOjpza2lwd3MpOwotICAgICAgICAgICAgICAgIGxjYXN0X3NldF9wcmVjaXNpb24oc3RyZWFtLCBzdGF0aWNfY2FzdDxTb3VyY2UqPigwKSwgc3RhdGljX2Nhc3Q8VGFyZ2V0Kj4oMCkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH5sZXhpY2FsX3N0cmVhbSgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNKQotICAgICAgICAgICAgICAgIHN0cmVhbS5mcmVlemUoZmFsc2UpOwotICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcjw8KGNvbnN0IFNvdXJjZSAmaW5wdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoc3RyZWFtIDw8IGlucHV0KS5mYWlsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbWFibGU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oSW5wdXRTdHJlYW1hYmxlICZvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFpc19wb2ludGVyPElucHV0U3RyZWFtYWJsZT46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA+PiBvdXRwdXQgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmdldCgpID09Ci0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fPDMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX1dTVFJJTkcpCi0vLyBHQ0MgMi45eCBsYWNrcyBzdGQ6OmNoYXJfdHJhaXRzPD46OmVvZigpLgotLy8gV2UgdXNlIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HIHRvIGZpbHRlciBvdXQgU1RMcG9ydCBhbmQgbGlic3RkYysrLXYzCi0vLyBjb25maWd1cmF0aW9ucywgd2hpY2ggZG8gcHJvdmlkZSBzdGQ6OmNoYXJfdHJhaXRzPD46OmVvZigpLgotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFT0Y7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU6OmVvZigpOwotI2VuZGlmCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I+PihzdGQ6OnN0cmluZyAmb3V0cHV0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NUUklOR1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzdHJlYW0gPDwgJ1wwJzsKLSAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICBzdHJlYW0uc3RyKCkuc3dhcChvdXRwdXQpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgI2lmbmRlZiBORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yPj4oc3RkOjp3c3RyaW5nICZvdXRwdXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RyZWFtLnN0cigpLnN3YXAob3V0cHV0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICNlbmRpZgotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICAjaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgICAgICAgICBzdGQ6OnN0cnN0cmVhbSBzdHJlYW07Ci0gICAgICAgICAgICAjZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9MT0NBTEUpCi0gICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmdzdHJlYW08Y2hhcl90eXBlLHRyYWl0c190eXBlPiBzdHJlYW07Ci0gICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgfTsKLSAgICB9Ci0KLSAgICAvLyBjYWxsLWJ5LXZhbHVlIGZhbGxiYWNrIHZlcnNpb24gKGRlcHJlY2F0ZWQpCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLSAgICBUYXJnZXQgbGV4aWNhbF9jYXN0KFNvdXJjZSBhcmcpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6d2lkZXN0X2NoYXI8IAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OnN0cmVhbV9jaGFyPFRhcmdldD46OnR5cGUgCi0gICAgICAgICAgLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6c3RyZWFtX2NoYXI8U291cmNlPjo6dHlwZSAKLSAgICAgICAgPjo6dHlwZSBjaGFyX3R5cGU7IAotCi0gICAgICAgIHR5cGVkZWYgc3RkOjpjaGFyX3RyYWl0czxjaGFyX3R5cGU+IHRyYWl0czsKLSAgICAgICAgZGV0YWlsOjpsZXhpY2FsX3N0cmVhbTxUYXJnZXQsIFNvdXJjZSwgdHJhaXRzPiBpbnRlcnByZXRlcjsKLSAgICAgICAgVGFyZ2V0IHJlc3VsdDsKLQotICAgICAgICBpZighKGludGVycHJldGVyIDw8IGFyZyAmJiBpbnRlcnByZXRlciA+PiByZXN1bHQpKQotICAgICAgICAgIE5ETkJPT1NUX0xDQVNUX1RIUk9XX0JBRF9DQVNUKFNvdXJjZSwgVGFyZ2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0vLyBDb3B5cmlnaHQgS2V2bGluIEhlbm5leSwgMjAwMC0yMDA1LgotLy8gQ29weXJpZ2h0IEFsZXhhbmRlciBOYXNvbm92LCAyMDA2LTIwMTAuCi0vLyBDb3B5cmlnaHQgQW50b255IFBvbHVraGluLCAyMDExLTIwMTMuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jdW5kZWYgTkROQk9PU1RfTENBU1RfVEhST1dfQkFEX0NBU1QKLSN1bmRlZiBORE5CT09TVF9MQ0FTVF9OT19XQ0hBUl9UCi0jdW5kZWYgTkROQk9PU1RfTENBU1RfSEFTX0lOVDEyOAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTEVYSUNBTF9DQVNUX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbGltaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbGltaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q1NWQ5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L2xpbWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIG1hZGRvY2sgMTk5OS4gCi0vLyAgKEMpIERhdmlkIEFicmFoYW1zIDIwMDIuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyB1c2UgdGhpcyBoZWFkZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBtaXNzaW5nIDxsaW1pdHM+Ci0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb21wYXRpYmlsaXR5L2luZGV4Lmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfTElNSVRTCi0jZGVmaW5lIE5ETkJPT1NUX0xJTUlUUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUUwotIyAgZXJyb3IgIlRoZXJlIGlzIG5vIHN0ZDo6bnVtZXJpY19saW1pdHMgc3VwcHBvcnQgYXZhaWxhYmxlLiIKLSNlbHNlCi0jIGluY2x1ZGUgPGxpbWl0cz4KLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykgJiYgZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkdfTlVNRVJJQ19MSU1JVFMpKSBcCi0gICAgICB8fCAoZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fTVNfSU5UNjRfTlVNRVJJQ19MSU1JVFMpKQotLy8gQWRkIG1pc3Npbmcgc3BlY2lhbGl6YXRpb25zIGZvciBudW1lcmljX2xpbWl0czoKLSNpZmRlZiBORE5CT09TVF9IQVNfTVNfSU5UNjQKLSMgIGRlZmluZSBORE5CT09TVF9MTFQgX19pbnQ2NAotIyAgZGVmaW5lIE5ETkJPT1NUX1VMTFQgdW5zaWduZWQgX19pbnQ2NAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9MTFQgIDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0jICBkZWZpbmUgTkROQk9PU1RfVUxMVCAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0jZW5kaWYKLQotI2luY2x1ZGUgPGNsaW1pdHM+ICAvLyBmb3IgQ0hBUl9CSVQKLQotbmFtZXNwYWNlIHN0ZAotewotICB0ZW1wbGF0ZTw+Ci0gIGNsYXNzIG51bWVyaWNfbGltaXRzPE5ETkJPT1NUX0xMVD4gCi0gIHsKLSAgIHB1YmxpYzoKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NwZWNpYWxpemVkID0gdHJ1ZSk7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX01TX0lOVDY0Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIDB4ODAwMDAwMDAwMDAwMDAwMGk2NDsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiAweDdGRkZGRkZGRkZGRkZGRkZpNjQ7IH0KLSNlbGlmIGRlZmluZWQoTExPTkdfTUFYKQotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBMTE9OR19NSU47IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gTExPTkdfTUFYOyB9Ci0jZWxpZiBkZWZpbmVkKExPTkdMT05HX01BWCkKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gTE9OR0xPTkdfTUlOOyB9Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfTExUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIExPTkdMT05HX01BWDsgfQotI2Vsc2UKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMUxMIDw8IChzaXplb2YoTkROQk9PU1RfTExUKSAqIENIQVJfQklUIC0gMSk7IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gfihtaW4pKCk7IH0KLSNlbmRpZgotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgZGlnaXRzID0gc2l6ZW9mKE5ETkJPT1NUX0xMVCkgKiBDSEFSX0JJVCAtMSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBkaWdpdHMxMCA9IChDSEFSX0JJVCAqIHNpemVvZiAoTkROQk9PU1RfTExUKSAtIDEpICogMzAxTCAvIDEwMDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX3NpZ25lZCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVnZXIgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19leGFjdCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgcmFkaXggPSAyKTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgZXBzaWxvbigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgcm91bmRfZXJyb3IoKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG1pbl9leHBvbmVudCA9IDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWluX2V4cG9uZW50MTAgPSAwKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG1heF9leHBvbmVudCA9IDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWF4X2V4cG9uZW50MTAgPSAwKTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19pbmZpbml0eSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfcXVpZXRfTmFOID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19zaWduYWxpbmdfTmFOID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19kZW5vcm0gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2Rlbm9ybV9sb3NzID0gZmFsc2UpOwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBpbmZpbml0eSgpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9MTFQgcXVpZXRfTmFOKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBzaWduYWxpbmdfTmFOKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotICAgICAgc3RhdGljIE5ETkJPT1NUX0xMVCBkZW5vcm1fbWluKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaWVjNTU5ID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2JvdW5kZWQgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19tb2R1bG8gPSB0cnVlKTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRyYXBzID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChmbG9hdF9yb3VuZF9zdHlsZSwgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybyk7Ci0gICAgICAKLSAgfTsKLQotICB0ZW1wbGF0ZTw+Ci0gIGNsYXNzIG51bWVyaWNfbGltaXRzPE5ETkJPT1NUX1VMTFQ+IAotICB7Ci0gICBwdWJsaWM6Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19zcGVjaWFsaXplZCA9IHRydWUpOwotI2lmZGVmIE5ETkJPT1NUX0hBU19NU19JTlQ2NAotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMHVpNjQ7IH0KLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKXsgcmV0dXJuIDB4RkZGRkZGRkZGRkZGRkZGRnVpNjQ7IH0KLSNlbGlmIGRlZmluZWQoVUxMT05HX01BWCkgJiYgZGVmaW5lZChVTExPTkdfTUlOKQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gVUxMT05HX01JTjsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gVUxMT05HX01BWDsgfQotI2VsaWYgZGVmaW5lZChVTE9OR0xPTkdfTUFYKSAmJiBkZWZpbmVkKFVMT05HTE9OR19NSU4pCi0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBVTE9OR0xPTkdfTUlOOyB9Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCl7IHJldHVybiBVTE9OR0xPTkdfTUFYOyB9Ci0jZWxzZQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gMHVMTDsgfQotICAgICAgc3RhdGljIE5ETkJPT1NUX1VMTFQgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpeyByZXR1cm4gfjB1TEw7IH0KLSNlbmRpZgotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgZGlnaXRzID0gc2l6ZW9mKE5ETkJPT1NUX0xMVCkgKiBDSEFSX0JJVCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBkaWdpdHMxMCA9IChDSEFSX0JJVCAqIHNpemVvZiAoTkROQk9PU1RfTExUKSkgKiAzMDFMIC8gMTAwMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc2lnbmVkID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2ludGVnZXIgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19leGFjdCA9IHRydWUpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgcmFkaXggPSAyKTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIGVwc2lsb24oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCByb3VuZF9lcnJvcigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWluX2V4cG9uZW50ID0gMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtaW5fZXhwb25lbnQxMCA9IDApOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgbWF4X2V4cG9uZW50ID0gMCk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBtYXhfZXhwb25lbnQxMCA9IDApOwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2luZmluaXR5ID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19xdWlldF9OYU4gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX3NpZ25hbGluZ19OYU4gPSBmYWxzZSk7Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaGFzX2Rlbm9ybSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZGVub3JtX2xvc3MgPSBmYWxzZSk7Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBpbmZpbml0eSgpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIHF1aWV0X05hTigpIHRocm93KCkgeyByZXR1cm4gMDsgfTsKLSAgICAgIHN0YXRpYyBORE5CT09TVF9VTExUIHNpZ25hbGluZ19OYU4oKSB0aHJvdygpIHsgcmV0dXJuIDA7IH07Ci0gICAgICBzdGF0aWMgTkROQk9PU1RfVUxMVCBkZW5vcm1fbWluKCkgdGhyb3coKSB7IHJldHVybiAwOyB9OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfaWVjNTU5ID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2JvdW5kZWQgPSB0cnVlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19tb2R1bG8gPSB0cnVlKTsKLQotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRyYXBzID0gZmFsc2UpOwotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlKTsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChmbG9hdF9yb3VuZF9zdHlsZSwgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybyk7Ci0gICAgICAKLSAgfTsKLX0KLSNlbmRpZiAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbWFrZV9zaGFyZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYWtlX3NoYXJlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyOGJlZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYWtlX3NoYXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX01BS0VfU0hBUkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKLQotLy8gIG1ha2Vfc2hhcmVkLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvbWFrZV9zaGFyZWQuaHRtbAotLy8gIGZvciBkb2N1bWVudGF0aW9uLgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTUFLRV9TSEFSRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvcG9saWNpZXMvcG9saWN5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9wb2xpY2llcy9wb2xpY3kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmEzNWQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9wb2xpY2llcy9wb2xpY3kuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkyICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BPTElDWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9QT0xJQ1lfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NvbnRhaW5zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9maW5kX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcmVtb3ZlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29tcGFyaXNvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3Rvb2xzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bGltaXRzPgotLy8gU2FkbHkgd2UgZG8gbmVlZCB0aGUgLmggdmVyc2lvbnMgb2YgdGhlc2UgdG8gYmUgc3VyZSBvZiBnZXR0aW5nCi0vLyBGTFRfTUFOVF9ESUcgZXRjLgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPG1hdGguaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgbWF0aHsgCi0KLW5hbWVzcGFjZSB0b29sc3sKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbnQgZGlnaXRzKE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLVQgZXBzaWxvbihORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoVCkpOwotCi19Ci0KLW5hbWVzcGFjZSBwb2xpY2llc3sKLQotLy8KLS8vIERlZmluZSBtYWNyb3MgZm9yIG91ciBkZWZhdWx0IHBvbGljaWVzLCBpZiB0aGV5J3JlIG5vdCBkZWZpbmVkIGFscmVhZHk6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9NQVRIX0RPTUFJTl9FUlJPUl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9ET01BSU5fRVJST1JfUE9MSUNZIHRocm93X29uX2Vycm9yCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9QT0xFX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1BPTEVfRVJST1JfUE9MSUNZIHRocm93X29uX2Vycm9yCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9PVkVSRkxPV19FUlJPUl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9PVkVSRkxPV19FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0VWQUxVQVRJT05fRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRVZBTFVBVElPTl9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX1JPVU5ESU5HX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1JPVU5ESU5HX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfVU5ERVJGTE9XX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1VOREVSRkxPV19FUlJPUl9QT0xJQ1kgaWdub3JlX2Vycm9yCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9ERU5PUk1fRVJST1JfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfREVOT1JNX0VSUk9SX1BPTElDWSBpZ25vcmVfZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0lOREVURVJNSU5BVEVfUkVTVUxUX0VSUk9SX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX0lOREVURVJNSU5BVEVfUkVTVUxUX0VSUk9SX1BPTElDWSBpZ25vcmVfZXJyb3IKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0RJR0lUUzEwX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX0RJR0lUUzEwX1BPTElDWSAwCi0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0ZMT0FUX1BPTElDWQotI2RlZmluZSBORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZIHRydWUKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BST01PVEVfRE9VQkxFX1BPTElDWQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0RPVUJMRV9QT0xJQ1kgZmFsc2UKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZIHRydWUKLSNlbmRpZgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfRElTQ1JFVEVfUVVBTlRJTEVfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRElTQ1JFVEVfUVVBTlRJTEVfUE9MSUNZIGludGVnZXJfcm91bmRfb3V0d2FyZHMKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX0FTU0VSVF9VTkRFRklORURfUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfQVNTRVJUX1VOREVGSU5FRF9QT0xJQ1kgdHJ1ZQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZIDEwMDAwMDAKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9NQVRIX01BWF9ST09UX0lURVJBVElPTl9QT0xJQ1kKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfUk9PVF9JVEVSQVRJT05fUE9MSUNZIDIwMAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pIFwKLSAgICYmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA8PSAyKSkKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NRVRBX0lOVCh0eXBlLCBuYW1lLCBEZWZhdWx0KVwKLSAgIHRlbXBsYXRlIDx0eXBlIE4gPSBEZWZhdWx0PiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjppbnRfPE4+e307XAotICAgbmFtZXNwYWNlIGRldGFpbHtcCi0gICB0ZW1wbGF0ZSA8dHlwZSBOPlwKLSAgIGNoYXIgdGVzdF9pc192YWxpZF9hcmcoY29uc3QgbmFtZTxOPiopO1wKLSAgIGNoYXIgdGVzdF9pc19kZWZhdWx0X2FyZyhjb25zdCBuYW1lPERlZmF1bHQ+Kik7XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI19pbXBcCi0gICB7XAotICAgICAgdGVtcGxhdGUgPHR5cGUgTj4gc3RhdGljIGNoYXIgdGVzdChjb25zdCBuYW1lPE4+Kik7XAotICAgICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7XAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gc2l6ZW9mKHRlc3Qoc3RhdGljX2Nhc3Q8VCo+KDApKSkgPT0gMSk7XAotICAgfTtcCi0gICB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX2ltcDxUPjo6dmFsdWU+e307Ci0KLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9NRVRBX0JPT0wobmFtZSwgRGVmYXVsdClcCi0gICB0ZW1wbGF0ZSA8Ym9vbCBOID0gRGVmYXVsdD4gc3RydWN0IG5hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88Tj57fTtcCi0gICBuYW1lc3BhY2UgZGV0YWlse1wKLSAgIHRlbXBsYXRlIDxib29sIE4+XAotICAgY2hhciB0ZXN0X2lzX3ZhbGlkX2FyZyhjb25zdCBuYW1lPE4+Kik7XAotICAgY2hhciB0ZXN0X2lzX2RlZmF1bHRfYXJnKGNvbnN0IG5hbWU8RGVmYXVsdD4qKTtcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSMjX2ltcFwKLSAgIHtcCi0gICAgICB0ZW1wbGF0ZSA8Ym9vbCBOPiBzdGF0aWMgY2hhciB0ZXN0KGNvbnN0IG5hbWU8Tj4qKTtcCi0gICAgICBzdGF0aWMgZG91YmxlIHRlc3QoLi4uKTtcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YodGVzdChzdGF0aWNfY2FzdDxUKj4oMCkpKSA9PSAxKTtcCi0gICB9O1wKLSAgIH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzXyMjbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzwgOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfIyNuYW1lIyNfaW1wPFQ+Ojp2YWx1ZT57fTsKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfTUVUQV9JTlQoVHlwZSwgbmFtZSwgRGVmYXVsdClcCi0gICB0ZW1wbGF0ZSA8VHlwZSBOID0gRGVmYXVsdD4gc3RydWN0IG5hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6aW50XzxOPnt9O1wKLSAgIG5hbWVzcGFjZSBkZXRhaWx7XAotICAgdGVtcGxhdGUgPFR5cGUgTj5cCi0gICBjaGFyIHRlc3RfaXNfdmFsaWRfYXJnKGNvbnN0IG5hbWU8Tj4qKTtcCi0gICBjaGFyIHRlc3RfaXNfZGVmYXVsdF9hcmcoY29uc3QgbmFtZTxEZWZhdWx0PiopO1wKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfIyNuYW1lIyNfdGVzdGVyXAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxUeXBlIE4+IHN0YXRpYyBjaGFyIHRlc3QoY29uc3QgbmFtZTxOPiYpO1wKLSAgICAgIHN0YXRpYyBkb3VibGUgdGVzdCguLi4pO1wKLSAgIH07XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI19pbXBcCi0gICB7XAotICAgICAgc3RhdGljIFQgaW5zdDtcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoIDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX3Rlc3RlcjxUPjo6dGVzdChpbnN0KSkgPT0gMSk7XAotICAgfTtcCi0gICB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX2ltcDxUPjo6dmFsdWU+XAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgYXBwbHl7IHR5cGVkZWYgaXNfIyNuYW1lPFU+IHR5cGU7IH07XAotICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9NQVRIX01FVEFfQk9PTChuYW1lLCBEZWZhdWx0KVwKLSAgIHRlbXBsYXRlIDxib29sIE4gPSBEZWZhdWx0PiBzdHJ1Y3QgbmFtZSA6IHB1YmxpYyBuZG5ib29zdDo6bXBsOjpib29sXzxOPnt9O1wKLSAgIG5hbWVzcGFjZSBkZXRhaWx7XAotICAgdGVtcGxhdGUgPGJvb2wgTj5cCi0gICBjaGFyIHRlc3RfaXNfdmFsaWRfYXJnKGNvbnN0IG5hbWU8Tj4qKTtcCi0gICBjaGFyIHRlc3RfaXNfZGVmYXVsdF9hcmcoY29uc3QgbmFtZTxEZWZhdWx0PiopO1wKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfIyNuYW1lIyNfdGVzdGVyXAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxib29sIE4+IHN0YXRpYyBjaGFyIHRlc3QoY29uc3QgbmFtZTxOPiYpO1wKLSAgICAgIHN0YXRpYyBkb3VibGUgdGVzdCguLi4pO1wKLSAgIH07XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUjI19pbXBcCi0gICB7XAotICAgICAgc3RhdGljIFQgaW5zdDtcCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoIDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX3Rlc3RlcjxUPjo6dGVzdChpbnN0KSkgPT0gMSk7XAotICAgfTtcCi0gICB9XAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBpc18jI25hbWUgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzXyMjbmFtZSMjX2ltcDxUPjo6dmFsdWU+XAotICAge1wKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdHJ1Y3QgYXBwbHl7IHR5cGVkZWYgaXNfIyNuYW1lPFU+IHR5cGU7ICB9O1wKLSAgIH07Ci0jZW5kaWYKLS8vCi0vLyBCZWdpbiBieSBkZWZpbmluZyBwb2xpY3kgdHlwZXMgZm9yIGVycm9yIGhhbmRsaW5nOgotLy8KLWVudW0gZXJyb3JfcG9saWN5X3R5cGUKLXsKLSAgIHRocm93X29uX2Vycm9yID0gMCwKLSAgIGVycm5vX29uX2Vycm9yID0gMSwKLSAgIGlnbm9yZV9lcnJvciA9IDIsCi0gICB1c2VyX2Vycm9yID0gMwotfTsKLQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChlcnJvcl9wb2xpY3lfdHlwZSwgZG9tYWluX2Vycm9yLCBORE5CT09TVF9NQVRIX0RPTUFJTl9FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBwb2xlX2Vycm9yLCBORE5CT09TVF9NQVRIX1BPTEVfRVJST1JfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChlcnJvcl9wb2xpY3lfdHlwZSwgb3ZlcmZsb3dfZXJyb3IsIE5ETkJPT1NUX01BVEhfT1ZFUkZMT1dfRVJST1JfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChlcnJvcl9wb2xpY3lfdHlwZSwgdW5kZXJmbG93X2Vycm9yLCBORE5CT09TVF9NQVRIX1VOREVSRkxPV19FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBkZW5vcm1fZXJyb3IsIE5ETkJPT1NUX01BVEhfREVOT1JNX0VSUk9SX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZXJyb3JfcG9saWN5X3R5cGUsIGV2YWx1YXRpb25fZXJyb3IsIE5ETkJPT1NUX01BVEhfRVZBTFVBVElPTl9FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCByb3VuZGluZ19lcnJvciwgTkROQk9PU1RfTUFUSF9ST1VORElOR19FUlJPUl9QT0xJQ1kpCi1ORE5CT09TVF9NQVRIX01FVEFfSU5UKGVycm9yX3BvbGljeV90eXBlLCBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvciwgTkROQk9PU1RfTUFUSF9JTkRFVEVSTUlOQVRFX1JFU1VMVF9FUlJPUl9QT0xJQ1kpCi0KLS8vCi0vLyBQb2xpY3kgdHlwZXMgZm9yIGludGVybmFsIHByb21vdGlvbjoKLS8vCi1ORE5CT09TVF9NQVRIX01FVEFfQk9PTChwcm9tb3RlX2Zsb2F0LCBORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0JPT0wocHJvbW90ZV9kb3VibGUsIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0JPT0woYXNzZXJ0X3VuZGVmaW5lZCwgTkROQk9PU1RfTUFUSF9BU1NFUlRfVU5ERUZJTkVEX1BPTElDWSkKLS8vCi0vLyBQb2xpY3kgdHlwZXMgZm9yIGRpc2NyZXRlIHF1YW50aWxlczoKLS8vCi1lbnVtIGRpc2NyZXRlX3F1YW50aWxlX3BvbGljeV90eXBlCi17Ci0gICByZWFsLAotICAgaW50ZWdlcl9yb3VuZF9vdXR3YXJkcywKLSAgIGludGVnZXJfcm91bmRfaW53YXJkcywKLSAgIGludGVnZXJfcm91bmRfZG93biwKLSAgIGludGVnZXJfcm91bmRfdXAsCi0gICBpbnRlZ2VyX3JvdW5kX25lYXJlc3QKLX07Ci0KLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoZGlzY3JldGVfcXVhbnRpbGVfcG9saWN5X3R5cGUsIGRpc2NyZXRlX3F1YW50aWxlLCBORE5CT09TVF9NQVRIX0RJU0NSRVRFX1FVQU5USUxFX1BPTElDWSkKLS8vCi0vLyBQcmVjaXNpb246Ci0vLwotTkROQk9PU1RfTUFUSF9NRVRBX0lOVChpbnQsIGRpZ2l0czEwLCBORE5CT09TVF9NQVRIX0RJR0lUUzEwX1BPTElDWSkKLU5ETkJPT1NUX01BVEhfTUVUQV9JTlQoaW50LCBkaWdpdHMyLCAwKQotLy8KLS8vIEl0ZXJhdGlvbnM6Ci0vLwotTkROQk9PU1RfTUFUSF9NRVRBX0lOVCh1bnNpZ25lZCBsb25nLCBtYXhfc2VyaWVzX2l0ZXJhdGlvbnMsIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZKQotTkROQk9PU1RfTUFUSF9NRVRBX0lOVCh1bnNpZ25lZCBsb25nLCBtYXhfcm9vdF9pdGVyYXRpb25zLCBORE5CT09TVF9NQVRIX01BWF9ST09UX0lURVJBVElPTl9QT0xJQ1kpCi0vLwotLy8gRGVmaW5lIHRoZSBuYW1lcyBmb3IgZWFjaCBwb3NzaWJsZSBwb2xpY3k6Ci0vLwotI2RlZmluZSBORE5CT09TVF9NQVRIX1BBUkFNRVRFUihuYW1lKVwKLSAgIE5ETkJPT1NUX1BBUkFNRVRFUl9URU1QTEFURV9LRVlXT1JEKG5hbWUjI19uYW1lKVwKLSAgIE5ETkJPT1NUX1BBUkFNRVRFUl9OQU1FKG5hbWUjI19uYW1lKQotCi1zdHJ1Y3QgZGVmYXVsdF9wb2xpY3l7fTsKLQotbmFtZXNwYWNlIGRldGFpbHsKLS8vCi0vLyBUcmFpdCB0byB3b3JrIG91dCBiaXRzIHByZWNpc2lvbiBmcm9tIGRpZ2l0czEwIGFuZCBkaWdpdHMyOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBEaWdpdHMxMCwgY2xhc3MgRGlnaXRzMj4KLXN0cnVjdCBwcmVjaXNpb24KLXsKLSAgIC8vCi0gICAvLyBOb3cgd29yayBvdXQgdGhlIHByZWNpc2lvbjoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgIChEaWdpdHMxMDo6dmFsdWUgPT0gMCksCi0gICAgICBkaWdpdHMyPDA+LAotICAgICAgZGlnaXRzMjwoKERpZ2l0czEwOjp2YWx1ZSArIDEpICogMTAwMEwpIC8gMzAxTD4KLSAgID46OnR5cGUgZGlnaXRzMl90eXBlOwotcHVibGljOgotI2lmZGVmIF9fQk9STEFORENfXwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoRGlnaXRzMjo6dmFsdWUgPiA6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjpwcmVjaXNpb248RGlnaXRzMTAsRGlnaXRzMj46OmRpZ2l0czJfdHlwZTo6dmFsdWUpLAotICAgICAgRGlnaXRzMiwgZGlnaXRzMl90eXBlPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgKERpZ2l0czI6OnZhbHVlID4gZGlnaXRzMl90eXBlOjp2YWx1ZSksCi0gICAgICBEaWdpdHMyLCBkaWdpdHMyX3R5cGU+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBBLCBjbGFzcyBCLCBib29sIGI+Ci1zdHJ1Y3Qgc2VsZWN0X3Jlc3VsdAotewotICAgdHlwZWRlZiBBIHR5cGU7Ci19OwotdGVtcGxhdGUgPGNsYXNzIEEsIGNsYXNzIEI+Ci1zdHJ1Y3Qgc2VsZWN0X3Jlc3VsdDxBLCBCLCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpkZXJlZjxCPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFNlcSwgY2xhc3MgUHJlZCwgY2xhc3MgRGVmYXVsdFR5cGU+Ci1zdHJ1Y3QgZmluZF9hcmcKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZmluZF9pZjxTZXEsIFByZWQ+Ojp0eXBlIGl0ZXI7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZW5kPFNlcT46OnR5cGUgZW5kX3R5cGU7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdF9yZXN1bHQ8Ci0gICAgICBEZWZhdWx0VHlwZSwgaXRlciwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8aXRlciwgZW5kX3R5cGU+Ojp2YWx1ZT46OnR5cGUgdHlwZTsKLX07Ci0KLWRvdWJsZSB0ZXN0X2lzX3ZhbGlkX2FyZyguLi4pOwotZG91YmxlIHRlc3RfaXNfZGVmYXVsdF9hcmcoLi4uKTsKLWNoYXIgdGVzdF9pc192YWxpZF9hcmcoY29uc3QgZGVmYXVsdF9wb2xpY3kqKTsKLWNoYXIgdGVzdF9pc19kZWZhdWx0X2FyZyhjb25zdCBkZWZhdWx0X3BvbGljeSopOwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc192YWxpZF9wb2xpY3lfaW1wIAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gc2l6ZW9mKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OnRlc3RfaXNfdmFsaWRfYXJnKHN0YXRpY19jYXN0PFQqPigwKSkpID09IDEpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfZGVmYXVsdF9wb2xpY3lfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBzaXplb2YoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6dGVzdF9pc19kZWZhdWx0X2FyZyhzdGF0aWNfY2FzdDxUKj4oMCkpKSA9PSAxKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfdmFsaWRfcG9saWN5IAotOiBwdWJsaWMgbXBsOjpib29sXzwgCi0gICA6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3lfaW1wPFQ+Ojp2YWx1ZT4KLXt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzX2RlZmF1bHRfcG9saWN5IAotOiBwdWJsaWMgbXBsOjpib29sXzwgCi0gICA6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc19kZWZhdWx0X3BvbGljeV9pbXA8VD46OnZhbHVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICBzdHJ1Y3QgYXBwbHkKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfZGVmYXVsdF9wb2xpY3k8VT4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgU2VxLCBjbGFzcyBULCBpbnQgTj4KLXN0cnVjdCBhcHBlbmRfTgotewotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OnB1c2hfYmFjazxTZXEsIFQ+Ojp0eXBlIG5ld19zZXE7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGFwcGVuZF9OPG5ld19zZXEsIFQsIE4tMT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBTZXEsIGNsYXNzIFQ+Ci1zdHJ1Y3QgYXBwZW5kX048U2VxLCBULCAwPgotewotICAgdHlwZWRlZiBTZXEgdHlwZTsKLX07Ci0KLS8vCi0vLyBUcmFpdHMgY2xhc3MgdG8gd29yayBvdXQgd2hhdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIG91ciBkZWZhdWx0Ci0vLyBwb2xpY3k8PiBjbGFzcyB3aWxsIGhhdmUgd2hlbiBtb2RpZmllZCBmb3IgZm9yd2FyZGluZzoKLS8vCi10ZW1wbGF0ZSA8Ym9vbCBmLCBib29sIGQ+Ci1zdHJ1Y3QgZGVmYXVsdF9hcmdzCi17Ci0gICB0eXBlZGVmIHByb21vdGVfZmxvYXQ8ZmFsc2U+IGFyZzE7Ci0gICB0eXBlZGVmIHByb21vdGVfZG91YmxlPGZhbHNlPiBhcmcyOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBkZWZhdWx0X2FyZ3M8ZmFsc2UsIGZhbHNlPgotewotICAgdHlwZWRlZiBkZWZhdWx0X3BvbGljeSBhcmcxOwotICAgdHlwZWRlZiBkZWZhdWx0X3BvbGljeSBhcmcyOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBkZWZhdWx0X2FyZ3M8dHJ1ZSwgZmFsc2U+Ci17Ci0gICB0eXBlZGVmIHByb21vdGVfZmxvYXQ8ZmFsc2U+IGFyZzE7Ci0gICB0eXBlZGVmIGRlZmF1bHRfcG9saWN5IGFyZzI7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGRlZmF1bHRfYXJnczxmYWxzZSwgdHJ1ZT4KLXsKLSAgIHR5cGVkZWYgcHJvbW90ZV9kb3VibGU8ZmFsc2U+IGFyZzE7Ci0gICB0eXBlZGVmIGRlZmF1bHRfcG9saWN5IGFyZzI7Ci19OwotCi10eXBlZGVmIGRlZmF1bHRfYXJnczxORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZLCBORE5CT09TVF9NQVRIX1BST01PVEVfRE9VQkxFX1BPTElDWT46OmFyZzEgZm9yd2FyZGluZ19hcmcxOwotdHlwZWRlZiBkZWZhdWx0X2FyZ3M8TkROQk9PU1RfTUFUSF9QUk9NT1RFX0ZMT0FUX1BPTElDWSwgTkROQk9PU1RfTUFUSF9QUk9NT1RFX0RPVUJMRV9QT0xJQ1k+OjphcmcyIGZvcndhcmRpbmdfYXJnMjsKLQotfSAvLyBkZXRhaWwKLS8vCi0vLyBOb3cgZGVmaW5lIHRoZSBwb2xpY3kgdHlwZSB3aXRoIGVub3VnaCBhcmd1bWVudHMgdG8gaGFuZGxlIGFsbAotLy8gdGhlIHBvbGljaWVzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBBMSA9IGRlZmF1bHRfcG9saWN5LCAKLSAgICAgICAgICBjbGFzcyBBMiA9IGRlZmF1bHRfcG9saWN5LCAKLSAgICAgICAgICBjbGFzcyBBMyA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE0ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTUgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBNiA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE3ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTggPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBOSA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMCA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMSA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMiA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEExMyA9IGRlZmF1bHRfcG9saWN5Pgotc3RydWN0IHBvbGljeQotewotcHJpdmF0ZToKLSAgIC8vCi0gICAvLyBWYWxpZGF0ZSBhbGwgb3VyIGFyZ3VtZW50czoKLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMT46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEEyPjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTM+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBND46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEE1Pjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTY+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBNz46OnZhbHVlKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoOjpuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OmRldGFpbDo6aXNfdmFsaWRfcG9saWN5PEE4Pjo6dmFsdWUpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6ZGV0YWlsOjppc192YWxpZF9wb2xpY3k8QTk+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTA+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTE+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTI+Ojp2YWx1ZSk7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3ZhbGlkX3BvbGljeTxBMTM+Ojp2YWx1ZSk7Ci0gICAvLwotICAgLy8gVHlwZWxpc3Qgb2YgdGhlIGFyZ3VtZW50czoKLSAgIC8vCi0gICB0eXBlZGVmIG1wbDo6bGlzdDxBMSxBMixBMyxBNCxBNSxBNixBNyxBOCxBOSxBMTAsQTExLEExMixBMTM+IGFyZ19saXN0OwotCi1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2RvbWFpbl9lcnJvcjxtcGw6Ol8xPiwgZG9tYWluX2Vycm9yPD4gPjo6dHlwZSBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcG9sZV9lcnJvcjxtcGw6Ol8xPiwgcG9sZV9lcnJvcjw+ID46OnR5cGUgcG9sZV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19vdmVyZmxvd19lcnJvcjxtcGw6Ol8xPiwgb3ZlcmZsb3dfZXJyb3I8PiA+Ojp0eXBlIG92ZXJmbG93X2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3VuZGVyZmxvd19lcnJvcjxtcGw6Ol8xPiwgdW5kZXJmbG93X2Vycm9yPD4gPjo6dHlwZSB1bmRlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGVub3JtX2Vycm9yPG1wbDo6XzE+LCBkZW5vcm1fZXJyb3I8PiA+Ojp0eXBlIGRlbm9ybV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19ldmFsdWF0aW9uX2Vycm9yPG1wbDo6XzE+LCBldmFsdWF0aW9uX2Vycm9yPD4gPjo6dHlwZSBldmFsdWF0aW9uX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3JvdW5kaW5nX2Vycm9yPG1wbDo6XzE+LCByb3VuZGluZ19lcnJvcjw+ID46OnR5cGUgcm91bmRpbmdfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8bXBsOjpfMT4sIGluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yPD4gPjo6dHlwZSBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotcHJpdmF0ZToKLSAgIC8vCi0gICAvLyBOb3cgd29yayBvdXQgdGhlIHByZWNpc2lvbjoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2RpZ2l0czEwPG1wbDo6XzE+LCBkaWdpdHMxMDw+ID46OnR5cGUgZGlnaXRzMTBfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlnaXRzMjxtcGw6Ol8xPiwgZGlnaXRzMjw+ID46OnR5cGUgYml0c19wcmVjaXNpb25fdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTBfdHlwZSwgYml0c19wcmVjaXNpb25fdHlwZT46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICAvLwotICAgLy8gSW50ZXJuYWwgcHJvbW90aW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcHJvbW90ZV9mbG9hdDxtcGw6Ol8xPiwgcHJvbW90ZV9mbG9hdDw+ID46OnR5cGUgcHJvbW90ZV9mbG9hdF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19wcm9tb3RlX2RvdWJsZTxtcGw6Ol8xPiwgcHJvbW90ZV9kb3VibGU8PiA+Ojp0eXBlIHByb21vdGVfZG91YmxlX3R5cGU7Ci0gICAvLwotICAgLy8gRGlzY3JldGUgcXVhbnRpbGVzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlzY3JldGVfcXVhbnRpbGU8bXBsOjpfMT4sIGRpc2NyZXRlX3F1YW50aWxlPD4gPjo6dHlwZSBkaXNjcmV0ZV9xdWFudGlsZV90eXBlOwotICAgLy8KLSAgIC8vIE1hdGhlbWF0aWNhbGx5IHVuZGVmaW5lZCBwcm9wZXJ0aWVzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfYXNzZXJ0X3VuZGVmaW5lZDxtcGw6Ol8xPiwgYXNzZXJ0X3VuZGVmaW5lZDw+ID46OnR5cGUgYXNzZXJ0X3VuZGVmaW5lZF90eXBlOwotICAgLy8KLSAgIC8vIE1heCBpdGVyYXRpb25zOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfbWF4X3Nlcmllc19pdGVyYXRpb25zPG1wbDo6XzE+LCBtYXhfc2VyaWVzX2l0ZXJhdGlvbnM8PiA+Ojp0eXBlIG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19tYXhfcm9vdF9pdGVyYXRpb25zPG1wbDo6XzE+LCBtYXhfcm9vdF9pdGVyYXRpb25zPD4gPjo6dHlwZSBtYXhfcm9vdF9pdGVyYXRpb25zX3R5cGU7Ci19OwotLy8KLS8vIFRoZXNlIGZ1bGwgc3BlY2lhbGl6YXRpb25zIGFyZSBkZWZpbmVkIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mCi0vLyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucyB0aGF0IGhhdmUgdG8gdGFrZSBwbGFjZSB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0Ci0vLyBwb2xpY2llcywgdGhleSBoYXZlIHF1aXRlIGEgbGFyZ2UgaW1wYWN0IG9uIGNvbXBpbGUgdGltZXM6Ci0vLwotdGVtcGxhdGUgPD4KLXN0cnVjdCBwb2xpY3k8ZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5PgotewotcHVibGljOgotICAgdHlwZWRlZiBkb21haW5fZXJyb3I8PiBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgcG9sZV9lcnJvcjw+IHBvbGVfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgb3ZlcmZsb3dfZXJyb3I8PiBvdmVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiB1bmRlcmZsb3dfZXJyb3I8PiB1bmRlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgZGVub3JtX2Vycm9yPD4gZGVub3JtX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIGV2YWx1YXRpb25fZXJyb3I8PiBldmFsdWF0aW9uX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHJvdW5kaW5nX2Vycm9yPD4gcm91bmRpbmdfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8PiBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotI2lmIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZID09IDAKLSAgIHR5cGVkZWYgZGlnaXRzMjw+IHByZWNpc2lvbl90eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTA8PiwgZGlnaXRzMjw+ID46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgcHJvbW90ZV9mbG9hdDw+IHByb21vdGVfZmxvYXRfdHlwZTsKLSAgIHR5cGVkZWYgcHJvbW90ZV9kb3VibGU8PiBwcm9tb3RlX2RvdWJsZV90eXBlOwotICAgdHlwZWRlZiBkaXNjcmV0ZV9xdWFudGlsZTw+IGRpc2NyZXRlX3F1YW50aWxlX3R5cGU7Ci0gICB0eXBlZGVmIGFzc2VydF91bmRlZmluZWQ8PiBhc3NlcnRfdW5kZWZpbmVkX3R5cGU7Ci0gICB0eXBlZGVmIG1heF9zZXJpZXNfaXRlcmF0aW9uczw+IG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlOwotICAgdHlwZWRlZiBtYXhfcm9vdF9pdGVyYXRpb25zPD4gbWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBwb2xpY3k8ZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzEsIGRldGFpbDo6Zm9yd2FyZGluZ19hcmcyLCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5LCBkZWZhdWx0X3BvbGljeSwgZGVmYXVsdF9wb2xpY3ksIGRlZmF1bHRfcG9saWN5PgotewotcHVibGljOgotICAgdHlwZWRlZiBkb21haW5fZXJyb3I8PiBkb21haW5fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgcG9sZV9lcnJvcjw+IHBvbGVfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgb3ZlcmZsb3dfZXJyb3I8PiBvdmVyZmxvd19lcnJvcl90eXBlOwotICAgdHlwZWRlZiB1bmRlcmZsb3dfZXJyb3I8PiB1bmRlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgZGVub3JtX2Vycm9yPD4gZGVub3JtX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIGV2YWx1YXRpb25fZXJyb3I8PiBldmFsdWF0aW9uX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHJvdW5kaW5nX2Vycm9yPD4gcm91bmRpbmdfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgaW5kZXRlcm1pbmF0ZV9yZXN1bHRfZXJyb3I8PiBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotI2lmIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZID09IDAKLSAgIHR5cGVkZWYgZGlnaXRzMjw+IHByZWNpc2lvbl90eXBlOwotI2Vsc2UKLSAgIHR5cGVkZWYgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTA8PiwgZGlnaXRzMjw+ID46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgcHJvbW90ZV9mbG9hdDxmYWxzZT4gcHJvbW90ZV9mbG9hdF90eXBlOwotICAgdHlwZWRlZiBwcm9tb3RlX2RvdWJsZTxmYWxzZT4gcHJvbW90ZV9kb3VibGVfdHlwZTsKLSAgIHR5cGVkZWYgZGlzY3JldGVfcXVhbnRpbGU8PiBkaXNjcmV0ZV9xdWFudGlsZV90eXBlOwotICAgdHlwZWRlZiBhc3NlcnRfdW5kZWZpbmVkPD4gYXNzZXJ0X3VuZGVmaW5lZF90eXBlOwotICAgdHlwZWRlZiBtYXhfc2VyaWVzX2l0ZXJhdGlvbnM8PiBtYXhfc2VyaWVzX2l0ZXJhdGlvbnNfdHlwZTsKLSAgIHR5cGVkZWYgbWF4X3Jvb3RfaXRlcmF0aW9uczw+IG1heF9yb290X2l0ZXJhdGlvbnNfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEExID0gZGVmYXVsdF9wb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEEyID0gZGVmYXVsdF9wb2xpY3ksIAotICAgICAgICAgIGNsYXNzIEEzID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTQgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBNSA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE2ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTcgPSBkZWZhdWx0X3BvbGljeSwKLSAgICAgICAgICBjbGFzcyBBOCA9IGRlZmF1bHRfcG9saWN5LAotICAgICAgICAgIGNsYXNzIEE5ID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEwID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTExID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEyID0gZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgY2xhc3MgQTEzID0gZGVmYXVsdF9wb2xpY3k+Ci1zdHJ1Y3Qgbm9ybWFsaXNlCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiBtcGw6Omxpc3Q8QTEsQTIsQTMsQTQsQTUsQTYsQTcsQTgsQTksQTEwLEExMSxBMTIsQTEzPiBhcmdfbGlzdDsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZG9tYWluX2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmRvbWFpbl9lcnJvcl90eXBlID46OnR5cGUgZG9tYWluX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3BvbGVfZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6cG9sZV9lcnJvcl90eXBlID46OnR5cGUgcG9sZV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19vdmVyZmxvd19lcnJvcjxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5OjpvdmVyZmxvd19lcnJvcl90eXBlID46OnR5cGUgb3ZlcmZsb3dfZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfdW5kZXJmbG93X2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OnVuZGVyZmxvd19lcnJvcl90eXBlID46OnR5cGUgdW5kZXJmbG93X2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2Rlbm9ybV9lcnJvcjxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5OjpkZW5vcm1fZXJyb3JfdHlwZSA+Ojp0eXBlIGRlbm9ybV9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19ldmFsdWF0aW9uX2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmV2YWx1YXRpb25fZXJyb3JfdHlwZSA+Ojp0eXBlIGV2YWx1YXRpb25fZXJyb3JfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcm91bmRpbmdfZXJyb3I8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6cm91bmRpbmdfZXJyb3JfdHlwZSA+Ojp0eXBlIHJvdW5kaW5nX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2luZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmluZGV0ZXJtaW5hdGVfcmVzdWx0X2Vycm9yX3R5cGUgPjo6dHlwZSBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlOwotICAgLy8KLSAgIC8vIE5vdyB3b3JrIG91dCB0aGUgcHJlY2lzaW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfZGlnaXRzMTA8bXBsOjpfMT4sIGRpZ2l0czEwPD4gPjo6dHlwZSBkaWdpdHMxMF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19kaWdpdHMyPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OnByZWNpc2lvbl90eXBlID46OnR5cGUgYml0c19wcmVjaXNpb25fdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpwcmVjaXNpb248ZGlnaXRzMTBfdHlwZSwgYml0c19wcmVjaXNpb25fdHlwZT46OnR5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICAvLwotICAgLy8gSW50ZXJuYWwgcHJvbW90aW9uOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfcHJvbW90ZV9mbG9hdDxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5Ojpwcm9tb3RlX2Zsb2F0X3R5cGUgPjo6dHlwZSBwcm9tb3RlX2Zsb2F0X3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX3Byb21vdGVfZG91YmxlPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OnByb21vdGVfZG91YmxlX3R5cGUgPjo6dHlwZSBwcm9tb3RlX2RvdWJsZV90eXBlOwotICAgLy8KLSAgIC8vIERpc2NyZXRlIHF1YW50aWxlczoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZmluZF9hcmc8YXJnX2xpc3QsIGlzX2Rpc2NyZXRlX3F1YW50aWxlPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6OmRpc2NyZXRlX3F1YW50aWxlX3R5cGUgPjo6dHlwZSBkaXNjcmV0ZV9xdWFudGlsZV90eXBlOwotICAgLy8KLSAgIC8vIE1hdGhlbWF0aWNhbGx5IHVuZGVmaW5lZCBwcm9wZXJ0aWVzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmaW5kX2FyZzxhcmdfbGlzdCwgaXNfYXNzZXJ0X3VuZGVmaW5lZDxtcGw6Ol8xPiwgdHlwZW5hbWUgUG9saWN5Ojphc3NlcnRfdW5kZWZpbmVkX3R5cGUgPjo6dHlwZSBhc3NlcnRfdW5kZWZpbmVkX3R5cGU7Ci0gICAvLwotICAgLy8gTWF4IGl0ZXJhdGlvbnM6Ci0gICAvLwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19tYXhfc2VyaWVzX2l0ZXJhdGlvbnM8bXBsOjpfMT4sIHR5cGVuYW1lIFBvbGljeTo6bWF4X3Nlcmllc19pdGVyYXRpb25zX3R5cGU+Ojp0eXBlIG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZpbmRfYXJnPGFyZ19saXN0LCBpc19tYXhfcm9vdF9pdGVyYXRpb25zPG1wbDo6XzE+LCB0eXBlbmFtZSBQb2xpY3k6Om1heF9yb290X2l0ZXJhdGlvbnNfdHlwZT46OnR5cGUgbWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlOwotICAgLy8KLSAgIC8vIERlZmluZSBhIHR5cGVsaXN0IG9mIHRoZSBwb2xpY2llczoKLSAgIC8vCi0gICB0eXBlZGVmIG1wbDo6dmVjdG9yPAotICAgICAgZG9tYWluX2Vycm9yX3R5cGUsCi0gICAgICBwb2xlX2Vycm9yX3R5cGUsCi0gICAgICBvdmVyZmxvd19lcnJvcl90eXBlLAotICAgICAgdW5kZXJmbG93X2Vycm9yX3R5cGUsCi0gICAgICBkZW5vcm1fZXJyb3JfdHlwZSwKLSAgICAgIGV2YWx1YXRpb25fZXJyb3JfdHlwZSwKLSAgICAgIHJvdW5kaW5nX2Vycm9yX3R5cGUsCi0gICAgICBpbmRldGVybWluYXRlX3Jlc3VsdF9lcnJvcl90eXBlLAotICAgICAgcHJlY2lzaW9uX3R5cGUsCi0gICAgICBwcm9tb3RlX2Zsb2F0X3R5cGUsCi0gICAgICBwcm9tb3RlX2RvdWJsZV90eXBlLAotICAgICAgZGlzY3JldGVfcXVhbnRpbGVfdHlwZSwKLSAgICAgIGFzc2VydF91bmRlZmluZWRfdHlwZSwKLSAgICAgIG1heF9zZXJpZXNfaXRlcmF0aW9uc190eXBlLAotICAgICAgbWF4X3Jvb3RfaXRlcmF0aW9uc190eXBlPiByZXN1bHRfbGlzdDsKLSAgIC8vCi0gICAvLyBSZW1vdmUgYWxsIHRoZSBwb2xpY2llcyB0aGF0IGFyZSB0aGUgc2FtZSBhcyB0aGUgZGVmYXVsdDoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6cmVtb3ZlX2lmPHJlc3VsdF9saXN0LCBkZXRhaWw6OmlzX2RlZmF1bHRfcG9saWN5PG1wbDo6Xz4gPjo6dHlwZSByZWR1Y2VkX2xpc3Q7Ci0gICAvLwotICAgLy8gUGFkIG91dCB0aGUgbGlzdCB3aXRoIGRlZmF1bHRzOgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphcHBlbmRfTjxyZWR1Y2VkX2xpc3QsIGRlZmF1bHRfcG9saWN5LCAoMTQgLSA6Om5kbmJvb3N0OjptcGw6OnNpemU8cmVkdWNlZF9saXN0Pjo6dmFsdWUpPjo6dHlwZSByZXN1bHRfdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgcG9saWN5PAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDA+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MT4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50XzwyPiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDM+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88ND4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50Xzw1PiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDY+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88Nz4gPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIG1wbDo6YXQ8cmVzdWx0X3R5cGUsIG1wbDo6aW50Xzw4PiA+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjphdDxyZXN1bHRfdHlwZSwgbXBsOjppbnRfPDk+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MTA+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MTE+ID46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmF0PHJlc3VsdF90eXBlLCBtcGw6OmludF88MTI+ID46OnR5cGUgPiB0eXBlOwotfTsKLS8vCi0vLyBGdWxsIHNwZWNpYWxpc2F0aW9uIHRvIHNwZWVkIHVwIGNvbXBpbGF0aW9uIG9mIHRoZSBjb21tb24gY2FzZToKLS8vCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG5vcm1hbGlzZTxwb2xpY3k8PiwgCi0gICAgICAgICAgcHJvbW90ZV9mbG9hdDxmYWxzZT4sIAotICAgICAgICAgIHByb21vdGVfZG91YmxlPGZhbHNlPiwgCi0gICAgICAgICAgZGlzY3JldGVfcXVhbnRpbGU8PiwKLSAgICAgICAgICBhc3NlcnRfdW5kZWZpbmVkPD4sCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3k+Ci17Ci0gICB0eXBlZGVmIHBvbGljeTxkZXRhaWw6OmZvcndhcmRpbmdfYXJnMSwgZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzI+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG5vcm1hbGlzZTxwb2xpY3k8ZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzEsIGRldGFpbDo6Zm9yd2FyZGluZ19hcmcyPiwKLSAgICAgICAgICBwcm9tb3RlX2Zsb2F0PGZhbHNlPiwKLSAgICAgICAgICBwcm9tb3RlX2RvdWJsZTxmYWxzZT4sCi0gICAgICAgICAgZGlzY3JldGVfcXVhbnRpbGU8PiwKLSAgICAgICAgICBhc3NlcnRfdW5kZWZpbmVkPD4sCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3ksCi0gICAgICAgICAgZGVmYXVsdF9wb2xpY3k+Ci17Ci0gICB0eXBlZGVmIHBvbGljeTxkZXRhaWw6OmZvcndhcmRpbmdfYXJnMSwgZGV0YWlsOjpmb3J3YXJkaW5nX2FyZzI+IHR5cGU7Ci19OwotCi1pbmxpbmUgcG9saWN5PD4gbWFrZV9wb2xpY3koKQoteyByZXR1cm4gcG9saWN5PD4oKTsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTE+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMT46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMT46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTI+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTI+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTI+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMz4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTM+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTM+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBND46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBND46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTU+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTU+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNj4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmLCBjb25zdCBBNiYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYsIGNvbnN0IEE2JiwgY29uc3QgQTcmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTg+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmLCBjb25zdCBBNiYsIGNvbnN0IEE3JiwgY29uc3QgQTgmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOT4KLWlubGluZSB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIG1ha2VfcG9saWN5KGNvbnN0IEExJiwgY29uc3QgQTImLCBjb25zdCBBMyYsIGNvbnN0IEE0JiwgY29uc3QgQTUmLCBjb25zdCBBNiYsIGNvbnN0IEE3JiwgY29uc3QgQTgmLCBjb25zdCBBOSYpCi17IAotICAgdHlwZWRlZiB0eXBlbmFtZSBub3JtYWxpc2U8cG9saWN5PD4sIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTk+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwPgotaW5saW5lIHR5cGVuYW1lIG5vcm1hbGlzZTxwb2xpY3k8PiwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSwgQTEwPjo6dHlwZSBtYWtlX3BvbGljeShjb25zdCBBMSYsIGNvbnN0IEEyJiwgY29uc3QgQTMmLCBjb25zdCBBNCYsIGNvbnN0IEE1JiwgY29uc3QgQTYmLCBjb25zdCBBNyYsIGNvbnN0IEE4JiwgY29uc3QgQTkmLCBjb25zdCBBMTAmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTA+Ojp0eXBlIHJlc3VsdF90eXBlOwotICAgcmV0dXJuIHJlc3VsdF90eXBlKCk7IAotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBBOSwgY2xhc3MgQTEwLCBjbGFzcyBBMTE+Ci1pbmxpbmUgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTAsIEExMT46OnR5cGUgbWFrZV9wb2xpY3koY29uc3QgQTEmLCBjb25zdCBBMiYsIGNvbnN0IEEzJiwgY29uc3QgQTQmLCBjb25zdCBBNSYsIGNvbnN0IEE2JiwgY29uc3QgQTcmLCBjb25zdCBBOCYsIGNvbnN0IEE5JiwgY29uc3QgQTEwJiwgY29uc3QgQTExJikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbm9ybWFsaXNlPHBvbGljeTw+LCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LCBBMTAsIEExMT46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gcmVzdWx0X3R5cGUoKTsKLX0KLQotLy8KLS8vIFRyYWl0cyBjbGFzcyB0byBoYW5kbGUgaW50ZXJuYWwgcHJvbW90aW9uOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBSZWFsLCBjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgZXZhbHVhdGlvbgotewotICAgdHlwZWRlZiBSZWFsIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IGV2YWx1YXRpb248ZmxvYXQsIFBvbGljeT4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88dHlwZW5hbWUgUG9saWN5Ojpwcm9tb3RlX2Zsb2F0X3R5cGUsIGRvdWJsZSwgZmxvYXQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IGV2YWx1YXRpb248ZG91YmxlLCBQb2xpY3k+Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHR5cGVuYW1lIFBvbGljeTo6cHJvbW90ZV9kb3VibGVfdHlwZSwgbG9uZyBkb3VibGUsIGRvdWJsZT46OnR5cGUgdHlwZTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVhbD4KLXN0cnVjdCBiYXNpY19kaWdpdHMgOiBwdWJsaWMgbXBsOjppbnRfPDA+eyB9OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBiYXNpY19kaWdpdHM8ZmxvYXQ+IDogcHVibGljIG1wbDo6aW50XzxGTFRfTUFOVF9ESUc+eyB9OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBiYXNpY19kaWdpdHM8ZG91YmxlPiA6IHB1YmxpYyBtcGw6OmludF88REJMX01BTlRfRElHPnsgfTsKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgYmFzaWNfZGlnaXRzPGxvbmcgZG91YmxlPiA6IHB1YmxpYyBtcGw6OmludF88TERCTF9NQU5UX0RJRz57IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSZWFsLCBjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OnJhZGl4ID09IDIpOwotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6OnByZWNpc2lvbl90eXBlIHByZWNpc2lvbl90eXBlOwotICAgdHlwZWRlZiBiYXNpY19kaWdpdHM8UmVhbD4gZGlnaXRzX3Q7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgbXBsOjplcXVhbF90bzxkaWdpdHNfdCwgbXBsOjppbnRfPDA+ID4sCi0gICAgICAvLyBQb3NzaWJseSB1bmtub3duIHByZWNpc2lvbjoKLSAgICAgIHByZWNpc2lvbl90eXBlLAotICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICBtcGw6Om9yXzxtcGw6Omxlc3NfZXF1YWw8ZGlnaXRzX3QsIHByZWNpc2lvbl90eXBlPiwgbXBsOjpsZXNzX2VxdWFsPHByZWNpc2lvbl90eXBlLCBtcGw6OmludF88MD4gPiA+LAotICAgICAgICAgLy8gRGVmYXVsdCBjYXNlLCBmdWxsIHByZWNpc2lvbiBmb3IgUmVhbFR5cGU6Ci0gICAgICAgICBkaWdpdHMyPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OmRpZ2l0cz4sCi0gICAgICAgICAvLyBVc2VyIGN1c3RvbWlzZWQgcHJlY2lzaW9uOgotICAgICAgICAgcHJlY2lzaW9uX3R5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uPGZsb2F0LCBQb2xpY3k+Ci17Ci0gICB0eXBlZGVmIGRpZ2l0czI8RkxUX01BTlRfRElHPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uPGRvdWJsZSwgUG9saWN5PgotewotICAgdHlwZWRlZiBkaWdpdHMyPERCTF9NQU5UX0RJRz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IHByZWNpc2lvbjxsb25nIGRvdWJsZSwgUG9saWN5PgotewotICAgdHlwZWRlZiBkaWdpdHMyPExEQkxfTUFOVF9ESUc+IHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVhbCwgY2xhc3MgUG9saWN5Pgotc3RydWN0IHByZWNpc2lvbgotewotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpyYWRpeCA9PSAyKSB8fCAoKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6aXNfc3BlY2lhbGl6ZWQgPT0gMCkgfHwgKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzID09IDApKSk7Ci0jaWZuZGVmIF9fQk9STEFORENfXwotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6OnByZWNpc2lvbl90eXBlIHByZWNpc2lvbl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6aXNfc3BlY2lhbGl6ZWQgPT0gMCkgfHwgKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzID09IDApKSwKLSAgICAgIC8vIFBvc3NpYmx5IHVua25vd24gcHJlY2lzaW9uOgotICAgICAgcHJlY2lzaW9uX3R5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAoKDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzIDw9IHByZWNpc2lvbl90eXBlOjp2YWx1ZSkgCi0gICAgICAgICB8fCAoUG9saWN5OjpwcmVjaXNpb25fdHlwZTo6dmFsdWUgPD0gMCkpLAotICAgICAgICAgLy8gRGVmYXVsdCBjYXNlLCBmdWxsIHByZWNpc2lvbiBmb3IgUmVhbFR5cGU6Ci0gICAgICAgICBkaWdpdHMyPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OmRpZ2l0cz4sCi0gICAgICAgICAvLyBVc2VyIGN1c3RvbWlzZWQgcHJlY2lzaW9uOgotICAgICAgICAgcHJlY2lzaW9uX3R5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLSNlbHNlCi0gICB0eXBlZGVmIHR5cGVuYW1lIFBvbGljeTo6cHJlY2lzaW9uX3R5cGUgcHJlY2lzaW9uX3R5cGU7Ci0gICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWw+OjpkaWdpdHM+IGRpZ2l0c190OwotICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8UmVhbD46OmlzX3NwZWNpYWxpemVkPiBzcGVjX3Q7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgbXBsOjpvcl88bXBsOjplcXVhbF90bzxzcGVjX3QsIG1wbDo6ZmFsc2VfPiwgbXBsOjplcXVhbF90bzxkaWdpdHNfdCwgbXBsOjppbnRfPDA+ID4gPiwKLSAgICAgIC8vIFBvc3NpYmx5IHVua25vd24gcHJlY2lzaW9uOgotICAgICAgcHJlY2lzaW9uX3R5cGUsCi0gICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIG1wbDo6b3JfPG1wbDo6bGVzc19lcXVhbDxkaWdpdHNfdCwgcHJlY2lzaW9uX3R5cGU+LCBtcGw6Omxlc3NfZXF1YWw8cHJlY2lzaW9uX3R5cGUsIG1wbDo6aW50XzwwPiA+ID4sCi0gICAgICAgICAvLyBEZWZhdWx0IGNhc2UsIGZ1bGwgcHJlY2lzaW9uIGZvciBSZWFsVHlwZToKLSAgICAgICAgIGRpZ2l0czI8IDo6c3RkOjpudW1lcmljX2xpbWl0czxSZWFsPjo6ZGlnaXRzPiwKLSAgICAgICAgIC8vIFVzZXIgY3VzdG9taXNlZCBwcmVjaXNpb246Ci0gICAgICAgICBwcmVjaXNpb25fdHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi19OwotCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfVVNFX0ZMT0FUMTI4Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1zdHJ1Y3QgcHJlY2lzaW9uPF9fZmxvYXQxMjgsIFBvbGljeT4KLXsKLSAgIHR5cGVkZWYgbXBsOjppbnRfPDExMz4gdHlwZTsKLX07Ci0KLSNlbmRpZgotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotaW5saW5lIGludCBkaWdpdHNfaW1wKG1wbDo6dHJ1ZV8gY29uc3QmKQotewotI2lmbmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk7Ci0jZWxzZQotICAgTkROQk9PU1RfQVNTRVJUKDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpOwotI2VuZGlmCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpwb2xpY2llczo6cHJlY2lzaW9uPFQsIFBvbGljeT46OnR5cGUgcF90OwotICAgcmV0dXJuIHBfdDo6dmFsdWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgaW50IGRpZ2l0c19pbXAobXBsOjpmYWxzZV8gY29uc3QmKQotewotICAgcmV0dXJuIHRvb2xzOjpkaWdpdHM8VD4oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgaW50IGRpZ2l0cyhORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoVCkpCi17Ci0gICB0eXBlZGVmIG1wbDo6Ym9vbF88IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkID4gdGFnX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjpkaWdpdHNfaW1wPFQsIFBvbGljeT4odGFnX3R5cGUoKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQb2xpY3k+Ci1pbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfbWF4X3Nlcmllc19pdGVyYXRpb25zKCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUG9saWN5OjptYXhfc2VyaWVzX2l0ZXJhdGlvbnNfdHlwZSBpdGVyX3R5cGU7Ci0gICByZXR1cm4gaXRlcl90eXBlOjp2YWx1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFBvbGljeT4KLWlubGluZSB1bnNpZ25lZCBsb25nIGdldF9tYXhfcm9vdF9pdGVyYXRpb25zKCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUG9saWN5OjptYXhfcm9vdF9pdGVyYXRpb25zX3R5cGUgaXRlcl90eXBlOwotICAgcmV0dXJuIGl0ZXJfdHlwZTo6dmFsdWU7Ci19Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaWdpdHMsIGNsYXNzIFNtYWxsLCBjbGFzcyBEZWZhdWx0Pgotc3RydWN0IHNlcmllc19mYWN0b3JfY2FsYwotewotICAgc3RhdGljIFQgZ2V0KCkKLSAgIHsKLSAgICAgIHJldHVybiBsZGV4cChUKDEuMCksIDEgLSBEaWdpdHM6OnZhbHVlKTsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaWdpdHM+Ci1zdHJ1Y3Qgc2VyaWVzX2ZhY3Rvcl9jYWxjPFQsIERpZ2l0cywgbXBsOjp0cnVlXywgbXBsOjp0cnVlXz4KLXsKLSAgIHN0YXRpYyBUIGdldCgpCi0gICB7Ci0gICAgICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjplcHNpbG9uPFQ+KCk7Ci0gICB9Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpZ2l0cz4KLXN0cnVjdCBzZXJpZXNfZmFjdG9yX2NhbGM8VCwgRGlnaXRzLCBtcGw6OnRydWVfLCBtcGw6OmZhbHNlXz4KLXsKLSAgIHN0YXRpYyBUIGdldCgpCi0gICB7Ci0gICAgICBzdGF0aWMgY29uc3QgbmRuYm9vc3Q6OnVpbnRtYXhfdCB2ID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnRtYXhfdD4oMXUpIDw8IChEaWdpdHM6OnZhbHVlIC0gMSk7Ci0gICAgICByZXR1cm4gMSAvIHN0YXRpY19jYXN0PFQ+KHYpOwotICAgfQotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBEaWdpdHM+Ci1zdHJ1Y3Qgc2VyaWVzX2ZhY3Rvcl9jYWxjPFQsIERpZ2l0cywgbXBsOjpmYWxzZV8sIG1wbDo6dHJ1ZV8+Ci17Ci0gICBzdGF0aWMgVCBnZXQoKQotICAgewotICAgICAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjp0b29sczo6ZXBzaWxvbjxUPigpOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLWlubGluZSBUIGdldF9lcHNpbG9uX2ltcChtcGw6OnRydWVfIGNvbnN0JikKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIDo6c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpyYWRpeCA9PSAyKTsKLSNlbHNlCi0gICBORE5CT09TVF9BU1NFUlQoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk7Ci0gICBORE5CT09TVF9BU1NFUlQoOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpyYWRpeCA9PSAyKTsKLSNlbmRpZgotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6cG9saWNpZXM6OnByZWNpc2lvbjxULCBQb2xpY3k+Ojp0eXBlIHBfdDsKLSAgIHR5cGVkZWYgbXBsOjpib29sXzxwX3Q6OnZhbHVlIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8bmRuYm9vc3Q6OnVpbnRtYXhfdD46OmRpZ2l0cz4gaXNfc21hbGxfaW50OwotICAgdHlwZWRlZiBtcGw6OmJvb2xfPHBfdDo6dmFsdWUgPj0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzPiBpc19kZWZhdWx0X3ZhbHVlOwotICAgcmV0dXJuIHNlcmllc19mYWN0b3JfY2FsYzxULCBwX3QsIGlzX3NtYWxsX2ludCwgaXNfZGVmYXVsdF92YWx1ZT46OmdldCgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotaW5saW5lIFQgZ2V0X2Vwc2lsb25faW1wKG1wbDo6ZmFsc2VfIGNvbnN0JikKLXsKLSAgIHJldHVybiB0b29sczo6ZXBzaWxvbjxUPigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLWlubGluZSBUIGdldF9lcHNpbG9uKE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRShUKSkKLXsKLSAgIHR5cGVkZWYgbXBsOjpib29sXzwgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkICYmIChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpyYWRpeCA9PSAyKSkgPiB0YWdfdHlwZTsKLSAgIHJldHVybiBkZXRhaWw6OmdldF9lcHNpbG9uX2ltcDxULCBQb2xpY3k+KHRhZ190eXBlKCkpOwotfQotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgQTEsIAotICAgICAgICAgIGNsYXNzIEEyLCAKLSAgICAgICAgICBjbGFzcyBBMywKLSAgICAgICAgICBjbGFzcyBBNCwKLSAgICAgICAgICBjbGFzcyBBNSwKLSAgICAgICAgICBjbGFzcyBBNiwKLSAgICAgICAgICBjbGFzcyBBNywKLSAgICAgICAgICBjbGFzcyBBOCwKLSAgICAgICAgICBjbGFzcyBBOSwKLSAgICAgICAgICBjbGFzcyBBMTAsCi0gICAgICAgICAgY2xhc3MgQTExPgotY2hhciB0ZXN0X2lzX3BvbGljeShjb25zdCBwb2xpY3k8QTEsQTIsQTMsQTQsQTUsQTYsQTcsQTgsQTksQTEwLEExMT4qKTsKLWRvdWJsZSB0ZXN0X2lzX3BvbGljeSguLi4pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUD4KLXN0cnVjdCBpc19wb2xpY3lfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OnRlc3RfaXNfcG9saWN5KHN0YXRpY19jYXN0PFAqPigwKSkpID09IDEpKTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIFA+Ci1zdHJ1Y3QgaXNfcG9saWN5IDogcHVibGljIG1wbDo6Ym9vbF88IDo6bmRuYm9vc3Q6Om1hdGg6OnBvbGljaWVzOjpkZXRhaWw6OmlzX3BvbGljeV9pbXA8UD46OnZhbHVlPiB7fTsKLQotLy8KLS8vIEhlbHBlciB0cmFpdHMgY2xhc3MgZm9yIGRpc3RyaWJ1dGlvbiBlcnJvciBoYW5kbGluZzoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IGNvbnN0cnVjdG9yX2Vycm9yX2NoZWNrCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFBvbGljeTo6ZG9tYWluX2Vycm9yX3R5cGUgZG9tYWluX2Vycm9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgIChkb21haW5fZXJyb3JfdHlwZTo6dmFsdWUgPT0gdGhyb3dfb25fZXJyb3IpIHx8IChkb21haW5fZXJyb3JfdHlwZTo6dmFsdWUgPT0gdXNlcl9lcnJvciksCi0gICAgICBtcGw6OnRydWVfLAotICAgICAgbXBsOjpmYWxzZV8+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUG9saWN5Pgotc3RydWN0IG1ldGhvZF9lcnJvcl9jaGVjawotewotICAgdHlwZWRlZiB0eXBlbmFtZSBQb2xpY3k6OmRvbWFpbl9lcnJvcl90eXBlIGRvbWFpbl9lcnJvcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAoZG9tYWluX2Vycm9yX3R5cGU6OnZhbHVlID09IHRocm93X29uX2Vycm9yKSAmJiAoZG9tYWluX2Vycm9yX3R5cGU6OnZhbHVlICE9IHVzZXJfZXJyb3IpLAotICAgICAgbXBsOjpmYWxzZV8sCi0gICAgICBtcGw6OnRydWVfPjo6dHlwZSB0eXBlOwotfTsKLQotfX19IC8vIG5hbWVzcGFjZXMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfUE9MSUNZX0hQUAotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmYxNzhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9kZXRhaWwvZnBfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3MCArMCwwIEBACi0vLyBmcF90cmFpdHMuaHBwCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9GUF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRlBfVFJBSVRTX0hQUAotCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW4gUmFkZQotCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotLy8gb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8qCi1UbyBzdXBwb3J0IG9sZCBjb21waWxlcnMsIGNhcmUgaGFzIGJlZW4gdGFrZW4gdG8gYXZvaWQgcGFydGlhbCB0ZW1wbGF0ZQotc3BlY2lhbGl6YXRpb24gYW5kIG1ldGEgZnVuY3Rpb24gZm9yd2FyZGluZy4KLVdpdGggdGhlc2UgdGVjaG5pcXVlcywgdGhlIGNvZGUgY291bGQgYmUgc2ltcGxpZmllZC4KLSovCi0KLSNpZiBkZWZpbmVkKF9fdm1zKSAmJiBkZWZpbmVkKF9fREVDQ1hYKSAmJiAhX19JRUVFX0ZMT0FUCi0vLyBUaGUgVkFYIGZsb2F0aW5nIHBvaW50IGZvcm1hdHMgYXJlIHVzZWQgKGZvciBmbG9hdCBhbmQgZG91YmxlKQotIyAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1ZBWF9GT1JNQVQKLSNlbmRpZgotCi0jaW5jbHVkZSA8Y3N0cmluZz4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2VuZGlhbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLSAgbmFtZXNwYWNlIHN0ZHsgdXNpbmcgOjptZW1jcHk7IH0KLSNlbmRpZgotCi0jaWZuZGVmIEZQX05PUk1BTAotCi0jZGVmaW5lIEZQX1pFUk8gICAgICAgIDAKLSNkZWZpbmUgRlBfTk9STUFMICAgICAgMQotI2RlZmluZSBGUF9JTkZJTklURSAgICAyCi0jZGVmaW5lIEZQX05BTiAgICAgICAgIDMKLSNkZWZpbmUgRlBfU1VCTk9STUFMICAgNAotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX0hBU19GUENMQVNTSUZZCi0KLSNpZm5kZWYgZnBjbGFzc2lmeQotIyAgaWYgKGRlZmluZWQoX19HTElCQ1BQX18pIHx8IGRlZmluZWQoX19HTElCQ1hYX18pKSBcCi0gICAgICAgICAmJiBkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTlfTUFUSCkgXAotICAgICAgICAgJiYgIShkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTlfRlBfTUFDUk9TX0RZTkFNSUMpIFwKLSAgICAgICAgICYmIChfR0xJQkNYWF9VU0VfQzk5X0ZQX01BQ1JPU19EWU5BTUlDICE9IDApKQotIyAgICAgaWZkZWYgX1NUTFBfVkVORE9SX0NTVEQKLSMgICAgICAgIGlmIF9TVExQT1JUX1ZFUlNJT04gPj0gMHg1MjAKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCA6Ol9fc3RkX2FsaWFzOjogCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfRlBDTEFTU0lGWV9QUkVGSVggOjpfU1RMUF9WRU5ET1JfQ1NURDo6IAotIyAgICAgICAgZW5kaWYKLSMgICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCA6OnN0ZDo6Ci0jICAgICBlbmRpZgotIyAgZWxzZQotIyAgICAgdW5kZWYgTkROQk9PU1RfSEFTX0ZQQ0xBU1NJRlkKLSMgICAgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWAotIyAgZW5kaWYKLSNlbGlmIChkZWZpbmVkKF9fSFBfYUNDKSAmJiAhZGVmaW5lZChfX2hwcGEpKQotLy8gYUNDIDYgYXBwZWFycyB0byBkbyAiI2RlZmluZSBmcGNsYXNzaWZ5IGZwY2xhc3NpZnkiIHdoaWNoIG1lc3NlcyB1cyB1cCBhIGJpdCEKLSMgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCA6OgotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWAotI2VuZGlmCi0KLSNpZmRlZiBfX01JTkdXMzJfXwotIyAgdW5kZWYgTkROQk9PU1RfSEFTX0ZQQ0xBU1NJRlkKLSNlbmRpZgotCi0jZW5kaWYKLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIG1hdGggewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8qIAotVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB1c2VkIHRvIHRhZyB0aGUgZGlmZmVyZW50IG1ldGhvZHMgdGhhdCBhcmUgdXNlZAotZm9yIGZsb2F0aW5nIHBvaW50IGNsYXNzaWZpY2F0aW9uCi0qLwotCi1zdHJ1Y3QgbmF0aXZlX3RhZyB7fTsKLXRlbXBsYXRlIDxib29sIGhhc19saW1pdHM+Ci1zdHJ1Y3QgZ2VuZXJpY190YWcge307Ci1zdHJ1Y3QgaWVlZV90YWcge307Ci1zdHJ1Y3QgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyA6IHB1YmxpYyBpZWVlX3RhZyB7fTsKLXN0cnVjdCBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyA6IHB1YmxpYyBpZWVlX3RhZyB7fTsKLQotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0vLwotLy8gVGhlc2UgaGVscGVyIGZ1bmN0aW9ucyBhcmUgdXNlZCBvbmx5IHdoZW4gbnVtZXJpY19saW1pdHM8PgotLy8gbWVtYmVycyBhcmUgbm90IGNvbXBpbGUgdGltZSBjb25zdGFudHM6Ci0vLwotaW5saW5lIGJvb2wgaXNfZ2VuZXJpY190YWdfZmFsc2UoY29uc3QgZ2VuZXJpY190YWc8ZmFsc2U+KikKLXsKLSAgIHJldHVybiB0cnVlOwotfQotaW5saW5lIGJvb2wgaXNfZ2VuZXJpY190YWdfZmFsc2UoY29uc3Qgdm9pZCopCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLyoKLU1vc3QgcHJvY2Vzc29ycyBzdXBwb3J0IHRocmVlIGRpZmZlcmVudCBmbG9hdGluZyBwb2ludCBwcmVjaXNpb25zOgotc2luZ2xlIHByZWNpc2lvbiAoMzIgYml0cyksIGRvdWJsZSBwcmVjaXNpb24gKDY0IGJpdHMpCi1hbmQgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiAoODAgLSAxMjggYml0cywgZGVwZW5kaW5nIG9uIHRoZSBwcm9jZXNzb3IpCi0KLU5vdGUgdGhhdCB0aGUgQysrIHR5cGUgbG9uZyBkb3VibGUgY2FuIGJlIGltcGxlbWVudGVkCi1ib3RoIGFzIGRvdWJsZSBwcmVjaXNpb24gYW5kIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24uCi0qLwotCi1zdHJ1Y3QgdW5rbm93bl9wcmVjaXNpb257fTsKLXN0cnVjdCBzaW5nbGVfcHJlY2lzaW9uIHt9Owotc3RydWN0IGRvdWJsZV9wcmVjaXNpb24ge307Ci1zdHJ1Y3QgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbiB7fTsKLQotLy8gbmF0aXZlX3RhZyB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBmcF90cmFpdHNfbmF0aXZlCi17Ci0gICAgdHlwZWRlZiBuYXRpdmVfdGFnIG1ldGhvZDsKLX07Ci0KLS8vIGdlbmVyaWNfdGFnIHZlcnNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBzdHJ1Y3QgZnBfdHJhaXRzX25vbl9uYXRpdmUKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIHR5cGVkZWYgZ2VuZXJpY190YWc8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQ+IG1ldGhvZDsKLSNlbHNlCi0gICB0eXBlZGVmIGdlbmVyaWNfdGFnPGZhbHNlPiBtZXRob2Q7Ci0jZW5kaWYKLX07Ci0KLS8vIGllZWVfdGFnIHZlcnNpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vKgotVGhlc2Ugc3BlY2lhbGl6YXRpb25zIG9mIGZwX3RyYWl0c19ub25fbmF0aXZlIGNvbnRhaW4gaW5mb3JtYXRpb24gbmVlZGVkCi10byAicGFyc2UiIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCi0KLVR5cGVkZWYgbWVtYmVyczoKLQotICBiaXRzIC0tIHRoZSB0YXJnZXQgdHlwZSB3aGVuIGNvcHlpbmcgdGhlIGxlYWRpbmcgYnl0ZXMgb2YgYSBmbG9hdGluZwotICAgICAgcG9pbnQgbnVtYmVyLiBJdCBpcyBhIHR5cGVkZWYgZm9yIHVpbnQzMl90IG9yIHVpbnQ2NF90LgotCi0gIG1ldGhvZCAtLSB0ZWxscyB1cyB3aGV0aGVyIGFsbCBieXRlcyBhcmUgY29waWVkIG9yIG5vdC4KLSAgICAgIEl0IGlzIGEgdHlwZWRlZiBmb3IgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBvciBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZy4KLQotU3RhdGljIGRhdGEgbWVtYmVyczoKLQotICBzaWduLCBleHBvbmVudCwgZmxhZywgc2lnbmlmaWNhbmQgLS0gYml0IG1hc2tzIHRoYXQgZ2l2ZSB0aGUgbWVhbmluZyBvZiB0aGUKLSAgYml0cyBpbiB0aGUgbGVhZGluZyBieXRlcy4KLQotU3RhdGljIGZ1bmN0aW9uIG1lbWJlcnM6Ci0KLSAgZ2V0X2JpdHMoKSwgc2V0X2JpdHMoKSAtLSBwcm92aWRlIGFjY2VzcyB0byB0aGUgbGVhZGluZyBieXRlcy4KLQotKi8KLQotLy8gaWVlZV90YWcgdmVyc2lvbiwgZmxvYXQgKDMyIGJpdHMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgTkROQk9PU1RfRlBDTEFTU0lGWV9WQVhfRk9STUFUCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGZsb2F0LCBzaW5nbGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ24gICAgICAgID0gMHg4MDAwMDAwMHUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZXhwb25lbnQgICAgPSAweDdmODAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGZsYWcgICAgICAgID0gMHgwMDAwMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduaWZpY2FuZCA9IDB4MDA3ZmZmZmYpOwotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGZsb2F0IHgsIHVpbnQzMl90JiBhKSB7IHN0ZDo6bWVtY3B5KCZhLCAmeCwgNCk7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhmbG9hdCYgeCwgdWludDMyX3QgYSkgeyBzdGQ6Om1lbWNweSgmeCwgJmEsIDQpOyB9Ci19OwotCi0vLyBpZWVlX3RhZyB2ZXJzaW9uLCBkb3VibGUgKDY0IGJpdHMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fSU5UNjRfVCkgfHwgZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikgXAotICAgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DT0RFR0VBUl9fKQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxkb3VibGUsIGRvdWJsZV9wcmVjaXNpb24+Ci17Ci0gICAgdHlwZWRlZiBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ24gICAgICAgID0gMHg4MDAwMDAwMHUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZXhwb25lbnQgICAgPSAweDdmZjAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGZsYWcgICAgICAgID0gMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduaWZpY2FuZCA9IDB4MDAwZmZmZmYpOwotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotCi0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMoZG91YmxlIHgsIHVpbnQzMl90JiBhKQotICAgIHsKLSAgICAgICAgc3RkOjptZW1jcHkoJmEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sIDQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHNldF9iaXRzKGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sICZhLCA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JJR19FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDApOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSVRUTEVfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSA0KTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChmYWxzZSk7Ci0jZW5kaWYKLX07Ci0KLS8vLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGRvdWJsZSwgZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9hbGxfYml0c190YWcgbWV0aG9kOwotCi0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNpZ24gICAgID0gKCh1aW50NjRfdCkweDgwMDAwMDAwdSkgPDwgMzI7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGV4cG9uZW50ID0gKCh1aW50NjRfdCkweDdmZjAwMDAwKSA8PCAzMjsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgZmxhZyAgICAgPSAwOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzaWduaWZpY2FuZAotICAgICAgICA9ICgoKHVpbnQ2NF90KTB4MDAwZmZmZmYpIDw8IDMyKSArICgodWludDY0X3QpMHhmZmZmZmZmZnUpOwotCi0gICAgdHlwZWRlZiB1aW50NjRfdCBiaXRzOwotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGRvdWJsZSB4LCB1aW50NjRfdCYgYSkgeyBzdGQ6Om1lbWNweSgmYSwgJngsIDgpOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0X2JpdHMoZG91YmxlJiB4LCB1aW50NjRfdCBhKSB7IHN0ZDo6bWVtY3B5KCZ4LCAmYSwgOCk7IH0KLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfRlBDTEFTU0lGWV9WQVhfRk9STUFUCi0KLS8vIGxvbmcgZG91YmxlICg2NCBiaXRzKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04pXAotICAgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19DT0RFR0VBUl9fKQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmMDAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDBmZmZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyBvZmZzZXRfLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sICZhLCA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JJR19FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDApOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSVRUTEVfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSA0KTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChmYWxzZSk7Ci0jZW5kaWYKLX07Ci0KLS8vLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IGZwX3RyYWl0c19ub25fbmF0aXZlPGxvbmcgZG91YmxlLCBkb3VibGVfcHJlY2lzaW9uPgotewotICAgIHR5cGVkZWYgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2lnbiAgICAgPSAodWludDY0X3QpMHg4MDAwMDAwMHUgPDwgMzI7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGV4cG9uZW50ID0gKHVpbnQ2NF90KTB4N2ZmMDAwMDAgPDwgMzI7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGZsYWcgICAgID0gMDsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qgc2lnbmlmaWNhbmQKLSAgICAgICAgPSAoKHVpbnQ2NF90KTB4MDAwZmZmZmYgPDwgMzIpICsgKHVpbnQ2NF90KTB4ZmZmZmZmZmZ1OwotCi0gICAgdHlwZWRlZiB1aW50NjRfdCBiaXRzOwotICAgIHN0YXRpYyB2b2lkIGdldF9iaXRzKGxvbmcgZG91YmxlIHgsIHVpbnQ2NF90JiBhKSB7IHN0ZDo6bWVtY3B5KCZhLCAmeCwgOCk7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDY0X3QgYSkgeyBzdGQ6Om1lbWNweSgmeCwgJmEsIDgpOyB9Ci19OwotCi0jZW5kaWYKLQotCi0vLyBsb25nIGRvdWJsZSAoPjY0IGJpdHMpLCB4ODYgYW5kIHg2NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX01fSVg4NikgXAotICAgIHx8IGRlZmluZWQoX19hbWQ2NCkgfHwgZGVmaW5lZChfX2FtZDY0X18pICB8fCBkZWZpbmVkKF9NX0FNRDY0KSBcCi0gICAgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkKLQotLy8gSW50ZWwgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgKDgwIGJpdHMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmZjAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDA4MDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDAwN2ZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyA2LCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIDYsICZhLCA0KTsKLSAgICB9Ci19OwotCi0KLS8vIGxvbmcgZG91YmxlICg+NjQgYml0cyksIEl0YW5pdW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNlbGlmIGRlZmluZWQoX19pYTY0KSB8fCBkZWZpbmVkKF9faWE2NF9fKSB8fCBkZWZpbmVkKF9NX0lBNjQpCi0KLS8vIFRoZSBmbG9hdGluZyBwb2ludCBmb3JtYXQgaXMgdW5rbm93biBhdCBjb21waWxlIHRpbWUKLS8vIE5vIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIGlzIHByb3ZpZGVkLgotLy8gVGhlIGdlbmVyaWNfdGFnIGRlZmluaXRpb24gaXMgdXNlZC4KLQotLy8gVGhlIEl0YW5pdW0gc3VwcG9ydHMgYm90aAotLy8gdGhlIEludGVsIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0ICg4MCBiaXRzKSBhbmQKLS8vIHRoZSBJRUVFIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0IHdpdGggMTUgZXhwb25lbnQgYml0cyAoMTI4IGJpdHMpLgotCi0KLS8vIGxvbmcgZG91YmxlICg+NjQgYml0cyksIFBvd2VyUEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNlbGlmIGRlZmluZWQoX19wb3dlcnBjKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fUE9XRVJQQ19fKSBcCi0gICAgfHwgZGVmaW5lZChfX3BwYykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pCi0KLS8vIFBvd2VyUEMgZXh0ZW5kZWQgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQgKDEyOCBiaXRzKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnBfdHJhaXRzX25vbl9uYXRpdmU8bG9uZyBkb3VibGUsIGV4dGVuZGVkX2RvdWJsZV9wcmVjaXNpb24+Ci17Ci0gICAgdHlwZWRlZiBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyBtZXRob2Q7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ24gICAgICAgID0gMHg4MDAwMDAwMHUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZXhwb25lbnQgICAgPSAweDdmZjAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIGZsYWcgICAgICAgID0gMHgwMDAwMDAwMCk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBzaWduaWZpY2FuZCA9IDB4MDAwZmZmZmYpOwotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotCi0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMobG9uZyBkb3VibGUgeCwgdWludDMyX3QmIGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweSgmYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJngpICsgb2Zmc2V0XywgNCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0X2JpdHMobG9uZyBkb3VibGUmIHgsIHVpbnQzMl90IGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmeCkgKyBvZmZzZXRfLCAmYSwgNCk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9CSUdfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSAwKTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTElUVExFX0VORElBTikKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBvZmZzZXRfID0gMTIpOwotI2Vsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKGZhbHNlKTsKLSNlbmRpZgotfTsKLQotCi0vLyBsb25nIGRvdWJsZSAoPjY0IGJpdHMpLCBNb3Rvcm9sYSA2OEsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZWxpZiBkZWZpbmVkKF9fbTY4aykgfHwgZGVmaW5lZChfX202OGtfXykgXAotICAgIHx8IGRlZmluZWQoX19tYzY4MDAwKSB8fCBkZWZpbmVkKF9fbWM2ODAwMF9fKSBcCi0KLS8vIE1vdG9yb2xhIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0ICg5NiBiaXRzKQotCi0vLyBJdCBpcyB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIEludGVsIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0LAotLy8gZXhjZXB0IHRoYXQgMSkgaXQgaXMgYmlnLWVuZGlhbiwgMikgdGhlIDNyZCBhbmQgNHRoIGJ5dGUgYXJlIHBhZGRpbmcsIGFuZAotLy8gMykgdGhlIGZsYWcgYml0IGlzIG5vdCBzZXQgZm9yIGluZmluaXR5Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmZjAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDA4MDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDAwN2ZmZik7Ci0KLSAgICAvLyBjb3B5IDFzdCwgMm5kLCA1dGggYW5kIDZ0aCBieXRlLiAzcmQgYW5kIDR0aCBieXRlIGFyZSBwYWRkaW5nLgotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBiaXRzOwotCi0gICAgc3RhdGljIHZvaWQgZ2V0X2JpdHMobG9uZyBkb3VibGUgeCwgdWludDMyX3QmIGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweSgmYSwgJngsIDIpOwotICAgICAgICBzdGQ6Om1lbWNweShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmYSkgKyAyLAotICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJngpICsgNCwgMik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0X2JpdHMobG9uZyBkb3VibGUmIHgsIHVpbnQzMl90IGEpCi0gICAgewotICAgICAgICBzdGQ6Om1lbWNweSgmeCwgJmEsIDIpOwotICAgICAgICBzdGQ6Om1lbWNweShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmeCkgKyA0LAotICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJmEpICsgMiwgMik7Ci0gICAgfQotfTsKLQotCi0vLyBsb25nIGRvdWJsZSAoPjY0IGJpdHMpLCBBbGwgb3RoZXIgcHJvY2Vzc29ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZWxzZQotCi0vLyBJRUVFIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0IHdpdGggMTUgZXhwb25lbnQgYml0cyAoMTI4IGJpdHMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcF90cmFpdHNfbm9uX25hdGl2ZTxsb25nIGRvdWJsZSwgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbj4KLXsKLSAgICB0eXBlZGVmIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIG1ldGhvZDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgc2lnbiAgICAgICAgPSAweDgwMDAwMDAwdSk7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVpbnQzMl90LCBleHBvbmVudCAgICA9IDB4N2ZmZjAwMDApOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1aW50MzJfdCwgZmxhZyAgICAgICAgPSAweDAwMDAwMDAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodWludDMyX3QsIHNpZ25pZmljYW5kID0gMHgwMDAwZmZmZik7Ci0KLSAgICB0eXBlZGVmIHVpbnQzMl90IGJpdHM7Ci0KLSAgICBzdGF0aWMgdm9pZCBnZXRfYml0cyhsb25nIGRvdWJsZSB4LCB1aW50MzJfdCYgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZhLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmeCkgKyBvZmZzZXRfLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRfYml0cyhsb25nIGRvdWJsZSYgeCwgdWludDMyX3QgYSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZ4KSArIG9mZnNldF8sICZhLCA0KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0JJR19FTkRJQU4pCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgb2Zmc2V0XyA9IDApOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSVRUTEVfRU5ESUFOKQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIG9mZnNldF8gPSAxMik7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoZmFsc2UpOwotI2VuZGlmCi19OwotCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gc2l6ZV90b19wcmVjaXNpb24gaXMgYSB0eXBlIHN3aXRjaCBmb3IgY29udmVydGluZyBhIEMrKyBmbG9hdGluZyBwb2ludCB0eXBlCi0vLyB0byB0aGUgY29ycmVzcG9uZGluZyBwcmVjaXNpb24gdHlwZS4KLQotdGVtcGxhdGU8aW50IG4sIGJvb2wgZnA+IHN0cnVjdCBzaXplX3RvX3ByZWNpc2lvbgotewotICAgdHlwZWRlZiB1bmtub3duX3ByZWNpc2lvbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV90b19wcmVjaXNpb248NCwgdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIHNpbmdsZV9wcmVjaXNpb24gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNpemVfdG9fcHJlY2lzaW9uPDgsIHRydWU+Ci17Ci0gICAgdHlwZWRlZiBkb3VibGVfcHJlY2lzaW9uIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaXplX3RvX3ByZWNpc2lvbjwxMCwgdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIGV4dGVuZGVkX2RvdWJsZV9wcmVjaXNpb24gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNpemVfdG9fcHJlY2lzaW9uPDEyLCB0cnVlPgotewotICAgIHR5cGVkZWYgZXh0ZW5kZWRfZG91YmxlX3ByZWNpc2lvbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2l6ZV90b19wcmVjaXNpb248MTYsIHRydWU+Ci17Ci0gICAgdHlwZWRlZiBleHRlbmRlZF9kb3VibGVfcHJlY2lzaW9uIHR5cGU7Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIEZpZ3VyZSBvdXQgd2hldGhlciB0byB1c2UgbmF0aXZlIGNsYXNzaWZpY2F0aW9uIGZ1bmN0aW9ucyBiYXNlZCBvbgotLy8gd2hldGhlciBUIGlzIGEgYnVpbHQgaW4gZmxvYXRpbmcgcG9pbnQgdHlwZSBvciBub3Q6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc2VsZWN0X25hdGl2ZQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzaXplX3RvX3ByZWNpc2lvbjxzaXplb2YoVCksIDo6bmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1ZT46OnR5cGUgcHJlY2lzaW9uOwotICAgIHR5cGVkZWYgZnBfdHJhaXRzX25vbl9uYXRpdmU8VCwgcHJlY2lzaW9uPiB0eXBlOwotfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfbmF0aXZlPGZsb2F0PgotewotICAgIHR5cGVkZWYgZnBfdHJhaXRzX25hdGl2ZTxmbG9hdD4gdHlwZTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X25hdGl2ZTxkb3VibGU+Ci17Ci0gICAgdHlwZWRlZiBmcF90cmFpdHNfbmF0aXZlPGRvdWJsZT4gdHlwZTsKLX07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X25hdGl2ZTxsb25nIGRvdWJsZT4KLXsKLSAgICB0eXBlZGVmIGZwX3RyYWl0c19uYXRpdmU8bG9uZyBkb3VibGU+IHR5cGU7Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBmcF90cmFpdHMgaXMgYSB0eXBlIHN3aXRjaCB0aGF0IHNlbGVjdHMgdGhlIHJpZ2h0IGZwX3RyYWl0c19ub25fbmF0aXZlCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9DOTkpICYmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgNCkpKSBcCi0gICAmJiAhZGVmaW5lZChfX2hwdXgpIFwKLSAgICYmICFkZWZpbmVkKF9fREVDQ1hYKVwKLSAgICYmICFkZWZpbmVkKF9fb3NmX18pIFwKLSAgICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKSAmJiAhZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKVwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfRElTQUJMRV9TVERfRlBDTEFTU0lGWSkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBmcF90cmFpdHMKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc2l6ZV90b19wcmVjaXNpb248c2l6ZW9mKFQpLCA6Om5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlIHByZWNpc2lvbjsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX0RJU0FCTEVfU1REX0ZQQ0xBU1NJRlkpCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RfbmF0aXZlPFQ+Ojp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgZnBfdHJhaXRzX25vbl9uYXRpdmU8VCwgcHJlY2lzaW9uPiB0eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiBmcF90cmFpdHNfbm9uX25hdGl2ZTxULCBwcmVjaXNpb24+IHNpZ25fY2hhbmdlX3R5cGU7Ci19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19ICAgLy8gbmFtZXNwYWNlIGRldGFpbAotfSAgIC8vIG5hbWVzcGFjZSBtYXRoCi19ICAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9yb3VuZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9yb3VuZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDUxOGM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9kZXRhaWwvcm91bmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8vIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwOC4KLQotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQKLS8vIG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfU1BFQ0lBTF9ST1VORF9GV0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfU1BFQ0lBTF9ST1VORF9GV0RfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvdG9vbHMvcHJvbW90aW9uLmhwcD4KLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgIG5hbWVzcGFjZSBtYXRoCi0gICB7IAotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB0cnVuYyhjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgdHJ1bmMoY29uc3QgVCYgdik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgaW50IGl0cnVuYyhjb25zdCBUJiB2LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGludCBpdHJ1bmMoY29uc3QgVCYgdik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgbG9uZyBsdHJ1bmMoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBsb25nIGx0cnVuYyhjb25zdCBUJiB2KTsKLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxsdHJ1bmMoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbGx0cnVuYyhjb25zdCBUJiB2KTsKLSNlbmRpZgotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcm91bmQoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHJvdW5kKGNvbnN0IFQmIHYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIGludCBpcm91bmQoY29uc3QgVCYgdiwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbnQgaXJvdW5kKGNvbnN0IFQmIHYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIGxvbmcgbHJvdW5kKGNvbnN0IFQmIHYsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgbG9uZyBscm91bmQoY29uc3QgVCYgdik7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsbHJvdW5kKGNvbnN0IFQmIHYsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlIGxscm91bmQoY29uc3QgVCYgdik7Ci0jZW5kaWYKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgVCogaXBhcnQsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgVCBtb2RmKGNvbnN0IFQmIHYsIFQqIGlwYXJ0KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgaW50KiBpcGFydCwgY29uc3QgUG9saWN5JiBwb2wpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBUIG1vZGYoY29uc3QgVCYgdiwgaW50KiBpcGFydCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgVCBtb2RmKGNvbnN0IFQmIHYsIGxvbmcqIGlwYXJ0LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBsb25nKiBpcGFydCk7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUqIGlwYXJ0LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIFQgbW9kZihjb25zdCBUJiB2LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUqIGlwYXJ0KTsKLSNlbmRpZgotCi0gICB9Ci19Ci0KLSN1bmRlZiBORE5CT09TVF9NQVRIX1NURF9VU0lORwotI2RlZmluZSBORE5CT09TVF9NQVRIX1NURF9VU0lORyBORE5CT09TVF9NQVRIX1NURF9VU0lOR19DT1JFXAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OnJvdW5kO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjppcm91bmQ7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omxyb3VuZDtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6dHJ1bmM7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Oml0cnVuYztcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6bHRydW5jO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjptb2RmOwotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1NQRUNJQUxfUk9VTkRfRldEX0hQUAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZnBjbGFzc2lmeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZnBjbGFzc2lmeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiNGIxOTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2ZwY2xhc3NpZnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjA2ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUtMjAwOC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCBKb2hhbiBSYWRlCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX0ZQQ0xBU1NJRllfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRlBDTEFTU0lGWV9IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9yZWFsX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwPgotLyohCi0gIFxmaWxlIGZwY2xhc3NpZnkuaHBwCi0gIFxicmllZiBDbGFzc2lmeSBmbG9hdGluZy1wb2ludCB2YWx1ZSBhcyBub3JtYWwsIHN1Ym5vcm1hbCwgemVybywgaW5maW5pdGUsIG9yIE5hTi4KLSAgXHZlcnNpb24gMS4wCi0gIFxhdXRob3IgSm9obiBNYWRkb2NrCi0gKi8KLQotLyoKLQotMS4gSWYgdGhlIHBsYXRmb3JtIGlzIEM5OSBjb21wbGlhbnQsIHRoZW4gdGhlIG5hdGl2ZSBmbG9hdGluZyBwb2ludAotY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGFyZSB1c2VkLiAgSG93ZXZlciwgbm90ZSB0aGF0IHdlIG11c3Qgb25seQotZGVmaW5lIHRoZSBmdW5jdGlvbnMgd2hpY2ggY2FsbCBzdGQ6OmZwY2xhc3NpZnkgZXRjIGlmIHRoYXQgZnVuY3Rpb24KLXJlYWxseSBkb2VzIGV4aXN0OiBvdGhlcndpc2UgYSBjb21waWxlciBtYXkgcmVqZWN0IHRoZSBjb2RlIGV2ZW4gdGhvdWdoCi10aGUgdGVtcGxhdGUgaXMgbmV2ZXIgaW5zdGFudGlhdGVkLgotCi0yLiBJZiB0aGUgcGxhdGZvcm0gaXMgbm90IEM5OSBjb21wbGlhbnQsIGFuZCB0aGUgYmluYXJ5IGZvcm1hdCBmb3IKLWEgZmxvYXRpbmcgcG9pbnQgdHlwZSAoZmxvYXQsIGRvdWJsZSBvciBsb25nIGRvdWJsZSkgY2FuIGJlIGRldGVybWluZWQKLWF0IGNvbXBpbGUgdGltZSwgdGhlbiB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSBpcyB1c2VkOgotCi0gICAgICAgIElmIGFsbCBleHBvbmVudCBiaXRzLCB0aGUgZmxhZyBiaXQgKGlmIHRoZXJlIGlzIG9uZSksCi0gICAgICAgIGFuZCBhbGwgc2lnbmlmaWNhbmQgYml0cyBhcmUgMCwgdGhlbiB0aGUgbnVtYmVyIGlzIHplcm8uCi0KLSAgICAgICAgSWYgYWxsIGV4cG9uZW50IGJpdHMgYW5kIHRoZSBmbGFnIGJpdCAoaWYgdGhlcmUgaXMgb25lKSBhcmUgMCwKLSAgICAgICAgYW5kIGF0IGxlYXN0IG9uZSBzaWduaWZpY2FuZCBiaXQgaXMgMSwgdGhlbiB0aGUgbnVtYmVyIGlzIHN1Ym5vcm1hbC4KLQotICAgICAgICBJZiBhbGwgZXhwb25lbnQgYml0cyBhcmUgMSBhbmQgYWxsIHNpZ25pZmljYW5kIGJpdHMgYXJlIDAsCi0gICAgICAgIHRoZW4gdGhlIG51bWJlciBpcyBpbmZpbml0eS4KLQotICAgICAgICBJZiBhbGwgZXhwb25lbnQgYml0cyBhcmUgMSBhbmQgYXQgbGVhc3Qgb25lIHNpZ25pZmljYW5kIGJpdCBpcyAxLAotICAgICAgICB0aGVuIHRoZSBudW1iZXIgaXMgYSBub3QtYS1udW1iZXIuCi0KLSAgICAgICAgT3RoZXJ3aXNlIHRoZSBudW1iZXIgaXMgbm9ybWFsLgotCi0gICAgICAgIFRoaXMgYWxnb3JpdGhtIHdvcmtzIGZvciB0aGUgSUVFRSA3NTQgcmVwcmVzZW50YXRpb24sCi0gICAgICAgIGFuZCBhbHNvIGZvciBzZXZlcmFsIG5vbiBJRUVFIDc1NCBmb3JtYXRzLgotCi0gICAgTW9zdCBmb3JtYXRzIGhhdmUgdGhlIHN0cnVjdHVyZQotICAgICAgICBzaWduIGJpdCArIGV4cG9uZW50IGJpdHMgKyBzaWduaWZpY2FuZCBiaXRzLgotCi0gICAgQSBmZXcgaGF2ZSB0aGUgc3RydWN0dXJlCi0gICAgICAgIHNpZ24gYml0ICsgZXhwb25lbnQgYml0cyArIGZsYWcgYml0ICsgc2lnbmlmaWNhbmQgYml0cy4KLSAgICBUaGUgZmxhZyBiaXQgaXMgMCBmb3IgemVybyBhbmQgc3Vibm9ybWFsIG51bWJlcnMsCi0gICAgICAgIGFuZCAxIGZvciBub3JtYWwgbnVtYmVycyBhbmQgTmFOLgotICAgICAgICBJdCBpcyAwIChNb3Rvcm9sYSA2OEspIG9yIDEgKEludGVsKSBmb3IgaW5maW5pdHkuCi0KLSAgICBUbyBnZXQgdGhlIGJpdHMsIHRoZSBmb3VyIG9yIGVpZ2h0IG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIGNvcGllZAotICAgIGludG8gYW4gdWludDMyX3Qgb3IgdWludDY0X3QgYW5kIGJpdCBtYXNrcyBhcmUgYXBwbGllZC4KLSAgICBUaGlzIGNvdmVycyBhbGwgdGhlIGV4cG9uZW50IGJpdHMgYW5kIHRoZSBmbGFnIGJpdCAoaWYgdGhlcmUgaXMgb25lKSwKLSAgICBidXQgbm90IGFsd2F5cyBhbGwgdGhlIHNpZ25pZmljYW5kIGJpdHMuCi0gICAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IGhhdmUgdHdvIGltcGxlbWVudGF0aW9ucywKLSAgICBkZXBlbmRpbmcgb24gd2hldGhlciBhbGwgdGhlIHNpZ25pZmljYW5kIGJpdHMgYXJlIGNvcGllZCBvciBub3QuCi0KLTMuIElmIHRoZSBwbGF0Zm9ybSBpcyBub3QgQzk5IGNvbXBsaWFudCwgYW5kIHRoZSBiaW5hcnkgZm9ybWF0IGZvcgotYSBmbG9hdGluZyBwb2ludCB0eXBlIChmbG9hdCwgZG91YmxlIG9yIGxvbmcgZG91YmxlKSBjYW4gbm90IGJlIGRldGVybWluZWQKLWF0IGNvbXBpbGUgdGltZSwgdGhlbiBjb21wYXJpc29uIHdpdGggc3RkOjpudW1lcmljX2xpbWl0cyB2YWx1ZXMKLWlzIHVzZWQuCi0KLSovCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLSNpbmNsdWRlIDxmbG9hdC5oPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICBuYW1lc3BhY2Ugc3RkeyB1c2luZyA6OmFiczsgdXNpbmcgOjpmYWJzOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0vLwotLy8gVGhpcyBtdXN0IG5vdCBiZSBsb2NhdGVkIGluIGFueSBuYW1lc3BhY2UgdW5kZXIgbmRuYm9vc3Q6Om1hdGgKLS8vIG90aGVyd2lzZSB3ZSBjYW4gZ2V0IGludG8gYW4gaW5maW5pdGUgbG9vcCBpZiBpc25hbiBpcwotLy8gYSAjZGVmaW5lIGZvciAiaXNuYW4iICEKLS8vCi1uYW1lc3BhY2UgbWF0aF9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ4MDApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgYm9vbCBpc19uYW5faGVscGVyKFQgdCwgY29uc3QgbmRuYm9vc3Q6OnRydWVfdHlwZSYpCi17Ci0jaWZkZWYgaXNuYW4KLSAgIHJldHVybiBpc25hbih0KTsKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9ESVNBQkxFX1NURF9GUENMQVNTSUZZKSB8fCAhZGVmaW5lZChORE5CT09TVF9IQVNfRlBDTEFTU0lGWSkKLSAgICh2b2lkKXQ7Ci0gICByZXR1cm4gZmFsc2U7Ci0jZWxzZSAvLyBORE5CT09TVF9IQVNfRlBDTEFTU0lGWQotICAgcmV0dXJuIChORE5CT09TVF9GUENMQVNTSUZZX1BSRUZJWCBmcGNsYXNzaWZ5KHQpID09IChpbnQpRlBfTkFOKTsKLSNlbmRpZgotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBib29sIGlzX25hbl9oZWxwZXIoVCwgY29uc3QgbmRuYm9vc3Q6OmZhbHNlX3R5cGUmKQotewotICAgcmV0dXJuIGZhbHNlOwotfQotCi19Ci0KLW5hbWVzcGFjZSBtYXRoewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkKLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBmcGNsYXNzaWZ5X2ltcCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB0LCBjb25zdCBuYXRpdmVfdGFnJikKLXsKLSAgIHJldHVybiAoc3RkOjpmcGNsYXNzaWZ5KSh0KTsKLX0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBpbnQgZnBjbGFzc2lmeV9pbXAgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCwgY29uc3QgZ2VuZXJpY190YWc8dHJ1ZT4mKQotewotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKHQpOwotCi0gICAvLyB3aGVuZXZlciBwb3NzaWJsZSBjaGVjayBmb3IgTmFuJ3MgZmlyc3Q6Ci0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfRlBDTEFTU0lGWSkgICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfRElTQUJMRV9TVERfRlBDTEFTU0lGWSkKLSAgIGlmKDo6bmRuYm9vc3Q6Om1hdGhfZGV0YWlsOjppc19uYW5faGVscGVyKHQsIDo6bmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+KCkpKQotICAgICAgcmV0dXJuIEZQX05BTjsKLSNlbGlmIGRlZmluZWQoaXNuYW4pCi0gICBpZihuZG5ib29zdDo6bWF0aF9kZXRhaWw6OmlzX25hbl9oZWxwZXIodCwgOjpuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD4oKSkpCi0gICAgICByZXR1cm4gRlBfTkFOOwotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0gICBpZig6Ol9pc25hbihuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnJlYWxfY2FzdDxkb3VibGU+KHQpKSkKLSAgICAgIHJldHVybiBGUF9OQU47Ci0jZW5kaWYKLSAgIC8vIHN0ZDo6ZmFicyBicm9rZW4gb24gYSBmZXcgc3lzdGVtcyBlc3BlY2lhbGx5IGZvciBsb25nIGxvbmchISEhCi0gICBUIGF0ID0gKHQgPCBUKDApKSA/IC10IDogdDsKLQotICAgLy8gVXNlIGEgcHJvY2VzcyBvZiBleGNsdXNpb24gdG8gZmlndXJlIG91dAotICAgLy8gd2hhdCBraW5kIG9mIHR5cGUgd2UgaGF2ZSwgdGhpcyByZWxpZXMgb24KLSAgIC8vIElFRUUgY29uZm9ybWluZyByZWFscyB0aGF0IHdpbGwgdHJlYXQKLSAgIC8vIE5hbidzIGFzIHVub3JkZXJlZC4gIFNvbWUgY29tcGlsZXJzCi0gICAvLyBkb24ndCBkbyB0aGlzIG9uY2Ugb3B0aW1pc2F0aW9ucyBhcmUKLSAgIC8vIHR1cm5lZCBvbiwgaGVuY2UgdGhlIGNoZWNrIGZvciBuYW4ncyBhYm92ZS4KLSAgIGlmKGF0IDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCkpCi0gICB7Ci0gICAgICBpZihhdCA+PSAoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKSgpKQotICAgICAgICAgcmV0dXJuIEZQX05PUk1BTDsKLSAgICAgIHJldHVybiAoYXQgIT0gMCkgPyBGUF9TVUJOT1JNQUwgOiBGUF9aRVJPOwotICAgfQotICAgZWxzZSBpZihhdCA+IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCkpCi0gICAgICByZXR1cm4gRlBfSU5GSU5JVEU7Ci0gICByZXR1cm4gRlBfTkFOOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBpbnQgZnBjbGFzc2lmeV9pbXAgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCwgY29uc3QgZ2VuZXJpY190YWc8ZmFsc2U+JikKLXsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpCi0gICAgICByZXR1cm4gZnBjbGFzc2lmeV9pbXAodCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0jZW5kaWYKLSAgIC8vCi0gICAvLyBBbiB1bmtub3duIHR5cGUgd2l0aCBubyBudW1lcmljX2xpbWl0cyBzdXBwb3J0LAotICAgLy8gc28gd2hhdCBhcmUgd2Ugc3VwcG9zZWQgdG8gZG8gd2UgZG8gaGVyZT8KLSAgIC8vCi0gICBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUodCk7Ci0KLSAgIHJldHVybiB0ID09IDAgPyBGUF9aRVJPIDogRlBfTk9STUFMOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW50IGZwY2xhc3NpZnlfaW1wIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHgsIGllZWVfY29weV9hbGxfYml0c190YWcpCi17Ci0gICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKHgpOwotCi0gICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKGEpOwotICAgYSAmPSB0cmFpdHM6OmV4cG9uZW50IHwgdHJhaXRzOjpmbGFnIHwgdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9WQVJJQUJMRSgodHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6ZmxhZyB8IHRyYWl0czo6c2lnbmlmaWNhbmQpKTsKLSAgIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9WQVJJQUJMRShhKTsKLQotICAgaWYoYSA8PSB0cmFpdHM6OnNpZ25pZmljYW5kKSB7Ci0gICAgICBpZihhID09IDApCi0gICAgICAgICByZXR1cm4gRlBfWkVSTzsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBGUF9TVUJOT1JNQUw7Ci0gICB9Ci0KLSAgIGlmKGEgPCB0cmFpdHM6OmV4cG9uZW50KSByZXR1cm4gRlBfTk9STUFMOwotCi0gICBhICY9IHRyYWl0czo6c2lnbmlmaWNhbmQ7Ci0gICBpZihhID09IDApIHJldHVybiBGUF9JTkZJTklURTsKLQotICAgcmV0dXJuIEZQX05BTjsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWludCBmcGNsYXNzaWZ5X2ltcCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB4LCBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZykKLXsKLSAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotCi0gICBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUoeCk7Ci0KLSAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OmZsYWcgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotCi0gICBpZihhIDw9IHRyYWl0czo6c2lnbmlmaWNhbmQpIHsKLSAgICAgIGlmKHggPT0gMCkKLSAgICAgICAgIHJldHVybiBGUF9aRVJPOwotICAgICAgZWxzZQotICAgICAgICAgcmV0dXJuIEZQX1NVQk5PUk1BTDsKLSAgIH0KLQotICAgaWYoYSA8IHRyYWl0czo6ZXhwb25lbnQpIHJldHVybiBGUF9OT1JNQUw7Ci0KLSAgIGEgJj0gdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgIHRyYWl0czo6c2V0X2JpdHMoeCxhKTsKLSAgIGlmKHggPT0gMCkgcmV0dXJuIEZQX0lORklOSVRFOwotCi0gICByZXR1cm4gRlBfTkFOOwotfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWSkgJiYgKGRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19OQVRJVkVfTE9OR19ET1VCTEVfRlBfQ0xBU1NJRlkpIHx8IGRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUykpCi1pbmxpbmUgaW50IGZwY2xhc3NpZnlfaW1wIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChsb25nIGRvdWJsZSB0LCBjb25zdCBuYXRpdmVfdGFnJikKLXsKLSAgIHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcCh0LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLX0KLSNlbmRpZgotCi19ICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBmcGNsYXNzaWZ5IE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIGlmKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkICYmIGRldGFpbDo6aXNfZ2VuZXJpY190YWdfZmFsc2Uoc3RhdGljX2Nhc3Q8bWV0aG9kKj4oMCkpKQotICAgICAgcmV0dXJuIGRldGFpbDo6ZnBjbGFzc2lmeV9pbXAoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4odCksIGRldGFpbDo6Z2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0gICByZXR1cm4gZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcChzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPih0KSwgbWV0aG9kKCkpOwotI2Vsc2UKLSAgIHJldHVybiBkZXRhaWw6OmZwY2xhc3NpZnlfaW1wKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHQpLCBtZXRob2QoKSk7Ci0jZW5kaWYKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLXRlbXBsYXRlIDw+Ci1pbmxpbmUgaW50IGZwY2xhc3NpZnk8bG9uZyBkb3VibGU+IE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChsb25nIGRvdWJsZSB0KQotewotICAgdHlwZWRlZiBkZXRhaWw6OmZwX3RyYWl0czxsb25nIGRvdWJsZT46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgIGlmKHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBkb3VibGU+Ojppc19zcGVjaWFsaXplZCAmJiBkZXRhaWw6OmlzX2dlbmVyaWNfdGFnX2ZhbHNlKHN0YXRpY19jYXN0PG1ldGhvZCo+KDApKSkKLSAgICAgIHJldHVybiBkZXRhaWw6OmZwY2xhc3NpZnlfaW1wKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHQpLCBkZXRhaWw6OmdlbmVyaWNfdGFnPHRydWU+KCkpOwotICAgcmV0dXJuIGRldGFpbDo6ZnBjbGFzc2lmeV9pbXAoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4odCksIG1ldGhvZCgpKTsKLSNlbHNlCi0gICByZXR1cm4gZGV0YWlsOjpmcGNsYXNzaWZ5X2ltcChzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPih0KSwgbWV0aG9kKCkpOwotI2VuZGlmCi19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNmaW5pdGVfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OmlzZmluaXRlKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNmaW5pdGVfaW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4ID49IC0oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpCi0gICAgICAgICAgICAmJiB4IDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgpKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2Zpbml0ZV9pbXBsKFQgeCwgZ2VuZXJpY190YWc8ZmFsc2U+IGNvbnN0JikKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfTk9fTElNSVRTX0NPTVBJTEVfVElNRV9DT05TVEFOVFMKLSAgICAgIGlmKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NwZWNpYWxpemVkKQotICAgICAgICAgcmV0dXJuIGlzZmluaXRlX2ltcGwoeCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci0jZW5kaWYKLSAgICAgICAodm9pZCl4OyAvLyB3YXJuaW5nIHN1cHJlc3Npb24uCi0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc2Zpbml0ZV9pbXBsKFQgeCwgaWVlZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQ7Ci0gICAgICAgIHJldHVybiBhICE9IHRyYWl0czo6ZXhwb25lbnQ7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWSkgJiYgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX05BVElWRV9MT05HX0RPVUJMRV9GUF9DTEFTU0lGWSkKLWlubGluZSBib29sIGlzZmluaXRlX2ltcGwgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKGxvbmcgZG91YmxlIHQsIGNvbnN0IG5hdGl2ZV90YWcmKQotewotICAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmlzZmluaXRlX2ltcGwodCwgZ2VuZXJpY190YWc8dHJ1ZT4oKSk7Ci19Ci0jZW5kaWYKLQotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgKGlzZmluaXRlKShUIHgpCi17IC8vITwgXGJyaWVmIHJldHVybiB0cnVlIGlmIGZsb2F0aW5nLXBvaW50IHR5cGUgdCBpcyBmaW5pdGUuCi0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgLy8gdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnR5cGUgZnBfdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2Zpbml0ZV9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCAoaXNmaW5pdGUpKGxvbmcgZG91YmxlIHgpCi17IC8vITwgXGJyaWVmIHJldHVybiB0cnVlIGlmIGZsb2F0aW5nLXBvaW50IHR5cGUgdCBpcyBmaW5pdGUuCi0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2Zpbml0ZV9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNub3JtYWxfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6Omlzbm9ybWFsKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNub3JtYWxfaW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgIGlmKHggPCAwKSB4ID0gLXg7Ci0gICAgICAgIHJldHVybiB4ID49IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCkKLSAgICAgICAgICAgICYmIHggPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzbm9ybWFsX2ltcGwoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpCi0gICAgICAgICByZXR1cm4gaXNub3JtYWxfaW1wbCh4LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLSNlbmRpZgotICAgICAgIHJldHVybiAhKHggPT0gMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25vcm1hbF9pbXBsKFQgeCwgaWVlZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OmZsYWc7Ci0gICAgICAgIHJldHVybiAoYSAhPSAwKSAmJiAoYSA8IHRyYWl0czo6ZXhwb25lbnQpOwotICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkpICYmIGRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19OQVRJVkVfTE9OR19ET1VCTEVfRlBfQ0xBU1NJRlkpCi1pbmxpbmUgYm9vbCBpc25vcm1hbF9pbXBsIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChsb25nIGRvdWJsZSB0LCBjb25zdCBuYXRpdmVfdGFnJikKLXsKLSAgIHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjppc25vcm1hbF9pbXBsKHQsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotfQotI2VuZGlmCi0KLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBib29sIChpc25vcm1hbCkoVCB4KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnR5cGUgZnBfdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc25vcm1hbF9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCAoaXNub3JtYWwpKGxvbmcgZG91YmxlIHgpCi17Ci0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc25vcm1hbF9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OmlzaW5mKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgICh2b2lkKXg7IC8vIGluIGNhc2UgdGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0IHggaXMgdW51c2VkIGJlY2F1c2Ugc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aGFzX2luZmluaXR5IGlzIGZhbHNlCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpoYXNfaW5maW5pdHkKLSAgICAgICAgICAgICYmICggeCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjppbmZpbml0eSgpCi0gICAgICAgICAgICAgICAgIHx8IHggPT0gLXN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGdlbmVyaWNfdGFnPGZhbHNlPiBjb25zdCYpCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTCi0gICAgICBpZihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCkKLSAgICAgICAgIHJldHVybiBpc2luZl9pbXBsKHgsIGdlbmVyaWNfdGFnPHRydWU+KCkpOwotI2VuZGlmCi0gICAgICAgICh2b2lkKXg7IC8vIHdhcm5pbmcgc3VwcmVzc2lvbi4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGllZWVfY29weV9hbGxfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgICAgICByZXR1cm4gYSA9PSB0cmFpdHM6OmV4cG9uZW50OwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNpbmZfaW1wbChUIHgsIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgICAgICAgYSAmPSB0cmFpdHM6OmV4cG9uZW50IHwgdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgICAgICAgaWYoYSAhPSB0cmFpdHM6OmV4cG9uZW50KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHRyYWl0czo6c2V0X2JpdHMoeCwwKTsKLSAgICAgICAgcmV0dXJuIHggPT0gMDsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfVVNFX1NURF9GUENMQVNTSUZZKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTkFUSVZFX0xPTkdfRE9VQkxFX0ZQX0NMQVNTSUZZKQotaW5saW5lIGJvb2wgaXNpbmZfaW1wbCBORE5CT09TVF9OT19NQUNST19FWFBBTkQobG9uZyBkb3VibGUgdCwgY29uc3QgbmF0aXZlX3RhZyYpCi17Ci0gICByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6aXNpbmZfaW1wbCh0LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLX0KLSNlbmRpZgotCi19ICAgLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgKGlzaW5mKShUIHgpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6ZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjptZXRob2QgbWV0aG9kOwotICAgLy8gdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnR5cGUgZnBfdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2luZl9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCAoaXNpbmYpKGxvbmcgZG91YmxlIHgpCi17Ci0gICB0eXBlZGVmIGRldGFpbDo6ZnBfdHJhaXRzPGxvbmcgZG91YmxlPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIGxvbmcgZG91YmxlIHZhbHVlX3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjppc2luZl9pbXBsKHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NQVRIX1VTRV9TVERfRlBDTEFTU0lGWQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNuYW5faW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OmlzbmFuKSh4KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNuYW5faW1wbChUIHgsIGdlbmVyaWNfdGFnPHRydWU+IGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpoYXNfaW5maW5pdHkKLSAgICAgICAgICAgID8gISh4IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmluZmluaXR5KCkpCi0gICAgICAgICAgICA6IHggIT0geDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBib29sIGlzbmFuX2ltcGwoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUwotICAgICAgaWYoc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQpCi0gICAgICAgICByZXR1cm4gaXNuYW5faW1wbCh4LCBnZW5lcmljX3RhZzx0cnVlPigpKTsKLSNlbmRpZgotICAgICAgICAodm9pZCl4OyAvLyB3YXJuaW5nIHN1cHJlc3Npb24KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIGJvb2wgaXNuYW5faW1wbChUIHgsIGllZWVfY29weV9hbGxfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotICAgICAgICBhICY9IHRyYWl0czo6ZXhwb25lbnQgfCB0cmFpdHM6OnNpZ25pZmljYW5kOwotICAgICAgICByZXR1cm4gYSA+IHRyYWl0czo6ZXhwb25lbnQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgYm9vbCBpc25hbl9pbXBsKFQgeCwgaWVlZV9jb3B5X2xlYWRpbmdfYml0c190YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0KLSAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0cmFpdHM6OmJpdHMgYTsKLSAgICAgICAgdHJhaXRzOjpnZXRfYml0cyh4LGEpOwotCi0gICAgICAgIGEgJj0gdHJhaXRzOjpleHBvbmVudCB8IHRyYWl0czo6c2lnbmlmaWNhbmQ7Ci0gICAgICAgIGlmKGEgPCB0cmFpdHM6OmV4cG9uZW50KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGEgJj0gdHJhaXRzOjpzaWduaWZpY2FuZDsKLSAgICAgICAgdHJhaXRzOjpzZXRfYml0cyh4LGEpOwotICAgICAgICByZXR1cm4geCAhPSAwOwotICAgIH0KLQotfSAgIC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBib29sIChpc25hbikoVCB4KQoteyAvLyE8IFxicmllZiByZXR1cm4gdHJ1ZSBpZiBmbG9hdGluZy1wb2ludCB0eXBlIHQgaXMgTmFOIChOb3QgQSBOdW1iZXIpLgotICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmZwX3RyYWl0czxUPjo6dHlwZSB0cmFpdHM7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6bWV0aG9kIG1ldGhvZDsKLSAgIC8vIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp0eXBlIGZwX3RhZzsKLSAgIHJldHVybiBkZXRhaWw6OmlzbmFuX2ltcGwoeCwgbWV0aG9kKCkpOwotfQotCi0jaWZkZWYgaXNuYW4KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzbmFuIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORDxmbG9hdD4oZmxvYXQgdCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoX2RldGFpbDo6aXNfbmFuX2hlbHBlcih0LCBuZG5ib29zdDo6dHJ1ZV90eXBlKCkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc25hbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQ8ZG91YmxlPihkb3VibGUgdCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoX2RldGFpbDo6aXNfbmFuX2hlbHBlcih0LCBuZG5ib29zdDo6dHJ1ZV90eXBlKCkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc25hbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQ8bG9uZyBkb3VibGU+KGxvbmcgZG91YmxlIHQpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aF9kZXRhaWw6OmlzX25hbl9oZWxwZXIodCwgbmRuYm9vc3Q6OnRydWVfdHlwZSgpKTsgfQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKQotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgKGlzbmFuKShsb25nIGRvdWJsZSB4KQoteyAvLyE8IFxicmllZiByZXR1cm4gdHJ1ZSBpZiBmbG9hdGluZy1wb2ludCB0eXBlIHQgaXMgTmFOIChOb3QgQSBOdW1iZXIpLgotICAgdHlwZWRlZiBkZXRhaWw6OmZwX3RyYWl0czxsb25nIGRvdWJsZT46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxsb25nIGRvdWJsZT46OnR5cGUgZnBfdGFnOwotICAgcmV0dXJuIGRldGFpbDo6aXNuYW5faW1wbCh4LCBtZXRob2QoKSk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbWF0aAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfRlBDTEFTU0lGWV9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9tYXRoX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZTE4NjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MDggKzAsMCBAQAotLy8gbWF0aF9md2QuaHBwCi0KLS8vIFRPRE8gcmV2aXNlIGNvbXBsZXRlbHkgZm9yIG5ldyBkaXN0cmlidXRpb24gY2xhc3Nlcy4KLQotLy8gQ29weXJpZ2h0IFBhdWwgQS4gQnJpc3RvdyAyMDA2LgotLy8gQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA2LgotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotLy8gb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIE9tbmlidXMgbGlzdCBvZiBmb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiBtYXRoIHNwZWNpYWwgZnVuY3Rpb25zLgotCi0vLyBJVCA9IEludGVnZXIgdHlwZS4KLS8vIFJUID0gUmVhbCB0eXBlIChidWlsdC1pbiBmbG9hdGluZy1wb2ludCB0eXBlcywgZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGUpICYgVXNlciBEZWZpbmVkIFR5cGVzCi0vLyBBVCA9IEludGVnZXIgb3IgUmVhbCB0eXBlCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9TUEVDSUFMX01BVEhfRldEX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1NQRUNJQUxfTUFUSF9GV0RfSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvc3BlY2lhbF9mdW5jdGlvbnMvZGV0YWlsL3JvdW5kX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwPiAvLyBmb3IgYXJndW1lbnQgcHJvbW90aW9uLgotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvcG9saWNpZXMvcG9saWN5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY29tcGFyaXNvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jb21wbGV4LmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9OT19NQUNST19FWFBBTkQgLyoqLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgIG5hbWVzcGFjZSBtYXRoCi0gICB7IC8vIE1hdGggZnVuY3Rpb25zIChpbiByb3VnaGx5IGFscGhhYmV0aWMgb3JkZXIpLgotCi0gICAvLyBCZXRhIGZ1bmN0aW9ucy4KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlCi0gICAgICAgICBiZXRhKFJUMSBhLCBSVDIgYik7IC8vIEJldGEgZnVuY3Rpb24gKDIgYXJndW1lbnRzKS4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBBPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgQT46OnR5cGUKLSAgICAgICAgIGJldGEoUlQxIGEsIFJUMiBiLCBBIHgpOyAvLyBCZXRhIGZ1bmN0aW9uICgzIGFyZ3VtZW50cykuCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBiZXRhKFJUMSBhLCBSVDIgYiwgUlQzIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsgLy8gQmV0YSBmdW5jdGlvbiAoMyBhcmd1bWVudHMpLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGJldGFjKFJUMSBhLCBSVDIgYiwgUlQzIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgYmV0YWMoUlQxIGEsIFJUMiBiLCBSVDMgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhKFJUMSBhLCBSVDIgYiwgUlQzIHgpOyAvLyBJbmNvbXBsZXRlIGJldGEgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YShSVDEgYSwgUlQyIGIsIFJUMyB4LCBjb25zdCBQb2xpY3kmIHBvbCk7IC8vIEluY29tcGxldGUgYmV0YSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWMoUlQxIGEsIFJUMiBiLCBSVDMgeCk7IC8vIEluY29tcGxldGUgYmV0YSBjb21wbGVtZW50IGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjKFJUMSBhLCBSVDIgYiwgUlQzIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnYoVDEgYSwgVDIgYiwgVDMgcCwgVDQqIHB5KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgaWJldGFfaW52KFQxIGEsIFQyIGIsIFQzIHAsIFQ0KiBweSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhX2ludihSVDEgYSwgUlQyIGIsIFJUMyBwKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnYoUlQxIGEsIFJUMiBiLCBSVDMgcCwgY29uc3QgUG9saWN5Jik7IC8vIEluY29tcGxldGUgYmV0YSBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhX2ludmEoUlQxIGEsIFJUMiBiLCBSVDMgcCk7IC8vIEluY29tcGxldGUgYmV0YSBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfaW52YShSVDEgYSwgUlQyIGIsIFJUMyBwLCBjb25zdCBQb2xpY3kmKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfaW52YihSVDEgYSwgUlQyIGIsIFJUMyBwKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9pbnZiKFJUMSBhLCBSVDIgYiwgUlQzIHAsIGNvbnN0IFBvbGljeSYpOyAvLyBJbmNvbXBsZXRlIGJldGEgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnYoVDEgYSwgVDIgYiwgVDMgcSwgVDQqIHB5KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludihUMSBhLCBUMiBiLCBUMyBxLCBUNCogcHksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWNfaW52KFJUMSBhLCBSVDIgYiwgUlQzIHEpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludihSVDEgYSwgUlQyIGIsIFJUMyBxLCBjb25zdCBQb2xpY3kmKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YWNfaW52YShSVDEgYSwgUlQyIGIsIFJUMyBxKTsgLy8gSW5jb21wbGV0ZSBiZXRhIGNvbXBsZW1lbnQgaW52ZXJzZSBmdW5jdGlvbi4KLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDMsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnZhKFJUMSBhLCBSVDIgYiwgUlQzIHEsIGNvbnN0IFBvbGljeSYpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUKLSAgICAgICAgIGliZXRhY19pbnZiKFJUMSBhLCBSVDIgYiwgUlQzIHEpOyAvLyBJbmNvbXBsZXRlIGJldGEgY29tcGxlbWVudCBpbnZlcnNlIGZ1bmN0aW9uLgotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFjX2ludmIoUlQxIGEsIFJUMiBiLCBSVDMgcSwgY29uc3QgUG9saWN5Jik7IC8vIEluY29tcGxldGUgYmV0YSBjb21wbGVtZW50IGludmVyc2UgZnVuY3Rpb24uCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZQotICAgICAgICAgaWJldGFfZGVyaXZhdGl2ZShSVDEgYSwgUlQyIGIsIFJUMyB4KTsgIC8vIGRlcml2YXRpdmUgb2YgaW5jb21wbGV0ZSBiZXRhCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlCi0gICAgICAgICBpYmV0YV9kZXJpdmF0aXZlKFJUMSBhLCBSVDIgYiwgUlQzIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsgIC8vIGRlcml2YXRpdmUgb2YgaW5jb21wbGV0ZSBiZXRhCi0KLSAgIC8vIGVyZiAmIGVyZmMgZXJyb3IgZnVuY3Rpb25zLgotICAgdGVtcGxhdGUgPGNsYXNzIFJUPiAvLyBFcnJvciBmdW5jdGlvbi4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZihSVCB6KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVCwgY2xhc3MgUG9saWN5PiAvLyBFcnJvciBmdW5jdGlvbi4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZihSVCB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPi8vIEVycm9yIGZ1bmN0aW9uIGNvbXBsZW1lbnQuCi0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZjKFJUIHopOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ly8gRXJyb3IgZnVuY3Rpb24gY29tcGxlbWVudC4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZmMoUlQgeiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4vLyBFcnJvciBmdW5jdGlvbiBpbnZlcnNlLgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmX2ludihSVCB6KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVCwgY2xhc3MgUG9saWN5Pi8vIEVycm9yIGZ1bmN0aW9uIGludmVyc2UuCi0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZfaW52KFJUIHosIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPi8vIEVycm9yIGZ1bmN0aW9uIGNvbXBsZW1lbnQgaW52ZXJzZS4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGVyZmNfaW52KFJUIHopOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ly8gRXJyb3IgZnVuY3Rpb24gY29tcGxlbWVudCBpbnZlcnNlLgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmY19pbnYoUlQgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICAvLyBQb2x5bm9taWFsczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfbmV4dCh1bnNpZ25lZCBsLCBUMSB4LCBUMiBQbCwgVDMgUGxtMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfcChpbnQgbCwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgICAgIGxlZ2VuZHJlX3AoaW50IGwsIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgICAgIGxlZ2VuZHJlX3EodW5zaWduZWQgbCwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgICAgIGxlZ2VuZHJlX3EodW5zaWduZWQgbCwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfbmV4dCh1bnNpZ25lZCBsLCB1bnNpZ25lZCBtLCBUMSB4LCBUMiBQbCwgVDMgUGxtMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgICAgbGVnZW5kcmVfcChpbnQgbCwgaW50IG0sIFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICAgICBsZWdlbmRyZV9wKGludCBsLCBpbnQgbSwgVCB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgbGFndWVycmVfbmV4dCh1bnNpZ25lZCBuLCBUMSB4LCBUMiBMbiwgVDMgTG5tMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgbGFndWVycmVfbmV4dCh1bnNpZ25lZCBuLCB1bnNpZ25lZCBsLCBUMSB4LCBUMiBQbCwgVDMgUGxtMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZQotICAgICAgbGFndWVycmUodW5zaWduZWQgbiwgVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUKLSAgICAgIGxhZ3VlcnJlKHVuc2lnbmVkIG4sIHVuc2lnbmVkIG0sIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgc3RydWN0IGxhZ3VlcnJlX3Jlc3VsdAotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIHBvbGljaWVzOjppc19wb2xpY3k8VDI+LAotICAgICAgICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMT46OnR5cGUsCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQyPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIGxhZ3VlcnJlX3Jlc3VsdDxUMSwgVDI+Ojp0eXBlCi0gICAgICBsYWd1ZXJyZSh1bnNpZ25lZCBuLCBUMSBtLCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICBoZXJtaXRlKHVuc2lnbmVkIG4sIFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlCi0gICAgICBoZXJtaXRlKHVuc2lnbmVkIG4sIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUKLSAgICAgIGhlcm1pdGVfbmV4dCh1bnNpZ25lZCBuLCBUMSB4LCBUMiBIbiwgVDMgSG5tMSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlPgotICAgICAgICAgc3BoZXJpY2FsX2hhcm1vbmljKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZT4KLSAgICAgIHNwaGVyaWNhbF9oYXJtb25pYyh1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBzcGhlcmljYWxfaGFybW9uaWNfcih1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgc3BoZXJpY2FsX2hhcm1vbmljX3IodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgc3BoZXJpY2FsX2hhcm1vbmljX2kodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUKLSAgICAgIHNwaGVyaWNhbF9oYXJtb25pY19pKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIC8vIEVsbGlwdGljIGludGVncmFsczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgZWxsaW50X3JmKFQxIHgsIFQyIHksIFQzIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZQotICAgICAgICAgZWxsaW50X3JmKFQxIHgsIFQyIHksIFQzIHosIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmQoVDEgeCwgVDIgeSwgVDMgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmQoVDEgeCwgVDIgeSwgVDMgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBlbGxpbnRfcmMoVDEgeCwgVDIgeSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgZWxsaW50X3JjKFQxIHgsIFQyIHksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUKLSAgICAgICAgIGVsbGludF9yaihUMSB4LCBUMiB5LCBUMyB6LCBUNCBwKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZQotICAgICAgICAgZWxsaW50X3JqKFQxIHgsIFQyIHksIFQzIHosIFQ0IHAsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGVsbGludF8yKFQgayk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzIoVDEgaywgVDIgcGhpKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8yKFQxIGssIFQyIHBoaSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZWxsaW50XzEoVCBrKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBlbGxpbnRfMShUMSBrLCBUMiBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzEoVDEgaywgVDIgcGhpLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIG5hbWVzcGFjZSBkZXRhaWx7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWPgotICAgc3RydWN0IGVsbGludF8zX3Jlc3VsdAotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIHBvbGljaWVzOjppc19wb2xpY3k8Vj4sCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlLAotICAgICAgICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVLCBWPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmVsbGludF8zX3Jlc3VsdDxUMSwgVDIsIFQzPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2LCBUMyBwaGkpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2LCBUMyBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBlbGxpbnRfMyhUMSBrLCBUMiB2KTsKLQotICAgLy8gRmFjdG9yaWFsIGZ1bmN0aW9ucy4KLSAgIC8vIE5vdGU6IG5vdCBmb3IgaW50ZWdyYWwgdHlwZXMsIGF0IHByZXNlbnQuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICBzdHJ1Y3QgbWF4X2ZhY3RvcmlhbDsKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIFJUIGZhY3RvcmlhbCh1bnNpZ25lZCBpbnQpOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICBSVCBmYWN0b3JpYWwodW5zaWduZWQgaW50LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICBSVCB1bmNoZWNrZWRfZmFjdG9yaWFsKHVuc2lnbmVkIGludCBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFJUKSk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICBSVCBkb3VibGVfZmFjdG9yaWFsKHVuc2lnbmVkIGkpOwotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICBSVCBkb3VibGVfZmFjdG9yaWFsKHVuc2lnbmVkIGksIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZmFsbGluZ19mYWN0b3JpYWwoUlQgeCwgdW5zaWduZWQgbik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZmFsbGluZ19mYWN0b3JpYWwoUlQgeCwgdW5zaWduZWQgbiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSByaXNpbmdfZmFjdG9yaWFsKFJUIHgsIGludCBuKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSByaXNpbmdfZmFjdG9yaWFsKFJUIHgsIGludCBuLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIC8vIEdhbW1hIGZ1bmN0aW9ucy4KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIHRnYW1tYShSVCB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgdGdhbW1hMXBtMShSVCB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSB0Z2FtbWExcG0xKFJUIHosIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgdGdhbW1hKFJUMSBhLCBSVDIgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgdGdhbW1hKFJUMSBhLCBSVDIgeiwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeiwgaW50KiBzaWduKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeiwgaW50KiBzaWduLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSB0Z2FtbWFfbG93ZXIoUlQxIGEsIFJUMiB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSB0Z2FtbWFfbG93ZXIoUlQxIGEsIFJUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgZ2FtbWFfcShSVDEgYSwgUlQyIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIGdhbW1hX3EoUlQxIGEsIFJUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgZ2FtbWFfcChSVDEgYSwgUlQyIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIGdhbW1hX3AoUlQxIGEsIFJUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSB0Z2FtbWFfZGVsdGFfcmF0aW8oVDEgeiwgVDIgZGVsdGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgdGdhbW1hX2RlbHRhX3JhdGlvKFQxIHosIFQyIGRlbHRhLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSB0Z2FtbWFfcmF0aW8oVDEgYSwgVDIgYik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSB0Z2FtbWFfcmF0aW8oVDEgYSwgVDIgYiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9kZXJpdmF0aXZlKFQxIGEsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9kZXJpdmF0aXZlKFQxIGEsIFQyIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBnYW1tYSBpbnZlcnNlLgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2ludihUMSBhLCBUMiBwKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3BfaW52YShUMSBhLCBUMiBwLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2ludmEoVDEgYSwgVDIgcCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9wX2ludihUMSBhLCBUMiBwLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBnYW1tYV9xX2ludihUMSBhLCBUMiBxKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52KFQxIGEsIFQyIHEsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52YShUMSBhLCBUMiBxKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52YShUMSBhLCBUMiBxLCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gZGlnYW1tYToKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBkaWdhbW1hKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGRpZ2FtbWEoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gSHlwb3RlbnVzZSBmdW5jdGlvbiBzcXJ0KHggXiAyICsgeSBeIDIpLgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgaHlwb3QoVDEgeCwgVDIgeSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZQotICAgICAgICAgaHlwb3QoVDEgeCwgVDIgeSwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGNicnQgLSBjdWJlIHJvb3QuCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBjYnJ0KFJUIHopOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGNicnQoUlQgeiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGxvZzFwIGlzIGxvZyh4ICsgMSkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBsb2cxcChUKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgbG9nMXAoVCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGxvZzFwbXggaXMgbG9nKHggKyAxKSAtIHgKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBsb2cxcG14KFQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBsb2cxcG14KFQsIGNvbnN0IFBvbGljeSYpOwotCi0gICAvLyBFeHAgKHgpIG1pbnVzIDEgZnVuY3Rpb25zLgotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGV4cG0xKFQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBleHBtMShULCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gUG93ZXIgLSAxCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBwb3dtMShjb25zdCBUMSBhLCBjb25zdCBUMiB6KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlCi0gICAgICAgICBwb3dtMShjb25zdCBUMSBhLCBjb25zdCBUMiB6LCBjb25zdCBQb2xpY3kmKTsKLQotICAgLy8gc3FydCgxK3gpIC0gMQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNxcnQxcG0xKGNvbnN0IFQmIHZhbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNxcnQxcG0xKGNvbnN0IFQmIHZhbCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIHNpbnVzIGNhcmRpbmFsczoKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBzaW5jX3BpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmNfcGkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmhjX3BpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmhjX3BpKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIGludmVyc2UgaHlwZXJib2xpY3M6Ci0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhc2luaChUIHgpOwotCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFzaW5oKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFjb3NoKFQgeCk7Ci0KLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWNvc2goVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYXRhbmgoVCB4KTsKLQotICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhdGFuaChUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICBuYW1lc3BhY2UgZGV0YWlsewotCi0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwwPiBiZXNzZWxfbm9faW50X3RhZzsgICAgICAvLyBObyBpbnRlZ2VyIG9wdGltaXNhdGlvbiBwb3NzaWJsZS4KLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDE+IGJlc3NlbF9tYXliZV9pbnRfdGFnOyAgIC8vIE1heWJlIGludGVnZXIgb3B0aW1pc2F0aW9uLgotICAgICAgdHlwZWRlZiBtcGw6OmludF88Mj4gYmVzc2VsX2ludF90YWc7ICAgICAgICAgLy8gRGVmaW5pdGUgaW50ZWdlciBvcHRpbWlzdGFpb24uCi0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgICAgIHN0cnVjdCBiZXNzZWxfdHJhaXRzCi0gICAgICB7Ci0gICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8Ci0gICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgID46OnR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcG9saWNpZXM6OnByZWNpc2lvbjxyZXN1bHRfdHlwZSwgUG9saWN5Pjo6dHlwZSBwcmVjaXNpb25fdHlwZTsKLQotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIG1wbDo6b3JfPAotICAgICAgICAgICAgICAgbXBsOjpsZXNzX2VxdWFsPHByZWNpc2lvbl90eXBlLCBtcGw6OmludF88MD4gPiwKLSAgICAgICAgICAgICAgIG1wbDo6Z3JlYXRlcjxwcmVjaXNpb25fdHlwZSwgbXBsOjppbnRfPDY0PiA+ID4sCi0gICAgICAgICAgICBiZXNzZWxfbm9faW50X3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgaXNfaW50ZWdyYWw8VDE+LAotICAgICAgICAgICAgICAgYmVzc2VsX2ludF90YWcsCi0gICAgICAgICAgICAgICBiZXNzZWxfbWF5YmVfaW50X3RhZwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZSBvcHRpbWlzYXRpb25fdGFnOwotICAgICAgfTsKLSAgIH0gLy8gZGV0YWlsCi0KLSAgIC8vIEJlc3NlbCBmdW5jdGlvbnM6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2ooVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfaihUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBzcGhfYmVzc2VsKHVuc2lnbmVkIHYsIFQgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgc3BoX2Jlc3NlbCh1bnNpZ25lZCB2LCBUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2koVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9iZXNzZWxfaShUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5Pjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9rKFQxIHYsIFQyIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2soVDEgdiwgVDIgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlIGN5bF9uZXVtYW5uKFQxIHYsIFQyIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZSBjeWxfbmV1bWFubihUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBzcGhfbmV1bWFubih1bnNpZ25lZCB2LCBUIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIHNwaF9uZXVtYW5uKHVuc2lnbmVkIHYsIFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgUG9saWN5Pjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LCBpbnQgbSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LCBpbnQgbSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIE91dHB1dEl0ZXJhdG9yIGN5bF9iZXNzZWxfal96ZXJvKFQgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUG9saWN5PgotICAgT3V0cHV0SXRlcmF0b3IgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3k+OjpyZXN1bHRfdHlwZSBjeWxfbmV1bWFubl96ZXJvKFQgdiwgaW50IG0sIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VCwgVCwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlIGN5bF9uZXVtYW5uX3plcm8oVCB2LCBpbnQgbSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIE91dHB1dEl0ZXJhdG9yIGN5bF9uZXVtYW5uX3plcm8oVCB2LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBQb2xpY3k+Ci0gICBPdXRwdXRJdGVyYXRvciBjeWxfbmV1bWFubl96ZXJvKFQgdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLAotICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMShUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlPiBjeWxfaGFua2VsXzEoVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5Pjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMihUMSB2LCBUMiB4LCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gICBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgcG9saWNpZXM6OnBvbGljeTw+ID46OnJlc3VsdF90eXBlPiBjeWxfaGFua2VsXzIoVDEgdiwgVDIgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFBvbGljeT4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3k+OjpyZXN1bHRfdHlwZT4gc3BoX2hhbmtlbF8xKFQxIHYsIFQyIHgsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0ZDo6Y29tcGxleDx0eXBlbmFtZSBkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBwb2xpY2llczo6cG9saWN5PD4gPjo6cmVzdWx0X3R5cGU+IHNwaF9oYW5rZWxfMShUMSB2LCBUMiB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeT46OnJlc3VsdF90eXBlPiBzcGhfaGFua2VsXzIoVDEgdiwgVDIgeCwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgc3RkOjpjb21wbGV4PHR5cGVuYW1lIGRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIHBvbGljaWVzOjpwb2xpY3k8PiA+OjpyZXN1bHRfdHlwZT4gc3BoX2hhbmtlbF8yKFQxIHYsIFQyIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2FpKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYmkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGFpcnlfYmkoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haV9wcmltZShUIHgsIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haV9wcmltZShUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2JpX3ByaW1lKFQgeCwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhaXJ5X2JpX3ByaW1lKFQgeCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgVCBhaXJ5X2FpX3plcm8odW5zaWduZWQgbSk7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgVCBhaXJ5X2FpX3plcm8odW5zaWduZWQgbSwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIE91dHB1dEl0ZXJhdG9yIGFpcnlfYWlfemVybygKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0X2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLAotICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUG9saWN5PgotICAgT3V0cHV0SXRlcmF0b3IgYWlyeV9haV96ZXJvKAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBUIGFpcnlfYmlfemVybyh1bnNpZ25lZCBtKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICBUIGFpcnlfYmlfemVybyh1bnNpZ25lZCBtLCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgT3V0cHV0SXRlcmF0b3IgYWlyeV9iaV96ZXJvKAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnRfaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsCi0gICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyYXRvciBvdXRfaXQpOwotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBQb2xpY3k+Ci0gICBPdXRwdXRJdGVyYXRvciBhaXJ5X2JpX3plcm8oCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlcl9vZl96ZXJvcywKLSAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBzaW5fcGkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbl9waShUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBjb3NfcGkoVCB4LCBjb25zdCBQb2xpY3kmKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGNvc19waShUIHgpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGludCBmcGNsYXNzaWZ5IE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGJvb2wgaXNmaW5pdGUgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgYm9vbCBpc2luZiBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB0KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBib29sIGlzbmFuIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChUIHQpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGJvb2wgaXNub3JtYWwgTkROQk9PU1RfTk9fTUFDUk9fRVhQQU5EKFQgdCk7Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICBpbnQgc2lnbmJpdCBORE5CT09TVF9OT19NQUNST19FWFBBTkQoVCB4KTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbnQgc2lnbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQoY29uc3QgVCYgeik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBjb3B5c2lnbiBORE5CT09TVF9OT19NQUNST19FWFBBTkQoY29uc3QgVCYgeCwgY29uc3QgVSYgeSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBjaGFuZ2VzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB6KTsKLQotICAgLy8gRXhwb25lbnRpYWwgaW50ZWdyYWxzOgotICAgbmFtZXNwYWNlIGRldGFpbHsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBzdHJ1Y3QgZXhwaW50X3Jlc3VsdAotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgIHBvbGljaWVzOjppc19wb2xpY3k8VT4sCi0gICAgICAgICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlLAotICAgICAgICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxVPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGV4cGludCh1bnNpZ25lZCBuLCBUIHosIGNvbnN0IFBvbGljeSYpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIGRldGFpbDo6ZXhwaW50X3Jlc3VsdDxULCBVPjo6dHlwZSBleHBpbnQoVCBjb25zdCB6LCBVIGNvbnN0IHUpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZXhwaW50KFQgeik7Ci0KLSAgIC8vIFpldGE6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB6ZXRhKFQgcywgY29uc3QgUG9saWN5Jik7Ci0KLSAgIC8vIE93ZW4ncyBUIGZ1bmN0aW9uOgotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIG93ZW5zX3QoVDEgaCwgVDIgYSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIG93ZW5zX3QoVDEgaCwgVDIgYSk7Ci0KLSAgIC8vIEphY29iaSBGdW5jdGlvbnM6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVLCBWPjo6dHlwZSBqYWNvYmlfZWxsaXB0aWMoVCBrLCBVIHRoZXRhLCBWKiBwY24sIFYqIHBkbiwgY29uc3QgUG9saWN5Jik7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVLCBWPjo6dHlwZSBqYWNvYmlfZWxsaXB0aWMoVCBrLCBVIHRoZXRhLCBWKiBwY24gPSAwLCBWKiBwZG4gPSAwKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NuKFUgaywgVCB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NuKFUgaywgVCB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9jbihUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9jbihUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfZG4oVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfZG4oVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NkKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NkKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kYyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kYyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbnMoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbnMoVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NkKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NkKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kcyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9kcyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmMoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfbmMoVCBrLCBVIHRoZXRhKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25kKFQgaywgVSB0aGV0YSwgY29uc3QgUG9saWN5JiBwb2wpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25kKFQgaywgVSB0aGV0YSk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9zYyhUIGssIFUgdGhldGEsIGNvbnN0IFBvbGljeSYgcG9sKTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGphY29iaV9zYyhUIGssIFUgdGhldGEpOwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY3MoVCBrLCBVIHRoZXRhLCBjb25zdCBQb2xpY3kmIHBvbCk7Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBqYWNvYmlfY3MoVCBrLCBVIHRoZXRhKTsKLQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgemV0YShUIHMpOwotCi0gICAvLyBwb3c6Ci0gICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcG93KFQgYmFzZSwgY29uc3QgUG9saWN5JiBwb2xpY3kpOwotCi0gICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQ+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHBvdyhUIGJhc2UpOwotCi0gICAvLyBuZXh0OgotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFBvbGljeT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgbmV4dGFmdGVyKGNvbnN0IFQmLCBjb25zdCBVJiwgY29uc3QgUG9saWN5Jik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgbmV4dGFmdGVyKGNvbnN0IFQmLCBjb25zdCBVJik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9uZXh0KGNvbnN0IFQmLCBjb25zdCBQb2xpY3kmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9uZXh0KGNvbnN0IFQmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3k+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGZsb2F0X3ByaW9yKGNvbnN0IFQmLCBjb25zdCBQb2xpY3kmKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9wcmlvcihjb25zdCBUJik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSBmbG9hdF9kaXN0YW5jZShjb25zdCBUJiwgY29uc3QgVSYsIGNvbnN0IFBvbGljeSYpOwotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQsIFU+Ojp0eXBlIGZsb2F0X2Rpc3RhbmNlKGNvbnN0IFQmLCBjb25zdCBVJik7Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9hZHZhbmNlKFQgdmFsLCBpbnQgZGlzdGFuY2UsIGNvbnN0IFBvbGljeSYgcG9sKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBmbG9hdF9hZHZhbmNlKGNvbnN0IFQmIHZhbCwgaW50IGRpc3RhbmNlKTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIG1hdGgKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfREVUQUlMX0xMX0ZVTkMoUG9saWN5KVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIG1vZGYoY29uc3QgVCYgdiwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKiBpcGFydCl7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjptb2RmOyByZXR1cm4gbW9kZih2LCBpcGFydCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsbHRydW5jKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bGx0cnVuYzsgcmV0dXJuIGxsdHJ1bmModiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBsbHJvdW5kKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bGxyb3VuZDsgcmV0dXJuIGxscm91bmQodiwgUG9saWN5KCkpOyB9XAotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9NQVRIX0RFVEFJTF9MTF9GVU5DKFBvbGljeSkKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfREVDTEFSRV9TUEVDSUFMX0ZVTkNUSU9OUyhQb2xpY3kpXAotICAgXAotICAgTkROQk9PU1RfTUFUSF9ERVRBSUxfTExfRlVOQyhQb2xpY3kpXAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgXAotICAgYmV0YShSVDEgYSwgUlQyIGIpIHsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmJldGEoYSwgYiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBBPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgQT46OnR5cGUgXAotICAgYmV0YShSVDEgYSwgUlQyIGIsIEEgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpiZXRhKGEsIGIsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBiZXRhYyhSVDEgYSwgUlQyIGIsIFJUMyB4KSB7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpiZXRhYyhhLCBiLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGEoUlQxIGEsIFJUMiBiLCBSVDMgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YShhLCBiLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFjKFJUMSBhLCBSVDIgYiwgUlQzIHgpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFjKGEsIGIsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMywgVDQ+Ojp0eXBlICBcCi0gICBpYmV0YV9pbnYoVDEgYSwgVDIgYiwgVDMgcCwgVDQqIHB5KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2ludihhLCBiLCBwLCBweSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlIFwKLSAgIGliZXRhX2ludihSVDEgYSwgUlQyIGIsIFJUMyBwKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2ludihhLCBiLCBwLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZSBcCi0gICBpYmV0YWNfaW52KFQxIGEsIFQyIGIsIFQzIHEsIFQ0KiBweSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YWNfaW52KGEsIGIsIHEsIHB5LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFfaW52YShSVDEgYSwgUlQyIGIsIFJUMyBwKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2ludmEoYSwgYiwgcCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMiwgVDM+Ojp0eXBlIFwKLSAgIGliZXRhY19pbnZhKFQxIGEsIFQyIGIsIFQzIHEpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFjX2ludmEoYSwgYiwgcSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyLCBjbGFzcyBSVDM+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyLCBSVDM+Ojp0eXBlIFwKLSAgIGliZXRhX2ludmIoUlQxIGEsIFJUMiBiLCBSVDMgcCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjppYmV0YV9pbnZiKGEsIGIsIHAsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBcCi0gICBpYmV0YWNfaW52YihUMSBhLCBUMiBiLCBUMyBxKXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhY19pbnZiKGEsIGIsIHEsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMiwgY2xhc3MgUlQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMiwgUlQzPjo6dHlwZSBcCi0gICBpYmV0YWNfaW52KFJUMSBhLCBSVDIgYiwgUlQzIHEpeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6aWJldGFjX2ludihhLCBiLCBxLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDIsIGNsYXNzIFJUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDIsIFJUMz46OnR5cGUgXAotICAgaWJldGFfZGVyaXZhdGl2ZShSVDEgYSwgUlQyIGIsIFJUMyB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmliZXRhX2Rlcml2YXRpdmUoYSwgYiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmKFJUIHopIHsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmVyZih6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZjKFJUIHopeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6ZXJmYyh6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBlcmZfaW52KFJUIHopIHsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmVyZl9pbnYoeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgZXJmY19pbnYoUlQgeil7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplcmZjX2ludih6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6bGVnZW5kcmVfbmV4dDtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgXAotICAgbGVnZW5kcmVfcChpbnQgbCwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmxlZ2VuZHJlX3AobCwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIFwKLSAgIGxlZ2VuZHJlX3EodW5zaWduZWQgbCwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6OmxlZ2VuZHJlX3EobCwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdXNpbmcgOjpuZG5ib29zdDo6bWF0aDo6bGVnZW5kcmVfbmV4dDtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgXAotICAgbGVnZW5kcmVfcChpbnQgbCwgaW50IG0sIFQgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpsZWdlbmRyZV9wKGwsIG0sIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHVzaW5nIDo6bmRuYm9vc3Q6Om1hdGg6OmxhZ3VlcnJlX25leHQ7XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIFwKLSAgIGxhZ3VlcnJlKHVuc2lnbmVkIG4sIFQgeCl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpsYWd1ZXJyZShuLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6bGFndWVycmVfcmVzdWx0PFQxLCBUMj46OnR5cGUgXAotICAgbGFndWVycmUodW5zaWduZWQgbiwgVDEgbSwgVDIgeCkgeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6bGFndWVycmUobiwgbSwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIFwKLSAgIGhlcm1pdGUodW5zaWduZWQgbiwgVCB4KXsgcmV0dXJuIDo6bmRuYm9vc3Q6Om1hdGg6Omhlcm1pdGUobiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Omhlcm1pdGVfbmV4dDtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZT4gXAotICAgc3BoZXJpY2FsX2hhcm1vbmljKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhlcmljYWxfaGFybW9uaWMobiwgbSwgdGhldGEsIHBoaSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICBzcGhlcmljYWxfaGFybW9uaWNfcih1bnNpZ25lZCBuLCBpbnQgbSwgVDEgdGhldGEsIFQyIHBoaSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjpzcGhlcmljYWxfaGFybW9uaWNfcihuLCBtLCB0aGV0YSwgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIFwKLSAgIHNwaGVyaWNhbF9oYXJtb25pY19pKHVuc2lnbmVkIG4sIGludCBtLCBUMSB0aGV0YSwgVDIgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhlcmljYWxfaGFybW9uaWNfaShuLCBtLCB0aGV0YSwgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBQb2xpY3k+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgXAotICAgICAgc3BoZXJpY2FsX2hhcm1vbmljX2kodW5zaWduZWQgbiwgaW50IG0sIFQxIHRoZXRhLCBUMiBwaGksIGNvbnN0IFBvbGljeSYgcG9sKTtcCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUgXAotICAgZWxsaW50X3JmKFQxIHgsIFQyIHksIFQzIHopeyByZXR1cm4gOjpuZG5ib29zdDo6bWF0aDo6ZWxsaW50X3JmKHgsIHksIHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzPjo6dHlwZSBcCi0gICBlbGxpbnRfcmQoVDEgeCwgVDIgeSwgVDMgeil7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplbGxpbnRfcmQoeCwgeSwgeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICBlbGxpbnRfcmMoVDEgeCwgVDIgeSl7IHJldHVybiA6Om5kbmJvb3N0OjptYXRoOjplbGxpbnRfcmMoeCwgeSwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDIsIFQzLCBUND46OnR5cGUgXAotICAgZWxsaW50X3JqKFQxIHgsIFQyIHksIFQzIHosIFQ0IHApeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmVsbGludF9yaih4LCB5LCB6LCBwLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZWxsaW50XzIoVCBrKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMihrLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8yKFQxIGssIFQyIHBoaSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZWxsaW50XzIoaywgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZWxsaW50XzEoVCBrKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMShrLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGVsbGludF8xKFQxIGssIFQyIHBoaSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZWxsaW50XzEoaywgcGhpLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyLCBUMz46OnR5cGUgZWxsaW50XzMoVDEgaywgVDIgdiwgVDMgcGhpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjplbGxpbnRfMyhrLCB2LCBwaGksIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZWxsaW50XzMoVDEgaywgVDIgdil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZWxsaW50XzMoaywgdiwgUG9saWN5KCkpOyB9XAotXAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1heF9mYWN0b3JpYWw7XAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSBSVCBmYWN0b3JpYWwodW5zaWduZWQgaW50IGkpIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmYWN0b3JpYWw8UlQ+KGksIFBvbGljeSgpKTsgfVwKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjp1bmNoZWNrZWRfZmFjdG9yaWFsO1wKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgUlQgZG91YmxlX2ZhY3RvcmlhbCh1bnNpZ25lZCBpKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpkb3VibGVfZmFjdG9yaWFsPFJUPihpLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBmYWxsaW5nX2ZhY3RvcmlhbChSVCB4LCB1bnNpZ25lZCBuKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmYWxsaW5nX2ZhY3RvcmlhbCh4LCBuLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSByaXNpbmdfZmFjdG9yaWFsKFJUIHgsIHVuc2lnbmVkIG4peyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnJpc2luZ19mYWN0b3JpYWwoeCwgbiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVD46OnR5cGUgdGdhbW1hKFJUIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRnYW1tYSh6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSB0Z2FtbWExcG0xKFJUIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRnYW1tYTFwbTEoeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFJUMSwgY2xhc3MgUlQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxSVDEsIFJUMj46OnR5cGUgdGdhbW1hKFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hKGEsIHosIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQ+Ojp0eXBlIGxnYW1tYShSVCB6LCBpbnQqIHNpZ24peyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmxnYW1tYSh6LCBzaWduLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBsZ2FtbWEoUlQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6bGdhbW1hKHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBSVDEsIGNsYXNzIFJUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8UlQxLCBSVDI+Ojp0eXBlIHRnYW1tYV9sb3dlcihSVDEgYSwgUlQyIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnRnYW1tYV9sb3dlcihhLCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBnYW1tYV9xKFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcShhLCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBnYW1tYV9wKFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Z2FtbWFfcChhLCB6LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIHRnYW1tYV9kZWx0YV9yYXRpbyhUMSB6LCBUMiBkZWx0YSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hX2RlbHRhX3JhdGlvKHosIGRlbHRhLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIHRnYW1tYV9yYXRpbyhUMSBhLCBUMiBiKSB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6dGdhbW1hX3JhdGlvKGEsIGIsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9kZXJpdmF0aXZlKFQxIGEsIFQyIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3BfZGVyaXZhdGl2ZShhLCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3BfaW52KFQxIGEsIFQyIHApeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3BfaW52KGEsIHAsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcF9pbnZhKFQxIGEsIFQyIHApeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3BfaW52YShhLCBwLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUMSwgVDI+Ojp0eXBlIGdhbW1hX3FfaW52KFQxIGEsIFQyIHEpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3FfaW52KGEsIHEsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgZ2FtbWFfcV9pbnZhKFQxIGEsIFQyIHEpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmdhbW1hX3FfaW52YShhLCBxLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZGlnYW1tYShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmRpZ2FtbWEoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VDEsIFQyPjo6dHlwZSBcCi0gICBoeXBvdChUMSB4LCBUMiB5KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpoeXBvdCh4LCB5LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUPjo6dHlwZSBjYnJ0KFJUIHopeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmNicnQoeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGxvZzFwKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6bG9nMXAoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGxvZzFwbXgoVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpsb2cxcG14KHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBleHBtMShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmV4cG0xKHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQxLCBUMj46OnR5cGUgXAotICAgcG93bTEoY29uc3QgVDEgYSwgY29uc3QgVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6cG93bTEoYSwgeiwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNxcnQxcG0xKGNvbnN0IFQmIHZhbCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c3FydDFwbTEodmFsLCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luY19waShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnNpbmNfcGkoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHNpbmhjX3BpKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c2luaGNfcGkoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGU8dHlwZW5hbWUgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYXNpbmgoY29uc3QgVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphc2luaCh4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSBhY29zaChjb25zdCBUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFjb3NoKHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGF0YW5oKGNvbnN0IFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YXRhbmgoeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBjeWxfYmVzc2VsX2ooVDEgdiwgVDIgeClcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y3lsX2Jlc3NlbF9qKHYsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBzcGhfYmVzc2VsKHVuc2lnbmVkIHYsIFQgeClcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c3BoX2Jlc3NlbCh2LCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQxLCBUMiwgUG9saWN5ID46OnJlc3VsdF90eXBlIFwKLSAgIGN5bF9iZXNzZWxfaShUMSB2LCBUMiB4KSB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y3lsX2Jlc3NlbF9pKHYsIHgsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGUgXAotICAgY3lsX2Jlc3NlbF9rKFQxIHYsIFQyIHgpIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfYmVzc2VsX2sodiwgeCwgUG9saWN5KCkpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBcCi0gICBjeWxfbmV1bWFubihUMSB2LCBUMiB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfbmV1bWFubih2LCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3kgPjo6cmVzdWx0X3R5cGUgXAotICAgc3BoX25ldW1hbm4odW5zaWduZWQgdiwgVCB4KXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhfbmV1bWFubih2LCB4LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxULCBULCBQb2xpY3kgPjo6cmVzdWx0X3R5cGUgY3lsX2Jlc3NlbF9qX3plcm8oVCB2LCBpbnQgbSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6Y3lsX2Jlc3NlbF9qX3plcm8odiwgbSwgUG9saWN5KCkpOyB9XAotXAotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBUPlwKLSAgIGlubGluZSB2b2lkIGN5bF9iZXNzZWxfal96ZXJvKFQgdixcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRfaW5kZXgsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEl0ZXJhdG9yIG91dF9pdClcCi0gICB7IG5kbmJvb3N0OjptYXRoOjpjeWxfYmVzc2VsX2pfemVybyh2LCBzdGFydF9pbmRleCwgbnVtYmVyX29mX3plcm9zLCBvdXRfaXQsIFBvbGljeSgpKTsgfVwKLVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6ZGV0YWlsOjpiZXNzZWxfdHJhaXRzPFQsIFQsIFBvbGljeSA+OjpyZXN1bHRfdHlwZSBjeWxfbmV1bWFubl96ZXJvKFQgdiwgaW50IG0pXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmN5bF9uZXVtYW5uX3plcm8odiwgbSwgUG9saWN5KCkpOyB9XAotXAotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBUPlwKLSAgIGlubGluZSB2b2lkIGN5bF9uZXVtYW5uX3plcm8oVCB2LFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X2luZGV4LFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0SXRlcmF0b3Igb3V0X2l0KVwKLSAgIHsgbmRuYm9vc3Q6Om1hdGg6OmN5bF9uZXVtYW5uX3plcm8odiwgc3RhcnRfaW5kZXgsIG51bWJlcl9vZl96ZXJvcywgb3V0X2l0LCBQb2xpY3koKSk7IH1cCi1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgc2luX3BpKFQgeCl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6c2luX3BpKHgpOyB9XAotXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGNvc19waShUIHgpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmNvc19waSh4KTsgfVwKLVwKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjpmcGNsYXNzaWZ5O1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjppc2Zpbml0ZTtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6aXNpbmY7XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OmlzbmFuO1wKLSAgIHVzaW5nIG5kbmJvb3N0OjptYXRoOjppc25vcm1hbDtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6c2lnbmJpdDtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6c2lnbjtcCi0gICB1c2luZyBuZG5ib29zdDo6bWF0aDo6Y29weXNpZ247XAotICAgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OmNoYW5nZXNpZ247XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQsVT46OnR5cGUgZXhwaW50KFQgY29uc3QmIHosIFUgY29uc3QmIHUpXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmV4cGludCh6LCB1LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgZXhwaW50KFQgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZXhwaW50KHosIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6bWF0aDo6dG9vbHM6OnByb21vdGVfYXJnczxUPjo6dHlwZSB6ZXRhKFQgcyl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6emV0YShzLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCByb3VuZChjb25zdCBUJiB2KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6OnJvdW5kOyByZXR1cm4gcm91bmQodiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIGludCBpcm91bmQoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjppcm91bmQ7IHJldHVybiBpcm91bmQodiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIGxvbmcgbHJvdW5kKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6bHJvdW5kOyByZXR1cm4gbHJvdW5kKHYsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIHRydW5jKGNvbnN0IFQmIHYpeyB1c2luZyBuZG5ib29zdDo6bWF0aDo6dHJ1bmM7IHJldHVybiB0cnVuYyh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgaW50IGl0cnVuYyhjb25zdCBUJiB2KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Oml0cnVuYzsgcmV0dXJuIGl0cnVuYyh2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgbG9uZyBsdHJ1bmMoY29uc3QgVCYgdil7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjpsdHJ1bmM7IHJldHVybiBsdHJ1bmModiwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIFQgbW9kZihjb25zdCBUJiB2LCBUKiBpcGFydCl7IHVzaW5nIG5kbmJvb3N0OjptYXRoOjptb2RmOyByZXR1cm4gbW9kZih2LCBpcGFydCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIFQgbW9kZihjb25zdCBUJiB2LCBpbnQqIGlwYXJ0KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1vZGY7IHJldHVybiBtb2RmKHYsIGlwYXJ0LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCBtb2RmKGNvbnN0IFQmIHYsIGxvbmcqIGlwYXJ0KXsgdXNpbmcgbmRuYm9vc3Q6Om1hdGg6Om1vZGY7IHJldHVybiBtb2RmKHYsIGlwYXJ0LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8aW50IE4sIGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIHBvdyhUIHYpeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OnBvdzxOPih2LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gVCBuZXh0YWZ0ZXIoY29uc3QgVCYgYSwgY29uc3QgVCYgYil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6bmV4dGFmdGVyKGEsIGIsIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiBUIGZsb2F0X25leHQoY29uc3QgVCYgYSl7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6ZmxvYXRfbmV4dChhLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gVCBmbG9hdF9wcmlvcihjb25zdCBUJiBhKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmbG9hdF9wcmlvcihhLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gVCBmbG9hdF9kaXN0YW5jZShjb25zdCBUJiBhLCBjb25zdCBUJiBiKXsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpmbG9hdF9kaXN0YW5jZShhLCBiLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgUlQxLCBjbGFzcyBSVDI+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFJUMSwgUlQyPjo6dHlwZSBvd2Vuc190KFJUMSBhLCBSVDIgeil7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6b3dlbnNfdChhLCB6LCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPlwKLSAgIGlubGluZSBzdGQ6OmNvbXBsZXg8dHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6YmVzc2VsX3RyYWl0czxUMSwgVDIsIFBvbGljeSA+OjpyZXN1bHRfdHlwZT4gY3lsX2hhbmtlbF8xKFQxIHYsIFQyIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfaGFua2VsXzEodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgc3RkOjpjb21wbGV4PHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGU+IGN5bF9oYW5rZWxfMihUMSB2LCBUMiB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpjeWxfaGFua2VsXzIodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgc3RkOjpjb21wbGV4PHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGU+IHNwaF9oYW5rZWxfMShUMSB2LCBUMiB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhfaGFua2VsXzEodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj5cCi0gICBpbmxpbmUgc3RkOjpjb21wbGV4PHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjpkZXRhaWw6OmJlc3NlbF90cmFpdHM8VDEsIFQyLCBQb2xpY3kgPjo6cmVzdWx0X3R5cGU+IHNwaF9oYW5rZWxfMihUMSB2LCBUMiB4KVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpzcGhfaGFua2VsXzIodiwgeCwgUG9saWN5KCkpOyB9XAotICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQ+XAotICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjptYXRoOjp0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIGphY29iaV9lbGxpcHRpYyhUIGssIFQgdGhldGEsIFQqIHBjbiwgVCogcGRuKVwKLSAgIHsgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjpqYWNvYmlfZWxsaXB0aWMoaywgdGhldGEsIHBjbiwgcGRuLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NuKFUgaywgVCB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX3NuKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NuKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2NuKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RuKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2RuKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NkKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2NkKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RjKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2RjKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25zKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX25zKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NkKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX3NkKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2RzKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2RzKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25jKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX25jKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX25kKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX25kKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX3NjKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX3NjKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VCwgVT46OnR5cGUgamFjb2JpX2NzKFQgaywgVSB0aGV0YSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6amFjb2JpX2NzKGssIHRoZXRhLCBQb2xpY3koKSk7IH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2FpKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9iaShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2JpKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9haV9wcmltZShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2FpX3ByaW1lKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6Om1hdGg6OnRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgYWlyeV9iaV9wcmltZShUIHgpXAotICAgeyAgcmV0dXJuIG5kbmJvb3N0OjptYXRoOjphaXJ5X2JpX3ByaW1lKHgsIFBvbGljeSgpKTsgIH1cCi0gICBcCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD5cCi0gICBpbmxpbmUgVCBhaXJ5X2FpX3plcm8oaW50IG0pXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYWlfemVybzxUPihtLCBQb2xpY3koKSk7IH1cCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgT3V0cHV0SXRlcmF0b3I+XAotICAgT3V0cHV0SXRlcmF0b3IgYWlyeV9haV96ZXJvKGludCBzdGFydF9pbmRleCwgdW5zaWduZWQgbnVtYmVyX29mX3plcm9zLCBPdXRwdXRJdGVyYXRvciBvdXRfaXQpXAotICAgeyByZXR1cm4gbmRuYm9vc3Q6Om1hdGg6OmFpcnlfYWlfemVybzxUPihzdGFydF9pbmRleCwgbnVtYmVyX29mX3plcm9zLCBvdXRfaXQsIFBvbGljeSgpKTsgfVwKLSAgIFwKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPlwKLSAgIGlubGluZSBUIGFpcnlfYmlfemVybyhpbnQgbSlcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YWlyeV9iaV96ZXJvPFQ+KG0sIFBvbGljeSgpKTsgfVwKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBPdXRwdXRJdGVyYXRvcj5cCi0gICBPdXRwdXRJdGVyYXRvciBhaXJ5X2JpX3plcm8oaW50IHN0YXJ0X2luZGV4LCB1bnNpZ25lZCBudW1iZXJfb2ZfemVyb3MsIE91dHB1dEl0ZXJhdG9yIG91dF9pdClcCi0gICB7IHJldHVybiBuZG5ib29zdDo6bWF0aDo6YWlyeV9iaV96ZXJvPFQ+KHN0YXJ0X2luZGV4LCBudW1iZXJfb2ZfemVyb3MsIG91dF9pdCwgUG9saWN5KCkpOyB9XAotICAgXAotCi0KLQotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1NQRUNJQUxfTUFUSF9GV0RfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGZiZDllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC9zcGVjaWFsX2Z1bmN0aW9ucy9zaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNi4KLS8vICAoQykgQ29weXJpZ2h0IEpvaGFuIFJhZGUgMjAwNi4KLS8vICAoQykgQ29weXJpZ2h0IFBhdWwgQS4gQnJpc3RvdyAyMDExIChhZGRlZCBjaGFuZ2VzaWduKS4KLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9UT09MU19TSUdOX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1RPT0xTX1NJR05fSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21hdGgvdG9vbHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL21hdGhfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3NwZWNpYWxfZnVuY3Rpb25zL2RldGFpbC9mcF90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBtYXRoeyAKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgLy8gc2lnbmJpdAotCi0jaWZkZWYgTkROQk9PU1RfTUFUSF9VU0VfU1REX0ZQQ0xBU1NJRlkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICBpbmxpbmUgaW50IHNpZ25iaXRfaW1wbChUIHgsIG5hdGl2ZV90YWcgY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChzdGQ6OnNpZ25iaXQpKHgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgaW5saW5lIGludCBzaWduYml0X2ltcGwoVCB4LCBnZW5lcmljX3RhZzx0cnVlPiBjb25zdCYpCi0gICAgewotICAgICAgICByZXR1cm4geCA8IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgaW5saW5lIGludCBzaWduYml0X2ltcGwoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPCAwOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+IAotICAgIGlubGluZSBpbnQgc2lnbmJpdF9pbXBsKFQgeCwgaWVlZV9jb3B5X2FsbF9iaXRzX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0gICAgICAgIHJldHVybiBhICYgdHJhaXRzOjpzaWduID8gMSA6IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gCi0gICAgaW5saW5lIGludCBzaWduYml0X2ltcGwoVCB4LCBpZWVlX2NvcHlfbGVhZGluZ19iaXRzX3RhZyBjb25zdCYpCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZnBfdHJhaXRzPFQ+Ojp0eXBlIHRyYWl0czsKLQotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHRyYWl0czo6Yml0cyBhOwotICAgICAgICB0cmFpdHM6OmdldF9iaXRzKHgsYSk7Ci0KLSAgICAgICAgcmV0dXJuIGEgJiB0cmFpdHM6OnNpZ24gPyAxIDogMDsKLSAgICB9Ci0KLSAgICAvLyBDaGFuZ2VzaWduCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIGlubGluZSBUIChjaGFuZ2VzaWduX2ltcGwpKFQgeCwgZ2VuZXJpY190YWc8dHJ1ZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC14OwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgaW5saW5lIFQgKGNoYW5nZXNpZ25faW1wbCkoVCB4LCBnZW5lcmljX3RhZzxmYWxzZT4gY29uc3QmKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC14OwotICAgIH0KLQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgVCBjaGFuZ2VzaWduX2ltcGwoVCB4LCBpZWVlX2NvcHlfYWxsX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnNpZ25fY2hhbmdlX3R5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgICAgICAgYSBePSB0cmFpdHM6OnNpZ247Ci0gICAgICAgIHRyYWl0czo6c2V0X2JpdHMoeCxhKTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBpbmxpbmUgVCAoY2hhbmdlc2lnbl9pbXBsKShUIHgsIGllZWVfY29weV9sZWFkaW5nX2JpdHNfdGFnIGNvbnN0JikKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBmcF90cmFpdHM8VD46OnNpZ25fY2hhbmdlX3R5cGUgdHJhaXRzOwotCi0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHJhaXRzOjpiaXRzIGE7Ci0gICAgICAgIHRyYWl0czo6Z2V0X2JpdHMoeCxhKTsKLSAgICAgICAgYSBePSB0cmFpdHM6OnNpZ247Ci0gICAgICAgIHRyYWl0czo6c2V0X2JpdHMoeCxhKTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0KLX0gICAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGludCAoc2lnbmJpdCkoVCB4KQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnR5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICAvLyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0gICByZXR1cm4gZGV0YWlsOjpzaWduYml0X2ltcGwoc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHgpLCBtZXRob2QoKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGludCBzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB6KQotewotICAgcmV0dXJuICh6ID09IDApID8gMCA6IChuZG5ib29zdDo6bWF0aDo6c2lnbmJpdCkoeikgPyAtMSA6IDE7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiB0eXBlbmFtZSB0b29sczo6cHJvbW90ZV9hcmdzPFQ+Ojp0eXBlIChjaGFuZ2VzaWduKShjb25zdCBUJiB4KQoteyAvLyE8IFxicmllZiByZXR1cm4gdW5jaGFuZ2VkIGJpbmFyeSBwYXR0ZXJuIG9mIHgsIGV4Y2VwdCBmb3IgY2hhbmdlIG9mIHNpZ24gYml0LiAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpmcF90cmFpdHM8VD46OnNpZ25fY2hhbmdlX3R5cGUgdHJhaXRzOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6Om1ldGhvZCBtZXRob2Q7Ci0gICAvLyB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDxUPjo6dHlwZSBmcF90YWc7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRvb2xzOjpwcm9tb3RlX2FyZ3M8VD46OnR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgIHJldHVybiBkZXRhaWw6OmNoYW5nZXNpZ25faW1wbChzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeCksIG1ldGhvZCgpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci1pbmxpbmUgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSAKLSAgIGNvcHlzaWduIE5ETkJPT1NUX05PX01BQ1JPX0VYUEFORChjb25zdCBUJiB4LCBjb25zdCBVJiB5KQotewotICAgTkROQk9PU1RfTUFUSF9TVERfVVNJTkcKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdG9vbHM6OnByb21vdGVfYXJnczxULCBVPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgIHJldHVybiAobmRuYm9vc3Q6Om1hdGg6OnNpZ25iaXQpKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih4KSkgIT0gKG5kbmJvb3N0OjptYXRoOjpzaWduYml0KShzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeSkpIAotICAgICAgPyAobmRuYm9vc3Q6Om1hdGg6OmNoYW5nZXNpZ24pKHN0YXRpY19jYXN0PHJlc3VsdF90eXBlPih4KSkgOiBzdGF0aWNfY2FzdDxyZXN1bHRfdHlwZT4oeCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG1hdGgKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfVE9PTFNfU0lHTl9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2YwM2E1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUyICswLDAgQEAKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYtNyBKb2huIE1hZGRvY2sKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfVE9PTFNfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1RPT0xTX0NPTkZJR19IUFAKLQotI2lmZGVmIF9NU0NfVkVSCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkaW50LmhwcD4gLy8gZm9yIG5kbmJvb3N0Ojp1aW50bWF4X3QKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gZm9yIG1pbiBhbmQgbWF4Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL25vX3RyMS9jbWF0aC5ocHA+Ci0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNpbmNsdWRlIDxjZmxvYXQ+Ci0jaWYgKGRlZmluZWQobWFjaW50b3NoKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pKQotIyAgaW5jbHVkZSA8bWF0aC5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tYXRoL3Rvb2xzL3VzZXIuaHBwPgotCi0jaWYgKGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKSBcCi0gICB8fCAoZGVmaW5lZChfX2hwcGEpICYmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSkgfHwgKGRlZmluZWQoX19OT19MT05HX0RPVUJMRV9NQVRIKSAmJiAoREJMX01BTlRfRElHICE9IExEQkxfTUFOVF9ESUcpKSkgXAotICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi0jZW5kaWYKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgyKSkKLS8vCi0vLyBCb3JsYW5kIHBvc3QgNS44LjIgdXNlcyBEaW5rdW13YXJlJ3Mgc3RkIEMgbGliIHdoaWNoCi0vLyBkb2Vzbid0IGhhdmUgdHJ1ZSBsb25nIGRvdWJsZSBwcmVjaXNpb24uICBFYXJsaWVyCi0vLyB2ZXJzaW9ucyBhcmUgcHJvYmxlbWF0aWMgdG9vOgotLy8KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX1JFQUxfQ09OQ0VQVF9URVNUUwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0NPTlRST0xfRlAgX2NvbnRyb2w4NyhNQ1dfRU0sTUNXX0VNKQotIyAgaW5jbHVkZSA8ZmxvYXQuaD4KLSNlbmRpZgotI2lmZGVmIF9fSUJNQ1BQX18KLS8vCi0vLyBGb3IgcmVhc29ucyBJIGRvbid0IHVuc2Vyc3RhbmQsIHRoZSB0ZXN0cyB3aXRoIElNQidzIGNvbXBpbGVyIGFsbAotLy8gcGFzcyBhdCBsb25nIGRvdWJsZSBwcmVjaXNpb24sIGJ1dCBmYWlsIHdpdGggcmVhbF9jb25jZXB0LCB0aG9zZSB0ZXN0cwotLy8gYXJlIGRpc2FibGVkIGZvciBub3cuICAoSk0gMjAxMikuCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19SRUFMX0NPTkNFUFRfVEVTVFMKLSNlbmRpZgotI2lmIChkZWZpbmVkKG1hY2ludG9zaCkgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19BUFBMRV9DQ19fKSkgJiYgKChMREJMX01BTlRfRElHID09IDEwNikgfHwgKF9fTERCTF9NQU5UX0RJR19fID09IDEwNikpICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMpCi0vLwotLy8gRGFyd2luJ3MgcmF0aGVyIHN0cmFuZ2UgImRvdWJsZSBkb3VibGUiIGlzIHJhdGhlciBoYXJkIHRvCi0vLyBzdXBwb3J0LCBpdCBzaG91bGQgYmUgcG9zc2libGUgZ2l2ZW4gZW5vdWdoIGVmZm9ydCB0aG91Z2guLi4KLS8vCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotI2VuZGlmCi0jaWYgZGVmaW5lZCh1bml4KSAmJiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmIChfX0lOVEVMX0NPTVBJTEVSIDw9IDEwMDApICYmICFkZWZpbmVkKE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMpCi0vLwotLy8gSW50ZWwgY29tcGlsZXIgcHJpb3IgdG8gdmVyc2lvbiAxMCBoYXMgc3BvcmFkaWMgcHJvYmxlbXMKLS8vIGNhbGxpbmcgdGhlIGxvbmcgZG91YmxlIG92ZXJsb2FkcyBvZiB0aGUgc3RkIGxpYiBtYXRoIGZ1bmN0aW9uczoKLS8vIGNhbGxpbmcgOjpwb3dsIGlzIE9LLCBidXQgc3RkOjpwb3cobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKSAKLS8vIG1heSBzZWdmYXVsdCBkZXBlbmRpbmcgdXBvbiB0aGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50cyBwYXNzZWQgCi0vLyBhbmQgdGhlIHNwZWNpZmljIExpbnV4IGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBXZSdsbCBiZSBjb25zZXJ2YXRpdmUgYW5kIGRpc2FibGUgbG9uZyBkb3VibGUgc3VwcG9ydCBmb3IgdGhpcyBjb21waWxlci4KLS8vCi0vLyBDb21tZW50IG91dCB0aGlzICNkZWZpbmUgYW5kIHRyeSBidWlsZGluZyB0aGUgdGVzdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKLS8vIHlvdXIgSW50ZWwgY29tcGlsZXIgdmVyc2lvbiBoYXMgdGhpcyBpc3N1ZSBvciBub3QuCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSNlbmRpZgotI2lmIGRlZmluZWQodW5peCkgJiYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotLy8KLS8vIEludGVsIGNvbXBpbGVyIGhhcyBzcG9yYWRpYyBpc3N1ZXMgY29tcGlsaW5nIHN0ZDo6ZnBjbGFzc2lmeSBkZXBlbmRpbmcgb24KLS8vIHRoZSBleGFjdCBPUyB2ZXJzaW9uIHVzZWQuICBVc2Ugb3VyIG93biBjb2RlIGZvciB0aGlzIGFzIHdlIGtub3cgaXQgd29ya3MKLS8vIHdlbGwgb24gSW50ZWwgcHJvY2Vzc29yczoKLS8vCi0jZGVmaW5lIE5ETkJPT1NUX01BVEhfRElTQUJMRV9TVERfRlBDTEFTU0lGWQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpCi0gICAvLyBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LCBvdXIgdGVzdHMgZG9uJ3Qgc3VwcG9ydCBoYXJkd2FyZSBleGNlcHRpb25zOgotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQ09OVFJPTF9GUCBfY29udHJvbDg3KE1DV19FTSxNQ1dfRU0pCi0jZW5kaWYKLQotI2lmZGVmIF9fSUJNQ1BQX18KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX05PX0RFRFVDRURfRlVOQ1RJT05fUE9JTlRFUlMKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxKSkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1VTRV9DOTkKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoX19ocHV4KSAmJiAhZGVmaW5lZChfX2hwcGEpKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfVVNFX0M5OQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9HTElCQ1hYX1VTRV9DOTkpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9VU0VfQzk5Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSAmJiAhZGVmaW5lZChfTVNDX1ZFUikKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1VTRV9DOTkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0lOVEVMKSBcCi0gIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fTkFUSVZFX0xPTkdfRE9VQkxFX0ZQX0NMQVNTSUZZKSBcCi0gIHx8IChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9NQVRIX1VTRV9DOTkpKVwKLSAgfHwgZGVmaW5lZChORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTkFUSVZFX0xPTkdfRE9VQkxFX0ZQX0NMQVNTSUZZCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fRVhQTElDSVRfRlVOQ1RJT05fVEVNUExBVEVfQVJHVU1FTlRTKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8PSAweDU5MCkKLQotIyAgaW5jbHVkZSAibmRuYm9vc3QvdHlwZS5ocHAiCi0jICBpbmNsdWRlICJuZG5ib29zdC9ub25fdHlwZS5ocHAiCi0KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkgICAgICAgICBuZG5ib29zdDo6dHlwZTx0PiogPSAwCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkgICAgbmRuYm9vc3Q6OnR5cGU8dD4qCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KSAgbmRuYm9vc3Q6Om5vbl90eXBlPHQsIHY+KiA9IDAKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikgIG5kbmJvb3N0Ojpub25fdHlwZTx0LCB2PioKLQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkgICAgICAgICBcCi0gICAgICAgICAgICAgLCBORE5CT09TVF9NQVRIX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUodCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkgICAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9UWVBFX1NQRUModCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KSAgXAotICAgICAgICAgICAgICwgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFX1NQRUModCwgdikgIFwKLSAgICAgICAgICAgICAsIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0jZWxzZQotCi0vLyBubyB3b3JrYXJvdW5kIG5lZWRlZDogZXhwYW5kIHRvIG5vdGhpbmcKLQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfVFlQRV9TUEVDKHQpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9FWFBMSUNJVF9URU1QTEFURV9OT05fVFlQRSh0LCB2KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRSh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEVfU1BFQyh0KQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKHQsIHYpCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEVfU1BFQyh0LCB2KQotCi0KLSNlbmRpZiAvLyBkZWZpbmVkIE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUwotCi0jaWYgKGRlZmluZWQoX19TVU5QUk9fQ0MpIHx8IGRlZmluZWQoX19ocHBhKSB8fCBkZWZpbmVkKF9fR05VQ19fKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9TTUFMTF9DT05TVEFOVCkKLS8vIFN1bidzIGNvbXBpbGVyIGVtaXRzIGEgaGFyZCBlcnJvciBpZiBhIGNvbnN0YW50IHVuZGVyZmxvd3MsCi0vLyBhcyBkb2VzIGFDQyBvbiBQQS1SSVNDLCB3aGlsZSBnY2MgaXNzdWVzIGEgbGFyZ2UgbnVtYmVyIG9mIHdhcm5pbmdzOgotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfU01BTExfQ09OU1RBTlQoeCkgMAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1NNQUxMX0NPTlNUQU5UKHgpIHgKLSNlbmRpZgotCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTQwMCkKLS8vCi0vLyBEZWZpbmUgaWYgY29uc3RhbnRzIHRvbyBsYXJnZSBmb3IgYSBmbG9hdCBjYXVzZSAiYmFkIgotLy8gdmFsdWVzIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YSwgcmF0aGVyIHRoYW4gaW5maW5pdHkKLS8vIG9yIGEgc3VpdGFibHkgbGFyZ2UgdmFsdWUuCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQlVHR1lfTEFSR0VfRkxPQVRfQ09OU1RBTlRTCi0jZW5kaWYKLS8vCi0vLyBUdW5lIHBlcmZvcm1hbmNlIG9wdGlvbnMgZm9yIHNwZWNpZmljIGNvbXBpbGVyczoKLS8vCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QgMgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9JTlRFTCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1BPTFlfTUVUSE9EIDIKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1JBVElPTkFMX01FVEhPRCAyCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QgMwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfUkFUSU9OQUxfTUVUSE9EIDMKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFKFJULCBJVCkgUlQKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9WQUxVRV9TVUZGSVgoUlYsIFNVRikgUlYjIy4wTAotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0xPTkdfTE9ORykgJiYgIWRlZmluZWQoTkROQk9PU1RfTUFUSF9JTlRfVEFCTEVfVFlQRSkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFKFJULCBJVCkgUlQKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOVF9WQUxVRV9TVUZGSVgoUlYsIFNVRikgUlYjIy4wTAotI2VuZGlmCi0KLS8vCi0vLyBUaGUgbWF4aW11bSBvcmRlciBvZiBwb2x5bm9taWFsIHRoYXQgd2lsbCBiZSBldmFsdWF0ZWQgCi0vLyB2aWEgYW4gdW5yb2xsZWQgc3BlY2lhbGlzYXRpb246Ci0vLwotI2lmbmRlZiBORE5CT09TVF9NQVRIX01BWF9QT0xZX09SREVSCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9NQVhfUE9MWV9PUkRFUiAxNwotI2VuZGlmIAotLy8KLS8vIFNldCB0aGUgbWV0aG9kIHVzZWQgdG8gZXZhbHVhdGUgcG9seW5vbWlhbHMgYW5kIHJhdGlvbmFsczoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfUE9MWV9NRVRIT0QKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1BPTFlfTUVUSE9EIDEKLSNlbmRpZiAKLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9SQVRJT05BTF9NRVRIT0QKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX1JBVElPTkFMX01FVEhPRCAwCi0jZW5kaWYgCi0vLwotLy8gZGVjaWRlIHdoZXRoZXIgdG8gc3RvcmUgY29uc3RhbnRzIGFzIGludGVnZXJzIG9yIHJlYWxzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9JTlRfVEFCTEVfVFlQRQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1RBQkxFX1RZUEUoUlQsIElUKSBJVAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfSU5UX1ZBTFVFX1NVRkZJWAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5UX1ZBTFVFX1NVRkZJWChSViwgU1VGKSBSViMjU1VGCi0jZW5kaWYKLS8vCi0vLyBUZXN0IHdoZXRoZXIgdG8gc3VwcG9ydCBfX2Zsb2F0MTI4OgotLy8KLSNpZiBkZWZpbmVkKF9HTElCQ1hYX1VTRV9GTE9BVDEyOCkgJiYgZGVmaW5lZChORE5CT09TVF9HQ0MpICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykKLS8vCi0vLyBPbmx5IGVuYWJsZSB0aGlzIHdoZW4gdGhlIGNvbXBpbGVyIHJlYWxseSBpcyBHQ0MgYXMgY2xhbmcgYW5kIHByb2JhYmx5IAotLy8gaW50ZWwgdG9vIGRvbid0IHN1cHBvcnQgX19mbG9hdDEyOCB5ZXQgOi0oCi0vLwotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfVVNFX0ZMT0FUMTI4Ci0jZW5kaWYKLS8vCi0vLyBDaGVjayBmb3IgV2luQ0Ugd2l0aCBubyBpb3N0cmVhbSBzdXBwb3J0OgotLy8KLSNpZiBkZWZpbmVkKF9XSU4zMl9XQ0UpICYmICFkZWZpbmVkKF9fU0dJX1NUTF9QT1JUKQotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfTk9fTEVYSUNBTF9DQVNUCi0jZW5kaWYKLQotLy8KLS8vIEhlbHBlciBtYWNybyBmb3IgY29udHJvbGxpbmcgdGhlIEZQIGJlaGF2aW91cjoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX01BVEhfQ09OVFJPTF9GUAotIyAgZGVmaW5lIE5ETkJPT1NUX01BVEhfQ09OVFJPTF9GUAotI2VuZGlmCi0vLwotLy8gSGVscGVyIG1hY3JvIGZvciB1c2luZyBzdGF0ZW1lbnRzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9TVERfVVNJTkdfQ09SRSBcCi0gICB1c2luZyBzdGQ6OmFicztcCi0gICB1c2luZyBzdGQ6OmFjb3M7XAotICAgdXNpbmcgc3RkOjpjb3M7XAotICAgdXNpbmcgc3RkOjpmbW9kO1wKLSAgIHVzaW5nIHN0ZDo6bW9kZjtcCi0gICB1c2luZyBzdGQ6OnRhbjtcCi0gICB1c2luZyBzdGQ6OmFzaW47XAotICAgdXNpbmcgc3RkOjpjb3NoO1wKLSAgIHVzaW5nIHN0ZDo6ZnJleHA7XAotICAgdXNpbmcgc3RkOjpwb3c7XAotICAgdXNpbmcgc3RkOjp0YW5oO1wKLSAgIHVzaW5nIHN0ZDo6YXRhbjtcCi0gICB1c2luZyBzdGQ6OmV4cDtcCi0gICB1c2luZyBzdGQ6OmxkZXhwO1wKLSAgIHVzaW5nIHN0ZDo6c2luO1wKLSAgIHVzaW5nIHN0ZDo6YXRhbjI7XAotICAgdXNpbmcgc3RkOjpmYWJzO1wKLSAgIHVzaW5nIHN0ZDo6bG9nO1wKLSAgIHVzaW5nIHN0ZDo6c2luaDtcCi0gICB1c2luZyBzdGQ6OmNlaWw7XAotICAgdXNpbmcgc3RkOjpmbG9vcjtcCi0gICB1c2luZyBzdGQ6OmxvZzEwO1wKLSAgIHVzaW5nIHN0ZDo6c3FydDsKLQotI2RlZmluZSBORE5CT09TVF9NQVRIX1NURF9VU0lORyBORE5CT09TVF9NQVRIX1NURF9VU0lOR19DT1JFCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIG1hdGh7Ci1uYW1lc3BhY2UgdG9vbHMKLXsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1pbmxpbmUgVCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04oVCBhLCBUIGIsIFQgYykKLXsKLSAgIHJldHVybiAoc3RkOjptYXgpKChzdGQ6Om1heCkoYSwgYiksIGMpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWlubGluZSBUIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTihUIGEsIFQgYiwgVCBjLCBUIGQpCi17Ci0gICByZXR1cm4gKHN0ZDo6bWF4KSgoc3RkOjptYXgpKGEsIGIpLCAoc3RkOjptYXgpKGMsIGQpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdG9vbHMKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci12b2lkIHN1cHByZXNzX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGNvbnN0IFQmKQotewotfQotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QgbmFtZXNwYWNlIG1hdGgKLQotI2lmICgoZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pKSB8fCBkZWZpbmVkKF9fUU5YX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0ZFTlZfSCkKLQotICAgI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9mZW52LmhwcD4KLQotIyAgaWZkZWYgRkVfQUxMX0VYQ0VQVAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSBtYXRoewotICAgbmFtZXNwYWNlIGRldGFpbAotICAgewotICAgc3RydWN0IGZwdV9ndWFyZAotICAgewotICAgICAgZnB1X2d1YXJkKCkKLSAgICAgIHsKLSAgICAgICAgIGZlZ2V0ZXhjZXB0ZmxhZygmbV9mbGFncywgRkVfQUxMX0VYQ0VQVCk7Ci0gICAgICAgICBmZWNsZWFyZXhjZXB0KEZFX0FMTF9FWENFUFQpOwotICAgICAgfQotICAgICAgfmZwdV9ndWFyZCgpCi0gICAgICB7Ci0gICAgICAgICBmZXNldGV4Y2VwdGZsYWcoJm1fZmxhZ3MsIEZFX0FMTF9FWENFUFQpOwotICAgICAgfQotICAgcHJpdmF0ZToKLSAgICAgIGZleGNlcHRfdCBtX2ZsYWdzOwotICAgfTsKLQotICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0gICB9fSAvLyBuYW1lc3BhY2VzCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZQVV9FWENFUFRJT05fR1VBUkQgbmRuYm9vc3Q6Om1hdGg6OmRldGFpbDo6ZnB1X2d1YXJkIGxvY2FsX2d1YXJkX29iamVjdDsKLSMgICAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9GUFUgZG97IGZleGNlcHRfdCBjcHVfZmxhZ3M7IGZlZ2V0ZXhjZXB0ZmxhZygmY3B1X2ZsYWdzLCBGRV9BTExfRVhDRVBUKTsgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKGNwdV9mbGFncyk7IH0gd2hpbGUoMCk7IAotCi0jICBlbHNlCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0ZQVV9FWENFUFRJT05fR1VBUkQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9GUFUKLQotIyAgZW5kaWYKLQotI2Vsc2UgLy8gQWxsIG90aGVyIHBsYXRmb3Jtcy4KLSMgIGRlZmluZSBORE5CT09TVF9GUFVfRVhDRVBUSU9OX0dVQVJECi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX0ZQVQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlQKLQotIyAgaW5jbHVkZSA8aW9zdHJlYW0+Ci0jICBpbmNsdWRlIDxpb21hbmlwPgotIyAgaW5jbHVkZSA8dHlwZWluZm8+Ci0KLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfQ09ERSh4KSBcCi0gICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXRwcmVjaXNpb24oMzUpIDw8IF9fRklMRV9fIDw8ICI6IiA8PCBfX0xJTkVfXyA8PCAiICIgPDwgeCA8PCBzdGQ6OmVuZGw7Ci0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX1ZBUklBQkxFKG5hbWUpIE5ETkJPT1NUX01BVEhfSU5TVFJVTUVOVF9DT0RFKE5ETkJPT1NUX1NUUklOR0laRShuYW1lKSA8PCAiID0gIiA8PCBuYW1lKQotCi0jZWxzZQotCi0jICBkZWZpbmUgTkROQk9PU1RfTUFUSF9JTlNUUlVNRU5UX0NPREUoeCkKLSMgIGRlZmluZSBORE5CT09TVF9NQVRIX0lOU1RSVU1FTlRfVkFSSUFCTEUobmFtZSkKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1RPT0xTX0NPTkZJR19IUFAKLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvcHJvbW90aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzFmZWE5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbWF0aC90b29scy9wcm9tb3Rpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8vIGJvb3N0XG1hdGhcdG9vbHNccHJvbW90aW9uLmhwcAotCi0vLyBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDYuCi0vLyBDb3B5cmlnaHQgUGF1bCBBLiBCcmlzdG93IDIwMDYuCi0KLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0vLyBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gUHJvbW90ZSBhcmd1bWVudHMgZnVuY3Rpb25zIHRvIGFsbG93IG1hdGggZnVuY3Rpb25zIHRvIGhhdmUgYXJndW1lbnRzCi0vLyBwcm92aWRlZCBhcyBpbnRlZ2VyIE9SIHJlYWwgKGZsb2F0aW5nLXBvaW50LCBidWlsdC1pbiBvciBVRFQpCi0vLyAoY2FsbGVkIEFyaXRobWV0aWNUeXBlIGluIGZ1bmN0aW9ucyB0aGF0IHVzZSBwcm9tb3Rpb24pCi0vLyB0aGF0IGhlbHAgdG8gcmVkdWNlIHRoZSByaXNrIG9mIGNyZWF0aW5nIG11bHRpcGxlIGluc3RhbnRpYXRpb25zLgotLy8gQWxsb3dzIGNyZWF0aW9uIG9mIGFuIGlubGluZSB3cmFwcGVyIHRoYXQgZm9yd2FyZHMgdG8gYSBmb28oUlQsIFJUKSBmdW5jdGlvbiwKLS8vIHNvIHlvdSBuZXZlciBnZXQgdG8gaW5zdGFudGlhdGUgYW55IG1peGVkIGZvbyhSVCwgSVQpIGZ1bmN0aW9ucy4KLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1BST01PVElPTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9QUk9NT1RJT05fSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gQm9vc3QgdHlwZSB0cmFpdHM6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbWF0aC90b29scy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcD4gLy8gZm9yIG5kbmJvb3N0Ojppc19mbG9hdGluZ19wb2ludDsKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+IC8vIGZvciBuZG5ib29zdDo6aXNfaW50ZWdyYWwKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+IC8vIGZvciBuZG5ib29zdDo6aXNfY29udmVydGlibGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4vLyBmb3IgbmRuYm9vc3Q6OmlzX3NhbWUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPi8vIGZvciBuZG5ib29zdDo6cmVtb3ZlX2N2Ci0vLyBCb29zdCBUZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nOgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+IC8vIGZvciBuZG5ib29zdDo6bXBsOjppZl9jLgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPiAvLyBmb3IgbmRuYm9vc3Q6Om1wbDo6aWZfYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPiAvLyBmb3IgbmRuYm9vc3Q6Om1wbDo6aWZfYy4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4gLy8gZm9yIG5kbmJvb3N0OjptcGw6OmlmX2MuCi0KLSNpZmRlZiBORE5CT09TVF9NQVRIX05PX0xPTkdfRE9VQkxFX01BVEhfRlVOQ1RJT05TCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gIG5hbWVzcGFjZSBtYXRoCi0gIHsKLSAgICBuYW1lc3BhY2UgdG9vbHMKLSAgICB7Ci0gICAgICAvLyBJZiBlaXRoZXIgVDEgb3IgVDIgaXMgYW4gaW50ZWdlciB0eXBlLAotICAgICAgLy8gcHJldGVuZCBpdCB3YXMgYSBkb3VibGUgKGZvciB0aGUgcHVycG9zZXMgb2YgZnVydGhlciBhbmFseXNpcykuCi0gICAgICAvLyBUaGVuIHBpY2sgdGhlIHdpZGVyIG9mIHRoZSB0d28gZmxvYXRpbmctcG9pbnQgdHlwZXMKLSAgICAgIC8vIGFzIHRoZSBhY3R1YWwgc2lnbmF0dXJlIHRvIGZvcndhcmQgdG8uCi0gICAgICAvLyBGb3IgZXhhbXBsZToKLSAgICAgIC8vIGZvbyhpbnQsIHNob3J0KSAtPiBkb3VibGUgZm9vKGRvdWJsZSwgZG91YmxlKTsKLSAgICAgIC8vIGZvbyhpbnQsIGZsb2F0KSAtPiBkb3VibGUgZm9vKGRvdWJsZSwgZG91YmxlKTsKLSAgICAgIC8vIE5vdGU6IE5PVCBmbG9hdCBmb28oZmxvYXQsIGZsb2F0KQotICAgICAgLy8gZm9vKGludCwgZG91YmxlKSAtPiBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gZm9vKGRvdWJsZSwgZmxvYXQpIC0+IGRvdWJsZSBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gZm9vKGRvdWJsZSwgZmxvYXQpIC0+IGRvdWJsZSBmb28oZG91YmxlLCBkb3VibGUpOwotICAgICAgLy8gZm9vKGFueS1pbnQtb3ItZmxvYXQtdHlwZSwgbG9uZyBkb3VibGUpIC0+IGZvbyhsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOwotICAgICAgLy8gYnV0IE9OTFkgZmxvYXQgZm9vKGZsb2F0LCBmbG9hdCkgaXMgdW5jaGFuZ2VkLgotICAgICAgLy8gU28gdGhlIG9ubHkgd2F5IHRvIGdldCBhbiBlbnRpcmVseSBmbG9hdCB2ZXJzaW9uIGlzIHRvIGNhbGwgZm9vKDEuRiwgMi5GKSwKLSAgICAgIC8vIEJ1dCBzaW5jZSBtb3N0IChhbGw/KSB0aGUgbWF0aCBmdW5jdGlvbnMgY29udmVydCB0byBkb3VibGUgaW50ZXJuYWxseSwKLSAgICAgIC8vIHByb2JhYmx5IHRoZXJlIHdvdWxkIG5vdCBiZSB0aGUgaG9wZWQtZm9yIGdhaW4gYnkgdXNpbmcgZmxvYXQgaGVyZS4KLQotICAgICAgLy8gVGhpcyBmb2xsb3dzIHRoZSBDLWNvbXBhdGlibGUgY29udmVyc2lvbiBydWxlcyBvZiBwb3csIGV0YwotICAgICAgLy8gd2hlcmUgcG93KGludCwgZmxvYXQpIGlzIGNvbnZlcnRlZCB0byBwb3coZG91YmxlLCBkb3VibGUpLgotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBwcm9tb3RlX2FyZwotICAgICAgeyAvLyBJZiBUIGlzIGludGVncmFsIHR5cGUsIHRoZW4gcHJvbW90ZSB0byBkb3VibGUuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfaW50ZWdyYWw8VD4sIGRvdWJsZSwgVD46OnR5cGUgdHlwZTsKLSAgICAgIH07Ci0gICAgICAvLyBUaGVzZSBmdWxsIHNwZWNpYWxpc2F0aW9ucyByZWR1Y2UgbXBsOjppZl8gdXNhZ2UgYW5kIHNwZWVkIHVwCi0gICAgICAvLyBjb21waWxhdGlvbjoKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZzxmbG9hdD4geyB0eXBlZGVmIGZsb2F0IHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmc8ZG91YmxlPnsgdHlwZWRlZiBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZzxsb25nIGRvdWJsZT4geyB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmc8aW50PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICAgICAgc3RydWN0IHByb21vdGVfYXJnc18yCi0gICAgICB7IC8vIFByb21vdGUsIGlmIG5lY2Vzc2FyeSwgJiBwaWNrIHRoZSB3aWRlciBvZiB0aGUgdHdvIGZsb2F0aW5nLXBvaW50IHR5cGVzLgotICAgICAgICAvLyBmb3IgYm90aCBwYXJhbWV0ZXIgdHlwZXMsIGlmIGludGVncmFsIHByb21vdGUgdG8gZG91YmxlLgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByb21vdGVfYXJnPFQxPjo6dHlwZSBUMVA7IC8vIFQxIHBlcmhhcHMgcHJvbW90ZWQuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJvbW90ZV9hcmc8VDI+Ojp0eXBlIFQyUDsgLy8gVDIgcGVyaGFwcyBwcm9tb3RlZC4KLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6YW5kXzxpc19mbG9hdGluZ19wb2ludDxUMVA+LCBpc19mbG9hdGluZ19wb2ludDxUMlA+ID46OnR5cGUsIC8vIGJvdGggVDFQIGFuZCBUMlAgYXJlIGZsb2F0aW5nLXBvaW50PwotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPCB0eXBlbmFtZSBtcGw6Om9yXzxpc19zYW1lPGxvbmcgZG91YmxlLCBUMVA+LCBpc19zYW1lPGxvbmcgZG91YmxlLCBUMlA+ID46OnR5cGUsIC8vIGVpdGhlciBsb25nIGRvdWJsZT8KLSAgICAgICAgICAgIGxvbmcgZG91YmxlLCAvLyB0aGVuIHJlc3VsdCB0eXBlIGlzIGxvbmcgZG91YmxlLgotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88IHR5cGVuYW1lIG1wbDo6b3JfPGlzX3NhbWU8ZG91YmxlLCBUMVA+LCBpc19zYW1lPGRvdWJsZSwgVDJQPiA+Ojp0eXBlLCAvLyBlaXRoZXIgZG91YmxlPwotICAgICAgICAgICAgZG91YmxlLCAvLyByZXN1bHQgdHlwZSBpcyBkb3VibGUuCi0gICAgICAgICAgZmxvYXQgLy8gZWxzZSByZXN1bHQgdHlwZSBpcyBmbG9hdC4KLSAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgPjo6dHlwZSwKLSAgICAgICAgICAvLyBlbHNlIG9uZSBvciB0aGUgb3RoZXIgaXMgYSB1c2VyLWRlZmluZWQgdHlwZToKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwgdHlwZW5hbWUgbXBsOjphbmRfPG1wbDo6bm90Xzxpc19mbG9hdGluZ19wb2ludDxUMlA+ID4sIDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQxUCwgVDJQPiA+LCBUMlAsIFQxUD46OnR5cGU+Ojp0eXBlIHR5cGU7Ci0gICAgICB9OyAvLyBwcm9tb3RlX2FyZzIKLSAgICAgIC8vIFRoZXNlIGZ1bGwgc3BlY2lhbGlzYXRpb25zIHJlZHVjZSBtcGw6OmlmXyB1c2FnZSBhbmQgc3BlZWQgdXAKLSAgICAgIC8vIGNvbXBpbGF0aW9uOgotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGZsb2F0LCBmbG9hdD4geyB0eXBlZGVmIGZsb2F0IHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZG91YmxlLCBkb3VibGU+eyB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZT4geyB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8aW50LCBpbnQ+IHsgIHR5cGVkZWYgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8aW50LCBmbG9hdD4geyAgdHlwZWRlZiBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxmbG9hdCwgaW50PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGludCwgZG91YmxlPiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGRvdWJsZSwgaW50PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGludCwgbG9uZyBkb3VibGU+IHsgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxsb25nIGRvdWJsZSwgaW50PiB7ICB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0gICAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgcHJvbW90ZV9hcmdzXzI8ZmxvYXQsIGRvdWJsZT4geyAgdHlwZWRlZiBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxkb3VibGUsIGZsb2F0PiB7ICB0eXBlZGVmIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGZsb2F0LCBsb25nIGRvdWJsZT4geyAgdHlwZWRlZiBsb25nIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGxvbmcgZG91YmxlLCBmbG9hdD4geyAgdHlwZWRlZiBsb25nIGRvdWJsZSB0eXBlOyB9OwotICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IHByb21vdGVfYXJnc18yPGRvdWJsZSwgbG9uZyBkb3VibGU+IHsgIHR5cGVkZWYgbG9uZyBkb3VibGUgdHlwZTsgfTsKLSAgICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBwcm9tb3RlX2FyZ3NfMjxsb25nIGRvdWJsZSwgZG91YmxlPiB7ICB0eXBlZGVmIGxvbmcgZG91YmxlIHR5cGU7IH07Ci0KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI9ZmxvYXQsIGNsYXNzIFQzPWZsb2F0LCBjbGFzcyBUND1mbG9hdCwgY2xhc3MgVDU9ZmxvYXQsIGNsYXNzIFQ2PWZsb2F0PgotICAgICAgc3RydWN0IHByb21vdGVfYXJncwotICAgICAgewotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUMT46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUMj46OnR5cGUsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUMz46OnR5cGUsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUND46OnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBwcm9tb3RlX2FyZ3NfMjwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxUNT46OnR5cGUsIHR5cGVuYW1lIHJlbW92ZV9jdjxUNj46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUgdHlwZTsKLQotI2lmZGVmIE5ETkJPT1NUX01BVEhfTk9fTE9OR19ET1VCTEVfTUFUSF9GVU5DVElPTlMKLSAgICAgICAgIC8vCi0gICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IHVzZSBvZiBsb25nIGRvdWJsZSBpZiBpdCdzIG5vdCBzdXBwb3J0ZWQ6Ci0gICAgICAgICAvLwotICAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgoMCA9PSA6Om5kbmJvb3N0Ojppc19zYW1lPHR5cGUsIGxvbmcgZG91YmxlPjo6dmFsdWUpKTsKLSNlbmRpZgotICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIHRvb2xzCi0gIH0gLy8gbmFtZXNwYWNlIG1hdGgKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NQVRIX1BST01PVElPTl9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL3JlYWxfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvcmVhbF9jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGExNDYxMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvcmVhbF9jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vICBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDYuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9NQVRIX1RPT0xTX1JFQUxfQ0FTVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTUFUSF9UT09MU19SRUFMX0NBU1RfSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgbWF0aAotewotICBuYW1lc3BhY2UgdG9vbHMKLSAgewotICAgIHRlbXBsYXRlIDxjbGFzcyBUbywgY2xhc3MgVD4KLSAgICBpbmxpbmUgVG8gcmVhbF9jYXN0KFQgdCkKLSAgICB7Ci0gICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPih0KTsKLSAgICB9Ci0gIH0gLy8gbmFtZXNwYWNlIHRvb2xzCi19IC8vIG5hbWVzcGFjZSBtYXRoCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTUFUSF9UT09MU19SRUFMX0NBU1RfSFBQCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvdXNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21hdGgvdG9vbHMvdXNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MjI0NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tYXRoL3Rvb2xzL3VzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA3LgotLy8gQ29weXJpZ2h0IFBhdWwgQS4gQnJpc3RvdyAyMDA3LgotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotLy8gb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfTUFUSF9UT09MU19VU0VSX0hQUAotI2RlZmluZSBORE5CT09TVF9NQVRIX1RPT0xTX1VTRVJfSFBQCi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gVGhpcyBmaWxlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgdXNlciB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgcG9saWNpZXMuCi0vLyBTZWUgIkNoYW5naW5nIHRoZSBQb2xpY3kgRGVmYXVsdHMiIGluIGRvY3VtZW50YXRpb24uCi0KLS8vIGRlZmluZSB0aGlzIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbm8gbG9uZyBkb3VibGUgZnVuY3Rpb25zLAotLy8gb3IgaWYgdGhlIGxvbmcgZG91YmxlIHZlcnNpb25zIGhhdmUgb25seSBkb3VibGUgcHJlY2lzaW9uOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9OT19MT05HX0RPVUJMRV9NQVRIX0ZVTkNUSU9OUwotLy8KLS8vIFBlcmZvcm1hbmNlIHR1bmluZyBvcHRpb25zOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9QT0xZX01FVEhPRCAzCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfUkFUSU9OQUxfTUVUSE9EIDMKLS8vCi0vLyBUaGUgbWF4aW11bSBvcmRlciBvZiBwb2x5bm9taWFsIHRoYXQgd2lsbCBiZSBldmFsdWF0ZWQKLS8vIHZpYSBhbiB1bnJvbGxlZCBzcGVjaWFsaXNhdGlvbjoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1BPTFlfT1JERVIgMTcKLS8vCi0vLyBkZWNpZGUgd2hldGhlciB0byBzdG9yZSBjb25zdGFudHMgYXMgaW50ZWdlcnMgb3IgcmVhbHM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0lOVF9UQUJMRV9UWVBFKFJULCBJVCkgSVQKLQotLy8KLS8vIERlZmF1bHQgcG9saWNpZXMgZm9sbG93OgotLy8KLS8vIERvbWFpbiBlcnJvcnM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0RPTUFJTl9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLS8vCi0vLyBQb2xlIGVycm9yczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfUE9MRV9FUlJPUl9QT0xJQ1kgdGhyb3dfb25fZXJyb3IKLS8vCi0vLyBPdmVyZmxvdyBFcnJvcnM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX09WRVJGTE9XX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotLy8KLS8vIEludGVybmFsIEV2YWx1YXRpb24gRXJyb3JzOgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9FVkFMVUFUSU9OX0VSUk9SX1BPTElDWSB0aHJvd19vbl9lcnJvcgotLy8KLS8vIFVuZGVyZm93OgotLy8KLS8vICNkZWZpbmUgTkROQk9PU1RfTUFUSF9VTkRFUkZMT1dfRVJST1JfUE9MSUNZIGlnbm9yZV9lcnJvcgotLy8KLS8vIERlbm9ybXM6Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0RFTk9STV9FUlJPUl9QT0xJQ1kgaWdub3JlX2Vycm9yCi0vLwotLy8gTWF4IGRpZ2l0cyB0byB1c2UgZm9yIGludGVybmFsIGNhbGN1bGF0aW9uczoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfRElHSVRTMTBfUE9MSUNZIDAKLS8vCi0vLyBQcm9tb3RlIGZsb2F0cyB0byBkb3VibGVzIGludGVybmFsbHk/Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX1BST01PVEVfRkxPQVRfUE9MSUNZIHRydWUKLS8vCi0vLyBQcm9tb3RlIGRvdWJsZXMgdG8gbG9uZyBkb3VibGUgaW50ZXJuYWxseToKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfUFJPTU9URV9ET1VCTEVfUE9MSUNZIHRydWUKLS8vCi0vLyBXaGF0IGRvIGRpc2NyZXRlIHF1YW50aWxlcyByZXR1cm4/Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0RJU0NSRVRFX1FVQU5USUxFX1BPTElDWSBpbnRlZ2VyX3JvdW5kX291dHdhcmRzCi0vLwotLy8gSWYgYSBmdW5jdGlvbiBpcyBtYXRoZW1hdGljYWxseSB1bmRlZmluZWQKLS8vIChmb3IgZXhhbXBsZSB0aGUgQ2F1Y2h5IGRpc3RyaWJ1dGlvbiBoYXMgbm8gbWVhbiksCi0vLyB0aGVuIGRvIHdlIHN0b3AgdGhlIGNvZGUgZnJvbSBjb21waWxpbmc/Ci0vLwotLy8gI2RlZmluZSBORE5CT09TVF9NQVRIX0FTU0VSVF9VTkRFRklORURfUE9MSUNZIHRydWUKLS8vCi0vLyBNYXhpbXVtIHNlcmllcyBpdGVyc3Rpb25zIHBlcm1pdHRlZDoKLS8vCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1NFUklFU19JVEVSQVRJT05fUE9MSUNZIDEwMDAwMDAKLS8vCi0vLyBNYXhpbXVtIHJvb3QgZmluZGluZyBzdGVwcyBwZXJtaXR0ZWQ6Ci0vLwotLy8gZGVmaW5lIE5ETkJPT1NUX01BVEhfTUFYX1JPT1RfSVRFUkFUSU9OX1BPTElDWSAyMDAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01BVEhfVE9PTFNfVVNFUl9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21lbV9mbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21lbV9mbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZDY0MTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tZW1fZm4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9NRU1fRk5fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01FTV9GTl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbWVtX2ZuLmhwcCAtIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RkOjptZW1fZnVuW19yZWZdCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2JpbmQvbWVtX2ZuLmh0bWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYmluZC9tZW1fZm4uaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9NRU1fRk5fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21lbW9yeV9vcmRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21lbW9yeV9vcmRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOGY4NTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tZW1vcnlfb3JkZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9NRU1PUllfT1JERVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01FTU9SWV9PUkRFUl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBuZG5ib29zdC9tZW1vcnlfb3JkZXIuaHBwCi0vLwotLy8gIERlZmluZXMgZW51bSBuZG5ib29zdDo6bWVtb3J5X29yZGVyIHBlciB0aGUgQysrMHggd29ya2luZyBkcmFmdAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDkgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8KLS8vIEVudW0gdmFsdWVzIGFyZSBjaG9zZW4gc28gdGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gaW5zZXJ0Ci0vLyBhIHRyYWlsaW5nIGZlbmNlIGZvciBhY3F1aXJlIHNlbWFudGljcyBjYW4gdXNlIGEgc2luZ2xlCi0vLyB0ZXN0IHN1Y2ggYXM6Ci0vLwotLy8gaWYoIG1vICYgbWVtb3J5X29yZGVyX2FjcXVpcmUgKSB7IC4uLmZlbmNlLi4uIH0KLS8vCi0vLyBGb3IgbGVhZGluZyBmZW5jZXMgb25lIGNhbiB1c2U6Ci0vLwotLy8gaWYoIG1vICYgbWVtb3J5X29yZGVyX3JlbGVhc2UgKSB7IC4uLmZlbmNlLi4uIH0KLS8vCi0vLyBBcmNoaXRlY3R1cmVzIHN1Y2ggYXMgQWxwaGEgdGhhdCBuZWVkIGEgZmVuY2Ugb24gY29uc3VtZQotLy8gY2FuIHVzZToKLS8vCi0vLyBpZiggbW8gJiAoIG1lbW9yeV9vcmRlcl9hY3F1aXJlIHwgbWVtb3J5X29yZGVyX2NvbnN1bWUgKSApIHsgLi4uZmVuY2UuLi4gfQotLy8KLQotZW51bSBtZW1vcnlfb3JkZXIKLXsKLSAgICBtZW1vcnlfb3JkZXJfcmVsYXhlZCA9IDAsCi0gICAgbWVtb3J5X29yZGVyX2FjcXVpcmUgPSAxLAotICAgIG1lbW9yeV9vcmRlcl9yZWxlYXNlID0gMiwKLSAgICBtZW1vcnlfb3JkZXJfYWNxX3JlbCA9IDMsIC8vIGFjcXVpcmUgfCByZWxlYXNlCi0gICAgbWVtb3J5X29yZGVyX3NlcV9jc3QgPSA3LCAvLyBhY3FfcmVsIHwgNAotICAgIG1lbW9yeV9vcmRlcl9jb25zdW1lID0gOAotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTUVNT1JZX09SREVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2FsZ29yaXRobS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZkMTkxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NSArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAxMi0yMDEyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBcZmlsZQotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfQUxHT1JJVEhNX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX0FMR09SSVRITV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19iZWdpbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvYWxnb3JpdGhtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvbm9fZXhjZXB0aW9uc19zdXBwb3J0LmhwcD4KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gLy9jb3B5LCBjb3B5X2JhY2t3YXJkCi0jaW5jbHVkZSA8bWVtb3J5PiAgICAvL3VuaW5pdGlhbGl6ZWRfY29weQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUpCi0KLSAgIC8vISA8Yj5FZmZlY3RzPC9iPjogTW92ZXMgZWxlbWVudHMgaW4gdGhlIHJhbmdlIFtmaXJzdCxsYXN0KSBpbnRvIHRoZSByYW5nZSBbcmVzdWx0LHJlc3VsdCArIChsYXN0IC0KLSAgIC8vISAgIGZpcnN0KSkgc3RhcnRpbmcgZnJvbSBmaXJzdCBhbmQgcHJvY2VlZGluZyB0byBsYXN0LiBGb3IgZWFjaCBub24tbmVnYXRpdmUgaW50ZWdlciBuIDwgKGxhc3QtZmlyc3QpLAotICAgLy8hICAgcGVyZm9ybXMgKihyZXN1bHQgKyBuKSA9IDo6bmRuYm9vc3Q6Om1vdmUgKCooZmlyc3QgKyBuKSkuCi0gICAvLyEKLSAgIC8vISA8Yj5FZmZlY3RzPC9iPjogcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkuCi0gICAvLyEKLSAgIC8vISA8Yj5SZXF1aXJlczwvYj46IHJlc3VsdCBzaGFsbCBub3QgYmUgaW4gdGhlIHJhbmdlIFtmaXJzdCxsYXN0KS4KLSAgIC8vIQotICAgLy8hIDxiPkNvbXBsZXhpdHk8L2I+OiBFeGFjdGx5IGxhc3QgLSBmaXJzdCBtb3ZlIGFzc2lnbm1lbnRzLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIEksIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLSAgICAgICAgICAgIHR5cGVuYW1lIE8+IC8vIE8gbW9kZWxzIE91dHB1dEl0ZXJhdG9yCi0gICBPIG1vdmUoSSBmLCBJIGwsIE8gcmVzdWx0KQotICAgewotICAgICAgd2hpbGUgKGYgIT0gbCkgewotICAgICAgICAgKnJlc3VsdCA9IDo6bmRuYm9vc3Q6Om1vdmUoKmYpOwotICAgICAgICAgKytmOyArK3Jlc3VsdDsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgLy8KLSAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfYmFja3dhcmQKLSAgIC8vCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgLy8hIDxiPkVmZmVjdHM8L2I+OiBNb3ZlcyBlbGVtZW50cyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpIGludG8gdGhlIHJhbmdlCi0gICAvLyEgICBbcmVzdWx0IC0gKGxhc3QtZmlyc3QpLHJlc3VsdCkgc3RhcnRpbmcgZnJvbSBsYXN0IC0gMSBhbmQgcHJvY2VlZGluZyB0bwotICAgLy8hICAgZmlyc3QuIEZvciBlYWNoIHBvc2l0aXZlIGludGVnZXIgbiA8PSAobGFzdCAtIGZpcnN0KSwKLSAgIC8vISAgIHBlcmZvcm1zICoocmVzdWx0IC0gbikgPSA6Om5kbmJvb3N0Ojptb3ZlKCoobGFzdCAtIG4pKS4KLSAgIC8vIQotICAgLy8hIDxiPlJlcXVpcmVzPC9iPjogcmVzdWx0IHNoYWxsIG5vdCBiZSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LGxhc3QpLgotICAgLy8hCi0gICAvLyEgPGI+UmV0dXJuczwvYj46IHJlc3VsdCAtIChsYXN0IC0gZmlyc3QpLgotICAgLy8hCi0gICAvLyEgPGI+Q29tcGxleGl0eTwvYj46IEV4YWN0bHkgbGFzdCAtIGZpcnN0IGFzc2lnbm1lbnRzLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIEksIC8vIEkgbW9kZWxzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcgotICAgdHlwZW5hbWUgTz4gLy8gTyBtb2RlbHMgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yCi0gICBPIG1vdmVfYmFja3dhcmQoSSBmLCBJIGwsIE8gcmVzdWx0KQotICAgewotICAgICAgd2hpbGUgKGYgIT0gbCkgewotICAgICAgICAgLS1sOyAtLXJlc3VsdDsKLSAgICAgICAgICpyZXN1bHQgPSA6Om5kbmJvb3N0Ojptb3ZlKCpsKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0KLSNlbHNlCi0KLSAgIHVzaW5nIDo6c3RkOjptb3ZlX2JhY2t3YXJkOwotCi0jZW5kaWYgICAvLyFkZWZpbmVkKE5ETkJPT1NUX01PVkVfVVNFX1NUQU5EQVJEX0xJQlJBUllfTU9WRSkKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZF9tb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISA8Yj5FZmZlY3RzPC9iPjoKLS8vISAgIFxjb2RlCi0vLyEgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytyZXN1bHQsICsrZmlyc3QpCi0vLyEgICAgICBuZXcgKHN0YXRpY19jYXN0PHZvaWQqPigmKnJlc3VsdCkpCi0vLyEgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZShuZG5ib29zdDo6bW92ZSgqZmlyc3QpKTsKLS8vISAgIFxlbmRjb2RlCi0vLyEKLS8vISA8Yj5SZXR1cm5zPC9iPjogcmVzdWx0Ci10ZW1wbGF0ZQotICAgPHR5cGVuYW1lIEksIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLSAgICB0eXBlbmFtZSBGPiAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLUYgdW5pbml0aWFsaXplZF9tb3ZlKEkgZiwgSSBsLCBGIHIKLSAgIC8vLyBAY29uZAotLy8gICAsdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZjxoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJPjo6dmFsdWVfdHlwZT4gPjo6dHlwZSogPSAwCi0gICAvLy8gQGVuZGNvbmQKLSAgICkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8ST46OnZhbHVlX3R5cGUgaW5wdXRfdmFsdWVfdHlwZTsKLQotICAgRiBiYWNrID0gcjsKLSAgIE5ETkJPT1NUX1RSWXsKLSAgICAgIHdoaWxlIChmICE9IGwpIHsKLSAgICAgICAgIHZvaWQgKiBjb25zdCBhZGRyID0gc3RhdGljX2Nhc3Q8dm9pZCo+KDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjphZGRyZXNzb2YoKnIpKTsKLSAgICAgICAgIDo6bmV3KGFkZHIpIGlucHV0X3ZhbHVlX3R5cGUoOjpuZG5ib29zdDo6bW92ZSgqZikpOwotICAgICAgICAgKytmOyArK3I7Ci0gICAgICB9Ci0gICB9Ci0gICBORE5CT09TVF9DQVRDSCguLi4pewotCSAgIGZvciAoOyBiYWNrICE9IHI7ICsrYmFjayl7Ci0gICAgICAgICBiYWNrLT5+aW5wdXRfdmFsdWVfdHlwZSgpOwotICAgICAgfQotCSAgIE5ETkJPT1NUX1JFVEhST1c7Ci0gICB9Ci0gICBORE5CT09TVF9DQVRDSF9FTkQKLSAgIHJldHVybiByOwotfQotCi0vLy8gQGNvbmQKLS8qCi10ZW1wbGF0ZQotICAgPHR5cGVuYW1lIEksICAgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotICAgIHR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1GIHVuaW5pdGlhbGl6ZWRfbW92ZShJIGYsIEkgbCwgRiByLAotICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRpc2FibGVfaWY8aGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8dHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8ST46OnZhbHVlX3R5cGU+ID46OnR5cGUqID0gMCkKLXsKLSAgIHJldHVybiBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShmLCBsLCByKTsKLX0KLSovCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW5pdGlhbGl6ZWRfY29weV9vcl9tb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgdW5pbml0aWFsaXplZF9tb3ZlX21vdmVfaXRlcmF0b3IoSSBmLCBJIGwsIEYgcgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICx0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmPCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBJOjp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDAKLSkKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0Ojp1bmluaXRpYWxpemVkX21vdmUoZiwgbCwgcik7Ci19Ci0vKgotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1GIHVuaW5pdGlhbGl6ZWRfbW92ZV9tb3ZlX2l0ZXJhdG9yKEkgZiwgSSBsLCBGIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkaXNhYmxlX2lmPCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBJOjp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDApCi17Ci0gICByZXR1cm4gc3RkOjp1bmluaXRpYWxpemVkX2NvcHkoZi5iYXNlKCksIGwuYmFzZSgpLCByKTsKLX0KLSovCi19ICAvL25hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgdW5pbml0aWFsaXplZF9jb3B5X29yX21vdmUoSSBmLCBJIGwsIEYgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZjwgbW92ZV9kZXRhaWw6OmlzX21vdmVfaXRlcmF0b3I8ST4gPjo6dHlwZSogPSAwKQotewotICAgcmV0dXJuIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjp1bmluaXRpYWxpemVkX21vdmVfbW92ZV9pdGVyYXRvcihmLCBsLCByKTsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV9vcl9tb3ZlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgbW92ZV9tb3ZlX2l0ZXJhdG9yKEkgZiwgSSBsLCBGIHIKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZjwgaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8dHlwZW5hbWUgSTo6dmFsdWVfdHlwZT4gPjo6dHlwZSogPSAwCi0pCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6bW92ZShmLCBsLCByKTsKLX0KLS8qCi10ZW1wbGF0ZQotPHR5cGVuYW1lIEksICAgLy8gSSBtb2RlbHMgSW5wdXRJdGVyYXRvcgotdHlwZW5hbWUgRj4gICAvLyBGIG1vZGVscyBGb3J3YXJkSXRlcmF0b3IKLUYgbW92ZV9tb3ZlX2l0ZXJhdG9yKEkgZiwgSSBsLCBGIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjpkaXNhYmxlX2lmPCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx0eXBlbmFtZSBJOjp2YWx1ZV90eXBlPiA+Ojp0eXBlKiA9IDApCi17Ci0gICByZXR1cm4gc3RkOjpjb3B5KGYuYmFzZSgpLCBsLmJhc2UoKSwgcik7Ci19Ci0qLwotCi19ICAvL25hbWVzcGFjZSBtb3ZlX2RldGFpbCB7Ci0KLXRlbXBsYXRlCi08dHlwZW5hbWUgSSwgICAvLyBJIG1vZGVscyBJbnB1dEl0ZXJhdG9yCi10eXBlbmFtZSBGPiAgIC8vIEYgbW9kZWxzIEZvcndhcmRJdGVyYXRvcgotaW5saW5lIEYgY29weV9vcl9tb3ZlKEkgZiwgSSBsLCBGIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWY8IG1vdmVfZGV0YWlsOjppc19tb3ZlX2l0ZXJhdG9yPEk+ID46OnR5cGUqID0gMCkKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6bW92ZV9tb3ZlX2l0ZXJhdG9yKGYsIGwsIHIpOwotfQotCi0vLy8gQGVuZGNvbmQKLQotLy8hIDxiPkVmZmVjdHM8L2I+OgotLy8hICAgXGNvZGUKLS8vISAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLS8vISAgICAgIG5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KCYqcmVzdWx0KSkKLS8vISAgICAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlKCpmaXJzdCk7Ci0vLyEgICBcZW5kY29kZQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IHJlc3VsdAotLy8hCi0vLyEgPGI+Tm90ZTwvYj46IFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYmVjYXVzZQotLy8hICAgPGk+c3RkOjp1bmluaXRpYWxpemVkX2NvcHk8L2k+IGZyb20gc29tZSBTVEwgaW1wbGVtZW50YXRpb25zCi0vLyEgICAgaXMgbm90IGNvbXBhdGlibGUgd2l0aCA8aT5tb3ZlX2l0ZXJhdG9yPC9pPgotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiB1bmluaXRpYWxpemVkX2NvcHlfb3JfbW92ZShJIGYsIEkgbCwgRiByCi0gICAvLy8gQGNvbmQKLSAgICx0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZGlzYWJsZV9pZjwgbW92ZV9kZXRhaWw6OmlzX21vdmVfaXRlcmF0b3I8ST4gPjo6dHlwZSogPSAwCi0gICAvLy8gQGVuZGNvbmQKLSAgICkKLXsKLSAgIHJldHVybiBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShmLCBsLCByKTsKLX0KLQotLy8hIDxiPkVmZmVjdHM8L2I+OgotLy8hICAgXGNvZGUKLS8vISAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLS8vISAgICAgICpyZXN1bHQgPSAqZmlyc3Q7Ci0vLyEgICBcZW5kY29kZQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IHJlc3VsdAotLy8hCi0vLyEgPGI+Tm90ZTwvYj46IFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYmVjYXVzZQotLy8hICAgPGk+c3RkOjp1bmluaXRpYWxpemVkX2NvcHk8L2k+IGZyb20gc29tZSBTVEwgaW1wbGVtZW50YXRpb25zCi0vLyEgICAgaXMgbm90IGNvbXBhdGlibGUgd2l0aCA8aT5tb3ZlX2l0ZXJhdG9yPC9pPgotdGVtcGxhdGUKLTx0eXBlbmFtZSBJLCAgIC8vIEkgbW9kZWxzIElucHV0SXRlcmF0b3IKLXR5cGVuYW1lIEY+ICAgLy8gRiBtb2RlbHMgRm9yd2FyZEl0ZXJhdG9yCi1pbmxpbmUgRiBjb3B5X29yX21vdmUoSSBmLCBJIGwsIEYgcgotICAgLy8vIEBjb25kCi0gICAsdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmRpc2FibGVfaWY8IG1vdmVfZGV0YWlsOjppc19tb3ZlX2l0ZXJhdG9yPEk+ID46OnR5cGUqID0gMAotICAgLy8vIEBlbmRjb25kCi0gICApCi17Ci0gICByZXR1cm4gc3RkOjpjb3B5KGYsIGwsIHIpOwotfQotCi19ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9NT1ZFX01PVkVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvY29yZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvY29yZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMzcxNzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2NvcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMyICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbW92ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIFxmaWxlIGNvcmUuaHBwCi0vLyEgVGhpcyBoZWFkZXIgaW1wbGVtZW50cyBtYWNyb3MgdG8gZGVmaW5lIG1vdmFibGUgY2xhc3NlcyBhbmQKLS8vISBtb3ZlLWF3YXJlIGZ1bmN0aW9ucwotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfQ09SRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTU9WRV9DT1JFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0NYWDExX0RFTEVURURfRlVOQ1RJT05TCi0gICAjZGVmaW5lIE5ETkJPT1NUX01PVkVfSU1QTF9OT19DT1BZX0NUT1JfT1JfQVNTSUdOKFRZUEUpIFwKLSAgICAgIHByaXZhdGU6XAotICAgICAgVFlQRShUWVBFICYpO1wKLSAgICAgIFRZUEUmIG9wZXJhdG9yPShUWVBFICYpO1wKLSAgIC8vCi0jZWxzZQotICAgI2RlZmluZSBORE5CT09TVF9NT1ZFX0lNUExfTk9fQ09QWV9DVE9SX09SX0FTU0lHTihUWVBFKSBcCi0gICAgICBwdWJsaWM6XAotICAgICAgVFlQRShUWVBFIGNvbnN0ICYpID0gZGVsZXRlO1wKLSAgICAgIFRZUEUmIG9wZXJhdG9yPShUWVBFIGNvbnN0ICYpID0gZGVsZXRlO1wKLSAgICAgIHByaXZhdGU6XAotICAgLy8KLSNlbmRpZiAgIC8vTkROQk9PU1RfTk9fQ1hYMTFfREVMRVRFRF9GVU5DVElPTlMKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotCi0gICAjaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHA+Ci0KLSAgIC8vTW92ZSBlbXVsYXRpb24gcnYgYnJlYWtzIHN0YW5kYXJkIGFsaWFzaW5nIHJ1bGVzIHNvIGFkZCB3b3JrYXJvdW5kcyBmb3Igc29tZSBjb21waWxlcnMKLSAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSAgICAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9BVFRSSUJVVEVfTUFZX0FMSUFTIF9fYXR0cmlidXRlX18oKF9fbWF5X2FsaWFzX18pKQotICAgI2Vsc2UKLSAgICAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9BVFRSSUJVVEVfTUFZX0FMSUFTCi0gICAjZW5kaWYKLQotICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ2Ci0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGNsYXNzIHJ2Ci0gICAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aWZfYwotICAgICAgICAgPCA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aXNfY2xhc3Nfb3JfdW5pb248VD46OnZhbHVlCi0gICAgICAgICAsIFQKLSAgICAgICAgICwgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVtcHR5Ci0gICAgICAgICA+Ojp0eXBlCi0gICB7Ci0gICAgICBydigpOwotICAgICAgfnJ2KCk7Ci0gICAgICBydihydiBjb25zdCYpOwotICAgICAgdm9pZCBvcGVyYXRvcj0ocnYgY29uc3QmKTsKLSAgIH0gTkROQk9PU1RfTU9WRV9BVFRSSUJVVEVfTUFZX0FMSUFTOwotCi0KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgLy8KLSAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfZGV0YWlsOjppc19ydgotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICBuYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCBpc19ydgotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci0gICB7fTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgaXNfcnY8IHJ2PFQ+ID4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci0gICB7fTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgaXNfcnY8IGNvbnN0IHJ2PFQ+ID4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci0gICB7fTsKLQotICAgfSAgLy9uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZAotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgIHN0cnVjdCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZAotICAgICAgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aXNfY29udmVydGlibGU8IFQsIDo6bmRuYm9vc3Q6OnJ2PFQ+JiA+Ci0gICB7fTsKLQotICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgIHN0cnVjdCBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDxUJj4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPgotICAge307Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8IDo6bmRuYm9vc3Q6OnJ2PFQ+ID4KLSAgICAgIDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPgotICAge307Ci0KLSAgIH0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgI2RlZmluZSBORE5CT09TVF9SVl9SRUYoVFlQRSlcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgVFlQRSA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl8yX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMilcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgVFlQRTxBUkcxLCBBUkcyPiA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl8zX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMiwgQVJHMylcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgVFlQRTxBUkcxLCBBUkcyLCBBUkczPiA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl9CRUdcCi0gICAgICA6Om5kbmJvb3N0OjpydjwgICBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl9FTkRcCi0gICAgICA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0ZXRF9SRUYoVFlQRSlcCi0gICAgICBjb25zdCBUWVBFICYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUYoVFlQRSlcCi0gICAgICBjb25zdCA6Om5kbmJvb3N0OjpydjwgVFlQRSA+JiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl9CRUcgXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8ICBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl9FTkQgXAotICAgICAgPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUZfMl9URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIpXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8IFRZUEU8QVJHMSwgQVJHMj4gPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUZfM19URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIsIEFSRzMpXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8IFRZUEU8QVJHMSwgQVJHMiwgQVJHMz4gPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DQVRDSF9DT05TVF9STFZBTFVFKFRZUEUpXAotICAgICAgY29uc3QgOjpuZG5ib29zdDo6cnY8IFRZUEUgPiYgXAotICAgLy8KLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFCi0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAjZGVmaW5lIE5ETkJPT1NUX01PVkFCTEVfQlVUX05PVF9DT1BZQUJMRShUWVBFKVwKLSAgICAgIE5ETkJPT1NUX01PVkVfSU1QTF9OT19DT1BZX0NUT1JfT1JfQVNTSUdOKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIG9wZXJhdG9yIDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+KiA+KHRoaXMpOyAgfVwKLSAgICAgIG9wZXJhdG9yIGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIGNvbnN0IFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgcHJpdmF0ZTpcCi0gICAvLwotCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRQotICAgLy8KLSAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIFRZUEUmIG9wZXJhdG9yPShUWVBFICZ0KVwKLSAgICAgIHsgIHRoaXMtPm9wZXJhdG9yPShzdGF0aWNfY2FzdDxjb25zdCA6Om5kbmJvb3N0OjpydjxUWVBFPiAmPihjb25zdF9jYXN0PGNvbnN0IFRZUEUgJj4odCkpKTsgcmV0dXJuICp0aGlzO31cCi0gICAgICBwdWJsaWM6XAotICAgICAgb3BlcmF0b3IgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgb3BlcmF0b3IgY29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4mKCkgY29uc3QgXAotICAgICAgeyAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCA6Om5kbmJvb3N0OjpydjxUWVBFPiogPih0aGlzKTsgIH1cCi0gICAgICBwcml2YXRlOlwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEVfQUxUKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIG9wZXJhdG9yIDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+KiA+KHRoaXMpOyAgfVwKLSAgICAgIG9wZXJhdG9yIGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFRZUEU+JigpIGNvbnN0IFwKLSAgICAgIHsgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgOjpuZG5ib29zdDo6cnY8VFlQRT4qID4odGhpcyk7ICB9XAotICAgICAgcHJpdmF0ZTpcCi0gICAvLwotCi0jZWxzZSAgICAvL05ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLSAgIC8vQ29tcGlsZXIgd29ya2Fyb3VuZCBkZXRlY3Rpb24KLSAgICNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLSAgICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fIDwgNSkgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgLy9QcmUtc3RhbmRhcmQgcnZhbHVlIGJpbmRpbmcgcnVsZXMKLSAgICAgICAgICNkZWZpbmUgTkROQk9PU1RfTU9WRV9PTERfUlZBTFVFX1JFRl9CSU5ESU5HX1JVTEVTCi0gICAgICAjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPT0gMTYwMCkKLSAgICAgICAgIC8vU3RhbmRhcmQgcnZhbHVlIGJpbmRpbmcgcnVsZXMgYnV0IHdpdGggc29tZSBidWdzCi0gICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX01PVkVfTVNWQ18xMF9NRU1CRVJfUlZBTFVFX1JFRl9CVUcKLSAgICAgICAgIC8vVXNlIHN0YW5kYXJkIGxpYnJhcnkgZm9yIE1TVkMgdG8gYXZvaWQgbmFtZXNwYWNlIGlzc3VlcyBhcwotICAgICAgICAgLy9zb21lIG1vdmUgY2FsbHMgaW4gdGhlIFNUTCBhcmUgbm90IGZ1bGx5IHF1YWxpZmllZC4KLSAgICAgICAgIC8vI2RlZmluZSBORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUKLSAgICAgICNlbmRpZgotICAgI2VuZGlmCi0KLSAgIC8vISBUaGlzIG1hY3JvIG1hcmtzIGEgdHlwZSBhcyBtb3ZhYmxlIGJ1dCBub3QgY29weWFibGUsIGRpc2FibGluZyBjb3B5IGNvbnN0cnVjdGlvbgotICAgLy8hIGFuZCBhc3NpZ25tZW50LiBUaGUgdXNlciB3aWxsIG5lZWQgdG8gd3JpdGUgYSBtb3ZlIGNvbnN0cnVjdG9yL2Fzc2lnbm1lbnQgYXMgZXhwbGFpbmVkCi0gICAvLyEgaW4gdGhlIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgd3JpdGUgYSBtb3ZhYmxlIGJ1dCBub3QgY29weWFibGUgY2xhc3MuCi0gICAjZGVmaW5lIE5ETkJPT1NUX01PVkFCTEVfQlVUX05PVF9DT1BZQUJMRShUWVBFKVwKLSAgICAgIE5ETkJPT1NUX01PVkVfSU1QTF9OT19DT1BZX0NUT1JfT1JfQVNTSUdOKFRZUEUpXAotICAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgaW50IGJvb3N0X21vdmVfZW11bGF0aW9uX3Q7XAotICAgLy8KLQotICAgLy8hIFRoaXMgbWFjcm8gbWFya3MgYSB0eXBlIGFzIGNvcHlhYmxlIGFuZCBtb3ZhYmxlLgotICAgLy8hIFRoZSB1c2VyIHdpbGwgbmVlZCB0byB3cml0ZSBhIG1vdmUgY29uc3RydWN0b3IvYXNzaWdubWVudCBhbmQgYSBjb3B5IGFzc2lnbm1lbnQKLSAgIC8vISBhcyBleHBsYWluZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gdG8gZnVsbHkgd3JpdGUgYSBjb3B5YWJsZSBhbmQgbW92YWJsZSBjbGFzcy4KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUoVFlQRSlcCi0gICAvLwotCi0gICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFX0FMVChUWVBFKVwKLSAgIC8vCi0gICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLQotICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgLy8hVGhpcyB0cmFpdCB5aWVsZHMgdG8gYSBjb21waWxlLXRpbWUgdHJ1ZSBib29sZWFuIGlmIFQgd2FzIG1hcmtlZCBhcwotICAgLy8hTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFIG9yIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFIGFuZAotICAgLy8hcnZhbHVlIHJlZmVyZW5jZXMgYXJlIG5vdCBhdmFpbGFibGUgb24gdGhlIHBsYXRmb3JtLiBGYWxzZSBvdGhlcndpc2UuCi0gICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgc3RydWN0IGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkCi0gICB7Ci0gICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotICAgfTsKLQotICAgfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSAgIC8vIVRoaXMgbWFjcm8gaXMgdXNlZCB0byBhY2hpZXZlIHBvcnRhYmxlIHN5bnRheCBpbiBtb3ZlCi0gICAvLyFjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnRzIGZvciBjbGFzc2VzIG1hcmtlZCBhcwotICAgLy8hTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUgb3IgTkROQk9PU1RfTU9WQUJMRV9CVVRfTk9UX0NPUFlBQkxFCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRihUWVBFKVwKLSAgICAgIFRZUEUgJiYgXAotICAgLy8KLQotICAgLy8hVGhpcyBtYWNybyBpcyB1c2VkIHRvIGFjaGlldmUgcG9ydGFibGUgc3ludGF4IGluIG1vdmUKLSAgIC8vIWNvbnN0cnVjdG9ycyBhbmQgYXNzaWdubWVudHMgZm9yIHRlbXBsYXRlIGNsYXNzZXMgbWFya2VkIGFzCi0gICAvLyFORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRSBvciBORE5CT09TVF9NT1ZBQkxFX0JVVF9OT1RfQ09QWUFCTEUuCi0gICAvLyFBcyBtYWNyb3MgaGF2ZSBwcm9ibGVtcyB3aXRoIGNvbW1hLXNlcGFyYXRkIHRlbXBsYXRlIGFyZ3VtZW50cywKLSAgIC8vIXRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBtdXN0IGJlIHByZWNlZGVkIHdpdGggTkROQk9PU1RfUlZfUkVGX1NUQVJUCi0gICAvLyFhbmQgZW5kZWQgd2l0aCBORE5CT09TVF9SVl9SRUZfRU5ECi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl9CRUdcCi0gICAgICAgICBcCi0gICAvLwotCi0gICAvLyFUaGlzIG1hY3JvIGlzIHVzZWQgdG8gYWNoaWV2ZSBwb3J0YWJsZSBzeW50YXggaW4gbW92ZQotICAgLy8hY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50cyBmb3IgdGVtcGxhdGUgY2xhc3NlcyBtYXJrZWQgYXMKLSAgIC8vIU5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFIG9yIE5ETkJPT1NUX01PVkFCTEVfQlVUX05PVF9DT1BZQUJMRS4KLSAgIC8vIUFzIG1hY3JvcyBoYXZlIHByb2JsZW1zIHdpdGggY29tbWEtc2VwYXJhdGQgdGVtcGxhdGUgYXJndW1lbnRzLAotICAgLy8hdGhlIHRlbXBsYXRlIGFyZ3VtZW50IG11c3QgYmUgcHJlY2VkZWQgd2l0aCBORE5CT09TVF9SVl9SRUZfU1RBUlQKLSAgIC8vIWFuZCBlbmRlZCB3aXRoIE5ETkJPT1NUX1JWX1JFRl9FTkQKLSAgICNkZWZpbmUgTkROQk9PU1RfUlZfUkVGX0VORFwKLSAgICAgICYmIFwKLQotICAgLy8hVGhpcyBtYWNybyBpcyB1c2VkIHRvIGFjaGlldmUgcG9ydGFibGUgc3ludGF4IGluIGNvcHkKLSAgIC8vIWFzc2lnbm1lbnQgZm9yIGNsYXNzZXMgbWFya2VkIGFzIE5ETkJPT1NUX0NPUFlBQkxFX0FORF9NT1ZBQkxFLgotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUYoVFlQRSlcCi0gICAgICBjb25zdCBUWVBFICYgXAotICAgLy8KLQotICAgLy8hIFRoaXMgbWFjcm8gaXMgdXNlZCB0byBpbXBsZW1lbnQgcG9ydGFibGUgcGVyZmVjdCBmb3J3YXJkaW5nCi0gICAvLyEgYXMgZXhwbGFpbmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgotICAgI2RlZmluZSBORE5CT09TVF9GV0RfUkVGKFRZUEUpXAotICAgICAgVFlQRSAmJiBcCi0gICAvLwotCi0gICAjaWYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0gICAvLy8gQGNvbmQKLQotICAgI2RlZmluZSBORE5CT09TVF9SVl9SRUZfMl9URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIpXAotICAgICAgVFlQRTxBUkcxLCBBUkcyPiAmJiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX1JWX1JFRl8zX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMiwgQVJHMylcCi0gICAgICBUWVBFPEFSRzEsIEFSRzIsIEFSRzM+ICYmIFwKLSAgIC8vCi0KLSAgICNkZWZpbmUgTkROQk9PU1RfQ09QWV9BU1NJR05fUkVGX0JFRyBcCi0gICAgICBjb25zdCBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl9FTkQgXAotICAgICAgJiBcCi0gICAvLwotCi0gICAjZGVmaW5lIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRl8yX1RFTVBMX0FSR1MoVFlQRSwgQVJHMSwgQVJHMilcCi0gICAgICBjb25zdCBUWVBFPEFSRzEsIEFSRzI+ICYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DT1BZX0FTU0lHTl9SRUZfM19URU1QTF9BUkdTKFRZUEUsIEFSRzEsIEFSRzIsIEFSRzMpXAotICAgICAgY29uc3QgVFlQRTxBUkcxLCBBUkcyLCBBUkczPiYgXAotICAgLy8KLQotICAgI2RlZmluZSBORE5CT09TVF9DQVRDSF9DT05TVF9STFZBTFVFKFRZUEUpXAotICAgICAgY29uc3QgVFlQRSAmIFwKLSAgIC8vCi0KLSAgIC8vLyBAZW5kY29uZAotCi0gICAjZW5kaWYgICAvLyNpZiAhZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLQotI2VuZGlmICAgLy9ORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9DT1JFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODk4ZGQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0gICAjaWZuZGVmIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgICAgI2RlZmluZSAgTkROQk9PU1RfTU9WRV9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgICAgI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUKLSAgICNlbmRpZgotICAgI2lmbmRlZiBfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUwotICAgICAgI2RlZmluZSAgTkROQk9PU1RfTU9WRV9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTCi0gICAgICAjZGVmaW5lIF9TQ0xfU0VDVVJFX05PX1dBUk5JTkdTCi0gICAjZW5kaWYKLSAgICNwcmFnbWEgd2FybmluZyAocHVzaCkKLSAgICNwcmFnbWEgd2FybmluZyAoZGlzYWJsZSA6IDQ5OTYpIC8vICJmdW5jdGlvbiI6IHdhcyBkZWNsYXJlZCBkZXByZWNhdGVkCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmJhNzMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAxMi0yMDEyLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29udGFpbmVyIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI2lmIGRlZmluZWQgTkROQk9PU1RfTVNWQwotICAgI3ByYWdtYSB3YXJuaW5nIChwb3ApCi0gICAjaWZkZWYgTkROQk9PU1RfTU9WRV9ERVRBSUxfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUKLSAgICAgICN1bmRlZiBORE5CT09TVF9NT1ZFX0RFVEFJTF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgICAgI3VuZGVmIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURQotICAgI2VuZGlmCi0gICAjaWZuZGVmIE5ETkJPT1NUX01PVkVfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUwotICAgICAgI3VuZGVmICBORE5CT09TVF9NT1ZFX1NDTF9TRUNVUkVfTk9fV0FSTklOR1MKLSAgICAgICN1bmRlZiBfU0NMX1NFQ1VSRV9OT19XQVJOSU5HUwotICAgI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvZGV0YWlsL21ldGFfdXRpbHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODIzYzIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9kZXRhaWwvbWV0YV91dGlscy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTItMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUKLQotI2lmbmRlZiBORE5CT09TVF9NT1ZFX0RFVEFJTF9NRVRBX1VUSUxTX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX0RFVEFJTF9NRVRBX1VUSUxTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLQotLy9TbWFsbCBtZXRhLXR5cGV0cmFpdHMgdG8gc3VwcG9ydCBtb3ZlCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0vL2lmXwotdGVtcGxhdGU8Ym9vbCBDLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgaWZfYwotewotICAgdHlwZWRlZiBUMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IGlmX2M8ZmFsc2UsVDEsVDI+Ci17Ci0gICB0eXBlZGVmIFQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotc3RydWN0IGlmXwotewotICAgdHlwZWRlZiB0eXBlbmFtZSBpZl9jPDAgIT0gVDE6OnZhbHVlLCBUMiwgVDM+Ojp0eXBlIHR5cGU7Ci19OwotCi0vL2VuYWJsZV9pZl8KLXRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSB2b2lkPgotc3RydWN0IGVuYWJsZV9pZl9jCi17Ci0gICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGVuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSB2b2lkPgotc3RydWN0IGVuYWJsZV9pZiA6IHB1YmxpYyBlbmFibGVfaWZfYzxDb25kOjp2YWx1ZSwgVD4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBDb25kLCBjbGFzcyBUID0gdm9pZD4KLXN0cnVjdCBkaXNhYmxlX2lmIDogcHVibGljIGVuYWJsZV9pZl9jPCFDb25kOjp2YWx1ZSwgVD4ge307Ci0KLS8vaW50ZWdyYWxfY29uc3RhbnQKLXRlbXBsYXRlPGNsYXNzIFQsIFQgdj4KLXN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudAotewotICAgc3RhdGljIGNvbnN0IFQgdmFsdWUgPSB2OwotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PFQsIHY+IHR5cGU7Ci19OwotCi0vL2lkZW50aXR5Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpZGVudGl0eQotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0vL2lzX2NvbnZlcnRpYmxlCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLWNsYXNzIGlzX2NvbnZlcnRpYmxlCi17Ci0gICB0eXBlZGVmIGNoYXIgdHJ1ZV90OwotICAgY2xhc3MgZmFsc2VfdCB7IGNoYXIgZHVtbXlbMl07IH07Ci0gICBzdGF0aWMgdHJ1ZV90IGRpc3BhdGNoKFUpOwotICAgc3RhdGljIGZhbHNlX3QgZGlzcGF0Y2goLi4uKTsKLSAgIHN0YXRpYyBUICZ0cmlnZ2VyKCk7Ci0gICBwdWJsaWM6Ci0gICBlbnVtIHsgdmFsdWUgPSBzaXplb2YoZGlzcGF0Y2godHJpZ2dlcigpKSkgPT0gc2l6ZW9mKHRydWVfdCkgfTsKLX07Ci0KLS8vYW5kXyBub3RfCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uZGl0aW9uMSwgdHlwZW5hbWUgQ29uZGl0aW9uMiwgdHlwZW5hbWUgQ29uZGl0aW9uMyA9IGludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+ID4KLXN0cnVjdCBhbmRfCi0gICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCBDb25kaXRpb24xOjp2YWx1ZSAmJiBDb25kaXRpb24yOjp2YWx1ZSAmJiBDb25kaXRpb24zOjp2YWx1ZT4KLXt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQm9vbGVhbj4KLXN0cnVjdCBub3RfCi0gICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxib29sLCAhQm9vbGVhbjo6dmFsdWU+Ci17fTsKLQotLy9pc19sdmFsdWVfcmVmZXJlbmNlCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGlzX2x2YWx1ZV9yZWZlcmVuY2UKLSAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIGZhbHNlPgote307Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbHZhbHVlX3JlZmVyZW5jZTxUJj4KLSAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci17fTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpc19jbGFzc19vcl91bmlvbgotewotICAgc3RydWN0IHR3b2NoYXIgeyBjaGFyIF9bMl07IH07Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KLSAgIHN0YXRpYyBjaGFyIGlzX2NsYXNzX29yX3VuaW9uX3Rlc3Rlcih2b2lkKFU6OiopKHZvaWQpKTsKLSAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgc3RhdGljIHR3b2NoYXIgaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKC4uLik7Ci0gICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihpc19jbGFzc19vcl91bmlvbl90ZXN0ZXI8VD4oMCkpID09IHNpemVvZihjaGFyKTsKLX07Ci0KLXN0cnVjdCBlbXB0eXt9OwotCi0vL2FkZHJlc3NvZgotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZHJfaW1wbF9yZWYKLXsKLSAgIFQgJiB2XzsKLSAgIGlubGluZSBhZGRyX2ltcGxfcmVmKCBUICYgdiApOiB2XyggdiApIHt9Ci0gICBpbmxpbmUgb3BlcmF0b3IgVCYgKCkgY29uc3QgeyByZXR1cm4gdl87IH0KLQotICAgcHJpdmF0ZToKLSAgIGFkZHJfaW1wbF9yZWYgJiBvcGVyYXRvcj0oY29uc3QgYWRkcl9pbXBsX3JlZiAmKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRyZXNzb2ZfaW1wbAotewotICAgc3RhdGljIGlubGluZSBUICogZiggVCAmIHYsIGxvbmcgKQotICAgewotICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KAotICAgICAgICAgJmNvbnN0X2Nhc3Q8Y2hhciY+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9sYXRpbGUgY2hhciAmPih2KSkpOwotICAgfQotCi0gICBzdGF0aWMgaW5saW5lIFQgKiBmKCBUICogdiwgaW50ICkKLSAgIHsgIHJldHVybiB2OyAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBUICogYWRkcmVzc29mKCBUICYgdiApCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmFkZHJlc3NvZl9pbXBsPFQ+OjpmCi0gICAgICAoIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjphZGRyX2ltcGxfcmVmPFQ+KCB2ICksIDAgKTsKLX0KLQotfSAgLy9uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotfSAgLy9uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9ERVRBSUxfTUVUQV9VVElMU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWQxYTg0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbW92ZS9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTggKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMTItMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUKLQotI2lmbmRlZiBORE5CT09TVF9NT1ZFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9NT1ZFX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwPgotI2luY2x1ZGUgPGl0ZXJhdG9yPiAgLy9zdGQ6Oml0ZXJhdG9yCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfaXRlcmF0b3IKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIENsYXNzIHRlbXBsYXRlIG1vdmVfaXRlcmF0b3IgaXMgYW4gaXRlcmF0b3IgYWRhcHRvciB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yCi0vLyEgYXMgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgZXhjZXB0IHRoYXQgaXRzIGRlcmVmZXJlbmNlIG9wZXJhdG9yIGltcGxpY2l0bHkKLS8vISBjb252ZXJ0cyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IncyBkZXJlZmVyZW5jZSBvcGVyYXRvcgotLy8hIHRvIGFuIHJ2YWx1ZSByZWZlcmVuY2UuIFNvbWUgZ2VuZXJpYyBhbGdvcml0aG1zIGNhbiBiZSBjYWxsZWQgd2l0aCBtb3ZlCi0vLyEgaXRlcmF0b3JzIHRvIHJlcGxhY2UgY29weWluZyB3aXRoIG1vdmluZy4KLXRlbXBsYXRlIDxjbGFzcyBJdD4KLWNsYXNzIG1vdmVfaXRlcmF0b3IKLXsKLSAgIHB1YmxpYzoKLSAgIHR5cGVkZWYgSXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPGl0ZXJhdG9yX3R5cGU+Ojp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90eXBlOwotICAgI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotICAgdHlwZWRlZiB2YWx1ZV90eXBlICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgI2Vsc2UKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlmXwotICAgICAgPCA6Om5kbmJvb3N0OjpoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDx2YWx1ZV90eXBlPgotICAgICAgLCA6Om5kbmJvb3N0Ojpydjx2YWx1ZV90eXBlPiYKLSAgICAgICwgdmFsdWVfdHlwZSAmID46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICNlbmRpZgotICAgdHlwZWRlZiBJdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8aXRlcmF0b3JfdHlwZT46OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8aXRlcmF0b3JfdHlwZT46Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICBtb3ZlX2l0ZXJhdG9yKCkKLSAgIHt9Ci0KLSAgIGV4cGxpY2l0IG1vdmVfaXRlcmF0b3IoSXQgaSkKLSAgICAgIDogIG1faXQoaSkKLSAgIHt9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBVPgotICAgbW92ZV9pdGVyYXRvcihjb25zdCBtb3ZlX2l0ZXJhdG9yPFU+JiB1KQotICAgICAgOiAgbV9pdCh1LmJhc2UoKSkKLSAgIHt9Ci0KLSAgIGl0ZXJhdG9yX3R5cGUgYmFzZSgpIGNvbnN0Ci0gICB7ICByZXR1cm4gbV9pdDsgICB9Ci0KLSAgIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdAotICAgewotICAgICAgI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpIHx8IGRlZmluZWQoTkROQk9PU1RfTU9WRV9PTERfUlZBTFVFX1JFRl9CSU5ESU5HX1JVTEVTKQotICAgICAgcmV0dXJuICptX2l0OwotICAgICAgI2Vsc2UKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlKCptX2l0KTsKLSAgICAgICNlbmRpZgotICAgfQotCi0gICBwb2ludGVyICAgb3BlcmF0b3ItPigpIGNvbnN0Ci0gICB7ICByZXR1cm4gbV9pdDsgICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgeyAgKyttX2l0OyByZXR1cm4gKnRoaXM7ICAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yX3R5cGU+ICBvcGVyYXRvcisrKGludCkKLSAgIHsgIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4gdG1wKCp0aGlzKTsgKysoKnRoaXMpOyByZXR1cm4gdG1wOyAgIH0KLQotICAgbW92ZV9pdGVyYXRvciYgb3BlcmF0b3ItLSgpCi0gICB7ICAtLW1faXQ7IHJldHVybiAqdGhpczsgICB9Ci0KLSAgIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4gIG9wZXJhdG9yLS0oaW50KQotICAgeyAgbW92ZV9pdGVyYXRvcjxpdGVyYXRvcl90eXBlPiB0bXAoKnRoaXMpOyAtLSgqdGhpcyk7IHJldHVybiB0bXA7ICAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yX3R5cGU+ICBvcGVyYXRvcisgKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdAotICAgeyAgcmV0dXJuIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4obV9pdCArIG4pOyAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yJiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBuKQotICAgeyAgbV9pdCArPSBuOyByZXR1cm4gKnRoaXM7ICAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yPGl0ZXJhdG9yX3R5cGU+ICBvcGVyYXRvci0gKGRpZmZlcmVuY2VfdHlwZSBuKSBjb25zdAotICAgeyAgcmV0dXJuIG1vdmVfaXRlcmF0b3I8aXRlcmF0b3JfdHlwZT4obV9pdCAtIG4pOyAgfQotCi0gICBtb3ZlX2l0ZXJhdG9yJiBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBuKQotICAgeyAgbV9pdCAtPSBuOyByZXR1cm4gKnRoaXM7ICAgfQotCi0gICByZWZlcmVuY2Ugb3BlcmF0b3JbXShkaWZmZXJlbmNlX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX01PVkVfT0xEX1JWQUxVRV9SRUZfQklORElOR19SVUxFUykKLSAgICAgIHJldHVybiBtX2l0W25dOwotICAgICAgI2Vsc2UKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0Ojptb3ZlKG1faXRbbl0pOwotICAgICAgI2VuZGlmCi0gICB9Ci0KLSAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSA9PSB5LmJhc2UoKTsgIH0KLQotICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpICE9IHkuYmFzZSgpOyAgfQotCi0gICBmcmllbmQgYm9vbCBvcGVyYXRvcjwgKGNvbnN0IG1vdmVfaXRlcmF0b3ImIHgsIGNvbnN0IG1vdmVfaXRlcmF0b3ImIHkpCi0gICB7ICByZXR1cm4geC5iYXNlKCkgPCB5LmJhc2UoKTsgICB9Ci0KLSAgIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSA8PSB5LmJhc2UoKTsgIH0KLQotICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+IChjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4LCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB5KQotICAgeyAgcmV0dXJuIHguYmFzZSgpID4geS5iYXNlKCk7ICB9Ci0KLSAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSA+PSB5LmJhc2UoKTsgIH0KLQotICAgZnJpZW5kIGRpZmZlcmVuY2VfdHlwZSBvcGVyYXRvci0oY29uc3QgbW92ZV9pdGVyYXRvciYgeCwgY29uc3QgbW92ZV9pdGVyYXRvciYgeSkKLSAgIHsgIHJldHVybiB4LmJhc2UoKSAtIHkuYmFzZSgpOyAgIH0KLQotICAgZnJpZW5kIG1vdmVfaXRlcmF0b3Igb3BlcmF0b3IrKGRpZmZlcmVuY2VfdHlwZSBuLCBjb25zdCBtb3ZlX2l0ZXJhdG9yJiB4KQotICAgeyAgcmV0dXJuIG1vdmVfaXRlcmF0b3IoeC5iYXNlKCkgKyBuKTsgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICBJdCBtX2l0OwotfTsKLQotLy9pc19tb3ZlX2l0ZXJhdG9yCi1uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19tb3ZlX2l0ZXJhdG9yCi0gICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci17Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19tb3ZlX2l0ZXJhdG9yPCA6Om5kbmJvb3N0Ojptb3ZlX2l0ZXJhdG9yPEk+ID4KLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPgotewotfTsKLQotfSAgLy9uYW1lc3BhY2UgbW92ZV9kZXRhaWwgewotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX2l0ZXJhdG9yCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIQotLy8hIDxiPlJldHVybnM8L2I+OiBtb3ZlX2l0ZXJhdG9yPEl0PihpKS4KLXRlbXBsYXRlPGNsYXNzIEl0PgotaW5saW5lIG1vdmVfaXRlcmF0b3I8SXQ+IG1ha2VfbW92ZV9pdGVyYXRvcihjb25zdCBJdCAmaXQpCi17ICByZXR1cm4gbW92ZV9pdGVyYXRvcjxJdD4oaXQpOyB9Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3IKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0vLyEgQSBtb3ZlIGluc2VydCBpdGVyYXRvciB0aGF0IG1vdmUgY29uc3RydWN0cyBlbGVtZW50cyBhdCB0aGUKLS8vISBiYWNrIG9mIGEgY29udGFpbmVyCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1jbGFzcyBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4KLXsKLSAgIEMqIGNvbnRhaW5lcl9tOwotCi0gICBwdWJsaWM6Ci0gICB0eXBlZGVmIEMgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJlZmVyZW5jZSAgICByZWZlcmVuY2U7Ci0KLSAgIGV4cGxpY2l0IGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3IoQyYgeCkgOiBjb250YWluZXJfbSgmeCkgeyB9Ci0KLSAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yPShyZWZlcmVuY2UgeCkKLSAgIHsgY29udGFpbmVyX20tPnB1c2hfYmFjayhuZG5ib29zdDo6bW92ZSh4KSk7IHJldHVybiAqdGhpczsgfQotCi0gICBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICB7ICByZWZlcmVuY2UgcnggPSB4OyByZXR1cm4gdGhpcy0+b3BlcmF0b3I9KHJ4KTsgIH0KLQotICAgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3IqKCkgICAgIHsgcmV0dXJuICp0aGlzOyB9Ci0gICBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQotfTsKLQotLy8hCi0vLyEgPGI+UmV0dXJuczwvYj46IGJhY2tfbW92ZV9pbnNlcnRfaXRlcmF0b3I8Qz4oeCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1pbmxpbmUgYmFja19tb3ZlX2luc2VydF9pdGVyYXRvcjxDPiBiYWNrX21vdmVfaW5zZXJ0ZXIoQyYgeCkKLXsKLSAgIHJldHVybiBiYWNrX21vdmVfaW5zZXJ0X2l0ZXJhdG9yPEM+KHgpOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvcgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgQSBtb3ZlIGluc2VydCBpdGVyYXRvciB0aGF0IG1vdmUgY29uc3RydWN0cyBlbGVtZW50cyBpbnQgdGhlCi0vLyEgZnJvbnQgb2YgYSBjb250YWluZXIKLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWNsYXNzIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZD4KLXsKLSAgIEMqIGNvbnRhaW5lcl9tOwotCi1wdWJsaWM6Ci0gICB0eXBlZGVmIEMgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6dmFsdWVfdHlwZSAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEM6OnJlZmVyZW5jZSAgICByZWZlcmVuY2U7Ci0KLSAgIGV4cGxpY2l0IGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yKEMmIHgpIDogY29udGFpbmVyX20oJngpIHsgfQotCi0gICBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KHJlZmVyZW5jZSB4KQotICAgeyBjb250YWluZXJfbS0+cHVzaF9mcm9udChuZG5ib29zdDo6bW92ZSh4KSk7IHJldHVybiAqdGhpczsgfQotCi0gICBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KE5ETkJPT1NUX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgeyAgcmVmZXJlbmNlIHJ4ID0geDsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yPShyeCk7ICB9Ci0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSAgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIGZyb250X21vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KLX07Ci0KLS8vIQotLy8hIDxiPlJldHVybnM8L2I+OiBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiAvLyBDIG1vZGVscyBDb250YWluZXIKLWlubGluZSBmcm9udF9tb3ZlX2luc2VydF9pdGVyYXRvcjxDPiBmcm9udF9tb3ZlX2luc2VydGVyKEMmIHgpCi17Ci0gICByZXR1cm4gZnJvbnRfbW92ZV9pbnNlcnRfaXRlcmF0b3I8Qz4oeCk7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydF9tb3ZlX2l0ZXJhdG9yCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1jbGFzcyBtb3ZlX2luc2VydF9pdGVyYXRvcgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQ+Ci17Ci0gICBDKiBjb250YWluZXJfbTsKLSAgIHR5cGVuYW1lIEM6Oml0ZXJhdG9yIHBvc187Ci0KLSAgIHB1YmxpYzoKLSAgIHR5cGVkZWYgQyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBDOjp2YWx1ZV90eXBlICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQzo6cmVmZXJlbmNlICAgIHJlZmVyZW5jZTsKLQotICAgZXhwbGljaXQgbW92ZV9pbnNlcnRfaXRlcmF0b3IoQyYgeCwgdHlwZW5hbWUgQzo6aXRlcmF0b3IgcG9zKQotICAgICAgOiBjb250YWluZXJfbSgmeCksIHBvc18ocG9zKQotICAge30KLQotICAgbW92ZV9pbnNlcnRfaXRlcmF0b3ImIG9wZXJhdG9yPShyZWZlcmVuY2UgeCkKLSAgIHsKLSAgICAgIHBvc18gPSBjb250YWluZXJfbS0+aW5zZXJ0KHBvc18sIDo6bmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgKytwb3NfOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotCi0gICBtb3ZlX2luc2VydF9pdGVyYXRvciYgb3BlcmF0b3I9KE5ETkJPT1NUX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgeyAgcmVmZXJlbmNlIHJ4ID0geDsgcmV0dXJuIHRoaXMtPm9wZXJhdG9yPShyeCk7ICB9Ci0KLSAgIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSAgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgICAgeyByZXR1cm4gKnRoaXM7IH0KLSAgIG1vdmVfaW5zZXJ0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KLX07Ci0KLS8vIQotLy8hIDxiPlJldHVybnM8L2I+OiBtb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4LCBpdCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQz4gLy8gQyBtb2RlbHMgQ29udGFpbmVyCi1pbmxpbmUgbW92ZV9pbnNlcnRfaXRlcmF0b3I8Qz4gbW92ZV9pbnNlcnRlcihDJiB4LCB0eXBlbmFtZSBDOjppdGVyYXRvciBpdCkKLXsKLSAgIHJldHVybiBtb3ZlX2luc2VydF9pdGVyYXRvcjxDPih4LCBpdCk7Ci19Ci0KLX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX01PVkVfSVRFUkFUT1JfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvbW92ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvbW92ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyN2I2ZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL21vdmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcywgVmljZW50ZSBCb3RldCAyMDA5LgotLy8gKEMpIENvcHlyaWdodCBJb24gR2F6dGFuYWdhIDIwMDktMjAxMi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tb3ZlIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyEgXGZpbGUgbW92ZS5ocHAKLS8vISBBIGdlbmVyYWwgbGlicmFyeSBoZWFkZXIgdGhhdCBpbmNsdWRlcwotLy8hIHRoZSByZXN0IG9mIHRvcC1sZXZlbCBoZWFkZXJzLgotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTU9WRV9NT1ZFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2FsZ29yaXRobS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2VuZC5ocHA+Ci0KLSNlbmRpZiAvLyNpZm5kZWYgTkROQk9PU1RfTU9WRV9NT1ZFX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyNWZkNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwOS0yMDEyLgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21vdmUgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vISBcZmlsZQotCi0jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01PVkVfTU9WRV9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL21ldGFfdXRpbHMuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9jb3JlLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyEgSWYgdGhpcyB0cmFpdCB5aWVsZHMgdG8gdHJ1ZQotLy8hICg8aT5oYXNfdHJpdmlhbF9kZXN0cnVjdG9yX2FmdGVyX21vdmUgJmx0O1QmZ3Q7Ojp2YWx1ZSA9PSB0cnVlPC9pPikKLS8vISBtZWFucyB0aGF0IGlmIFQgaXMgdXNlZCBhcyBhcmd1bWVudCBvZiBhIG1vdmUgY29uc3RydWN0aW9uL2Fzc2lnbm1lbnQsCi0vLyEgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIFQncyBkZXN0cnVjdG9yLgotLy8hIFRoaXMgb3B0aW1pemF0aW9uIHRpcGljYWxseSBpcyB1c2VkIHRvIGltcHJvdmUgY29udGFpbmVycycgcGVyZm9ybWFuY2UuCi0vLyEKLS8vISBCeSBkZWZhdWx0IHRoaXMgdHJhaXQgaXMgdHJ1ZSBpZiB0aGUgdHlwZSBoYXMgdHJpdmlhbCBkZXN0cnVjdG9yLAotLy8hIGV2ZXJ5IGNsYXNzIHNob3VsZCBzcGVjaWFsaXplIHRoaXMgdHJhaXQgaWYgaXQgd2FudHMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZQotLy8hIHdoZW4gaW5zZXJ0ZWQgaW4gY29udGFpbmVycy4KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGhhc190cml2aWFsX2Rlc3RydWN0b3JfYWZ0ZXJfbW92ZQotICAgOiA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+Ci17fTsKLQotLy8hIEJ5IGRlZmF1bHQgdGhpcyB0cmFpdHMgcmV0dXJucyBmYWxzZS4gQ2xhc3NlcyB3aXRoIG5vbi10aHJvd2luZyBtb3ZlIGNvbnN0cnVjdG9yCi0vLyEgYW5kIGFzc2lnbm1lbnQgY2FuIHNwZWNpYWxpemUgdGhpcyB0cmFpdCB0byBvYnRhaW4gc29tZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19tb3ZlCi0gICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+Ci17fTsKLQotbmFtZXNwYWNlIG1vdmVfZGV0YWlsIHsKLQotLy8gQ29kZSBmcm9tIEplZmZyZXkgTGVlIEhlbGxydW5nLCBtYW55IHRoYW5rcwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVD4gc3RydWN0IGZvcndhcmRfdHlwZSB7IHR5cGVkZWYgVCB0eXBlOyB9OwotI2Vsc2UgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgdGVtcGxhdGU8IGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgZm9yd2FyZF90eXBlCi0gICB7IHR5cGVkZWYgY29uc3QgVCAmdHlwZTsgfTsKLQotICAgdGVtcGxhdGU8IGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgZm9yd2FyZF90eXBlPCBuZG5ib29zdDo6cnY8VD4gPgotICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGlzX3J2YWx1ZV9yZWZlcmVuY2UgOiA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgZmFsc2U+IHsgfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGlzX3J2YWx1ZV9yZWZlcmVuY2U8IFQmJiA+IDogOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+IHsgfTsKLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGlzX3J2YWx1ZV9yZWZlcmVuY2U8IG5kbmJvb3N0OjpydjxUPiYgPgotICAgICAgOiAgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHRydWU+Ci0gICB7fTsKLQotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgaXNfcnZhbHVlX3JlZmVyZW5jZTwgY29uc3QgbmRuYm9vc3Q6OnJ2PFQ+JiA+Ci0gICAgICA6IDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCB0cnVlPgotICAge307Ci0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZSB7IHR5cGVkZWYgVCYmIHR5cGU7IH07Ci0jZWxzZSAvLyAjaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICBuYW1lc3BhY2UgZGV0YWlsX2FkZF9ydmFsdWVfcmVmZXJlbmNlCi0gICB7Ci0gICAgICB0ZW1wbGF0ZTwgY2xhc3MgVAotICAgICAgICAgICAgICAsIGJvb2wgZW11bGF0aW9uID0gOjpuZG5ib29zdDo6aGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8VD46OnZhbHVlCi0gICAgICAgICAgICAgICwgYm9vbCBydiAgICAgICAgPSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aXNfcnY8VD46OnZhbHVlICA+Ci0gICAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbCB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgYm9vbCBlbXVsYXRpb24+Ci0gICAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbDwgVCwgZW11bGF0aW9uLCB0cnVlID4geyB0eXBlZGVmIFQgJiB0eXBlOyB9OwotCi0gICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgYm9vbCBydiA+Ci0gICAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbDwgVCwgdHJ1ZSwgcnYgPiB7IHR5cGVkZWYgOjpuZG5ib29zdDo6cnY8VD4mIHR5cGU7IH07Ci0gICB9IC8vIG5hbWVzcGFjZSBkZXRhaWxfYWRkX3J2YWx1ZV9yZWZlcmVuY2UKLQotICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlCi0gICAgICA6IGRldGFpbF9hZGRfcnZhbHVlX3JlZmVyZW5jZTo6YWRkX3J2YWx1ZV9yZWZlcmVuY2VfaW1wbDxUPgotICAgeyB9OwotCi0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8VCAmPgotICAgeyAgdHlwZWRlZiBUICYgdHlwZTsgfTsKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IFQmJiA+ICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSNlbHNlIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCBydjxUPiA+ICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgY29uc3QgcnY8VD4gPiAgICAgICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IHZvbGF0aWxlIHJ2PFQ+ID4gICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCBjb25zdCB2b2xhdGlsZSBydjxUPiA+IHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgcnY8VD4mID4gICAgICAgICAgICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotICAgdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWZlcmVuY2U8IGNvbnN0IHJ2PFQ+JiA+ICAgICAgICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLSAgIHRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHJlbW92ZV9ydmFsdWVfcmVmZXJlbmNlPCB2b2xhdGlsZSBydjxUPiYgPiAgICAgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci0gICB0ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZmVyZW5jZTwgY29uc3Qgdm9sYXRpbGUgcnY8VD4mID57IHR5cGVkZWYgVCB0eXBlOyB9OwotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmFkZF9ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGRlY2x2YWwoKTsKLQotfSAgLy9tb3ZlX2RldGFpbCB7Ci0KLS8vIElkZWFzIGZyb20gQm9vc3QuTW92ZSByZXZpZXcsIEplZmZyZXkgTGVlIEhlbGxydW5nOgotLy8KLS8vLSBUeXBlVHJhaXRzIG1ldGFmdW5jdGlvbnMgaXNfbHZhbHVlX3JlZmVyZW5jZSwgYWRkX2x2YWx1ZV9yZWZlcmVuY2UsIGFuZCByZW1vdmVfbHZhbHVlX3JlZmVyZW5jZSA/Ci0vLyAgUGVyaGFwcyBhZGRfcmVmZXJlbmNlIGFuZCByZW1vdmVfcmVmZXJlbmNlIGNhbiBiZSBtb2RpZmllZCBzbyB0aGF0IHRoZXkgYmVoYXZlIHdydCBlbXVsYXRlZCBydmFsdWUKLS8vICByZWZlcmVuY2VzIHRoZSBzYW1lIGFzIHdydCByZWFsIHJ2YWx1ZSByZWZlcmVuY2VzLCBpLmUuLCBhZGRfcmVmZXJlbmNlPCBydjxUPiYgPiAtPiBUJiByYXRoZXIgdGhhbgotLy8gIHJ2PFQ+JiAoc2luY2UgVCYmICYgLT4gVCYpLgotLy8KLS8vLSBBZGQnbCBUeXBlVHJhaXRzIGhhc19bdHJpdmlhbF9dbW92ZV97Y29uc3RydWN0b3IsYXNzaWdufS4uLj8KLS8vCi0vLy0gQW4gYXNfbHZhbHVlKFQmIHgpIGZ1bmN0aW9uLCB3aGljaCBhbW91bnRzIHRvIGFuIGlkZW50aXR5IG9wZXJhdGlvbiBpbiBDKysweCwgYnV0IHN0cmlwcyBlbXVsYXRlZAotLy8gIHJ2YWx1ZSByZWZlcmVuY2VzIGluIEMrKzAzLiAgVGhpcyBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByZXZlbnQgImFjY2lkZW50YWwgbW92ZXMiLgotCi0KLX0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL2NvbmZpZ19lbmQuaHBwPgotCi0jZW5kaWYgLy8jaWZuZGVmIE5ETkJPT1NUX01PVkVfTU9WRV9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21vdmUvdXRpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYzkxOWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tb3ZlL3V0aWxpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIChDKSBDb3B5cmlnaHQgSW9uIEdhenRhbmFnYSAyMDEyLTIwMTIuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbW92ZSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8hIFxmaWxlCi0KLSNpZm5kZWYgTkROQk9PU1RfTU9WRV9NT1ZFX1VUSUxJVFlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX01PVkVfTU9WRV9VVElMSVRZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbW92ZS9kZXRhaWwvY29uZmlnX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2NvcmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvZGV0YWlsL21ldGFfdXRpbHMuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTU9WRV9ET1hZR0VOX0lOVk9LRUQpCi0KLSAgIG5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgZW5hYmxlX21vdmVfdXRpbGl0eV9lbXVsYXRpb24KLSAgIHsKLSAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKLSAgIH07Ci0gICAgCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgIC8vCi0gICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKCkKLSAgIC8vCi0gICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbmxpbmUgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jCi0gICAgICA8IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uPFQ+Ojp2YWx1ZSAmJiAhaGFzX21vdmVfZW11bGF0aW9uX2VuYWJsZWQ8VD46OnZhbHVlLCBUJj46OnR5cGUKLSAgICAgICAgIG1vdmUoVCYgeCkKLSAgIHsKLSAgICAgIHJldHVybiB4OwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlubGluZSB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6ZW5hYmxlX2lmX2MKLSAgICAgIDwgZW5hYmxlX21vdmVfdXRpbGl0eV9lbXVsYXRpb248VD46OnZhbHVlICYmIGhhc19tb3ZlX2VtdWxhdGlvbl9lbmFibGVkPFQ+Ojp2YWx1ZSwgcnY8VD4mPjo6dHlwZQotICAgICAgICAgbW92ZShUJiB4KQotICAgewotICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxydjxUPiogPig6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6YWRkcmVzc29mKHgpKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBpbmxpbmUgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jCi0gICAgICA8IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uPFQ+Ojp2YWx1ZSAmJiBoYXNfbW92ZV9lbXVsYXRpb25fZW5hYmxlZDxUPjo6dmFsdWUsIHJ2PFQ+Jj46OnR5cGUKLSAgICAgICAgIG1vdmUocnY8VD4mIHgpCi0gICB7Ci0gICAgICByZXR1cm4geDsKLSAgIH0KLQotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAvLwotICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCgpCi0gICAvLwotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW5saW5lIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWZfYwotICAgICAgPCBlbmFibGVfbW92ZV91dGlsaXR5X2VtdWxhdGlvbjxUPjo6dmFsdWUgJiYgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlzX3J2PFQ+Ojp2YWx1ZSwgVCAmPjo6dHlwZQotICAgICAgICAgZm9yd2FyZChjb25zdCB0eXBlbmFtZSA6Om5kbmJvb3N0Ojptb3ZlX2RldGFpbDo6aWRlbnRpdHk8VD46OnR5cGUgJngpCi0gICB7Ci0gICAgICByZXR1cm4gY29uc3RfY2FzdDxUJj4oeCk7Ci0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgaW5saW5lIHR5cGVuYW1lIDo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjplbmFibGVfaWZfYwotICAgICAgPCBlbmFibGVfbW92ZV91dGlsaXR5X2VtdWxhdGlvbjxUPjo6dmFsdWUgJiYgITo6bmRuYm9vc3Q6Om1vdmVfZGV0YWlsOjppc19ydjxUPjo6dmFsdWUsIGNvbnN0IFQgJj46OnR5cGUKLSAgICAgIGZvcndhcmQoY29uc3QgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlkZW50aXR5PFQ+Ojp0eXBlICZ4KQotICAgewotICAgICAgcmV0dXJuIHg7Ci0gICB9Ci0KLSAgIH0gIC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbHNlICAgIC8vI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotCi0gICAjaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUpCi0gICAgICAjaW5jbHVkZSA8dXRpbGl0eT4KLQotICAgICAgbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0gICAgICB1c2luZyA6OnN0ZDo6bW92ZTsKLSAgICAgIHVzaW5nIDo6c3RkOjpmb3J3YXJkOwotCi0gICAgICB9ICAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0gICAjZWxzZSAvLyFORE5CT09TVF9NT1ZFX1VTRV9TVEFOREFSRF9MSUJSQVJZX01PVkUKLQotICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0gICAgICBuYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gICAgICAvLyEgVGhpcyB0cmFpdCdzIGludGVybmFsIGJvb2xlYW4gYHZhbHVlYCBpcyBmYWxzZSBpbiBjb21waWxlcnMgd2l0aCBydmFsdWUgcmVmZXJlbmNlcwotICAgICAgLy8hIGFuZCB0cnVlIGluIGNvbXBpbGVycyB3aXRob3V0IHJ2YWx1ZSByZWZlcmVuY2VzLgotICAgICAgLy8hCi0gICAgICAvLyEgQSB1c2VyIGNhbiBzcGVjaWFsaXplIHRoaXMgdHJhaXQgZm9yIGEgdHlwZSBUIHRvIGZhbHNlIHRvIFNGSU5BRSBvdXQgYG1vdmVgIGFuZCBgZm9yd2FyZGAKLSAgICAgIC8vISBzbyB0aGF0IHRoZSB1c2VyIGNhbiBkZWZpbmUgYSBkaWZmZXJlbnQgbW92ZSBlbXVsYXRpb24gZm9yIHRoYXQgdHlwZSBpbiBuYW1lc3BhY2UgbmRuYm9vc3QKLSAgICAgIC8vISAoZS5nLiBhbm90aGVyIEJvb3N0IGxpYnJhcnkgZm9yIGl0cyB0eXBlcykgYW5kIGF2b2lkIGFueSBvdmVybG9hZCBhbWJpZ3VpdHkuCi0gICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgc3RydWN0IGVuYWJsZV9tb3ZlX3V0aWxpdHlfZW11bGF0aW9uCi0gICAgICB7Ci0gICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotICAgICAgfTsKLQotICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAvLwotICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZQotICAgICAgLy8KLSAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAjaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRCkKLSAgICAgICAgIC8vISBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgd2F5IHRvIGNvbnZlcnQgYSByZWZlcmVuY2UgaW50byBhIHJ2YWx1ZSByZWZlcmVuY2UKLSAgICAgICAgIC8vISBpbiBjb21waWxlcnMgd2l0aCBydmFsdWUgcmVmZXJlbmNlcy4gRm9yIG90aGVyIGNvbXBpbGVycyBjb252ZXJ0cyBUICYgaW50bwotICAgICAgICAgLy8hIDxpPjo6bmRuYm9vc3Q6OnJ2PFQ+ICY8L2k+IHNvIHRoYXQgbW92ZSBlbXVsYXRpb24gaXMgYWN0aXZhdGVkLgotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICBydmFsdWVfcmVmZXJlbmNlIG1vdmUgKGlucHV0X3JlZmVyZW5jZSk7Ci0KLSAgICAgICNlbGlmIGRlZmluZWQoTkROQk9PU1RfTU9WRV9PTERfUlZBTFVFX1JFRl9CSU5ESU5HX1JVTEVTKQotCi0gICAgICAgICAvL09sZCBtb3ZlIGFwcHJvYWNoLCBsdmFsdWVzIGNvdWxkIGJpbmQgdG8gcnZhbHVlIHJlZmVyZW5jZXMKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgaW5saW5lIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgJiYgbW92ZShUJiYgdCkKLSAgICAgICAgIHsgIHJldHVybiB0OyAgIH0KLQotICAgICAgI2Vsc2UgLy9ORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMKLQotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICAgICBpbmxpbmUgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSAmJiBtb3ZlKFQmJiB0KQotICAgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSAmJj4odCk7IH0KLQotICAgICAgI2VuZGlmICAgLy9ORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMKLQotICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAvLwotICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZAotICAgICAgLy8KLSAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KLSAgICAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX01PVkVfRE9YWUdFTl9JTlZPS0VEKQotICAgICAgICAgLy8hIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgbGltaXRlZCBmb3JtIG9mIGZvcndhcmRpbmcgdGhhdCBpcyB1c3VhbGx5IGVub3VnaCBmb3IKLSAgICAgICAgIC8vISBpbi1wbGFjZSBjb25zdHJ1Y3Rpb24gYW5kIGF2b2lkcyB0aGUgZXhwb25lbnRpYWwgb3ZlcmxvYWRpbmcgZm9yCi0gICAgICAgICAvLyEgYWNoaWV2ZSB0aGUgbGltaXRlZCBmb3J3YXJkaW5nIGluIEMrKzAzLgotICAgICAgICAgLy8hCi0gICAgICAgICAvLyEgRm9yIGNvbXBpbGVycyB3aXRoIHJ2YWx1ZSByZWZlcmVuY2VzIHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgcGVyZmVjdCBmb3J3YXJkaW5nLgotICAgICAgICAgLy8hCi0gICAgICAgICAvLyEgT3RoZXJ3aXNlOgotICAgICAgICAgLy8hICogSWYgaW5wdXRfcmVmZXJlbmNlIGJpbmRzIHRvIGNvbnN0IDo6bmRuYm9vc3Q6OnJ2PFQ+ICYgdGhlbiBpdCBvdXRwdXRfcmVmZXJlbmNlIGlzCi0gICAgICAgICAvLyEgICA6Om5kbmJvb3N0OjpydjxUPiAmCi0gICAgICAgICAvLyEKLSAgICAgICAgIC8vISAqIEVsc2UsIG91dHB1dF9yZWZlcmVuY2UgaXMgZXF1YWwgdG8gaW5wdXRfcmVmZXJlbmNlLgotICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IG91dHB1dF9yZWZlcmVuY2UgZm9yd2FyZChpbnB1dF9yZWZlcmVuY2UpOwotICAgICAgI2VsaWYgZGVmaW5lZChORE5CT09TVF9NT1ZFX09MRF9SVkFMVUVfUkVGX0JJTkRJTkdfUlVMRVMpCi0KLSAgICAgICAgIC8vT2xkIG1vdmUgYXBwcm9hY2gsIGx2YWx1ZXMgY291bGQgYmluZCB0byBydmFsdWUgcmVmZXJlbmNlcwotCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgIGlubGluZSBUJiYgZm9yd2FyZCAodHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmlkZW50aXR5PFQ+Ojp0eXBlJiYgdCkKLSAgICAgICAgIHsgIHJldHVybiB0OyAgIH0KLQotICAgICAgI2Vsc2UgLy9PbGQgbW92ZQotCi0gICAgICAgICAvL0ltcGxlbWVudGF0aW9uICM1IGZyb20gTjI5NTEsIHRoYW5rcyB0byBIb3dhcmQgSGlubmFudAotCi0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgICAgICAgIGlubGluZSBUJiYgZm9yd2FyZChVJiYgdAotICAgICAgICAgICAgICwgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgbW92ZV9kZXRhaWw6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlID8gbW92ZV9kZXRhaWw6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VT46OnZhbHVlIDogdHJ1ZT46OnR5cGUgKiA9IDAvKgotICAgICAgICAgICAgICwgdHlwZW5hbWUgOjpuZG5ib29zdDo6bW92ZV9kZXRhaWw6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgbW92ZV9kZXRhaWw6OmlzX2NvbnZlcnRpYmxlCi0gICAgICAgICAgICAgICAgICA8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSosIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUqPjo6dmFsdWU+Ojp0eXBlICogPSAwKi8pCi0gICAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxUJiY+KHQpOyAgIH0KLQotICAgICAgI2VuZGlmICAgLy9ORE5CT09TVF9NT1ZFX0RPWFlHRU5fSU5WT0tFRAotCi0gICAgICB9ICAvL25hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgICNlbmRpZiAgIC8vI2lmIGRlZmluZWQoTkROQk9PU1RfTU9WRV9VU0VfU1RBTkRBUkRfTElCUkFSWV9NT1ZFKQotCi0jZW5kaWYgICAvL05ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL2RldGFpbC9jb25maWdfZW5kLmhwcD4KLQotI2VuZGlmIC8vI2lmbmRlZiBORE5CT09TVF9NT1ZFX01PVkVfVVRJTElUWV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL08xX3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2YTQ2MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX08xX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9PMV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vTzFfc2l6ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyByZXR1cm5zIHNlcXVlbmNlIHNpemUgaWYgaXQncyBhbiBPKDEpIG9wZXJhdGlvbjsgb3RoZXJ3aXNlIHJldHVybnMgLTEKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3QgTzFfc2l6ZQotICAgIDogTzFfc2l6ZV9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgTzFfc2l6ZSwgKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBPMV9zaXplKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX08xX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhOTc4NjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvTzFfc2l6ZV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9PMV9TSVpFX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX08xX1NJWkVfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IE8xX3NpemVfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBPMV9zaXplOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX08xX1NJWkVfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWR2YW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQwMDgzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQURWQU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FEVkFOQ0VfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhZHZhbmNlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FkdmFuY2VfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGVzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25lZ2F0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGZvcndhcmQvYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnMKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGFkdmFuY2VfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsZXNzPCBOLGxvbmdfPDA+ID46OnR5cGUgYmFja3dhcmRfOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwgYmFja3dhcmRfLCBuZWdhdGU8Tj4sIE4gPjo6dHlwZSBvZmZzZXRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBiYWNrd2FyZF8KLSAgICAgICAgICAgICwgYXV4OjphZHZhbmNlX2JhY2t3YXJkPCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQob2Zmc2V0Xyk6OnZhbHVlID4KLSAgICAgICAgICAgICwgYXV4OjphZHZhbmNlX2ZvcndhcmQ8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChvZmZzZXRfKTo6dmFsdWUgPgotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPGZfLEl0ZXJhdG9yPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShJdGVyYXRvcikKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTikKLSAgICA+Ci1zdHJ1Y3QgYWR2YW5jZQotICAgIDogYWR2YW5jZV9pbXBsPCB0eXBlbmFtZSB0YWc8SXRlcmF0b3I+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTxJdGVyYXRvcixOPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICA+Ci1zdHJ1Y3QgYWR2YW5jZV9jCi0gICAgOiBhZHZhbmNlX2ltcGw8IHR5cGVuYW1lIHRhZzxJdGVyYXRvcj46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PEl0ZXJhdG9yLGxvbmdfPE4+ID4KLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBhZHZhbmNlKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FEVkFOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hZHZhbmNlX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMjU4NjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWR2YW5jZV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BRFZBTkNFX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FEVkFOQ0VfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWR2YW5jZV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChhZHZhbmNlKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGFkdmFuY2VfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhZHZhbmNlOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FEVkFOQ0VfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWx3YXlzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Fsd2F5cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYmE2NDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYWx3YXlzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQUxXQVlTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQUxXQVlTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWx3YXlzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFZhbHVlID4gc3RydWN0IGFsd2F5cwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQKLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX05FU1RFRF9ERUZfUEFSQU1TX1RBSUwoMSwgdHlwZW5hbWUgVCwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVmFsdWUgdHlwZTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGFsd2F5cykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BTFdBWVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JjOWQ0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLS8vIGFndXJ0LCAxOS9tYXkvMDQ6IHdvcmthcm91bmQgYSBjb25mbGljdCB3aXRoIDxpc282NDYuaD4gaGVhZGVyJ3MgCi0vLyAnb3InIGFuZCAnYW5kJyBtYWNyb3MsIHNlZSBodHRwOi8vdGlueXVybC5jb20vM2V0Njk7ICdkZWZpbmVkKGFuZCknCi0vLyBoYXMgdG8gYmUgY2hlY2tlZCBpbiBhIHNlcGFyYXRlIGNvbmRpdGlvbiwgb3RoZXJ3aXNlIEdDQyBjb21wbGFpbnMgCi0vLyBhYm91dCAnYW5kJyBiZWluZyBhbiBhbHRlcm5hdGl2ZSB0b2tlbgotI2lmIGRlZmluZWQoX01TQ19WRVIpIAotI2lmbmRlZiBfX0dDQ1hNTF9fCi0jaWYgZGVmaW5lZChhbmQpIAotIyAgIHByYWdtYSBwdXNoX21hY3JvKCJhbmQiKQotIyAgIHVuZGVmIGFuZAotIyAgIGRlZmluZSBhbmQoeCkKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhbmQuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNpZm5kZWYgX19HQ0NYTUxfXwotI2lmIGRlZmluZWQoYW5kKSAKLSMgICBwcmFnbWEgcG9wX21hY3JvKCJhbmQiKQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGFuZF8KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1ZBTFVFMSBmYWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVkFMVUUyIHRydWUKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmQ2NjEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FQUExZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVBQTFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcHBseS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFwcGx5LmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX0RFRl9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICAsIHZhbHVlIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9OX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fUEFSVElBTF9TUEVDX1BBUkFNUyhuLCBwYXJhbSwgZGVmKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJUSUFMX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLSAgICAvKiovCi0gICAgCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9OX1NQRUNfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VOVU0oTkROQk9PU1RfUFBfSU5DKG4pLCBwYXJhbSkgXAotICAgIC8qKi8KLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUpCi0vLyByZWFsIEMrKyB2ZXJzaW9uIGlzIGFscmVhZHkgdGFrZW4gY2FyZSBvZgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotbmFtZXNwYWNlIGF1eCB7Ci0vLyBhcHBseV9jb3VudF9hcmdzCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BSRUZJWCBhcHBseQotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUIG5hCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb3VudF9hcmdzLmhwcD4KLX0KLQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9BUFBMWV9ERUZfUEFSQU1TKHR5cGVuYW1lIFQsIG5hKQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXV4OjphcHBseV9jaG9vc2VyPCAKLSAgICAgICAgICBhdXg6OmFwcGx5X2NvdW50X2FyZ3M8IEFVWDc3ODA3Nl9BUFBMWV9QQVJBTVMoVCkgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgRiwgQVVYNzc4MDc2X0FQUExZX1BBUkFNUyhUKSA+Ojp0eXBlCi17Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9OX1NQRUNfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX05fUEFSVElBTF9TUEVDX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9OX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9ERUZfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZX1BBUkFNUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0KLSMgICBkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXykKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgOiBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8IAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpCi0gICAgICAgID4KLXsKLSNlbHNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8IAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpCi0gICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgTkROQk9PU1RfUFBfSU5DKGlfKQotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXykKLSAgICAgICAgLCAoRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sVCkpCi0gICAgICAgICkKLX07Ci0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXyk8QVVYNzc4MDc2X0FQUExZX05fU1BFQ19QQVJBTVMoaV8sIGludCk+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0jZW5kaWYKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUpCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotI2lmIGlfID09IE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTwgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpID4KLXsKLX07Ci0jZWxzZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYgQVVYNzc4MDc2X0FQUExZX05fUEFSVElBTF9TUEVDX1BBUkFNUyhpXywgVCwgbmEpID4KLSAgICA6IE5ETkJPT1NUX1BQX0NBVChhcHBseSxpXyk8IEYgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKGlfLCBUKSA+Ci17Ci19OwotI2VuZGlmCi0KLSMgICBlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUpCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8aV8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0FQUExZX1BBUkFNUyh0eXBlbmFtZSBUKQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTwKLSAgICAgICAgICAgICAgRiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMoaV8sIFQpCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotI2VuZGlmCi0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19BUFBMWV9URU1QTEFURQotCi0jICAgdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ3N2UwNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVBQTFlfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVBQTFlfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXBwbHlfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGFwcGx5X2Z3ZC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLS8vIGFndXJ0LCAxNS9qYW4vMDI6IHRvcC1sZXZlbCAnYXBwbHknIHRlbXBsYXRlIGdpdmVzIGFuIElDRSBvbiBNU1ZDCi0vLyAoZm9yIGtub3duIHJlYXNvbnMpCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbG9jYWwgbWFjcm8sICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfREVGX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FQUExZX05fQ09NTUFfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICAvKiovCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0FQUExZX1RFTVBMQVRFKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLS8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0FQUExZX0RFRl9QQVJBTVModHlwZW5hbWUgVCwgbmEpCi0gICAgPgotc3RydWN0IGFwcGx5OwotI2Vsc2UKLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IE5ETkJPT1NUX0FVWF9OVFRQX0RFQ0woaW50LCBhcml0eV8pID4gc3RydWN0IGFwcGx5X2Nob29zZXI7Ci19Ci0jZW5kaWYKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fQVBQTFlfVEVNUExBVEUKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfTl9DT01NQV9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfREVGX1BBUkFNUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUFBMWV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9BUFBMWV9OX0NPTU1BX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5LGlfKTsKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTdjMDQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVBQTFlfV1JBUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FQUExZX1dSQVBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcHBseV93cmFwLmhwcCA0OTI3MiAyMDA4LTEwLTExIDA2OjUwOjQ2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6NTA6NDYgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNzIgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19uZXZlcl90cnVlLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYXBwbHlfd3JhcC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JjYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1NQRUNfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VOVU0oTkROQk9PU1RfUFBfSU5DKG4pLCBwYXJhbSkgXAotICAgIC8qKi8KLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVBQTFlfV1JBUF9TUEVDX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUFBMWV9XUkFQX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLQotIyAgIGRlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotLy8gTVNWQyB2ZXJzaW9uCi0KLSNkZWZpbmUgQVVYNzc4MDc2X01TVkNfRFRXX05BTUUgTkROQk9PU1RfUFBfQ0FUKG1zdmNfYXBwbHksaV8pCi0jZGVmaW5lIEFVWDc3ODA3Nl9NU1ZDX0RUV19PUklHSU5BTF9OQU1FIGFwcGx5Ci0jZGVmaW5lIEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWSBpXwotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZHR3LmhwcD4KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKQotewotICAgIC8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIHZjNgotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKG1zdmNfYXBwbHksaV8pPEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotIyAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLS8vIE1XQ1cvQm9ybGFuZCB2ZXJzaW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXBfaW1wbCxpXyk7Ci0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSAtIGlfLCA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwLGlfKQotICAgIDogTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXBfaW1wbCxpXyk8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PEYsaV8+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotIyAgIGVsc2UKLS8vIElTTzk4IEMrKywgd2l0aCBtaW5vciBjb25jZXNzaW9uIHRvIHZjNwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSNpZiBpXyA9PSAwCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLSNlbmRpZgotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXykKLS8vIG1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNy4wCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIFQpID4KLXsKLSNlbHNlCi17ICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIFQpCi0gICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotfTsKLQotI2lmIGlfID09IDAgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8Rix0cnVlXz4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotI2VuZGlmCi0KLSMgICBlbmRpZiAvLyB3b3JrYXJvdW5kcwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykKLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXAsaV8pPEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1NQRUNfUEFSQU1TKGlfLCBpbnQpPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotI2VuZGlmCi0KLSMgICB1bmRlZiBpXwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDIKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0jICAgZGVmaW5lIGpfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKQotCi0jaWYgaV8gPT0gMCAmJiBqXyA9PSAwIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfQkNDNTkwX1dPUktBUk9VTkRTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfQVBQTFkpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCBib29sIEZfaGFzX2FwcGx5ID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwX2JjYiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwgbmEgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDBfYmNiPCBGLCB0cnVlID4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6YXBwbHkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBORE5CT09TVF9QUF9DT01NQV9JRihpXykgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcF9pbXBsLGlfKTwKLSAgICAgICAgICBORE5CT09TVF9NUExfUFBfQUREKGlfLCBqXykKLSAgICAgICAgLCBGCi0gICAgICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIFQpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGFwcGx5X3dyYXBfaW1wbDBfYmNiPCBGLCBhdXg6Omhhc19hcHBseTwgRiA+Ojp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotI2Vsc2UKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGlfKSBBVVg3NzgwNzZfQVBQTFlfV1JBUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChhcHBseV93cmFwX2ltcGwsaV8pPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9BREQoaV8sIGpfKQotICAgICAgICAsIEYKLSAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIEFVWDc3ODA3Nl9BUFBMWV9XUkFQX1BBUkFNUyhpXywgVCkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgQVVYNzc4MDc2X0FQUExZX1dSQVBfUEFSQU1TKGlfLCBUKQotI2lmIGlfID09IDAgJiYgal8gPT0gMAotLy8vIHNpbmNlIHRoZSBkZWZhdWx0cyBhcmUgImxvc3QiLCB3ZSBoYXZlIHRvIHBhc3MgKnNvbWV0aGluZyogZXZlbiBmb3IgbnVsbGFyeQotLy8vIG1ldGFmdW5jdGlvbiBjbGFzc2VzCi0gICAgICAgIG5hCi0jZWxzZQotICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9BTkQoaV8sIGpfKSkgTkROQk9PU1RfTVBMX1BQX0VOVU0oal8sIG5hKQotI2VuZGlmCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jICAgdW5kZWYgal8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwMTY0YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVJHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVJHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXJnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX2Fzc2VydC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdHlfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJnX3R5cGVkZWYuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhcmcuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLS8vIGxvY2FsIG1hY3JvLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVMocGFyYW0sdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVMocGFyYW0sdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2FyZy5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVMKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUkdfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGlfID4gMAotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8aV8+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBpXyk7Ci0gICAgdHlwZWRlZiBhcmc8TkROQk9PU1RfUFBfSU5DKGlfKT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIEFVWDc3ODA3Nl9BUkdfTl9ERUZBVUxUX1BBUkFNUyh0eXBlbmFtZSBVLCBuYSkKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoVSxpXykgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8LTE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfQVJHX05fREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVSwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gaV8gPiAwCi0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXJnX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmdfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRjOGVlMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hcmdfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVJHX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FSR19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcmdfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiBzdHJ1Y3QgYXJnOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGFyZykKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BUkdfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXNzZXJ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Fzc2VydC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZDVkZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXNzZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FTU0VSVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA2Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFzc2VydC5ocHAgODQ0NDIgMjAxMy0wNS0yMyAxNDozODoyMlogc3RldmVuX3dhdGFuYWJlICQKLS8vICREYXRlOiAyMDEzLTA1LTIzIDA3OjM4OjIyIC0wNzAwIChUaHUsIDIzIE1heSAyMDEzKSAkCi0vLyAkUmV2aXNpb246IDg0NDQyICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25lc3RlZF90eXBlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9udHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3BwX2NvdW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gbWFrZSBzdXJlICdzaXplX3QnIGlzIHBsYWNlZCBpbnRvICdzdGQnCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTcwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgXAotICAgIHx8IChORE5CT09TVF9NUExfQ0ZHX0dDQyAhPSAwKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8PSA2MDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX1VTRV9SRUxBVElPTl9OQU1FUwotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMjAyKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUgotI2VuZGlmCi0KLS8vIGFndXJ0LCAxMC9ub3YvMDY6IHVzZSBlbnVtcyBmb3IgQm9ybGFuZCAod2hpY2ggY2Fubm90IGNvcGUgd2l0aCBzdGF0aWMgY29uc3RhbnRzKSAKLS8vIGFuZCBHQ0MgKHdoaWNoIGlzc3VlcyAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5ncyB3aGVuIHN0YXRpYyBjb25zdGFudHMgYXJlIHVzZWQgCi0vLyBhdCBhIGZ1bmN0aW9uIHNjb3BlKQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgfHwgKE5ETkJPT1NUX01QTF9DRkdfR0NDICE9IDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKFQsIGV4cHIpIGVudW0geyBleHByIH0KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKFQsIGV4cHIpIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCBleHByKQotI2VuZGlmCi0KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi1zdHJ1Y3QgZmFpbGVkIHt9OwotCi0vLyBhZ3VydCwgMjQvYXVnLzA0OiBNU1ZDIDcuMSB3b3JrYXJvdW5kIGhlcmUgYW5kIGJlbG93OiByZXR1cm4vYWNjZXB0IAotLy8gJ2Fzc2VydDxmYWxzZT4nIGJ5IHJlZmVyZW5jZTsgY2FuJ3QgYXBwbHkgaXQgdW5jb25kaXRpb25hbGx5IC0tIGFwcGFyZW50bHkgaXQKLS8vIGRlZ3JhZGVzIHRoZSBxdWFsaXR5IG9mIEdDQyBkaWFnbm9zdGljcwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FTU0VSVF9BUkcoeCkgeCYKLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BU1NFUlRfQVJHKHgpIHgKLSNlbmRpZgotCi10ZW1wbGF0ZTwgYm9vbCBDID4gIHN0cnVjdCBhc3NlcnQgICAgICAgIHsgdHlwZWRlZiB2b2lkKiB0eXBlOyB9OwotdGVtcGxhdGU8PiAgICAgICAgICBzdHJ1Y3QgYXNzZXJ0PGZhbHNlPiB7IHR5cGVkZWYgQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0KSB0eXBlOyB9OwotCi10ZW1wbGF0ZTwgYm9vbCBDID4KLWludCBhc3NlcnRpb25fZmFpbGVkKCB0eXBlbmFtZSBhc3NlcnQ8Qz46OnR5cGUgKTsKLQotdGVtcGxhdGU8IGJvb2wgQyA+Ci1zdHJ1Y3QgYXNzZXJ0aW9uCi17Ci0gICAgc3RhdGljIGludCBmYWlsZWQoIGFzc2VydDxmYWxzZT4gKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhc3NlcnRpb248dHJ1ZT4KLXsKLSAgICBzdGF0aWMgaW50IGZhaWxlZCggdm9pZCogKTsKLX07Ci0KLXN0cnVjdCBhc3NlcnRfCi17Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEgPiBzdHJ1Y3QgdHlwZXMge307Ci0jZW5kaWYKLSAgICBzdGF0aWMgYXNzZXJ0XyBjb25zdCBhcmc7Ci0gICAgZW51bSByZWxhdGlvbnMgeyBlcXVhbCA9IDEsIG5vdF9lcXVhbCwgZ3JlYXRlciwgZ3JlYXRlcl9lcXVhbCwgbGVzcywgbGVzc19lcXVhbCB9OwotfTsKLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19BU1NFUlRfVVNFX1JFTEFUSU9OX05BTUVTKQotCi1ib29sIG9wZXJhdG9yPT0oIGZhaWxlZCwgZmFpbGVkICk7Ci1ib29sIG9wZXJhdG9yIT0oIGZhaWxlZCwgZmFpbGVkICk7Ci1ib29sIG9wZXJhdG9yPiggZmFpbGVkLCBmYWlsZWQgKTsKLWJvb2wgb3BlcmF0b3I+PSggZmFpbGVkLCBmYWlsZWQgKTsKLWJvb2wgb3BlcmF0b3I8KCBmYWlsZWQsIGZhaWxlZCApOwotYm9vbCBvcGVyYXRvcjw9KCBmYWlsZWQsIGZhaWxlZCApOwotCi0jaWYgZGVmaW5lZChfX0VER19WRVJTSU9OX18pCi10ZW1wbGF0ZTwgYm9vbCAoKikoZmFpbGVkLCBmYWlsZWQpLCBsb25nIHgsIGxvbmcgeSA+IHN0cnVjdCBhc3NlcnRfcmVsYXRpb24ge307Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgsIHksIHIpIGFzc2VydF9yZWxhdGlvbjxyLHgseT4KLSNlbHNlCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgeCksIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIHkpLCBib29sICgqKShmYWlsZWQsIGZhaWxlZCkgPiAKLXN0cnVjdCBhc3NlcnRfcmVsYXRpb24ge307Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgsIHksIHIpIGFzc2VydF9yZWxhdGlvbjx4LHkscj4KLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9VU0VfUkVMQVRJT05fTkFNRVMKLQotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8MT46OnR5cGUgb3BlcmF0b3I9PSggYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8Mj46OnR5cGUgb3BlcmF0b3IhPSggYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8Mz46OnR5cGUgb3BlcmF0b3I+KCAgYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8ND46OnR5cGUgb3BlcmF0b3I+PSggYXNzZXJ0XywgYXNzZXJ0XyApOwotbmRuYm9vc3Q6Om1wbDo6YXV4Ojp3ZWlnaHRlZF90YWc8NT46OnR5cGUgb3BlcmF0b3I8KCBhc3NlcnRfLCBhc3NlcnRfICk7Ci1uZG5ib29zdDo6bXBsOjphdXg6OndlaWdodGVkX3RhZzw2Pjo6dHlwZSBvcGVyYXRvcjw9KCBhc3NlcnRfLCBhc3NlcnRfICk7Ci0KLXRlbXBsYXRlPCBhc3NlcnRfOjpyZWxhdGlvbnMgciwgbG9uZyB4LCBsb25nIHkgPiBzdHJ1Y3QgYXNzZXJ0X3JlbGF0aW9uIHt9OwotCi0jZW5kaWYgCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDE3MDApCi0KLXRlbXBsYXRlPGNsYXNzIFByZWQ+Ci1zdHJ1Y3QgZXh0cmFjdF9hc3NlcnRfcHJlZDsKLQotdGVtcGxhdGU8Y2xhc3MgUHJlZD4KLXN0cnVjdCBleHRyYWN0X2Fzc2VydF9wcmVkPHZvaWQoUHJlZCk+IHsgdHlwZWRlZiBQcmVkIHR5cGU7IH07Ci0KLXRlbXBsYXRlPGNsYXNzIFByZWQ+Ci1zdHJ1Y3QgZXZhbF9hc3NlcnQgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZXh0cmFjdF9hc3NlcnRfcHJlZDxQcmVkPjo6dHlwZSBQOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6dHlwZSBwX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjptcGw6OmlmX2M8cF90eXBlOjp2YWx1ZSwKLSAgICAgICAgQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0PGZhbHNlPiksCi0gICAgICAgIGZhaWxlZCAqKioqKioqKioqKiogUDo6KioqKioqKioqKioqCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgUHJlZD4KLXN0cnVjdCBldmFsX2Fzc2VydF9ub3QgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZXh0cmFjdF9hc3NlcnRfcHJlZDxQcmVkPjo6dHlwZSBQOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6dHlwZSBwX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjptcGw6OmlmX2M8IXBfdHlwZTo6dmFsdWUsCi0gICAgICAgIEFVWDc3ODA3Nl9BU1NFUlRfQVJHKGFzc2VydDxmYWxzZT4pLAotICAgICAgICBmYWlsZWQgKioqKioqKioqKioqIDo6bmRuYm9vc3Q6Om1wbDo6bm90XzxQPjo6KioqKioqKioqKioqCi0gICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotVCBtYWtlX2Fzc2VydF9hcmcoKTsKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19BU1NFUlRfQlJPS0VOX1BPSU5URVJfVE9fUE9JTlRFUl9UT19NRU1CRVIpCi0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IGFzc2VydF9hcmdfcHJlZF9pbXBsIHsgdHlwZWRlZiBpbnQgdHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IGFzc2VydF9hcmdfcHJlZF9pbXBsPHRydWU+IHsgdHlwZWRlZiB2b2lkKiB0eXBlOyB9OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+IHN0cnVjdCBhc3NlcnRfYXJnX3ByZWQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFA6OnR5cGUgcF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzZXJ0X2FyZ19wcmVkX2ltcGw8IHBfdHlwZTo6dmFsdWUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFAgPiBzdHJ1Y3QgYXNzZXJ0X2FyZ19wcmVkX25vdAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6dHlwZSBwX3R5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIGJvb2wsIHAgPSAhcF90eXBlOjp2YWx1ZSApOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXNzZXJ0X2FyZ19wcmVkX2ltcGw8cD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLWZhaWxlZCAqKioqKioqKioqKiogKFByZWQ6OioqKioqKioqKioqKiAKLSAgICAgIGFzc2VydF9hcmcoIHZvaWQgKCopKFByZWQpLCB0eXBlbmFtZSBhc3NlcnRfYXJnX3ByZWQ8UHJlZD46OnR5cGUgKQotICAgICk7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLWZhaWxlZCAqKioqKioqKioqKiogKG5kbmJvb3N0OjptcGw6Om5vdF88UHJlZD46OioqKioqKioqKioqKiAKLSAgICAgIGFzc2VydF9ub3RfYXJnKCB2b2lkICgqKShQcmVkKSwgdHlwZW5hbWUgYXNzZXJ0X2FyZ19wcmVkX25vdDxQcmVkPjo6dHlwZSApCi0gICAgKTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPgotQVVYNzc4MDc2X0FTU0VSVF9BUkcoYXNzZXJ0PGZhbHNlPikKLWFzc2VydF9hcmcoIHZvaWQgKCopKFByZWQpLCB0eXBlbmFtZSBhc3NlcnRfYXJnX3ByZWRfbm90PFByZWQ+Ojp0eXBlICk7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLUFVWDc3ODA3Nl9BU1NFUlRfQVJHKGFzc2VydDxmYWxzZT4pCi1hc3NlcnRfbm90X2FyZyggdm9pZCAoKikoUHJlZCksIHR5cGVuYW1lIGFzc2VydF9hcmdfcHJlZDxQcmVkPjo6dHlwZSApOwotCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX0JST0tFTl9QT0lOVEVSX1RPX1BPSU5URVJfVE9fTUVNQkVSCi0gICAgICAgIAotdGVtcGxhdGU8IGJvb2wgYywgdHlwZW5hbWUgUHJlZCA+IHN0cnVjdCBhc3NlcnRfYXJnX3R5cGVfaW1wbAotewotICAgIHR5cGVkZWYgZmFpbGVkICAgICAgKioqKioqKioqKioqIFByZWQ6OiogbXdjdzgzX3drbmQ7Ci0gICAgdHlwZWRlZiBtd2N3ODNfd2tuZCAqKioqKioqKioqKioqIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZCA+IHN0cnVjdCBhc3NlcnRfYXJnX3R5cGVfaW1wbDx0cnVlLFByZWQ+Ci17Ci0gICAgdHlwZWRlZiBBVVg3NzgwNzZfQVNTRVJUX0FSRyhhc3NlcnQ8ZmFsc2U+KSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWQgPiBzdHJ1Y3QgYXNzZXJ0X2FyZ190eXBlCi0gICAgOiBhc3NlcnRfYXJnX3R5cGVfaW1wbDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChQcmVkKSk6OnZhbHVlLCBQcmVkID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLXR5cGVuYW1lIGFzc2VydF9hcmdfdHlwZTxQcmVkPjo6dHlwZSAKLWFzc2VydF9hcmcodm9pZCAoKikoUHJlZCksIGludCk7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBQcmVkID4KLXR5cGVuYW1lIGFzc2VydF9hcmdfdHlwZTwgbmRuYm9vc3Q6Om1wbDo6bm90XzxQcmVkPiA+Ojp0eXBlIAotYXNzZXJ0X25vdF9hcmcodm9pZCAoKikoUHJlZCksIGludCk7Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9VU0VfUkVMQVRJT05fTkFNRVMpCi10ZW1wbGF0ZTwgbG9uZyB4LCBsb25nIHksIGJvb2wgKCpyKShmYWlsZWQsIGZhaWxlZCkgPgotdHlwZW5hbWUgYXNzZXJ0X2FyZ190eXBlX2ltcGw8IGZhbHNlLE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgseSxyKSA+Ojp0eXBlCi1hc3NlcnRfcmVsX2FyZyggTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfUkVMQVRJT04oeCx5LHIpICk7Ci0jICAgZWxzZQotdGVtcGxhdGU8IGFzc2VydF86OnJlbGF0aW9ucyByLCBsb25nIHgsIGxvbmcgeSA+Ci10eXBlbmFtZSBhc3NlcnRfYXJnX3R5cGVfaW1wbDwgZmFsc2UsYXNzZXJ0X3JlbGF0aW9uPHIseCx5PiA+Ojp0eXBlCi1hc3NlcnRfcmVsX2FyZyggYXNzZXJ0X3JlbGF0aW9uPHIseCx5PiApOwotIyAgIGVuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUgotCi0jdW5kZWYgQVVYNzc4MDc2X0FTU0VSVF9BUkcKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTcwMCkKLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVCgocHJlZDx4LC4uLj4pKQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlQocHJlZCkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8ZmFsc2U+KCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6Om1ha2VfYXNzZXJ0X2FyZzwgXAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6Om1wbDo6ZXZhbF9hc3NlcnQ8dm9pZCBwcmVkPjo6dHlwZSBcCi0gICAgICAgICAgICAgICAgPigpIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QoKHByZWQ8eCwuLi4+KSkKLQotI2RlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX05PVChwcmVkKSBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRpb25faW5fbGluZV8sTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCkpID0gc2l6ZW9mKCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDxmYWxzZT4oIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6bWFrZV9hc3NlcnRfYXJnPCBcCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjpldmFsX2Fzc2VydF9ub3Q8dm9pZCBwcmVkPjo6dHlwZSBcCi0gICAgICAgICAgICAgICAgPigpIFwKLSAgICAgICAgICAgICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLQotI2Vsc2UKLQotLy8gTkROQk9PU1RfTVBMX0FTU0VSVCgocHJlZDx4LC4uLj4pKQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlQocHJlZCkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8ZmFsc2U+KCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydF9hcmcoICh2b2lkICgqKSBwcmVkKTAsIDEgKSBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0KLS8vIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChwcmVkPHgsLi4uPikpCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKHByZWQpIFwKLWVudW0geyBcCi0gICAgICBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSkgPSBzaXplb2YoIFwKLSAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb248ZmFsc2U+OjpmYWlsZWQoIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X25vdF9hcmcoICh2b2lkICgqKSBwcmVkKTAsIDEgKSBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgKSBcCi19XAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9OT1QocHJlZCkgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpKSA9IHNpemVvZiggXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8ZmFsc2U+KCBcCi0gICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydF9ub3RfYXJnKCAodm9pZCAoKikgcHJlZCkwLCAxICkgXAotICAgICAgICAgICAgKSBcCi0gICAgICAgICkgXAotICAgKSBcCi0vKiovCi0jZW5kaWYKLQotI2VuZGlmCi0KLS8vIE5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oeCwgPT18IT18PD18PHw+PXw+LCB5KQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9VU0VfUkVMQVRJT05fTkFNRVMpCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUikKLS8vIGFndXJ0LCA5L25vdi8wNjogJ2VudW0nIGJlbG93IGlzIGEgd29ya2Fyb3VuZCBmb3IgZ2NjIDQuMC40LzQuMS4xIGJ1Z3MgIzI5NTIyIGFuZCAjMjk1MTgKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTl9JTVBMKGNvdW50ZXIsIHgsIHJlbCwgeSkgICAgICBcCi1lbnVtIHsgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsX3ZhbHVlLGNvdW50ZXIpID0gKHggcmVsIHkpIH07IFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxjb3VudGVyKSA9IHNpemVvZiggXAotICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb25fZmFpbGVkPE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X3JlbF92YWx1ZSxjb3VudGVyKT4oIFwKLSAgICAgICAgICAgIChuZG5ib29zdDo6bXBsOjpmYWlsZWQgKioqKioqKioqKioqICggbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X3JlbGF0aW9uPCBcCi0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjpyZWxhdGlvbnMoIHNpemVvZiggXAotICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydF86OmFyZyByZWwgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0Xzo6YXJnIFwKLSAgICAgICAgICAgICAgICAgICAgKSApIFwKLSAgICAgICAgICAgICAgICAsIHggXAotICAgICAgICAgICAgICAgICwgeSBcCi0gICAgICAgICAgICAgICAgPjo6KioqKioqKioqKioqKSkgMCApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0jICAgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OX0lNUEwoY291bnRlciwgeCwgcmVsLCB5KSAgICBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggXAotICAgICAgc3RkOjpzaXplX3QgXAotICAgICwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0Xzo6YXJnIHJlbCBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjphcmcgXAotICAgICAgICApIFwKLSAgICApOyBcCi1ORE5CT09TVF9NUExfQVVYX0FTU0VSVF9DT05TVEFOVCggYm9vbCwgTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfcmVsX3ZhbHVlLGNvdW50ZXIpID0gKHggcmVsIHkpICk7IFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxjb3VudGVyKSA9IHNpemVvZiggXAotICAgICAgICBuZG5ib29zdDo6bXBsOjphc3NlcnRpb25fZmFpbGVkPE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X3JlbF92YWx1ZSxjb3VudGVyKT4oIFwKLSAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0X3JlbF9hcmcoIG5kbmJvb3N0OjptcGw6OmFzc2VydF9yZWxhdGlvbjwgXAotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0Xzo6cmVsYXRpb25zKE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X3JlbCxjb3VudGVyKSkgXAotICAgICAgICAgICAgICAgICwgeCBcCi0gICAgICAgICAgICAgICAgLCB5IFwKLSAgICAgICAgICAgICAgICA+KCkgKSBcCi0gICAgICAgICAgICApIFwKLSAgICAgICAgKSBcCi0gICAgKSBcCi0vKiovCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVNTRVJUX1JFTEFUSU9OKHgsIHJlbCwgeSkgXAotTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTl9JTVBMKE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUigpLCB4LCByZWwsIHkpIFwKLS8qKi8KLQotI2Vsc2UgLy8gIU5ETkJPT1NUX01QTF9DRkdfQVNTRVJUX1VTRV9SRUxBVElPTl9OQU1FUwotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0FTU0VSVF9CUk9LRU5fUE9JTlRFUl9UT19QT0lOVEVSX1RPX01FTUJFUikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTih4LCByZWwsIHkpIFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSkgPSBzaXplb2YoIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDwoeCByZWwgeSk+KCBuZG5ib29zdDo6bXBsOjphc3NlcnRfcmVsX2FyZyggXAotICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjpORE5CT09TVF9NUExfQVVYX0FTU0VSVF9SRUxBVElPTih4LHksKCZuZG5ib29zdDo6bXBsOjpvcGVyYXRvciByZWwpKSgpIFwKLSAgICAgICAgICAgICkgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotIyAgIGVsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9SRUxBVElPTih4LCByZWwsIHkpIFwKLU5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX0NPTlNUQU5UKCBcCi0gICAgICBzdGQ6OnNpemVfdCBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQobXBsX2Fzc2VydGlvbl9pbl9saW5lXyxORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSkgPSBzaXplb2YoIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0aW9uX2ZhaWxlZDwoeCByZWwgeSk+KCAobmRuYm9vc3Q6Om1wbDo6ZmFpbGVkICoqKioqKioqKioqKiAoIFwKLSAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6Ok5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX1JFTEFUSU9OKHgseSwoJm5kbmJvb3N0OjptcGw6Om9wZXJhdG9yIHJlbCkpOjoqKioqKioqKioqKiopKTAgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotIyAgIGVuZGlmCi0KLSNlbmRpZgotCi0KLS8vIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHKCAocHJlZDx4LC4uLj46OnZhbHVlKSwgVVNFUl9QUk9WSURFRF9NRVNTQUdFLCAodHlwZXM8eCwuLi4+KSApIAotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjAyKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0dfSU1QTCggY291bnRlciwgYywgbXNnLCB0eXBlc18gKSBcCi1zdHJ1Y3QgbXNnOyBcCi10eXBlZGVmIHN0cnVjdCBORE5CT09TVF9QUF9DQVQobXNnLGNvdW50ZXIpIDogbmRuYm9vc3Q6Om1wbDo6YXNzZXJ0XyBcCi17IFwKLSAgICB1c2luZyBuZG5ib29zdDo6bXBsOjphc3NlcnRfOjp0eXBlczsgXAotICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjpmYWlsZWQgKioqKioqKioqKioqIChtc2c6OioqKioqKioqKioqKiBhc3NlcnRfYXJnKCkpIHR5cGVzXyBcCi0gICAgeyByZXR1cm4gMDsgfSBcCi19IE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X2FyZyxjb3VudGVyKTsgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbjwoYyk+OjpmYWlsZWQoIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X2FyZyxjb3VudGVyKTo6YXNzZXJ0X2FyZygpICkgXAotICAgICAgICApIFwKLSAgICApIFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHX0lNUEwoIGNvdW50ZXIsIGMsIG1zZywgdHlwZXNfICkgIFwKLXN0cnVjdCBtc2c7IFwKLXR5cGVkZWYgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChtc2csY291bnRlcikgOiBuZG5ib29zdDo6bXBsOjphc3NlcnRfIFwKLXsgXAotICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjpmYWlsZWQgKioqKioqKioqKioqIChtc2c6OioqKioqKioqKioqKiBhc3NlcnRfYXJnKCkpIHR5cGVzXyBcCi0gICAgeyByZXR1cm4gMDsgfSBcCi19IE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0X2FyZyxjb3VudGVyKTsgXAotTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfQ09OU1RBTlQoIFwKLSAgICAgIHN0ZDo6c2l6ZV90IFwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChtcGxfYXNzZXJ0aW9uX2luX2xpbmVfLGNvdW50ZXIpID0gc2l6ZW9mKCBcCi0gICAgICAgIG5kbmJvb3N0OjptcGw6OmFzc2VydGlvbl9mYWlsZWQ8KGMpPiggTkROQk9PU1RfUFBfQ0FUKG1wbF9hc3NlcnRfYXJnLGNvdW50ZXIpOjphc3NlcnRfYXJnKCkgKSBcCi0gICAgICAgICkgXAotICAgICkgXAotLyoqLwotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FTU0VSVF9NU0coIGMsIG1zZywgdHlwZXNfICkgXAotTkROQk9PU1RfTVBMX0FTU0VSVF9NU0dfSU1QTCggTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCksIGMsIG1zZywgdHlwZXNfICkgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FTU0VSVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNkODk2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2F0X2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTikKLSAgICA+Ci1zdHJ1Y3QgYXQKLSAgICA6IGF0X2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSxOID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsYXQsKFNlcXVlbmNlLE4pKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICA+Ci1zdHJ1Y3QgYXRfYwotICAgIDogYXRfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlLG1wbDo6bG9uZ188Tj4gPgotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGF0KQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F0X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhODAyZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVRfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBhdF9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBOID4gc3RydWN0IGF0OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FUX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vTzFfc2l6ZV9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vTzFfc2l6ZV9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVkYTkyYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL08xX3NpemVfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX08xX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX08xX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IE8xX3NpemVfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIHJldHVybnMgJ1NlcXVlbmNlOjpzaXplJyBpZiBzZXF1ZW5jZSBoYXMgYSAnc2l6ZScKLS8vIG1lbWJlciwgYW5kIC0xIG90aGVyd2lzZTsgY29ucmV0ZSBzZXF1ZW5jZXMgbWlnaHQgb3ZlcnJpZGUgaXQgYnkgCi0vLyBzcGVjaWFsaXppbmcgZWl0aGVyIHRoZSAnTzFfc2l6ZV9pbXBsJyBvciB0aGUgcHJpbWFyeSAnTzFfc2l6ZScgdGVtcGxhdGUKLQotIyAgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKQotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBPMV9zaXplX2ltcGwKLSAgICA6IFNlcXVlbmNlOjpzaXplCi17Ci19OwotfQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBPMV9zaXplX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGlmXzwKLSAgICAgICAgICAgICAgYXV4OjpoYXNfc2l6ZTxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgYXV4OjpPMV9zaXplX2ltcGw8U2VxdWVuY2U+Ci0gICAgICAgICAgICAsIGxvbmdfPC0xPgotICAgICAgICAgICAgPjo6dHlwZQotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgYXV4OjpoYXNfc2l6ZTxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgYXV4OjpPMV9zaXplX2ltcGw8U2VxdWVuY2U+Ci0gICAgICAgICAgICAsIGxvbmdfPC0xPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChsb25nLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIChpZl88Ci0gICAgICAgICAgICAgICAgICBhdXg6Omhhc19zaXplPFNlcXVlbmNlPgotICAgICAgICAgICAgICAgICwgYXV4OjpPMV9zaXplX2ltcGw8U2VxdWVuY2U+Ci0gICAgICAgICAgICAgICAgLCBsb25nXzwtMT4KLSAgICAgICAgICAgICAgICA+Ojp0eXBlOjp2YWx1ZSkKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfTVNWQwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBPMV9zaXplX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwtMT4KLSAgICAgICAgewotICAgICAgICB9OwotfTsKLQotIyAgIGVuZGlmCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTzFfU0laRV9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUzYzRhNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWRsX2JhcnJpZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYWRsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0FETF9CQVJSSUVSX05BTUVTUEFDRSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRSBuZG5ib29zdF9tcGxfCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4gbmFtZXNwYWNlIG5kbmJvb3N0X21wbF8gewotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRSB9Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTCh0eXBlKSBcCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IFwKLSAgICB1c2luZyA6Ok5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjp0eXBlOyBcCi0gICAgfSB9IFwKLS8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi1uYW1lc3BhY2UgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0UgeyBuYW1lc3BhY2UgYXV4IHt9IH0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyB1c2luZyBuYW1lc3BhY2UgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U7IAotbmFtZXNwYWNlIGF1eCB7IHVzaW5nIG5hbWVzcGFjZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6YXV4OyB9Ci19fQotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0UgbmRuYm9vc3Q6Om1wbAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOIG5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRSB9fQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0wodHlwZSkgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU2MjlmMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYNzc4MDc2X0FEVkFOQ0VfQkFDS1dBUkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVg3NzgwNzZfQURWQU5DRV9CQUNLV0FSRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGFkdmFuY2VfYmFja3dhcmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wcmlvci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhZHZhbmNlX2JhY2t3YXJkLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsIDxuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8TkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORz4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVg3NzgwNzZfQURWQU5DRV9CQUNLV0FSRF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0KLSNpZiBpXyA+IDAKLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yIFwKLSAgICAoMywoMSwgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpLCA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotI2VuZGlmCi0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkpIHR5cGU7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotI2VuZGlmCi19OwotCi0jdW5kZWYgaV8KLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAyCi0KLSNlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8wIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMikpKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8xIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKSkKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPEFVWDc3ODA3Nl9JVEVSXzA+Ojp0eXBlIEFVWDc3ODA3Nl9JVEVSXzE7Ci0gICAgICAgIAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSXzEKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVRFUl8wCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTFhMjZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9BRFZBTkNFX0ZPUldBUkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQURWQU5DRV9GT1JXQVJEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWR2YW5jZV9mb3J3YXJkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBhZHZhbmNlX2ZvcndhcmQuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HLCA8bmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikgPiAKLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDxORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HPgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0FEVkFOQ0VfRk9SV0FSRF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLS8vIEZvciBnY2MgNC40IGNvbXBhdGFiaWxpdHksIHdlIG11c3QgaW5jbHVkZSB0aGUKLS8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCB0ZXN0IGluc2lkZSBhbiAjZWxzZSBjbGF1c2UuCi0jZWxzZSAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKLSNpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA9PSAxCi0jZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPCBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLQotI2lmIGlfID4gMAotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgXAotICAgICgzLCgxLCBpXywgPG5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotI2VuZGlmCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsaV8pIHR5cGU7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotI2VuZGlmCi19OwotCi0jdW5kZWYgaV8KLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAyCi0KLSNlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8wIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMikpKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl8xIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKSkKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8QVVYNzc4MDc2X0lURVJfMD46OnR5cGUgQVVYNzc4MDc2X0lURVJfMTsKLSAgICAgICAgCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfMQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSXzAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyZ190eXBlZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJnX3R5cGVkZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDlhOTRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJnX3R5cGVkZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcmdfdHlwZWRlZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotICAgIAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKFQsIG5hbWUpIHR5cGVkZWYgVCBuYW1lOwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYoVCwgbmFtZSkgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcml0aG1ldGljX29wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE3ZDNhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXRobWV0aWNfb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcml0aG1ldGljX29wLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFyZ2VzdF9pbnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBVVg3NzgwNzZfT1BfUFJFRklYKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfUFJFRklYIEFVWDc3ODA3Nl9PUF9OQU1FCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfb3AuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIEFVWDc3ODA3Nl9PUF9QUkVGSVguaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9QUkVGSVgsX3drbmQpCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlID0gKG4xIEFVWDc3ODA3Nl9PUF9UT0tFTiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzxULHZhbHVlPiB0eXBlOwotfTsKLX0KLSNlbmRpZgotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX0lNUExfTkFNRTxpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfVkFMVUVfQVJJVEhNRVRJQykKLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBBVVg3NzgwNzZfT1BfVE9LRU4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0jZWxzZQotICAgICAgICA6IGF1eDo6TkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9QUkVGSVgsX3drbmQpPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0jZW5kaWYKLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSN1bmRlZiBBVVg3NzgwNzZfT1BfVEFHX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX0FSSVRZCi0jdW5kZWYgQVVYNzc4MDc2X09QX1BSRUZJWAotI3VuZGVmIEFVWDc3ODA3Nl9PUF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX1RPS0VOCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjhmNTY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcml0eS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8gYWd1cnQsIDE1L21hci8wMjogaXQncyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhlIHRlbXBsYXRlIHNvIHRoYXQgaXQgd2lsbCAKLS8vICJqdXN0IHdvcmsiIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc3BlY2lhbGl6YXRpb24sIGJ1dCBub3Qgb24gdGhlIGNvbXBpbGVycwotLy8gdGhhdCByZXF1aXJlIHRoZSBhcml0eSB3b3JrYXJvdW5kIGluIHRoZSBmaXJzdCBwbGFjZQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPgotc3RydWN0IGFyaXR5Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBOKTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9hcml0eV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEwZWUxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2FyaXR5X3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXJpdHlfc3BlYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FyaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoaSx0eXBlLG5hbWUpIFwKLW5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGUgVCkgPiBcCi1zdHJ1Y3QgYXJpdHk8IFwKLSAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKSA+IFwKLSAgICAsIE4gXAotICAgID4gXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCBcCi0gICAgICAgICwgdmFsdWUgPSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgKTsgXAotfTsgXAotfSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQyhpLHR5cGUsbmFtZSkgLyoqLwotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKGksbmFtZSkgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKGksdHlwZW5hbWUsbmFtZSkgXAotLyoqLwotCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKGksIG5hbWUpIFwKLW5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFQpID4gXAotc3RydWN0IHRlbXBsYXRlX2FyaXR5PCBuYW1lPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKT4gPiBcCi0gICAgOiBpbnRfPGk+IFwKLXsgXAotfTsgXAotfSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoaSwgbmFtZSkgLyoqLwotI2VuZGlmCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2F0X2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDI4NzMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYXRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9BVF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0FUX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhdF9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FkdmFuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IGNvbnJldGUgc2VxdWVuY2VzIG1pZ2h0IG92ZXJyaWRlIGl0IGJ5IAotLy8gc3BlY2lhbGl6aW5nIGVpdGhlciB0aGUgJ2F0X2ltcGwnIG9yIHRoZSBwcmltYXJ5ICdhdCcgdGVtcGxhdGUKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgYXRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhZHZhbmNlPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiZWdpbjxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgICwgTgotICAgICAgICAgICAgPjo6dHlwZSBpdGVyXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRlcmVmPGl0ZXJfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDIsIGF0X2ltcGwpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0FUX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2JlZ2luX2VuZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYmVnaW5fZW5kX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTU2N2FjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vYmVnaW5fZW5kX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0JFR0lOX0VORF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0JFR0lOX0VORF9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiZWdpbl9lbmRfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotCi1uYW1lc3BhY2UgYXV4IHsgCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IAotc3RydWN0IGJlZ2luX3R5cGUgCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OmJlZ2luIHR5cGU7IAotfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IAotc3RydWN0IGVuZF90eXBlCi17IAotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OmVuZCB0eXBlOyAKLX07Ci0KLX0KLQotLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgY29ucmV0ZSBzZXF1ZW5jZXMgbWlnaHQgb3ZlcnJpZGUgaXQgYnkgCi0vLyBzcGVjaWFsaXppbmcgZWl0aGVyIHRoZSAnYmVnaW5faW1wbC9lbmRfaW1wbCcgb3IgdGhlIHByaW1hcnkgCi0vLyAnYmVnaW4vZW5kJyB0ZW1wbGF0ZXMKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgYmVnaW5faW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPGF1eDo6aGFzX2JlZ2luPFNlcXVlbmNlLCB0cnVlXz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXg6OmJlZ2luX3R5cGU8U2VxdWVuY2U+LCB2b2lkXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgZW5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjxhdXg6Omhhc19iZWdpbjxTZXF1ZW5jZSwgdHJ1ZV8+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4OjplbmRfdHlwZTxTZXF1ZW5jZT4sIHZvaWRfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0vLyBzcGVjaWFsaXplICdiZWdpbl90cmFpdC9lbmRfdHJhaXQnIGZvciB0d28gcHJlLWRlZmluZWQgdGFncwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTVBMX1NQRUMobmFtZSwgdGFnLCByZXN1bHQpIFwKLXRlbXBsYXRlPD4gXAotc3RydWN0IG5hbWUjI19pbXBsPHRhZz4gXAoteyBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IGFwcGx5IFwKLSAgICB7IFwKLSAgICAgICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotICAgIH07IFwKLX07IFwKLS8qKi8KLQotLy8gYSBzZXF1ZW5jZSB3aXRoIG5lc3RlZCAnYmVnaW4vZW5kJyB0eXBlZGVmczsganVzdCBxdWVyeSB0aGVtCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGJlZ2luLCBuZXN0ZWRfYmVnaW5fZW5kX3RhZywgdHlwZW5hbWUgU2VxdWVuY2U6OmJlZ2luKQotQVVYNzc4MDc2X0lNUExfU1BFQyhlbmQsIG5lc3RlZF9iZWdpbl9lbmRfdGFnLCB0eXBlbmFtZSBTZXF1ZW5jZTo6ZW5kKQotCi0vLyBpZiBhIHR5cGUgJ1QnIGRvZXMgbm90IGNvbnRhaW4gJ2JlZ2luL2VuZCcgb3IgJ3RhZycgbWVtYmVycyAKLS8vIGFuZCBkb2Vzbid0IHNwZWNpYWxpemUgZWl0aGVyICdiZWdpbi9lbmQnIG9yICdiZWdpbl9pbXBsL2VuZF9pbXBsJyAKLS8vIHRlbXBsYXRlcywgdGhlbiB3ZSBlbmQgdXAgaGVyZQotQVVYNzc4MDc2X0lNUExfU1BFQyhiZWdpbiwgbm9uX3NlcXVlbmNlX3RhZywgdm9pZF8pCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGVuZCwgbm9uX3NlcXVlbmNlX3RhZywgdm9pZF8pCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGJlZ2luLCBuYSwgdm9pZF8pCi1BVVg3NzgwNzZfSU1QTF9TUEVDKGVuZCwgbmEsIHZvaWRfKQotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lNUExfU1BFQwotCi0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUNfSU1QTCgxLGJlZ2luX2ltcGwpCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoMSxlbmRfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQkVHSU5fRU5EX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NsZWFyX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jbGVhcl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlNTU2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NsZWFyX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ0xFQVJfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DTEVBUl9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY2xlYXJfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyB0aGUgZGVmaW5pdGlvbiBpcyBuZWVkZWQgdG8gbWFrZSBNU1ZDIGhhcHB5Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGNsZWFyX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYXBwbHk7Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDEsIGNsZWFyX2ltcGwpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NMRUFSX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0YTcxYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbW1vbl9uYW1lX3drbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29tbW9uX25hbWVfd2tuZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTYxKQotLy8gYWd1cnQsIDEyL25vdi8wMjogdG8gc3VwcHJlc3MgdGhlIGJvZ3VzICJDYW5ub3QgaGF2ZSBib3RoIGEgdGVtcGxhdGUgY2xhc3MgCi0vLyBhbmQgZnVuY3Rpb24gbmFtZWQgJ3h4eCciIGRpYWdub3N0aWMKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKG5hbWUpIFwKLW5hbWVzcGFjZSBuYW1lXyMjd2tuZCB7IFwKLXRlbXBsYXRlPCB0eXBlbmFtZSA+IHZvaWQgbmFtZSgpOyBcCi19IFwKLS8qKi8KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmFtZSkgLyoqLwotCi0jZW5kaWYgLy8gX19CT1JMQU5EQ19fCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JlZDZhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb21wYXJpc29uX29wLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHA+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9PUF9QUkVGSVgpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9QUkVGSVggQVVYNzc4MDc2X09QX05BTUUKLSNlbmRpZgotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9BUklUWSAyCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udW1lcmljX29wLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBBVVg3NzgwNzZfT1BfUFJFRklYLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBNU1ZDIHdvcmthcm91bmQ6IGltcGxlbWVudCBsZXNzIGluIHRlcm1zIG9mIGdyZWF0ZXIKLSNpZiAwIEFVWDc3ODA3Nl9PUF9UT0tFTiAxICYmICEoMSBBVVg3NzgwNzZfT1BfVE9LRU4gMCkgJiYgISgwIEFVWDc3ODA3Nl9PUF9UT0tFTiAwKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1AoTjEsIE4yKSBcCi0gICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QKE4xLCBOMikgXAotICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgXAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9UT0tFTiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSBcCi0gICAgICAgICkgXAotLyoqLwotI2VuZGlmCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotICAgICAgICA6IGJvb2xfPCBBVVg3NzgwNzZfT1AoTjEsIE4yKSA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IEFVWDc3ODA3Nl9PUChOMSwgTjIpKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi0jdW5kZWYgQVVYNzc4MDc2X09QCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSN1bmRlZiBBVVg3NzgwNzZfT1BfVEFHX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX0FSSVRZCi0jdW5kZWYgQVVYNzc4MDc2X09QX1BSRUZJWAotI3VuZGVmIEFVWDc3ODA3Nl9PUF9OQU1FCi0jdW5kZWYgQVVYNzc4MDc2X09QX1RPS0VOCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hZGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYWRsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3OTRkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hZGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0FETF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQURMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWRsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0vLyBhZ3VydCwgMjUvYXByLzA0OiB0ZWNobmljYWxseSwgdGhlIEFETCB3b3JrYXJvdW5kIGlzIG9ubHkgbmVlZGVkIGZvciBHQ0MsCi0vLyBidXQgcHV0dGluZyBldmVyeXRoaW5nIGV4cGVjdCBwdWJsaWMsIHVzZXItc3BlY2lhbGl6YWJsZSBtZXRhZnVuY3Rpb25zIGludG8KLS8vIGEgc2VwYXJhdGUgZ2xvYmFsIG5hbWVzcGFjZSBoYXMgYSBuaWNlIHNpZGUgZWZmZWN0IG9mIHJlZHVjaW5nIHRoZSBsZW5ndGggCi0vLyBvZiB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIHN5bWJvbHMsIHNvIHdlIGFwcGx5IHRoZSB3b3JrYXJvdW5kIG9uIGFsbCAKLS8vIHBsYXRmb3JtcyB0aGF0IGNhbiBoYW5kbGUgaXQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFKSBcCi0gICAgJiYgKCAgIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE0MDApKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04sIE5ETkJPT1NUX1RFU1RFRF9BVCg4MTApKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0FETF9CQVJSSUVSX05BTUVTUEFDRQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0FETF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FycmF5cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hcnJheXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzFhZjM0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2FycmF5cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQVJSQVlTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19BUlJBWVNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhcnJheXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERVBFTkRFTlRfQVJSQVlfVFlQRVMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgKCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fREVQRU5ERU5UX0FSUkFZX1RZUEVTCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQVJSQVlTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JjYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMzU1NzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19CQ0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0JDQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiY2MuaHBwIDQ5MjcyIDIwMDgtMTAtMTEgMDY6NTA6NDZaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwNC0wOS0wMiAxMDo0MTozNyAtMDUwMCAoVGh1LCAwMiBTZXAgMjAwNCkgJAotLy8gJFJldmlzaW9uOiAyNDg3NCAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQzU5MF9XT1JLQVJPVU5EUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1OTApIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0JDQzU5MF9XT1JLQVJPVU5EUwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0JDQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2OGQ1ODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQklORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiaW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUKLQotI2VuZGlmCi0KLS8vI2RlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQklORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2NvbXBpbGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2NvbXBpbGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ2ZTczYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jb21waWxlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfQ09NUElMRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0NPTVBJTEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29tcGlsZXIuaHBwIDUzMTg5IDIwMDktMDUtMjIgMjA6MDc6NTVaIGhrYWlzZXIgJAotLy8gJERhdGU6IDIwMDktMDUtMjIgMTM6MDc6NTUgLTA3MDAgKEZyaSwgMjIgTWF5IDIwMDkpICQKLS8vICRSZXZpc2lvbjogNTMxODkgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbXN2YzYwCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIG1zdmM3MAotCi0jICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzA0KSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIGdjYwotCi0jICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLSMgICAgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBiY2M1NTEKLSMgICAgICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1OTApCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgYmNjCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0NPTVBJTEVSX0RJUiBiY2NfcHJlNTkwCi0jICAgICAgIGVuZGlmCi0KLSMgICBlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIGRtYwotCi0jICAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pCi0jICAgICAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbXdjdwotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgcGxhaW4KLSMgICAgICAgZW5kaWYKLQotIyAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgbm9fY3RwcwotCi0jICAgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSIG5vX3R0cAotCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIgcGxhaW4KLSMgICBlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0NPTVBJTEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhNTBhMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19DVFBTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19DVFBTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY3Rwcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDU4MikKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDCi0KLSNlbmRpZgotCi0vLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OIGlzIGRlZmluZWQgaW4gPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19DVFBTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2RtY19hbWJpZ3VvdXNfY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOTYyNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZG1jX2FtYmlndW91c19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19ETUNfQU1CSUdVT1VTX0NUUFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0RNQ19BTUJJR1VPVVNfQ1RQU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkbWNfYW1iaWd1b3VzX2N0cHMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0RNQ19BTUJJR1VPVVNfQ1RQUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19ETUNfQU1CSUdVT1VTX0NUUFMKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19ETUNfQU1CSUdVT1VTX0NUUFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZHRwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3NWE5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0RUUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRFRQX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZHRwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0vLyBNV0NXIDcueC04LjAgImxvc3RzIiBkZWZhdWx0IHRlbXBsYXRlIHBhcmFtZXRlcnMgb2YgbmVzdGVkIGNsYXNzIAotLy8gdGVtcGxhdGVzIHdoZW4gdGhlaXIgb3duZXIgY2xhc3NlcyBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBvdGhlciAKLS8vIHRlbXBsYXRlczsgQm9ybGFuZCA1LjUuMSAiZm9yZ2V0cyIgdGhlbSBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZyAoaWYgCi0vLyB0aGUgb3duZXIgY2xhc3MgaXMgYSBjbGFzcyB0ZW1wbGF0ZSksIGFuZCBCb3JsYW5kIDUuNiBpc24ndCBldmVuCi0vLyBhYmxlIHRvIGNvbXBpbGUgYSBkZWZpbml0aW9uIG9mIG5lc3RlZCBjbGFzcyB0ZW1wbGF0ZSB3aXRoIERUUAotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTCi0KLSNlbmRpZgotCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9ERUZBVUxUX1BBUkFNRVRFUlNfSU5fTkVTVEVEX1RFTVBMQVRFUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDMwMDEpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICAgICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTKSBcCi0gICAgICAgICkKLSAgICAgICAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX0RFRkFVTFRfUEFSQU1FVEVSU19JTl9ORVNURURfVEVNUExBVEVTCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfRFRQX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlODkwMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19FVElfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0VUSV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGV0aS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIGZsYWdzIGZvciBNU1ZDIDYuNSdzIHNvLWNhbGxlZCAiZWFybHkgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiBidWciCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcKLQotI2VuZGlmCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcKLQotI2VuZGlmCi0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfRVRJX0JVRykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpIFwKLSAgICAgICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19FVElfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTdlNWVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0ZPUldBUkRJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0ZPUldBUkRJTkdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZm9yd2FyZGluZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0ZPUldBUkRJTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2NDRjMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0dDQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfR0NDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGdjYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19HQ0MgKChfX0dOVUNfXyA8PCA4KSB8IF9fR05VQ19NSU5PUl9fKQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19HQ0MgMAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19HQ0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhkZDE2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX0FQUExZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc19hcHBseS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfeHh4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfQVBQTFkpIFwKLSAgICAmJiAoICAgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDwgMzAwKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMyMDIpKSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX0hBU19BUFBMWQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2hhc194eHguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX3h4eC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOWExMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX3h4eC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX1hYWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSEFTX1hYWF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMi0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc194eHguaHBwIDYzNTE4IDIwMTAtMDctMDIgMDg6MzI6MDNaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAxMC0wNy0wMiAwMTozMjowMyAtMDcwMCAoRnJpLCAwMiBKdWwgMjAxMCkgJAotLy8gJFJldmlzaW9uOiA2MzUxOCAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0vLyBhZ3VydCwgMTEvamFuLzAzOiBzaWduYWxzIGEgc3R1Yi1vbmx5ICdoYXNfeHh4JyBpbXBsZW1lbnRhdGlvbgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYKSBcCi0gICAgJiYgKCAgIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTikgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8PSAyKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWF9URU1QTEFURQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0hBU19YWFhfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNWJmMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVHUkFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19JTlRFR1JBTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19CQ0NfSU5URUdSQUxfQ09OU1RBTlRTCi0KLSNlbmRpZgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfVkFMVUVfQVJJVEhNRVRJQykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgXAotICAgICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjM4KSBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfSU5URUdSQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5N2FiNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19JTlRFTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotCi0vLyBORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiBpcyBkZWZpbmVkIGhlcmU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0lOVEVMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZTFiYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19MQU1CREFfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0xBTUJEQV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotLy8gYWd1cnQsIDE1L2phbi8wMjogZnVsbC1mbGVkZ2VkIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGJvdGggCi0vLyB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIF9hbmRfIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkgXAotICAgICYmICggICBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykgXAotICAgICAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX0xBTUJEQV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmN2ZjYWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTVNWQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfTVNWQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLQotLy8gTkROQk9PU1RfTVNWQyBpcyBkZWZpbmVkIGhlcmU6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX01TVkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjX3R5cGVuYW1lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmNfdHlwZW5hbWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzA2YTk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmNfdHlwZW5hbWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX01TVkNfVFlQRU5BTUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX01TVkNfVFlQRU5BTUVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtc3ZjX3R5cGVuYW1lLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVNWQ19UWVBFTkFNRQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVNWQ19UWVBFTkFNRSB0eXBlbmFtZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19NU1ZDX1RZUEVOQU1FX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbnR0cC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9udHRwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM3NDAxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9udHRwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19OVFRQX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19OVFRQX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnR0cC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIE1TVkMgNi41IElDRS1zIG9uIHRoZSBjb2RlIGFzIHNpbXBsZSBhcyB0aGlzIChzZWUgImF1eF8vbnR0cF9kZWNsLmhwcCIKLS8vIGZvciBhIHdvcmthcm91bmQpOgotLy8KLS8vICAgIG5hbWVzcGFjZSBzdGQgewotLy8gICAgdGVtcGxhdGU8IHR5cGVuYW1lIENoYXIgPiBzdHJ1Y3Qgc3RyaW5nOwotLy8gICAgfQotLy8KLS8vICAgIHZvaWQgZm9vKHN0ZDo6c3RyaW5nPGNoYXI+KTsKLS8vCi0vLyAgICBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLS8vICAgIHRlbXBsYXRlPCBpbnQgPiBzdHJ1Y3QgYXJnOwotLy8gICAgfX0KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTlRUUF9CVUcpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OVFRQX0JVRwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX05UVFBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGFiNWYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL292ZXJsb2FkX3Jlc29sdXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBvdmVybG9hZF9yZXNvbHV0aW9uLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgICAgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg1OTApIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzAwMSkgXAotICAgICAgICApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX09WRVJMT0FEX1JFU09MVVRJT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcF9jb3VudGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3BwX2NvdW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWYzYWM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3BwX2NvdW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BQX0NPVU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BQX0NPVU5URVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHBfY291bnRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9BVVhfUFBfQ09VTlRFUikKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jICAgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxMzAwKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUF9DT1VOVEVSKCkgX19DT1VOVEVSX18KLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1BQX0NPVU5URVIoKSBfX0xJTkVfXwotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BQX0NPVU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI1ZTZiYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1BSRVBST0NFU1NPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfUFJFUFJPQ0VTU09SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHJlcHJvY2Vzc29yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fUFBfTUFDUk9fRVhQQU5TSU9OKSBcCi0gICAgJiYgKCAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAzKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTgyKSBcCi0gICAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDUwMikpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfQlJPS0VOX1BQX01BQ1JPX0VYUEFOU0lPTgotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTkVFRFNfVE9LRU5fUEFTVElOR19PUF9GT1JfVE9LRU5TX0pVWFRBUE9TSU5HKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotIyAgIGRlZmluZSBORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcKLSNlbmRpZgotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19QUkVQUk9DRVNTT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQyMWI4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1NUQVRJQ19DT05TVEFOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfU1RBVElDX0NPTlNUQU5UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc3RhdGljX2NvbnN0YW50LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCBpcyBkZWZpbmVkIGhlcmU6Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbHNlCi0vLyB1bmRlZiB0aGUgbWFjcm8gZm9yIHRoZSBwcmVwcm9jZXNzaW5nIG1vZGUKLSMgICB1bmRlZiBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfU1RBVElDX0NPTlNUQU5UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYTk1NjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0NPTkZJR19UVFBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1RUUF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHR0cC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNRVRFUlMpIFwKLSAgICAmJiAoIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfVEVNUExBVEVTKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCggMHg1OTApICkgXAotICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX05PX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNRVRFUlMKLQotI2VuZGlmCi0KLQotI2lmICAgICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDMwMikpIFwKLSAgICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpIFwKLSAgICAgICAgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1RUUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzJiNzE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfVFlQRU9GX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTkZJR19UWVBFT0ZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0eXBlb2YuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfSEFTX1RZUEVPRikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiAoICAgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0dDQykgJiYgTkROQk9PU1RfTVBMX0NGR19HQ0MgPj0gMHgwMzAyIFwKLSAgICAgICAgfHwgZGVmaW5lZChfX01XRVJLU19fKSAmJiBfX01XRVJLU19fID49IDB4MzAwMCBcCi0gICAgICAgICkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX0hBU19UWVBFT0YKLQotI2VuZGlmCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfSEFTX1RZUEVPRikKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0NPTkZJR19UWVBFT0ZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjgxMGU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1VTRV9QUkVQUk9DRVNTRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1VTRV9QUkVQUk9DRVNTRURfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB1c2VfcHJlcHJvY2Vzc2VkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0vLyAjZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1VTRV9QUkVQUk9DRVNTRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODBlYWJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1dPUktBUk9VTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQ09ORklHX1dPUktBUk9VTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB3b3JrYXJvdW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9DT05GSUdfV09SS0FST1VORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29udGFpbnNfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvbnRhaW5zX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjVlZDBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY29udGFpbnNfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9DT05UQUlOU19JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0NPTlRBSU5TX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY29udGFpbnNfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb250YWluc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9maW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9mb3J3YXJkaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgY29udGFpbnNfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogbm90XzwgaXNfc2FtZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZmluZDxTZXF1ZW5jZSxUPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICA+ID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBub3RfPCBpc19zYW1lPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmaW5kPFNlcXVlbmNlLFQ+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgID4gPiB0eXBlOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgICAgICAobm90XzwgaXNfc2FtZTwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGZpbmQ8U2VxdWVuY2UsVD46OnR5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgICAgICA+ID46OnZhbHVlKQotICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDIsY29udGFpbnNfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfQ09OVEFJTlNfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2NvdW50X2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGU2Mzc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb3VudF9hcmdzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2V4cHJfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRSBUCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1RFTVBMQVRFX1BBUkFNKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19URU1QTEFURV9QQVJBTSB0eXBlbmFtZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19QQVJBTV9OQU1FCi0jZW5kaWYKLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1VTRV9TVEFOREFSRF9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUkVQRUFUIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1TKHBhcmFtKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19SRVBFQVQgTkROQk9PU1RfUFBfUkVQRUFUCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9JTkMoQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkpIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1VTRV9TVEFOREFSRF9QUF9QUklNSVRJVkVTCi0KLQotI2RlZmluZSBBVVg3NzgwNzZfSVNfQVJHX1RFTVBMQVRFX05BTUUgXAotICAgIE5ETkJPT1NUX1BQX0NBVChpc18sTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BSRUZJWCxfYXJnKSkgXAotLyoqLwotCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0ZVTkModW51c2VkLCBpLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0VYUFJfSUYoaSwgKykgXAotICAgIEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRTxORE5CT09TVF9QUF9DQVQocGFyYW0sTkROQk9PU1RfUFBfSU5DKGkpKT46OnZhbHVlIFwKLS8qKi8KLQotLy8gaXNfPHh4eD5fYXJnCi10ZW1wbGF0ZTwgQVVYNzc4MDc2X0NPVU5UX0FSR1NfVEVNUExBVEVfUEFSQU0gPgotc3RydWN0IEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRTxBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIDx4eHg+X2NvdW50X2FyZ3MKLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1TKEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1RFTVBMQVRFX1BBUkFNKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYLF9jb3VudF9hcmdzKQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gQVVYNzc4MDc2X0NPVU5UX0FSR1NfUkVQRUFUKAotICAgICAgICAgIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZCi0gICAgICAgICwgQVVYNzc4MDc2X0NPVU5UX0FSR1NfRlVOQwotICAgICAgICAsIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNX05BTUUKLSAgICAgICAgKSk7Ci19OwotCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfRlVOQwotI3VuZGVmIEFVWDc3ODA3Nl9JU19BUkdfVEVNUExBVEVfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNUwotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1JFUEVBVAotCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfQVJJVFkKLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19ERUZBVUxUCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYCi0jdW5kZWYgQVVYNzc4MDc2X0NPVU5UX0FSR1NfVVNFX1NUQU5EQVJEX1BQX1BSSU1JVElWRVMKLSN1bmRlZiBBVVg3NzgwNzZfQ09VTlRfQVJHU19URU1QTEFURV9QQVJBTQotI3VuZGVmIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX1BBUkFNX05BTUUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZmluZF9pZl9wcmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZmluZF9pZl9wcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YyYjNjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ZpbmRfaWZfcHJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9GSU5EX0lGX1BSRURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfRklORF9JRl9QUkVEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2FwcGx5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZGljYXRlID4KLXN0cnVjdCBmaW5kX2lmX3ByZWQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBub3RfPCBhdXg6Oml0ZXJfYXBwbHkxPFByZWRpY2F0ZSxJdGVyYXRvcj4gPiB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfRklORF9JRl9QUkVEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTdkMzRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9GT0xEX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb2xkX2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgZW5kaWYKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgZm9sZF9pbXBsLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKGl0ZXIpIHR5cGVuYW1lIGRlcmVmPGl0ZXI+Ojp0eXBlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVggZm9sZAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbF9ib2R5LmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsX2JvZHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YzRiOWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjUgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb2xkX2ltcGxfYm9keS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lURVJfRk9MRF9TVEVQKHVudXNlZCwgaSwgdW51c2VkMikgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBcCi0gICAgICAgICAgRm9yd2FyZE9wIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoc3RhdGUsaSkgXAotICAgICAgICAsIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoTkROQk9PU1RfUFBfQ0FUKGl0ZXIsaSkpIFwKLSAgICAgICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQoc3RhdGUsTkROQk9PU1RfUFBfSU5DKGkpKTsgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PE5ETkJPT1NUX1BQX0NBVChpdGVyLGkpPjo6dHlwZSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX1BQX0lOQyhpKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfaW1wbCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfY2h1bmspIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSMgICBpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORywgPG5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbF9ib2R5LmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vIGltcGxlbWVudGF0aW9uIGZvciBOIHRoYXQgZXhjZWVkcyBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLXsKLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAoIChOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykgPCAwID8gMCA6IE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotICAgICAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi0vLyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBmb3Igc2VxdWVuY2VzIG9mIHVua25vd24gc2l6ZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotICAgIDogQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotIyAgIGVsc2UgLy8gTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0KLS8vIEJvcmxhbmQgaGF2ZSBzb21lIHNlcmlvdXMgcHJvYmxlbXMgd2l0aCB0aGUgdW5yb2xsZWQgdmVyc2lvbiwgc28KLS8vIHdlIGFsd2F5cyB1c2UgYSBiYXNpYyBpbXBsZW1lbnRhdGlvbgotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FCi17Ci0gICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChGaXJzdCk+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHN0YXRlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikKLSAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8TixMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHN0YXRlIHR5cGU7Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi0gCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FOwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsIDxuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGxfYm9keS5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0vLyBpbXBsZW1lbnRhdGlvbiBmb3IgTiB0aGF0IGV4Y2VlZHMgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPiAKLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgICAgICAoIChOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykgPCAwID8gMCA6IE4gLSBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotLy8gZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gZm9yIHNlcXVlbmNlcyBvZiB1bmtub3duIHNpemUKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfbnVsbF9zdGVwKQotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPC0xPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4gCi0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPEZpcnN0LExhc3Q+Ojp0eXBlCi0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9udWxsX3N0ZXApPExhc3QsU3RhdGU+Ci0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKTxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcD4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88aW50LGludCxpbnQsaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKQotewotICAgIC8vIGNhbid0IGluaGVyaXQgaGVyZSAtIGl0IGJyZWFrcyBNU1ZDIDcuMAotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTwtMT46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLSAgICA6IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfX19Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUUKLSMgICB1bmRlZiBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfRk9MRF9TVEVQCi0KLSN1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX09QCi0jdW5kZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBuXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPG5fLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKG5fLCBBVVg3NzgwNzZfSVRFUl9GT0xEX1NURVAsIHVudXNlZCkKLQotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHN0YXRlLG5fKSBzdGF0ZTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKSBpdGVyYXRvcjsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8bl8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKG5fLCBBVVg3NzgwNzZfSVRFUl9GT0xEX1NURVAsIHVudXNlZCkKLQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChzdGF0ZSxuXykgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pIGl0ZXJhdG9yOwotICAgIH07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88aW50LGludCxpbnQsaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSMgICB1bmRlZiBuXwotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTMyODRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzU0ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0ZVTExfTEFNQkRBX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0ZVTExfTEFNQkRBX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZnVsbF9sYW1iZGEuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9wcm90ZWN0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvcXVvdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgZnVsbF9sYW1iZGEuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2RtY19hbWJpZ3VvdXNfY3Rwcy5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUklUWV9QQVJBTShwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNKHBhcmFtKSBcCi0gICAgLyoqLwotCi0KLSNkZWZpbmUgbl8gTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG5fLGJvb2wgQyxmYWxzZSkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgTkROQk9PU1RfTVBMX1BQX0VOVU0obl8sZmFsc2UpID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0jdW5kZWYgbl8KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICBBVVg3NzgwNzZfQVJJVFlfUEFSQU0odHlwZW5hbWUgQXJpdHkpCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPixUYWcgQVVYNzc4MDc2X0FSSVRZX1BBUkFNKGludF88LTE+KSA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsgCi19OwotCi0KLSNkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMCwgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgPG5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sVGFnIEFVWDc3ODA3Nl9BUklUWV9QQVJBTShpbnRfPDE+KSA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPgotICAgICAgICAsIFRhZwotICAgICAgICBBVVg3NzgwNzZfQVJJVFlfUEFSQU0oaW50XzxORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSk+KQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKT4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8RixUYWcxLEFyaXR5PgotICAgICAgICAsIFRhZzIKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwgcXVvdGUxPGF1eDo6dGVtcGxhdGVfYXJpdHk+LCB0eXBlbmFtZSBsMTo6cmVzdWx0XyA+IGFyaXR5XzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgaWZfPGlzX2xlLGFyaXR5XyxBcml0eT46OnR5cGUsVGFnMiA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyLCBsMz4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRE1DX0FNQklHVU9VU19DVFBTKQotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FSSVRZX1BBUkFNCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLSNlbHNlCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDMsIGxhbWJkYSkKLSNlbmRpZgotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfRlVMTF9MQU1CREFfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMQotCi0vLyBGb3IgZ2NjIDQuNCBjb21wYXRhYmlsaXR5LCB3ZSBtdXN0IGluY2x1ZGUgdGhlCi0vLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEggdGVzdCBpbnNpZGUgYW4gI2Vsc2UgY2xhdXNlLgotI2Vsc2UgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGlfID4gMAotCi1uYW1lc3BhY2UgYXV4IHsKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfUkVTVUxUKHVudXNlZCwgaV8sIFQpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChULCBORE5CT09TVF9QUF9JTkMoaV8pKTo6cmVzdWx0XyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9UWVBFKHVudXNlZCwgaV8sIFQpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChULCBORE5CT09TVF9QUF9JTkMoaV8pKTo6dHlwZSBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCB0eXBlbmFtZSBQKSA+IGNsYXNzIEYKLSAgICAsIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCB0eXBlbmFtZSBMKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQobGVfcmVzdWx0LGlfKQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfVFlQRSwgTCkKLSAgICAgICAgPiByZXN1bHRfOwotICAgIAotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUyhpXywgdHlwZW5hbWUgUCkgPiBjbGFzcyBGCi0gICAgLCBBVVg3NzgwNzZfTEFNQkRBX1BBUkFNUyhpXywgdHlwZW5hbWUgTCkKLSAgICA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGxlX3Jlc3VsdCxpXyk8IHRydWVfLFRhZyxGLEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBMKSA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8Ci0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHF1b3RlLGlfKTxGLFRhZz4KLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfUkVTVUxULCBMKQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9UWVBFCi0jICAgdW5kZWYgQVVYNzc4MDc2X1JFU1VMVAotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRih1bnVzZWQsIGlfLCBUKSBcCi0gICAgdHlwZWRlZiBsYW1iZGE8IE5ETkJPT1NUX1BQX0NBVChULCBORE5CT09TVF9QUF9JTkMoaV8pKSwgVGFnID4gXAotICAgICAgICBORE5CT09TVF9QUF9DQVQobCxORE5CT09TVF9QUF9JTkMoaV8pKTsgXAotLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JU19MRV9UWVBFREVGKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChsLE5ETkJPT1NUX1BQX0lOQyhpXykpOjppc19sZSBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChpc19sZSxORE5CT09TVF9QUF9JTkMoaV8pKTsgXAotLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JU19MQU1CREFfRVhQUih1bnVzZWQsIGlfLCB1bnVzZWQyKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIFwKLSAgICBORE5CT09TVF9QUF9DQVQoaXNfbGUsTkROQk9PU1RfUFBfSU5DKGlfKSk6OnZhbHVlIFwKLS8qKi8KLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFApID4gY2xhc3MgRgotICAgICwgQVVYNzc4MDc2X0xBTUJEQV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPCAKLSAgICAgICAgICBGPEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBUKT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgQVVYNzc4MDc2X0FSSVRZX1BBUkFNKGludF88aV8+KQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGLCBUKQotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9JU19MRV9UWVBFREVGLCB1bnVzZWQpCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9JU19MQU1CREFfRVhQUiwgdW51c2VkKQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChsZV9yZXN1bHQsaV8pPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBsKQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEFNQkRBX0VYUFIKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEVfVFlQRURFRgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRgotCi0jZW5kaWYgLy8gaV8gPiAwCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIFQpPgotICAgICAgICAsIFRhZwotICAgICAgICBBVVg3NzgwNzZfQVJJVFlfUEFSQU0oaW50XzxORE5CT09TVF9QUF9JTkMoaV8pPikKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPAotICAgICAgICAgIEYKLSAgICAgICAgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIFQpCi0gICAgICAgID4gcmVzdWx0XzsKLSAgICAgICAgCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjkwMTFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19BUFBMWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9IQVNfQVBQTFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX2FwcGx5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2hhc194eHguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9oYXNfYXBwbHkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19IQVNfQVBQTFkpCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoaGFzX2FwcGx5LCBhcHBseSwgZmFsc2UpCi0jZWxzZQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IGZhbHNlXyA+Ci1zdHJ1Y3QgaGFzX2FwcGx5Ci0gICAgOiBmYWxsYmFja18KLXsKLX07Ci0jZW5kaWYKLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9IQVNfQVBQTFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYzE3M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX0JFR0lOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0hBU19CRUdJTl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc19iZWdpbi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKGhhc19iZWdpbiwgYmVnaW4sIHRydWUpCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSEFTX0JFR0lOX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfcmViaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3JlYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYjY2ZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfcmViaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19SRUJJTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1JFQklORF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc19yZWJpbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQ0KSAmJiAhZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHA+Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDQpICYmICFkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKQotCi1ORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoaGFzX3JlYmluZCwgcmViaW5kLCBmYWxzZSkKLQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRihoYXNfcmViaW5kX2ltcGwsIHJlYmluZCwgZmFsc2UpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBoYXNfcmViaW5kCi0gICAgOiBpZl88IAotICAgICAgICAgIG1zdmNfaXNfY2xhc3M8VD4KLSAgICAgICAgLCBoYXNfcmViaW5kX2ltcGw8VD4KLSAgICAgICAgLCBib29sXzxmYWxzZT4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotI2Vsc2UgLy8gdGhlIHJlc3QKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaGFzX3JlYmluZF90YWcge307Ci1ub190YWcgb3BlcmF0b3J8KGhhc19yZWJpbmRfdGFnPGludD4sIHZvaWQgY29uc3Qgdm9sYXRpbGUqKTsKLQotIyAgIGlmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBoYXNfcmViaW5kCi17Ci0gICAgc3RhdGljIGhhc19yZWJpbmRfdGFnPFQ+KiBnZXQoKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoaGFzX3JlYmluZF90YWc8aW50PigpIHwgZ2V0KCkpID09IHNpemVvZih5ZXNfdGFnKQotICAgICAgICApOwotfTsKLSMgICBlbHNlIC8vIF9fQk9STEFORENfXwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGhhc19yZWJpbmRfaW1wbAotewotICAgIHN0YXRpYyBUKiBnZXQoKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICBzaXplb2YoaGFzX3JlYmluZF90YWc8aW50PigpIHwgZ2V0KCkpID09IHNpemVvZih5ZXNfdGFnKQotICAgICAgICApOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGhhc19yZWJpbmQKLSAgICA6IGlmXzwgCi0gICAgICAgICAgaXNfY2xhc3M8VD4KLSAgICAgICAgLCBoYXNfcmViaW5kX2ltcGw8VD4KLSAgICAgICAgLCBib29sXzxmYWxzZT4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLSMgICBlbmRpZiAvLyBfX0JPUkxBTkRDX18KLQotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9IQVNfUkVCSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE1ZTkzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc19zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0hBU19TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX3NpemUuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihzaXplKQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19TSVpFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNjA4NjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9oYXNfdGFnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0hBU19UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGhhc190YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaGFzX3h4eC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRihoYXNfdGFnLCB0YWcsIGZhbHNlKQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2hhc190eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTVmZTIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSEFTX1RZUEVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBoYXNfdHlwZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKGhhc190eXBlLCB0eXBlLCB0cnVlKQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0hBU19UWVBFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM1NzAzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY29tcGlsZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1BSRVBST0NFU1NFRF9IRUFERVIgXAotICAgIE5ETkJPT1NUX01QTF9DRkdfQ09NUElMRVJfRElSL05ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9QUkVQUk9DRVNTRURfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX0NGR19DT01QSUxFUl9ESVIsLykjI05ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIFwKLS8qKi8KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNzAwKSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvQVVYNzc4MDc2X1BSRVBST0NFU1NFRF9IRUFERVIpCi0jICAgaW5jbHVkZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSMgICB1bmRlZiBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSNlbHNlCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL0FVWDc3ODA3Nl9QUkVQUk9DRVNTRURfSEVBREVSKQotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfUFJFUFJPQ0VTU0VEX0hFQURFUgotCi0jdW5kZWYgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E3NTk3OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2luc2VydGVyX2FsZ29yaXRobS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGluc2VydGVyX2FsZ29yaXRobS5ocHAgNTU2NDggMjAwOS0wOC0xOCAwNToxNjo1M1ogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA5LTA4LTE3IDIyOjE2OjUzIC0wNzAwIChNb24sIDE3IEF1ZyAyMDA5KSAkCi0vLyAkUmV2aXNpb246IDU1NjQ4ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iYWNrX2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmFja19pbnNlcnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY2xlYXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfSU5TRVJURVJfQUxHT1JJVEhNX0RFRihhcml0eSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9DT01NT05fTkFNRV9XS05EKG5hbWUpIFwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoYXJpdHksIHR5cGVuYW1lIFAsIG5hKSBcCi0gICAgPiBcCi1zdHJ1Y3QgbmFtZSBcCi0gICAgOiBhdXg6Om5hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoYXJpdHksIFApPiBcCi17IFwKLX07IFwKLVwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIHR5cGVuYW1lIFApIFwKLSAgICA+IFwKLXN0cnVjdCBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApLG5hID4gXAotICAgIDogaWZfPCBoYXNfcHVzaF9iYWNrPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGU+IFwKLSAgICAgICAgLCBhdXg6Om5hbWUjI19pbXBsPCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCkgXAotICAgICAgICAgICAgLCBiYWNrX2luc2VydGVyPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGUgPiBcCi0gICAgICAgICAgICA+IFwKLSAgICAgICAgLCBhdXg6OnJldmVyc2VfIyNuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgZnJvbnRfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICA+Ojp0eXBlIFwKLXsgXAotfTsgXAotXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhhcml0eSwgdHlwZW5hbWUgUCwgbmEpIFwKLSAgICA+IFwKLXN0cnVjdCByZXZlcnNlXyMjbmFtZSBcCi0gICAgOiBhdXg6OnJldmVyc2VfIyNuYW1lIyNfaW1wbDxORE5CT09TVF9NUExfUFBfUEFSQU1TKGFyaXR5LCBQKT4gXAoteyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgXAotICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCB0eXBlbmFtZSBQKSBcCi0gICAgPiBcCi1zdHJ1Y3QgcmV2ZXJzZV8jI25hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCksbmEgPiBcCi0gICAgOiBpZl88IGhhc19wdXNoX2JhY2s8UDE+IFwKLSAgICAgICAgLCBhdXg6OnJldmVyc2VfIyNuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgYmFja19pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgICwgYXV4OjpuYW1lIyNfaW1wbDwgXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhhcml0eSksIFApIFwKLSAgICAgICAgICAgICwgZnJvbnRfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICA+Ojp0eXBlIFwKLXsgXAotfTsgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKGFyaXR5LCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoYXJpdHksIHJldmVyc2VfIyNuYW1lKSBcCi0vKiovCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9JTlNFUlRFUl9BTEdPUklUSE1fREVGKGFyaXR5LCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmFtZSkgXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgdHlwZW5hbWUgUCkgXAotICAgID4gXAotc3RydWN0IGRlZl8jI25hbWUjI19pbXBsIFwKLSAgICA6IGlmXzwgaGFzX3B1c2hfYmFjazxQMT4gXAotICAgICAgICAsIGF1eDo6bmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGJhY2tfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICAsIGF1eDo6cmV2ZXJzZV8jI25hbWUjI19pbXBsPCBcCi0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCkgXAotICAgICAgICAgICAgLCBmcm9udF9pbnNlcnRlcjwgdHlwZW5hbWUgY2xlYXI8UDE+Ojp0eXBlID4gXAotICAgICAgICAgICAgPiBcCi0gICAgICAgID46OnR5cGUgXAoteyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgXAotICAgICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKGFyaXR5LCB0eXBlbmFtZSBQLCBuYSkgXAotICAgID4gXAotc3RydWN0IG5hbWUgXAoteyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPCBcCi0gICAgICAgICAgaXNfbmE8TkROQk9PU1RfUFBfQ0FUKFAsIGFyaXR5KT4gXAotICAgICAgICAsIGRlZl8jI25hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgUCk+IFwKLSAgICAgICAgLCBhdXg6Om5hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoYXJpdHksIFApPiBcCi0gICAgICAgID46OnR5cGUgdHlwZTsgXAotfTsgXAotXAotdGVtcGxhdGU8IFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoTkROQk9PU1RfUFBfREVDKGFyaXR5KSwgdHlwZW5hbWUgUCkgXAotICAgID4gXAotc3RydWN0IGRlZl9yZXZlcnNlXyMjbmFtZSMjX2ltcGwgXAotICAgIDogaWZfPCBoYXNfcHVzaF9iYWNrPFAxPiBcCi0gICAgICAgICwgYXV4OjpyZXZlcnNlXyMjbmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGJhY2tfaW5zZXJ0ZXI8IHR5cGVuYW1lIGNsZWFyPFAxPjo6dHlwZSA+IFwKLSAgICAgICAgICAgID4gXAotICAgICAgICAsIGF1eDo6bmFtZSMjX2ltcGw8IFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKSBcCi0gICAgICAgICAgICAsIGZyb250X2luc2VydGVyPCB0eXBlbmFtZSBjbGVhcjxQMT46OnR5cGUgPiBcCi0gICAgICAgICAgICA+IFwKLSAgICAgICAgPjo6dHlwZSBcCi17IFwKLX07IFwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoYXJpdHksIHR5cGVuYW1lIFAsIG5hKSBcCi0gICAgPiBcCi1zdHJ1Y3QgcmV2ZXJzZV8jI25hbWUgXAoteyBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPCBcCi0gICAgICAgICAgaXNfbmE8TkROQk9PU1RfUFBfQ0FUKFAsIGFyaXR5KT4gXAotICAgICAgICAsIGRlZl9yZXZlcnNlXyMjbmFtZSMjX2ltcGw8TkROQk9PU1RfTVBMX1BQX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoYXJpdHkpLCBQKT4gXAotICAgICAgICAsIGF1eDo6cmV2ZXJzZV8jI25hbWUjI19pbXBsPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoYXJpdHksIFApPiBcCi0gICAgICAgID46OnR5cGUgdHlwZTsgXAotfTsgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKGFyaXR5LCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoYXJpdHksIHJldmVyc2VfIyNuYW1lKSBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2ludGVncmFsX3dyYXBwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjI4MzRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaW50ZWdyYWxfd3JhcHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbF93cmFwcGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2NfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2lmICFkZWZpbmVkKEFVWF9XUkFQUEVSX05BTUUpCi0jICAgZGVmaW5lIEFVWF9XUkFQUEVSX05BTUUgTkROQk9PU1RfUFBfQ0FUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsXykKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYX1dSQVBQRVJfUEFSQU1TKQotIyAgIGRlZmluZSBBVVhfV1JBUFBFUl9QQVJBTVMoTikgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgTikKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYX1dSQVBQRVJfSU5TVCkKLSMgICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MjQwNykKLSMgICAgICAgZGVmaW5lIEFVWF9XUkFQUEVSX0lOU1QodmFsdWUpIEFVWF9XUkFQUEVSX05BTUU8IHZhbHVlID4KLSMgICBlbHNlIAotIyAgICAgICBkZWZpbmUgQVVYX1dSQVBQRVJfSU5TVCh2YWx1ZSkgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6OkFVWF9XUkFQUEVSX05BTUU8IHZhbHVlID4KLSMgICBlbmRpZgotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IEFVWF9XUkFQUEVSX1BBUkFNUyhOKSA+Ci1zdHJ1Y3QgQVVYX1dSQVBQRVJfTkFNRQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCB2YWx1ZSA9IE4pOwotLy8gYWd1cnQsIDA4L21hci8wMzogU0dJIE1JUFNwcm8gQysrIHdvcmthcm91bmQsIGhhdmUgdG8gI2lmZGVmIGJlY2F1c2Ugc29tZSAKLS8vIG90aGVyIGNvbXBpbGVycyAoZS5nLiBNU1ZDKSBhcmUgbm90IHBhcnRpY3VsYXJ5IGhhcHB5IGFib3V0IGl0Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLSAgICB0eXBlZGVmIHN0cnVjdCBBVVhfV1JBUFBFUl9OQU1FIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfTkFNRSB0eXBlOwotI2VuZGlmCi0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jX3RhZyB0YWc7Ci0KLS8vIGhhdmUgdG8gI2lmZGVmIGhlcmU6IHNvbWUgY29tcGlsZXJzIGRvbid0IGxpa2UgdGhlICdOICsgMScgZm9ybSAoTVNWQyksCi0vLyB3aGlsZSBzb21lIG90aGVyIGRvbid0IGxpa2UgJ3ZhbHVlICsgMScgKEJvcmxhbmQpLCBhbmQgc29tZSBkb24ndCBsaWtlCi0vLyBlaXRoZXIKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQzKQotIHByaXZhdGU6Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIG5leHRfdmFsdWUgPSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIChOICsgMSkpKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSwgcHJpb3JfdmFsdWUgPSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIChOIC0gMSkpKTsKLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKG5leHRfdmFsdWUpIG5leHQ7Ci0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKHByaW9yX3ZhbHVlKSBwcmlvcjsKLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjEpKSBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNTAyKSkgXAotICAgIHx8IChORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8PSA1MzgwMCkgJiYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19ocHhzdGQ5OCwgIT0gMSkpKQotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfSU5TVCggTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCAoTiArIDEpKSApIG5leHQ7Ci0gICAgdHlwZWRlZiBBVVhfV1JBUFBFUl9JTlNUKCBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUsIChOIC0gMSkpICkgcHJpb3I7Ci0jZWxzZQotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfSU5TVCggTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCAodmFsdWUgKyAxKSkgKSBuZXh0OwotICAgIHR5cGVkZWYgQVVYX1dSQVBQRVJfSU5TVCggTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChBVVhfV1JBUFBFUl9WQUxVRV9UWVBFLCAodmFsdWUgLSAxKSkgKSBwcmlvcjsKLSNlbmRpZgotCi0gICAgLy8gZW5hYmxlcyB1bmlmb3JtIGZ1bmN0aW9uIGNhbGwgc3ludGF4IGZvciBmYW1pbGllcyBvZiBvdmVybG9hZGVkIAotICAgIC8vIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBvYmplY3RzIG9mIGJvdGggYXJpdGhtZXRpYyAoJ2ludCcsICdsb25nJywKLSAgICAvLyAnZG91YmxlJywgZXRjLikgYW5kIHdyYXBwZWQgaW50ZWdyYWwgdHlwZXMgKGZvciBhbiBleGFtcGxlLCBzZWUgCi0gICAgLy8gIm1wbC9leGFtcGxlL3Bvd2VyLmNwcCIpCi0gICAgb3BlcmF0b3IgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEU+KHRoaXMtPnZhbHVlKTsgfSAKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLXRlbXBsYXRlPCBBVVhfV1JBUFBFUl9QQVJBTVMoTikgPgotQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBjb25zdCBBVVhfV1JBUFBFUl9JTlNUKE4pOjp2YWx1ZTsKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi0jdW5kZWYgQVVYX1dSQVBQRVJfTkFNRQotI3VuZGVmIEFVWF9XUkFQUEVSX1BBUkFNUwotI3VuZGVmIEFVWF9XUkFQUEVSX0lOU1QKLSN1bmRlZiBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YTkzZWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pc19tc3ZjX2V0aV9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfSVNfTVNWQ19FVElfQVJHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0lTX01TVkNfRVRJX0FSR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlzX21zdmNfZXRpX2FyZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbXN2Y19ldGlfYXJnCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHCi0KLXN0cnVjdCBldGlfaW50X2NvbnZlcnRpYmxlCi17Ci0gICAgZXRpX2ludF9jb252ZXJ0aWJsZShpbnQpOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX21zdmNfZXRpX2FyZwoteyAKLSAgICBzdGF0aWMgbm9fdGFnIHRlc3QoLi4uKTsKLSAgICBzdGF0aWMgeWVzX3RhZyB0ZXN0KGV0aV9pbnRfY29udmVydGlibGUpOwotICAgIHN0YXRpYyBUJiBnZXQoKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZih0ZXN0KGdldCgpKSkgPT0gc2l6ZW9mKHllc190YWcpCi0gICAgICAgICk7Ci19OwotCi0jZW5kaWYKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX21zdmNfZXRpX2FyZzxpbnQ+Ci17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9JU19NU1ZDX0VUSV9BUkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIzYjdmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSX0FQUExZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSVRFUl9BUFBMWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJfYXBwbHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXBwbHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBJdGVyYXRvcgotICAgID4KLXN0cnVjdCBpdGVyX2FwcGx5MQotICAgIDogYXBwbHkxPCBGLHR5cGVuYW1lIGRlcmVmPEl0ZXJhdG9yPjo6dHlwZSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yMQotICAgICwgdHlwZW5hbWUgSXRlcmF0b3IyCi0gICAgPgotc3RydWN0IGl0ZXJfYXBwbHkyCi0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEl0ZXJhdG9yMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxJdGVyYXRvcjI+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lURVJfQVBQTFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2Q5M2JlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0lURVJfRk9MRF9JRl9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0lURVJfRk9MRF9JRl9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlcl9mb2xkX2lmX2ltcGwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgaXRlcl9mb2xkX2lmX2ltcGwuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8U3RhdGVPcCxTdGF0ZSxJdGVyYXRvcj46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotLy8gYWd1cnQsIDI1L2p1bi8wMjogTVNWQyA2LjUgd29ya2Fyb3VuZCwgaGFkIHRvIGdldCByaWQgb2YgaW5oZXJpdGFuY2UgCi0vLyBoZXJlIGFuZCBpbiAnaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAnLCBiZWNhdXNlIHNvbWV0aW1lcyBpdCBpbnRlcmZlcmVkIAotLy8gd2l0aCB0aGUgImVhcmx5IHRlbXBsYXRlIGluc3RhbnRpYXRpb24gYnVnIiBpbiBfcmVhbGx5XyB1Z2x5IHdheXMKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8UHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8UHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0KLSMgICBkZWZpbmUgQVVYX0lURVJfRk9MRF9GT1JXQVJEX1NURVAodW51c2VkLCBpLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCBcCi0gICAgICAgICAgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGZvcndhcmRfc3RlcCxpKTo6aXRlcmF0b3IgXAotICAgICAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChmb3J3YXJkX3N0ZXAsaSk6OnN0YXRlIFwKLSAgICAgICAgLCBGb3J3YXJkT3AgXAotICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUgXAotICAgICAgICA+IE5ETkJPT1NUX1BQX0NBVChmb3J3YXJkX3N0ZXAsIE5ETkJPT1NUX1BQX0lOQyhpKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYX0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMoaSkgXAotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IFwKLSAgICAgICAgICB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZm9yd2FyZF9zdGVwLE5ETkJPT1NUX1BQX0RFQyhpKSk6Oml0ZXJhdG9yIFwKLSAgICAgICAgLCB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoYmFja3dhcmRfc3RlcCxpKTo6c3RhdGUgXAotICAgICAgICAsIEJhY2t3YXJkT3AgXAotICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlIFwKLSAgICAgICAgPiBORE5CT09TVF9QUF9DQVQoYmFja3dhcmRfc3RlcCxORE5CT09TVF9QUF9ERUMoaSkpOyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUCh1bnVzZWQsIGksIHVudXNlZDIpIFwKLSAgICBBVVhfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVBfRlVOQyggXAotICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcsaSkgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYX0xBU1RfRk9SV0FSRF9TVEVQIFwKLSAgICBORE5CT09TVF9QUF9DQVQoZm9yd2FyZF9zdGVwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWF9MQVNUX0JBQ0tXQVJEX1NURVAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChiYWNrd2FyZF9zdGVwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKSBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPEl0ZXJhdG9yLFN0YXRlPiBmb3J3YXJkX3N0ZXAwOwotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCgKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICwgQVVYX0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIEFVWF9MQVNUX0ZPUldBUkRfU1RFUDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQVVYX0xBU1RfRk9SV0FSRF9TVEVQOjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBBVVhfTEFTVF9GT1JXQVJEX1NURVA6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBBVVhfTEFTVF9GT1JXQVJEX1NURVA6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEFVWF9MQVNUX0ZPUldBUkRfU1RFUDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBBVVhfTEFTVF9CQUNLV0FSRF9TVEVQOwotCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgLCBBVVhfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYX0xBU1RfQkFDS1dBUkRfU1RFUDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi0jICAgdW5kZWYgQVVYX0xBU1RfQkFDS1dBUkRfU1RFUAotIyAgIHVuZGVmIEFVWF9MQVNUX0ZPUldBUkRfU1RFUAotIyAgIHVuZGVmIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotIyAgIHVuZGVmIEFVWF9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUF9GVU5DCi0jICAgdW5kZWYgQVVYX0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9JVEVSX0ZPTERfSUZfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNTQxMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9JVEVSX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9JVEVSX0ZPTERfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJfZm9sZF9pbXBsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBpdGVyX2ZvbGRfaW1wbC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChpdGVyKSBpdGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVggaXRlcl9mb2xkCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsX2JvZHkuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfSVRFUl9GT0xEX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2OTQyNWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfYXJpdHlfcGFyYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX0FSSVRZX1BBUkFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYV9hcml0eV9wYXJhbS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTShwYXJhbSkgICAgCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTShwYXJhbSkgLCBwYXJhbQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYTQ3MTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX05PX0NUUFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX05PX0NUUFNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsYW1iZGFfbm9fY3Rwcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pc19wbGFjZWhvbGRlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsYW1iZGFfbm9fY3Rwcy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TKGlfLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHBhcmFtKSBcCi0gICAgLyoqLwotCi1uYW1lc3BhY2UgYXV4IHsKLQotI2RlZmluZSBuXyBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhuXyxib29sIEMsZmFsc2UpCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IE5ETkJPT1NUX01QTF9QUF9FTlVNKG5fLGZhbHNlKSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0jdW5kZWYgbl8KLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MQU1CREFfUEFSQU1TCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfTk9fQ1RQU19IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uLCBkZXB0aCA9PSAxCi0KLSNlbHNlCi0KLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xBTUJEQV9UWVBFREVGKHVudXNlZCwgaV8sIEYpIFwKLSAgICB0eXBlZGVmIGxhbWJkYTwgXAotICAgICAgICAgIHR5cGVuYW1lIEY6Ok5ETkJPT1NUX1BQX0NBVChhcmcsTkROQk9PU1RfUFBfSU5DKGlfKSkgXAotICAgICAgICAsIFRhZyBcCi0gICAgICAgICwgZmFsc2VfIFwKLSAgICAgICAgPiBORE5CT09TVF9QUF9DQVQobCxORE5CT09TVF9QUF9JTkMoaV8pKTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVNfTEVfVFlQRURFRih1bnVzZWQsIGlfLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQobCxORE5CT09TVF9QUF9JTkMoaV8pKTo6aXNfbGUgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoaXNfbGUsTkROQk9PU1RfUFBfSU5DKGlfKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lTX0xBTUJEQV9FWFBSKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKE5ETkJPT1NUX1BQX0NBVChpc19sZSxORE5CT09TVF9QUF9JTkMoaV8pKSk6OnZhbHVlIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0xBTUJEQV9SRVNVTFQodW51c2VkLCBpXywgdW51c2VkMikgXAotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGwsTkROQk9PU1RfUFBfSU5DKGlfKSk6OnR5cGUgXAotICAgIC8qKi8KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRiwgRikKLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0lTX0xFX1RZUEVERUYsIHVudXNlZCkKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKGlfLCBBVVg3NzgwNzZfSVNfTEFNQkRBX0VYUFIsIHVudXNlZCkKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChpXywgQVVYNzc4MDc2X0xBTUJEQV9SRVNVTFQsIHVudXNlZCkKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLSAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0xBTUJEQV9SRVNVTFQKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEFNQkRBX0VYUFIKLSMgICB1bmRlZiBBVVg3NzgwNzZfSVNfTEVfVFlQRURFRgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9MQU1CREFfVFlQRURFRgotCi0jdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQyNWEzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDcKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGFtYmRhX3NwZWMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfYXJpdHlfcGFyYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKGksIG5hbWUpIFwKLXRlbXBsYXRlPCBcCi0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpIFwKLSAgICAsIHR5cGVuYW1lIFRhZyBcCi0gICAgPiBcCi1zdHJ1Y3QgbGFtYmRhPCBcCi0gICAgICBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIFQpID4gXAotICAgICwgVGFnIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTShpbnRfPGk+KSBcCi0gICAgPiBcCi17IFwKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsgXAotICAgIHR5cGVkZWYgbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCBUKSA+IHJlc3VsdF87IFwKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsgXAotfTsgXAotLyoqLwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKGksIG5hbWUpIC8qKi8KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEwOGY5OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYV9zdXBwb3J0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgLyoqLwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKGksbmFtZSxwYXJhbXMpIC8qKi8KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfaS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9BUkdfVFlQRURFRl9GVU5DKFIsdHlwZWRlZl8saSxwYXJhbSkgXAotICAgIHR5cGVkZWZfIHBhcmFtIE5ETkJPT1NUX1BQX0NBVChhcmcsTkROQk9PU1RfUFBfSU5DKGkpKTsgXAotICAgIC8qKi8KLQotLy8gYWd1cnQsIDA3L21hci8wMzogcmVzdG9yZSBhbiBvbGQgcmV2aXNpb24gZm9yIHRoZSBzYWtlIG9mIFNHSSBNSVBTcHJvIEMrKwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyMzgpIAotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6aW50XzxpPiBhcml0eTsgXAotICAgIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SKCBcCi0gICAgICAgICAgMSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9BUkdfVFlQRURFRl9GVU5DIFwKLSAgICAgICAgLCB0eXBlZGVmIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKGkscGFyYW1zKSBcCi0gICAgICAgICkgXAotICAgIHN0cnVjdCByZWJpbmQgXAotICAgIHsgXAotICAgICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFUpID4gc3RydWN0IGFwcGx5IFwKLSAgICAgICAgICAgIDogbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLFUpID4gXAotICAgICAgICB7IFwKLSAgICAgICAgfTsgXAotICAgIH07IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgLyoqLwotCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQ0KSAmJiAhZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikKLS8vIGFndXJ0LCAxOC9qYW4vMDM6IG9sZCBFREctYmFzZWQgY29tcGlsZXJzIGFjdHVhbGx5IGVuZm9yY2UgMTEuNCBwYXJhIDkKLS8vIChpbiBzdHJpY3QgbW9kZSksIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgCi0vLyBNU1ZDLW9wdGltaXplZCBpbXBsZW1lbnRhdGlvbgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQyhpLCBuYW1lLCBwYXJhbXMpIFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjppbnRfPGk+IGFyaXR5OyBcCi0gICAgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IoIFwKLSAgICAgICAgICAxIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX0FSR19UWVBFREVGX0ZVTkMgXAotICAgICAgICAsIHR5cGVkZWYgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1QoaSxwYXJhbXMpIFwKLSAgICAgICAgKSBcCi0gICAgc3RydWN0IHJlYmluZDsgXAotLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKGksIG5hbWUsIHBhcmFtcykgXAotfTsgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBUKSA+IFwKLXN0cnVjdCBuYW1lPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKT46OnJlYmluZCBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLHR5cGVuYW1lIFUpID4gc3RydWN0IGFwcGx5IFwKLSAgICAgICAgOiBuYW1lPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksVSkgPiBcCi0gICAgeyBcCi0gICAgfTsgXAotLyoqLwotCi0jZWxzZSAvLyBfX0VER19WRVJTSU9OX18KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaGFzX3JlYmluZF90YWc7Ci19fX0KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoaSwgbmFtZSwgcGFyYW1zKSBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6aW50XzxpPiBhcml0eTsgXAotICAgIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SKCBcCi0gICAgICAgICAgMSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9BUkdfVFlQRURFRl9GVU5DIFwKLSAgICAgICAgLCB0eXBlZGVmIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKGkscGFyYW1zKSBcCi0gICAgICAgICkgXAotICAgIGZyaWVuZCBjbGFzcyBORE5CT09TVF9QUF9DQVQobmFtZSxfcmViaW5kKTsgXAotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKG5hbWUsX3JlYmluZCkgcmViaW5kOyBcCi0vKiovCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IQVNfUkVCSU5EKGksIG5hbWUsIHBhcmFtcykgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBUKSA+IFwKLTo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIG9wZXJhdG9yfCggXAotICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmRfdGFnPGludD4gXAotICAgICwgbmFtZTxORE5CT09TVF9NUExfUFBfUEFSQU1TKGksVCk+KiBcCi0gICAgKTsgXAotOjpuZG5ib29zdDo6bXBsOjphdXg6Om5vX3RhZyBvcGVyYXRvcnwoIFwKLSAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kX3RhZzxpbnQ+IFwKLSAgICAsIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9FTlVNKGksOjpuZG5ib29zdDo6bXBsOjpuYSkgPiogXAotICAgICk7IFwKLS8qKi8KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IQVNfUkVCSU5EKGksIG5hbWUsIHBhcmFtcykgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSx0eXBlbmFtZSBUKSA+IFwKLTo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIG9wZXJhdG9yfCggXAotICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmRfdGFnPGludD4gXAotICAgICwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmRfdGFnPCBuYW1lPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxUKT4gPiogXAotICAgICk7IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfSEFTX1JFQklORChpLCBuYW1lLCBwYXJhbXMpIC8qKi8KLSNlbmRpZgotCi0jICAgaWYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKGksIG5hbWUsIHBhcmFtcykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQyhpLCBuYW1lLCBwYXJhbXMpIFwKLX07IFwKLU5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfSEFTX1JFQklORChpLCBuYW1lLCBwYXJhbXMpIFwKLWNsYXNzIE5ETkJPT1NUX1BQX0NBVChuYW1lLF9yZWJpbmQpIFwKLXsgXAotIHB1YmxpYzogXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZW5hbWUgVSkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgICAgICA6IG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxVKSA+IFwKLSAgICB7IFwKLSAgICB9OyBcCi0vKiovCi0jICAgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKGksIG5hbWUsIHBhcmFtcykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQyhpLCBuYW1lLCBwYXJhbXMpIFwKLX07IFwKLU5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfSEFTX1JFQklORChpLCBuYW1lLCBwYXJhbXMpIFwKLWNsYXNzIE5ETkJPT1NUX1BQX0NBVChuYW1lLF9yZWJpbmQpIFwKLXsgXAotIHB1YmxpYzogXAotICAgIHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksdHlwZW5hbWUgVSkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgIHsgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSxVKSA+Ojp0eXBlIHR5cGU7IFwKLSAgICB9OyBcCi0vKiovCi0jICAgZW5kaWYgLy8gX19CT1JMQU5EQ19fCi0KLSNlbmRpZiAvLyBfX0VER19WRVJTSU9OX18KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbGFyZ2VzdF9pbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYXJnZXN0X2ludC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNjY4Y2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sYXJnZXN0X2ludC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9MQVJHRVNUX0lOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9MQVJHRVNUX0lOVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhcmdlc3RfaW50LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazxib29sPiAgICAgICAgICAgOiBpbnRfPDE+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazxzaWduZWQgY2hhcj4gICAgOiBpbnRfPDI+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazxjaGFyPiAgICAgICAgICAgOiBpbnRfPDM+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazx1bnNpZ25lZCBjaGFyPiAgOiBpbnRfPDQ+IHt9OwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazx3Y2hhcl90PiAgICAgICAgOiBpbnRfPDU+IHt9OwotI2VuZGlmCi10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHNob3J0PiAgICAgICAgICA6IGludF88Nj4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVuc2lnbmVkIHNob3J0PiA6IGludF88Nz4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPGludD4gICAgICAgICAgICA6IGludF88OD4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVuc2lnbmVkIGludD4gICA6IGludF88OT4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPGxvbmc+ICAgICAgICAgICA6IGludF88MTA+IHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgaW50ZWdyYWxfcmFuazx1bnNpZ25lZCBsb25nPiAgOiBpbnRfPDExPiB7fTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLXRlbXBsYXRlPD4gc3RydWN0IGludGVncmFsX3Jhbms8bG9uZ19sb25nX3R5cGU+IDogaW50XzwxMj4ge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9yYW5rPHVsb25nX2xvbmdfdHlwZT46IGludF88MTM+IHt9OwotI2VuZGlmCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgbGFyZ2VzdF9pbnQKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9WQUxVRV9BUklUSE1FVElDKQotICAgIDogaWZfYzwgCi0gICAgICAgICAgKCBpbnRlZ3JhbF9yYW5rPFQxPjo6dmFsdWUgPj0gaW50ZWdyYWxfcmFuazxUMj46OnZhbHVlICkKLSAgICAgICAgLCBUMQotICAgICAgICAsIFQyCi0gICAgICAgID4KLXsKLSNlbHNlCi17Ci0gICAgZW51bSB7IHJhbmsxID0gaW50ZWdyYWxfcmFuazxUMT46OnZhbHVlIH07Ci0gICAgZW51bSB7IHJhbmsyID0gaW50ZWdyYWxfcmFuazxUMj46OnZhbHVlIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl9jPCAocmFuazEgPj0gcmFuazIpLFQxLFQyID46OnR5cGUgdHlwZTsKLSNlbmRpZgotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX0xBUkdFU1RfSU5UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbG9naWNhbF9vcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMDZjYzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9sb2dpY2FsX29wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsb2dpY2FsX29wLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1BBUkFNUyhwYXJhbSwgc3ViKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyggXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSwgc3ViKSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NISUZURURfUEFSQU1TKHBhcmFtLCBzdWIpIFwKLSAgICBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUyggXAotICAgICAgICAgIDIsIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkpLCBzdWIpIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU1BFQ19QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfRU5VTSggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBhdXggewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGJvb2wgQ18sIEFVWDc3ODA3Nl9QQVJBTVModHlwZW5hbWUgVCwgMSkgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKQotICAgIDogTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTEsXykKLXsKLX07Ci0KLXRlbXBsYXRlPCBBVVg3NzgwNzZfUEFSQU1TKHR5cGVuYW1lIFQsIDEpID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8IEFVWDc3ODA3Nl9PUF9WQUxVRTIsQVVYNzc4MDc2X1BBUkFNUyhULCAxKSA+Ci0gICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBBVVg3NzgwNzZfU0hJRlRFRF9QQVJBTVMoVCwgMSkKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLGltcGwpPAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9WQUxVRTIKLSAgICAgICAgLCBBVVg3NzgwNzZfU1BFQ19QQVJBTVMoTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykpCi0gICAgICAgID4KLSAgICA6IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pCi17Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCkKLXsKLSAgICB0ZW1wbGF0ZTwgQVVYNzc4MDc2X1BBUkFNUyh0eXBlbmFtZSBULCAxKSA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTEsXykKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSxpbXBsKTxBVVg3NzgwNzZfT1BfVkFMVUUyPgotewotICAgIHRlbXBsYXRlPCBBVVg3NzgwNzZfUEFSQU1TKHR5cGVuYW1lIFQsIDEpID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8IAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgQVVYNzc4MDc2X1NISUZURURfUEFSQU1TKFQsMSksTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykgPgotICAgIHsKLSAgICB9OwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88QVVYNzc4MDc2X1NQRUNfUEFSQU1TKE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfVkFMVUUyLF8pKT4KLSAgICAgICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKQotICAgIHsKLSAgICB9OwotfTsKLSNlbHNlCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9OQU1FLGltcGwpPEFVWDc3ODA3Nl9PUF9WQUxVRTI+Ci0gICAgOjpyZXN1bHRfPCBBVVg3NzgwNzZfU1BFQ19QQVJBTVMoTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9WQUxVRTIsXykpID4KLSAgICAgICAgOiBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKQotewotfTsKLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDID09IDEzMDAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgyLCB0eXBlbmFtZSBULCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1ZBTFVFMixfKSkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX05BTUUKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIDogYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBBVVg3NzgwNzZfU0hJRlRFRF9QQVJBTVMoVCwwKQotICAgICAgICA+Ci0jZWxzZQotICAgIDogYXV4OjpORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsaW1wbCk8IAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEFVWDc3ODA3Nl9TSElGVEVEX1BBUkFNUyhULDApID4KLSNlbmRpZgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotICAgICAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgICAgICwgKEFVWDc3ODA3Nl9QQVJBTVMoVCwgMCkpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi0gICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICkKLQotfX0KLQotI3VuZGVmIEFVWDc3ODA3Nl9TUEVDX1BBUkFNUwotI3VuZGVmIEFVWDc3ODA3Nl9TSElGVEVEX1BBUkFNUwotI3VuZGVmIEFVWDc3ODA3Nl9QQVJBTVMKLSN1bmRlZiBBVVg3NzgwNzZfT1BfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9PUF9WQUxVRTEKLSN1bmRlZiBBVVg3NzgwNzZfT1BfVkFMVUUyCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfZHR3LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19kdHcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWNkMDYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19kdHcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXN2Y19kdHcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLSNkZWZpbmUgQVVYNzc4MDc2X0RUV19QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWSwgcGFyYW0pIFwKLS8qKi8KLQotI2RlZmluZSBBVVg3NzgwNzZfRFRXX09SSUdJTkFMX05BTUUgXAotICAgIEFVWDc3ODA3Nl9NU1ZDX0RUV19PUklHSU5BTF9OQU1FIFwKLS8qKi8KLQotLy8gd2FybmluZzogbm90IGEgd2VsbC1mb3JtZWQgQysrCi0vLyB3b3JrYXJvdW5kIGZvciBNU1ZDIDYuNSdzICJkZXBlbmRlbnQgdGVtcGxhdGUgdHlwZWRlZiBidWciCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IEFVWDc3ODA3Nl9NU1ZDX0RUV19OQU1FCi17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotI2lmIEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWSA+IDAKLSAgICAgICAgdGVtcGxhdGU8IEFVWDc3ODA3Nl9EVFdfUEFSQU1TKHR5cGVuYW1lIFApID4gc3RydWN0IEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgQVVYNzc4MDc2X0RUV19QQVJBTVModHlwZW5hbWUgVCkgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBBVVg3NzgwNzZfRFRXX09SSUdJTkFMX05BTUU8IEFVWDc3ODA3Nl9EVFdfUEFSQU1TKFQpID4KLSAgICB7Ci0gICAgfTsKLSNlbHNlCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID0gaW50ID4gc3RydWN0IEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA9IGludCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIEFVWDc3ODA3Nl9EVFdfT1JJR0lOQUxfTkFNRTw+Ci0gICAgewotICAgIH07Ci0jZW5kaWYKLX07Ci0KLSN1bmRlZiBBVVg3NzgwNzZfRFRXX09SSUdJTkFMX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfRFRXX1BBUkFNUwotCi0jdW5kZWYgQVVYNzc4MDc2X01TVkNfRFRXX05BTUUKLSN1bmRlZiBBVVg3NzgwNzZfTVNWQ19EVFdfT1JJR0lOQUxfTkFNRQotI3VuZGVmIEFVWDc3ODA3Nl9NU1ZDX0RUV19BUklUWQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19ldGlfYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNTMxM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX01TVkNfRVRJX0JBU0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19FVElfQkFTRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmNfZXRpX2Jhc2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pc19tc3ZjX2V0aV9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9nY2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNzBfRVRJX0JVRykKLQotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgbXN2Y19ldGlfYmFzZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtc3ZjX2V0aV9iYXNlX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLSAgICAgICAgdHlwZWRlZiByZXN1bHRfIGZpcnN0OwotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gc2Vjb25kOwotICAgICAgICB0eXBlZGVmIHJlc3VsdF8gdGFnOwotICAgICAgICBlbnVtIHsgdmFsdWUgPSAwIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfZXRpX2Jhc2UKLSAgICA6IG1zdmNfZXRpX2Jhc2VfaW1wbDwgaXNfbXN2Y19ldGlfYXJnPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotI2Vsc2UgLy8gIU5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfZXRpX2Jhc2UKLSAgICA6IFQKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01QTF9DRkdfR0NDLCBORE5CT09TVF9URVNURURfQVQoMHgwMzA0KSkKLSAgICBtc3ZjX2V0aV9iYXNlKCk7Ci0jZW5kaWYKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNlbmRpZiAKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbXN2Y19ldGlfYmFzZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBtc3ZjX2V0aV9iYXNlIHR5cGU7Ci0gICAgdHlwZWRlZiBtc3ZjX2V0aV9iYXNlIGZpcnN0OwotICAgIHR5cGVkZWYgbXN2Y19ldGlfYmFzZSBzZWNvbmQ7Ci0gICAgdHlwZWRlZiBtc3ZjX2V0aV9iYXNlIHRhZzsKLSAgICBlbnVtIHsgdmFsdWUgPSAwIH07Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19FVElfQkFTRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfaXNfY2xhc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDdmN2Q2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX0lTX0NMQVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfSVNfQ0xBU1NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBtc3ZjX2lzX2NsYXNzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19jbGFzc19oZWxwZXIKLXsKLSAgICB0eXBlZGVmIGludCAoVDo6KiB0eXBlKSgpOwotfTsKLQotLy8gTVNWQyA2Lngtc3BlY2lmaWMgbGlnaHR3ZWlnaHQgJ2lzX2NsYXNzJyBpbXBsZW1lbnRhdGlvbjsgCi0vLyBEaXN0aW5ndWlzaGluZyBmZWF0dXJlOiBkb2VzIG5vdCBpbnN0YW50aWF0ZSB0aGUgdHlwZSBiZWluZyB0ZXN0ZWQuCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgbXN2Y19pc19jbGFzc19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFU+Ci0gICAgc3RhdGljIHllc190YWcgIHRlc3QodHlwZV93cmFwcGVyPFU+KiwgLyp0eXBlbmFtZSovIGlzX2NsYXNzX2hlbHBlcjxVPjo6dHlwZSA9IDApOwotICAgIHN0YXRpYyBub190YWcgICB0ZXN0KHZvaWQgY29uc3Qgdm9sYXRpbGUqLCAuLi4pOwotCi0gICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKHRlc3QoKHR5cGVfd3JhcHBlcjxUPiopMCkpID09IHNpemVvZih5ZXNfdGFnKSB9OwotICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci19OwotCi0vLyBhZ3VydCwgMTcvc2VwLzA0OiBoYXZlIHRvIGNoZWNrIGZvciAnaXNfcmVmZXJlbmNlJyB1cGZyb250IHRvIGF2b2lkIElDRXMgaW4KLS8vIGNvbXBsZXggbWV0YXByb2dyYW1zCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgbXN2Y19pc19jbGFzcwotICAgIDogaWZfPAotICAgICAgICAgIGlzX3JlZmVyZW5jZTxUPgotICAgICAgICAsIGZhbHNlXwotICAgICAgICAsIG1zdmNfaXNfY2xhc3NfaW1wbDxUPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19JU19DTEFTU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19uZXZlcl90cnVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19uZXZlcl90cnVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjllMmUwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfbmV2ZXJfdHJ1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX05FVkVSX1RSVUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19ORVZFUl9UUlVFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbXN2Y19uZXZlcl90cnVlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgbXN2Y19uZXZlcl90cnVlCi17Ci0gICAgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsKLX07Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVNWQwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX05FVkVSX1RSVUVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL21zdmNfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZThmYzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfVFlQRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1zdmNfdHlwZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2lzX21zdmNfZXRpX2FyZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzcwX0VUSV9CVUcpCi0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IG1zdmNfdHlwZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1zdmNfdHlwZV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfdHlwZQotICAgIDogbXN2Y190eXBlX2ltcGw8IGlzX21zdmNfZXRpX2FyZzxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1zdmNfdHlwZSAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1zdmNfdHlwZTxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19UWVBFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI5ZjgxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25hLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05BX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbmEuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX25hCi0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbmE8bmE+Ci0gICAgOiB0cnVlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIHRydWVfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX25vdF9uYQotICAgIDogdHJ1ZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyB0cnVlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19ub3RfbmE8bmE+Ci0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBVID4gc3RydWN0IGlmX25hCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IHN0cnVjdCBpZl9uYTxuYSxVPgotewotICAgIHR5cGVkZWYgVSB0eXBlOwotfTsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpZl9uYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpZl9uYV9pbXBsPG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUgPiBzdHJ1Y3QgaWZfbmEKLSAgICA6IGlmX25hX2ltcGw8VD46OnRlbXBsYXRlIGFwcGx5PFU+Ci17Ci19OwotI2VuZGlmCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX05BX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9hc3NlcnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9hc3NlcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDc1YzRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmFfYXNzZXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05BX0FTU0VSVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9BU1NFUlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuYV9hc3NlcnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfRlVMTF9WRVIsIDw9IDE0MDA1MDYwMSkgICAgXAotICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRURHX1ZFUlNJT05fXywgPD0gMjQzKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hc3NlcnQuaHBwPgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEoeCkgXAotICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTk9UKChuZG5ib29zdDo6bXBsOjppc19uYTx0eXBlPikpIFwKLS8qKi8KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh4KSBcCi0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCghbmRuYm9vc3Q6Om1wbDo6aXNfbmE8eD46OnZhbHVlKSBcCi0vKiovCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkFfQVNTRVJUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlNDMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmFfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX05BX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuYV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotLy8gbi5hLiA9PSBub3QgYXZhaWxhYmxlCi1zdHJ1Y3QgbmEKLXsKLSAgICB0eXBlZGVmIG5hIHR5cGU7Ci0gICAgZW51bSB7IHZhbHVlID0gMCB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChuYSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkFfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMDNmNGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuYV9zcGVjLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvb3ZlcmxvYWRfcmVzb2x1dGlvbi5ocHA+Ci0KLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0VOVU0oaSwgbmEpIFwKLS8qKi8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWShpLCBuYW1lKSBcCi1uYW1lc3BhY2UgYXV4IHsgXAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgTikgPiBcCi1zdHJ1Y3QgYXJpdHk8IFwKLSAgICAgICAgICBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLSAgICAgICAgLCBOIFwKLSAgICAgICAgPiBcCi0gICAgOiBpbnRfPCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZID4gXAoteyBcCi19OyBcCi19IFwKLS8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWShpLCBuYW1lKSAvKiovCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTUFJTihpLCBuYW1lKSBcCi10ZW1wbGF0ZTw+IFwKLXN0cnVjdCBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLXsgXAotICAgIHRlbXBsYXRlPCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9ORVNURURfREVGX1BBUkFNU19UQUlMKGksIHR5cGVuYW1lIFQsIG5hKSBcCi0gICAgICAgID4gXAotICAgIHN0cnVjdCBhcHBseSBcCi0gICAgICAgIDogbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCBUKSA+IFwKLSAgICB7IFwKLSAgICB9OyBcCi19OyBcCi0vKiovCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQShpLCBuYW1lKSBcCi10ZW1wbGF0ZTw+IFwKLXN0cnVjdCBsYW1iZGE8IFwKLSAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gXAotICAgICwgdm9pZF8gXAotICAgICwgdHJ1ZV8gXAotICAgID4gXAoteyBcCi0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7IFwKLSAgICB0eXBlZGVmIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gdHlwZTsgXAotfTsgXAotdGVtcGxhdGU8PiBcCi1zdHJ1Y3QgbGFtYmRhPCBcCi0gICAgICBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLSAgICAsIHZvaWRfIFwKLSAgICAsIGZhbHNlXyBcCi0gICAgPiBcCi17IFwKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsgXAotICAgIHR5cGVkZWYgbmFtZTwgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTVMoaSkgPiB0eXBlOyBcCi19OyBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKGksIG5hbWUpIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBcCi1zdHJ1Y3QgbGFtYmRhPCBcCi0gICAgICBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IFwKLSAgICAsIFRhZyBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfQVJJVFlfUEFSQU0oaW50XzwtMT4pIFwKLSAgICA+IFwKLXsgXAotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOyBcCi0gICAgdHlwZWRlZiBuYW1lPCBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNUyhpKSA+IHJlc3VsdF87IFwKLSAgICB0eXBlZGVmIG5hbWU8IE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU1TKGkpID4gdHlwZTsgXAotfTsgXAotLyoqLwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORykgXAotICAgIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKSBcCi0gICAgICAgICYmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fT1ZFUkxPQURfUkVTT0xVVElPTikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKGksIGosIG5hbWUpIFwKLW5hbWVzcGFjZSBhdXggeyBcCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhqLCB0eXBlbmFtZSBUKSA+IFwKLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eTwgXAotICAgICAgICAgIG5hbWU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaiwgVCkgPiBcCi0gICAgICAgID4gXAotICAgIDogaW50XzxqPiBcCi17IFwKLX07IFwKLVwKLXRlbXBsYXRlPD4gXAotc3RydWN0IHRlbXBsYXRlX2FyaXR5PCBcCi0gICAgICAgICAgbmFtZTwgTkROQk9PU1RfTVBMX1BQX0VOVU0oaSwgbmEpID4gXAotICAgICAgICA+IFwKLSAgICA6IGludF88LTE+IFwKLXsgXAotfTsgXAotfSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoaSwgaiwgbmFtZSkgLyoqLwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfRVRJKGksIG5hbWUpIFwKLXRlbXBsYXRlPD4gXAotc3RydWN0IG5hbWU8IE5ETkJPT1NUX01QTF9QUF9FTlVNKGksIGludCkgPiBcCi17IFwKLSAgICB0eXBlZGVmIGludCB0eXBlOyBcCi0gICAgZW51bSB7IHZhbHVlID0gMCB9OyBcCi19OyBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfRVRJKGksIG5hbWUpIC8qKi8KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0ocGFyYW0pIHBhcmFtID0gbmEKLQotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19NQUlOKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWShpLCBpLCBuYW1lKSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0VUSShpLCBuYW1lKSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMihpLCBqLCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTUFJTihpLCBuYW1lKSBcCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfRVRJKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoaSwgbmFtZSkgXAotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKGksIG5hbWUpIFwKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWShpLCBqLCBuYW1lKSBcCi0vKiovCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL25lc3RlZF90eXBlX3drbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzY2YTg3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuZXN0ZWRfdHlwZV93a25kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2djYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDMwMikpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTYxKSkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUzMCkpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5lc3RlZF90eXBlX3drbmQKLSAgICA6IFQ6OnR5cGUKLXsKLX07Ci19fX0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQpIFwKLSAgICBhdXg6Om5lc3RlZF90eXBlX3drbmQ8VD4gXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQpIFwKLSAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6bmVzdGVkX3R5cGVfd2tuZDxUPiBcCi0vKiovCi0jZW5kaWYKLQotI2Vsc2UgLy8gIU5ETkJPT1NUX01QTF9DRkdfR0NDIGV0IGFsLgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUKSBUOjp0eXBlCi0KLSNlbmRpZiAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDViNjRhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0xfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnR0cF9kZWNsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL250dHAuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05UVFBfQlVHKQotCi10eXBlZGVmIGJvb2wgICAgICAgIF9tcGxfbnR0cF9ib29sOwotdHlwZWRlZiBpbnQgICAgICAgICBfbXBsX250dHBfaW50OwotdHlwZWRlZiB1bnNpZ25lZCAgICBfbXBsX250dHBfdW5zaWduZWQ7Ci10eXBlZGVmIGxvbmcgICAgICAgIF9tcGxfbnR0cF9sb25nOwotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKFQsIHgpIE5ETkJPT1NUX1BQX0NBVChfbXBsX250dHBfLFQpIHggLyoqLwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKFQsIHgpIFQgeCAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0xfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfY2FzdF91dGlscy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfY2FzdF91dGlscy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMjFmZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9udW1lcmljX2Nhc3RfdXRpbHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG51bWVyaWNfY2FzdF91dGlscy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9udW1lcmljX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGNhc3Qxc3RfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGFwcGx5X3dyYXAyPCAKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhcHBseV93cmFwMTwgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1Q8VGFnMSxUYWcyPixOMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4yCi0gICAgICAgICAgICA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwgCi0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXBwbHlfd3JhcDE8IE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUPFRhZzEsVGFnMj4sTjEgPjo6dHlwZQotICAgICAgICAgICAgLCBOMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBjYXN0Mm5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBhcHBseV93cmFwMjwgCi0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgTjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXBwbHlfd3JhcDE8IE5ETkJPT1NUX01QTF9BVVhfTlVNRVJJQ19DQVNUPFRhZzIsVGFnMT4sTjIgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPCAKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCBOMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhcHBseV93cmFwMTwgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1Q8VGFnMixUYWcxPixOMiA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19vcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfb3AuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2JmNTY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTUgKzAsMCBAQAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OIQotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtZXJpY19vcC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL251bWVyaWNfY2FzdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3RhZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnVtZXJpY19jYXN0X3V0aWxzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9PUF9BUklUWSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX0FSSVRZIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X09QX0lNUExfTkFNRSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX0lNUExfTkFNRSBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX1BSRUZJWCxfaW1wbCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X09QX1RBR19OQU1FKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVEFHX05BTUUgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9PUF9QUkVGSVgsX3RhZykKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlIAotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUgCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUUKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSNlbHNlCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUUKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLSNlbmRpZgotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPFRhZzEsVGFnMT4sVGFnMSxUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgQVVYNzc4MDc2X09QX0lNUExfTkFNRTxUYWcyLFRhZzI+LFRhZzEsVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPG5hLG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPG5hLFRhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5IAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IEFVWDc3ODA3Nl9PUF9JTVBMX05BTUU8VGFnLG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0jZWxzZQotdGVtcGxhdGU8PiBzdHJ1Y3QgQVVYNzc4MDc2X09QX0lNUExfTkFNRTxuYSxpbnRlZ3JhbF9jX3RhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5IAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPGludGVncmFsX2NfdGFnLG5hPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkgCi0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLX07Ci0jZW5kaWYKLQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+PSAxMzAwKQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgQVVYNzc4MDc2X09QX1RBR19OQU1FCi0gICAgOiB0YWc8VCxuYT4KLXsKLX07Ci0jZWxzZQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgQVVYNzc4MDc2X09QX1RBR19OQU1FCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0jZW5kaWYKLQotCi0jaWYgQVVYNzc4MDc2X09QX0FSSVRZICE9IDIKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1JJR0hUX09QRVJBTkQodW51c2VkLCBpLCBOKSAsIE5ETkJPT1NUX1BQX0NBVChOLCBORE5CT09TVF9NUExfUFBfQUREKGksIDIpKT4KLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX05fQ0FMTFMoaSwgTikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoIE5ETkJPT1NUX1BQX0RFQyhpKSwgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF9JREVOVElUWV9GVU5DLCBBVVg3NzgwNzZfT1BfTkFNRTwgKSBcCi0gICAgTjEgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCggTkROQk9PU1RfTVBMX1BQX1NVQihpLCAxKSwgQVVYNzc4MDc2X09QX1JJR0hUX09QRVJBTkQsIE4gKSBcCi0vKiovCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgyLCB0eXBlbmFtZSBOLCBuYSkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX05BTUUKLSAgICA6IEFVWDc3ODA3Nl9PUF9OX0NBTExTKEFVWDc3ODA3Nl9PUF9BUklUWSwgTikKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9BUklUWQotICAgICAgICAsIEFVWDc3ODA3Nl9PUF9OQU1FCi0gICAgICAgICwgKCBORE5CT09TVF9NUExfUFBfUEFSQU1TKEFVWDc3ODA3Nl9PUF9BUklUWSwgTikgKQotICAgICAgICApCi19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKCBORE5CT09TVF9QUF9ERUMoQVVYNzc4MDc2X09QX0FSSVRZKSwgMiwgPG5kbmJvb3N0L21wbC9hdXhfL251bWVyaWNfb3AuaHBwPiApKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfT1BfTl9DQUxMUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9PUF9SSUdIVF9PUEVSQU5ECi0KLSMgICBlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsMik7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgyLCB0eXBlbmFtZSBOLCBuYSkKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X09QX05BTUUKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLSNlbHNlCi0gICAgOiBpZl88Ci0jZW5kaWYKLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X09QX05BTUUsMik8TjEsTjI+Ci0gICAgICAgICwgQVVYNzc4MDc2X09QX05BTUU8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKTxOMSxOMj4KLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMywgTkROQk9PU1RfUFBfSU5DKEFVWDc3ODA3Nl9PUF9BUklUWSksIE4pCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0gICAgPgotI2VuZGlmCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfQVJJVFkKLSAgICAgICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICAgICAsICggTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhBVVg3NzgwNzZfT1BfQVJJVFksIE4pICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKQotCi0jZW5kaWYKLQotI2Vsc2UgLy8gQVVYNzc4MDc2X09QX0FSSVRZID09IDIKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9PUF9OQU1FCi0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0gICAgOiBBVVg3NzgwNzZfT1BfSU1QTF9OQU1FPAotICAgICAgICAgIHR5cGVuYW1lIEFVWDc3ODA3Nl9PUF9UQUdfTkFNRTxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBBVVg3NzgwNzZfT1BfVEFHX05BTUU8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PE4xLE4yPjo6dHlwZQotI2Vsc2UKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgQVVYNzc4MDc2X09QX0lNUExfTkFNRTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgQVVYNzc4MDc2X09QX1RBR19OQU1FPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBBVVg3NzgwNzZfT1BfVEFHX05BTUU8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLSNlbmRpZgotewotI2lmIEFVWDc3ODA3Nl9PUF9BUklUWSAhPSAyCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfQVJJVFkKLSAgICAgICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICAgICAsICggTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMoMiwgTiwgbmEpICkKLSAgICAgICAgKQotIyAgIGVsc2UKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfT1BfTkFNRSwyKSwgKE4xLCBOMikpCi0jICAgZW5kaWYKLQotI2Vsc2UKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIEFVWDc3ODA3Nl9PUF9OQU1FLCAoTjEsIE4yKSkKLSNlbmRpZgotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCBBVVg3NzgwNzZfT1BfQVJJVFksIEFVWDc3ODA3Nl9PUF9OQU1FKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDEKLQotLy8gRm9yIGdjYyA0LjQgY29tcGF0YWJpbGl0eSwgd2UgbXVzdCBpbmNsdWRlIHRoZQotLy8gTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIIHRlc3QgaW5zaWRlIGFuICNlbHNlIGNsYXVzZS4KLSNlbHNlIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotI2lmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpID09IDEKLQotIyAgIGRlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBOKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfT1BfTkFNRTxORE5CT09TVF9NUExfUFBfUEFSVElBTF9TUEVDX1BBUkFNUyhpXywgTiwgbmEpPgotI2lmIGlfICE9IDIKLSAgICA6IEFVWDc3ODA3Nl9PUF9OX0NBTExTKGlfLCBOKQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICBBVVg3NzgwNzZfT1BfQVJJVFkKLSAgICAgICAgLCBBVVg3NzgwNzZfT1BfTkFNRQotICAgICAgICAsICggTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMoaV8sIE4sIG5hKSApCi0gICAgICAgICkKLX07Ci0jZW5kaWYKLQotIyAgIHVuZGVmIGlfCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ4MDljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjMzMWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWNkN2ZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTUzNzdjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNjcxZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVjNjM5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIGJvb2wgRl9oYXNfYXBwbHkgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDBfYmNiIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PG5hPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDBfYmNiPCBGLHRydWUgPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjphcHBseSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgYXBwbHlfd3JhcF9pbXBsMF9iY2I8IEYsIGF1eDo6aGFzX2FwcGx5PEY+Ojp2YWx1ZSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDAgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0gICAgOiBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwxID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0gICAgOiBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwyID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotICAgIDogYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMyA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotICAgIDogYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNCwgVDUKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotICAgIDogYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNSA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjljMDE3YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJhNGNhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQxPCBGLFQxID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNTc1NGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNWQ1NTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEzZjg0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDgyODkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGNkZDIzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaXR4b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXR4b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNWQ4YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYzU4MGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJkaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMTU5YzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJlcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGVxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLQotICAgIDogZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJiNGJlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ3MWYxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJmdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sVGFnLCBpbnRfPCAtMSA+ID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88MT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDI+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88NT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDY+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LFRhZywgaW50XzwxPiA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSxBcml0eSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwgcXVvdGUxPGF1eDo6dGVtcGxhdGVfYXJpdHk+LCB0eXBlbmFtZSBsMTo6cmVzdWx0XyA+IGFyaXR5XzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgaWZfPCBpc19sZSxhcml0eV8sQXJpdHkgPjo6dHlwZSwgVGFnMiA+IGwzOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyLCBsMz4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMywgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MDg4NTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImdyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzU4NjI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZTE4OTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJpbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDllMzE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIml0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE1NWRhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJpdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyODdhMWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOWExMGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ3MjZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZWRiY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsaXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWJiMzZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsaXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2Zjg5NjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm1hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwNmUyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJtaW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDA5Zjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwNmE0Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJjMTlkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzE3NjFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJwbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YmQ2MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJwbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MmI5MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAicXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8VTE+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMiA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQsVTUgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmE0MzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInJldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOTgwOWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJyZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYzQ0ZjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDcyNDliNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2Mvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNTA1MjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZGI5MzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDlmMGYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDBjMDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInRpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQwYzMyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInVucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwKLSAgICAgICAgICAgICAgc2l6ZTxBcmdzPjo6dmFsdWUKLSAgICAgICAgICAgICwgRgotICAgICAgICAgICAgLCBBcmdzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YWI4NjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA3YmZkOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2MvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ2ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMDM5MDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgMAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLS8vLyBzaW5jZSB0aGUgZGVmYXVsdHMgYXJlICJsb3N0Iiwgd2UgaGF2ZSB0byBwYXNzICpzb21ldGhpbmcqIGV2ZW4gZm9yIG51bGxhcnkKLS8vLyBtZXRhZnVuY3Rpb24gY2xhc3NlcwotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAKLSAgICAgICAgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDA8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDAgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAxCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAyCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0gICAgOiBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwxID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMgotCi0gICAgICAgICwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0gICAgOiBhcHBseV93cmFwX2ltcGwyPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwyID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNAotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotICAgIDogYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMyA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotICAgIDogYXBwbHlfd3JhcF9pbXBsNDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNCwgVDUKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotICAgIDogYXBwbHlfd3JhcF9pbXBsNTwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsNSA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTE5OTI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1Mzk2ZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDA8Rj4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQwPEY+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMWI2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgyNDdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMjc2YjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzQ0MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ1NTg4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgID09IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWNiZDlmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sVGFnLCBpbnRfPCAtMSA+ID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88MT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDI+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88ND4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88NT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDY+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LFRhZywgaW50XzwxPiA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICAsIHR5cGVuYW1lIEFyaXR5Ci0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSxBcml0eSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwgcXVvdGUxPGF1eDo6dGVtcGxhdGVfYXJpdHk+LCB0eXBlbmFtZSBsMTo6cmVzdWx0XyA+IGFyaXR5XzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgaWZfPCBpc19sZSxhcml0eV8sQXJpdHkgPjo6dHlwZSwgVGFnMiA+IGwzOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyLCBsMz4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMywgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZWI0YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmQ0MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmMzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI4ZWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2QxNDFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTRmZGE4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAtIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U4OTY5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbW9kdWx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbW9kdWx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1vZHVsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1vZHVsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0KLSAgICA6IG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRlMWUxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWU4ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOGIyY2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U3N2ZiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNmMxNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Y2M2ODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzRjYTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmMmZkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk2NGZiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2E1ZmUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTA1NzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1NWZlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwNDllYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgaW50IHNpemUsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAwLEYsQXJncyA+Ci0gICAgOiBhcHBseTA8Ci0gICAgICAgICAgRgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMSxGLEFyZ3MgPgotICAgIDogYXBwbHkxPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMixGLEFyZ3MgPgotICAgIDogYXBwbHkyPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDMsRixBcmdzID4KLSAgICA6IGFwcGx5MzwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDQsRixBcmdzID4KLSAgICA6IGFwcGx5NDwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA1LEYsQXJncyA+Ci0gICAgOiBhcHBseTU8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp1bnBhY2tfYXJnc19pbXBsPAotICAgICAgICAgICAgICBzaXplPEFyZ3M+Ojp2YWx1ZQotICAgICAgICAgICAgLCBGCi0gICAgICAgICAgICAsIEFyZ3MKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2M1NTEvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjYzU1MS92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjNTUxL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0ODA5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImFkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIzMzFkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjZDdmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1Mzc3Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjY3MWQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4YWJhMzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAwCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotLy8vIHNpbmNlIHRoZSBkZWZhdWx0cyBhcmUgImxvc3QiLCB3ZSBoYXZlIHRvIHBhc3MgKnNvbWV0aGluZyogZXZlbiBmb3IgbnVsbGFyeQotLy8vIG1ldGFmdW5jdGlvbiBjbGFzc2VzCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotICAgIDogYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDEgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDIgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0gICAgOiBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwzID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0gICAgOiBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw0ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0gICAgOiBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw1ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YzAxN2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJhcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYTRjYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTU3NTRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZwotewotICAgIHR5cGVkZWYgQXJnIG5leHQ7Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnPCBhcmc8IC0xID4sIEFyZyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBcmc6Om5leHQgbmV4dDsKLSAgICB0eXBlZGVmIEFyZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFUxCi0gICAgLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTVkNTU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhM2Y4NDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJiaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdGFuZF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdGFuZF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0YW5kX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA4Mjg5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhjZGQyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImJpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzVkOGExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJkZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWM1ODBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImRpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBkaXZpZGVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZGl2aWRlc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBkaXZpZGVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZGl2aWRlc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgZGl2aWRlcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTE1OWMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImVxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYjRiZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJmb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBmb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NzFmMTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImZ1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPixUYWcsIGludF88IC0xID4gPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwxPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwyPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw0PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDU+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw1PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Nj4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sVGFnLCBpbnRfPDE+ID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw2PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgICwgdHlwZW5hbWUgQXJpdHkKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxLEFyaXR5ID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPCBxdW90ZTE8YXV4Ojp0ZW1wbGF0ZV9hcml0eT4sIHR5cGVuYW1lIGwxOjpyZXN1bHRfID4gYXJpdHlfOwotICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBpZl88IGlzX2xlLGFyaXR5XyxBcml0eSA+Ojp0eXBlLCBUYWcyID4gbDM7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDIsIGwzPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAzLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjA4ODUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9ncmVhdGVyX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1ODYyOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImdyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2UxODk0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImluaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ5ZTMxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAiaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNTVkYTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIml0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mjg3YTFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJsYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjlhMTBiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0NzI2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGVkYmNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFiYjM2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gImxpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmY4OTY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAibWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMDZlMjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm1pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwOWY4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJtb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MDZhNDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gIm5vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYzE5ZDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAib3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMxNzYxZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInBsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGJkNjMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInBsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjlkMThiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInF1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YTQzOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInJldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5ODA5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJyZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgcmV2ZXJzZV9pdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9jaHVuazwgLTEgPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJjNDRmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzI0OWI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM1MDUyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhkYjkzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOWYwZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MGMwODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInRpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDBjMzI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInVucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwKLSAgICAgICAgICAgICAgc2l6ZTxBcmdzPjo6dmFsdWUKLSAgICAgICAgICAgICwgRgotICAgICAgICAgICAgLCBBcmdzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlhYjg2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDdiZmQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ2ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTAyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXAwPCBGLHRydWVfID4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZWYzZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDA2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU2ZjYzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmVlZWI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDhjYzVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MjQ3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI3NmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmM0NDMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NTU4ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRjZDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYxZWI1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ViNGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWJkNDEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjMxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRiOGVlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkMTQxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0ZmRhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODk2OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZTFlMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhiMmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZTc5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi0gICAgOiBUCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjxVMT4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0LFU1ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTY0ZmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTVmZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQyYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTVmZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTAyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXAwPCBGLHRydWVfID4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMGJmNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNmYzY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNDZlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDhjYzVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MjQ3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI3NmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmM0NDMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NTU4ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRjZDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FjYmQ5Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBBcml0eQotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LFRhZywgaW50XzwgLTEgPiA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88MT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDI+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwyPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50XzwzPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88Mz4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDQ+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDQ+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgICAsIGludF88NT4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDU+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgICwgaW50Xzw2PgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPixUYWcsIGludF88MT4gPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAgLCBpbnRfPDY+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgLCB0eXBlbmFtZSBBcml0eQotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEsQXJpdHkgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgLCBpbnRfPDM+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8IHF1b3RlMTxhdXg6OnRlbXBsYXRlX2FyaXR5PiwgdHlwZW5hbWUgbDE6OnJlc3VsdF8gPiBhcml0eV87Ci0gICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIGlmXzwgaXNfbGUsYXJpdHlfLEFyaXR5ID46OnR5cGUsIFRhZzIgPiBsMzsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mzxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMiwgbDM+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDMsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ViNGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWJkNDEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjMxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRiOGVlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkMTQxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0ZmRhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODk2OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZTFlMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhiMmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmIzYTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjxVMT4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0LFU1ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTY0ZmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTVmZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYmEwYWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ0ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPiBzdHJ1Y3QgYXJpdHlfdGFnCi17Ci0gICAgdHlwZWRlZiBjaGFyICgmdHlwZSlbTiArIDFdOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgQzEsIGludCBDMiwgaW50IEMzLCBpbnQgQzQsIGludCBDNSwgaW50IEM2Ci0gICAgPgotc3RydWN0IG1heF9hcml0eQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICAoIEM2ID4gMCA/IEM2IDogKCBDNSA+IDAgPyBDNSA6ICggQzQgPiAwID8gQzQgOiAoIEMzID4gMCA/IEMzIDogKCBDMiA+IDAgPyBDMiA6ICggQzEgPiAwID8gQzEgOiAtMSApICkgKSApICkgKQotICAgICAgICApOwotfTsKLQotYXJpdHlfdGFnPDA+Ojp0eXBlIGFyaXR5X2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDE+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPFQxPiA+LCBhcml0eV90YWc8MT4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8Mj46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8IFQxLFQyID4gPiwgYXJpdHlfdGFnPDI+KTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8Mz46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8IFQxLFQyLFQzID4gPiwgYXJpdHlfdGFnPDM+KTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzw0Pjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjwgVDEsVDIsVDMsVDQgPiA+LCBhcml0eV90YWc8ND4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDU+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPCBUMSxUMixUMyxUNCxUNSA+ID4sIGFyaXR5X3RhZzw1Pik7Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNgotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzw2Pjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjwgVDEsVDIsVDMsVDQsVDUsVDYgPiA+LCBhcml0eV90YWc8Nj4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIGludCBOID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjxGPigpLCBhcml0eV90YWc8Tj4oKSkpIC0gMQotICAgICAgICApOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gKAotICAgICAgICAgIG1heF9hcml0eTwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiwxID46OnZhbHVlLCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDIgPjo6dmFsdWUsIHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsMyA+Ojp2YWx1ZSwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiw0ID46OnZhbHVlLCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDUgPjo6dmFsdWUsIHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsNiA+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICApKTsKLSAgICB0eXBlZGVmIG1wbDo6aW50Xzx2YWx1ZT4gdHlwZTsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTVmZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NjEyYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NTIwNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2OWI5NDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYW5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFuZF9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCx0cnVlXyA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLSAgICA6OnJlc3VsdF88IHRydWVfLHRydWVfLHRydWVfLHRydWVfID4KLSAgICAgICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNWM0NzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MDxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTE8IGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkyPCBpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTM8IGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTQ8IGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHk1PCBpbnQsaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYTlhNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkxNTdkMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTAKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQICA9IGludCA+IHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCAgPSBpbnQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTw+Ci0gICAgewotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTA8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMDxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IG1zdmNfYXBwbHkxCi17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8VDE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2FwcGx5MTxGPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICBUMQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAxPCBpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTIKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTI8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgVDEsIFQyCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDI8IGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTMKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTM8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAzPCBpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5NAotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICAgICA+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHk0PEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQ8IGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5NQotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgICAgICA+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHk1PEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXA1PCBpbnQsaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5NGEyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFUxLFUyLFUzLFU0LFU1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgYXJpdHlfID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfICA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQyPCBGLFQxLFQyID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYTJiMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVTEsVTIsVTMsVTQsVTUgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8IGFyZzwgLTEgPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8QXJnPjo6dHlwZSBuZXh0OwotICAgICAgICB0eXBlZGVmIEFyZyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi0gICAgOiByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8VD46OnRlbXBsYXRlIHJlc3VsdF88QXJnPgotewotfTsKLQotdGVtcGxhdGU8IGludCBhcml0eV8gPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDI8IEYsVDEsVDIgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmQxYjZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlYjE0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRhbmRfPAotICAgICAgICAgICAgICBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdGFuZF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdGFuZF8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0YW5kX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICYgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRhbmRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZjVhMDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0b3JfPAotICAgICAgICAgICAgICBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdG9yX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdG9yXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIHwgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Y2Y3YzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdHhvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdHhvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0eG9yXzwKLSAgICAgICAgICAgICAgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXR4b3JfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXR4b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdHhvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSBeIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0eG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDk3ZDgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2RlcXVlX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBkZXF1ZV9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2RlcXVlX2FyZzxUMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpkZXF1ZV9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjYzMWFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBkaXZpZGVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAsIGRpdmlkZXM8Ci0gICAgICAgICAgICAgIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZGl2aWRlc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZGl2aWRlczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBkaXZpZGVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC8gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6ZGl2aWRlc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhMmNhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA9PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGNhMGM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBmb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBmb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBmb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBmb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLSAgICA6IGZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgIAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LCBUYWcgPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LCBUYWcgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDgzNGNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Y2EwYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjBhNDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDMSwgYm9vbCBDMiA+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxLCBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBEZXJpdmVkIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgZmFsc2UsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLGZhbHNlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMiB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IGF1eDo6aW5oZXJpdDJfaW1wbDwKLSAgICAgICAgICBpc19lbXB0eV9iYXNlPFQxPjo6dmFsdWUKLSAgICAgICAgLCBpc19lbXB0eV9iYXNlPFQyPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgaW5oZXJpdDI8IFQxLFQyID4sVDEsIFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXQyOjp0eXBlXyB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1MzE3MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotICAgIDogaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YjZkMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbGVzc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFjMmEzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxOWU2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxpc3QwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2xpc3RfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGxpc3RfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19saXN0X2FyZzxUMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUOT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDExPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQ3ZjdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPAotICAgICAgICAgICAgICBULCBDMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX2xpc3RfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbGlzdF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9jX2FyZzxDMT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNz46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpsaXN0X2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogYXV4OjpsaXN0X2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTE3NGM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IG1hcF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBtYXAwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfbWFwX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19tYXBfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IG1hcF9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX21hcF9hcmc8VDE+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQzPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDc+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ5Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDExPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDEzPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE1Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXBfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjptYXBfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bWFwX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcAotICAgIDogYXV4OjptYXBfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUzYTkwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbWludXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBtaW51czI8IE4xLE4yID4KLSAgICAgICAgLCBtaW51czwKLSAgICAgICAgICAgICAgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBtaW51c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtaW51czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbWludXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgLSBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bWludXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTg1ZWJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtb2R1bHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICUgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bW9kdWx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2IwYTEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyM2I4ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3Qgb3JfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBvcl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxmYWxzZV8gPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8ZmFsc2U+Ci0gICAgOjpyZXN1bHRfPCBmYWxzZV8sZmFsc2VfLGZhbHNlXyxmYWxzZV8gPgotICAgICAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsVDUgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk3Nzk0YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgcGx1czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgcGx1czI8IE4xLE4yID4KLSAgICAgICAgLCBwbHVzPAotICAgICAgICAgICAgICBwbHVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHBsdXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHBsdXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgcGx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSArIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnBsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzdmYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2UzY2RkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDQxN2Y0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0ZDUzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc2V0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3NldF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBzZXRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfYXJnPFQxPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWYyYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MTk5OWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X2xlZnRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA8PCBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9sZWZ0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYjYwYTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4gPj4gcykpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X3JpZ2h0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMWRiYTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5PGludD4KLSAgICA6IG1wbDo6aW50XzwgLTEgPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmVjYjYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCB0aW1lczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAsIHRpbWVzPAotICAgICAgICAgICAgICB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHRpbWVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHRpbWVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCB0aW1lc193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAqIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4Ojp0aW1lc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNkYjQ2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgc2l6ZSkgPiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkwPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTE8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MjwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MzwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTU8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBGLEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiNjcwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3ZlY3Rvcl9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc192ZWN0b3JfYXJnPFQxPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ3Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IGF1eDo6dmVjdG9yX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NTRjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3ZlY3Rvcl9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc192ZWN0b3JfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM1Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDOT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzEzPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxNT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiBhdXg6OnZlY3Rvcl9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRhNmYzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBhbmRfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LHRydWVfID4KLSAgICB7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IHRydWVfLHRydWVfLHRydWVfLHRydWVfID4KLSAgICAgICAgOiB0cnVlXwotICAgIHsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MWZkZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTA8aW50PgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MTwgaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkyPCBpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkzPCBpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5NDwgaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHk1PCBpbnQsaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYTlhNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkMmYwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAwPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgVDEKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAxPCBpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIFQxLCBUMgotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDI8IGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMzwgaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXA0PCBpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDU8IGludCxpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDk0YTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVTEsVTIsVTMsVTQsVTUgPgotewotfTsKLQotdGVtcGxhdGU8IGludCBhcml0eV8gPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDA8Rj4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDE8IEYsVDEgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDI8IEYsVDEsVDIgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQzPCBGLFQxLFQyLFQzID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNDwgRixUMSxUMixUMyxUNCA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhMmIyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDwgYXJnPCAtMSA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxBcmc+Ojp0eXBlIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLSAgICA6IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDxUPjo6dGVtcGxhdGUgcmVzdWx0XzxBcmc+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8IGludCBOID4KLWF1eDo6eWVzX3RhZyBpc19iaW5kX2hlbHBlcihhcmc8Tj4qKTsKLQotdGVtcGxhdGU8IGJvb2wgaXNfcmVmXyAgPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpCi0gICAgICAgICAgICAgICAgPT0gc2l6ZW9mKGF1eDo6eWVzX3RhZykKLSAgICAgICAgICAgICk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGUKLSAgICA6IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDwgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19yZWZlcmVuY2VfaW1wbDxUPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDA8Rj4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDE8IEYsVDEgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMzwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQzPCBGLFQxLFQyLFQzID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNDwgRixUMSxUMixUMyxUNCA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDFiNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2RmYWM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdGFuZF8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRhbmRfPAotICAgICAgICAgICAgICBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdGFuZF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdGFuZF8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0YW5kX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICYgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRhbmRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZWI2YmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdG9yXzwKLSAgICAgICAgICAgICAgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXRvcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSB8IG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTA4OWE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdHhvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXR4b3JfPAotICAgICAgICAgICAgICBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdHhvcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdHhvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0eG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIF4gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXR4b3Jfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTdkODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGRlcXVlX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19kZXF1ZV9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGRlcXVlX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfZGVxdWVfYXJnPFQxPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ3Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDExPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE3Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxOT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBkZXF1ZV9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OmRlcXVlX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmRlcXVlX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiBhdXg6OmRlcXVlX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmRlcXVlX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZjQ5YzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAsIGRpdmlkZXM8Ci0gICAgICAgICAgICAgIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZGl2aWRlc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZGl2aWRlczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBkaXZpZGVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC8gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6ZGl2aWRlc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5ZjQ3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBlcXVhbF90b19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID09Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2FjZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIGZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotICAgIDogZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBNV0NXIDguMysvRURHIDwgMzAzLCBsZWFkcyB0byBhbWJpZ3VpdHkgb24gRGlnaXRhbCBNYXJzCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnMSwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDI+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1Y2MzMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTcwMjc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjBhNDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDMSwgYm9vbCBDMiA+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxLCBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBEZXJpdmVkIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgZmFsc2UsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLGZhbHNlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMiB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IGF1eDo6aW5oZXJpdDJfaW1wbDwKLSAgICAgICAgICBpc19lbXB0eV9iYXNlPFQxPjo6dmFsdWUKLSAgICAgICAgLCBpc19lbXB0eV9iYXNlPFQyPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgaW5oZXJpdDI8IFQxLFQyID4sVDEsIFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXQyOjp0eXBlXyB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFhNDVmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotICAgIDogaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNTg5NTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBsZXNzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODkwNDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMTllNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsaXN0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19saXN0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBsaXN0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9hcmc8VDE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDEzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkN2Y3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19saXN0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IGxpc3RfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzExPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxNzRjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBtYXBfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbWFwMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX21hcF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbWFwX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBtYXBfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19tYXBfYXJnPFQxPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bWFwX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYzI3YWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbWludXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIG1pbnVzMjwgTjEsTjIgPgotICAgICAgICAsIG1pbnVzPAotICAgICAgICAgICAgICBtaW51czI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG1pbnVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1pbnVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtaW51c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAtIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjptaW51c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmEyMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbW9kdWx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAlIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1vZHVsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg2MTgwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY0NDY1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3Qgb3JfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBvcl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxmYWxzZV8gPgotICAgIHsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgZmFsc2VfLGZhbHNlXyxmYWxzZV8sZmFsc2VfID4KLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmOGNjYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgcGx1czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBwbHVzMjwgTjEsTjIgPgotICAgICAgICAsIHBsdXM8Ci0gICAgICAgICAgICAgIHBsdXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgcGx1c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgcGx1czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBwbHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICsgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6cGx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI1OThjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgcXVvdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBxdW90ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPFUxPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMiA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzLFU0ID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzZjMTczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2NjNjg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0ZDUzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc2V0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3NldF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBzZXRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfYXJnPFQxPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWYyYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MzJlZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuIDw8IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X2xlZnRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MzgwMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaGlmdCwgVCBuLCBTaGlmdCBzID4KLXN0cnVjdCBzaGlmdF9yaWdodF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuID4+IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9yaWdodF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgTjo6dmFsdWUKLSAgICAgICAgICAgICwgUzo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzFkYmE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eTxpbnQ+Ci0gICAgOiBtcGw6OmludF88IC0xID4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYyZjI2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCB0aW1lczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgdGltZXM8Ci0gICAgICAgICAgICAgIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdGltZXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgdGltZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHRpbWVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICogbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnRpbWVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2RiNDZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBzaXplKSA+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHk7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTA8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkyPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkzPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk0PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8NT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IEYsQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2I2NzA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc192ZWN0b3JfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3ZlY3Rvcl9hcmc8VDE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQzPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUNT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ5Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDExPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDEzPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE1Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE3Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDE5Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfaW1wbAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogYXV4Ojp2ZWN0b3JfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY1NGM2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPAotICAgICAgICAgICAgICBULCBUKEMwKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMl9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNV9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMF9jPAotICAgICAgICAgICAgICBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc192ZWN0b3JfY19hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2NfYXJnPExPTkdfTUFYPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICAsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICAsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5LCBsb25nIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX3ZlY3Rvcl9jX2FyZzxDMT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMzPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDNz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM5Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxMT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxNz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX2NfY291bnRfYXJnczwKLSAgICAgICAgICBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2NfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWI5NWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNzJiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDAzOTA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAwCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotLy8vIHNpbmNlIHRoZSBkZWZhdWx0cyBhcmUgImxvc3QiLCB3ZSBoYXZlIHRvIHBhc3MgKnNvbWV0aGluZyogZXZlbiBmb3IgbnVsbGFyeQotLy8vIG1ldGFmdW5jdGlvbiBjbGFzc2VzCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotICAgIDogYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDEgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDIgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0gICAgOiBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwzID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0gICAgOiBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw0ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0gICAgOiBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw1ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwYmY3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Y2ZjNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA0NmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgyNDdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMjc2YjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzQ0MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ1NTg4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBUIHJlc3VsdF87Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IGFyZzxOPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIHRydWVfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjphcmc8Tj4gcmVzdWx0XzsgLy8gcXVhbGlmaWVkIGZvciB0aGUgc2FrZSBvZiBNSVBTcHJvIDcuNDEKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQwPEY+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQwPAotICAgICAgICAgIEYKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDEKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MTwgdHJ1ZV8sVGFnLEYsTDEgPgotewotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgcXVvdGUxPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8VDE+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDE8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQxPCBGLFQxID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDIKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MjwgdHJ1ZV8sVGFnLEYsTDEsTDIgPgotewotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgcXVvdGUyPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDI8IEYsVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MwotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzPCB0cnVlXyxUYWcsRixMMSxMMixMMyA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBxdW90ZTM8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQzPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDM8IEYsVDEsVDIsVDMgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NAotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NDwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQgPgotewotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgcXVvdGU0PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NDwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNAotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUsIHR5cGVuYW1lIEwzOjp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnR5cGUsIHR5cGVuYW1lIEw1Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNCwgdHlwZW5hbWUgTDUKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0NTwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMsTDQsTDUgPgotewotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgcXVvdGU1PCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICAsIHR5cGVuYW1lIEw0OjpyZXN1bHRfLCB0eXBlbmFtZSBMNTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNSxUYWcgPiBsNTsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlLCBpc19sZTQ6OnZhbHVlCi0gICAgICAgICwgaXNfbGU1Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDU8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQsIGw1Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWwgY2FzZSBmb3IgJ3Byb3RlY3QnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBsYW1iZGE8IG1wbDo6cHJvdGVjdDxUPiwgVGFnID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxUPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHNwZWNpYWxpemF0aW9ucyBmb3IgdGhlIG1haW4gJ2JpbmQnIGZvcm0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIE1XQ1cgOC4zKy9FREcgPCAzMDMsIGxlYWRzIHRvIGFtYmlndWl0eSBvbiBEaWdpdGFsIE1hcnMKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcxLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBsYW1iZGE8IEYsVGFnMSA+Ci0gICAgICAgICwgVGFnMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IEYsVGFnMiA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ViNGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWJkNDEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjMxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRiOGVlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkMTQxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QwPCAgPgotewotICAgIHR5cGVkZWYgbGlzdDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGxpc3QyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0ZmRhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODk2OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZTFlMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhiMmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZTc5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotICAgIDogVAotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHF1b3RlX2ltcGw8IFQsZmFsc2UgPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTEKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8VTE+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCxVNSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjxGb3J3YXJkT3AsU3RhdGUsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZT46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUzIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMixpdGVyMiA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIGl0ZXI0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTY0ZmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTVmZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQyYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTVmZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSxGLCBBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY5Yjk0MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYW5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFuZF9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCx0cnVlXyA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLSAgICA6OnJlc3VsdF88IHRydWVfLHRydWVfLHRydWVfLHRydWVfID4KLSAgICAgICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I2MGUwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkwPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTE8Ci0gICAgICAgICAgICAgIEYsIFQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTI8Ci0gICAgICAgICAgICAgIEYsIFQxLCBUMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkzPAotICAgICAgICAgICAgICBGLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTQ8Ci0gICAgICAgICAgICAgIEYsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTU8Ci0gICAgICAgICAgICAgIEYsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19hcHBseV9hcmcKLXsKLSAgICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSAgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2FwcGx5X2FyZzxuYT4KLXsKLSAgICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSAgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X2NvdW50X2FyZ3MKLXsKLSAgICBzdGF0aWMgaW50IGNvbnN0IHZhbHVlICA9IGlzX2FwcGx5X2FyZzxUMT46OnZhbHVlICsgaXNfYXBwbHlfYXJnPFQyPjo6dmFsdWUgKyBpc19hcHBseV9hcmc8VDM+Ojp2YWx1ZSArIGlzX2FwcGx5X2FyZzxUND46OnZhbHVlICsgaXNfYXBwbHlfYXJnPFQ1Pjo6dmFsdWU7Ci0KLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhdXg6OmFwcGx5X2Nob29zZXI8Ci0gICAgICAgICAgYXV4OjphcHBseV9jb3VudF9hcmdzPCBUMSxUMixUMyxUNCxUNSA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBGLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY1Mjg4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IE5ETkJPT1NUX0FVWF9OVFRQX0RFQ0woaW50LCBhcml0eV8pID4gc3RydWN0IGFwcGx5X2Nob29zZXI7Ci19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWNiZDU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLQotICAgICwgdHlwZW5hbWUgaGFzX2FwcGx5XyA9IHR5cGVuYW1lIGF1eDo6aGFzX2FwcGx5PEY+Ojp0eXBlCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8ICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM5NjJlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDg2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDA8Rj4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMDxGPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDE8IEYsVDEgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNDwgRixUMSxUMixUMyxUNCA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYmluZF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19iaW5kX2FyZzxUMT46OnZhbHVlICsgaXNfYmluZF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUMz46OnZhbHVlICsgaXNfYmluZF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUNT46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYXV4OjpiaW5kX2Nob29zZXI8Ci0gICAgICAgICAgYXV4OjpiaW5kX2NvdW50X2FyZ3M8IFQxLFQyLFQzLFQ0LFQ1ID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEYsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTUyNTFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDwgYXJnPCAtMSA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxBcmc+Ojp0eXBlIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLSAgICA6IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDxUPjo6dGVtcGxhdGUgcmVzdWx0XzxBcmc+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDA8Rj4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDM8IEYsVDEsVDIsVDMgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYmluZF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19iaW5kX2FyZzxUMT46OnZhbHVlICsgaXNfYmluZF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUMz46OnZhbHVlICsgaXNfYmluZF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUNT46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYXV4OjpiaW5kX2Nob29zZXI8Ci0gICAgICAgICAgYXV4OjpiaW5kX2NvdW50X2FyZ3M8IFQxLFQyLFQzLFQ0LFQ1ID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEYsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDQ2ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhMmUwMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRhbmRfPAotICAgICAgICAgICAgICBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF8yCi0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRhbmRfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYzkyM2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0b3JfPAotICAgICAgICAgICAgICBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl8yCi0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ0ODcxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXR4b3JfPAotICAgICAgICAgICAgICBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl8yCi0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXR4b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTdkODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2RlcXVlX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBkZXF1ZV9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2RlcXVlX2FyZzxUMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpkZXF1ZV9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhOThiYTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGRpdmlkZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgZGl2aWRlczwKLSAgICAgICAgICAgICAgZGl2aWRlczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzMgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZGl2aWRlczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFlNmQxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2FjZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBmb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBmb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLSAgICA6IGZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgIAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotdGVtcGxhdGU8IGludCBOLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgYXJnPE4+LCBUYWcgPgotewotICAgIHR5cGVkZWYgdHJ1ZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OmFyZzxOPiByZXN1bHRfOyAvLyBxdWFsaWZpZWQgZm9yIHRoZSBzYWtlIG9mIE1JUFNwcm8gNy40MQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDA8Rj4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDA8Ci0gICAgICAgICAgRgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MQotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxPCB0cnVlXyxUYWcsRixMMSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBxdW90ZTE8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjxUMT4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgYmluZDE8IEYsVDEgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MgotewotICAgIHR5cGVkZWYgRjwKLSAgICAgICAgICB0eXBlbmFtZSBMMTo6dHlwZSwgdHlwZW5hbWUgTDI6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyPCB0cnVlXyxUYWcsRixMMSxMMiA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICBxdW90ZTI8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MjwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMjwgRixUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMwotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQzCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDM8IHRydWVfLFRhZyxGLEwxLEwyLEwzID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIHF1b3RlMzwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDM8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMwotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMzwgRixUMSxUMixUMyA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzLCB0eXBlbmFtZSBMNAotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ0PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICBxdW90ZTQ8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ0PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0Ci0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1Ci17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZSwgdHlwZW5hbWUgTDM6OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6dHlwZSwgdHlwZW5hbWUgTDU6OnR5cGUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBQNSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0LCB0eXBlbmFtZSBMNQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQ1PCB0cnVlXyxUYWcsRixMMSxMMixMMyxMNCxMNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICBxdW90ZTU8IEYsVGFnID4KLSAgICAgICAgLCB0eXBlbmFtZSBMMTo6cmVzdWx0XywgdHlwZW5hbWUgTDI6OnJlc3VsdF8sIHR5cGVuYW1lIEwzOjpyZXN1bHRfCi0gICAgICAgICwgdHlwZW5hbWUgTDQ6OnJlc3VsdF8sIHR5cGVuYW1lIEw1OjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMyxUYWcgPiBsMzsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDQsVGFnID4gbDQ7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ1LFRhZyA+IGw1OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUsIGlzX2xlMzo6dmFsdWUsIGlzX2xlNDo6dmFsdWUKLSAgICAgICAgLCBpc19sZTU6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0NTwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzLCBsNCwgbDUKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbCBjYXNlIGZvciAncHJvdGVjdCcKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IGxhbWJkYTwgbXBsOjpwcm90ZWN0PFQ+LCBUYWcgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PFQ+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gc3BlY2lhbGl6YXRpb25zIGZvciB0aGUgbWFpbiAnYmluZCcgZm9ybQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IHJlc3VsdF87Ci0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgTVdDVyA4LjMrL0VERyA8IDMwMywgbGVhZHMgdG8gYW1iaWd1aXR5IG9uIERpZ2l0YWwgTWFycwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZzEsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGxhbWJkYTwgRixUYWcxID4KLSAgICAgICAgLCBUYWcyCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgRixUYWcyID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFRhZzEsVGFnMiA+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZWI2MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYjQ0NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2IwYTQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIEMxLCBib29sIEMyID4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEsIFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIERlcml2ZWQgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCBmYWxzZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsZmFsc2UgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIFQyIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgdHJ1ZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogYXV4Ojppbmhlcml0Ml9pbXBsPAotICAgICAgICAgIGlzX2VtcHR5X2Jhc2U8VDE+Ojp2YWx1ZQotICAgICAgICAsIGlzX2VtcHR5X2Jhc2U8VDI+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBpbmhlcml0MjwgVDEsVDIgPixUMSwgVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdDI6OnR5cGVfIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYTQ1ZmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi0gICAgOiBpdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmU4NjA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2IxOWFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxOWU2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsaXN0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19saXN0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBsaXN0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9hcmc8VDE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDEzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQ3ZjdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19saXN0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IGxpc3RfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzExPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTE3NGM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBtYXBfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbWFwMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX21hcF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbWFwX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBtYXBfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19tYXBfYXJnPFQxPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bWFwX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE0ZDY2OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbWludXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBtaW51czI8IE4xLE4yID4KLSAgICAgICAgLCBtaW51czwKLSAgICAgICAgICAgICAgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzMgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbWludXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMmU3YWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOTEwOWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyM2I4ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IG9yX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiB0cnVlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgb3JfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBvcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsZmFsc2VfID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPGZhbHNlPgotICAgIDo6cmVzdWx0XzwgZmFsc2VfLGZhbHNlXyxmYWxzZV8sZmFsc2VfID4KLSAgICAgICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM3MmVhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgcGx1czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgcGx1czI8IE4xLE4yID4KLSAgICAgICAgLCBwbHVzPAotICAgICAgICAgICAgICBwbHVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXMyCi0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBwbHVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjU5OGNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgcXVvdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBxdW90ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPFUxPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMiA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzLFU0ID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNmMxNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Y2M2ODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODRkNTNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc2V0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3NldF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBzZXRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfYXJnPFQxPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1ZjJhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI1Njc1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGRjMGRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTA1NzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M5OWU2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgLCB0aW1lczwKLSAgICAgICAgICAgICAgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzMgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgdGltZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNkYjQ2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHNpemUpID4gc3RydWN0IHVucGFja19hcmdzX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkxPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTI8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTM8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTQ8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk1PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgRixBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiNjcwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc192ZWN0b3JfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3ZlY3Rvcl9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwCi0gICAgLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNQotICAgICwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfdmVjdG9yX2FyZzxUMT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMj46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ1Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUNz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUOD46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTE+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTc+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY2hvb3NlcjwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NTRjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjNfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjZfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2NfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjlfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTBfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTNfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTZfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTlfYzwKLSAgICAgICAgICAgICAgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8Ci0gICAgICAgICAgICAgIFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIEMgPgotc3RydWN0IGlzX3ZlY3Rvcl9jX2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc192ZWN0b3JfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jX2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfdmVjdG9yX2NfYXJnPEMxPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzM+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDNT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEM2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEM3Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8Qzk+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzExPjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxMz46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9jX2FyZzxDMTU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9jX2FyZzxDMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc192ZWN0b3JfY19hcmc8QzE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2NfYXJnPEMxOT46OnZhbHVlICsgaXNfdmVjdG9yX2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWI5NWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNzJiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzkwMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCBhcHBseV93cmFwMDwgRix0cnVlXyA+Ci0gICAgOiBGOjphcHBseQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PFQxPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY0YzRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjM0NDY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA0NmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNTQyYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdGFuZF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAmIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0YW5kX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg4NGRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSB8IG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzkyZTJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXR4b3Jfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgXiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdHhvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjFlMDRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBkaXZpZGVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC8gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6ZGl2aWRlc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJmMWUyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPT0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0Y2Q0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBNV0NXIDguMysvRURHIDwgMzAzLCBsZWFkcyB0byBhbWJpZ3VpdHkgb24gRGlnaXRhbCBNYXJzCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnMSwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDI+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YTFiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZWE2Y2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmMzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBBcml0eSA+IHN0cnVjdCBsYW1iZGFfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIHR5cGVkZWYgaXNfcGxhY2Vob2xkZXI8VD4gaXNfbGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzUsIFRhZywgZmFsc2VfID4gbDU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw0Ojppc19sZSBpc19sZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNSk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGw0Ojp0eXBlLCB0eXBlbmFtZSBsNTo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBQcm90ZWN0Ci0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIC8vLyBNZXRhZnVuY3Rpb24gZm9yd2FyZGluZyBjb25mdXNlcyBNU1ZDIDYueAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp0ZW1wbGF0ZV9hcml0eTxUPjo6dHlwZSBhcml0eV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9pbXBsPGFyaXR5Xz4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFRhZyxQcm90ZWN0ID4gbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjp0eXBlIHR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6aXNfbGUgaXNfbGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLCBsYW1iZGEsIChULCBUYWcsIFByb3RlY3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTZmMDg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTA2Zjk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MF9jPFQ+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwgVCxDMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDJfYzwgVCxDMCxDMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAwPCAgPgotewotICAgIHR5cGVkZWYgbWFwMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwCi0gICAgOiBtYXAyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWNjYzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtaW51c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAtIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjptaW51c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjZhYjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbW9kdWx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAlIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1vZHVsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwMWI0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWU4ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNjFiYjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHBsdXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgKyBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpwbHVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTc3ZmJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTEgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGU0IGJrd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlNCwgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQwPCAgPgotewotICAgIHR5cGVkZWYgc2V0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0Ci0gICAgOiBzZXQyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxX2M8IFQsQzAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQyX2M8IFQsQzAsQzEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQzX2M8IFQsQzAsQzEsQzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE1X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxNl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTdfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MThfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmM5ZTZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X2xlZnRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA8PCBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9sZWZ0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYjkxNmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA+PiBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6c2hpZnRfcmlnaHRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUwNTc4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNTQwNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHRpbWVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICogbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnRpbWVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMzMWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSxGLCBBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjc1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwPCAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTxUMD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMzwgVDAsVDEsVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxODwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTk8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmZiZGI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODA5Mjc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGVjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzkwMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXAwPCBGLHRydWVfID4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBiZjczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVjZmM2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDQ2ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ1MGJiZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQwMmEzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTJlOGE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IyPCBUMCxUMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgZGVxdWU8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGRlcXVlCi0gICAgOiB2ZWN0b3IyMDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZjZlMjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDcwYTA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGFtYmRhX29yPCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgCi0gICAgPgotc3RydWN0IGxhbWJkYQotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgVCByZXN1bHRfOwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4sIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBhcmc8Tj4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiB0cnVlXyBpc19sZTsKLSAgICB0eXBlZGVmIG1wbDo6YXJnPE4+IHJlc3VsdF87IC8vIHF1YWxpZmllZCBmb3IgdGhlIHNha2Ugb2YgTUlQU3BybyA3LjQxCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMDxGPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kMDwKLSAgICAgICAgICBGCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMQotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQxCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDE8IHRydWVfLFRhZyxGLEwxID4KLXsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIHF1b3RlMTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgbXBsOjpwcm90ZWN0PHJlc3VsdF8+IHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPFQxPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQxPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBiaW5kMTwgRixUMSA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgIEYKLSAgICAgICAgLCBUMQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMgotICAgID4KLXN0cnVjdCBsZV9yZXN1bHQyCi17Ci0gICAgdHlwZWRlZiBGPAotICAgICAgICAgIHR5cGVuYW1lIEwxOjp0eXBlLCB0eXBlbmFtZSBMMjo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDI8IHRydWVfLFRhZyxGLEwxLEwyID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPAotICAgICAgICAgIHF1b3RlMjwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgPgotc3RydWN0IGxhbWJkYTwKLSAgICAgICAgICBGPCBUMSxUMiA+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDEsVGFnID4gbDE7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQyLFRhZyA+IGwyOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgIGlzX2xlMTo6dmFsdWUsIGlzX2xlMjo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMgotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQyPCBGLFQxLFQyID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIElzTEUsIHR5cGVuYW1lIFRhZwotICAgICwgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBMMSwgdHlwZW5hbWUgTDIsIHR5cGVuYW1lIEwzCi0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDMKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMKLSAgICA+Ci1zdHJ1Y3QgbGVfcmVzdWx0MzwgdHJ1ZV8sVGFnLEYsTDEsTDIsTDMgPgotewotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgcXVvdGUzPCBGLFRhZyA+Ci0gICAgICAgICwgdHlwZW5hbWUgTDE6OnJlc3VsdF8sIHR5cGVuYW1lIEwyOjpyZXN1bHRfLCB0eXBlbmFtZSBMMzo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICBpc19sZTE6OnZhbHVlLCBpc19sZTI6OnZhbHVlLCBpc19sZTM6OnZhbHVlCi0gICAgICAgID46OnR5cGUgaXNfbGU7Ci0KLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0MzwKLSAgICAgICAgICBpc19sZSwgVGFnLCBGLCBsMSwgbDIsIGwzCi0gICAgICAgID4gbGVfcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiByZXN1bHRfIHR5cGU7Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJc0xFLCB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlCi0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcKLSAgICAsIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIEwxLCB0eXBlbmFtZSBMMiwgdHlwZW5hbWUgTDMsIHR5cGVuYW1lIEw0Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDQ8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgIHF1b3RlNDwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XwotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdDxyZXN1bHRfPiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgRjwgVDEsVDIsVDMsVDQgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQxLFRhZyA+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUMixUYWcgPiBsMjsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDMsVGFnID4gbDM7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQ0LFRhZyA+IGw0OwotICAgIAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIGlzX2xlOwotCi0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDQ8Ci0gICAgICAgICAgaXNfbGUsIFRhZywgRiwgbDEsIGwyLCBsMywgbDQKLSAgICAgICAgPiBsZV9yZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4gcmVzdWx0XzsKLQotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXNMRSwgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDUKLXsKLSAgICB0eXBlZGVmIEY8Ci0gICAgICAgICAgdHlwZW5hbWUgTDE6OnR5cGUsIHR5cGVuYW1lIEwyOjp0eXBlLCB0eXBlbmFtZSBMMzo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIEw0Ojp0eXBlLCB0eXBlbmFtZSBMNTo6dHlwZQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnCi0gICAgLCB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgTDEsIHR5cGVuYW1lIEwyLCB0eXBlbmFtZSBMMywgdHlwZW5hbWUgTDQsIHR5cGVuYW1lIEw1Ci0gICAgPgotc3RydWN0IGxlX3Jlc3VsdDU8IHRydWVfLFRhZyxGLEwxLEwyLEwzLEw0LEw1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgIHF1b3RlNTwgRixUYWcgPgotICAgICAgICAsIHR5cGVuYW1lIEwxOjpyZXN1bHRfLCB0eXBlbmFtZSBMMjo6cmVzdWx0XywgdHlwZW5hbWUgTDM6OnJlc3VsdF8KLSAgICAgICAgLCB0eXBlbmFtZSBMNDo6cmVzdWx0XywgdHlwZW5hbWUgTDU6OnJlc3VsdF8KLSAgICAgICAgPiByZXN1bHRfOwotCi0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8cmVzdWx0Xz4gdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIEY8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBUMSxUYWcgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDIsVGFnID4gbDI7Ci0gICAgdHlwZWRlZiBsYW1iZGE8IFQzLFRhZyA+IGwzOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUNCxUYWcgPiBsNDsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVDUsVGFnID4gbDU7Ci0gICAgCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDU6OmlzX2xlIGlzX2xlNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgaXNfbGUxOjp2YWx1ZSwgaXNfbGUyOjp2YWx1ZSwgaXNfbGUzOjp2YWx1ZSwgaXNfbGU0Ojp2YWx1ZQotICAgICAgICAsIGlzX2xlNTo6dmFsdWUKLSAgICAgICAgPjo6dHlwZSBpc19sZTsKLQotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQ1PAotICAgICAgICAgIGlzX2xlLCBUYWcsIEYsIGwxLCBsMiwgbDMsIGw0LCBsNQotICAgICAgICA+IGxlX3Jlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgLCBUYWcKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgZmFsc2VfIGlzX2xlOwotICAgIHR5cGVkZWYgYmluZDU8Ci0gICAgICAgICAgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+IHJlc3VsdF87Ci0KLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsIGNhc2UgZm9yICdwcm90ZWN0JwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgbGFtYmRhPCBtcGw6OnByb3RlY3Q8VD4sIFRhZyA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBtcGw6OnByb3RlY3Q8VD4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyBzcGVjaWFsaXphdGlvbnMgZm9yIHRoZSBtYWluICdiaW5kJyBmb3JtCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhPAotICAgICAgICAgIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICAsIFRhZwotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBmYWxzZV8gaXNfbGU7Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHJlc3VsdF8gdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBNV0NXIDguMysvRURHIDwgMzAzLCBsZWFkcyB0byBhbWJpZ3VpdHkgb24gRGlnaXRhbCBNYXJzCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnMSwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsYW1iZGE8Ci0gICAgICAgICAgbGFtYmRhPCBGLFRhZzEgPgotICAgICAgICAsIFRhZzIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGFtYmRhPCBGLFRhZzIgPiBsMTsKLSAgICB0eXBlZGVmIGxhbWJkYTwgVGFnMSxUYWcyID4gbDI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGU7Ci0gICAgdHlwZWRlZiBhdXg6OmxlX3Jlc3VsdDI8aXNfbGUsIFRhZzIsIG1wbDo6bGFtYmRhLCBsMSwgbDI+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGEzNWQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYjQwMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NzMwMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDhiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU0MDI4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJlZGQwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzhhZjkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M4YzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MDwgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE8VDA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPCBUMCxUMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwgVDAsVDEsVDIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PCBUMCxUMSxUMixUMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PCBUMCxUMSxUMixUMyxUNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwgVDAsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNmMzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3NGYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllODJmYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxNDNkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMTE1YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjZTNkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU3ZmU3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZTc5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBoYXNfdHlwZV8gPgotc3RydWN0IHF1b3RlX2ltcGwKLSAgICA6IFQKLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPCBULGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPFUxPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPFUxPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMiA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgICwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQsVTUgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTMsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiByZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTQsIHR5cGVuYW1lIGRlcmVmPGl0ZXIzPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLCBia3dkX3N0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIGRlcmVmPEZpcnN0Pjo6dHlwZQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBzZXQwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IHNldDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzRkMzg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI2MDhjMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQyYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTg1M2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMzMWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjc1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmZiZGI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9hZGQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvYWRkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQwYjcwMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9hZGQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0FERF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfQUREX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWRkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3R1cGxlLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fUFBfTUFDUk9fRVhQQU5TSU9OKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BREQoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0FERF9ERUxBWShpLGopIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF9ERUxBWShpLGopIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fIyNpLE5ETkJPT1NUX01QTF9QUF9BRERfIyNqKSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERChpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfQUREX0RFTEFZKGksaikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREX0RFTEFZKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXyMjaSBORE5CT09TVF9NUExfUFBfQUREXyMjaiBcCi0gICAgLyoqLwotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF8wICgwLDEsMiwzLDQsNSw2LDcsOCw5LDEwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzEgKDEsMiwzLDQsNSw2LDcsOCw5LDEwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfMiAoMiwzLDQsNSw2LDcsOCw5LDEwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF8zICgzLDQsNSw2LDcsOCw5LDEwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzQgKDQsNSw2LDcsOCw5LDEwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfNSAoNSw2LDcsOCw5LDEwLDAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF82ICg2LDcsOCw5LDEwLDAsMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzcgKDcsOCw5LDEwLDAsMCwwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfOCAoOCw5LDEwLDAsMCwwLDAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF85ICg5LDEwLDAsMCwwLDAsMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzEwICgxMCwwLDAsMCwwLDAsMCwwLDAsMCwwKQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREKGksaikgXAotICAgIE5ETkJPT1NUX1BQX0FERChpLGopIFwKLSAgICAvKiovCi0gICAgCi0jZW5kaWYgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9BRERfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmX3BhcmFtc190YWlsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY1MzZkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9ERUZfUEFSQU1TX1RBSUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRl9QQVJBTVNfVEFJTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRlZl9wYXJhbXNfdGFpbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VtcHR5LmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgxLFQsdmFsdWUpOiAsIFQxID0gdmFsdWUsIC4uLCBUbiA9IHZhbHVlCi0vLyBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKDIsVCx2YWx1ZSk6ICwgVDIgPSB2YWx1ZSwgLi4sIFRuID0gdmFsdWUKLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUwobixULHZhbHVlKTogPG5vdGhpbmc+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2ZpbHRlcl9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfREVMQVlfMSggXAotICAgICAgICAgIGkgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSxpKSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICAsIHZhbHVlX2Z1bmMgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9ERUxBWV8xKGksIG4sIHBhcmFtLCB2YWx1ZV9mdW5jKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9ERUxBWV8yKGksbixwYXJhbSx2YWx1ZV9mdW5jKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfREVMQVlfMihpLCBuLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0FORChpLG4pKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF8jI2kobixwYXJhbSx2YWx1ZV9mdW5jKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfMChpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzEgdigpLHAjIzIgdigpLHAjIzMgdigpLHAjIzQgdigpLHAjIzUgdigpLHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzEoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMyIHYoKSxwIyMzIHYoKSxwIyM0IHYoKSxwIyM1IHYoKSxwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF8yKGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMyB2KCkscCMjNCB2KCkscCMjNSB2KCkscCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEscDIpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfMyhpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzQgdigpLHAjIzUgdigpLHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxLHAyLHAzKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzQoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM1IHYoKSxwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMixwMyxwNCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF81KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEscDIscDMscDQscDUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfNihpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxLHAyLHAzLHA0LHA1LHA2KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzcoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMixwMyxwNCxwNSxwNixwNykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF84KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjOSB2KCkscDEscDIscDMscDQscDUscDYscDcscDgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfOShpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX1RBSUxfUEFSQU1fRlVOQyh1bnVzZWQsIGksIG9wKSBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIG9wKSBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfQUREX0QoMSwgaSwgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgb3ApKSkgXAotICAgICAgICApIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgb3ApKCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0lNUEwoaSwgcGFyYW0sIHZhbHVlX2Z1bmMpIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCBpKSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0FVWF9UQUlMX1BBUkFNX0ZVTkMgXAotICAgICAgICAsIChpLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMKLQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKGksIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgTkROQk9PU1RfUFBfSURFTlRJVFkoPXZhbHVlKSkgXAotICAgIC8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ORVNURURfREVGX1BBUkFNU19UQUlMKGksIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgTkROQk9PU1RfUFBfSURFTlRJVFkoPXZhbHVlKSkgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ORVNURURfREVGX1BBUkFNU19UQUlMKGksIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgTkROQk9PU1RfUFBfRU1QVFkpIFwKLSAgICAvKiovCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRl9QQVJBTVNfVEFJTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUyMzNmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfREVGQVVMVF9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRkFVTFRfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZGVmYXVsdF9wYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKDAsVCxpbnQpOiA8bm90aGluZz4KLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUygxLFQsaW50KTogVDEgPSBpbnQKLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUygyLFQsaW50KTogVDEgPSBpbnQsIFQyID0gaW50Ci0vLyBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMobixULGludCk6IFQxID0gaW50LCBUMiA9IGludCwgLi4sIFRuID0gaW50Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG4scCx2KSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18sbikocCx2KSBcCi0gICAgLyoqLwotICAgIAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfMChwLHYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18xKHAsdikgcCMjMT12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18yKHAsdikgcCMjMT12LHAjIzI9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfMyhwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU180KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU181KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfNihwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dixwIyM1PXYscCMjNj12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU183KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dixwIyM2PXYscCMjNz12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU184KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dixwIyM2PXYscCMjNz12LHAjIzg9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfOShwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dixwIyM1PXYscCMjNj12LHAjIzc9dixwIyM4PXYscCMjOT12Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX0RFRkFVTFRfUEFSQU1fRlVOQyh1bnVzZWQsIGksIHB2KSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaSkgXAotICAgIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLDAscHYpLCBORE5CT09TVF9QUF9JTkMoaSkgKSBcCi0gICAgICAgID0gTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLDEscHYpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG4sIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIG4gXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9BVVhfREVGQVVMVF9QQVJBTV9GVU5DIFwKLSAgICAgICAgLCAocGFyYW0sdmFsdWUpIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRkFVTFRfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVhMTY0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FTlVNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FTlVNX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZW51bS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0vLyBORE5CT09TVF9NUExfUFBfRU5VTSgwLGludCk6IDxub3RoaW5nPgotLy8gTkROQk9PU1RfTVBMX1BQX0VOVU0oMSxpbnQpOiBpbnQKLS8vIE5ETkJPT1NUX01QTF9QUF9FTlVNKDIsaW50KTogaW50LCBpbnQKLS8vIE5ETkJPT1NUX01QTF9QUF9FTlVNKG4saW50KTogaW50LCBpbnQsIC4uLCBpbnQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTShuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfRU5VTV8sbikocGFyYW0pIFwKLSAgICAvKiovCi0gICAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzAocCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fMShwKSBwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzIocCkgcCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzMocCkgcCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fNChwKSBwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzUocCkgcCxwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzYocCkgcCxwLHAscCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fNyhwKSBwLHAscCxwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzgocCkgcCxwLHAscCxwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzkocCkgcCxwLHAscCxwLHAscCxwLHAKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FVWF9FTlVNX0ZVTkModW51c2VkLCBpLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIHBhcmFtIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU0obiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBuIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfQVVYX0VOVU1fRlVOQyBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRU5VTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2V4dF9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4OWU0OTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRVhUX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRVhUX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGV4dF9wYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMiwyLFQpOiA8bm90aGluZz4KLS8vIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKDIsMyxUKTogVDIKLS8vIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKDIsNCxUKTogVDIsIFQzCi0vLyBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygyLG4sVCk6IFQyLCBUMywgLi4sIFRuLTEKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoaSxqLHApIFwKLSAgICBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU19ERUxBWV8xKGksTkROQk9PU1RfTVBMX1BQX1NVQihqLGkpLHApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfREVMQVlfMShpLG4scCkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TX0RFTEFZXzIoaSxuLHApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfREVMQVlfMihpLG4scCkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXyMjaShuLHApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfMShpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfMihpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkscDEpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzMoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSxwMSxwMikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfNChpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSxwMSxwMixwMykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfNShpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkscDEscDIscDMscDQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzYoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNixwIyM3LHAjIzgscCMjOSxwMSxwMixwMyxwNCxwNSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfNyhpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM3LHAjIzgscCMjOSxwMSxwMixwMyxwNCxwNSxwNikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfOChpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM4LHAjIzkscDEscDIscDMscDQscDUscDYscDcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzkoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjOSxwMSxwMixwMyxwNCxwNSxwNixwNyxwOCkKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX0VYVF9QQVJBTV9GVU5DKHVudXNlZCwgaSwgb3ApIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLDEsb3ApIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9BRERfRCgxLCBpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsMCxvcCkpIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKGksIGosIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfU1VCX0QoMSxqLGkpIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfQVVYX0VYVF9QQVJBTV9GVU5DIFwKLSAgICAgICAgLCAoaSxwYXJhbSkgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRVhUX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2ZpbHRlcl9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNzUxMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRklMVEVSX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRklMVEVSX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZpbHRlcl9wYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfMChwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzEocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzIocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzMocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzQocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzUocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzYocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzcocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2LHA3Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzgocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzkocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9GSUxURVJfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZDZjNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBhcmFtcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0vLyBORE5CT09TVF9NUExfUFBfUEFSQU1TKDAsVCk6IDxub3RoaW5nPgotLy8gTkROQk9PU1RfTVBMX1BQX1BBUkFNUygxLFQpOiBUMQotLy8gTkROQk9PU1RfTVBMX1BQX1BBUkFNUygyLFQpOiBUMSwgVDIKLS8vIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobixUKTogVDEsIFQyLCAuLiwgVG4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4scCkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfUEFSQU1TXyxuKShwKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfMChwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzEocCkgcCMjMQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzIocCkgcCMjMSxwIyMyCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfMyhwKSBwIyMxLHAjIzIscCMjMwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzQocCkgcCMjMSxwIyMyLHAjIzMscCMjNAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzUocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfNihwKSBwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzcocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzgocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfOShwKSBwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX1BBUkFNX0ZVTkModW51c2VkLCBpLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIFwKLSAgICBORE5CT09TVF9QUF9DQVQocGFyYW0sIE5ETkJPT1NUX1BQX0lOQyhpKSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgbiBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0FVWF9QQVJBTV9GVU5DIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFydGlhbF9zcGVjX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJ0aWFsX3NwZWNfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFiNjNhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJ0aWFsX3NwZWNfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJUSUFMX1NQRUNfUEFSQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJUSUFMX1NQRUNfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGFydGlhbF9zcGVjX3BhcmFtcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJUSUFMX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLU5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLU5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSxuKSkgXAotTkROQk9PU1RfTVBMX1BQX0VOVU0oIFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSxuKSBcCi0gICAgLCBkZWYgXAotICAgICkgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSVElBTF9TUEVDX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JhbmdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JhbmdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM1MzZkNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yYW5nZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JBTkdFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmFuZ2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3N1YnNlcS5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JBTkdFKGZpcnN0LCBsZW5ndGgpIFwKLSAgICBORE5CT09TVF9QUF9TRVFfU1VCU0VRKCgwKSgxKSgyKSgzKSg0KSg1KSg2KSg3KSg4KSg5KSwgZmlyc3QsIGxlbmd0aCkgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkFOR0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY4YTIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JFUEVBVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkVQRUFUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmVwZWF0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChuLGYscGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8sbikoZixwYXJhbSkgXAotICAgIC8qKi8KLSAgICAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8wKGYscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8xKGYscCkgZigwLDAscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8yKGYscCkgZigwLDAscCkgZigwLDEscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8zKGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF80KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF81KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF82KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF83KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkgZigwLDYscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF84KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkgZigwLDYscCkgZigwLDcscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF85KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkgZigwLDYscCkgZigwLDcscCkgZigwLDgscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8xMChmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApIGYoMCw0LHApIGYoMCw1LHApIGYoMCw2LHApIGYoMCw3LHApIGYoMCw4LHApIGYoMCw5LHApCi0KLSNlbHNlIAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChuLGYscGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQobixmLHBhcmFtKSBcCi0gICAgLyoqLwotCi0jZW5kaWYgCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF9JREVOVElUWV9GVU5DKHVudXNlZDEsIHVudXNlZDIsIHgpIHgKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JFUEVBVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTk0ODJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfU1VCX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9TVUJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzdWIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvdHVwbGUuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9QUF9NQUNST19FWFBBTlNJT04pCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQihpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfU1VCX0RFTEFZKGksaikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCX0RFTEFZKGksaikgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8jI2ksTkROQk9PU1RfTVBMX1BQX1NVQl8jI2opIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9TVUJfREVMQVkoaSxqKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfREVMQVkoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fIyNpIE5ETkJPT1NUX01QTF9QUF9TVUJfIyNqIFwKLSAgICAvKiovCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzAgKDAsMSwyLDMsNCw1LDYsNyw4LDksMTApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfMSAoMCwwLDEsMiwzLDQsNSw2LDcsOCw5KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzIgKDAsMCwwLDEsMiwzLDQsNSw2LDcsOCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl8zICgwLDAsMCwwLDEsMiwzLDQsNSw2LDcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfNCAoMCwwLDAsMCwwLDEsMiwzLDQsNSw2KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzUgKDAsMCwwLDAsMCwwLDEsMiwzLDQsNSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl82ICgwLDAsMCwwLDAsMCwwLDEsMiwzLDQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfNyAoMCwwLDAsMCwwLDAsMCwwLDEsMiwzKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzggKDAsMCwwLDAsMCwwLDAsMCwwLDEsMikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl85ICgwLDAsMCwwLDAsMCwwLDAsMCwwLDEpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfMTAgKDAsMCwwLDAsMCwwLDAsMCwwLDAsMCkKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQihpLGopIFwKLSAgICBORE5CT09TVF9QUF9TVUIoaSxqKSBcCi0gICAgLyoqLwotICAgIAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9TVUJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci90dXBsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci90dXBsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYjM2OWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvdHVwbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1RVUExFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9UVVBMRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHR1cGxlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzAoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlMAotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8xKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTEKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fMihlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGUyCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzMoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlMwotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV80KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fNShlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU1Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzYoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlNgotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV83KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTcKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fOChlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU4Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzkoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlOQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8xMChlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGUxMAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfVFVQTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfYmFja19pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9iYWNrX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTgxZGU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9iYWNrX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9CQUNLX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9CQUNLX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2JhY2tfaW1wbC5ocHAgNTU2NzkgMjAwOS0wOC0yMCAwNzo1MDoxNlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA5LTA4LTIwIDAwOjUwOjE2IC0wNzAwIChUaHUsIDIwIEF1ZyAyMDA5KSAkCi0vLyAkUmV2aXNpb246IDU1Njc5ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBoYXNfcHVzaF9iYWNrX2FyZyB7fTsKLQotLy8gYWd1cnQgMDUvZmViLzA0OiBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyB0aGUgc3R1YiBkZWZpbml0aW9uIGlzIG5lZWRlZCAKLS8vIHRvIGVuYWJsZSB0aGUgZGVmYXVsdCAnaGFzX3B1c2hfYmFjaycgaW1wbGVtZW50YXRpb24gYmVsb3cKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHB1c2hfYmFja19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICAvLyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgJ2hhc19wdXNoX2JhY2tfaW1wbCc7Ci0gICAgICAgIC8vIGlmIHlvdSd2ZSBnb3QgYW4gYXNzZXJ0IGhlcmUsIHlvdSBhcmUgcmVxdWVzdGluZyBhICdwdXNoX2JhY2snIAotICAgICAgICAvLyBzcGVjaWFsaXphdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QuCi0gICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHKAotICAgICAgICAgICAgICAoIG5kbmJvb3N0Ojppc19zYW1lPCBULCBoYXNfcHVzaF9iYWNrX2FyZyA+Ojp2YWx1ZSApCi0gICAgICAgICAgICAsIFJFUVVFU1RFRF9QVVNIX0JBQ0tfU1BFQ0lBTElaQVRJT05fRk9SX1NFUVVFTkNFX0RPRVNfTk9UX0VYSVNUCi0gICAgICAgICAgICAsICggU2VxdWVuY2UgKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgaGFzX3B1c2hfYmFja19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcSA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogYXV4OjpoYXNfdHlwZTwgcHVzaF9iYWNrPCBTZXEsIGhhc19wdXNoX2JhY2tfYXJnID4gPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIGF1eDo6aGFzX3R5cGU8IHB1c2hfYmFjazwgU2VxLCBoYXNfcHVzaF9iYWNrX2FyZyA+ID4gdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgICAgIChhdXg6Omhhc190eXBlPCBwdXNoX2JhY2s8IFNlcSwgaGFzX3B1c2hfYmFja19hcmcgPiA+Ojp2YWx1ZSkKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQygyLCBwdXNoX2JhY2tfaW1wbCkKLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMSwgaGFzX3B1c2hfYmFja19pbXBsKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QVVNIX0JBQ0tfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9mcm9udF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9mcm9udF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZhODc0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfZnJvbnRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QVVNIX0ZST05UX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9GUk9OVF9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9mcm9udF9pbXBsLmhwcCA1NTY3OSAyMDA5LTA4LTIwIDA3OjUwOjE2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDktMDgtMjAgMDA6NTA6MTYgLTA3MDAgKFRodSwgMjAgQXVnIDIwMDkpICQKLS8vICRSZXZpc2lvbjogNTU2NzkgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBoYXNfcHVzaF9mcm9udF9hcmcge307Ci0KLS8vIGFndXJ0IDA1L2ZlYi8wNDogbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgdGhlIHN0dWIgZGVmaW5pdGlvbiBpcyBuZWVkZWQgCi0vLyB0byBlbmFibGUgdGhlIGRlZmF1bHQgJ2hhc19wdXNoX2Zyb250JyBpbXBsZW1lbnRhdGlvbiBiZWxvdwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIC8vIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiAnaGFzX3B1c2hfZnJvbnRfaW1wbCc7Ci0gICAgICAgIC8vIGlmIHlvdSd2ZSBnb3QgYW4gYXNzZXJ0IGhlcmUsIHlvdSBhcmUgcmVxdWVzdGluZyBhICdwdXNoX2Zyb250JyAKLSAgICAgICAgLy8gc3BlY2lhbGl6YXRpb24gdGhhdCBkb2Vzbid0IGV4aXN0LgotICAgICAgICBORE5CT09TVF9NUExfQVNTRVJUX01TRygKLSAgICAgICAgICAgICAgKCBuZG5ib29zdDo6aXNfc2FtZTwgVCwgaGFzX3B1c2hfZnJvbnRfYXJnID46OnZhbHVlICkKLSAgICAgICAgICAgICwgUkVRVUVTVEVEX1BVU0hfRlJPTlRfU1BFQ0lBTElaQVRJT05fRk9SX1NFUVVFTkNFX0RPRVNfTk9UX0VYSVNUCi0gICAgICAgICAgICAsICggU2VxdWVuY2UgKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgaGFzX3B1c2hfZnJvbnRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXEgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGF1eDo6aGFzX3R5cGU8IHB1c2hfZnJvbnQ8IFNlcSwgaGFzX3B1c2hfZnJvbnRfYXJnID4gPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIGF1eDo6aGFzX3R5cGU8IHB1c2hfZnJvbnQ8IFNlcSwgaGFzX3B1c2hfZnJvbnRfYXJnID4gPiB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICAgICAgKGF1eDo6aGFzX3R5cGU8IHB1c2hfZnJvbnQ8IFNlcSwgaGFzX3B1c2hfZnJvbnRfYXJnID4gPjo6dmFsdWUpCi0gICAgICAgICAgICApOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMiwgcHVzaF9mcm9udF9pbXBsKQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQygxLCBoYXNfcHVzaF9mcm9udF9pbXBsKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QVVNIX0ZST05UX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODY0OWMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUkVWRVJTRV9GT0xEX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUkVWRVJTRV9GT0xEX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByZXZlcnNlX2ZvbGRfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiByZXZlcnNlX2ZvbGRfaW1wbC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChpdGVyKSB0eXBlbmFtZSBkZXJlZjxpdGVyPjo6dHlwZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYIHJldmVyc2VfZm9sZAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUkVWRVJTRV9GT0xEX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NhNmVlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEyICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTiEKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL3Vucm9sbGluZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUCh1bnVzZWQsIG5fLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFwKLSAgICAgICAgICBGb3J3YXJkT3AgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsbl8pIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKSkgXAotICAgICAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsTkROQk9PU1RfUFBfSU5DKG5fKSk7IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxORE5CT09TVF9QUF9DQVQoaXRlcixuXyk+Ojp0eXBlIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfSU5DKG5fKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMobl8pIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgXAotICAgICAgICAgIEJhY2t3YXJkT3AgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLG5fKSBcCi0gICAgICAgICwgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9QUF9ERUMobl8pKSkgXAotICAgICAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLE5ETkJPT1NUX1BQX0RFQyhuXykpOyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUCh1bnVzZWQsIG5fLCBqKSBcCi0gICAgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLGosbl8pIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GSVJTVF9CQUNLV0FSRF9TVEFURV9UWVBFREVGKG5fKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLG5fKTsKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfaW1wbCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfY2h1bmspIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HLCA8bmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0vLyBpbXBsZW1lbnRhdGlvbiBmb3IgTiB0aGF0IGV4Y2VlZHMgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRQotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotCi0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotCi0gICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgKCAoTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIDwgMCA/IDAgOiBOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORyApCi0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0gICAgICAgIAotICAgIEFVWDc3ODA3Nl9GSVJTVF9CQUNLV0FSRF9TVEFURV9UWVBFREVGKE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSAgICAgICAgLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICkKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotLy8gZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gZm9yIHNlcXVlbmNlcyBvZiB1bmtub3duIHNpemUKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKEZpcnN0KQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3A+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HLCA8bmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0vLyBpbXBsZW1lbnRhdGlvbiBmb3IgTiB0aGF0IGV4Y2VlZHMgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+IAotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0KLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotICAgICAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgICAgICkKLQotICAgICAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAgICAgKCAoTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIDwgMCA/IDAgOiBOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORyApCi0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0gICAgICAgICAgICAKLSAgICAgICAgQVVYNzc4MDc2X0ZJUlNUX0JBQ0tXQVJEX1NUQVRFX1RZUEVERUYoTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICAgICApCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi0vLyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBmb3Igc2VxdWVuY2VzIG9mIHVua25vd24gc2l6ZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX3N0ZXApOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9udWxsX3N0ZXApCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8LTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4gCi0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPEZpcnN0LExhc3Q+Ojp0eXBlCi0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9udWxsX3N0ZXApPExhc3QsU3RhdGU+Ci0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKTxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzxpbnQsaW50LGludCxpbnQsaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKQotewotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTwtMT46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKEZpcnN0KQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FCi0gICAgOiBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfX19Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfRklSU1RfQkFDS1dBUkRfU1RBVEVfVFlQRURFRgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUF9GVU5DCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLQotI3VuZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AKLSN1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYCi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotCi0jICAgZGVmaW5lIG5fIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPG5fLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3A+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgIG5fCi0gICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoZndkX3N0YXRlLG5fKSBORE5CT09TVF9QUF9DQVQoYmt3ZF9zdGF0ZSxuXyk7Ci0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgIG5fCi0gICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQCi0gICAgICAgICwgbl8KLSAgICAgICAgKQotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKSBpdGVyYXRvcjsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8bl8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIG5fCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfRk9SV0FSRF9TVEVQCi0gICAgICAgICAgICAsIHVudXNlZAotICAgICAgICAgICAgKQotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxuXykgTkROQk9PU1RfUFBfQ0FUKGJrd2Rfc3RhdGUsbl8pOwotCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIG5fCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotICAgICAgICAgICAgLCBuXwotICAgICAgICAgICAgKQotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pIGl0ZXJhdG9yOwotICAgIH07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88aW50LGludCxpbnQsaW50LGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotI2VuZGlmCi19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jICAgdW5kZWYgbl8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc2VxdWVuY2Vfd3JhcHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYTI3NTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNlcXVlbmNlX3dyYXBwZXIuaHBwIDQ5MjcxIDIwMDgtMTAtMTEgMDY6NDY6MDBaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzo0NjowMCAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI3MSAkCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgdW5kZWYgTE9OR19NQVgKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9CQVNFX05BTUUpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9CQVNFX05BTUUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIpCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNX05BTUUgVAotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gdHlwZW5hbWUgVAotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBuYQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04obikgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfQkFTRV9OQU1FLG4pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNUygpIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9BUkdTKCkgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBUIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUX1BBUkFNUygpIFwKLSAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFQoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSQU1TKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgVCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJUSUFMX1NQRUNfQVJHUyhuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgVCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfU1VCX0QoMSxBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQsbikgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2Vsc2UgLy8gQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRSBDCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBDKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBMT05HX01BWAotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMoKSBcCi0gICAgdHlwZW5hbWUgVCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUygpIFwKLSAgICBULCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgQyBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMoKSBcCi0gICAgdHlwZW5hbWUgVCwgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUkFNUyhuKSBcCi0gICAgdHlwZW5hbWUgVCBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNKSBcCi0gICAgLyoqLwotCi0jICAgaWYgIWRlZmluZWQoQVVYNzc4MDc2X1NFUVVFTkNFX0NPTlZFUlRfQ05fVE8pCi0jICAgICAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfQ09OVkVSVF9DTl9UTyh6LG4sVEFSR0VUKSBORE5CT09TVF9QUF9DQVQoQyxuKQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhuKSBcCi0gICAgVCBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTShuLEFVWDc3ODA3Nl9TRVFVRU5DRV9DT05WRVJUX0NOX1RPLFQpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSVElBTF9TUEVDX0FSR1MobikgXAotICAgIFQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIEMpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTSggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NVQl9EKDEsQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlULG4pIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMiBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZiAvLyBBVVg3NzgwNzZfU0VRVUVOQ0VfSU5URUdSQUxfV1JBUFBFUgotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8Ci0gICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMoKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRTsKLSNlbHNlCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4gCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9jaG9vc2VyKTsKLX0KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCwgPG5kbmJvb3N0L21wbC9hdXhfL3NlcXVlbmNlX3dyYXBwZXIuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8gcmVhbCBDKysgdmVyc2lvbiBpcyBhbHJlYWR5IHRha2VuIGNhcmUgb2YKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLW5hbWVzcGFjZSBhdXggewotLy8gPz8/X2NvdW50X2FyZ3MKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfREVGQVVMVCAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRSAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNX05BTUUKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfVEVNUExBVEVfUEFSQU0gQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVAotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19VU0VfU1RBTkRBUkRfUFBfUFJJTUlUSVZFUwotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvdW50X2FyZ3MuaHBwPgotCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMoKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2ltcGwpCi17Ci0gICAgdHlwZWRlZiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfY291bnRfYXJncyk8Ci0gICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlULCBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRSkKLSAgICAgICAgPiBhcmdfbnVtXzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6TkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9jaG9vc2VyKTwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUygpID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUX1BBUkFNUygpCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FCi0gICAgOiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfaW1wbCk8Ci0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MoKQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfaW1wbCk8Ci0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MoKQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSVElBTF9TUEVDX0FSR1MKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0NPTlZFUlRfQ05fVE8KLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0KLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9CQVNFX05BTUUKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSCi0KLX19Ci0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSNpZiBpXyA9PSBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSQU1TKGlfKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRQotICAgIDogQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPCBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUkFNUyhpXykKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUU8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUlRJQUxfU1BFQ19BUkdTKGlfKSA+Ci0gICAgOiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykgPgotewotI2lmIGlfID4gMCB8fCBkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pID46OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi19OwotCi0jZW5kaWYgLy8gaV8gPT0gQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUCi0KLSMgICBlbHNlCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9jaG9vc2VyKTxpXz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1TKCkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotI2lmIGlfID4gMCB8fCBkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSKQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPAotICAgICAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICAgICAgdHlwZWRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwKLSAgICAgICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NpemVfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NpemVfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYjE2ZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zaXplX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfU0laRV9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemVfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Rpc3RhbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IGNvbnJldGUgc2VxdWVuY2VzIG1pZ2h0IG92ZXJyaWRlIGl0IGJ5IAotLy8gc3BlY2lhbGl6aW5nIGVpdGhlciB0aGUgJ3NpemVfaW1wbCcgb3IgdGhlIHByaW1hcnkgJ3NpemUnIHRlbXBsYXRlCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHNpemVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTYxKSkKLSAgICAgICAgOiBkaXN0YW5jZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkaXN0YW5jZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDEsIHNpemVfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfU0laRV9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxMjFlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc3RhdGljX2Nhc3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTYxKSkgXAotIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAxKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKFQsIGV4cHIpIChUKShleHByKQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChULCBleHByKSBzdGF0aWNfY2FzdDxUPihleHByKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU3MzA4MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRlbXBsYXRlX2FyaXR5LmhwcCA2MTU4NCAyMDEwLTA0LTI2IDE4OjQ4OjI2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMTAtMDQtMjYgMTE6NDg6MjYgLTA3MDAgKE1vbiwgMjYgQXByIDIwMTApICQKLS8vICRSZXZpc2lvbjogNjE1ODQgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotIyAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfcmViaW5kLmhwcD4KLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB0ZW1wbGF0ZV9hcml0eS5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmFuZ2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FSSVRZIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4gc3RydWN0IGFyaXR5X3RhZwotewotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpW04gKyAxXTsKLX07Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X01BWF9BUklUWV9PUCh1bnVzZWQsIHN0YXRlLCBpXykgXAotICAgICggTkROQk9PU1RfUFBfQ0FUKEMsaV8pID4gMCA/IE5ETkJPT1NUX1BQX0NBVChDLGlfKSA6IHN0YXRlICkgXAotLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoQVVYNzc4MDc2X0FSSVRZLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIEMpKQotICAgID4KLXN0cnVjdCBtYXhfYXJpdHkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQoCi0gICAgICAgICAgICAgIEFVWDc3ODA3Nl9NQVhfQVJJVFlfT1AKLSAgICAgICAgICAgICwgLTEKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX1BQX1JBTkdFKDEsIEFVWDc3ODA3Nl9BUklUWSkKLSAgICAgICAgICAgICkKLSAgICAgICAgKTsKLX07Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfTUFYX0FSSVRZX09QCi0KLWFyaXR5X3RhZzwwPjo6dHlwZSBhcml0eV9oZWxwZXIoLi4uKTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTICgxLCBBVVg3NzgwNzZfQVJJVFkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEgPG5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gCi0gICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPEY+KCksYXJpdHlfdGFnPE4+KCkpKSAtIDEKLSAgICAgICAgKTsKLX07Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1RFTVBMQVRFX0FSSVRZX0lNUExfSU5WT0NBVElPTih1bnVzZWQsIGlfLCBGKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIHRlbXBsYXRlX2FyaXR5X2ltcGw8RixORE5CT09TVF9QUF9JTkMoaV8pPjo6dmFsdWUgXAotLyoqLwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9ICgKLSAgICAgICAgICBtYXhfYXJpdHk8IE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIEFVWDc3ODA3Nl9BUklUWQotICAgICAgICAgICAgLCBBVVg3NzgwNzZfVEVNUExBVEVfQVJJVFlfSU1QTF9JTlZPQ0FUSU9OCi0gICAgICAgICAgICAsIEYKLSAgICAgICAgICAgICkgPjo6dmFsdWUKLSAgICAgICAgKSk7Ci0gICAgICAgIAotICAgIHR5cGVkZWYgbXBsOjppbnRfPHZhbHVlPiB0eXBlOwotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9URU1QTEFURV9BUklUWV9JTVBMX0lOVk9DQVRJT04KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUklUWQotCi19fX0KLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORwotIyAgIGVsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88LTE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5PGludD4KLSAgICA6IG1wbDo6aW50XzwtMT4KLXsKLX07Ci0jZW5kaWYKLQotfX19Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFApID4gY2xhc3MgRgotICAgICwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8aV8+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFQpPiA+LCBhcml0eV90YWc8aV8+KTsKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNGJkOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRlbXBsYXRlX2FyaXR5X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCB0ZW1wbGF0ZV9hcml0eTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyMWRkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9UUkFJVFNfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVFJBSVRTX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdHJhaXRzX2xhbWJkYV9zcGVjLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoaSwgdHJhaXQpIC8qKi8KLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQ19JTVBMKGksIHRyYWl0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDx2b2lkXz4gXAoteyBcCi0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgdHlwZW5hbWUgVCkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgIHsgXAotICAgIH07IFwKLX07IFwKLS8qKi8KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoaSwgdHJhaXQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PHZvaWRfPiBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSA+IHN0cnVjdCBhcHBseSBcCi0gICAgeyBcCi0gICAgfTsgXAotfTsgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8aW50PiBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSA+IHN0cnVjdCBhcHBseSBcCi0gICAgeyBcCi0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7IFwKLSAgICB9OyBcCi19OyBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQKLQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoaSwgdHJhaXQpIFwKLSAgICBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoaSwgdHJhaXQpIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDxub25fc2VxdWVuY2VfdGFnPiB7fTsgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9UUkFJVFNfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWY1NGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVFlQRV9XUkFQUEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1RZUEVfV1JBUFBFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMC0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHR5cGVfd3JhcHBlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0eXBlX3dyYXBwZXIKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLy8gYWd1cnQgMDgvbWF5LzAzOiBhIGNvbXBsaWNhdGVkIHdheSB0byBleHRyYWN0IHRoZSB3cmFwcGVkIHR5cGU7IG5lZWQgaXQgCi0vLyBtb3N0bHkgZm9yIHRoZSBzYWtlIG9mIEdDQyAoMy4yLngpLCB3aGljaCBJQ0VzIGlmIHlvdSB0cnkgdG8gZXh0cmFjdCB0aGUgCi0vLyBuZXN0ZWQgJ3R5cGUnIGZyb20gJ3R5cGVfd3JhcHBlcjxUPicgd2hlbiB0aGUgbGF0dGVyIHdhcyB0aGUgcmVzdWx0IG9mIGEKLS8vICd0eXBlb2YnIGV4cHJlc3Npb24KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHdyYXBwZWRfdHlwZTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgd3JhcHBlZF90eXBlPCB0eXBlX3dyYXBwZXI8VD4gPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVyA+IHN0cnVjdCB3cmFwcGVkX3R5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFc6OnR5cGUgdHlwZTsKLX07Ci0jZW5kaWYKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1RZUEVfV1JBUFBFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdW53cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdW53cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyZDhjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3Vud3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9VTldSQVBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVU5XUkFQX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZCAyMDAxLCAyMDAyCi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB1bndyYXAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLWlubGluZQotRiYgdW53cmFwKEYmIGYsIGxvbmcpCi17Ci0gICAgcmV0dXJuIGY7Ci19Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLWlubGluZQotRiYKLXVud3JhcChyZWZlcmVuY2Vfd3JhcHBlcjxGPiYgZiwgaW50KQotewotICAgIHJldHVybiBmOwotfQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1pbmxpbmUKLUYmCi11bndyYXAocmVmZXJlbmNlX3dyYXBwZXI8Rj4gY29uc3QmIGYsIGludCkKLXsKLSAgICByZXR1cm4gZjsKLX0KLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1VOV1JBUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjAzYmFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2YWx1ZV93a25kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vc3RhdGljX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMpIFwKLSAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBDXyA+IHN0cnVjdCB2YWx1ZV93a25kCi0gICAgOiBDXwotewotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi10ZW1wbGF0ZTw+IHN0cnVjdCB2YWx1ZV93a25kPGludD4KLSAgICA6IGludF88MT4KLXsKLSAgICB1c2luZyBpbnRfPDE+Ojp2YWx1ZTsKLX07Ci0jZW5kaWYKLX19fQotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKEMpIFwKLSAgICA6Ok5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjphdXg6OnZhbHVlX3drbmQ8IEMgPiBcCi0vKiovCi0jICAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChDKSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoQykKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChDKSBDCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKEMpIFwKLSAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6dmFsdWVfd2tuZDwgQyA+IFwKLS8qKi8KLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoQykgQwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChDKSBDCi0KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChULCBDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChULCBDOjp2YWx1ZSkgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChULCBDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKEMpOjp2YWx1ZSBcCi0vKiovCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHZhbHVlX3R5cGVfd2tuZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dmFsdWVfdHlwZSB0eXBlOwotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi10ZW1wbGF0ZTw+IHN0cnVjdCB2YWx1ZV90eXBlX3drbmQ8aW50PgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDIyMjYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1lFU19OT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ZRVNfTk9fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB5ZXNfbm8uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hcnJheXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10eXBlZGVmIGNoYXIgKCZub190YWcpWzFdOwotdHlwZWRlZiBjaGFyICgmeWVzX3RhZylbMl07Ci0KLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IHllc19ub190YWcKLXsKLSAgICB0eXBlZGVmIG5vX3RhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgeWVzX25vX3RhZzx0cnVlPgotewotICAgIHR5cGVkZWYgeWVzX3RhZyB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbikgPiBzdHJ1Y3Qgd2VpZ2h0ZWRfdGFnCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpW25dOwotI2Vsc2UKLSAgICBjaGFyIGJ1ZltuXTsKLSAgICB0eXBlZGVmIHdlaWdodGVkX3RhZyB0eXBlOwotI2VuZGlmCi19OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFUEVOREVOVF9BUlJBWV9UWVBFUykKLXRlbXBsYXRlPD4gc3RydWN0IHdlaWdodGVkX3RhZzwwPgotewotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpWzFdOwotfTsKLSNlbmRpZgotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfWUVTX05PX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGQ4NWU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJhY2tfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiYWNrX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYmFjazsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfaW5zZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19pbnNlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5ZjZjMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19pbnNlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmFja19pbnNlcnRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnNlcnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgID4KLXN0cnVjdCBiYWNrX2luc2VydGVyCi0gICAgOiBpbnNlcnRlcjwgU2VxdWVuY2UscHVzaF9iYWNrPD4gPgotewotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OTkxZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmVnaW5fZW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2JlZ2luX2VuZF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBhZ3VydCwgMTMvc2VwLzAyOiBzd2l0Y2hlZCBmcm9tIGluaGVyaXRhbmNlIHRvIHR5cGVkZWY7IE1TVkMgaXMgbW9yZQotLy8gaGFwcHkgdGhpcyB3YXkgKGxlc3MgRVRJLXJlbGF0ZWQgZXJyb3JzKSwgYW5kIGl0IGRvZXNuJ3QgYWZmZWN0IAotLy8gYW55dGhpbmcgZWxzZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBiZWdpbgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSB0YWdfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmVnaW5faW1wbDwgdGFnXyA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxiZWdpbiwoU2VxdWVuY2UpKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBlbmQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgdGFnXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGVuZF9pbXBsPCB0YWdfID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGVuZCwoU2VxdWVuY2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGJlZ2luKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGVuZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTQ4NmFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQkVHSU5fRU5EX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJlZ2luX2VuZF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJlZ2luX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVuZF9pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYmVnaW47Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgZW5kOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JFR0lOX0VORF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjMwYTE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JJTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmluZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdHlfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBlbmRpZiAKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JpbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGJhc2ljX2JpbmQuaHBwCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYmluZC5ocHAKLSMgICBlbmRpZgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2RtY19hbWJpZ3VvdXNfY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXAsTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSkgXAotICAgIC8qKi8KLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19ETUNfQU1CSUdVT1VTX0NUUFMpCi0jICAgICAgIGRlZmluZSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkgLCBpbnQgZHVtbXlfCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICAsIHZhbHVlIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9OX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMobiwgcGFyYW0sIGRlZikgXAotICAgIC8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05FU1RFRF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHBhcmFtKSBcCi0gICAgLyoqLwotI2VuZGlmCi0KLW5hbWVzcGFjZSBhdXggewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwtMT4sQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfQVBQTFk8bXBsOjphcmc8Tj4sIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT46OnR5cGUgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUpCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKSwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpCi0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8RixBVVg3NzgwNzZfQklORF9QQVJBTVMoVCk+LEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9BUFBMWTxmXywgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPjo6dHlwZSB0eXBlOwotfTsKLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIGFndXJ0LCAxNS9qYW4vMDI6IGl0J3Mgbm90IGEgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGNsYXNzLCBhbmQgCi0vLyBNU1ZDNi41IGhhcyBwcm9ibGVtcyB3aXRoICdhcHBseScgbmFtZSBoZXJlICh0aGUgY29kZSBjb21waWxlcywgYnV0IGRvZXNuJ3QKLS8vIHdvcmspLCBzbyBJIHdlbnQgd2l0aCB0aGUgJ3Jlc3VsdF8nIGhlcmUsIGFuZCBpbiBhbGwgb3RoZXIgc2ltaWxhciBjYXNlcwotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X0FQUExZPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0vLyBmb3IgJ3Jlc29sdmVfYmluZF9hcmcnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBULCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKSA+Ci17Ci19OwotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gCi1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8IGFyZzwtMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PEFyZz46OnR5cGUgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBBcmcgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZyA+IAotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLSAgICA6IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDxUPjo6dGVtcGxhdGUgcmVzdWx0XzxBcmc+Ci17Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQKLQotLy8gYWd1cnQsIDEwL21hci8wMjogdGhlIGZvcndhcmQgZGVjbGFyYXRpb24gaGFzIHRvIGFwcGVhciBiZWZvcmUgYW55IG9mCi0vLyAnaXNfYmluZF9oZWxwZXInIG92ZXJsb2Fkcywgb3RoZXJ3aXNlIE1TVkM2LjUgaXNzdWVzIGFuIElDRSBvbiBpdAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgYXJpdHlfKSA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotLy8gb3ZlcmxvYWQgZm9yICJtYWluIiBmb3JtCi0vLyBhZ3VydCwgMTUvbWFyLzAyOiBNU1ZDIDYuNSBmYWlscyB0byBwcm9wZXJseSByZXNvbHZlIHRoZSBvdmVybG9hZCAKLS8vIGluIGNhc2UgaWYgd2UgdXNlICdhdXg6OnR5cGVfd3JhcHBlcjwgYmluZDwuLi4+ID4nIGhlcmUsIGFuZCBhbGwgCi0vLyAnYmluZCcgaW5zdGFudGlhdGlvbnMgZm9ybSBhIGNvbXBsZXRlIHR5cGUgYW55d2F5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVCkKLSAgICA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYmluZDxGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKT4qKTsKLSNlbmRpZgotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpIAotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYmluZC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykKLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NQRUNfTkFNRSBpZl8KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCgzLCAzLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRE1DX0FNQklHVU9VU19DVFBTKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU1BFQ19OQU1FIGV2YWxfaWYKLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCgzLCAzLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLSNlbmRpZgotI2VuZGlmCi0KLS8vIHJlYWwgQysrIHZlcnNpb24gaXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotCi1uYW1lc3BhY2UgYXV4IHsKLS8vIGFwcGx5X2NvdW50X2FyZ3MKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYIGJpbmQKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfREVGQVVMVCBuYQotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19BUklUWSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHA+Ci19Ci0KLS8vIGJpbmQKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFQpIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBhdXg6OmJpbmRfY2hvb3NlcjwKLSAgICAgICAgICBhdXg6OmJpbmRfY291bnRfYXJnczxBVVg3NzgwNzZfQklORF9QQVJBTVMoVCk+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKSA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoCi0gICAgICBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSkKLSAgICAsIGJpbmQKLSAgICApCi0KLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygKLSAgICAgIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKQotICAgICwgYmluZAotICAgICkKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTkVTVEVEX0RFRkFVTFRfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTl9TUEVDX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfRE1DX1BBUkFNCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JJTkRfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMQotCi0vLyBGb3IgZ2NjIDQuNCBjb21wYXRhYmlsaXR5LCB3ZSBtdXN0IGluY2x1ZGUgdGhlCi0vLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEggdGVzdCBpbnNpZGUgYW4gI2Vsc2UgY2xhdXNlLgotI2Vsc2UgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotCi0jICAgZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgZGVmaW5lZChBVVg3NzgwNzZfU1BFQ19OQU1FKQotCi0vLyBsYXp5IG1ldGFmdW5jdGlvbiBzcGVjaWFsaXphdGlvbgotdGVtcGxhdGU8IHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHF1b3RlLGlfKTsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpID4gc3RydWN0IEFVWDc3ODA3Nl9TUEVDX05BTUU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8IAotICAgICAgTkROQk9PU1RfUFBfQ0FUKHF1b3RlLGlfKTxBVVg3NzgwNzZfU1BFQ19OQU1FLFRhZz4KLSAgICBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKQotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVSwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgKDMsKDEsIGlfLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfU1BFQ19OQU1FPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygyLCBORE5CT09TVF9QUF9JTkMoaV8pLCB0KQotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotI3VuZGVmIEFVWDc3ODA3Nl9TUEVDX05BTUUKLQotI2Vsc2UgLy8gQVVYNzc4MDc2X1NQRUNfTkFNRQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmluZCxpXykKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVSwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8YTAsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0jICAgZWxzZQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzxGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT46OnR5cGUgZl87Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVAotCi0jICAgaWYgaV8gPiAwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgKDMsKDEsIGlfLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jICAgZW5kaWYKLQotICAgICBwdWJsaWM6Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FSRyh1bnVzZWQsIGlfLCB0KSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIFwKLSAgICB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQodCxORE5CT09TVF9QUF9JTkMoaV8pKTo6dHlwZSBcCi0vKiovCi0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8Ci0gICAgICAgICAgICAgIGZfIAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9BUkcsIHQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVJHCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpCi0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKT4sQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpCi0gICAgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCk+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X0FQUExZPGZfLCBBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKT4qKTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyhORE5CT09TVF9QUF9JTkMoaV8pLCBORE5CT09TVF9QUF9DQVQoYmluZCxpXykpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoTkROQk9PU1RfUFBfSU5DKGlfKSwgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pKQotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgCi0jaWYgaV8gPT0gTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTxGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpID4KLXsKLX07Ci0jZWxzZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRiBBVVg3NzgwNzZfQklORF9OX1NQRUNfUEFSQU1TKGlfLCBULCBuYSkgPgotICAgIDogTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCkgPgotewotfTsKLSNlbmRpZgotCi0jICAgZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPGlfPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPCBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFCi0KLSNlbmRpZiAvLyBBVVg3NzgwNzZfU1BFQ19OQU1FCi0KLSMgICB1bmRlZiBpXwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDIKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0jICAgZGVmaW5lIGpfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBORE5CT09TVF9QUF9DQVQoVCxqXyksTkROQk9PU1RfUFBfQ0FUKG4sal8pID4gTkROQk9PU1RfUFBfQ0FUKHIsal8pOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChyLGpfKTo6dHlwZSBORE5CT09TVF9QUF9DQVQoYSxqXyk7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKHIsal8pOjpuZXh0IE5ETkJPT1NUX1BQX0NBVChuLE5ETkJPT1NUX1BQX0lOQyhqXykpOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzxORE5CT09TVF9QUF9DQVQoYSxqXyksIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT4gTkROQk9PU1RfUFBfQ0FUKHQsal8pOwotICAgICAgICAvLy8KLSMgICBlbHNlCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBORE5CT09TVF9QUF9DQVQoVCxqXyksQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPiBORE5CT09TVF9QUF9DQVQodCxqXyk7Ci0KLSMgICBlbmRpZgotIyAgIHVuZGVmIGpfCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODliY2M1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQklORF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CSU5EX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJpbmRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iaW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBiaW5kX2Z3ZC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kbWNfYW1iaWd1b3VzX2N0cHMuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0RNQ19BTUJJR1VPVVNfQ1RQUykKLSMgICAgICAgZGVmaW5lIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKSAsIGludCBkdW1teV8gPSAwCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICBBVVg3NzgwNzZfRE1DX1BBUkFNKCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBBVVg3NzgwNzZfRE1DX1BBUkFNKCkgXAotICAgIC8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVCwgbmEpCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX0RFRkFVTFRfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0RNQ19QQVJBTQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQklORF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk7Ci0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJlNzAzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQk9PTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JPT0xfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBib29sLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2xfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfY190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IGJvb2xfCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gQ18pOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfY190YWcgdGFnOwotICAgIHR5cGVkZWYgYm9vbF8gdHlwZTsKLSAgICB0eXBlZGVmIGJvb2wgdmFsdWVfdHlwZTsKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+dmFsdWU7IH0KLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLXRlbXBsYXRlPCBib29sIENfID4KLWJvb2wgY29uc3QgYm9vbF88Q18+Ojp2YWx1ZTsKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JPT0xfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNWNhYzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CT09MX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JPT0xfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYm9vbF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYm9vbF87Ci0KLS8vIHNob3JjdXRzCi10eXBlZGVmIGJvb2xfPHRydWU+IHRydWVfOwotdHlwZWRlZiBib29sXzxmYWxzZT4gZmFsc2VfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woYm9vbF8pCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0wodHJ1ZV8pCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woZmFsc2VfKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JPT0xfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI0OWEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ0xFQVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DTEVBUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNsZWFyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY2xlYXJfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBjbGVhcgotICAgIDogY2xlYXJfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsY2xlYXIsKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBjbGVhcikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DTEVBUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDBkYWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0NMRUFSX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NMRUFSX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNsZWFyX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgY2xlYXJfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBjbGVhcjsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DTEVBUl9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb21wYXJpc29uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbXBhcmlzb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWZhZDFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbXBhcmlzb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DT01QQVJJU09OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ09NUEFSSVNPTl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvbXBhcmlzb24uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sZXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DT01QQVJJU09OX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Mzk1ZThjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ09OVEFJTlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DT05UQUlOU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb250YWlucy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb250YWluc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbnRhaW5zX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgY29udGFpbnMKLSAgICA6IGNvbnRhaW5zX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSxUID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsY29udGFpbnMsKFNlcXVlbmNlLFQpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGNvbnRhaW5zKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NPTlRBSU5TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnNfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNGMyZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnNfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ09OVEFJTlNfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ09OVEFJTlNfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvbnRhaW5zX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgY29udGFpbnNfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBjb250YWluczsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DT05UQUlOU19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb3B5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvcHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2UxNmM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvcHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DT1BZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ09QWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvcHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBJbnNlcnRlcgotICAgID4KLXN0cnVjdCBjb3B5X2ltcGwKLSAgICA6IGZvbGQ8IAotICAgICAgICAgIFNlcXVlbmNlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6Om9wZXJhdGlvbgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBJbnNlcnRlcgotICAgID4KLXN0cnVjdCByZXZlcnNlX2NvcHlfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkPAotICAgICAgICAgIFNlcXVlbmNlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6Om9wZXJhdGlvbgotICAgICAgICA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9JTlNFUlRFUl9BTEdPUklUSE1fREVGKDIsIGNvcHkpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ09QWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2RlcmVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2RlcmVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVmYzJhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9kZXJlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0RFUkVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfREVSRUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkZXJlZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEl0ZXJhdG9yKQotICAgID4KLXN0cnVjdCBkZXJlZgotewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1zdmNfdHlwZTxJdGVyYXRvcj46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxkZXJlZiwoSXRlcmF0b3IpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGRlcmVmKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0RFUkVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTM2MGY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRElTVEFOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRpc3RhbmNlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJfZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGZvcndhcmQvYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnMKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGlzdGFuY2VfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgTGFzdCA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpdGVyX2ZvbGQ8Ci0gICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZpcnN0LExhc3Q+Ci0gICAgICAgICAgICAsIG1wbDo6bG9uZ188MD4KLSAgICAgICAgICAgICwgbmV4dDw+Ci0gICAgICAgICAgICA+Ojp0eXBlID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGQ8Ci0gICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZpcnN0LExhc3Q+Ci0gICAgICAgICAgICAsIG1wbDo6bG9uZ188MD4KLSAgICAgICAgICAgICwgbmV4dDw+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQobG9uZywgdmFsdWUgPQotICAgICAgICAgICAgICAoaXRlcl9mb2xkPAotICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rmlyc3QsTGFzdD4KLSAgICAgICAgICAgICAgICAsIG1wbDo6bG9uZ188MD4KLSAgICAgICAgICAgICAgICAsIG5leHQ8PgotICAgICAgICAgICAgICAgID46OnR5cGU6OnZhbHVlKQotICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRmlyc3QpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKExhc3QpCi0gICAgPgotc3RydWN0IGRpc3RhbmNlCi0gICAgOiBkaXN0YW5jZV9pbXBsPCB0eXBlbmFtZSB0YWc8Rmlyc3Q+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTxGaXJzdCwgTGFzdD4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGRpc3RhbmNlLCAoRmlyc3QsIExhc3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGRpc3RhbmNlKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0RJU1RBTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2VfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1M2U5YjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2VfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRElTVEFOQ0VfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRElTVEFOQ0VfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZGlzdGFuY2VfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tbW9uX25hbWVfd2tuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQoZGlzdGFuY2UpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGlzdGFuY2VfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgTGFzdCA+IHN0cnVjdCBkaXN0YW5jZTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZW1wdHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQxMjgxNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9FTVBUWV9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9FTVBUWV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBlbXB0eV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVtcHR5X2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgZW1wdHk7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRU1QVFlfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmEwYWU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGVxdWFsX3RvLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGVxdWFsX3RvCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiA9PQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0VRVUFMX1RPX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXZhbF9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ldmFsX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMzMmZhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ldmFsX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRVZBTF9JRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0VWQUxfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBldmFsX2lmLmhwcCA2MTkyMSAyMDEwLTA1LTExIDIxOjMzOjI0WiBuZWlsZ3JvdmVzICQKLS8vICREYXRlOiAyMDEwLTA1LTExIDE0OjMzOjI0IC0wNzAwIChUdWUsIDExIE1heSAyMDEwKSAkCi0vLyAkUmV2aXNpb246IDYxOTIxICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oQykKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEYyKQotICAgID4KLXN0cnVjdCBldmFsX2lmCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgIHx8ICggTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgPj0gMHgwMzAwKSBcCi0gICAgICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDAzMDQpKSBcCi0gICAgICAgICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzxDLEYxLEYyPjo6dHlwZSBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIDogaWZfPEMsRjEsRjI+Ojp0eXBlCi17Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsZXZhbF9pZiwoQyxGMSxGMikpCi19OwotCi0vLyAoYWxtb3N0KSBjb3B5ICYgcGFzdGUgaW4gb3JkZXIgdG8gc2F2ZSBvbmUgbW9yZSAKLS8vIHJlY3Vyc2l2ZWx5IG5lc3RlZCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIHRvIHVzZXIKLXRlbXBsYXRlPAotICAgICAgYm9vbCBDCi0gICAgLCB0eXBlbmFtZSBGMQotICAgICwgdHlwZW5hbWUgRjIKLSAgICA+Ci1zdHJ1Y3QgZXZhbF9pZl9jCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgIHx8ICggTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgPj0gMHgwMzAwKSBcCi0gICAgICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDAzMDQpKSBcCi0gICAgICAgICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmX2M8QyxGMSxGMj46OnR5cGUgZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICA6IGlmX2M8QyxGMSxGMj46OnR5cGUKLXsKLSNlbmRpZgotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGV2YWxfaWYpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRVZBTF9JRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMWMxZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZJTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GSU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZmluZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9maW5kX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2FtZV9hcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBmaW5kCi0gICAgOiBmaW5kX2lmPCBTZXF1ZW5jZSxzYW1lX2FzPFQ+ID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsZmluZCwoU2VxdWVuY2UsVCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgZmluZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZF9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJmM2FhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRklORF9JRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZJTkRfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmaW5kX2lmLmhwcCA0OTI3NCAyMDA4LTEwLTExIDA3OjIyOjA1WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTEgMDA6MjI6MDUgLTA3MDAgKFNhdCwgMTEgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNzQgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vZmluZF9pZl9wcmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXRlcl9mb2xkX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQoZmluZF9pZikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShQcmVkaWNhdGUpCi0gICAgPgotc3RydWN0IGZpbmRfaWYKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZjwKLSAgICAgICAgICBTZXF1ZW5jZQotICAgICAgICAsIHZvaWQKLSAgICAgICAgLCBtcGw6OmFyZzwxPiAvLyBpZ25vcmUKLSAgICAgICAgLCBwcm90ZWN0PCBhdXg6OmZpbmRfaWZfcHJlZDxQcmVkaWNhdGU+ID4KLSAgICAgICAgPjo6dHlwZSByZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWNvbmQ8cmVzdWx0Xz46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixmaW5kX2lmLChTZXF1ZW5jZSxQcmVkaWNhdGUpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsZmluZF9pZikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GSU5EX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9sZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9mb2xkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRlYTU2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mb2xkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRk9MRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZPTERfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb2xkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTdGF0ZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRm9yd2FyZE9wKQotICAgID4KLXN0cnVjdCBmb2xkCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmZvbGRfaW1wbDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6Ok8xX3NpemU8U2VxdWVuY2U+Ojp2YWx1ZQotICAgICAgICAsIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+OjpzdGF0ZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLGZvbGQsKFNlcXVlbmNlLFN0YXRlLEZvcndhcmRPcCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgZm9sZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GT0xEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9yX2VhY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9yX2VhY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjcyNjMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zvcl9lYWNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZPUl9FQUNIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRk9SX0VBQ0hfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb3JfZWFjaC5ocHAgNTU2NDggMjAwOS0wOC0xOCAwNToxNjo1M1ogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA5LTA4LTE3IDIyOjE2OjUzIC0wNzAwIChNb24sIDE3IEF1ZyAyMDA5KSAkCi0vLyAkUmV2aXNpb246IDU1NjQ4ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy91bndyYXAuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS92YWx1ZV9pbml0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBkb25lID0gdHJ1ZSA+Ci1zdHJ1Y3QgZm9yX2VhY2hfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgTGFzdEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgVHJhbnNmb3JtRnVuYwotICAgICAgICAsIHR5cGVuYW1lIEYKLSAgICAgICAgPgotICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGUoCi0gICAgICAgICAgSXRlcmF0b3IqCi0gICAgICAgICwgTGFzdEl0ZXJhdG9yKgotICAgICAgICAsIFRyYW5zZm9ybUZ1bmMqCi0gICAgICAgICwgRgotICAgICAgICApCi0gICAgewotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmb3JfZWFjaF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgTGFzdEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgVHJhbnNmb3JtRnVuYwotICAgICAgICAsIHR5cGVuYW1lIEYKLSAgICAgICAgPgotICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGUoCi0gICAgICAgICAgSXRlcmF0b3IqCi0gICAgICAgICwgTGFzdEl0ZXJhdG9yKgotICAgICAgICAsIFRyYW5zZm9ybUZ1bmMqIAotICAgICAgICAsIEYgZgotICAgICAgICApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRlcmVmPEl0ZXJhdG9yPjo6dHlwZSBpdGVtOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MTxUcmFuc2Zvcm1GdW5jLGl0ZW0+Ojp0eXBlIGFyZzsKLSAgICAKLSAgICAgICAgLy8gZHdhIDIwMDIvOS8xMCAtLSBtYWtlIHN1cmUgbm90IHRvIGludm9rZSB1bmRlZmluZWQgYmVoYXZpb3IKLSAgICAgICAgLy8gd2hlbiB3ZSBwYXNzIGFyZy4KLSAgICAgICAgdmFsdWVfaW5pdGlhbGl6ZWQ8YXJnPiB4OwotICAgICAgICBhdXg6OnVud3JhcChmLCAwKShuZG5ib29zdDo6Z2V0KHgpKTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PEl0ZXJhdG9yPjo6dHlwZSBpdGVyOwotICAgICAgICBmb3JfZWFjaF9pbXBsPG5kbmJvb3N0Ojppc19zYW1lPGl0ZXIsTGFzdEl0ZXJhdG9yPjo6dmFsdWU+Ci0gICAgICAgICAgICA6OmV4ZWN1dGUoIHN0YXRpY19jYXN0PGl0ZXIqPigwKSwgc3RhdGljX2Nhc3Q8TGFzdEl0ZXJhdG9yKj4oMCksIHN0YXRpY19jYXN0PFRyYW5zZm9ybUZ1bmMqPigwKSwgZik7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLS8vIGFndXJ0LCAxNy9tYXIvMDI6IHBvaW50ZXIgZGVmYXVsdCBwYXJhbWV0ZXJzIGFyZSBuZWNlc3NhcnkgdG8gd29ya2Fyb3VuZCAKLS8vIE1TVkMgNi41IGZ1bmN0aW9uIHRlbXBsYXRlIHNpZ25hdHVyZSdzIG1hbmdsaW5nIGJ1ZwotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgVHJhbnNmb3JtT3AKLSAgICAsIHR5cGVuYW1lIEYKLSAgICA+Ci1pbmxpbmUKLXZvaWQgZm9yX2VhY2goRiBmLCBTZXF1ZW5jZSogPSAwLCBUcmFuc2Zvcm1PcCogPSAwKQotewotICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKCBpc19zZXF1ZW5jZTxTZXF1ZW5jZT4gKSk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZSBmaXJzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUgbGFzdDsKLQotICAgIGF1eDo6Zm9yX2VhY2hfaW1wbDwgbmRuYm9vc3Q6OmlzX3NhbWU8Zmlyc3QsbGFzdD46OnZhbHVlID4KLSAgICAgICAgOjpleGVjdXRlKHN0YXRpY19jYXN0PGZpcnN0Kj4oMCksIHN0YXRpY19jYXN0PGxhc3QqPigwKSwgc3RhdGljX2Nhc3Q8VHJhbnNmb3JtT3AqPigwKSwgZik7Ci19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIEYKLSAgICA+Ci1pbmxpbmUKLXZvaWQgZm9yX2VhY2goRiBmLCBTZXF1ZW5jZSogPSAwKQotewotICAgIGZvcl9lYWNoPFNlcXVlbmNlLCBpZGVudGl0eTw+ID4oZik7Ci19Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRk9SX0VBQ0hfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3YzZlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmcm9udF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGZyb250X2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgZnJvbnQ7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRlJPTlRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTA2MWM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRlJPTlRfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GUk9OVF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZyb250X2luc2VydGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnNlcnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgPgotc3RydWN0IGZyb250X2luc2VydGVyCi0gICAgOiBpbnNlcnRlcjwgU2VxdWVuY2UscHVzaF9mcm9udDw+ID4KLXsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRlJPTlRfSU5TRVJURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDYxNDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9HUkVBVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfR1JFQVRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGdyZWF0ZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgZ3JlYXRlcgotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0dSRUFURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDBhOGU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfR1JFQVRFUl9FUVVBTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGdyZWF0ZXJfZXF1YWwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgZ3JlYXRlcl9lcXVhbAotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPj0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaGFzX3h4eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9oYXNfeHh4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg4NTYwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9oYXNfeHh4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0hBU19YWFhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDYKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLTIwMDMKLS8vIENvcHlyaWdodCBEYW5pZWwgV2Fsa2VyIDIwMDcKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX3h4eC5ocHAgNjQxNDYgMjAxMC0wNy0xOSAwMDo0NjozMVogZGp3YWxrZXIgJAotLy8gJERhdGU6IDIwMTAtMDctMTggMTc6NDY6MzEgLTA3MDAgKFN1biwgMTggSnVsIDIwMTApICQKLS8vICRSZXZpc2lvbjogNjQxNDYgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX3h4eC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmNfdHlwZW5hbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MCkgKQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkKLQotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLQotLy8gYWd1cnQsIDExL3NlcC8wMjogTVNWQy1zcGVjaWZpYyB2ZXJzaW9uICg8IDcuMSksIGJhc2VkIG9uIGEgVVNFTkVUIAotLy8gbmV3c2dyb3VwJ3MgcG9zdGluZyBieSBKb2huIE1hZHNlbiAoY29tcC5sYW5nLmMrKy5tb2RlcmF0ZWQsIAotLy8gMTk5OS0xMS0xMiAxOToxNzowNiBHTVQpOyB0aGUgY29kZSBpcyBfbm90XyBzdGFuZGFyZC1jb25mb3JtaW5nLCBidXQgCi0vLyBpdCB3b3JrcyB3YXkgbW9yZSByZWxpYWJseSB0aGFuIHRoZSBTRklOQUUtYmFzZWQgaW1wbGVtZW50YXRpb24KLQotLy8gTW9kaWZpZWQgZHdhIDgvT2N0LzAyIHRvIGhhbmRsZSByZWZlcmVuY2UgdHlwZXMuCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi1zdHJ1Y3QgaGFzX3h4eF90YWc7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IHN0cnVjdCBtc3ZjX2luY29tcGxldGVfYXJyYXkKLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtzaXplb2YoVSkgKyAxXTsKLX07Ci0jZW5kaWYKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IG1zdmNfaXNfaW5jb21wbGV0ZQotewotICAgIC8vIE1TVkMgaXMgY2FwYWJsZSBvZiBzb21lIGtpbmRzIG9mIFNGSU5BRS4gIElmIFUgaXMgYW4gaW5jb21wbGV0ZQotICAgIC8vIHR5cGUsIGl0IHdvbid0IHBpY2sgdGhlIHNlY29uZCBvdmVybG9hZAotICAgIHN0YXRpYyBjaGFyIHRlc3RlciguLi4pOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4KLSAgICBzdGF0aWMgdHlwZW5hbWUgbXN2Y19pbmNvbXBsZXRlX2FycmF5PFU+Ojp0eXBlIHRlc3Rlcih0eXBlX3dyYXBwZXI8VT4pOwotI2Vsc2UKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+Ci0gICAgc3RhdGljIGNoYXIgKCYgdGVzdGVyKHR5cGVfd3JhcHBlcjxVPikgKVtzaXplb2YoVSkrMV07Ci0jZW5kaWYgCi0gICAgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgc2l6ZW9mKHRlc3Rlcih0eXBlX3dyYXBwZXI8VD4oKSkpID09IDEKLSAgICAgICAgKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtc3ZjX2lzX2luY29tcGxldGU8aW50PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLX19fQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRl8odHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgbmFtZSA9IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfeHh4X3RhZyA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGwpIDogVCBcCi17IFwKLSAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcgXAotICAgIHRlc3Qodm9pZCgqKSg6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3h4eF90YWcpKTsgXAotICAgIFwKLSAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIHRlc3QoLi4uKTsgXAotICAgIFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBcCi0gICAgICAgICAgc2l6ZW9mKHRlc3Qoc3RhdGljX2Nhc3Q8dm9pZCgqKShuYW1lKT4oMCkpKSBcCi0gICAgICAgICAgICAhPSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcpIFwKLSAgICAgICAgKTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7IFwKLX07IFwKLVwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBmYWxsYmFja18gPSBuZG5ib29zdDo6bXBsOjpib29sXzxkZWZhdWx0Xz4gPiBcCi1zdHJ1Y3QgdHJhaXQgXAotICAgIDogbmRuYm9vc3Q6Om1wbDo6aWZfYzwgXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmF1eDo6bXN2Y19pc19pbmNvbXBsZXRlPFQ+Ojp2YWx1ZSBcCi0gICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZmFsc2U+IFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGwpPFQ+IFwKLSAgICAgICAgPjo6dHlwZSBcCi17IFwKLX07IFwKLVwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB2b2lkKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgYm9vbCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGNoYXIpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBzaWduZWQgY2hhcikgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHVuc2lnbmVkIGNoYXIpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBzaWduZWQgc2hvcnQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB1bnNpZ25lZCBzaG9ydCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHNpZ25lZCBpbnQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB1bnNpZ25lZCBpbnQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBzaWduZWQgbG9uZykgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHVuc2lnbmVkIGxvbmcpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBmbG9hdCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGRvdWJsZSkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGxvbmcgZG91YmxlKSBcCi0vKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIFQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PFQ+IFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZmFsc2U+IHR5cGU7IFwKLX07IFwKLS8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIHVudXNlZCkgXAotICAgIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRl8odHJhaXQsIG5hbWUsIHVudXNlZCkgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB3Y2hhcl90KSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIHVudXNlZCkgXAotICAgIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRl8odHJhaXQsIG5hbWUsIHVudXNlZCkgXAotLyoqLwotI2VuZGlmCi0KLQotLy8gU0ZJTkFFLWJhc2VkIGltcGxlbWVudGF0aW9ucyBiZWxvdyBhcmUgZGVyaXZlZCBmcm9tIGEgVVNFTkVUIG5ld3Nncm91cCdzIAotLy8gcG9zdGluZyBieSBSYW5pIFNoYXJvbmkgKGNvbXAubGFuZy5jKysubW9kZXJhdGVkLCAyMDAyLTAzLTE3IDA3OjQ1OjA5IFBTVCkKLQotIyAgIGVsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTQwMCkpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPD0gNzAwKQotCi0vLyBNU1ZDIDcuMSsgJiBWQUNQUAotCi0vLyBhZ3VydCwgMTUvanVuLzA1OiByZXBsYWNlIG92ZXJsb2FkLWJhc2VkIFNGSU5BRSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNGSU5BRQotLy8gYXBwbGllZCB0byBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHRvIGZpeCBzb21lIGFwcGFyZW50bHkgcmFuZG9tIGZhaWx1cmVzIAotLy8gKHRoYW5rcyB0byBEYW5pZWwgV2FsbGluIGZvciByZXNlYXJjaGluZyB0aGlzISkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsIF9tc3ZjX3NmaW5hZV9oZWxwZXIpIFwKLXsgXAotICAgIHR5cGVkZWYgdm9pZCB0eXBlOyBcCi19O1wKLVwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gdm9pZCA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGxfKSBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGxfKTwgXAotICAgICAgVCBcCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQodHJhaXQsIF9tc3ZjX3NmaW5hZV9oZWxwZXIpPCB0eXBlbmFtZSBUOjpuYW1lID46OnR5cGUgXAotICAgID4gXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgZmFsbGJhY2tfID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZGVmYXVsdF8+ID4gXAotc3RydWN0IHRyYWl0IFwKLSAgICA6IE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfaW1wbF8pPFQ+IFwKLXsgXAotfTsgXAotLyoqLwotCi0jICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MCkgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0JDQl9ERUYodHJhaXQsIHRyYWl0X3Rlc3RlciwgbmFtZSwgZGVmYXVsdF8pIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIElTX0NMQVNTID4gXAotc3RydWN0IHRyYWl0X3Rlc3RlciBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsICB2YWx1ZSA9IGZhbHNlICk7IFwKLX07IFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gXAotc3RydWN0IHRyYWl0X3Rlc3RlcjwgVCwgdHJ1ZSA+IFwKLXsgXAotICAgIHN0cnVjdCB0cmFpdF90ZXN0ZXJfaW1wbCBcCi0gICAgeyBcCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVSA+IFwKLSAgICAgICAgc3RhdGljIGludCAgcmVzb2x2ZSggbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8VT4gY29uc3Qgdm9sYXRpbGUgKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPHR5cGVuYW1lIFU6Om5hbWUgPiogPSAwICk7IFwKLSAgICAgICAgc3RhdGljIGNoYXIgcmVzb2x2ZSggLi4uICk7IFwKLSAgICB9OyBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxUPiB0XzsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgdmFsdWUgPSAoIHNpemVvZiggdHJhaXRfdGVzdGVyX2ltcGw6OnJlc29sdmUoIHN0YXRpY19jYXN0PCB0XyAqID4oMCkgKSApID09IHNpemVvZihpbnQpICkgKTsgXAotfTsgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCB2YWx1ZSA9ICh0cmFpdF90ZXN0ZXI8IFQsIG5kbmJvb3N0Ojppc19jbGFzczwgVCA+Ojp2YWx1ZSA+Ojp2YWx1ZSkgKTsgICAgIFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPCB0cmFpdDwgVCwgZmFsbGJhY2tfID46OnZhbHVlID4gdHlwZTsgXAotfTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi0gICAgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfQkNCX0RFRiggdHJhaXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfdGVzdGVyKSAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuYW1lICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBkZWZhdWx0XyApIFwKLS8qKi8KLQotIyAgIGVsc2UgLy8gb3RoZXIgU0ZJTkFFLWNhcGFibGUgY29tcGlsZXJzCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCBcCi17IFwKLSAgICBzdHJ1Y3QgZ2NjXzNfMl93a25kIFwKLSAgICB7IFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgdGVzdCggXAotICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxVPiBjb25zdCB2b2xhdGlsZSogXAotICAgICAgICAgICAgLCBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxORE5CT09TVF9NU1ZDX1RZUEVOQU1FIFU6Om5hbWU+KiA9IDAgXAotICAgICAgICAgICAgKTsgXAotICAgIFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnIHRlc3QoLi4uKTsgXAotICAgIH07IFwKLSAgICBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxUPiB0XzsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IFwKLSAgICAgICAgICBzaXplb2YoZ2NjXzNfMl93a25kOjp0ZXN0KHN0YXRpY19jYXN0PHRfKj4oMCkpKSBcCi0gICAgICAgICAgICA9PSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnKSBcCi0gICAgICAgICk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0KLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYCi0KLS8vIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxsYmFja186OnZhbHVlKTsgXAotICAgIHR5cGVkZWYgZmFsbGJhY2tfIHR5cGU7IFwKLX07IFwKLS8qKi8KLQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKG5hbWUpIFwKLSAgICBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoTkROQk9PU1RfUFBfQ0FUKGhhc18sbmFtZSksIG5hbWUsIGZhbHNlKSBcCi0vKiovCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWF9URU1QTEFURSkKLQotLy8gQ3JlYXRlIGEgYm9vbGVhbiBNZXRhZnVuY3Rpb24gdG8gZGV0ZWN0IGEgbmVzdGVkIHRlbXBsYXRlCi0vLyBtZW1iZXIuIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gYSBVU0VORVQgbmV3c2dyb3VwJ3MKLS8vIHBvc3RpbmcgYnkgQWxla3NleSBHdXJ0b3ZveSAoY29tcC5sYW5nLmMrKy5tb2RlcmF0ZWQsIDIwMDItMDMtMTkpLAotLy8gUmFuaSBTaGFyb25pJ3MgVVNFTkVUIHBvc3RpbmcgY2l0ZWQgYWJvdmUsIHRoZSBub24tdGVtcGxhdGUgaGFzX3h4eAotLy8gaW1wbGVtZW50YXRpb25zIGFib3ZlLCBhbmQgZGlzY3Vzc2lvbiBvbiB0aGUgQm9vc3QgbWFpbGluZyBsaXN0LgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fV1JBUFBFRF9UWVBFUykKLSMgICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX05PX1dSQVBQRURfVFlQRVMgMQotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fRVhQTElDSVRfVEVTVF9GVU5DVElPTikKLSMgICAgIGlmIChkZWZpbmVkKE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUykpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9OT19FWFBMSUNJVF9URVNUX0ZVTkNUSU9OIDEKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX1RFTVBMQVRFX1NGSU5BRSkKLSMgICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX1RFTVBMQVRFX1NGSU5BRSAxCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLS8vIE5PVEU6IE1hbnkgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gbWFjcm9zIHRha2UgYSBCb29zdC5QcmVwcm9jZXNzb3IKLS8vIGFycmF5IGFyZ3VtZW50IGNhbGxlZCBhcmdzIHdoaWNoIGlzIG9mIHRoZSBmb2xsb3dpbmcgZm9ybS4KLS8vICAgICAgICAgICAoIDQsICggdHJhaXQsIG5hbWUsIG1heF9hcml0eSwgZGVmYXVsdF8gKSApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpIFwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIGFyZ3MpICwgX2ludHJvc3BlY3QpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUUoYXJncywgbikgXAotICAgICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIGFyZ3MpICwgX3N1YnN0aXR1dGUpLCBuKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpIFwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIGFyZ3MpICwgX3Rlc3QpIFwKLSAgICAvKiovCi0KLS8vIFRoYW5rcyB0byBHdWlsbGF1bWUgTWVscXVpb25kIGZvciBwb2ludGluZyBvdXQgdGhlIG5lZWQgZm9yIHRoZQotLy8gInN1YnN0aXR1dGUiIHRlbXBsYXRlIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBvdmVybG9hZGVkIHRlc3QKLS8vIGZ1bmN0aW9ucyB0byBnZXQgU0ZJTkFFIHRvIHdvcmsgZm9yIG1lbWJlciB0ZW1wbGF0ZXMgd2l0aCB0aGUKLS8vIGNvcnJlY3QgbmFtZSBidXQgZGlmZmVyZW50IG51bWJlciBvZiBhcmd1bWVudHMuCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX1NVQlNUSVRVVEUoeiwgbiwgYXJncykgXAotICAgICAgdGVtcGxhdGU8IFwKLSAgICAgICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCB0eXBlbmFtZSBWKSA+IGNsYXNzIFYgXAotICAgICAgID4gXAotICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIHsgXAotICAgICAgfTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9TVUJTVElUVVRFKGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8pIFwKLSAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgYXJncykgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX1NVQlNUSVRVVEUgXAotICAgICAgICAsIGFyZ3MgXAotICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgaWYgIU5ETkJPT1NUX01QTF9IQVNfWFhYX05PX0VYUExJQ0lUX1RFU1RfRlVOQ1RJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9SRUpFQ1QoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSguLi4pOyBcCi0gICAgICAvKiovCi0jICAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1JFSkVDVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoLi4uKTsgXAotICAgICAgLyoqLwotIyAgIGVuZGlmCi0KLSMgICBpZiAhTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fV1JBUFBFRF9UWVBFUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX0FDQ0VQVCh6LCBuLCBhcmdzKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoIFwKLSAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPCBWID4gY29uc3Qgdm9sYXRpbGUqIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIDwgXAotICAgICAgICAgICAgICAgIFY6OnRlbXBsYXRlIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgYXJncykgXAotICAgICAgICAgICAgPiogPSAwIFwKLSAgICAgICAgKTsgXAotICAgICAgLyoqLwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIGFyZ3MpIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX0FDQ0VQVCBcCi0gICAgICAgICAgLCBhcmdzIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0jICAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFYgPiBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSggXAotICAgICAgICAgICAgViBjb25zdCB2b2xhdGlsZSogXAotICAgICAgICAgICwgbWVtYmVyX21hY3JvKGFyZ3MsIFYsIFQpKiA9IDAgXAotICAgICAgICApOyBcCi0gICAgICAvKiovCi0jICAgZW5kaWYKLQotIyAgIGlmICFORE5CT09TVF9NUExfSEFTX1hYWF9OT19FWFBMSUNJVF9URVNUX0ZVTkNUSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVTVChhcmdzKSBcCi0gICAgICAgICAgc2l6ZW9mKE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpPCBVID4oMCkpIFwKLSAgICAgICAgICAgICAgPT0gc2l6ZW9mKG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZykgXAotICAgICAgLyoqLwotIyAgIGVsc2UKLSMgICAgIGlmICFORE5CT09TVF9NUExfSEFTX1hYWF9OT19XUkFQUEVEX1RZUEVTCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URVNUKGFyZ3MpIFwKLSAgICAgICAgICBzaXplb2YoIFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoIFwKLSAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PCBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjwgVSA+KiA+KDApIFwKLSAgICAgICAgICAgICAgKSBcCi0gICAgICAgICAgKSA9PSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnKSBcCi0gICAgICAgIC8qKi8KLSMgICAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFU1QoYXJncykgXAotICAgICAgICAgIHNpemVvZiggXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSggXAotICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8IFUqID4oMCkgXAotICAgICAgICAgICAgICApIFwKLSAgICAgICAgICApID09IHNpemVvZihuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcpIFwKLSAgICAgICAgLyoqLwotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1QoIFwKLSAgICAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICkgXAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBcCi0gICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpIHsgXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEUoYXJncywgc3Vic3RpdHV0ZV9tYWNybykgXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1JFSkVDVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9BQ0NFUFQoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBcCi0gICAgICAgICAgICAgIGJvb2wsIHZhbHVlID0gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVTVChhcmdzKSBcCi0gICAgICAgICAgKTsgXAotICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IHZhbHVlID4gdHlwZTsgXAotICAgICAgfTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTVBMRU1FTlRBVElPTiggXAotICAgICAgICAgICAgICAgYXJncywgaW50cm9zcGVjdF9tYWNybywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgKSBcCi0gICAgICB0ZW1wbGF0ZTwgXAotICAgICAgICAgIHR5cGVuYW1lIFQgXAotICAgICAgICAsIHR5cGVuYW1lIGZhbGxiYWNrXyBcCi0gICAgICAgICAgICAgID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgYXJncykgPiBcCi0gICAgICA+IFwKLSAgICAgIGNsYXNzIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgYXJncykgeyBcCi0gICAgICAgICAgaW50cm9zcGVjdF9tYWNybyhhcmdzLCBzdWJzdGl0dXRlX21hY3JvLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgIHB1YmxpYzogXAotICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlIFwKLSAgICAgICAgICAgICAgPSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX05BTUUoYXJncyk8IFQgPjo6dmFsdWU7IFwKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fTkFNRShhcmdzKTwgXAotICAgICAgICAgICAgICBUIFwKLSAgICAgICAgICA+Ojp0eXBlIHR5cGU7IFwKLSAgICAgIH07IFwKLSAgICAvKiovCi0KLS8vIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfRlVOQ1RJT05fU0ZJTkFFIGV4cGFuZHMgdG8gdGhlIGZ1bGwKLS8vIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbi1iYXNlZCBtZXRhZnVuY3Rpb24uIENvbXBpbGUgd2l0aCAtRQotLy8gdG8gc2VlIHRoZSBwcmVwcm9jZXNzb3Igb3V0cHV0IGZvciB0aGlzIG1hY3JvLgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX0ZVTkNUSU9OX1NGSU5BRSggXAotICAgICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgKSBcCi0gICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTVBMRU1FTlRBVElPTiggXAotICAgICAgICAgIGFyZ3MgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1QgXAotICAgICAgICAsIHN1YnN0aXR1dGVfbWFjcm8gXAotICAgICAgICAsIG1lbWJlcl9tYWNybyBcCi0gICAgICApIFwKLSAgICAvKiovCi0KLSMgICBpZiBORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19URU1QTEFURV9TRklOQUUKLQotIyAgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfTkFNRVNQQUNFX0xFVkVMX1NVQlNUSVRVVEUpCi0jICAgICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfTkFNRVNQQUNFX0xFVkVMX1NVQlNUSVRVVEUgMQotIyAgICAgICBlbmRpZgotIyAgICAgZW5kaWYKLQotIyAgICAgaWYgIU5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX05BTUVTUEFDRV9MRVZFTF9TVUJTVElUVVRFCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICAgIGFyZ3MsIG4gXAotICAgICAgICAgICAgICAgKSBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUUoYXJncywgbikgXAotICAgICAgICAvKiovCi0jICAgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICAgIGFyZ3MsIG4gXAotICAgICAgICAgICAgICAgKSBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKCBcCi0gICAgICAgICAgICAgIGJvb3N0X21wbF9oYXNfeHh4XyBcCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIFwKLSAgICAgICAgICApIFwKLSAgICAgICAgLyoqLwotIyAgICAgZW5kaWYKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9UQUdfTkFNRSggXAotICAgICAgICAgICAgICAgICBhcmdzIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKCBcCi0gICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgIGFyZ3MsIDAgXAotICAgICAgICAgICAgKSBcCi0gICAgICAgICAgLCBfdGFnIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9TVUJTVElUVVRFX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIHosIG4sIGFyZ3MgXAotICAgICAgICAgICAgICkgXAotICAgICAgICB0ZW1wbGF0ZTwgXAotICAgICAgICAgICAgIHRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIHR5cGVuYW1lIFUpID4gY2xhc3MgVSBcCi0gICAgICAgID4gXAotICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICBhcmdzLCBuIFwKLSAgICAgICAgICAgICAgICkgeyBcCi0gICAgICAgICAgICB0eXBlZGVmIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfVEFHX05BTUUoYXJncykgXAotICAgICAgICAgICAgICAgIHR5cGU7IFwKLSAgICAgICAgfTsgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfU1VCU1RJVFVURV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICBhcmdzLCBzdWJzdGl0dXRlX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgdHlwZWRlZiB2b2lkIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9UQUdfTkFNRShhcmdzKTsgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgYXJncykgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfU1VCU1RJVFVURV9XSVRIX1RFTVBMQVRFX1NGSU5BRSBcCi0gICAgICAgICAgLCBhcmdzIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9SRUpFQ1RfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgdGVtcGxhdGU8IFwKLSAgICAgICAgICAgIHR5cGVuYW1lIFUgXAotICAgICAgICAgICwgdHlwZW5hbWUgViBcCi0gICAgICAgICAgICAgICAgPSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfVEFHX05BTUUoYXJncykgXAotICAgICAgICA+IFwKLSAgICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpIHsgXAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOyBcCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPCB2YWx1ZSA+IHR5cGU7IFwKLSAgICAgICAgfTsgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfQUNDRVBUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIHosIG4sIGFyZ3MgXAotICAgICAgICAgICAgICkgXAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IFwKLSAgICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpPCBcCi0gICAgICAgICAgICBVIFwKLSAgICAgICAgICAsIHR5cGVuYW1lIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICAgICBhcmdzLCBuIFwKLSAgICAgICAgICAgICAgICApPCBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX01TVkNfVFlQRU5BTUUgVTo6TkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBhcmdzKTwgPiBcCi0gICAgICAgICAgICAgICAgPjo6dHlwZSBcCi0gICAgICAgID4geyBcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgXAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzwgdmFsdWUgPiB0eXBlOyBcCi0gICAgICAgIH07IFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICBhcmdzLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICAgICkgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgYXJncykgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfQUNDRVBUX1dJVEhfVEVNUExBVEVfU0ZJTkFFIFwKLSAgICAgICAgICAsIGFyZ3MgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfUkVKRUNUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9BQ0NFUFRfV0lUSF9URU1QTEFURV9TRklOQUUoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4gXAotICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpIFwKLSAgICAgICAgICAgIDogTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncyk8IFUgPiB7IFwKLSAgICAgICAgfTsgXAotICAgICAgLyoqLwotIAotLy8gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9URU1QTEFURV9TRklOQUUgZXhwYW5kcyB0byB0aGUgZnVsbAotLy8gaW1wbGVtZW50YXRpb24gb2YgdGhlIHRlbXBsYXRlLWJhc2VkIG1ldGFmdW5jdGlvbi4gQ29tcGlsZSB3aXRoIC1FCi0vLyB0byBzZWUgdGhlIHByZXByb2Nlc3NvciBvdXRwdXQgZm9yIHRoaXMgbWFjcm8uCi0vLwotLy8gTm90ZSB0aGF0IGlmIE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX05BTUVTUEFDRV9MRVZFTF9TVUJTVElUVVRFIGlzCi0vLyBkZWZpbmVkIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEVfV0lUSF9URU1QTEFURV9TRklOQUUgbmVlZHMKLS8vIHRvIGJlIGV4cGFuZGVkIGF0IG5hbWVzcGFjZSBsZXZlbCBiZWZvcmUKLS8vIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfVEVNUExBVEVfU0ZJTkFFIGNhbiBiZSB1c2VkLgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8gXAotICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU1QTEVNRU5UQVRJT04oIFwKLSAgICAgICAgICAgIGFyZ3MgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSBcCi0gICAgICAgICAgLCBzdWJzdGl0dXRlX21hY3JvIFwKLSAgICAgICAgICAsIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfVEVNUExBVEVfU0ZJTkFFCi0KLS8vIE5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoZSBwYXJhbWV0ZXIgYW5kIGFjY2VzcyBtYWNyb3MKLS8vIGFyZSBubyBsb25nZXIgZXhwYW5kZWQuCi0jICAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9URU1QTEFURV9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfRlVOQ1RJT05fU0ZJTkFFKCBcCi0gICAgICAgICAgICAoIDQsICggdHJhaXQsIG5hbWUsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIGRlZmF1bHRfICkgKSBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URU1QTEFURV9TVUJTVElUVVRFX1BBUkFNRVRFUiBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URU1QTEFURV9BQ0NFU1MgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLSMgICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgKCA0LCAoIHRyYWl0LCBuYW1lLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCBkZWZhdWx0XyApICkgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVNUExBVEVfU1VCU1RJVFVURV9QQVJBTUVURVIgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVNUExBVEVfQUNDRVNTIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0jICAgZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYX1RFTVBMQVRFCi0KLS8vIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgXAotICAgICAgICAgICAgICAsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPCBkZWZhdWx0XyA+ID4gXAotICAgICAgc3RydWN0IHRyYWl0IHsgXAotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbGxiYWNrXzo6dmFsdWUpOyBcCi0gICAgICAgICAgdHlwZWRlZiBmYWxsYmFja18gdHlwZTsgXAotICAgICAgfTsgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWF9URU1QTEFURQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX0RFRihuYW1lKSBcCi0gICAgICBORE5CT09TVF9NUExfSEFTX1hYWF9URU1QTEFURV9OQU1FRF9ERUYoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQoaGFzXywgbmFtZSksIG5hbWUsIGZhbHNlIFwKLSAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9IQVNfWFhYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTkyMDdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSURFTlRJVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JREVOVElUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlkZW50aXR5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGlkZW50aXR5Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBpZGVudGl0eSwgKFQpKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IG1ha2VfaWRlbnRpdHkKLXsKLSAgICB0eXBlZGVmIGlkZW50aXR5PFQ+IHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBtYWtlX2lkZW50aXR5LCAoVCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKDEsIGlkZW50aXR5KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX05PX0VUSSgxLCBtYWtlX2lkZW50aXR5KQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lERU5USVRZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzRiZTVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYwotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGlmX2M8ZmFsc2UsVDEsVDI+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotfTsKLQotLy8gYWd1cnQsIDA1L3NlcC8wNDogbm9uZGVzY3JpcHRpdmUgcGFyYW1ldGVyIG5hbWVzIGZvciB0aGUgc2FrZSBvZiBEaWdpdGFsTWFycwotLy8gKGFuZCBwb3NzaWJseSBNV0NXIDwgOC4wKTsgc2VlIGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9nbWFuZS5jb21wLmxpYi5ib29zdC5kZXZlbC8xMDg5NTkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQzKQotICAgID4KLXN0cnVjdCBpZl8KLXsKLSBwcml2YXRlOgotICAgIC8vIGFndXJ0LCAwMi9qYW4vMDM6IHR3by1zdGVwICd0eXBlJyBkZWZpbml0aW9uIGZvciB0aGUgc2FrZSBvZiBhQ0MgCi0gICAgdHlwZWRlZiBpZl9jPAotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CQ0NfSU5URUdSQUxfQ09OU1RBTlRTKQotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMSk6OnZhbHVlCi0jZWxzZQotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoYm9vbCwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQxKTo6dmFsdWUpCi0jZW5kaWYKLSAgICAgICAgLCBUMgotICAgICAgICAsIFQzCi0gICAgICAgID4gYWxtb3N0X3R5cGVfOwotIAotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFsbW9zdF90eXBlXzo6dHlwZSB0eXBlOwotICAgIAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxpZl8sKFQxLFQyLFQzKSkKLX07Ci0KLSNlbHNlCi0KLS8vIG5vIHBhcnRpYWwgY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIEMgPgotc3RydWN0IGlmX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlmX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgeyAKLSAgICAgICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIENfCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjppZl9pbXBsPCBDXyA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUMSxUMj46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIChhbG1vc3QpIGNvcHkgJiBwYXN0ZSBpbiBvcmRlciB0byBzYXZlIG9uZSBtb3JlIAotLy8gcmVjdXJzaXZlbHkgbmVzdGVkIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gdG8gdXNlcgotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKENfKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGlmXwotewotICAgIGVudW0geyBtc3ZjX3drbmRfID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoQ18pOjp2YWx1ZSB9OwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmlmX2ltcGw8IE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoYm9vbCwgbXN2Y193a25kXykgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VDEsVDI+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsaWZfLChDXyxUMSxUMikpCi19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaWZfKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmNlYmExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGluc2VydGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgT3BlcmF0aW9uCi0gICAgPgotc3RydWN0IGluc2VydGVyCi17Ci0gICAgdHlwZWRlZiBTZXF1ZW5jZSAgICBzdGF0ZTsKLSAgICB0eXBlZGVmIE9wZXJhdGlvbiAgIG9wZXJhdGlvbjsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5TRVJURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVmNjk5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHA+Ci0KLSNkZWZpbmUgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBpbnQKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjMwMjQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5UX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+IHN0cnVjdCBpbnRfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGludF8pCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5UX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOWZhOTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW50ZWdyYWxfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDw9IDUzODAwKQotLy8gdGhlIHR5cGUgb2Ygbm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnRzIG1heSBub3QgZGVwZW5kIG9uIHRlbXBsYXRlIGFyZ3VtZW50cwotIyAgIGRlZmluZSBBVVhfV1JBUFBFUl9QQVJBTVMoTikgdHlwZW5hbWUgVCwgbG9uZyBOCi0jZWxzZQotIyAgIGRlZmluZSBBVVhfV1JBUFBFUl9QQVJBTVMoTikgdHlwZW5hbWUgVCwgVCBOCi0jZW5kaWYKLQotI2RlZmluZSBBVVhfV1JBUFBFUl9OQU1FIGludGVncmFsX2MKLSNkZWZpbmUgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBUCi0jZGVmaW5lIEFVWF9XUkFQUEVSX0lOU1QodmFsdWUpIEFVWF9XUkFQUEVSX05BTUU8IFQsIHZhbHVlID4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcD4KLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NTEpCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0vLyAnYm9vbCcgY29uc3RhbnQgZG9lc24ndCBoYXZlICduZXh0Jy8ncHJpb3InIG1lbWJlcnMKLXRlbXBsYXRlPCBib29sIEMgPgotc3RydWN0IGludGVncmFsX2M8Ym9vbCwgQz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBDKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2NfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGludGVncmFsX2MgdHlwZTsKLSAgICB0eXBlZGVmIGJvb2wgdmFsdWVfdHlwZTsKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+dmFsdWU7IH0KLX07Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5URUdSQUxfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVhZWM2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5URUdSQUxfQ19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbF9jX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDw9IDUzODAwKQotLy8gdGhlIHR5cGUgb2Ygbm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnRzIG1heSBub3QgZGVwZW5kIG9uIHRlbXBsYXRlIGFyZ3VtZW50cwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGxvbmcgTiA+IHN0cnVjdCBpbnRlZ3JhbF9jOwotI2Vsc2UKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIE4gPiBzdHJ1Y3QgaW50ZWdyYWxfYzsKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGludGVncmFsX2MpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5URUdSQUxfQ19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZDJhYTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfY190YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludGVncmFsX2NfdGFnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXN0cnVjdCBpbnRlZ3JhbF9jX3RhZyB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7IH07Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGludGVncmFsX2NfdGFnKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfcGxhY2Vob2xkZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfcGxhY2Vob2xkZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2Y5NjUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lzX3BsYWNlaG9sZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlzX3BsYWNlaG9sZGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FyZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3BsYWNlaG9sZGVyCi0gICAgOiBib29sXzxmYWxzZT4KLXsKLX07Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLXN0cnVjdCBpc19wbGFjZWhvbGRlcjwgYXJnPE4+ID4KLSAgICA6IGJvb2xfPHRydWU+Ci17Ci19OwotCi0jZWxzZQotCi1uYW1lc3BhY2UgYXV4IHsKLQotYXV4Ojpub190YWcgaXNfcGxhY2Vob2xkZXJfaGVscGVyKC4uLik7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLWF1eDo6eWVzX3RhZyBpc19wbGFjZWhvbGRlcl9oZWxwZXIoYXV4Ojp0eXBlX3dyYXBwZXI8IGFyZzxOPiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfcGxhY2Vob2xkZXIKLXsKLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8VD4qIGdldCgpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZihhdXg6OmlzX3BsYWNlaG9sZGVyX2hlbHBlcihnZXQoKSkpID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICk7Ci0gICAgCi0gICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MTExYmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfc2VxdWVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVNfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JU19TRVFVRU5DRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlzX3NlcXVlbmNlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHA+Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0KLW5hbWVzcGFjZSBhdXggewotCi0vLyBhZ3VydCwgMTEvanVuLzAzOiAKLS8vIE1TVkMgNi41LzcuMCBmYWlscyBpZiAnaGFzX2JlZ2luJyBpcyBpbnN0YW50aWF0ZWQgb24gYSBjbGFzcyB0eXBlIHRoYXQgaGFzIGEKLS8vICdiZWdpbicgbWVtYmVyIHRoYXQgZG9lc24ndCBuYW1lIGEgdHlwZTsgZS5nLiAnaGFzX2JlZ2luPCBzdGQ6OnZlY3RvcjxpbnQ+ID4nCi0vLyB3b3VsZCBmYWlsOyByZXF1aXJpbmcgJ1QnIHRvIGhhdmUgX2JvdGhfICd0YWcnIGFuZCAnYmVnaW4nIG1lbWJlcnMgd29ya2Fyb3VuZHMKLS8vIHRoZSBpc3N1ZSBmb3IgbW9zdCByZWFsLXdvcmxkIGNhc2VzCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19zZXF1ZW5jZV9pbXBsCi0gICAgOiBhbmRfPAotICAgICAgICAgIGlkZW50aXR5PCBhdXg6Omhhc190YWc8VD4gPgotICAgICAgICAsIGlkZW50aXR5PCBhdXg6Omhhc19iZWdpbjxUPiA+Ci0gICAgICAgID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotICAgICAgICAKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBpc19zZXF1ZW5jZQotICAgIDogaWZfPAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICAgIGF1eDo6bXN2Y19pc19jbGFzczxUPiAKLSNlbHNlCi0gICAgICAgICAgbmRuYm9vc3Q6OmlzX2NsYXNzPFQ+IAotI2VuZGlmCi0gICAgICAgICwgYXV4Ojppc19zZXF1ZW5jZV9pbXBsPFQ+Ci0gICAgICAgICwgYm9vbF88ZmFsc2U+Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsIGlzX3NlcXVlbmNlLCAoVCkpCi19OwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGlzX3NlcXVlbmNlCi0gICAgOiBib29sXzxmYWxzZT4KLXsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBpc19zZXF1ZW5jZQotICAgIDogbm90XzwgaXNfc2FtZTwgdHlwZW5hbWUgYmVnaW48VD46OnR5cGUsIHZvaWRfID4gPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgaXNfc2VxdWVuY2UsIChUKSkKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfc2VxdWVuY2U8aW50PgotICAgIDogYm9vbF88ZmFsc2U+Ci17Ci19OwotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoMSwgaXNfc2VxdWVuY2UpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVNfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcl9mb2xkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg0ODBiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyX2ZvbGQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU3RhdGUpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZvcndhcmRPcCkKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Oml0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6TzFfc2l6ZTxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgICwgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgbGFtYmRhPEZvcndhcmRPcD46OnR5cGUKLSAgICAgICAgPjo6c3RhdGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxpdGVyX2ZvbGQsKFNlcXVlbmNlLFN0YXRlLEZvcndhcmRPcCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaXRlcl9mb2xkKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lURVJfRk9MRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZF9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGRfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGY4NzY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZF9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8gQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyX2ZvbGRfaWYuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9naWNhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fsd2F5cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BhaXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgTGFzdEl0ZXJhdG9yID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfcHJlZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTdGF0ZSwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGFuZF88Ci0gICAgICAgICAgICAgIG5vdF88IGlzX3NhbWU8SXRlcmF0b3IsTGFzdEl0ZXJhdG9yPiA+Ci0gICAgICAgICAgICAsIGFwcGx5MTxQcmVkaWNhdGUsSXRlcmF0b3I+Ci0gICAgICAgICAgICA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYW5kXzwKLSAgICAgICAgICAgICAgbm90XzwgaXNfc2FtZTxJdGVyYXRvcixMYXN0SXRlcmF0b3I+ID4KLSAgICAgICAgICAgICwgYXBwbHkxPFByZWRpY2F0ZSxJdGVyYXRvcj4KLSAgICAgICAgICAgID4gdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTdGF0ZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRm9yd2FyZE9wKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGb3J3YXJkUHJlZGljYXRlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShCYWNrd2FyZE9wKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShCYWNrd2FyZFByZWRpY2F0ZSkKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmCi17Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZSBmaXJzdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlIGxhc3RfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgIGlzX25hPEJhY2t3YXJkUHJlZGljYXRlPgotICAgICAgICAsIGlmXzwgaXNfbmE8QmFja3dhcmRPcD4sIGFsd2F5czxmYWxzZV8+LCBhbHdheXM8dHJ1ZV8+ID4KLSAgICAgICAgLCBpZGVudGl0eTxCYWNrd2FyZFByZWRpY2F0ZT4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9wcmVkXzsKLQotLy8gY3dwcm84IGRvZXNuJ3QgbGlrZSAnY3V0LW9mZicgdHlwZSBoZXJlICh1c2UgdHlwZWRlZiBpbnN0ZWFkKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSAgICBzdHJ1Y3QgcmVzdWx0XyA6Ci0jZWxzZQotICAgIHR5cGVkZWYKLSNlbmRpZgotICAgICAgICBhdXg6Oml0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgIGZpcnN0XwotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICwgcHJvdGVjdDwgYXV4OjppdGVyX2ZvbGRfaWZfcHJlZDwgRm9yd2FyZFByZWRpY2F0ZSxsYXN0XyA+ID4KLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgYmFja3dhcmRfcHJlZF8KLSAgICAgICAgPgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSAgICB7IH07Ci0jZWxzZQotICAgIHJlc3VsdF87Ci0jZW5kaWYKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBwYWlyPAotICAgICAgICAgIHR5cGVuYW1lIHJlc3VsdF86OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgcmVzdWx0Xzo6aXRlcmF0b3IKLSAgICAgICAgPiB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmCi0gICAgICAgICwgKFNlcXVlbmNlLFN0YXRlLEZvcndhcmRPcCxGb3J3YXJkUHJlZGljYXRlLEJhY2t3YXJkT3AsQmFja3dhcmRQcmVkaWNhdGUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg2LCBpdGVyX2ZvbGRfaWYpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVRFUl9GT0xEX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfcmFuZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfcmFuZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzhjYzg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJhdG9yX3JhbmdlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotc3RydWN0IGl0ZXJhdG9yX3JhbmdlX3RhZzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZpcnN0KQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShMYXN0KQotICAgID4KLXN0cnVjdCBpdGVyYXRvcl9yYW5nZQotewotICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2VfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlIHR5cGU7Ci0gICAgdHlwZWRlZiBGaXJzdCBiZWdpbjsKLSAgICB0eXBlZGVmIExhc3QgZW5kOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGl0ZXJhdG9yX3JhbmdlLChGaXJzdCxMYXN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpdGVyYXRvcl9yYW5nZSkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfdGFncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NmFiNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfdGFncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lURVJBVE9SX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lURVJBVE9SX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJhdG9yX3RhZ3MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyAgICAgICA6IGludF88MD4geyB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIHR5cGU7IH07Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgOiBpbnRfPDE+IHsgdHlwZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB0eXBlOyB9Owotc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIDogaW50XzwyPiB7IHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgdHlwZTsgfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYxNzU0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MQU1CREFfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MQU1CREFfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsYW1iZGEuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19JTVBMSUNJVF9NRVRBRlVOQ1RJT05TCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MQU1CREFfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmI5NGQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MQU1CREFfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTEFNQkRBX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIFQgPSBuYQotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTSgKLSAgICAgICAgICB0eXBlbmFtZSBBcml0eSA9IGludF88IGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnZhbHVlID4KLSAgICAgICAgKQotICAgID4KLXN0cnVjdCBsYW1iZGE7Ci0KLX19Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgICwgdHlwZW5hbWUgUHJvdGVjdCA9IHRydWVfCi0gICAgPiAKLXN0cnVjdCBsYW1iZGE7Ci0KLX19Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xBTUJEQV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDQzMWY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MRVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTEVTU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxlc3MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgbGVzcwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xFU1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzU4YTNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MRVNTX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTEVTU19FUVVBTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxlc3NfZXF1YWwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgbGVzc19lcXVhbAotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPD0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MRVNTX0VRVUFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOTY1MGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElNSVRTX0FSSVRZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElNSVRTX0FSSVRZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXJpdHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIDUKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJTUlUU19BUklUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzN2VhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJTUlUU19MSVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElNSVRTX0xJU1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRSAyMAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElNSVRTX0xJU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGY1NTAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSU1JVFNfVU5ST0xMSU5HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElNSVRTX1VOUk9MTElOR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHVucm9sbGluZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcgNAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElNSVRTX1VOUk9MTElOR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2N2IyNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJTUlUU19WRUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVFNfVkVDVE9SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkUgMjAKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJTUlUU19WRUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzRjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvbGlzdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MSVNUX0hFQURFUiBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGxpc3QsTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRSkuaHBwIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfTElTVF9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVChsaXN0LE5ETkJPT1NUX01QTF9MSU1JVF9MSVNUX1NJWkUpIyMuaHBwIFwKLSAgICAvKiovCi0jZW5kaWYKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC9saXN0L0FVWDc3ODA3Nl9MSVNUX0hFQURFUikKLSMgICB1bmRlZiBBVVg3NzgwNzZfTElTVF9IRUFERVIKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2xpc3QuaHBwPgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FIGxpc3QKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIE5ETkJPT1NUX01QTF9MSU1JVF9MSVNUX1NJWkUKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9PMV9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9PMV9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAxYTQwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vTzFfc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBMaXN0OjpzaXplCi0gICAgewotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vYmVnaW5fZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9iZWdpbl9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODFlY2U5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9iZWdpbl9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiZWdpbl9lbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmVnaW5faW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbF9pdGVyPHR5cGVuYW1lIExpc3Q6OnR5cGU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbmRfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGxfaXRlcjxsX2VuZD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vY2xlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2NsZWFyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2Y2E1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vY2xlYXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0NMRUFSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY2xlYXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsX2VuZCB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX0NMRUFSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZDlmMzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGVtcHR5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbm90Xzx0eXBlbmFtZSBMaXN0OjpzaXplPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWUxZGQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBMaXN0OjppdGVtIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JlZWE4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSEVBREVSIFwKLSAgICBhdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBcCi0vKiovCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg3MDApKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC9saXN0L0FVWDc3ODA3Nl9IRUFERVIpCi0jICAgaW5jbHVkZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSMgICB1bmRlZiBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSNlbHNlCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL2xpc3QvQVVYNzc4MDc2X0hFQURFUikKLSNlbmRpZgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0hFQURFUgotCi0jdW5kZWYgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNTI5YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX05PREVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9OT0RFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlbS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2l6ZQotICAgICwgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgTmV4dAotICAgID4KLXN0cnVjdCBsX2l0ZW0KLXsKLS8vIGFndXJ0LCAxNy9qdWwvMDM6IHRvIGZhY2lsaXRhdGUgdGhlIGRlZmljaWVudCAnaXNfc2VxdWVuY2UnIGltcGxlbWVudGF0aW9uIAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICB0eXBlZGVmIGludCBiZWdpbjsKLSNlbmRpZgotICAgIHR5cGVkZWYgYXV4OjpsaXN0X3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBsX2l0ZW0gdHlwZTsKLQotICAgIHR5cGVkZWYgU2l6ZSBzaXplOwotICAgIHR5cGVkZWYgVCBpdGVtOwotICAgIHR5cGVkZWYgTmV4dCBuZXh0OwotfTsKLQotc3RydWN0IGxfZW5kCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIHR5cGVkZWYgaW50IGJlZ2luOwotI2VuZGlmCi0gICAgdHlwZWRlZiBhdXg6Omxpc3RfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGxfZW5kIHR5cGU7Ci0gICAgdHlwZWRlZiBsb25nXzwwPiBzaXplOwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9OT0RFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNGEyN2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfSVRFUkFUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9JVEVSQVRPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJhdG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGVyZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE5vZGUgPgotc3RydWN0IGxfaXRlcgotewotICAgIHR5cGVkZWYgYXV4OjpsX2l0ZXJfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGNhdGVnb3J5OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE5vZGUgPgotc3RydWN0IGRlcmVmPCBsX2l0ZXI8Tm9kZT4gPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6aXRlbSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE5vZGUgPgotc3RydWN0IG5leHQ8IGxfaXRlcjxOb2RlPiA+Ci17Ci0gICAgdHlwZWRlZiBsX2l0ZXI8IHR5cGVuYW1lIE5vZGU6Om5leHQgPiB0eXBlOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTm9kZSA+Ci1zdHJ1Y3QgbF9pdGVyCi17Ci0gICAgdHlwZWRlZiBhdXg6OmxfaXRlcl90YWcgdGFnOwotICAgIHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjppdGVtIHR5cGU7Ci0gICAgdHlwZWRlZiBsX2l0ZXI8IHR5cGVuYW1lIG1wbDo6bmV4dDxOb2RlPjo6dHlwZSA+IG5leHQ7Ci19OwotCi0jZW5kaWYKLQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsX2l0ZXI8bF9lbmQ+Ci17Ci0gICAgdHlwZWRlZiBhdXg6OmxfaXRlcl90YWcgdGFnOwotICAgIHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgY2F0ZWdvcnk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIHR5cGVkZWYgbmEgdHlwZTsKLSAgICB0eXBlZGVmIGxfaXRlciBuZXh0OwotI2VuZGlmCi19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCBsX2l0ZXIpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfSVRFUkFUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVjNjQyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAwLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1iZXJlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNkZWZpbmUgaSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGkgPT0gMQotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IGxpc3QxCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxfZW5kCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxIHR5cGU7Ci19OwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE1QTF9BVVhfTElTVF9UQUlMKGxpc3QsIGksIFQpIFwKLSAgICBORE5CT09TVF9QUF9DQVQobGlzdCxORE5CT09TVF9QUF9ERUMoaSkpPCBcCi0gICAgICBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGksIFQpIFwKLSAgICA+IFwKLSAgICAvKiovCi0gICAgCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChsaXN0LGkpCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188aT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIE1QTF9BVVhfTElTVF9UQUlMKGxpc3QsaSxUKQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQobGlzdCxpKSB0eXBlOwotfTsKLQotIyAgIHVuZGVmIE1QTF9BVVhfTElTVF9UQUlMCi0KLSNlbmRpZiAvLyBpID09IDEKLQotI3VuZGVmIGkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzhmZDYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtYmVyZWRfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNkZWZpbmUgaSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGkgPT0gMQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksIFQgQykKLSAgICA+Ci1zdHJ1Y3QgbGlzdDFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE+Ci0gICAgICAgICwgaW50ZWdyYWxfYzxULEMwPgotICAgICAgICAsIGxfZW5kCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTVBMX0FVWF9MSVNUX0NfVEFJTChsaXN0LCBpLCBDKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChsaXN0LE5ETkJPT1NUX1BQX0RFQyhpKSksX2MpPFQsIFwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoaSwgQykgXAotICAgID4gXAotICAgIC8qKi8KLSAgICAKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaSwgVCBDKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGxpc3QsaSksX2MpCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188aT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPFQsQzA+Ci0gICAgICAgICwgTVBMX0FVWF9MSVNUX0NfVEFJTChsaXN0LGksQykKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChsaXN0LGkpLF9jKSB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotIyAgIHVuZGVmIE1QTF9BVVhfTElTVF9DX1RBSUwKLQotI2VuZGlmIC8vIGkgPT0gMQotCi0jdW5kZWYgaQotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcG9wX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wb3BfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGQ3NDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wb3BfZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwb3BfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PExpc3Q+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfUE9QX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZThlZGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QxMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0MQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsX2VuZAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE8VDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI8IFQxLFQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM8IFQxLFQyLFQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q1Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0PCBUMSxUMixUMyxUNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDYKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDcKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDY8IFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q4Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188OD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q3PCBUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDkKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDg8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEwCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTA+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0OTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QxMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmMwNTgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMAotICAgID4KLXN0cnVjdCBsaXN0MV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsX2VuZAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDJfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDFfYzwgVCxDMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMgotICAgID4KLXN0cnVjdCBsaXN0M19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0Ml9jPCBULEMxLEMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzCi0gICAgPgotc3RydWN0IGxpc3Q0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzX2M8IFQsQzEsQzIsQzMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDVfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDRfYzwgVCxDMSxDMixDMyxDNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNQotICAgID4KLXN0cnVjdCBsaXN0Nl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Nj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NV9jPCBULEMxLEMyLEMzLEM0LEM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2Ci0gICAgPgotc3RydWN0IGxpc3Q3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw3PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q2X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0N19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDhfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOAotICAgID4KLXN0cnVjdCBsaXN0OV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188OT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0OF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5Ci0gICAgPgotc3RydWN0IGxpc3QxMF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjY0Mjk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QyMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3QxMQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDExPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDEwPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3QxMgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDExPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3QxMwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDEyPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3QxNAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDEzPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3QxNQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE0PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3QxNgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE1PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3QxNwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE2PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3QxOAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE3PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3QxOQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QyMAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzM0ZGVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDExX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTBfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEyX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTFfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMgotICAgID4KLXN0cnVjdCBsaXN0MTNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxMl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTNfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE1X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTRfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNQotICAgID4KLXN0cnVjdCBsaXN0MTZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxNV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE4X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxOD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOAotICAgID4KLXN0cnVjdCBsaXN0MTlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxOF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkY2FjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGxpc3QyMQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIxPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIwPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IGxpc3QyMgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIxPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyCi0gICAgPgotc3RydWN0IGxpc3QyMwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIyPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzCi0gICAgPgotc3RydWN0IGxpc3QyNAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIzPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgPgotc3RydWN0IGxpc3QyNQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI0PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1Ci0gICAgPgotc3RydWN0IGxpc3QyNgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI1PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2Ci0gICAgPgotc3RydWN0IGxpc3QyNwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI2PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IGxpc3QyOAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI3PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Ci0gICAgPgotc3RydWN0IGxpc3QyOQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgPgotc3RydWN0IGxpc3QzMAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5ODE1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QzMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgID4KLXN0cnVjdCBsaXN0MjFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIxPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyMF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxCi0gICAgPgotc3RydWN0IGxpc3QyMl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDIxX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMgotICAgID4KLXN0cnVjdCBsaXN0MjNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyMl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMwotICAgID4KLXN0cnVjdCBsaXN0MjRfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI0PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyM19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0Ci0gICAgPgotc3RydWN0IGxpc3QyNV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI0X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNQotICAgID4KLXN0cnVjdCBsaXN0MjZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyNV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNgotICAgID4KLXN0cnVjdCBsaXN0MjdfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI3PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyNl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3Ci0gICAgPgotc3RydWN0IGxpc3QyOF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mjg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI3X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOAotICAgID4KLXN0cnVjdCBsaXN0MjlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyOF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOQotICAgID4KLXN0cnVjdCBsaXN0MzBfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMwPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyOV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEwYWU5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMxCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzA8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMyCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzI+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzE8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMzCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzM+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzI8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM0Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzQ+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzM8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM1Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzU+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzQ8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM2Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzY+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzU8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM3Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzc+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzY8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM4Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzg+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mzc8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM5Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzk+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mzg8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQwCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDA+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mzk8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThlZDY0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3Q0MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMxX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzBfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxCi0gICAgPgotc3RydWN0IGxpc3QzMl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDMxX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyCi0gICAgPgotc3RydWN0IGxpc3QzM19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzM+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDMyX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzNfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0Ci0gICAgPgotc3RydWN0IGxpc3QzNV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM0X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1Ci0gICAgPgotc3RydWN0IGxpc3QzNl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzY+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM1X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzNz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3Ci0gICAgPgotc3RydWN0IGxpc3QzOF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM3X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4Ci0gICAgPgotc3RydWN0IGxpc3QzOV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzk+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM4X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0MD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjhmZGE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3Q1MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwCi0gICAgPgotc3RydWN0IGxpc3Q0MQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQxPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQwPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxCi0gICAgPgotc3RydWN0IGxpc3Q0MgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQxPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyCi0gICAgPgotc3RydWN0IGxpc3Q0MwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQyPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzCi0gICAgPgotc3RydWN0IGxpc3Q0NAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQzPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgPgotc3RydWN0IGxpc3Q0NQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ0PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1Ci0gICAgPgotc3RydWN0IGxpc3Q0NgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ1PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0NiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2Ci0gICAgPgotc3RydWN0IGxpc3Q0NwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ2PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3Ci0gICAgPgotc3RydWN0IGxpc3Q0OAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ3PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4Ci0gICAgPgotc3RydWN0IGxpc3Q0OQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3LFQ0OCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0OSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5Ci0gICAgPgotc3RydWN0IGxpc3Q1MAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDUwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3LFQ0OCxUNDkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGY2MTllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQxX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0MT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDBfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQyX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Mj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDFfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MgotICAgID4KLXN0cnVjdCBsaXN0NDNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0Ml9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0ND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDNfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ1X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0NT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDRfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NQotICAgID4KLXN0cnVjdCBsaXN0NDZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0NV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Nz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ4X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0OD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OAotICAgID4KLXN0cnVjdCBsaXN0NDlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0OF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NixDNDcsQzQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OCwgVCBDNDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDUwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw1MD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3LEM0OCxDNDkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2JhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4Mjc1OGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfYmFjay5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBoYXNfcHVzaF9iYWNrX2ltcGw7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBoYXNfcHVzaF9iYWNrX2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXEgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9CQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjMzODgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2Zyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsX2l0ZW08Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG5leHQ8dHlwZW5hbWUgTGlzdDo6c2l6ZT46OnR5cGUKLSAgICAgICAgICAgICwgVAotICAgICAgICAgICAgLCB0eXBlbmFtZSBMaXN0Ojp0eXBlCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU5YzVkMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBMaXN0OjpzaXplCi0gICAgewotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWE1M2MyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotc3RydWN0IGxpc3RfdGFnOwotc3RydWN0IGxfaXRlcl90YWc7Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYWU5MzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wb3BfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2NsZWFyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRHVtbXkgPSBuYSA+IHN0cnVjdCBsaXN0MDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGlzdDA8bmE+Ci0gICAgOiBsX2VuZAotewotICAgIHR5cGVkZWYgbF9lbmQgdHlwZTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzYxY2FiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGlzdDBfYwotICAgIDogbF9lbmQKLXsKLSAgICB0eXBlZGVmIGxfZW5kIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhjYzczMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMTBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MTAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDEwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCAxMCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1OTc1Y2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDEwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QwX2MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0MTBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMSwgMTAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE3ZTU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QyMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDIwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxMSwgMjAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjY3YjVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QyMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QyMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxMSwgMjAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2M3M2EzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QzMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDMwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTg2NWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QzMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MjBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QzMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWExZGVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q0MC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDQwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgzMSwgNDAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTE0YzNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q0MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MzBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3Q0MF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgzMSwgNDAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmQwMGI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q1MC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDUwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCg0MSwgNTAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzg0ZGI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q1MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0NDBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3Q1MF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCg0MSwgNTAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9naWNhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sb2dpY2FsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM0MzZjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb2dpY2FsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTE9HSUNBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xPR0lDQUxfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsb2dpY2FsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MT0dJQ0FMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI3MGI0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTE9OR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xPTkdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsb25nLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmdfZndkLmhwcD4KLQotI2RlZmluZSBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFIGxvbmcKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MT05HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZ19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZ19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGNkYWRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvbmdfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTE9OR19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MT05HX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxvbmdfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gc3RydWN0IGxvbmdfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGxvbmdfKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xPTkdfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzY1Y2I3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTUlOVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9NSU5VU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1pbnVzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIG1pbnVzCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiAtCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTUlOVVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL211bHRpcGxpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjA2ZDc3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL211bHRpcGxpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9NVUxUSVBMSUVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTVVMVElQTElFU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG11bHRpcGxpZXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdGltZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoZWFkZXIsIGRlcHJlY2F0ZWQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfQVJJVFkgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX0FSSVRZIDIKLSNlbmRpZgotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhBVVg3NzgwNzZfT1BfQVJJVFksIHR5cGVuYW1lIE4sIG5hKQotICAgID4KLXN0cnVjdCBtdWx0aXBsaWVzCi0gICAgOiB0aW1lczwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhBVVg3NzgwNzZfT1BfQVJJVFksIE4pID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9BUklUWQotICAgICAgICAsIG11bHRpcGxpZXMKLSAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoQVVYNzc4MDc2X09QX0FSSVRZLCBOKSApCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyhBVVg3NzgwNzZfT1BfQVJJVFksIG11bHRpcGxpZXMpCi0KLSN1bmRlZiBBVVg3NzgwNzZfT1BfQVJJVFkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9NVUxUSVBMSUVTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmVnYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25lZ2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YjlhY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmVnYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTkVHQVRFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTkVHQVRFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbmVnYXRlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBuZWdhdGVfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbmVnYXRlX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTikKLSAgICA+Ci1zdHJ1Y3QgbmVnYXRlCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0gICAgOiBuZWdhdGVfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBuZWdhdGVfdGFnPE4+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PE4+Ojp0eXBlCi0jZWxzZQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICBuZWdhdGVfaW1wbDwgdHlwZW5hbWUgbmVnYXRlX3RhZzxOPjo6dHlwZSA+Ci0gICAgICAgICwgTgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLSNlbmRpZgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgbmVnYXRlLCAoTikpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgbmVnYXRlKQotCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMpCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4gPiBzdHJ1Y3QgbmVnYXRlX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgPSAtbik7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPFQsdmFsdWU+IHR5cGU7Ci19OwotfQotI2VuZGlmCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBuZWdhdGVfaW1wbDxpbnRlZ3JhbF9jX3RhZz4KLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMpCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om5lZ2F0ZV93a25kPCB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlLCBOOjp2YWx1ZSA+Ci0jZWxzZQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW50ZWdyYWxfYzwgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZSwgKC1OOjp2YWx1ZSkgPgotI2VuZGlmICAgIAotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ORUdBVEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWM0Yzk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ORVhUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTkVYVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuZXh0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05FWFRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTkwMmM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ORVhUX1BSSU9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5leHRfcHJpb3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmV4dCkKLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChwcmlvcikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IG5leHQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6Om5leHQgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsbmV4dCwoVCkpCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgcHJpb3IKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnByaW9yIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHByaW9yLChUKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBuZXh0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIHByaW9yKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05FWFRfUFJJT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYxMmE5NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9OT1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9OT1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBub3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIENfKSA+IC8vICdsb25nJyBpcyBpbnRlbnRpb25hbCBoZXJlCi1zdHJ1Y3Qgbm90X2ltcGwKLSAgICA6IGJvb2xfPCFDXz4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBub3RfCi0gICAgOiBhdXg6Om5vdF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUKTo6dmFsdWUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxub3RfLChUKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLG5vdF8pCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTk9UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NGFmOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTk9UX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTk9UX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbm90X2VxdWFsX3RvLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIG5vdF9lcXVhbF90bwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gIT0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9OT1RfRVFVQUxfVE9fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9udW1lcmljX2Nhc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbnVtZXJpY19jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJmNGFiZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9udW1lcmljX2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9OVU1FUklDX0NBU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9OVU1FUklDX0NBU1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtZXJpY19jYXN0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotLy8gYWd1cnQgMjEvc2VwLzA0OiBwb3J0YWJpbGl0eSBtYWNybyBmb3IgdGhlIHNha2Ugb2YgTVNWQyA2LngtNy4wOwotLy8gcmVzb2x2ZXMgY29uZmxpY3RzIHdpdGggJ25kbmJvb3N0OjpudW1lcmljX2Nhc3QnIGZ1bmN0aW9uIHRlbXBsYXRlLgotLy8gdXNlIGl0IGluIHlvdXIgb3duIGNvZGUgX29ubHlfIGlmIHlvdSBjYXJlIGFib3V0IGNvbXBhdGliaWxpdHkgd2l0aAotLy8gdGhlc2Ugb3V0ZGF0ZWQgY29tcGlsZXJzIQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkgKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVCBudW1lcmljX2Nhc3RfCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVCBudW1lcmljX2Nhc3QKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgdGhlIGRlZmluaXRpb24gaXMgbmVlZGVkIHRvIG1ha2UgTVNWQyBoYXBweQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgU291cmNlVGFnLCB0eXBlbmFtZSBUYXJnZXRUYWcgPiBzdHJ1Y3QgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1QKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzVkYjRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9PUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLQotLy8gYWd1cnQsIDE5L21heS8wNDogd29ya2Fyb3VuZCBhIGNvbmZsaWN0IHdpdGggPGlzbzY0Ni5oPiBoZWFkZXIncyAKLS8vICdvcicgYW5kICdhbmQnIG1hY3Jvcywgc2VlIGh0dHA6Ly90aW55dXJsLmNvbS8zZXQ2OTsgJ2RlZmluZWQob3IpJwotLy8gaGFzIHRvIGJlIGNoZWNrZWQgaW4gYSBzZXBhcmF0ZSBjb25kaXRpb24sIG90aGVyd2lzZSBHQ0MgY29tcGxhaW5zIAotLy8gYWJvdXQgJ29yJyBiZWluZyBhbiBhbHRlcm5hdGl2ZSB0b2tlbgotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jaWZuZGVmIF9fR0NDWE1MX18KLSNpZiBkZWZpbmVkKG9yKQotIyAgIHByYWdtYSBwdXNoX21hY3JvKCJvciIpCi0jICAgdW5kZWYgb3IKLSMgICBkZWZpbmUgb3IoeCkKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBvci5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAKLSNpZm5kZWYgX19HQ0NYTUxfXwotI2lmIGRlZmluZWQob3IpCi0jICAgcHJhZ21hIHBvcF9tYWNybygib3IiKQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIG9yXwotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVkFMVUUxIHRydWUKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1ZBTFVFMiBmYWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xvZ2ljYWxfb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9PUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BhaXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGFpci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMjk1YzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGFpci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BBSVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QQUlSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGFpci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IHBhaXIKLXsKLSAgICB0eXBlZGVmIHBhaXIgdHlwZTsKLSAgICB0eXBlZGVmIFQxIGZpcnN0OwotICAgIHR5cGVkZWYgVDIgc2Vjb25kOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLHBhaXIsKFQxLFQyKSkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShQKQotICAgID4KLXN0cnVjdCBmaXJzdAotewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6Zmlyc3QgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1zdmNfZXRpX2Jhc2U8UD46OmZpcnN0IHR5cGU7Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsZmlyc3QsKFApKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFApCi0gICAgPgotc3RydWN0IHNlY29uZAotewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6c2Vjb25kIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojptc3ZjX2V0aV9iYXNlPFA+OjpzZWNvbmQgdHlwZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxzZWNvbmQsKFApKQotfTsKLQotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKDIsIHBhaXIpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgZmlyc3QpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgc2Vjb25kKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BBSVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ0NGQ4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGxhY2Vob2xkZXJzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTCh0eXBlKSBcCi0gICAgICAgIHVzaW5nIDo6TkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6OnR5cGU7IFwKLSAgICAgICAgLyoqLwotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0wodHlwZSkgLyoqLwotIyAgIGVuZGlmCi0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgcGxhY2Vob2xkZXJzLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0vLyB3YXRjaCBvdXQgZm9yIEdOVSBnZXR0ZXh0IHVzZXJzLCB3aG8gI2RlZmluZSBfKHgpCi0jaWYgIWRlZmluZWQoXykgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPC0xPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IAotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0jZW5kaWYKLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZICsgMSwgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdHlwZWRlZiBhcmc8aV8+IE5ETkJPT1NUX1BQX0NBVChfLGlfKTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IAotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKE5ETkJPT1NUX1BQX0NBVChfLGlfKSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6TkROQk9PU1RfUFBfQ0FUKF8saV8pOwotfQotCi19fQotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNjVjZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QTFVTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGx1cy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBwbHVzCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiArCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUExVU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9iYWNrX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfYmFja19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U5NDUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9iYWNrX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BPUF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BPUF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9iYWNrX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcG9wX2JhY2tfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBwb3BfYmFjazsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QT1BfQkFDS19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9mcm9udF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDEyMDViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9mcm9udF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QT1BfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUE9QX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9mcm9udF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBvcF9mcm9udF9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHBvcF9mcm9udDsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QT1BfRlJPTlRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJpb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJpb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTg4MGVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ByaW9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUFJJT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUklPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwcmlvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QUklPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJvdGVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZDRjNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJvdGVjdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BST1RFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUk9URUNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHByb3RlY3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgICwgaW50IG5vdF9sZV8gPSAwCi0gICAgPgotc3RydWN0IHByb3RlY3QgOiBUCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sID09IDIzOCkKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdCB0eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIHByb3RlY3QgdHlwZTsKLSNlbmRpZgotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi1uYW1lc3BhY2UgYXV4IHsgCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgYXJpdHk8IHByb3RlY3Q8VD4sIE4gPiAKLSAgICA6IGFyaXR5PFQsTj4KLXsgCi19OwotfSAvLyBuYW1lc3BhY2UgYXV4Ci0jZW5kaWYKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX01BSU4oMSwgcHJvdGVjdCkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoMSwgMSwgcHJvdGVjdCkKLSNlbmRpZgotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BST1RFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNlYTg5NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2JhY2suaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9iYWNrX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgcHVzaF9iYWNrCi0gICAgOiBwdXNoX2JhY2tfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlLFQgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixwdXNoX2JhY2ssKFNlcXVlbmNlLFQpKQotfTsKLQotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBoYXNfcHVzaF9iYWNrCi0gICAgOiBoYXNfcHVzaF9iYWNrX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGhhc19wdXNoX2JhY2ssKFNlcXVlbmNlKSkKLX07Ci0KLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIHB1c2hfYmFjaykKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBoYXNfcHVzaF9iYWNrKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZTBmZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BVU0hfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9iYWNrX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcHVzaF9iYWNrX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcHVzaF9iYWNrOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BVU0hfQkFDS19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzMxM2M4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3B1c2hfZnJvbnRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBwdXNoX2Zyb250Ci0gICAgOiBwdXNoX2Zyb250X2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSxUID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIscHVzaF9mcm9udCwoU2VxdWVuY2UsVCkpCi19OwotCi0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IGhhc19wdXNoX2Zyb250Ci0gICAgOiBoYXNfcHVzaF9mcm9udF9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxoYXNfcHVzaF9mcm9udCwoU2VxdWVuY2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIHB1c2hfZnJvbnQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgaGFzX3B1c2hfZnJvbnQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzOTRmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BVU0hfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2Zyb250X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcHVzaF9mcm9udF9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IHB1c2hfZnJvbnQ7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YjdkM2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUVVPVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9RVU9URV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHF1b3RlLmhwcCA0OTI3MiAyMDA4LTEwLTExIDA2OjUwOjQ2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6NTA6NDYgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNzIgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19URU1QTEFURV9URU1QTEFURV9QQVJBTUVURVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CQ0M1OTBfV09SS0FST1VORFMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fUVVPVEVfVEVNUExBVEUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19JTVBMSUNJVF9NRVRBRlVOQ1RJT05TKSBcCi0gICAgJiYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fSU1QTElDSVRfTUVUQUZVTkNUSU9OUwotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBxdW90ZS5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19RVU9URV9URU1QTEFURSkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBoYXNfdHlwZV8gPgotc3RydWN0IHF1b3RlX2ltcGwKLS8vIEdDQyBoYXMgYSBwcm9ibGVtIHdpdGggbWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgd2hlbiBUIGlzIGEKLS8vIHNwZWNpYWxpemF0aW9uIG9mIGEgdGVtcGxhdGUgY2FsbGVkICd0eXBlJy4KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDQpKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfTUlOT1JfXywgTkROQk9PU1RfVEVTVEVEX0FUKDApKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfUEFUQ0hMRVZFTF9fLCBORE5CT09TVF9URVNURURfQVQoMikpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci19OwotIyBlbHNlIAotICAgIDogVAotewotfTsKLSMgZW5kaWYgCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPFQsZmFsc2U+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IHF1b3RlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVAotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcXVvdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotI2VuZGlmIAotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDEsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvcXVvdGUuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUVVPVEVfVEVNUExBVEUKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUVVPVEVfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgUCkgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocXVvdGUsaV8pCi17Ci0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFUpID4gc3RydWN0IGFwcGx5Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQzU5MF9XT1JLQVJPVU5EUykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci0jZWxzZQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFUpID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+ID4KLSAgICB7Ci0gICAgfTsKLSNlbmRpZgotfTsKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9yZW1vdmVfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcmVtb3ZlX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5OTdlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9yZW1vdmVfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9SRU1PVkVfSUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9SRU1PVkVfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByZW1vdmVfaWYuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZCwgdHlwZW5hbWUgSW5zZXJ0T3AgPiBzdHJ1Y3QgcmVtb3ZlX2lmX2hlbHBlcgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVSA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhcHBseTE8UHJlZCxVPjo6dHlwZQotICAgICAgICAgICAgLCBpZGVudGl0eTxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgYXBwbHkyPEluc2VydE9wLFNlcXVlbmNlLFU+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXIKLSAgICA+Ci1zdHJ1Y3QgcmVtb3ZlX2lmX2ltcGwKLSAgICA6IGZvbGQ8Ci0gICAgICAgICAgU2VxdWVuY2UKLSAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6c3RhdGUKLSAgICAgICAgLCBwcm90ZWN0PCBhdXg6OnJlbW92ZV9pZl9oZWxwZXI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxQcmVkaWNhdGU+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpvcGVyYXRpb24KLSAgICAgICAgICAgID4gPgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEluc2VydGVyCi0gICAgPgotc3RydWN0IHJldmVyc2VfcmVtb3ZlX2lmX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZDwKLSAgICAgICAgICBTZXF1ZW5jZQotICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpzdGF0ZQotICAgICAgICAsIHByb3RlY3Q8IGF1eDo6cmVtb3ZlX2lmX2hlbHBlcjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPFByZWRpY2F0ZT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6Om9wZXJhdGlvbgotICAgICAgICAgICAgPiA+Ci0gICAgICAgID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9ERUYoMywgcmVtb3ZlX2lmKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1JFTU9WRV9JRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9yZXZlcnNlX2ZvbGQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzkwYTQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1JFVkVSU0VfRk9MRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1JFVkVSU0VfRk9MRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJldmVyc2VfZm9sZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFN0YXRlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShCYWNrd2FyZE9wKQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wID0gYXJnPDE+Ci0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6Ok8xX3NpemU8U2VxdWVuY2U+Ojp2YWx1ZQotICAgICAgICAsIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPjo6c3RhdGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxyZXZlcnNlX2ZvbGQsKFNlcXVlbmNlLFN0YXRlLEJhY2t3YXJkT3ApKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIHJldmVyc2VfZm9sZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9SRVZFUlNFX0ZPTERfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zYW1lX2FzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NhbWVfYXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWZkYmNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NhbWVfYXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TQU1FX0FTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0FNRV9BU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNhbWVfYXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IHNhbWVfYXMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGlzX3NhbWU8VDEsVDI+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXNfc2FtZTxUMSxUMj46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IG5vdF9zYW1lX2FzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBub3RfPCBpc19zYW1lPFQxLFQyPiA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm90XzwgaXNfc2FtZTxUMSxUMj4gPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0FNRV9BU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWMxZTc4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzZXF1ZW5jZV90YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pc19tc3ZjX2V0aV9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gYWd1cnQsIDI3L25vdi8wMjogaGF2ZSB0byB1c2UgYSBzaW1wbGlzdGljICdzZXF1ZW5jZV90YWcnIGltcGxlbWVudGF0aW9uCi0vLyBvbiBNU1ZDIHRvIGF2b2lkIGRyZWFkZnVsICJpbnRlcm5hbCBzdHJ1Y3R1cmUgb3ZlcmZsb3ciIGVycm9yCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBzZXF1ZW5jZV90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjp0YWcgdHlwZTsKLX07Ci0KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLQotLy8gYWd1cnQsIDA3L2ZlYi8wMzogd29ya2Fyb3VuZCBmb3Igd2hhdCBzZWVtcyB0byBiZSBNU1ZDIDcuMC1zcGVjaWZpYyBFVEkgaXNzdWUKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBzZXF1ZW5jZV90YWdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjp0YWcgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlcXVlbmNlX3RhZ19pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBzZXF1ZW5jZV90YWcKLSAgICA6IGF1eDo6c2VxdWVuY2VfdGFnX2ltcGw8ICFhdXg6OmlzX21zdmNfZXRpX2FyZzxTZXF1ZW5jZT46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFNlcXVlbmNlPgotewotfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIGhhc190YWdfLCBib29sIGhhc19iZWdpbl8gPgotc3RydWN0IHNlcXVlbmNlX3RhZ19pbXBsCi17Ci0gICAgLy8gYWd1cnQgMjQvbm92LzAyOiBNU1ZDIDYuNSBnZXRzIGNvbmZ1c2VkIGluICdzZXF1ZW5jZV90YWdfaW1wbDx0cnVlPicgCi0gICAgLy8gc3BlY2lhbGl6YXRpb24gYmVsb3csIGlmIHdlIG5hbWUgaXQgJ3Jlc3VsdF8nIGhlcmUKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgcmVzdWx0Ml87Ci19OwotCi0jICAgZGVmaW5lIEFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyhoYXNfdGFnLCBoYXNfYmVnaW4sIHJlc3VsdF90eXBlKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCBzZXF1ZW5jZV90YWdfaW1wbDxoYXNfdGFnLGhhc19iZWdpbj4gXAoteyBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHJlc3VsdDJfIFwKLSAgICB7IFwKLSAgICAgICAgdHlwZWRlZiByZXN1bHRfdHlwZSB0eXBlOyBcCi0gICAgfTsgXAotfTsgXAotLyoqLwotCi1BVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUModHJ1ZSwgdHJ1ZSwgdHlwZW5hbWUgU2VxdWVuY2U6OnRhZykKLUFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyh0cnVlLCBmYWxzZSwgdHlwZW5hbWUgU2VxdWVuY2U6OnRhZykKLUFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyhmYWxzZSwgdHJ1ZSwgbmVzdGVkX2JlZ2luX2VuZF90YWcpCi1BVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUMoZmFsc2UsIGZhbHNlLCBub25fc2VxdWVuY2VfdGFnKQotCi0jICAgdW5kZWYgQVVYX0NMQVNTX1NFUVVFTkNFX1RBR19TUEVDCi0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IHNlcXVlbmNlX3RhZwotICAgIDogYXV4OjpzZXF1ZW5jZV90YWdfaW1wbDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3RhZzxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19iZWdpbjxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdDJfPFNlcXVlbmNlPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01TVkMKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIHNlcXVlbmNlX3RhZykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTNhZWUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0VRVUVOQ0VfVEFHX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNlcXVlbmNlX3RhZ19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1zdHJ1Y3QgbmVzdGVkX2JlZ2luX2VuZF90YWc7Ci1zdHJ1Y3Qgbm9uX3NlcXVlbmNlX3RhZzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHNlcXVlbmNlX3RhZzsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUxNTQ5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0laRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zaXplX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3Qgc2l6ZQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPAotICAgICAgICB0eXBlbmFtZSBzaXplX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPjo6dHlwZQotICAgICAgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgc2l6ZSwgKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBzaXplKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOTQ4YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TSVpFX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NJWkVfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNpemVfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBzaXplOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NJWkVfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjODY2OTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0laRV9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0laRV9UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZV90LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfdF9md2QuaHBwPgotCi0jZGVmaW5lIEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUgc3RkOjpzaXplX3QKLSNkZWZpbmUgQVVYX1dSQVBQRVJfTkFNRSBzaXplX3QKLSNkZWZpbmUgQVVYX1dSQVBQRVJfUEFSQU1TKE4pIHN0ZDo6c2l6ZV90IE4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ludGVncmFsX3dyYXBwZXIuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NJWkVfVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZGM5ODEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NJWkVfVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TSVpFX1RfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZV90X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBtYWtlIHN1cmUgJ3NpemVfdCcgaXMgcGxhY2VkIGludG8gJ3N0ZCcKLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXRlbXBsYXRlPCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNpemVfdDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChzaXplX3QpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0laRV9UX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC90YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWVkNjk4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0YWdfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotfQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVmYXVsdCA9IHZvaWRfID4gc3RydWN0IHRhZwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotICAgIDogaWZfPCAKLSAgICAgICAgICBhdXg6Omhhc190YWc8VD4KLSAgICAgICAgLCBhdXg6OnRhZ19pbXBsPFQ+Ci0gICAgICAgICwgRGVmYXVsdAotICAgICAgICA+Ojp0eXBlCi17Ci0jZWxzZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwgCi0gICAgICAgICAgYXV4OjpoYXNfdGFnPFQ+Ci0gICAgICAgICwgYXV4Ojp0YWdfaW1wbDxUPgotICAgICAgICAsIERlZmF1bHQKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0jZW5kaWYKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmZhNzAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVElNRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9USU1FU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRpbWVzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIHRpbWVzCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiAqCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVElNRVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ5MmYyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdmVjdG9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsIE5ETkJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSkuaHBwIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX0hFQURFUiBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKHZlY3RvciwgTkROQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFKSMjLmhwcCBcCi0gICAgLyoqLwotI2VuZGlmCi0KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvdmVjdG9yL0FVWDc3ODA3Nl9WRUNUT1JfSEVBREVSKQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfSEVBREVSCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3Rvci5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUgdmVjdG9yCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBORE5CT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkUKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vTzFfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9PMV9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBiMGY4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9PMV9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL21pbnVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBWZWN0b3I6OnNpemUKLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxOPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IG1wbDo6bG9uZ188Tj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MDc3NDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9BVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQVRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgbG9uZyBuXyA+Ci1zdHJ1Y3Qgdl9hdF9pbXBsCi17Ci0gICAgdHlwZWRlZiBsb25nXzwgKFZlY3Rvcjo6bG93ZXJfYm91bmRfOjp2YWx1ZSArIG5fKSA+IGluZGV4XzsKLSAgICB0eXBlZGVmIF9fdHlwZW9mX18oIFZlY3Rvcjo6aXRlbV8oaW5kZXhfKCkpICkgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgbG9uZyBuXyA+Ci1zdHJ1Y3Qgdl9hdAotICAgIDogYXV4Ojp3cmFwcGVkX3R5cGU8IHR5cGVuYW1lIHZfYXRfaW1wbDxWZWN0b3Isbl8+Ojp0eXBlID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiB2X2F0PAotICAgICAgICAgICAgICBWZWN0b3IKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPiBzdHJ1Y3Qgdl9hdDsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKSA+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPG5fPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSAgICAgICAgOiB2X2F0PAotICAgICAgICAgICAgICBWZWN0b3IKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZfYXQ8Ci0gICAgICAgICAgICAgIFZlY3RvcgotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotIyAgIGVsc2UKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPiBzdHJ1Y3Qgdl9hdF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFYgPiBzdHJ1Y3QgcmVzdWx0XzsKLX07Ci0KLS8vIHRvIHdvcmsgYXJvdW5kIEVUSSwgZXRjLgotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPC0xPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZF8gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPgotc3RydWN0IHZfYXQKLSAgICA6IGF1eDo6dl9hdF9pbXBsPG5fPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JhY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzk0NmFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JBQ0tfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiYWNrLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IHZfYXQ8Ci0gICAgICAgICAgICAgIFZlY3RvcgotICAgICAgICAgICAgLCBwcmlvcjx0eXBlbmFtZSBWZWN0b3I6OnNpemU+Ojp0eXBlOjp2YWx1ZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBsb25nIG5fID4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxuXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JBQ0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iZWdpbl9lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmVnaW5fZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0ZDA2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iZWdpbl9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmVnaW5fZW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJlZ2luX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLDA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbmRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IsVmVjdG9yOjpzaXplOjp2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vY2xlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vY2xlYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmJjNzhjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2NsZWFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQ0xFQVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjbGVhci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Tj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0NMRUFSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZW1wdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTc3OWUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBlbXB0eS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpc19zYW1lPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Omxvd2VyX2JvdW5kXwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6OnVwcGVyX2JvdW5kXwotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAxYjRhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogdl9hdDxWZWN0b3IsMD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pID4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8bl8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MjcwZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9ESVIgdHlwZW9mX2Jhc2VkCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfRElSIG5vX2N0cHMKLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTkNMVURFX0RJUiBwbGFpbgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9IRUFERVIgXAotICAgIEFVWDc3ODA3Nl9JTkNMVURFX0RJUi9ORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0lOQ0xVREVfRElSLC8pIyNORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBcCi0vKiovCi0jZW5kaWYKLQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNzAwKSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL0FVWDc3ODA3Nl9IRUFERVIpCi0jICAgaW5jbHVkZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSMgICB1bmRlZiBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSNlbHNlCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9BVVg3NzgwNzZfSEVBREVSKQotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfSEVBREVSCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lOQ0xVREVfRElSCi0KLSN1bmRlZiBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1OGFhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfSVRFTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfSVRFTV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZW0uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQmFzZQotICAgICwgaW50IGF0X2Zyb250ID0gMAotICAgID4KLXN0cnVjdCB2X2l0ZW0KLSAgICA6IEJhc2UKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6OnVwcGVyX2JvdW5kXyBpbmRleF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGluZGV4Xz46OnR5cGUgdXBwZXJfYm91bmRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDx0eXBlbmFtZSBCYXNlOjpzaXplPjo6dHlwZSBzaXplOwotICAgIHR5cGVkZWYgQmFzZSBiYXNlOwotICAgIHR5cGVkZWYgdl9pdGVtIHR5cGU7Ci0KLSAgICAvLyBhZ3VydCAxMC9zZXAvMDQ6IE1XQ1cgPD0gOS4zIHdvcmthcm91bmQgaGVyZSBhbmQgYmVsb3c7IHRoZSBjb21waWxlcgotICAgIC8vIGJyZWFrcyBpZiB1c2luZyBkZWNsYXJhdGlvbiBjb21lcyBfYmVmb3JlXyB0aGUgbmV3IG92ZXJsb2FkCi0gICAgc3RhdGljIGF1eDo6dHlwZV93cmFwcGVyPFQ+IGl0ZW1fKGluZGV4Xyk7Ci0gICAgdXNpbmcgQmFzZTo6aXRlbV87Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEJhc2UKLSAgICA+Ci1zdHJ1Y3Qgdl9pdGVtPFQsQmFzZSwxPgotICAgIDogQmFzZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8dHlwZW5hbWUgQmFzZTo6bG93ZXJfYm91bmRfPjo6dHlwZSBpbmRleF87Ci0gICAgdHlwZWRlZiBpbmRleF8gbG93ZXJfYm91bmRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDx0eXBlbmFtZSBCYXNlOjpzaXplPjo6dHlwZSBzaXplOwotICAgIHR5cGVkZWYgQmFzZSBiYXNlOwotICAgIHR5cGVkZWYgdl9pdGVtIHR5cGU7Ci0KLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8VD4gaXRlbV8oaW5kZXhfKTsKLSAgICB1c2luZyBCYXNlOjppdGVtXzsKLX07Ci0KLS8vICJlcmFzdXJlIiBpdGVtCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBCYXNlCi0gICAgLCBpbnQgYXRfZnJvbnQKLSAgICA+Ci1zdHJ1Y3Qgdl9tYXNrCi0gICAgOiBCYXNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjx0eXBlbmFtZSBCYXNlOjp1cHBlcl9ib3VuZF8+Ojp0eXBlIGluZGV4XzsKLSAgICB0eXBlZGVmIGluZGV4XyB1cHBlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjx0eXBlbmFtZSBCYXNlOjpzaXplPjo6dHlwZSBzaXplOwotICAgIHR5cGVkZWYgQmFzZSBiYXNlOwotICAgIHR5cGVkZWYgdl9tYXNrIHR5cGU7Ci0KLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8dm9pZF8+IGl0ZW1fKGluZGV4Xyk7Ci0gICAgdXNpbmcgQmFzZTo6aXRlbV87Ci19OwotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBCYXNlCi0gICAgPgotc3RydWN0IHZfbWFzazxCYXNlLDE+Ci0gICAgOiBCYXNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlOjpsb3dlcl9ib3VuZF8gaW5kZXhfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpbmRleF8+Ojp0eXBlIGxvd2VyX2JvdW5kXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPHR5cGVuYW1lIEJhc2U6OnNpemU+Ojp0eXBlIHNpemU7Ci0gICAgdHlwZWRlZiBCYXNlIGJhc2U7Ci0gICAgdHlwZWRlZiB2X21hc2sgdHlwZTsKLQotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjx2b2lkXz4gaXRlbV8oaW5kZXhfKTsKLSAgICB1c2luZyBCYXNlOjppdGVtXzsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0lURU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5OWQwZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1ZFQ1RPUl9JVEVSQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9WRUNUT1JfSVRFUkFUT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyYXRvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wbHVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbWludXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hZHZhbmNlX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBWZWN0b3IKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKQotICAgID4KLXN0cnVjdCB2X2l0ZXIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dl9pdGVyX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZfYXQ8VmVjdG9yLG5fPjo6dHlwZSB0eXBlOwotCi0gICAgdHlwZWRlZiBWZWN0b3IgdmVjdG9yXzsKLSAgICB0eXBlZGVmIG1wbDo6bG9uZ188bl8+IHBvczsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICBlbnVtIHsgCi0gICAgICAgICAgbmV4dF8gPSBuXyArIDEKLSAgICAgICAgLCBwcmlvcl8gPSBuXyAtIDEKLSAgICAgICAgLCBwb3NfID0gbl8KLSAgICB9OwotICAgIAotICAgIHR5cGVkZWYgdl9pdGVyPFZlY3RvcixuZXh0Xz4gbmV4dDsKLSAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IscHJpb3JfPiBwcmlvcjsKLSNlbmRpZgotCi19OwotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgPgotc3RydWN0IG5leHQ8IHZfaXRlcjxWZWN0b3Isbl8+ID4KLXsKLSAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IsKG5fICsgMSk+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgPgotc3RydWN0IHByaW9yPCB2X2l0ZXI8VmVjdG9yLG5fPiA+Ci17Ci0gICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLChuXyAtIDEpPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBWZWN0b3IKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKQotICAgICwgdHlwZW5hbWUgRGlzdGFuY2UKLSAgICA+Ci1zdHJ1Y3QgYWR2YW5jZTwgdl9pdGVyPFZlY3RvcixuXz4sRGlzdGFuY2U+Ci17Ci0gICAgdHlwZWRlZiB2X2l0ZXI8Ci0gICAgICAgICAgVmVjdG9yCi0gICAgICAgICwgKG5fICsgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChsb25nLCBEaXN0YW5jZSkpCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBtXykKLSAgICA+IAotc3RydWN0IGRpc3RhbmNlPCB2X2l0ZXI8VmVjdG9yLG5fPiwgdl9pdGVyPFZlY3RvcixtXz4gPgotICAgIDogbXBsOjpsb25nXzwobV8gLSBuXyk+Ci17Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPD4gc3RydWN0IGFkdmFuY2VfaW1wbDxhdXg6OnZfaXRlcl90YWc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICBlbnVtIHsgcG9zXyA9IEl0ZXJhdG9yOjpwb3NfLCBuXyA9IE46OnZhbHVlIH07Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcjo6dmVjdG9yXwotICAgICAgICAgICAgLCAocG9zXyArIG5fKQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXN0YW5jZV9pbXBsPGF1eDo6dl9pdGVyX3RhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcjEsIHR5cGVuYW1lIEl0ZXIyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICBlbnVtIHsgcG9zMV8gPSBJdGVyMTo6cG9zXywgcG9zMl8gPSBJdGVyMjo6cG9zXyB9OwotICAgICAgICB0eXBlZGVmIGxvbmdfPCggcG9zMl8gLSBwb3MxXyApPiB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQobG9uZywgdmFsdWUgPSAoIHBvczJfIC0gcG9zMV8gKSk7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZgotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9WRUNUT1JfSVRFUkFUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNTZlMzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1iZXJlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX1RBSUwodmVjdG9yLCBpXywgVCkgXAotICAgIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pPCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIFQpIFwKLSAgICAgICAgPiBcCi0gICAgLyoqLwotCi0jaWYgaV8gPiAwCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKQotICAgIDogdl9pdGVtPAotICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChULE5ETkJPT1NUX1BQX0RFQyhpXykpCi0gICAgICAgICwgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMKHZlY3RvcixORE5CT09TVF9QUF9ERUMoaV8pLFQpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pIHR5cGU7Ci19OwotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfVkVDVE9SX1RBSUwKLQotI2Vsc2UgLy8gImJydXRlIGZvcmNlIiBpbXBsZW1lbnRhdGlvbgotCi0jICAgaWYgaV8gPiAwCi0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8aV8+IHRhZzsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pIHR5cGU7Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9JVEVNKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChULGlfKSBORE5CT09TVF9QUF9DQVQoaXRlbSxpXyk7IFwKLSAgICAvKiovCi0KLSAgICBORE5CT09TVF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9WRUNUT1JfSVRFTSwgdW51c2VkKQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfSVRFTQotICAgIHR5cGVkZWYgdm9pZF8gTkROQk9PU1RfUFBfQ0FUKGl0ZW0saV8pOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKFQsTkROQk9PU1RfUFBfREVDKGlfKSkgYmFjazsKLQotICAgIC8vIEJvcmxhbmQgZm9yY2VzIHVzIHRvIHVzZSAndHlwZScgaGVyZSAoaW5zdGVhZCBvZiB0aGUgY2xhc3MgbmFtZSkKLSAgICB0eXBlZGVmIHZfaXRlcjx0eXBlLDA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPHR5cGUsaV8+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxORE5CT09TVF9QUF9ERUMoaV8pPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMoaV8pKQotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoaV8pLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0pCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLE5ETkJPT1NUX1BQX0RFQyhpXykpPAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGlfLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0pCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8TkROQk9PU1RfUFBfREVDKGlfKT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyk8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhpXyksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbSkKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKGlfKSkKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLE5ETkJPT1NUX1BQX0RFQyhpXykpPAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoaV8pLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0pCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLSMgICBlbmRpZiAvLyBpXyA+IDAKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDxWLGlfPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6TkROQk9PU1RfUFBfQ0FUKGl0ZW0saV8pIHR5cGU7Ci19OwotCi0jICAgZWxzZQotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDxpXz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6TkROQk9PU1RfUFBfQ0FUKGl0ZW0saV8pIHR5cGU7Ci0gICAgfTsKLX07Ci19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotI2lmIGlfID4gMAotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188aV8+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlmZDkwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1iZXJlZF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTCh2ZWN0b3IsIGlfLCBDKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pLF9jKTxUIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIEMpIFwKLSAgICAgICAgPiBcCi0gICAgLyoqLwotCi0jaWYgaV8gPiAwCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCBUIEMpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYykKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPFQsTkROQk9PU1RfUFBfQ0FUKEMsTkROQk9PU1RfUFBfREVDKGlfKSk+Ci0gICAgICAgICwgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMKHZlY3RvcixORE5CT09TVF9QUF9ERUMoaV8pLEMpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYykgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0jZW5kaWYKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTAotCi0jZWxzZSAvLyAiYnJ1dGUgZm9yY2UiIGltcGxlbWVudGF0aW9uCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9DX1BBUkFNX0ZVTkModW51c2VkLCBpXywgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIGludGVncmFsX2M8VCxORE5CT09TVF9QUF9DQVQocGFyYW0saV8pPiBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCBUIEMpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYykKLSAgICA6IE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pPCBORE5CT09TVF9QUF9SRVBFQVQoaV8sQVVYNzc4MDc2X1ZFQ1RPUl9DX1BBUkFNX0ZVTkMsQykgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pLF9jKSB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfQ19QQVJBTV9GVU5DCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI3VuZGVmIGlfCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9iYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2MDNhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUE9QX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9CQUNLX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcG9wX2JhY2suaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcG9wX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X21hc2s8VmVjdG9yLDA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9CQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5N2I1NDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9mcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9tYXNrPFZlY3RvciwxPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOWFlN2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTsKLSAgICB0eXBlZGVmIFQwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI7Ci0gICAgdHlwZWRlZiBUMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zOwotICAgIHR5cGVkZWYgVDIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDsKLSAgICB0eXBlZGVmIFQzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNTsKLSAgICB0eXBlZGVmIFQ0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Nj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNjsKLSAgICB0eXBlZGVmIFQ1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDY+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW02IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Nz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW03OwotICAgIHR5cGVkZWYgVDYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Nz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8OD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTg7Ci0gICAgdHlwZWRlZiBUNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDg+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW04IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW05OwotICAgIHR5cGVkZWYgVDggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw5PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtOSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTEwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNWM5M2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxX2MKLSAgICA6IHZlY3RvcjE8IGludGVncmFsX2M8IFQsQzAgPiA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyX2MKLSAgICA6IHZlY3RvcjI8IGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+ID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyCi0gICAgPgotc3RydWN0IHZlY3RvcjNfYwotICAgIDogdmVjdG9yMzwgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPiA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3I0X2MKLSAgICA6IHZlY3RvcjQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjVfYwotICAgIDogdmVjdG9yNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNl9jCi0gICAgOiB2ZWN0b3I2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjdfYwotICAgIDogdmVjdG9yNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjhfYwotICAgIDogdmVjdG9yODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjlfYwotICAgIDogdmVjdG9yOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTBfYwotICAgIDogdmVjdG9yMTA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiNmQ3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODA0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjExIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDExPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxMT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDEyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTEyOwotICAgIHR5cGVkZWYgVDExIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xMiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDEyPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xMyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDEzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xNCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTUgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxNT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE2OwotICAgIHR5cGVkZWYgVDE1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTE2IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjE3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE3PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxNz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE4OwotICAgIHR5cGVkZWYgVDE3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTg+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xOCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE4PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMTggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTk+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xOSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMTkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yMCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDIwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODE0Y2NiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExX2MKLSAgICA6IHZlY3RvcjExPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjExX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyX2MKLSAgICA6IHZlY3RvcjEyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTNfYwotICAgIDogdmVjdG9yMTM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTRfYwotICAgIDogdmVjdG9yMTQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1X2MKLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2X2MKLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxN19jCi0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4X2MKLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOV9jCi0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5Ci0gICAgPgotc3RydWN0IHZlY3RvcjIwX2MKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTk+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNzA1ZjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEyNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDIxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyMT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIyOwotICAgIHR5cGVkZWYgVDIxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyMj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDIzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjMgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyMz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI0OwotICAgIHR5cGVkZWYgVDIzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yNCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yNSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNQotICAgID4KLXN0cnVjdCB2ZWN0b3IyNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjY+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yNiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI2PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI3PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyNz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI4OwotICAgIHR5cGVkZWYgVDI3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyOD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTI4IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mjg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQyOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI5PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjkgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyOT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMwOwotICAgIHR5cGVkZWYgVDI5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zMCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDMwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjEwNDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMV9jCi0gICAgOiB2ZWN0b3IyMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyX2MKLSAgICA6IHZlY3RvcjIyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzX2MKLSAgICA6IHZlY3RvcjIzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzIyPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNF9jCi0gICAgOiB2ZWN0b3IyNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNV9jCi0gICAgOiB2ZWN0b3IyNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjZfYwotICAgIDogdmVjdG9yMjY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI1PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyN19jCi0gICAgOiB2ZWN0b3IyNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjhfYwotICAgIDogdmVjdG9yMjg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOV9jCi0gICAgOiB2ZWN0b3IyOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI4PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMF9jCi0gICAgOiB2ZWN0b3IzMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUyMDQ1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDQ0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzMT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTMxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzMj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTMyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zMyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDMzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzQgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzND4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM1OwotICAgIHR5cGVkZWYgVDM0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zNSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzNj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM2IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzNz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM3IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mzc+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mzg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzOD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM4IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mzg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQzOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mzk+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zOSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUMzkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDAgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0MD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkNjJkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgPgotc3RydWN0IHZlY3RvcjMxX2MKLSAgICA6IHZlY3RvcjMxPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyX2MKLSAgICA6IHZlY3RvcjMyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzMxPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzM19jCi0gICAgOiB2ZWN0b3IzMzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMwotICAgID4KLXN0cnVjdCB2ZWN0b3IzNF9jCi0gICAgOiB2ZWN0b3IzNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzVfYwotICAgIDogdmVjdG9yMzU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzM0PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNQotICAgID4KLXN0cnVjdCB2ZWN0b3IzNl9jCi0gICAgOiB2ZWN0b3IzNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzdfYwotICAgIDogdmVjdG9yMzc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOF9jCi0gICAgOiB2ZWN0b3IzODwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzM3PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOV9jCi0gICAgOiB2ZWN0b3IzOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjQwX2MKLSAgICA6IHZlY3RvcjQwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTZlNWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NjQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0MT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQxOwotICAgIHR5cGVkZWYgVDQwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00MSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQxPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0MwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0MiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDM+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQ0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0MyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDQ+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0NT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00NSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Nj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ2PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDYgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0Nj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Nz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00NyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ3PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDg7Ci0gICAgdHlwZWRlZiBUNDcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0OD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ4IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0OCBpdGVtNDg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00OTsKLSAgICB0eXBlZGVmIFQ0OCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0OSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0OT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ5IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDk+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjUwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NTA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjUwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ4IGl0ZW00ODsKLSAgICB0eXBlZGVmIFQ0OSBpdGVtNDk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW01MDsKLSAgICB0eXBlZGVmIFQ0OSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw1MCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjUwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw1MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTUwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NTA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNWE2MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDFfYwotICAgIDogdmVjdG9yNDE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyX2MKLSAgICA6IHZlY3RvcjQyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzX2MKLSAgICA6IHZlY3RvcjQzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NF9jCi0gICAgOiB2ZWN0b3I0NDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ1X2MKLSAgICA6IHZlY3RvcjQ1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Nl9jCi0gICAgOiB2ZWN0b3I0NjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0Nl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3X2MKLSAgICA6IHZlY3RvcjQ3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4X2MKLSAgICA6IHZlY3RvcjQ4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDYgPiwgaW50ZWdyYWxfYzwgVCxDNDcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDlfYwotICAgIDogdmVjdG9yNDk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+LCBpbnRlZ3JhbF9jPCBULEM0OCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OCwgVCBDNDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNTBfYwotICAgIDogdmVjdG9yNTA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+LCBpbnRlZ3JhbF9jPCBULEM0OCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDk+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVmZTMyYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTsKLSAgICB0eXBlZGVmIFQwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yOwotICAgIHR5cGVkZWYgVDEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM7Ci0gICAgdHlwZWRlZiBUMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDsKLSAgICB0eXBlZGVmIFQzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTU7Ci0gICAgdHlwZWRlZiBUNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW02OwotICAgIHR5cGVkZWYgVDUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Nz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW03OwotICAgIHR5cGVkZWYgVDYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW04OwotICAgIHR5cGVkZWYgVDcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTk7Ci0gICAgdHlwZWRlZiBUOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNWM5M2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMV9jCi0gICAgOiB2ZWN0b3IxPCBpbnRlZ3JhbF9jPCBULEMwID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMl9jCi0gICAgOiB2ZWN0b3IyPCBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzX2MKLSAgICA6IHZlY3RvcjM8IGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNF9jCi0gICAgOiB2ZWN0b3I0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1X2MKLSAgICA6IHZlY3RvcjU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjZfYwotICAgIDogdmVjdG9yNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3X2MKLSAgICA6IHZlY3Rvcjc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM2PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4X2MKLSAgICA6IHZlY3Rvcjg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5X2MKLSAgICA6IHZlY3Rvcjk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwX2MKLSAgICA6IHZlY3RvcjEwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ5MjA5ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDExPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE0OwotICAgIHR5cGVkZWYgVDEzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDE0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE2OwotICAgIHR5cGVkZWYgVDE1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMTggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIwOwotICAgIHR5cGVkZWYgVDE5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDIwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxNGNjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTFfYwotICAgIDogdmVjdG9yMTE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxMD4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTJfYwotICAgIDogdmVjdG9yMTI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3IxM19jCi0gICAgOiB2ZWN0b3IxMzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNF9jCi0gICAgOiB2ZWN0b3IxNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxMz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTVfYwotICAgIDogdmVjdG9yMTU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTZfYwotICAgIDogdmVjdG9yMTY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjE3X2MKLSAgICA6IHZlY3RvcjE3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxNj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMThfYwotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMThfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjE5X2MKLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjBfYwotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxOT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODhmNWNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDY0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIyOwotICAgIHR5cGVkZWYgVDIxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMgotICAgID4KLXN0cnVjdCB2ZWN0b3IyMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI2OwotICAgIHR5cGVkZWYgVDI1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDI2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI4OwotICAgIHR5cGVkZWYgVDI3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMjggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMjkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMTA0NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMV9jCi0gICAgOiB2ZWN0b3IyMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyX2MKLSAgICA6IHZlY3RvcjIyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzX2MKLSAgICA6IHZlY3RvcjIzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzIyPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNF9jCi0gICAgOiB2ZWN0b3IyNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNV9jCi0gICAgOiB2ZWN0b3IyNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjZfYwotICAgIDogdmVjdG9yMjY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI1PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyN19jCi0gICAgOiB2ZWN0b3IyNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjhfYwotICAgIDogdmVjdG9yMjg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOV9jCi0gICAgOiB2ZWN0b3IyOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI4PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMF9jCi0gICAgOiB2ZWN0b3IzMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2M3NTNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzg0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMzOwotICAgIHR5cGVkZWYgVDMyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM5OwotICAgIHR5cGVkZWYgVDM4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUMzkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkNjJkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMV9jCi0gICAgOiB2ZWN0b3IzMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMl9jCi0gICAgOiB2ZWN0b3IzMjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzMT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzNfYwotICAgIDogdmVjdG9yMzM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzRfYwotICAgIDogdmVjdG9yMzQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1X2MKLSAgICA6IHZlY3RvcjM1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzND4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzZfYwotICAgIDogdmVjdG9yMzY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjM3X2MKLSAgICA6IHZlY3RvcjM3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzhfYwotICAgIDogdmVjdG9yMzg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzNz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzlfYwotICAgIDogdmVjdG9yMzk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MF9jCi0gICAgOiB2ZWN0b3I0MDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmQyYzNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTA0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwCi0gICAgPgotc3RydWN0IHZlY3RvcjQxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Mj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0MwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0MiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0MyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0NSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Nj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0NiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0OD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NyBpdGVtNDc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00ODsKLSAgICB0eXBlZGVmIFQ0NyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0OCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0OCBpdGVtNDg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00OTsKLSAgICB0eXBlZGVmIFQ0OCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0OSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0OSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDUwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0OCBpdGVtNDg7Ci0gICAgdHlwZWRlZiBUNDkgaXRlbTQ5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNTA7Ci0gICAgdHlwZWRlZiBUNDkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNTAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjUwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTVhNjM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MV9jCi0gICAgOiB2ZWN0b3I0MTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0MD4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDJfYwotICAgIDogdmVjdG9yNDI8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0Ml9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDNfYwotICAgIDogdmVjdG9yNDM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0M19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQ0X2MKLSAgICA6IHZlY3RvcjQ0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0Mz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDVfYwotICAgIDogdmVjdG9yNDU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ2X2MKLSAgICA6IHZlY3RvcjQ2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDdfYwotICAgIDogdmVjdG9yNDc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0Nj4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDhfYwotICAgIDogdmVjdG9yNDg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OV9jCi0gICAgOiB2ZWN0b3I0OTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQ2ID4sIGludGVncmFsX2M8IFQsQzQ3ID4sIGludGVncmFsX2M8IFQsQzQ4ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4LCBUIEM0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MF9jCi0gICAgOiB2ZWN0b3I1MDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQ2ID4sIGludGVncmFsX2M8IFQsQzQ3ID4sIGludGVncmFsX2M8IFQsQzQ4ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0OT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZjRhMjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjEKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMAotICAgICAgICAsIHZlY3RvcjA8ICA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjIKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMQotICAgICAgICAsIHZlY3RvcjE8VDA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIKLSAgICAgICAgLCB2ZWN0b3IyPCBUMCxUMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzCi0gICAgICAgICwgdmVjdG9yMzwgVDAsVDEsVDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQKLSAgICAgICAgLCB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDUKLSAgICAgICAgLCB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ2Ci0gICAgICAgICwgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDcKLSAgICAgICAgLCB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDgKLSAgICAgICAgLCB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTAKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUOQotICAgICAgICAsIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBhMTgyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgdmVjdG9yMF9jPFQ+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxCi0gICAgPgotc3RydWN0IHZlY3RvcjJfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzEgPgotICAgICAgICAsIHZlY3RvcjFfYzwgVCxDMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyCi0gICAgPgotc3RydWN0IHZlY3RvcjNfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIHZlY3RvcjJfYzwgVCxDMCxDMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzCi0gICAgPgotc3RydWN0IHZlY3RvcjRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMgPgotICAgICAgICAsIHZlY3RvcjNfYzwgVCxDMCxDMSxDMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjVfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQgPgotICAgICAgICAsIHZlY3RvcjRfYzwgVCxDMCxDMSxDMixDMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjZfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzUgPgotICAgICAgICAsIHZlY3RvcjVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIHZlY3RvcjZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjhfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzcgPgotICAgICAgICAsIHZlY3RvcjdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjlfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzggPgotICAgICAgICAsIHZlY3RvcjhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCB2ZWN0b3I5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEzNGYzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMAotICAgICAgICAsIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjExIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMQotICAgICAgICAsIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3IxMwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMgotICAgICAgICAsIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMwotICAgICAgICAsIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNAotICAgICAgICAsIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3IxNgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNQotICAgICAgICAsIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxNwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNgotICAgICAgICAsIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNwotICAgICAgICAsIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxOAotICAgICAgICAsIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxOQotICAgICAgICAsIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MWU3OGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTAgPgotICAgICAgICAsIHZlY3RvcjEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTEgPgotICAgICAgICAsIHZlY3RvcjExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyCi0gICAgPgotc3RydWN0IHZlY3RvcjEzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgdmVjdG9yMTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTMgPgotICAgICAgICAsIHZlY3RvcjEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTQgPgotICAgICAgICAsIHZlY3RvcjE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgdmVjdG9yMTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxN19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTYgPgotICAgICAgICAsIHZlY3RvcjE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTcgPgotICAgICAgICAsIHZlY3RvcjE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMThfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjE5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgdmVjdG9yMThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTkgPgotICAgICAgICAsIHZlY3RvcjE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc2ZDVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIwCi0gICAgICAgICwgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIxCi0gICAgICAgICwgdmVjdG9yMjE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIyCi0gICAgICAgICwgdmVjdG9yMjI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIzCi0gICAgICAgICwgdmVjdG9yMjM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgPgotc3RydWN0IHZlY3RvcjI1Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI0Ci0gICAgICAgICwgdmVjdG9yMjQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1Ci0gICAgPgotc3RydWN0IHZlY3RvcjI2Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI1Ci0gICAgICAgICwgdmVjdG9yMjU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI2Ci0gICAgICAgICwgdmVjdG9yMjY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI3Ci0gICAgICAgICwgdmVjdG9yMjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI4Ci0gICAgICAgICwgdmVjdG9yMjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI5Ci0gICAgICAgICwgdmVjdG9yMjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZmEyMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjFfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIwID4KLSAgICAgICAgLCB2ZWN0b3IyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIHZlY3RvcjIxX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjNfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIyID4KLSAgICAgICAgLCB2ZWN0b3IyMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIzID4KLSAgICAgICAgLCB2ZWN0b3IyM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIHZlY3RvcjI0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjZfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI1ID4KLSAgICAgICAgLCB2ZWN0b3IyNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI2ID4KLSAgICAgICAgLCB2ZWN0b3IyNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNwotICAgID4KLXN0cnVjdCB2ZWN0b3IyOF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIHZlY3RvcjI3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjlfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI4ID4KLSAgICAgICAgLCB2ZWN0b3IyOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzBfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI5ID4KLSAgICAgICAgLCB2ZWN0b3IyOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTE0MjM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMAotICAgICAgICAsIHZlY3RvcjMwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMQotICAgICAgICAsIHZlY3RvcjMxPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzMwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMgotICAgICAgICAsIHZlY3RvcjMyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMwotICAgID4KLXN0cnVjdCB2ZWN0b3IzNAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMwotICAgICAgICAsIHZlY3RvcjMzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgID4KLXN0cnVjdCB2ZWN0b3IzNQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNAotICAgICAgICAsIHZlY3RvcjM0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNQotICAgID4KLXN0cnVjdCB2ZWN0b3IzNgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNQotICAgICAgICAsIHZlY3RvcjM1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzNwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNgotICAgICAgICAsIHZlY3RvcjM2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNwotICAgICAgICAsIHZlY3RvcjM3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzOAotICAgICAgICAsIHZlY3RvcjM4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzOQotICAgICAgICAsIHZlY3RvcjM5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE3NDhhOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzFfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCB2ZWN0b3IzMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzMSA+Ci0gICAgICAgICwgdmVjdG9yMzFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyCi0gICAgPgotc3RydWN0IHZlY3RvcjMzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzMiA+Ci0gICAgICAgICwgdmVjdG9yMzJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCB2ZWN0b3IzM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzNCA+Ci0gICAgICAgICwgdmVjdG9yMzRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzNSA+Ci0gICAgICAgICwgdmVjdG9yMzVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCB2ZWN0b3IzNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzNyA+Ci0gICAgICAgICwgdmVjdG9yMzdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjM5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzOCA+Ci0gICAgICAgICwgdmVjdG9yMzhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDBfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCB2ZWN0b3IzOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY2YWU2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MAotICAgICAgICAsIHZlY3RvcjQwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MQotICAgICAgICAsIHZlY3RvcjQxPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0MwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MgotICAgICAgICAsIHZlY3RvcjQyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MwotICAgICAgICAsIHZlY3RvcjQzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NAotICAgICAgICAsIHZlY3RvcjQ0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0NgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NQotICAgICAgICAsIHZlY3RvcjQ1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0NwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NgotICAgICAgICAsIHZlY3RvcjQ2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NwotICAgICAgICAsIHZlY3RvcjQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0OAotICAgICAgICAsIHZlY3RvcjQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0OQotICAgICAgICAsIHZlY3RvcjQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3LFQ0OCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OWM2YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDAgPgotICAgICAgICAsIHZlY3RvcjQwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Ml9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDEgPgotICAgICAgICAsIHZlY3RvcjQxX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgdmVjdG9yNDJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDMgPgotICAgICAgICAsIHZlY3RvcjQzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDQgPgotICAgICAgICAsIHZlY3RvcjQ0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgdmVjdG9yNDVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0N19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDYgPgotICAgICAgICAsIHZlY3RvcjQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0N19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDcgPgotICAgICAgICAsIHZlY3RvcjQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0OCA+Ci0gICAgICAgICwgdmVjdG9yNDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4LCBUIEM0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDkgPgotICAgICAgICAsIHZlY3RvcjQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2LEM0NyxDNDggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2MWQ5YjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9iYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfYmFjay5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVtPFQsVmVjdG9yLDA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NDNmZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVtPFQsVmVjdG9yLDE+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzg3YWZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotICAgIDogTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotfTsKLQotI2Vsc2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLSAgICA6IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLXsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNkNTFkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdGFnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi1zdHJ1Y3Qgdl9pdGVyX3RhZzsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotc3RydWN0IHZlY3Rvcl90YWc7Ci0jZWxzZQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gc3RydWN0IHZlY3Rvcl90YWc7Ci0jZW5kaWYKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ZlY3RvcjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWFkYjEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ZlY3RvcjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRHVtbXkgPSBuYSA+IHN0cnVjdCB2ZWN0b3IwOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB2ZWN0b3IwPG5hPgotewotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnIHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjAgICAgICAgICB0eXBlOwotICAgIHR5cGVkZWYgbG9uZ188MzI3Njg+ICAgIGxvd2VyX2JvdW5kXzsKLSAgICB0eXBlZGVmIGxvd2VyX2JvdW5kXyAgICB1cHBlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiBsb25nXzwwPiAgICAgICAgc2l6ZTsKLQotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjx2b2lkXz4gaXRlbV8oLi4uKTsKLSNlbHNlCi0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMCB0eXBlOwotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTA7Ci0gICAgCi0gICAgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMDw+LDA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwwPiBlbmQ7Ci0jZW5kaWYKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9WRUNUT1IwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTExYjYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9jbGVhci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNmJiYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB2ZWN0b3IwX2MKLSAgICA6IHZlY3RvcjA8PgotewotICAgIHR5cGVkZWYgdmVjdG9yMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRiNDhjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IxMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMTAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIDEwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWZkMWY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjEwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMTBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMSwgMTAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IxMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMGEwZDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMjAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IyMC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMTEsIDIwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzI0ZWQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMjBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjIwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjIwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDExLCAyMCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlNGU0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IzMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjMwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYTEwZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IzMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMzBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMzBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19VU0VfUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTVmZmQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjQwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yNDAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDMxLCA0MCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA0N2EwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjQwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3I0MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3I0MF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgzMSwgNDAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmYTkxNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yNTAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3I1MC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoNDEsIDUwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmRjZjY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNTBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjUwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjUwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDQxLCA1MCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWEyMzdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WT0lEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVk9JRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZvaWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLS8vICBbSkRHIEZlYi00LTIwMDNdIG1hZGUgdm9pZF8gYSBjb21wbGV0ZSB0eXBlIHRvIGFsbG93IGl0IHRvIGJlCi0vLyAgaW5zdGFudGlhdGVkIHNvIHRoYXQgaXQgY2FuIGJlIHBhc3NlZCBpbiBhcyBhbiBvYmplY3QgdGhhdCBjYW4gYmUKLS8vICB1c2VkIHRvIHNlbGVjdCBhbiBvdmVybG9hZGVkIGZ1bmN0aW9uLiBQb3NzaWJsZSB1c2UgaW5jbHVkZXMgc2lnbmFsaW5nCi0vLyAgYSB6ZXJvIGFyaXR5IGZ1bmN0b3IgZXZhbHVhdGlvbiBjYWxsLgotc3RydWN0IHZvaWRfIHsgdHlwZWRlZiB2b2lkXyB0eXBlOyB9OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3ZvaWRfCi0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdm9pZF88dm9pZF8+Ci0gICAgOiB0cnVlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIHRydWVfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX25vdF92b2lkXwotICAgIDogdHJ1ZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyB0cnVlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19ub3Rfdm9pZF88dm9pZF8+Ci0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgaXNfdm9pZF8pCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgaXNfbm90X3ZvaWRfKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZPSURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMmE3NmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WT0lEX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZPSURfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdm9pZF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotc3RydWN0IHZvaWRfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKHZvaWRfKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZPSURfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9uZXh0X3ByaW9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbmV4dF9wcmlvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNjAyODAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9uZXh0X3ByaW9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8vICBCb29zdCBuZXh0X3ByaW9yLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcyBhbmQgRGFuaWVsIFdhbGtlciAxOTk5LTIwMDMuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAxMyBEZWMgMjAwMyAgQWRkZWQgbmV4dCh4LCBuKSBhbmQgcHJpb3IoeCwgbikgKERhbmllbCBXYWxrZXIpCi0KLSNpZm5kZWYgTkROQk9PU1RfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgY2xhc3NlcyBsaWtlIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3JzIG5vdCBzdXBwb3J0aW5nCi0vLyAgb3BlcmF0b3IrIGFuZCBvcGVyYXRvci0KLS8vCi0vLyAgVXNhZ2U6Ci0vLyAgICBjb25zdCBzdGQ6Omxpc3Q8VD46Oml0ZXJhdG9yIHAgPSBnZXRfc29tZV9pdGVyYXRvcigpOwotLy8gICAgY29uc3Qgc3RkOjpsaXN0PFQ+OjppdGVyYXRvciBwcmV2ID0gbmRuYm9vc3Q6OnByaW9yKHApOwotLy8gICAgY29uc3Qgc3RkOjpsaXN0PFQ+OjppdGVyYXRvciBuZXh0ID0gbmRuYm9vc3Q6Om5leHQocHJldiwgMik7Ci0KLS8vICBDb250cmlidXRlZCBieSBEYXZlIEFicmFoYW1zCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIFQgbmV4dChUIHgpIHsgcmV0dXJuICsreDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRGlzdGFuY2U+Ci1pbmxpbmUgVCBuZXh0KFQgeCwgRGlzdGFuY2UgbikKLXsKLSAgICBzdGQ6OmFkdmFuY2UoeCwgbik7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIFQgcHJpb3IoVCB4KSB7IHJldHVybiAtLXg7IH0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpc3RhbmNlPgotaW5saW5lIFQgcHJpb3IoVCB4LCBEaXN0YW5jZSBuKQotewotICAgIHN0ZDo6YWR2YW5jZSh4LCAtbik7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9ub25fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NTBiMWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9ub25fdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgICAgICAgIChDKSBDb3B5cmlnaHQgR2VubmFybyBQcm90YSAyMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9OT05fVFlQRV9IUFBfR1BfMjAwMzA0MTcKLSNkZWZpbmUgTkROQk9PU1RfTk9OX1RZUEVfSFBQX0dQXzIwMDMwNDE3Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAvLyBKdXN0IGEgc2ltcGxlICJlbnZlbG9wZSIgZm9yIG5vbi10eXBlIHRlbXBsYXRlIHBhcmFtZXRlcnMuIFVzZWZ1bAotICAvLyB0byB3b3JrIGFyb3VuZCBzb21lIE1TVkMgZGVmaWNpZW5jaWVzLgotCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgbj4KLSBzdHJ1Y3Qgbm9uX3R5cGUgeyB9OwotCi0KLX0KLQotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ub25jb3B5YWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L25vbmNvcHlhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FlOWQxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L25vbmNvcHlhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vICBCb29zdCBub25jb3B5YWJsZS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5OS0yMDAzLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9OQ09QWUFCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX05PTkNPUFlBQkxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gIFByaXZhdGUgY29weSBjb25zdHJ1Y3RvciBhbmQgY29weSBhc3NpZ25tZW50IGVuc3VyZSBjbGFzc2VzIGRlcml2ZWQgZnJvbQotLy8gIGNsYXNzIG5vbmNvcHlhYmxlIGNhbm5vdCBiZSBjb3BpZWQuCi0KLS8vICBDb250cmlidXRlZCBieSBEYXZlIEFicmFoYW1zCi0KLW5hbWVzcGFjZSBub25jb3B5YWJsZV8gIC8vIHByb3RlY3Rpb24gZnJvbSB1bmludGVuZGVkIEFETAotewotICBjbGFzcyBub25jb3B5YWJsZQotICB7Ci0gICBwcm90ZWN0ZWQ6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0RFRkFVTFRFRF9GVU5DVElPTlMKLSAgICBORE5CT09TVF9DT05TVEVYUFIgbm9uY29weWFibGUoKSA9IGRlZmF1bHQ7Ci0gICAgfm5vbmNvcHlhYmxlKCkgPSBkZWZhdWx0OwotI2Vsc2UKLSAgICBub25jb3B5YWJsZSgpIHt9Ci0gICAgICB+bm9uY29weWFibGUoKSB7fQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX0RFTEVURURfRlVOQ1RJT05TCi0gICAgICAgIG5vbmNvcHlhYmxlKCBjb25zdCBub25jb3B5YWJsZSYgKSA9IGRlbGV0ZTsKLSAgICAgICAgbm9uY29weWFibGUmIG9wZXJhdG9yPSggY29uc3Qgbm9uY29weWFibGUmICkgPSBkZWxldGU7Ci0jZWxzZQotICAgIHByaXZhdGU6ICAvLyBlbXBoYXNpemUgdGhlIGZvbGxvd2luZyBtZW1iZXJzIGFyZSBwcml2YXRlCi0gICAgICBub25jb3B5YWJsZSggY29uc3Qgbm9uY29weWFibGUmICk7Ci0gICAgICBub25jb3B5YWJsZSYgb3BlcmF0b3I9KCBjb25zdCBub25jb3B5YWJsZSYgKTsKLSNlbmRpZgotICB9OwotfQotCi10eXBlZGVmIG5vbmNvcHlhYmxlXzo6bm9uY29weWFibGUgbm9uY29weWFibGU7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfTk9OQ09QWUFCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L25vbmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9ub25lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRlMTkyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L25vbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9ORV8xN1NFUDIwMDNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05PTkVfMTdTRVAyMDAzX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3Qvbm9uZV90LmhwcCIKLQotLy8gTk9URTogQm9ybGFuZCB1c2VycyBoYXZlIHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgb3V0c2lkZSBhbnkgcHJlY29tcGlsZWQgaGVhZGVycwotLy8gKGJjYzw9NS42NCBjYW5ub3QgaW5jbHVkZSBpbnN0YW5jZSBkYXRhIGluIGEgcHJlY29tcGlsZWQgaGVhZGVyKQotLy8gIC0tICogVG8gYmUgdmVyaWZpZWQsIG5vdyB0aGF0IHRoZXJlJ3Mgbm8gdW5uYW1lZCBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbm9uZV90IGNvbnN0IG5vbmUgPSAoc3RhdGljX2Nhc3Q8bm9uZV90PigwKSkgOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ub25lX3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9ub25lX3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjg0Mjg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uZV90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9ORV9UXzE3U0VQMjAwM19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTk9ORV9UXzE3U0VQMjAwM19IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCBub25lX2hlbHBlcnt9OyB9Ci0KLXR5cGVkZWYgaW50IGRldGFpbDo6bm9uZV9oZWxwZXI6Oipub25lX3QgOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vYm91bmRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2JvdW5kcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxOWRlODEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vYm91bmRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JPVU5EU18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CT1VORFNfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9ib3VuZHMuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyAKLXsKLQotdGVtcGxhdGU8Y2xhc3MgTj4KLXN0cnVjdCBib3VuZHMgOiBib3VuZHNkZXRhaWw6OmdldF9pbXBsPE4+Ojp0eXBlCi17fSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Nzk5ZmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0vLwotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vCi0vLyAgICAxOSBOb3YgMjAwMSBTeW50YXRpYyBjaGFuZ2VzIGFzIHN1Z2dlc3RlZCBieSBEYXJpbiBBZGxlciAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgICAwOCBOb3YgMjAwMSBGaXhlcyB0byBhY2NvbW1vZGF0ZSBNU1ZDIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAgIDA0IE5vdiAyMDAxIEZpeGVzIHRvIGFjY29tbW9kYXRlIGdjYzIuOTIgKEZlcm5hbmRvIENhY2Npb2xhKQotLy8gICAgMzAgT2N0IDIwMDEgU29tZSBmaXhlcyBzdWdnZXN0ZWQgYnkgRGFyeWxlIFdhbGtlciAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgICAyNSBPY3QgMjAwMSBJbml0aWFsIGJvb3N0aWZpY2F0aW9uIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAgIDIzIEphbiAyMDA0IEluaXRhbCBhZGQgdG8gY3ZzIChwb3N0IHJldmlldylzCi0vLyAgICAyMiBKdW4gMjAxMSBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWFsaXppbmcgY2FzdCBwb2xpY2llcyB2aWEgbnVtZXJpY19jYXN0X3RyYWl0cyAoQnJhbmRvbiBLb2huKS4KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DQVNUXzI1T0NUMjAwMV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NBU1RfMjVPQ1QyMDAxX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpKQotCi0jICBpbmNsdWRlPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvb2xkX251bWVyaWNfY2FzdC5ocHA+Ci0KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gCi0gICAgaW5saW5lIFRhcmdldCBudW1lcmljX2Nhc3QoIFNvdXJjZSBhcmcgKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBudW1lcmljOjpjb252ZXJzaW9uX3RyYWl0czxUYXJnZXQsIFNvdXJjZT4gICBjb252X3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiBudW1lcmljOjpudW1lcmljX2Nhc3RfdHJhaXRzPFRhcmdldCwgU291cmNlPiBjYXN0X3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVydGVyCi0gICAgICAgICAgICA8Ci0gICAgICAgICAgICAgICAgVGFyZ2V0LAotICAgICAgICAgICAgICAgIFNvdXJjZSwgCi0gICAgICAgICAgICAgICAgY29udl90cmFpdHMsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FzdF90cmFpdHM6Om92ZXJmbG93X3BvbGljeSwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FzdF90cmFpdHM6OnJvdW5kaW5nX3BvbGljeSwgCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om51bWVyaWM6OnJhd19jb252ZXJ0ZXI8IGNvbnZfdHJhaXRzID4sCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FzdF90cmFpdHM6OnJhbmdlX2NoZWNraW5nX3BvbGljeQotICAgICAgICAgICAgPiBjb252ZXJ0ZXI7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0ZXI6OmNvbnZlcnQoYXJnKTsKLSAgICB9Ci0gICAgCi0gICAgdXNpbmcgbnVtZXJpYzo6YmFkX251bWVyaWNfY2FzdDsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnNpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnNpb25fdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyNWQ4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJzaW9uX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJTSU9OX1RSQUlUU19GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSU0lPTl9UUkFJVFNfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVyc2lvbl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYwotewotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBTPgotc3RydWN0IGNvbnZlcnNpb25fdHJhaXRzIAotICAgIDogY29udmRldGFpbDo6Z2V0X2NvbnZlcnNpb25fdHJhaXRzPFQsUz46OnR5cGUgCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY29udmRldGFpbDo6Z2V0X2NvbnZlcnNpb25fdHJhaXRzPFQsUz46OnR5cGUgYmFzZV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlXzo6dGFyZ2V0X3R5cGUgICAgIHRhcmdldF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV86OnNvdXJjZV90eXBlICAgICBzb3VyY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfOjpyZXN1bHRfdHlwZSAgICAgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlXzo6YXJndW1lbnRfdHlwZSAgIGFyZ3VtZW50X3R5cGU7Ci0jZW5kaWYKLX0gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NzUyZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlRFUl9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSVEVSX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVyc2lvbl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJ0ZXIuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyAKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVCwKLSAgICAgICAgIGNsYXNzIFMsCi0gICAgICAgICBjbGFzcyBUcmFpdHMgICAgICAgICAgID0gY29udmVyc2lvbl90cmFpdHM8VCxTPiwKLSAgICAgICAgIGNsYXNzIE92ZXJmbG93SGFuZGxlciAgPSBkZWZfb3ZlcmZsb3dfaGFuZGxlciwKLSAgICAgICAgIGNsYXNzIEZsb2F0MkludFJvdW5kZXIgPSBUcnVuYzwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OnNvdXJjZV90eXBlPiAgLAotICAgICAgICAgY2xhc3MgUmF3Q29udmVydGVyICAgICA9IHJhd19jb252ZXJ0ZXI8VHJhaXRzPiwKLSAgICAgICAgIGNsYXNzIFVzZXJSYW5nZUNoZWNrZXIgPSBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlcgotICAgICAgICA+Ci1zdHJ1Y3QgY29udmVydGVyIDogY29udmRldGFpbDo6Z2V0X2NvbnZlcnRlcl9pbXBsPFRyYWl0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcmZsb3dIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdDJJbnRSb3VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJSYW5nZUNoZWNrZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi17Ci0gIHR5cGVkZWYgVHJhaXRzIHRyYWl0cyA7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkgKCBhcmd1bWVudF90eXBlIHMgKSBjb25zdCB7IHJldHVybiB0aGlzLT5jb252ZXJ0KHMpIDsgfQotfSA7Ci0KLQotCi10ZW1wbGF0ZTxjbGFzcyBTLAotICAgICAgICAgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyICA9IGRlZl9vdmVyZmxvd19oYW5kbGVyLAotICAgICAgICAgY2xhc3MgRmxvYXQySW50Um91bmRlciA9IFRydW5jPFM+ICAsCi0gICAgICAgICBjbGFzcyBVc2VyUmFuZ2VDaGVja2VyID0gVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIKLSAgICAgICAgPgotc3RydWN0IG1ha2VfY29udmVydGVyX2Zyb20KLXsKLSAgdGVtcGxhdGU8Y2xhc3MgVCwKLSAgICAgICAgICAgY2xhc3MgVHJhaXRzICAgICAgID0gY29udmVyc2lvbl90cmFpdHM8VCxTPiwKLSAgICAgICAgICAgY2xhc3MgUmF3Q29udmVydGVyID0gcmF3X2NvbnZlcnRlcjxUcmFpdHM+Ci0gICAgICAgICAgPiAKLSAgc3RydWN0IHRvCi0gIHsKLSAgICB0eXBlZGVmIGNvbnZlcnRlcjxULFMsVHJhaXRzLE92ZXJmbG93SGFuZGxlcixGbG9hdDJJbnRSb3VuZGVyLFJhd0NvbnZlcnRlcixVc2VyUmFuZ2VDaGVja2VyPiB0eXBlIDsKLSAgfSA7Ci0KLX0gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWM5NzhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJURVJfUE9MSUNJRVNfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlRFUl9QT0xJQ0lFU19GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSA8dHlwZWluZm8+IC8vIGZvciBzdGQ6OmJhZF9jYXN0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4gLy8gZm9yIHN0ZDo6Zmxvb3IgYW5kIHN0ZDo6Y2VpbAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMKLXsKLQotdGVtcGxhdGU8Y2xhc3MgUz4KLXN0cnVjdCBUcnVuYwotewotICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sUyxTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLSAgICB1c2luZyBzdGQ6OmZsb29yIDsKLSAgICB1c2luZyBzdGQ6OmNlaWwgIDsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHMgPCBzdGF0aWNfY2FzdDxTPigwKSA/IGNlaWwocykgOiBmbG9vcihzKSA7Ci0gIH0KLQotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzwgc3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfemVybz4gcm91bmRfc3R5bGUgOwotfSA7Ci0KLQotCi10ZW1wbGF0ZTxjbGFzcyBTPgotc3RydWN0IEZsb29yCi17Ci0gIHR5cGVkZWYgUyBzb3VyY2VfdHlwZSA7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwgaXNfYXJpdGhtZXRpYzxTPixTLFMgY29uc3QmPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICggYXJndW1lbnRfdHlwZSBzICkKLSAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotICAgIHVzaW5nIHN0ZDo6Zmxvb3IgOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmxvb3IocykgOwotICB9Ci0KLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8IHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX25lZ19pbmZpbml0eT4gcm91bmRfc3R5bGUgOwotfSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFM+Ci1zdHJ1Y3QgQ2VpbAotewotICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sUyxTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLSAgICB1c2luZyBzdGQ6OmNlaWwgOwotI2VuZGlmCi0KLSAgICByZXR1cm4gY2VpbChzKSA7Ci0gIH0KLQotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzwgc3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfaW5maW5pdHk+IHJvdW5kX3N0eWxlIDsKLX0gOwotCi10ZW1wbGF0ZTxjbGFzcyBTPgotc3RydWN0IFJvdW5kRXZlbgotewotICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sUyxTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gIHsKLSAgICAvLyBBbGdvcml0aG0gY29udHJpYnV0ZWQgYnkgR3VpbGxhdW1lIE1lbHF1aW9uZAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi0gICAgdXNpbmcgc3RkOjpmbG9vciA7Ci0gICAgdXNpbmcgc3RkOjpjZWlsICA7Ci0jZW5kaWYKLQotICAgIC8vIG9ubHkgd29ya3MgaW5zaWRlIHRoZSByYW5nZSBub3QgYXQgdGhlIGJvdW5kYXJpZXMKLSAgICBTIHByZXYgPSBmbG9vcihzKTsKLSAgICBTIG5leHQgPSBjZWlsKHMpOwotCi0gICAgUyBydCA9IChzIC0gcHJldikgLSAobmV4dCAtIHMpOyAvLyByZW1haW5kZXIgdHlwZQotCi0gICAgUyBjb25zdCB6ZXJvKDAuMCk7Ci0gICAgUyBjb25zdCB0d28oMi4wKTsKLQotICAgIGlmICggcnQgPCB6ZXJvICkKLSAgICAgIHJldHVybiBwcmV2OwotICAgIGVsc2UgaWYgKCBydCA+IHplcm8gKQotICAgICAgcmV0dXJuIG5leHQ7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGJvb2wgaXNfcHJldl9ldmVuID0gdHdvICogZmxvb3IocHJldiAvIHR3bykgPT0gcHJldiA7Ci0gICAgICByZXR1cm4gKCBpc19wcmV2X2V2ZW4gPyBwcmV2IDogbmV4dCApIDsKLSAgICB9Ci0gIH0KLQotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzwgc3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b19uZWFyZXN0PiByb3VuZF9zdHlsZSA7Ci19IDsKLQotCi1lbnVtIHJhbmdlX2NoZWNrX3Jlc3VsdAotewotICBjSW5SYW5nZSAgICAgPSAwICwKLSAgY05lZ092ZXJmbG93ID0gMSAsCi0gIGNQb3NPdmVyZmxvdyA9IDIKLX0gOwotCi1jbGFzcyBiYWRfbnVtZXJpY19jYXN0IDogcHVibGljIHN0ZDo6YmFkX2Nhc3QKLXsKLSAgcHVibGljOgotCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICogd2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICAgIHsgIHJldHVybiAiYmFkIG51bWVyaWMgY29udmVyc2lvbjogb3ZlcmZsb3ciOyB9Ci19OwotCi1jbGFzcyBuZWdhdGl2ZV9vdmVyZmxvdyA6IHB1YmxpYyBiYWRfbnVtZXJpY19jYXN0Ci17Ci0gIHB1YmxpYzoKLQotICAgIHZpcnR1YWwgY29uc3QgY2hhciAqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgICB7ICByZXR1cm4gImJhZCBudW1lcmljIGNvbnZlcnNpb246IG5lZ2F0aXZlIG92ZXJmbG93IjsgfQotfTsKLWNsYXNzIHBvc2l0aXZlX292ZXJmbG93IDogcHVibGljIGJhZF9udW1lcmljX2Nhc3QKLXsKLSAgcHVibGljOgotCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICogd2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICAgIHsgcmV0dXJuICJiYWQgbnVtZXJpYyBjb252ZXJzaW9uOiBwb3NpdGl2ZSBvdmVyZmxvdyI7IH0KLX07Ci0KLXN0cnVjdCBkZWZfb3ZlcmZsb3dfaGFuZGxlcgotewotICB2b2lkIG9wZXJhdG9yKCkgKCByYW5nZV9jaGVja19yZXN1bHQgciApIC8vIHRocm93KG5lZ2F0aXZlX292ZXJmbG93LHBvc2l0aXZlX292ZXJmbG93KQotICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICBpZiAoIHIgPT0gY05lZ092ZXJmbG93ICkKLSAgICAgIHRocm93IG5lZ2F0aXZlX292ZXJmbG93KCkgOwotICAgIGVsc2UgaWYgKCByID09IGNQb3NPdmVyZmxvdyApCi0gICAgICAgICAgIHRocm93IHBvc2l0aXZlX292ZXJmbG93KCkgOwotI2Vsc2UKLSAgICBpZiAoIHIgPT0gY05lZ092ZXJmbG93ICkKLSAgICAgIDo6bmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihuZWdhdGl2ZV9vdmVyZmxvdygpKSA7Ci0gICAgZWxzZSBpZiAoIHIgPT0gY1Bvc092ZXJmbG93ICkKLSAgICAgICAgICAgOjpuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHBvc2l0aXZlX292ZXJmbG93KCkpIDsKLSNlbmRpZgotICB9Ci19IDsKLQotc3RydWN0IHNpbGVudF9vdmVyZmxvd19oYW5kbGVyCi17Ci0gIHZvaWQgb3BlcmF0b3IoKSAoIHJhbmdlX2NoZWNrX3Jlc3VsdCApIHt9IC8vIHRocm93KCkKLX0gOwotCi10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1zdHJ1Y3QgcmF3X2NvbnZlcnRlcgotewotICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZSAgIDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHJlc3VsdF90eXBlIGxvd19sZXZlbF9jb252ZXJ0ICggYXJndW1lbnRfdHlwZSBzICkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHMpIDsgfQotfSA7Ci0KLXN0cnVjdCBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciB7fSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvYm91bmRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9ib3VuZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWQzMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9ib3VuZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQk9VTkRTX0RFVEFJTF9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQk9VTkRTX0RFVEFJTF9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pZi5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGJvdW5kc2RldGFpbAotewotICB0ZW1wbGF0ZTxjbGFzcyBOPgotICBjbGFzcyBJbnRlZ3JhbAotICB7Ci0gICAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8Tj4gbGltaXRzIDsKLQotICAgIHB1YmxpYyA6Ci0gICAgCi0gICAgICBzdGF0aWMgTiBsb3dlc3QgICgpIHsgcmV0dXJuIGxpbWl0czo6bWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpOyB9Ci0gICAgICBzdGF0aWMgTiBoaWdoZXN0ICgpIHsgcmV0dXJuIGxpbWl0czo6bWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpOyB9Ci0gICAgICBzdGF0aWMgTiBzbWFsbGVzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE4+KDEpOyB9Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIE4+Ci0gIGNsYXNzIEZsb2F0Ci0gIHsKLSAgICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxOPiBsaW1pdHMgOwotCi0gICAgcHVibGljIDoKLSAgICAKLSAgICAgIHN0YXRpYyBOIGxvd2VzdCAgKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tj4oLWxpbWl0czo6bWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpKSA7IH0KLSAgICAgIHN0YXRpYyBOIGhpZ2hlc3QgKCkgeyByZXR1cm4gbGltaXRzOjptYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCk7IH0KLSAgICAgIHN0YXRpYyBOIHNtYWxsZXN0KCkgeyByZXR1cm4gbGltaXRzOjptaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCk7IH0KLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgTj4KLSAgc3RydWN0IGdldF9pbXBsCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxOPjo6aXNfaW50ZWdlciA+IGlzX2ludCA7Ci0KLSAgICB0eXBlZGVmIEludGVncmFsPE4+IGltcGxfaW50ICAgOwotICAgIHR5cGVkZWYgRmxvYXQgICA8Tj4gaW1wbF9mbG9hdCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPGlzX2ludCxpbXBsX2ludCxpbXBsX2Zsb2F0Pjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Ym91bmRzZGV0YWlsLgotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJzaW9uX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZmUxMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9DT05WRVJTSU9OX1RSQUlUU19GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0NPTlZFUlNJT05fVFJBSVRTX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC91ZHRfYnVpbHRpbl9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2lzX3N1YnJhbmdlZC5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBDb252ZXJzaW9uIFRyYWl0cyBmb3IgVCAhPSBTCi0gIC8vCi0gIC8vIFRoaXMgaXMgYSBWSVNJQkxFIGJhc2UgY2xhc3Mgb2YgdGhlIHVzZXItbGV2ZWwgY29udmVyc2lvbl90cmFpdHM8PiBjbGFzcy4KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IG5vbl90cml2aWFsX3RyYWl0c19pbXBsCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9pbnRfZmxvYXRfbWl4dHVyZSAgIDxULFM+Ojp0eXBlIGludF9mbG9hdF9taXh0dXJlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9zaWduX21peHR1cmUgICAgICAgIDxULFM+Ojp0eXBlIHNpZ25fbWl4dHVyZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfdWR0X2J1aWx0aW5fbWl4dHVyZSA8VCxTPjo6dHlwZSB1ZHRfYnVpbHRpbl9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2lzX3N1YnJhbmdlZDxULFM+Ojp0eXBlIHN1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIHRyaXZpYWwgOwotCi0gICAgdHlwZWRlZiBUIHRhcmdldF90eXBlIDsKLSAgICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotICAgIHR5cGVkZWYgVCByZXN1bHRfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPCBpc19hcml0aG1ldGljPFM+LCBTLCBTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHN1YnJhbmdlZCxTLFQ+Ojp0eXBlIHN1cGVydHlwZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxzdWJyYW5nZWQsVCxTPjo6dHlwZSBzdWJ0eXBlICAgOwotICB9IDsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIENvbnZlcnNpb24gVHJhaXRzIGZvciBUID09IFMKLSAgLy8KLSAgLy8gVGhpcyBpcyBhIFZJU0lCTEUgYmFzZSBjbGFzcyBvZiB0aGUgdXNlci1sZXZlbCBjb252ZXJzaW9uX3RyYWl0czw+IGNsYXNzLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgdGVtcGxhdGU8Y2xhc3MgTj4KLSAgc3RydWN0IHRyaXZpYWxfdHJhaXRzX2ltcGwKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludF9mbG9hdF9taXh0dXJlICA8TixOPjo6dHlwZSBpbnRfZmxvYXRfbWl4dHVyZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfc2lnbl9taXh0dXJlICAgICAgIDxOLE4+Ojp0eXBlIHNpZ25fbWl4dHVyZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfdWR0X2J1aWx0aW5fbWl4dHVyZTxOLE4+Ojp0eXBlIHVkdF9idWlsdGluX21peHR1cmUgOwotCi0gICAgdHlwZWRlZiBtcGw6OmZhbHNlXyBzdWJyYW5nZWQgOwotICAgIHR5cGVkZWYgbXBsOjp0cnVlXyAgdHJpdmlhbCA7Ci0KLSAgICB0eXBlZGVmIE4gICAgICAgIHRhcmdldF90eXBlIDsKLSAgICB0eXBlZGVmIE4gICAgICAgIHNvdXJjZV90eXBlIDsKLSAgICB0eXBlZGVmIE4gY29uc3QmIHJlc3VsdF90eXBlIDsKLSAgICB0eXBlZGVmIE4gY29uc3QmIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgdHlwZWRlZiBOIHN1cGVydHlwZSA7Ci0gICAgdHlwZWRlZiBOIHN1YnR5cGUgIDsKLQotICB9IDsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gVG9wIGxldmVsIGltcGxlbWVudGF0aW9uIHNlbGVjdG9yLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUz4KLSAgc3RydWN0IGdldF9jb252ZXJzaW9uX3RyYWl0cwotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgdGFyZ2V0X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFM+Ojp0eXBlIHNvdXJjZV90eXBlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXNfc2FtZTx0YXJnZXRfdHlwZSxzb3VyY2VfdHlwZT46OnR5cGUgaXNfdHJpdmlhbCA7Ci0KLSAgICB0eXBlZGVmIHRyaXZpYWxfdHJhaXRzX2ltcGwgICAgPHRhcmdldF90eXBlPiAgICAgICAgICAgICB0cml2aWFsX2ltcCA7Ci0gICAgdHlwZWRlZiBub25fdHJpdmlhbF90cmFpdHNfaW1wbDx0YXJnZXRfdHlwZSxzb3VyY2VfdHlwZT4gbm9uX3RyaXZpYWxfaW1wIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfdHJpdmlhbCx0cml2aWFsX2ltcCxub25fdHJpdmlhbF9pbXA+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MDk5ZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MDIgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfQ09OVkVSVEVSX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfQ09OVkVSVEVSX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vYm91bmRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vIEludGVncmFsIENvbnN0YW50cyByZXByZXNlbnRpbmcgcm91bmRpbmcgbW9kZXMKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfemVybz4gICAgICAgICByb3VuZDJ6ZXJvX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3RvX25lYXJlc3Q+ICAgICAgICAgIHJvdW5kMm5lYXJlc3RfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX2luZmluaXR5PiAgICAgcm91bmQyaW5mX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3Rvd2FyZF9uZWdfaW5maW5pdHk+IHJvdW5kMm5lZ19pbmZfYyA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGZvcl9yb3VuZF9zdHlsZTxSb3VuZFN0eWxlLFJvdW5kVG9aZXJvLFJvdW5kVG9OZWFyZXN0LFJvdW5kVG9JbmYsUm91bmRUb05lZ0luZj46OnR5cGUKLSAgLy8KLSAgLy8ge1JvdW5kU3R5bGV9IEludGVncmFsIENvbnN0YW50IHNwZWNpZnlpbmcgYSByb3VuZCBzdHlsZSBhcyBkZWNsYXJlZCBhYm92ZS4KLSAgLy8ge1JvdW5kVG9aZXJvLFJvdW5kVG9OZWFyZXN0LFJvdW5kVG9JbmYsUm91bmRUb05lZ0luZn0gYXJiaXRyYXJ5IHR5cGVzLgotICAvLwotICAvLyBTZWxlY3RzIG9uZSBvZiB0aGUgNCB0eXBlcyBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIFJvdW5kU3R5bGUuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFJvdW5kU3R5bGUsY2xhc3MgUm91bmRUb1plcm8sY2xhc3MgUm91bmRUb05lYXJlc3QsY2xhc3MgUm91bmRUb0luZixjbGFzcyBSb3VuZFRvTmVnSW5mPgotICBzdHJ1Y3QgZm9yX3JvdW5kX3N0eWxlCi0gIHsKLSAgICB0eXBlZGVmIGN0X3N3aXRjaDQ8Um91bmRTdHlsZQotICAgICAgICAgICAgICAgICAgICAgICAsIHJvdW5kMnplcm9fYywgcm91bmQybmVhcmVzdF9jLCByb3VuZDJpbmZfYyAvLyByb3VuZDJuZWdfaW5mX2MKLSAgICAgICAgICAgICAgICAgICAgICAgLCBSb3VuZFRvWmVybyAsIFJvdW5kVG9OZWFyZXN0ICwgUm91bmRUb0luZiAsIFJvdW5kVG9OZWdJbmYKLSAgICAgICAgICAgICAgICAgICAgICA+IHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIENoZWNraW5nIExvZ2ljLgotLy8KLS8vIFRoZSByYW5nZSBjaGVja2luZyBsb2dpYyBpcyBidWlsdCB1cCBieSBjb21iaW5pbmcgMSBvciAyIHByZWRpY2F0ZXMuCi0vLyBFYWNoIHByZWRpY2F0ZSBpcyBlbmNhcHN1bGF0ZWQgaW4gYSB0ZW1wbGF0ZSBjbGFzcyBhbmQgZXhwb3NlcwotLy8gdGhlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gJ2FwcGx5Jy4KLS8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotICAvLyBCZWNhdXNlIGEgcGFydGljdWxhciBsb2dpYyBjYW4gY29tYmluZSBlaXRoZXIgMSBvciB0d28gcHJlZGljYXRlcywgdGhlIGZvbGxvd2luZwotICAvLyB0YWdzIGFyZSB1c2VkIHRvIGFsbG93IHRoZSBwcmVkaWNhdGUgYXBwbGllciB0byByZWNlaXZlIDIgcHJlZHMsIGJ1dCBvcHRpbWl6ZSBhd2F5Ci0gIC8vIG9uZSBvZiB0aGVtIGlmIGl0IGlzICdub24tYXBwbGljYWJsZScKLSAgc3RydWN0IG5vbl9hcHBsaWNhYmxlIHsgdHlwZWRlZiBtcGw6OmZhbHNlXyBkb19hcHBseSA7IH0gOwotICBzdHJ1Y3QgYXBwbGljYWJsZSAgICAgeyB0eXBlZGVmIG1wbDo6dHJ1ZV8gIGRvX2FwcGx5IDsgfSA7Ci0KLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIENoZWNraW5nIExvZ2ljIGltcGxlbWVudGF0aW9ucy4KLSAgLy8KLSAgLy8gVGhlIGZvbGxvd2luZyBjbGFzc2VzLCBjb2xsZWN0aXZlbGx5IG5hbWVkICdQcmVkaWNhdGVzJywgYXJlIGluc3RhbnRpYXRlZCB3aXRoaW4KLSAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgcmFuZ2UgY2hlY2tlcnMuCi0gIC8vIFRoZWlyIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gJ2FwcGx5JyBpcyBjYWxsZWQgdG8gcGVyZm9ybSB0aGUgYWN0dWFsIHJhbmdlIGNoZWNraW5nIGxvZ2ljLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBzIDwgTG93ZXN0KFQpID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTFRfTG9UIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPCBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46Omxvd2VzdCgpKSA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPCAwID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTFRfWmVybyA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzIDwgc3RhdGljX2Nhc3Q8Uz4oMCkgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzIDw9IExvd2VzdChUKS0xID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTEVfUHJldkxvVCA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzIDw9IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6bG93ZXN0KCkpIC0gc3RhdGljX2Nhc3Q8Uz4oMS4wKQotICAgICAgICAgICAgICAgICA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPCBMb3dlc3QoVCktMC41ID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTFRfSGFsZlByZXZMb1QgOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA8IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6bG93ZXN0KCkpIC0gc3RhdGljX2Nhc3Q8Uz4oMC41KQotICAgICAgICAgICAgICAgICA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPiBIaWdoZXN0KFQpID8gY1Bvc092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgR1RfSGlUIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPiBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46OmhpZ2hlc3QoKSkKLSAgICAgICAgICAgICAgICAgPyBjUG9zT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzID49IExvd2VzdChUKSArIDEgPyBjUG9zT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBHRV9TdWNjSGlUIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPj0gc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+OjpoaWdoZXN0KCkpICsgc3RhdGljX2Nhc3Q8Uz4oMS4wKQotICAgICAgICAgICAgICAgICA/IGNQb3NPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPj0gTG93ZXN0KFQpICsgMC41ID8gY1Bvc2dPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IEdUX0hhbGZTdWNjSGlUIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPj0gc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+OjpoaWdoZXN0KCkpICsgc3RhdGljX2Nhc3Q8Uz4oMC41KQotICAgICAgICAgICAgICAgICA/IGNQb3NPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8KLSAgLy8gUHJlZGljYXRlIENvbWJpbmVyLgotICAvLwotICAvLyBUaGlzIGhlbHBlciBjbGFzc2VzIGFyZSB1c2VkIHRvIHBvc3NpYmx5IGNvbWJpbmUgdGhlIHJhbmdlIGNoZWNraW5nIGxvZ2ljCi0gIC8vIGluZGl2aWR1YWxseSBwZXJmb3JtZWQgYnkgdGhlIHByZWRpY2F0ZXMKLSAgLy8KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLSAgICAvLyBBcHBsaWVzIGJvdGggcHJlZGljYXRlczogZmlyc3QgJ1ByZWRBJywgYW5kIGlmIGl0IGVxdWFscyAnY0luUmFuZ2UnLCAnUHJlZEInCi0gICAgdGVtcGxhdGU8Y2xhc3MgUHJlZEEsIGNsYXNzIFByZWRCPgotICAgIHN0cnVjdCBhcHBseUJvdGgKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFByZWRBOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmFuZ2VfY2hlY2tfcmVzdWx0IHIgPSBQcmVkQTo6YXBwbHkocykgOwotICAgICAgICBpZiAoIHIgPT0gY0luUmFuZ2UgKQotICAgICAgICAgIHIgPSBQcmVkQjo6YXBwbHkocyk7Ci0gICAgICAgIHJldHVybiByIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFByZWRBLCBjbGFzcyBQcmVkQj4KLSAgICBzdHJ1Y3QgY29tYmluZQotICAgIHsKLSAgICAgIHR5cGVkZWYgYXBwbHlCb3RoPFByZWRBLFByZWRCPiBCb3RoIDsKLSAgICAgIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAgICBOTm9uZSA7IC8vICdOb25lJyBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gaW4gKC91c3IvWDExUjYvaW5jbHVkZS9YMTEvWC5oKQotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFByZWRBOjpkb19hcHBseSBkb19hcHBseUEgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBQcmVkQjo6ZG9fYXBwbHkgZG9fYXBwbHlCIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JfYm90aDxkb19hcHBseUEsIGRvX2FwcGx5QiwgQm90aCwgUHJlZEEsIFByZWRCLCBOTm9uZT46OnR5cGUgdHlwZSA7Ci0gICAgfSA7Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgQ2hlY2tlciBjbGFzc2VzLgotLy8KLS8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgVklTSUJMRSBiYXNlIGNsYXNzZXMgb2YgdGhlIHVzZXItbGV2ZWwgY29udmVydGVyPD4gY2xhc3MuCi0vLyBUaGV5IHN1cHBseSB0aGUgb3B0aW1pemVkICdvdXRfb2ZfcmFuZ2UoKScgYW5kICd2YWxpZGF0ZV9yYW5nZSgpJyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucwotLy8gdmlzaWJsZSBpbiB0aGUgdXNlciBpbnRlcmZhY2UuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIC8vIER1bW15IHJhbmdlIGNoZWNrZXIuCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgc3RydWN0IGR1bW15X3JhbmdlX2NoZWNrZXIKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBvdXRfb2ZfcmFuZ2UgKCBhcmd1bWVudF90eXBlICkgeyByZXR1cm4gY0luUmFuZ2UgOyB9Ci0gICAgc3RhdGljIHZvaWQgdmFsaWRhdGVfcmFuZ2UgKCBhcmd1bWVudF90eXBlICkge30KLSAgfSA7Ci0KLSAgLy8gR2VuZXJpYyByYW5nZSBjaGVja2VyLgotICAvLwotICAvLyBBbGwgdGhlIHJhbmdlIGNoZWNraW5nIGxvZ2ljIGZvciBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIG9mIHNvdXJjZSBhbmQgdGFyZ2V0Ci0gIC8vIGNhbiBiZSBhcnJhbmdlZCBpbiB0ZXJtcyBvZiBvbmUgb3IgdHdvIHByZWRpY2F0ZXMsIHdoaWNoIHRlc3Qgb3ZlcmZsb3cgb24gYm90aCBuZWcvcG9zICdzaWRlcycKLSAgLy8gb2YgdGhlIHJhbmdlcy4KLSAgLy8KLSAgLy8gVGhlc2UgcHJlZGljYXRlcyBhcmUgZ2l2ZW4gaGVyZSBhcyBJc05lZ092ZXJmbG93IGFuZCBJc1Bvc092ZXJmbG93LgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIElzTmVnT3ZlcmZsb3csIGNsYXNzIElzUG9zT3ZlcmZsb3csIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IGdlbmVyaWNfcmFuZ2VfY2hlY2tlcgotICB7Ci0gICAgdHlwZWRlZiBPdmVyZmxvd0hhbmRsZXIgb3ZlcmZsb3dfaGFuZGxlciA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgb3V0X29mX3JhbmdlICggYXJndW1lbnRfdHlwZSBzICkKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGNvbWJpbmU8SXNOZWdPdmVyZmxvdyxJc1Bvc092ZXJmbG93Pjo6dHlwZSBQcmVkaWNhdGUgOwotCi0gICAgICByZXR1cm4gUHJlZGljYXRlOjphcHBseShzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZV9yYW5nZSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7IE92ZXJmbG93SGFuZGxlcigpKCBvdXRfb2ZfcmFuZ2UocykgKSA7IH0KLSAgfSA7Ci0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gU2VsZWN0b3JzIGZvciB0aGUgb3B0aW1pemVkIFJhbmdlIENoZWNrZXIgY2xhc3MuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19TaWcyU2lnX29yX1Vuc2lnMlVuc2lnCi0gIHsKLSAgICB0eXBlZGVmIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPiBEdW1teSA7Ci0KLSAgICB0eXBlZGVmIExUX0xvVDxUcmFpdHM+IFByZWQxIDsKLSAgICB0eXBlZGVmIEdUX0hpVDxUcmFpdHM+IFByZWQyIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IE5vcm1hbCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c3VicmFuZ2VkIHN1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHN1YnJhbmdlZCxOb3JtYWwsRHVtbXk+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IEdldFJDX1NpZzJVbnNpZwotICB7Ci0gICAgdHlwZWRlZiBMVF9aZXJvPFRyYWl0cz4gUHJlZDEgOwotICAgIHR5cGVkZWYgR1RfSGlUIDxUcmFpdHM+IFByZWQyIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IENob2ljZUEgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQxLG5vbl9hcHBsaWNhYmxlLE92ZXJmbG93SGFuZGxlcj4gQ2hvaWNlQiA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdWJyYW5nZWRfVW5zaWcyU2lnPFMsVD46OnR5cGUgb3Bvc2l0ZV9zdWJyYW5nZWQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5vdF88b3Bvc2l0ZV9zdWJyYW5nZWQ+Ojp0eXBlIHBvc2l0aXZlbHlfc3VicmFuZ2VkIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88cG9zaXRpdmVseV9zdWJyYW5nZWQsQ2hvaWNlQSxDaG9pY2VCPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19VbnNpZzJTaWcKLSAgewotICAgIHR5cGVkZWYgR1RfSGlUPFRyYWl0cz4gUHJlZDEgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLG5vbl9hcHBsaWNhYmxlLFByZWQxLE92ZXJmbG93SGFuZGxlcj4gdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19JbnQySW50Ci0gIHsKLSAgICB0eXBlZGVmIEdldFJDX1NpZzJTaWdfb3JfVW5zaWcyVW5zaWc8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gU2lnMlNpZ1EgICAgIDsKLSAgICB0eXBlZGVmIEdldFJDX1NpZzJVbnNpZyAgICAgICAgICAgICA8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gU2lnMlVuc2lnUSAgIDsKLSAgICB0eXBlZGVmIEdldFJDX1Vuc2lnMlNpZyAgICAgICAgICAgICA8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gVW5zaWcyU2lnUSAgIDsKLSAgICB0eXBlZGVmIFNpZzJTaWdRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5zaWcyVW5zaWdRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzaWduX21peHR1cmUgc2lnbl9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9zaWduX21peHR1cmU8c2lnbl9taXh0dXJlLFNpZzJTaWdRLFNpZzJVbnNpZ1EsVW5zaWcyU2lnUSxVbnNpZzJVbnNpZ1E+Ojp0eXBlCi0gICAgICAgIHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgc3RydWN0IEdldFJDX0ludDJGbG9hdAotICB7Ci0gICAgdHlwZWRlZiBkdW1teV9yYW5nZV9jaGVja2VyPFRyYWl0cz4gdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCBjbGFzcyBGbG9hdDJJbnRSb3VuZGVyPgotICBzdHJ1Y3QgR2V0UkNfRmxvYXQySW50Ci0gIHsKLSAgICB0eXBlZGVmIExFX1ByZXZMb1QgICAgPFRyYWl0cz4gUHJlZDEgOwotICAgIHR5cGVkZWYgR0VfU3VjY0hpVCAgICA8VHJhaXRzPiBQcmVkMiA7Ci0gICAgdHlwZWRlZiBMVF9IYWxmUHJldkxvVDxUcmFpdHM+IFByZWQzIDsKLSAgICB0eXBlZGVmIEdUX0hhbGZTdWNjSGlUPFRyYWl0cz4gUHJlZDQgOwotICAgIHR5cGVkZWYgR1RfSGlUICAgICAgICA8VHJhaXRzPiBQcmVkNSA7Ci0gICAgdHlwZWRlZiBMVF9Mb1QgICAgICAgIDxUcmFpdHM+IFByZWQ2IDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IFRvWmVybyAgICA7Ci0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQzLFByZWQ0LE92ZXJmbG93SGFuZGxlcj4gVG9OZWFyZXN0IDsKLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDEsUHJlZDUsT3ZlcmZsb3dIYW5kbGVyPiBUb0luZiAgICAgOwotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkNixQcmVkMixPdmVyZmxvd0hhbmRsZXI+IFRvTmVnSW5mICA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZsb2F0MkludFJvdW5kZXI6OnJvdW5kX3N0eWxlIHJvdW5kX3N0eWxlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZm9yX3JvdW5kX3N0eWxlPHJvdW5kX3N0eWxlLFRvWmVybyxUb05lYXJlc3QsVG9JbmYsVG9OZWdJbmY+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IEdldFJDX0Zsb2F0MkZsb2F0Ci0gIHsKLSAgICB0eXBlZGVmIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPiBEdW1teSA7Ci0KLSAgICB0eXBlZGVmIExUX0xvVDxUcmFpdHM+IFByZWQxIDsKLSAgICB0eXBlZGVmIEdUX0hpVDxUcmFpdHM+IFByZWQyIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IE5vcm1hbCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c3VicmFuZ2VkIHN1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHN1YnJhbmdlZCxOb3JtYWwsRHVtbXk+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlciwgY2xhc3MgRmxvYXQySW50Um91bmRlcj4KLSAgc3RydWN0IEdldFJDX0J1aWx0SW4yQnVpbHRJbgotICB7Ci0gICAgdHlwZWRlZiBHZXRSQ19JbnQySW50PFRyYWl0cyxPdmVyZmxvd0hhbmRsZXI+ICAgICAgICAgICAgICAgICAgICBJbnQySW50USA7Ci0gICAgdHlwZWRlZiBHZXRSQ19JbnQyRmxvYXQ8VHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQyRmxvYXRRIDsKLSAgICB0eXBlZGVmIEdldFJDX0Zsb2F0MkludDxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyLEZsb2F0MkludFJvdW5kZXI+IEZsb2F0MkludFEgOwotICAgIHR5cGVkZWYgR2V0UkNfRmxvYXQyRmxvYXQ8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gICAgICAgICAgICAgICAgRmxvYXQyRmxvYXRRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjppbnRfZmxvYXRfbWl4dHVyZSBpbnRfZmxvYXRfbWl4dHVyZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGZvcl9pbnRfZmxvYXRfbWl4dHVyZTxpbnRfZmxvYXRfbWl4dHVyZSwgSW50MkludFEsIEludDJGbG9hdFEsIEZsb2F0MkludFEsIEZsb2F0MkZsb2F0UT46OnR5cGUgc2VsZWN0b3IgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIGNsYXNzIEZsb2F0MkludFJvdW5kZXI+Ci0gIHN0cnVjdCBHZXRSQwotICB7Ci0gICAgdHlwZWRlZiBHZXRSQ19CdWlsdEluMkJ1aWx0SW48VHJhaXRzLE92ZXJmbG93SGFuZGxlcixGbG9hdDJJbnRSb3VuZGVyPiBCdWlsdEluMkJ1aWx0SW5RIDsKLQotICAgIHR5cGVkZWYgZHVtbXlfcmFuZ2VfY2hlY2tlcjxUcmFpdHM+IER1bW15IDsKLQotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxEdW1teT4gRHVtbXlRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp1ZHRfYnVpbHRpbl9taXh0dXJlIHVkdF9idWlsdGluX21peHR1cmUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JfdWR0X2J1aWx0aW5fbWl4dHVyZTx1ZHRfYnVpbHRpbl9taXh0dXJlLEJ1aWx0SW4yQnVpbHRJblEsRHVtbXlRLER1bW15USxEdW1teVE+Ojp0eXBlIHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydGVyIGNsYXNzZXMuCi0vLwotLy8gVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBWSVNJQkxFIGJhc2UgY2xhc3NlcyBvZiB0aGUgdXNlci1sZXZlbCBjb252ZXJ0ZXI8PiBjbGFzcy4KLS8vIFRoZXkgc3VwcGx5IHRoZSBvcHRpbWl6ZWQgJ25lYXJieWludCgpJyBhbmQgJ2NvbnZlcnQoKScgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMKLS8vIHZpc2libGUgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLgotLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLwotICAvLyBUcml2aWFsIENvbnZlcnRlciA6IHVzZWQgd2hlbiAoY3YtdW5xdWFsaWZpZWQpIFQgPT0gKGN2LXVucXVhbGlmaWVkKSAgUwotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gIHN0cnVjdCB0cml2aWFsX2NvbnZlcnRlcl9pbXBsIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248ICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6YXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OnJlc3VsdF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPgotICB7Ci0gICAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSAgIHNvdXJjZV90eXBlICAgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gICAgc3RhdGljIHJlc3VsdF90eXBlIGxvd19sZXZlbF9jb252ZXJ0ICggYXJndW1lbnRfdHlwZSBzICkgeyByZXR1cm4gcyA7IH0KLSAgICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICAgICAgICAgKCBhcmd1bWVudF90eXBlIHMgKSB7IHJldHVybiBzIDsgfQotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBjb252ZXJ0ICAgICAgICAgICAoIGFyZ3VtZW50X3R5cGUgcyApIHsgcmV0dXJuIHMgOyB9Ci0gIH0gOwotCi0KLSAgLy8KLSAgLy8gUm91bmRpbmcgQ29udmVydGVyIDogdXNlZCBmb3IgZmxvYXQgdG8gaW50ZWdyYWwgY29udmVyc2lvbnMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBSYW5nZUNoZWNrZXIsY2xhc3MgUmF3Q29udmVydGVyLGNsYXNzIEZsb2F0MkludFJvdW5kZXI+Ci0gIHN0cnVjdCByb3VuZGluZ19jb252ZXJ0ZXIgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjwgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjphcmd1bWVudF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjpyZXN1bHRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgUmFuZ2VDaGVja2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgRmxvYXQySW50Um91bmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIFJhd0NvbnZlcnRlcgotICB7Ci0gICAgdHlwZWRlZiBSYW5nZUNoZWNrZXIgICAgIFJhbmdlQ2hlY2tlckJhc2UgOwotICAgIHR5cGVkZWYgRmxvYXQySW50Um91bmRlciBGbG9hdDJJbnRSb3VuZGVyQmFzZSA7Ci0gICAgdHlwZWRlZiBSYXdDb252ZXJ0ZXIgICAgIFJhd0NvbnZlcnRlckJhc2UgOwotCi0gICAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSAgIHNvdXJjZV90eXBlICAgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gICAgc3RhdGljIHJlc3VsdF90eXBlIGNvbnZlcnQgKCBhcmd1bWVudF90eXBlIHMgKQotICAgIHsKLSAgICAgIFJhbmdlQ2hlY2tlckJhc2U6OnZhbGlkYXRlX3JhbmdlKHMpOwotICAgICAgc291cmNlX3R5cGUgczEgPSBGbG9hdDJJbnRSb3VuZGVyQmFzZTo6bmVhcmJ5aW50KHMpOwotICAgICAgcmV0dXJuIFJhd0NvbnZlcnRlckJhc2U6Omxvd19sZXZlbF9jb252ZXJ0KHMxKTsKLSAgICB9Ci0gIH0gOwotCi0KLSAgLy8KLSAgLy8gTm9uLVJvdW5kaW5nIENvbnZlcnRlciA6IHVzZWQgZm9yIGFsbCBvdGhlciBjb252ZXJzaW9ucy4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLGNsYXNzIFJhbmdlQ2hlY2tlcixjbGFzcyBSYXdDb252ZXJ0ZXI+Ci0gIHN0cnVjdCBub25fcm91bmRpbmdfY29udmVydGVyIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjphcmd1bWVudF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjpyZXN1bHRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIFJhbmdlQ2hlY2tlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHB1YmxpYyBSYXdDb252ZXJ0ZXIKLSAgewotICAgIHR5cGVkZWYgUmFuZ2VDaGVja2VyIFJhbmdlQ2hlY2tlckJhc2UgOwotICAgIHR5cGVkZWYgUmF3Q29udmVydGVyIFJhd0NvbnZlcnRlckJhc2UgOwotCi0gICAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSAgIHNvdXJjZV90eXBlICAgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gICAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApIHsgcmV0dXJuIHMgOyB9Ci0KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgY29udmVydCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgewotICAgICAgUmFuZ2VDaGVja2VyQmFzZTo6dmFsaWRhdGVfcmFuZ2Uocyk7Ci0gICAgICByZXR1cm4gUmF3Q29udmVydGVyQmFzZTo6bG93X2xldmVsX2NvbnZlcnQocyk7Ci0gICAgfQotICB9IDsKLQotCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIFNlbGVjdG9ycyBmb3IgdGhlIG9wdGltaXplZCBDb252ZXJ0ZXIgY2xhc3MuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBPdmVyZmxvd0hhbmRsZXIsY2xhc3MgRmxvYXQySW50Um91bmRlcixjbGFzcyBSYXdDb252ZXJ0ZXIsIGNsYXNzIFVzZXJSYW5nZUNoZWNrZXI+Ci0gIHN0cnVjdCBnZXRfbm9uX3RyaXZpYWxfY29udmVydGVyCi0gIHsKLSAgICB0eXBlZGVmIEdldFJDPFRyYWl0cyxPdmVyZmxvd0hhbmRsZXIsRmxvYXQySW50Um91bmRlcj4gSW50ZXJuYWxSYW5nZUNoZWNrZXJRIDsKLQotICAgIHR5cGVkZWYgaXNfc2FtZTxVc2VyUmFuZ2VDaGVja2VyLFVzZUludGVybmFsUmFuZ2VDaGVja2VyPiB1c2VfaW50ZXJuYWxfUkMgOwotCi0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFVzZXJSYW5nZUNoZWNrZXI+IFVzZXJSYW5nZUNoZWNrZXJRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIG1wbDo6ZXZhbF9pZjx1c2VfaW50ZXJuYWxfUkMsSW50ZXJuYWxSYW5nZUNoZWNrZXJRLFVzZXJSYW5nZUNoZWNrZXJRPjo6dHlwZQotICAgICAgICBSYW5nZUNoZWNrZXIgOwotCi0gICAgdHlwZWRlZiBub25fcm91bmRpbmdfY29udmVydGVyPFRyYWl0cyxSYW5nZUNoZWNrZXIsUmF3Q29udmVydGVyPiAgICAgICAgICAgICAgTm9uUm91bmRpbmcgOwotICAgIHR5cGVkZWYgcm91bmRpbmdfY29udmVydGVyPFRyYWl0cyxSYW5nZUNoZWNrZXIsUmF3Q29udmVydGVyLEZsb2F0MkludFJvdW5kZXI+IFJvdW5kaW5nIDsKLQotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxOb25Sb3VuZGluZz4gTm9uUm91bmRpbmdRIDsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8Um91bmRpbmc+ICAgIFJvdW5kaW5nUSAgICA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6aW50X2Zsb2F0X21peHR1cmUgaW50X2Zsb2F0X21peHR1cmUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZm9yX2ludF9mbG9hdF9taXh0dXJlPGludF9mbG9hdF9taXh0dXJlLCBOb25Sb3VuZGluZ1EsIE5vblJvdW5kaW5nUSwgUm91bmRpbmdRLCBOb25Sb3VuZGluZ1E+Ojp0eXBlCi0gICAgICAgIHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPCBjbGFzcyBUcmFpdHMKLSAgICAgICAgICAgLGNsYXNzIE92ZXJmbG93SGFuZGxlcgotICAgICAgICAgICAsY2xhc3MgRmxvYXQySW50Um91bmRlcgotICAgICAgICAgICAsY2xhc3MgUmF3Q29udmVydGVyCi0gICAgICAgICAgICxjbGFzcyBVc2VyUmFuZ2VDaGVja2VyCi0gICAgICAgICAgPgotICBzdHJ1Y3QgZ2V0X2NvbnZlcnRlcl9pbXBsCi0gIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDA1NjEgKSApCi0gICAgLy8gYmNjNTUgcHJlZmVycyBzb21ldGltZXMgdGVtcGxhdGUgcGFyYW1ldGVycyB0byBiZSBleHBsaWNpdCBsb2NhbCB0eXBlcy4KLSAgICAvLyAobm90aWNlIHRoYXQgaXMgaXMgaWxsZWdhbCB0byByZXVzZSB0aGUgbmFtZXMgbGlrZSB0aGlzKQotICAgIHR5cGVkZWYgVHJhaXRzICAgICAgICAgICBUcmFpdHMgOwotICAgIHR5cGVkZWYgT3ZlcmZsb3dIYW5kbGVyICBPdmVyZmxvd0hhbmRsZXIgOwotICAgIHR5cGVkZWYgRmxvYXQySW50Um91bmRlciBGbG9hdDJJbnRSb3VuZGVyIDsKLSAgICB0eXBlZGVmIFJhd0NvbnZlcnRlciAgICAgUmF3Q29udmVydGVyIDsKLSAgICB0eXBlZGVmIFVzZXJSYW5nZUNoZWNrZXIgVXNlclJhbmdlQ2hlY2tlciA7Ci0jZW5kaWYKLQotICAgIHR5cGVkZWYgdHJpdmlhbF9jb252ZXJ0ZXJfaW1wbDxUcmFpdHM+IFRyaXZpYWwgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eSAgICAgICAgPFRyaXZpYWw+IFRyaXZpYWxRIDsKLQotICAgIHR5cGVkZWYgZ2V0X25vbl90cml2aWFsX2NvbnZlcnRlcjwgVHJhaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxPdmVyZmxvd0hhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEZsb2F0MkludFJvdW5kZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFJhd0NvbnZlcnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsVXNlclJhbmdlQ2hlY2tlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gTm9uVHJpdmlhbFEgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRyaXZpYWwgdHJpdmlhbCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZXZhbF9pZjx0cml2aWFsLFRyaXZpYWxRLE5vblRyaXZpYWxRPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaW50X2Zsb2F0X21peHR1cmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxYWM0MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaW50X2Zsb2F0X21peHR1cmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0lOVF9GTE9BVF9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfSU5UX0ZMT0FUX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9pbnRfZmxvYXRfbWl4dHVyZV9lbnVtLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vIEludGVncmFsIENvbnN0YW50cyBmb3IgJ0ludEZsb2F0TWl4dHVyZScKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8aW50X2Zsb2F0X21peHR1cmVfZW51bSwgaW50ZWdyYWxfdG9faW50ZWdyYWw+IGludDJpbnRfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPGludF9mbG9hdF9taXh0dXJlX2VudW0sIGludGVncmFsX3RvX2Zsb2F0PiAgICBpbnQyZmxvYXRfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPGludF9mbG9hdF9taXh0dXJlX2VudW0sIGZsb2F0X3RvX2ludGVncmFsPiAgICBmbG9hdDJpbnRfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPGludF9mbG9hdF9taXh0dXJlX2VudW0sIGZsb2F0X3RvX2Zsb2F0PiAgICAgICBmbG9hdDJmbG9hdF9jIDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZ2V0X2ludF9mbG9hdF9taXh0dXJlPFQsUz46OnR5cGUKLSAgLy8KLSAgLy8gU2VsZWN0cyB0aGUgYXBwcm9wcmlhdGUgSW50LUZsb2F0IE1peHR1cmUgSW50ZWdyYWwgQ29uc3RhbnQgZm9yIHRoZSBjb21iaW5hdGlvbiBULFMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IGdldF9pbnRfZmxvYXRfbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46OmlzX2ludGVnZXIgPiBTX2ludCA7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIgPiBUX2ludCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBmb3JfYm90aDxTX2ludCwgVF9pbnQsIGludDJpbnRfYywgaW50MmZsb2F0X2MsIGZsb2F0MmludF9jLCBmbG9hdDJmbG9hdF9jPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGZvcl9pbnRfZmxvYXRfbWl4dHVyZTxNaXh0dXJlLGludF9pbnQsaW50X2Zsb2F0LGZsb2F0X2ludCxmbG9hdF9mbG9hdD46OnR5cGUKLSAgLy8KLSAgLy8ge01peHR1cmV9IGlzIG9uZSBvZiB0aGUgSW50ZWdyYWwgQ29uc3RhbnRzIGZvciBNaXh0dXJlLCBkZWNsYXJlZCBhYm92ZS4KLSAgLy8ge2ludF9pbnQsaW50X2Zsb2F0LGZsb2F0X2ludCxmbG9hdF9mbG9hdH0gYXJlIGFyaWJ0cmFyeSB0eXBlcy4gKG5vdCBtZXRhZnVuY3Rpb25zKQotICAvLwotICAvLyBBY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mICdJbnRGbG9hdE1peHR1cmUnLCBzZWxlY3RzIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIEludEZsb2F0TWl4dHVyZSwgY2xhc3MgSW50MkludCwgY2xhc3MgSW50MkZsb2F0LCBjbGFzcyBGbG9hdDJJbnQsIGNsYXNzIEZsb2F0MkZsb2F0PgotICBzdHJ1Y3QgZm9yX2ludF9mbG9hdF9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBjdF9zd2l0Y2g0PEludEZsb2F0TWl4dHVyZQotICAgICAgICAgICAgICAgICAsaW50MmludF9jLCBpbnQyZmxvYXRfYywgZmxvYXQyaW50X2MgIC8vIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgLEludDJJbnQgICwgSW50MkZsb2F0ICAsIEZsb2F0MkludCAgLCBGbG9hdDJGbG9hdAotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaXNfc3VicmFuZ2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pc19zdWJyYW5nZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWYxMmMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pc19zdWJyYW5nZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9JU19TVUJSQU5HRURfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9JU19TVUJSQU5HRURfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC91ZHRfYnVpbHRpbl9taXh0dXJlLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGNvbXBpbGUgdGltZSBwcmVkaWNhdGUgIlQgaXMgc3VicmFuZ2VkIgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gZm9yIGludGVncmFsIHRvIGludGVncmFsIGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfU2lnMlVuc2lnCi0gICAgewotICAgICAgLy8gU2lnbmVkIHRvIHVuc2lnbmVkIGNvbnZlcnNpb25zIGFyZSAnc3VicmFuZ2VkJyBiZWNhdXNlIG9mIHBvc3NpYmxlIGxvb3NlCi0gICAgICAvLyBvZiBuZWdhdGl2ZSB2YWx1ZXMuCi0gICAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgdW5zaWduZWQgaW50ZWdyYWwgdG8gc2lnbmVkIGludGVncmFsIGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfVW5zaWcyU2lnCi0gICAgewotICAgICAgIC8vIElNUE9SVEFOVCBOT1RFOgotICAgICAgIC8vCi0gICAgICAgLy8gVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCBzaWduZWQvdW5zaWduZWQgaW50ZWdyYWwgdmFsdWVzIGFyZSByZXByZXNlbnRlZAotICAgICAgIC8vIHN1Y2ggdGhhdDoKLSAgICAgICAvLwotICAgICAgIC8vICBudW1lcmljX2xpbWl0czxzaWduZWQgVD46OmRpZ2l0cyArIDEgPT0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQgVD46OmRpZ2l0cwotICAgICAgIC8vCi0gICAgICAgLy8gVGhlICcrMScgaXMgcmVxdWlyZWQgc2luY2UgbnVtZXJpY19saW1pdHM8Pjo6ZGlnaXRzIGdpdmVzIDEgYml0IGxlc3MgZm9yIHNpZ25lZCBpbnRlZ3JhbCB0eXBlcy4KLSAgICAgICAvLwotICAgICAgIC8vIFRoaXMgZmFjdCBpcyB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgbG9naWM6Ci0gICAgICAgLy8KLSAgICAgICAvLyAgaWYgKCAobnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cysxKSA8ICgyKm51bWVyaWNfbGltaXRzPFM+OjpkaWdpdHMpICkKLSAgICAgICAvLyAgICB0aGVuIHRoZSBjb252ZXJzaW9uIGlzIHN1YnJhbmdlZC4KLSAgICAgICAvLwotCi0gICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6ZGlnaXRzID4gU19kaWdpdHMgOwotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyA+IFRfZGlnaXRzIDsKLQotICAgICAgIC8vIFQgaXMgc2lnbmVkLCBzbyB0YWtlIGRpZ2l0cysxCi0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUX2RpZ2l0czo6bmV4dCB1X1RfZGlnaXRzIDsKLQotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDI+IFR3byA7Ci0KLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bXVsdGlwbGllczxTX2RpZ2l0cyxUd28+Ojp0eXBlIFNfZGlnaXRzX3RpbWVzXzIgOwotCi0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Omxlc3M8dV9UX2RpZ2l0cyxTX2RpZ2l0c190aW1lc18yPjo6dHlwZSB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBpbnRlZ3JhbCB0byBpbnRlZ3JhbCBjb252ZXJzaW9ucyBvZiB0aGUgc2FtZSBzaWduLgotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX1NhbWVTaWduCi0gICAgewotICAgICAgIC8vIEFuIGludGVncmFsIGNvbnZlcnNpb24gb2YgdGhlIHNhbWUgc2lnbiBpcyBzdWJyYW5nZWQgaWYgZGlnaXRzKFQpIDwgZGlnaXRzKFMpLgotCi0gICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6ZGlnaXRzID4gU19kaWdpdHMgOwotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyA+IFRfZGlnaXRzIDsKLQotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpsZXNzPFRfZGlnaXRzLFNfZGlnaXRzPjo6dHlwZSB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBpbnRlZ3JhbCB0byBmbG9hdCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX0ludDJGbG9hdAotICAgIHsKLSAgICAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgZmxvYXQgdG8gaW50ZWdyYWwgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9GbG9hdDJJbnQKLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgZmxvYXQgdG8gZmxvYXQgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9GbG9hdDJGbG9hdAotICAgIHsKLSAgICAgIC8vIElmIGJvdGggVCBhbmQgUyBhcmUgZmxvYXRzLAotICAgICAgLy8gY29tcGFyZSBleHBvbmVudCBiaXRzIGFuZCBpZiB0aGV5IG1hdGNoLCBtYW50aXNhIGJpdHMuCi0KLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46OmRpZ2l0cyA+IFNfbWFudGlzYSA7Ci0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgPiBUX21hbnRpc2EgOwotCi0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+OjptYXhfZXhwb25lbnQgPiBTX2V4cG9uZW50IDsKLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heF9leHBvbmVudCA+IFRfZXhwb25lbnQgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bGVzczxUX2V4cG9uZW50LFNfZXhwb25lbnQ+Ojp0eXBlIFRfc21hbGxlcl9leHBvbmVudCA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjplcXVhbF90bzxUX2V4cG9uZW50LFNfZXhwb25lbnQ+Ojp0eXBlIGVxdWFsX2V4cG9uZW50cyA7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjpsZXNzPFRfbWFudGlzYSxTX21hbnRpc2E+IFRfc21hbGxlcl9tYW50aXNhIDsKLQotICAgICAgdHlwZWRlZiBtcGw6OmV2YWxfaWY8ZXF1YWxfZXhwb25lbnRzLFRfc21hbGxlcl9tYW50aXNhLG1wbDo6ZmFsc2VfPiBub3RfYmlnZ2VyX2V4cG9uZW50X2Nhc2UgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgIG1wbDo6ZXZhbF9pZjxUX3NtYWxsZXJfZXhwb25lbnQsbXBsOjp0cnVlXyxub3RfYmlnZ2VyX2V4cG9uZW50X2Nhc2U+Ojp0eXBlCi0gICAgICAgICAgdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgVWR0IHRvIGJ1aWx0LWluIGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfVWR0MkJ1aWx0SW4KLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgYnVpbHQtaW4gdG8gVWR0IGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfQnVpbHRJbjJVZHQKLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIFVkdCB0byBVZHQgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9VZHQyVWR0Ci0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OmZhbHNlXyB0eXBlIDsKLSAgICB9IDsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gU2VsZWN0b3JzIGZvciB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzdWJyYW5nZWQgcHJlZGljYXRlCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBnZXRfc3VicmFuZ2VkX0ludDJJbnQKLSAgICB7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9TYW1lU2lnbjxULFM+ICBTaWcyU2lnICAgICA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9TaWcyVW5zaWc8VCxTPiBTaWcyVW5zaWcgICA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9VbnNpZzJTaWc8VCxTPiBVbnNpZzJTaWcgICA7Ci0gICAgICB0eXBlZGVmIFNpZzJTaWcgICAgICAgICAgICAgICAgICBVbnNpZzJVbnNpZyA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X3NpZ25fbWl4dHVyZTxULFM+Ojp0eXBlIHNpZ25fbWl4dHVyZSA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgZm9yX3NpZ25fbWl4dHVyZTxzaWduX21peHR1cmUsIFNpZzJTaWcsIFNpZzJVbnNpZywgVW5zaWcyU2lnLCBVbnNpZzJVbnNpZz46OnR5cGUKLSAgICAgICAgICAgdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IGdldF9zdWJyYW5nZWRfQnVpbHRJbjJCdWlsdEluCi0gICAgewotICAgICAgdHlwZWRlZiBnZXRfc3VicmFuZ2VkX0ludDJJbnQ8VCxTPiBJbnQySW50USA7Ci0KLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX0ludDJGbG9hdCAgPFQsUz4gSW50MkZsb2F0ICAgOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfRmxvYXQySW50ICA8VCxTPiBGbG9hdDJJbnQgICA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9GbG9hdDJGbG9hdDxULFM+IEZsb2F0MkZsb2F0IDsKLQotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEludDJGbG9hdCAgPiBJbnQyRmxvYXRRICAgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEZsb2F0MkludCAgPiBGbG9hdDJJbnRRICAgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEZsb2F0MkZsb2F0PiBGbG9hdDJGbG9hdFEgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9pbnRfZmxvYXRfbWl4dHVyZTxULFM+Ojp0eXBlIGludF9mbG9hdF9taXh0dXJlIDsKLQotICAgICAgdHlwZWRlZiBmb3JfaW50X2Zsb2F0X21peHR1cmU8aW50X2Zsb2F0X21peHR1cmUsIEludDJJbnRRLCBJbnQyRmxvYXRRLCBGbG9hdDJJbnRRLCBGbG9hdDJGbG9hdFE+IGZvcl8gOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGZvcl86OnR5cGUgc2VsZWN0ZWQgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdGVkOjp0eXBlIHR5cGUgOwotICAgIH0gOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBnZXRfc3VicmFuZ2VkCi0gICAgewotICAgICAgdHlwZWRlZiBnZXRfc3VicmFuZ2VkX0J1aWx0SW4yQnVpbHRJbjxULFM+IEJ1aWx0SW4yQnVpbHRJblEgOwotCi0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9CdWlsdEluMlVkdDxULFM+IEJ1aWx0SW4yVWR0IDsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX1VkdDJCdWlsdEluPFQsUz4gVWR0MkJ1aWx0SW4gOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfVWR0MlVkdDxULFM+ICAgICBVZHQyVWR0IDsKLQotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEJ1aWx0SW4yVWR0PiBCdWlsdEluMlVkdFEgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFVkdDJCdWlsdEluPiBVZHQyQnVpbHRJblEgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFVkdDJVZHQgICAgPiBVZHQyVWR0USAgICAgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF91ZHRfYnVpbHRpbl9taXh0dXJlPFQsUz46OnR5cGUgdWR0X2J1aWx0aW5fbWl4dHVyZSA7Ci0gICAgICAKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgZm9yX3VkdF9idWlsdGluX21peHR1cmU8dWR0X2J1aWx0aW5fbWl4dHVyZSwgQnVpbHRJbjJCdWlsdEluUSwgQnVpbHRJbjJVZHRRLCBVZHQyQnVpbHRJblEsIFVkdDJVZHRRPjo6dHlwZQotICAgICAgICAgIHNlbGVjdGVkIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RlZDo6dHlwZSBzZWxlY3RlZDIgOwotIAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RlZDI6OnR5cGUgdHlwZSA7Ci0gICAgfSA7Ci0KLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gVG9wIGxldmVsIGltcGxlbWVudGF0aW9uIHNlbGVjdG9yLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUz4KLSAgc3RydWN0IGdldF9pc19zdWJyYW5nZWQKLSAgewotICAgIHR5cGVkZWYgZ2V0X3N1YnJhbmdlZDxULFM+ICAgICAgICAgbm9uX3RyaXZpYWxfY2FzZSA7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PG1wbDo6ZmFsc2VfPiB0cml2aWFsX2Nhc2UgOwotCi0gICAgdHlwZWRlZiBpc19zYW1lPFQsUz4gaXNfdHJpdmlhbCA7Ci0gICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPGlzX3RyaXZpYWwsdHJpdmlhbF9jYXNlLG5vbl90cml2aWFsX2Nhc2U+Ojp0eXBlIHNlbGVjdGVkIDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdGVkOjp0eXBlIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg3YmJiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX01FVEFfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9NRVRBX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lmLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvbm90LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvYW5kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvYm9vbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAgdGVtcGxhdGU8IGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0cnVjdCBlcXVhbF90bwotICAgewotICAgI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSAgIAotICAgICAgIGVudW0geyB4ID0gKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDEpOjp2YWx1ZSA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDIpOjp2YWx1ZSApIH07Ci0gICAgICAgICAgIAotICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHgpOwotICAgICAgICAgICAKLSAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgICAgCi0gICAjZWxzZQotICAgCi0gICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMSk6OnZhbHVlIAotICAgICAgICAgICAgICAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQyKTo6dmFsdWUKLSAgICAgICAgICAgKSk7Ci0gICAgICAgICAgIAotICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzwoCi0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQxKTo6dmFsdWUgCi0gICAgICAgICAgICAgICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDIpOjp2YWx1ZQotICAgICAgICAgICApPiB0eXBlOwotICAgI2VuZGlmCi0gICB9OwotICAgIAotLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGN0X3N3aXRjaDQ8VmFsdWUsQ2FzZTBWYWwsQ2FzZTFWYWwsQ2FzZTJWYWwsQ2FzZTBUeXBlLENhc2UxVHlwZSxDYXNlMlR5cGUsRGVmYXVsdFR5cGU+Ojp0eXBlCi0gIC8vCi0gIC8vIHtWYWx1ZSxDYXNlKFgpVmFsfSBhcmUgSW50ZWdyYWwgQ29uc3RhbnRzIChzdWNoIGFzOiBtcGw6OmludF88PikKLSAgLy8ge0Nhc2UoWClUeXBlLERlZmF1bHRUeXBlfSBhcmUgYXJiaXRyYXJ5IHR5cGVzLiAobm90IG1ldGFmdW5jdGlvbnMpCi0gIC8vCi0gIC8vIFJldHVybnMgQ2FzZShYKVR5cGUgaWYgVmFsPT1DYXNlKFgpVmFsOyBEZWZhdWx0VHlwZSBvdGhlcndpc2UuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFZhbHVlLAotICAgICAgICAgICBjbGFzcyBDYXNlMFZhbCwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTFWYWwsCi0gICAgICAgICAgIGNsYXNzIENhc2UyVmFsLAotICAgICAgICAgICBjbGFzcyBDYXNlMFR5cGUsCi0gICAgICAgICAgIGNsYXNzIENhc2UxVHlwZSwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTJUeXBlLAotICAgICAgICAgICBjbGFzcyBEZWZhdWx0VHlwZQotICAgICAgICAgID4KLSAgc3RydWN0IGN0X3N3aXRjaDQKLSAgewotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxDYXNlMFR5cGU+IENhc2UwVHlwZVEgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxDYXNlMVR5cGU+IENhc2UxVHlwZVEgOwotCi0gICAgdHlwZWRlZiBlcXVhbF90bzxWYWx1ZSxDYXNlMFZhbD4gaXNfY2FzZTAgOwotICAgIHR5cGVkZWYgZXF1YWxfdG88VmFsdWUsQ2FzZTFWYWw+IGlzX2Nhc2UxIDsKLSAgICB0eXBlZGVmIGVxdWFsX3RvPFZhbHVlLENhc2UyVmFsPiBpc19jYXNlMiA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6aWZfPGlzX2Nhc2UyLENhc2UyVHlwZSxEZWZhdWx0VHlwZT4gY2hvb3NlXzJfM1EgOwotICAgIHR5cGVkZWYgbXBsOjpldmFsX2lmPGlzX2Nhc2UxLENhc2UxVHlwZVEsY2hvb3NlXzJfM1E+IGNob29zZV8xXzJfM1EgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgbXBsOjpldmFsX2lmPGlzX2Nhc2UwLENhc2UwVHlwZVEsY2hvb3NlXzFfMl8zUT46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi0KLQotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBmb3JfYm90aDxleHByMCxleHByMSxUVCxURixGVCxGRj46OnR5cGUKLSAgLy8KLSAgLy8ge2V4cDAsZXhwcjF9IGFyZSBCb29sZWFuIEludGVncmFsIENvbnN0YW50cwotICAvLyB7VFQsVEYsRlQsRkZ9IGFyZSBhcmlidHJhcnkgdHlwZXMuIChub3QgbWV0YWZ1bmN0aW9ucykKLSAgLy8KLSAgLy8gQWNjb3JkaW5nIHRvIHRoZSBjb21iaW5lZCBib29sZWFuIHZhbHVlIG9mICdleHByMCAmJiBleHByMScsIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgZXhwcjAsIGNsYXNzIGV4cHIxLCBjbGFzcyBUVCwgY2xhc3MgVEYsIGNsYXNzIEZULCBjbGFzcyBGRj4KLSAgc3RydWN0IGZvcl9ib3RoCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8VEY+IFRGX1EgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxUVD4gVFRfUSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bm90XzxleHByMD46OnR5cGUgbm90X2V4cHIwIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bm90XzxleHByMT46OnR5cGUgbm90X2V4cHIxIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjphbmRfPGV4cHIwLGV4cHIxPjo6dHlwZSAgICAgY2FzZVRUIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6YW5kXzxleHByMCxub3RfZXhwcjE+Ojp0eXBlIGNhc2VURiA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmFuZF88bm90X2V4cHIwLGV4cHIxPjo6dHlwZSBjYXNlRlQgOwotCi0gICAgdHlwZWRlZiBtcGw6OmlmXzxjYXNlRlQsRlQsRkY+ICAgICAgICAgICAgICAgICAgICBjaG9vc2VfRlRfRkZfUSA7Ci0gICAgdHlwZWRlZiBtcGw6OmV2YWxfaWY8Y2FzZVRGLFRGX1EsY2hvb3NlX0ZUX0ZGX1E+IGNob29zZV9URl9GVF9GRl9RIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpldmFsX2lmPGNhc2VUVCxUVF9RLGNob29zZV9URl9GVF9GRl9RPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YmQ5NjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RPTlRfVVNFX1BSRVBST0NFU1NFRF9GSUxFUykKLQotICAgICNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHA+Ci0JCi0JI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xPTkdfTE9ORykKLSAgICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfbG9uZ19sb25nLmhwcD4KLQkjZW5kaWYKLQkKLSNlbHNlCi0jaWYgIU5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCi0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZWxlbS5ocHA+Ci0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0gICAgCi0gICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDIsIGxpbmU6IDAsIG91dHB1dDogInByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHAiKQotICAgICNlbmRpZgotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMgotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0gICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDEpCi0gICAgI2VuZGlmCi0JCi0JLy8hIFRoZXNlIGFyZSB0aGUgYXNzdW1lZCBjb21tb24gYnVpbHQgaW4gZnVuZGFtZW50YWwgdHlwZXMgKG5vdCB0eXBlZGVmcy9tYWNyb3MuKQotCSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JBU0VfQlVJTFRJTl9UWVBFUygpIFwKLSAgICAgICAgKGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodW5zaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHNob3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICh1bnNpZ25lZCBzaG9ydCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoaW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHVuc2lnbmVkIGludCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChsb25nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodW5zaWduZWQgbG9uZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKGZsb2F0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChkb3VibGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAobG9uZyBkb3VibGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKioqLwotCQotICAgICNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BKCkgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JBU0VfQlVJTFRJTl9UWVBFUygpCi0JI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IoKSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQkFTRV9CVUlMVElOX1RZUEVTKCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BKCkpKSwgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+KSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkgICAgCi0KLX19Ly9uYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM7Ci0KLSAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihvdXRwdXQ6IG51bGwpCi0gICAgI2VuZGlmICAgCi0JCi0JI2lmICggZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykgKSB8fCAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkcpCi0JCi0JICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EKLQkgICAgI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQgotCi0JICAgICNpZiBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotICAgICAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMiwgbGluZTogMCwgb3V0cHV0OiAicHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfbG9uZ19sb25nLmhwcCIpCi0gICAgICAgICNlbmRpZgotCi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMS0yMDEyCi0vLyEgQnJhbmRvbiBLb2huCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLSAgICAgICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICAgICAjcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAxKQotICAgICAgICAjZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotCi0gICAgI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EoKSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQkFTRV9CVUlMVElOX1RZUEVTKCkobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKShuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotCSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CKCkgKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLSAgICAKLSAgICAjZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywgKDAsIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EoKSkpLCA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcD4pKQotICAgICNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKSAgICAKLQotfX0vL25hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzsKLQotICAgICAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ob3V0cHV0OiBudWxsKQotICAgICAgICAjZW5kaWYgICAKLQkKLQkjZW5kaWYKLQkJCi0gICAgI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CQVNFX0JVSUxUSU5fVFlQRVMKLQkjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BCi0JI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQgotICAgIAotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgKDMsICgwLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CKCkpKSwgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+KSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0gICAgLy8hIEdlbmVyYXRlIGRlZmF1bHQgdHJhaXRzIGZvciB0aGUgc3BlY2lmaWVkIHNvdXJjZSBhbmQgdGFyZ2V0LgotICAgICNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0EgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0gICAgI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQiBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMikKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0EsIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQSgpKQotICAgICAgICAgICwgTkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0IsIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQigpKQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8TkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0IsIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQigpKT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07ICAgICAKLQotICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQQotICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQgotCi0jZW5kaWYvLyEgRGVwdGggMi4KLSNlbmRpZi8vIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ET05UX1VTRV9QUkVQUk9DRVNTRURfRklMRVMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9vbGRfbnVtZXJpY19jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9vbGRfbnVtZXJpY19jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZjNGNhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvb2xkX251bWVyaWNfY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzkgKzAsMCBAQAotLy8gIGJvb3N0IGNhc3QuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgS2V2bGluIEhlbm5leSBhbmQgRGF2ZSBBYnJhaGFtcyAxOTk5LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29udmVyc2lvbiBmb3IgRG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAyMyBKVU4gMDUgIENvZGUgZXh0cmFjdGVkIGZyb20gL2Jvb3N0L2Nhc3QuaHBwIGludG8gdGhpcyBuZXcgaGVhZGVyLgotLy8gICAgICAgICAgICAgS2VlcHMgdGhpcyBsZWdhY3kgdmVyc2lvbiBvZiBudW1lcmljX2Nhc3Q8PiBmb3Igb2xkIGNvbXBpbGVycwotLy8gICAgICAgICAgICAgd2ljaCBjYW4ndCBjb21waWxlIHRoZSBuZXcgdmVyc2lvbiBpbiAvYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwCi0vLyAgICAgICAgICAgICAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgMDIgQXByIDAxICBSZW1vdmVkIE5ETkJPT1NUX05PX0xJTUlUUyB3b3JrYXJvdW5kcyBhbmQgaW5jbHVkZWQKLS8vICAgICAgICAgICAgIDxuZG5ib29zdC9saW1pdHMuaHBwPiBpbnN0ZWFkICh0aGUgd29ya2Fyb3VuZCBkaWQgbm90Ci0vLyAgICAgICAgICAgICBhY3R1YWxseSBjb21waWxlIHdoZW4gTkROQk9PU1RfTk9fTElNSVRTIHdhcyBkZWZpbmVkIGluCi0vLyAgICAgICAgICAgICBhbnkgY2FzZSwgc28gd2UgbG9vc2Ugbm90aGluZykuIChKb2huIE1hZGRvY2spCi0vLyAgMjEgSmFuIDAxICBVbmRpZCBhIGJ1ZyBJIGludHJvZHVjZWQgeWVzdGVyZGF5LiBudW1lcmljX2Nhc3Q8PiBuZXZlcgotLy8gICAgICAgICAgICAgd29ya2VkIHdpdGggc3RvY2sgR0NDOyB0cnlpbmcgdG8gZ2V0IGl0IHRvIGRvIHRoYXQgYnJva2UKLS8vICAgICAgICAgICAgIHZjLXN0bHBvcnQuCi0vLyAgMjAgSmFuIDAxICBNb3ZlZCBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUyB0byBjb25maWcuaHBwLgotLy8gICAgICAgICAgICAgUmVtb3ZlZCB1bnVzZWQgTkROQk9PU1RfRVhQTElDSVRfVEFSR0VUIG1hY3JvLiBNb3ZlZAotLy8gICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6dHlwZSB0byBuZG5ib29zdC90eXBlLmhwcC4gTWFkZSBpdCBjb21waWxlIHdpdGgKLS8vICAgICAgICAgICAgIHN0b2NrIGdjYyBhZ2FpbiAoRGF2ZSBBYnJhaGFtcykKLS8vICAyOSBOb3YgMDAgIFJlbW92ZSBuZXN0ZWQgbmFtZXNwYWNlIGNhc3QsIGNsZWFudXAgc3BhY2luZyBiZWZvcmUgRm9ybWFsCi0vLyAgICAgICAgICAgICBSZXZpZXcgKEJlbWFuIERhd2VzKQotLy8gIDE5IE9jdCAwMCAgRml4IG51bWVyaWNfY2FzdCBmb3IgZmxvYXRpbmctcG9pbnQgdHlwZXMgKERhdmUgQWJyYWhhbXMpCi0vLyAgMTUgSnVsIDAwICBTdXBwcmVzcyBudW1lcmljX2Nhc3Qgd2FybmluZ3MgZm9yIEdDQywgQm9ybGFuZCBhbmQgTVNWQwotLy8gICAgICAgICAgICAgKERhdmUgQWJyYWhhbXMpCi0vLyAgMzAgSnVuIDAwICBNb3JlIE1TVkM2IHdvcmRhcm91bmRzLiAgU2VlIGNvbW1lbnRzIGJlbG93LiAgKERhdmUgQWJyYWhhbXMpCi0vLyAgMjggSnVuIDAwICBSZW1vdmVkIGltcGxpY2l0X2Nhc3Q8Pi4gIFNlZSBjb21tZW50IGJlbG93LiAoQmVtYW4gRGF3ZXMpCi0vLyAgMjcgSnVuIDAwICBNb3JlIE1TVkM2IHdvcmthcm91bmRzCi0vLyAgMTUgSnVuIDAwICBBZGQgd29ya2Fyb3VuZHMgZm9yIE1TVkM2Ci0vLyAgIDIgRmViIDAwICBSZW1vdmUgYmFkX251bWVyaWNfY2FzdCAiOyIgc3ludGF4IGVycm9yIChEb25jaG8gQW5nZWxvdikKLS8vICAyNiBKYW4gMDAgIEFkZCBtaXNzaW5nIHRocm93KCkgdG8gYmFkX251bWVyaWNfY2FzdDo6d2hhdCgwIChBZGFtIExldmFyKQotLy8gIDI5IERlYyA5OSAgQ2hhbmdlIHVzaW5nIGRlY2xhcmF0aW9ucyBzbyB1c2FnZXMgaW4gb3RoZXIgbmFtZXNwYWNlcyB3b3JrCi0vLyAgICAgICAgICAgICBjb3JyZWN0bHkgKERhdmUgQWJyYWhhbXMpCi0vLyAgMjMgU2VwIDk5ICBDaGFuZ2UgcG9seW1vcnBoaWNfZG93bmNhc3QgYXNzZXJ0IHRvIGFsc28gZGV0ZWN0IE0uSS4gZXJyb3JzCi0vLyAgICAgICAgICAgICBhcyBzdWdnZXN0ZWQgRGFyaW4gQWRsZXIgYW5kIGltcHJvdmVkIGJ5IFZhbGVudGluIEJvbm5hcmQuCi0vLyAgIDIgU2VwIDk5ICBSZW1vdmUgY29udHJvdmVyc2lhbCBhc3NlcnRzLCBzaW1wbGlmeSwgcmVuYW1lLgotLy8gIDMwIEF1ZyA5OSAgTW92ZSB0byBjYXN0LmhwcCwgcmVwbGFjZSB2YWx1ZV9jYXN0IHdpdGggbnVtZXJpY19jYXN0LAotLy8gICAgICAgICAgICAgcGxhY2UgaW4gbmVzdGVkIG5hbWVzcGFjZS4KLS8vICAgMyBBdWcgOTkgIEluaXRpYWwgdmVyc2lvbgotCi0jaWZuZGVmIE5ETkJPT1NUX09MRF9OVU1FUklDX0NBU1RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX09MRF9OVU1FUklDX0NBU1RfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8Y2Fzc2VydD4KLSMgaW5jbHVkZSA8dHlwZWluZm8+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcD4KLQotLy8gIEl0IGhhcyBiZWVuIGRlbW9uc3RyYXRlZCBudW1lcm91cyB0aW1lcyB0aGF0IE1TVkMgNi4wIGZhaWxzIHNpbGVudGx5IGF0IGxpbmsKLS8vICB0aW1lIGlmIHlvdSB1c2UgYSB0ZW1wbGF0ZSBmdW5jdGlvbiB3aGljaCBoYXMgdGVtcGxhdGUgcGFyYW1ldGVycyB0aGF0IGRvbid0Ci0vLyAgYXBwZWFyIGluIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGxpc3QuCi0vLwotLy8gIFRPRE86IEFkZCB0aGlzIHRvIGNvbmZpZy5ocHA/Ci0vLyAgRkxDOiBUaGlzIG1hY3JvIGlzIHJlcGVhdGVkIGluIG5kbmJvb3N0L2Nhc3QuaHBwIGJ1dCBvbmx5IGxvY2FsbHkgKGlzIHVuZGVmaW5lZCBhdCB0aGUgYm90dG9tKQotLy8gICAgICAgc28gaXMgT0sgdG8gcmVwcm9kdWNlIGl0IGhlcmUuCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8IDEzMDAKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9ERUZBVUxUX1RBUkdFVCAsIDo6bmRuYm9vc3Q6OnR5cGU8VGFyZ2V0PiogPSAwCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9ERUZBVUxUX1RBUkdFVAotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgdXNpbmcgbnVtZXJpYzo6YmFkX251bWVyaWNfY2FzdDsKLQotLy8gIExFR0FDWSBudW1lcmljX2Nhc3QgW29ubHkgZm9yIHNvbWUgb2xkIGJyb2tlbiBjb21waWxlcnNdIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvbnRyaWJ1dGVkIGJ5IEtldmxpbiBIZW5uZXkKLQotLy8gIG51bWVyaWNfY2FzdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NHSV9DUFBfTElNSVRTKQotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgc3RydWN0IHNpZ25lZF9udW1lcmljX2xpbWl0cyA6IHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLSAgICAgIHsKLSAgICAgICAgICAgICBzdGF0aWMgaW5saW5lIFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCkgPj0gMAotICAgICAgICAgICAgICAgICAgICAgLy8gdW5hcnkgbWludXMgY2F1c2VzIGludGVncmFsIHByb21vdGlvbiwgdGh1cyB0aGUgc3RhdGljX2Nhc3Q8PgotICAgICAgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxUPigtKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKSkKLSAgICAgICAgICAgICAgICAgICAgIDogKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbikoKTsKLSAgICAgICAgIH07Ci0gICAgICB9OwotCi0gICAgICAvLyBNb3ZlIHRvIG5hbWVzcGFjZSBuZG5ib29zdCBpbiB1dGlsaXR5LmhwcD8KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBib29sIHNwZWNpYWxpemVkPgotICAgICAgc3RydWN0IGZpeGVkX251bWVyaWNfbGltaXRzX2Jhc2UKLSAgICAgICAgICA6IHB1YmxpYyBpZl90cnVlPCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQgPgotICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuPCBzaWduZWRfbnVtZXJpY19saW1pdHM8VD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUPgotICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgIHt9OwotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBmaXhlZF9udW1lcmljX2xpbWl0cwotICAgICAgICAgIDogZml4ZWRfbnVtZXJpY19saW1pdHNfYmFzZTxULChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk+Ci0gICAgICB7fTsKLQotIyBpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICAgICAvLyBjb3ZlciBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggc3VwcGx5IG5vIHNwZWNpYWxpemF0aW9uIGZvciBsb25nCi0gICAgICAvLyBsb25nIC8gdW5zaWduZWQgbG9uZyBsb25nLiBOb3QgaW50ZW5kZWQgdG8gYmUgZnVsbAotICAgICAgLy8gbnVtZXJpY19saW1pdHMgcmVwbGFjZW1lbnRzLCBidXQgZ29vZCBlbm91Z2ggZm9yIG51bWVyaWNfY2FzdDw+Ci0gICAgICB0ZW1wbGF0ZSA8PgotICAgICAgc3RydWN0IGZpeGVkX251bWVyaWNfbGltaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCBmYWxzZT4KLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlKTsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc2lnbmVkID0gdHJ1ZSk7Ci0gICAgICAgICAgc3RhdGljICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICAgICAgICB7Ci0jICBpZmRlZiBMT05HTE9OR19NQVgKLSAgICAgICAgICAgICAgcmV0dXJuIExPTkdMT05HX01BWDsKLSMgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTDsgLy8gaG9wZSB0aGlzIGlzIHBvcnRhYmxlCi0jICBlbmRpZgotICAgICAgICAgIH0KLQotICAgICAgICAgIHN0YXRpYyAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICAgewotIyAgaWZkZWYgTE9OR0xPTkdfTUlOCi0gICAgICAgICAgICAgIHJldHVybiBMT05HTE9OR19NSU47Ci0jICBlbHNlCi0gICAgICAgICAgICAgICByZXR1cm4gLSggOTIyMzM3MjAzNjg1NDc3NTgwN0xMICktMTsgLy8gaG9wZSB0aGlzIGlzIHBvcnRhYmxlCi0jICBlbmRpZgotICAgICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICBzdHJ1Y3QgZml4ZWRfbnVtZXJpY19saW1pdHNfYmFzZTwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCBmYWxzZT4KLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlKTsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc2lnbmVkID0gZmFsc2UpOwotICAgICAgICAgIHN0YXRpYyAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgICAgICAgIHsKLSMgIGlmZGVmIFVMT05HTE9OR19NQVgKLSAgICAgICAgICAgICAgcmV0dXJuIFVMT05HTE9OR19NQVg7Ci0jICBlbHNlCi0gICAgICAgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZmZmZmZmZVTEw7IC8vIGhvcGUgdGhpcyBpcyBwb3J0YWJsZQotIyAgZW5kaWYKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBzdGF0aWMgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgeyByZXR1cm4gMDsgfQotICAgICAgfTsKLSMgZW5kaWYKLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gbGVzc190aGFuX3R5cGVfbWluIC0KLSAgLy8gICAgeF9pc19zaWduZWQgc2hvdWxkIGJlIG51bWVyaWNfbGltaXRzPFg+Ojppc19zaWduZWQKLSAgLy8gICAgeV9pc19zaWduZWQgc2hvdWxkIGJlIG51bWVyaWNfbGltaXRzPFk+Ojppc19zaWduZWQKLSAgLy8gICAgeV9taW4gc2hvdWxkIGJlIG51bWVyaWNfbGltaXRzPFk+OjptaW4oKQotICAvLwotICAvLyAgICBjaGVjayh4LCB5X21pbikgcmV0dXJucyB0cnVlIGlmZiB4IDwgeV9taW4gd2l0aG91dCBpbnZva2luZyBjb21wYXJpc29ucwotICAvLyAgICBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgdmFsdWVzLgotICAvLwotICAvLyAgICAicG9vciBtYW4ncyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIiBpcyBpbiB1c2UgaGVyZS4KLSAgICB0ZW1wbGF0ZSA8Ym9vbCB4X2lzX3NpZ25lZCwgYm9vbCB5X2lzX3NpZ25lZD4KLSAgICBzdHJ1Y3QgbGVzc190aGFuX3R5cGVfbWluCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGJvb2wgY2hlY2soWCB4LCBZIHlfbWluKQotICAgICAgICAgICAgeyByZXR1cm4geCA8IHlfbWluOyB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IGxlc3NfdGhhbl90eXBlX21pbjxmYWxzZSwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgYm9vbCBjaGVjayhYLCBZKQotICAgICAgICAgICAgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbGVzc190aGFuX3R5cGVfbWluPHRydWUsIGZhbHNlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBib29sIGNoZWNrKFggeCwgWSkKLSAgICAgICAgICAgIHsgcmV0dXJuIHggPCAwOyB9Ci0gICAgfTsKLQotICAvLyBncmVhdGVyX3RoYW5fdHlwZV9tYXggLQotICAvLyAgICBzYW1lX3NpZ24gc2hvdWxkIGJlOgotICAvLyAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPFg+Ojppc19zaWduZWQgPT0gbnVtZXJpY19saW1pdHM8WT46OmlzX3NpZ25lZAotICAvLyAgICB5X21heCBzaG91bGQgYmUgbnVtZXJpY19saW1pdHM8WT46Om1heCgpCi0gIC8vCi0gIC8vICAgIGNoZWNrKHgsIHlfbWF4KSByZXR1cm5zIHRydWUgaWZmIHggPiB5X21heCB3aXRob3V0IGludm9raW5nIGNvbXBhcmlzb25zCi0gIC8vICAgIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCB2YWx1ZXMuCi0gIC8vCi0gIC8vICAgICJwb29yIG1hbidzIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24iIGlzIGluIHVzZSBoZXJlLgotICAgIHRlbXBsYXRlIDxib29sIHNhbWVfc2lnbiwgYm9vbCB4X2lzX3NpZ25lZD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBncmVhdGVyX3RoYW5fdHlwZV9tYXg8dHJ1ZSwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2soWCB4LCBZIHlfbWF4KQotICAgICAgICAgICAgeyByZXR1cm4geCA+IHlfbWF4OyB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IGdyZWF0ZXJfdGhhbl90eXBlX21heDxmYWxzZSwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIC8vIFdoYXQgZG9lcyB0aGUgc3RhbmRhcmQgc2F5IGFib3V0IHRoaXM/IEkgdGhpbmsgaXQncyByaWdodCwgYW5kIGl0Ci0gICAgICAgIC8vIHdpbGwgd29yayB3aXRoIGV2ZXJ5IGNvbXBpbGVyIEkga25vdyBvZi4KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhYIHgsIFkpCi0gICAgICAgICAgICB7IHJldHVybiB4ID49IDAgJiYgc3RhdGljX2Nhc3Q8WD4oc3RhdGljX2Nhc3Q8WT4oeCkpICE9IHg7IH0KLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX01TVkMgPCAxMzAwCi0gICAgICAgIC8vIE1TVkM2IGNhbid0IHN0YXRpY19jYXN0ICB1bnNpZ25lZCBfX2ludDY0IC0+IGZsb2F0aW5nIHR5cGVzCi0jICBkZWZpbmUgTkROQk9PU1RfVUlOVDY0X0NBU1Qoc3JjX3R5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhzcmNfdHlwZSB4LCB1bnNpZ25lZCBfX2ludDY0KSAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpZiAoeCA8IDApIHJldHVybiBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0IHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBfX2ludDY0Pih4KTsgICAgICBcCi0gICAgICAgICAgICBib29sIG9kZCA9IHkgJiAweDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBfX2ludDY0IGRpdjIgPSBzdGF0aWNfY2FzdDxfX2ludDY0Pih5ID4+IDEpOyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2FzdDxzcmNfdHlwZT4oZGl2MikgKiAyLjApICsgb2RkKSAhPSB4OyAgICBcCi0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9VSU5UNjRfQ0FTVChsb25nIGRvdWJsZSk7Ci0gICAgICAgIE5ETkJPT1NUX1VJTlQ2NF9DQVNUKGRvdWJsZSk7Ci0gICAgICAgIE5ETkJPT1NUX1VJTlQ2NF9DQVNUKGZsb2F0KTsKLSMgIHVuZGVmIE5ETkJPT1NUX1VJTlQ2NF9DQVNUCi0jIGVuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4PHRydWUsIGZhbHNlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhYIHgsIFkgeV9tYXgpCi0gICAgICAgICAgICB7IHJldHVybiB4ID4geV9tYXg7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4PGZhbHNlLCBmYWxzZT4KLSAgICB7Ci0gICAgICAgIC8vIFdoYXQgZG9lcyB0aGUgc3RhbmRhcmQgc2F5IGFib3V0IHRoaXM/IEkgdGhpbmsgaXQncyByaWdodCwgYW5kIGl0Ci0gICAgICAgIC8vIHdpbGwgd29yayB3aXRoIGV2ZXJ5IGNvbXBpbGVyIEkga25vdyBvZi4KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhYIHgsIFkpCi0gICAgICAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxYPihzdGF0aWNfY2FzdDxZPih4KSkgIT0geDsgfQotICAgIH07Ci0KLSNlbHNlIC8vIHVzZSAjcHJhZ21hIGhhY2tzIGlmIGF2YWlsYWJsZQotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotIyBpZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQwMTgpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE0NikKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwNDEKLSMgZW5kaWYKLQotICAgICAgIC8vIE1vdmUgdG8gbmFtZXNwYWNlIG5kbmJvb3N0IGluIHV0aWxpdHkuaHBwPwotICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgIHN0cnVjdCBmaXhlZF9udW1lcmljX2xpbWl0cyA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ci0gICAgICAgewotICAgICAgICAgICBzdGF0aWMgaW5saW5lIFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQgJiYgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbikoKSA+PSAwCi0gICAgICAgICAgICAgICAgICAgPyBUKC0oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpKSA6IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCk7Ci0gICAgICAgICAgIH0KLSAgICAgICB9OwotCi0jIGlmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgcHJhZ21hIG9wdGlvbiBwb3AKLSMgZW5kaWYKLSAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgaW5saW5lIFRhcmdldCBudW1lcmljX2Nhc3QoU291cmNlIGFyZyBORE5CT09TVF9FWFBMSUNJVF9ERUZBVUxUX1RBUkdFVCkKLSAgICB7Ci0gICAgICAgIC8vIHR5cGVkZWZzIGFiYnJldmlhdGluZyByZXNwZWN0aXZlIHRyYWl0IGNsYXNzZXMKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmZpeGVkX251bWVyaWNfbGltaXRzPFNvdXJjZT4gYXJnX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmZpeGVkX251bWVyaWNfbGltaXRzPFRhcmdldD4gcmVzdWx0X3RyYWl0czsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykgXAotICAgIHx8ICghZGVmaW5lZChfX0hQX2FDQykgfHwgX19IUF9hQ0MgPiAzMzkwMCkgXAotICAgICAgICAgJiYgKCFkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSBcCi0gICAgICAgICAgICAgfHwgZGVmaW5lZChORE5CT09TVF9TR0lfQ1BQX0xJTUlUUykpCi0gICAgICAgIC8vIHR5cGVkZWZzIHRoYXQgYWN0IGFzIGNvbXBpbGUgdGltZSBhc3NlcnRpb25zCi0gICAgICAgIC8vICh0byBiZSByZXBsYWNlZCBieSBib29zdCBjb21waWxlIHRpbWUgYXNzZXJ0aW9ucwotICAgICAgICAvLyBhcyBhbmQgd2hlbiB0aGV5IGJlY29tZSBhdmFpbGFibGUgYW5kIGFyZSBzdGFibGUpCi0gICAgICAgIHR5cGVkZWYgYm9vbCBhcmd1bWVudF9tdXN0X2JlX251bWVyaWNbYXJnX3RyYWl0czo6aXNfc3BlY2lhbGl6ZWRdOwotICAgICAgICB0eXBlZGVmIGJvb2wgcmVzdWx0X211c3RfYmVfbnVtZXJpY1tyZXN1bHRfdHJhaXRzOjppc19zcGVjaWFsaXplZF07Ci0KLSAgICAgICAgY29uc3QgYm9vbCBhcmdfaXNfc2lnbmVkID0gYXJnX3RyYWl0czo6aXNfc2lnbmVkOwotICAgICAgICBjb25zdCBib29sIHJlc3VsdF9pc19zaWduZWQgPSByZXN1bHRfdHJhaXRzOjppc19zaWduZWQ7Ci0gICAgICAgIGNvbnN0IGJvb2wgc2FtZV9zaWduID0gYXJnX2lzX3NpZ25lZCA9PSByZXN1bHRfaXNfc2lnbmVkOwotCi0gICAgICAgIGlmIChsZXNzX3RoYW5fdHlwZV9taW48YXJnX2lzX3NpZ25lZCwgcmVzdWx0X2lzX3NpZ25lZD46OmNoZWNrKGFyZywgKHJlc3VsdF90cmFpdHM6Om1pbikoKSkKLSAgICAgICAgICAgIHx8IGdyZWF0ZXJfdGhhbl90eXBlX21heDxzYW1lX3NpZ24sIGFyZ19pc19zaWduZWQ+OjpjaGVjayhhcmcsIChyZXN1bHRfdHJhaXRzOjptYXgpKCkpCi0gICAgICAgICAgICApCi0KLSNlbHNlIC8vIFdlIG5lZWQgdG8gdXNlICNwcmFnbWEgaGFja3MgaWYgYXZhaWxhYmxlCi0KLSMgaWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MDE4KQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMTIKLSMgZW5kaWYKLSAgICAgICAgaWYgKChhcmcgPCAwICYmICFyZXN1bHRfdHJhaXRzOjppc19zaWduZWQpICAvLyBsb3NzIG9mIG5lZ2F0aXZlIHJhbmdlCi0gICAgICAgICAgICAgfHwgKGFyZ190cmFpdHM6OmlzX3NpZ25lZCAmJiBhcmcgPCAocmVzdWx0X3RyYWl0czo6bWluKSgpKSAgLy8gdW5kZXJmbG93Ci0gICAgICAgICAgICAgfHwgYXJnID4gKHJlc3VsdF90cmFpdHM6Om1heCkoKSkgICAgICAgICAgICAvLyBvdmVyZmxvdwotIyBpZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSNwcmFnbWEgb3B0aW9uIHBvcAotIyBlbmRpZgotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IGJhZF9udW1lcmljX2Nhc3QoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0PihhcmcpOwotICAgIH0gLy8gbnVtZXJpY19jYXN0Ci0KLSMgIHVuZGVmIE5ETkJPT1NUX0VYUExJQ0lUX0RFRkFVTFRfVEFSR0VUCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfT0xEX05VTUVSSUNfQ0FTVF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19jb21tb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZWVlNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQxICswLDAgQEAKLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCQotCQotCQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19sb25nX2xvbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2xvbmdfbG9uZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmOGQ1NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2xvbmdfbG9uZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDcgKzAsMCBAQAotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMgotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7Ci0gICAgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9zaWduX21peHR1cmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlOTBlZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfU0lHTl9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfU0lHTl9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xpbWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vc2lnbl9taXh0dXJlX2VudW0uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8gSW50ZWdyYWwgQ29uc3RhbnRzIGZvciAnU2lnbk1peHR1cmUnCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHNpZ25fbWl4dHVyZV9lbnVtLCB1bnNpZ25lZF90b191bnNpZ25lZD4gdW5zaWcydW5zaWdfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHNpZ25fbWl4dHVyZV9lbnVtLCBzaWduZWRfdG9fc2lnbmVkPiAgICAgc2lnMnNpZ19jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c2lnbl9taXh0dXJlX2VudW0sIHNpZ25lZF90b191bnNpZ25lZD4gICBzaWcydW5zaWdfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHNpZ25fbWl4dHVyZV9lbnVtLCB1bnNpZ25lZF90b19zaWduZWQ+ICAgdW5zaWcyc2lnX2MgOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBnZXRfc2lnbl9taXh0dXJlPFQsUz46OnR5cGUKLSAgLy8KLSAgLy8gU2VsZWN0cyB0aGUgYXBwcm9wcmlhdGUgU2lnbk1peHR1cmUgSW50ZWdyYWwgQ29uc3RhbnQgZm9yIHRoZSBjb21iaW5hdGlvbiBULFMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IGdldF9zaWduX21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+Ojppc19zaWduZWQgPiBTX3NpZ25lZCA7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCA+IFRfc2lnbmVkIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9ib3RoPFNfc2lnbmVkLCBUX3NpZ25lZCwgc2lnMnNpZ19jLCBzaWcydW5zaWdfYywgdW5zaWcyc2lnX2MsIHVuc2lnMnVuc2lnX2M+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZm9yX3NpZ25fbWl4dHVyZTxTaWduTWl4dHVyZSxTaWcyU2lnLFNpZzJVbnNpZyxVbnNpZzJTaWcsVW5zaWcyVW5zaWc+Ojp0eXBlCi0gIC8vCi0gIC8vIHtTaWduTWl4dHVyZX0gaXMgb25lIG9mIHRoZSBJbnRlZ3JhbCBDb25zdGFudHMgZm9yIFNpZ25NaXh0dXJlLCBkZWNsYXJlZCBhYm92ZS4KLSAgLy8ge1NpZzJTaWcsU2lnMlVuc2lnLFVuc2lnMlNpZyxVbnNpZzJVbnNpZ30gYXJlIGFyaWJ0cmFyeSB0eXBlcy4gKG5vdCBtZXRhZnVuY3Rpb25zKQotICAvLwotICAvLyBBY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mICdTaWduTWl4dHVyZScsIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnbk1peHR1cmUsIGNsYXNzIFNpZzJTaWcsIGNsYXNzIFNpZzJVbnNpZywgY2xhc3MgVW5zaWcyU2lnLCBjbGFzcyBVbnNpZzJVbnNpZz4KLSAgc3RydWN0IGZvcl9zaWduX21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGN0X3N3aXRjaDQ8U2lnbk1peHR1cmUKLSAgICAgICAgICAgICAgICAgLCBzaWcyc2lnX2MsIHNpZzJ1bnNpZ19jLCB1bnNpZzJzaWdfYyAgLy8gZGVmYXVsdAotICAgICAgICAgICAgICAgICAsIFNpZzJTaWcgICwgU2lnMlVuc2lnICAsIFVuc2lnMlNpZyAgLCBVbnNpZzJVbnNpZwotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvdWR0X2J1aWx0aW5fbWl4dHVyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvdWR0X2J1aWx0aW5fbWl4dHVyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMzgyZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3VkdF9idWlsdGluX21peHR1cmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX1VEVF9CVUlMVElOX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9VRFRfQlVJTFRJTl9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi91ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8gSW50ZWdyYWwgQ29uc3RhbnRzIGZvciAnVWR0TWl4dHVyZScKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8dWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLCBidWlsdGluX3RvX2J1aWx0aW4+IGJ1aWx0aW4yYnVpbHRpbl9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8dWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLCBidWlsdGluX3RvX3VkdD4gICAgIGJ1aWx0aW4ydWR0X2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzx1ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0sIHVkdF90b19idWlsdGluPiAgICAgdWR0MmJ1aWx0aW5fYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHVkdF9idWlsdGluX21peHR1cmVfZW51bSwgdWR0X3RvX3VkdD4gICAgICAgICB1ZHQydWR0X2MgOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBmb3JfdWR0X21peHR1cmU8VWR0TWl4dHVyZSxCdWlsdEluMkJ1aWx0SW4sQnVpbHRJbjJVZHQsVWR0MkJ1aWx0SW4sVWR0MlVkdD46OnR5cGUKLSAgLy8KLSAgLy8ge1VkdE1peHR1cmV9IGlzIG9uZSBvZiB0aGUgSW50ZWdyYWwgQ29uc3RhbnRzIGZvciBVZE1peHR1cmUsIGRlY2xhcmVkIGFib3ZlLgotICAvLyB7QnVpbHRJbjJCdWlsdEluLEJ1aWx0SW4yVWR0LFVkdDJCdWlsdEluLFVkdDJVZHR9IGFyZSBhcmlidHJhcnkgdHlwZXMuIChub3QgbWV0YWZ1bmN0aW9ucykKLSAgLy8KLSAgLy8gQWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiAnVWR0TWl4dHVyZScsIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVWR0TWl4dHVyZSwgY2xhc3MgQnVpbHRJbjJCdWlsdEluLCBjbGFzcyBCdWlsdEluMlVkdCwgY2xhc3MgVWR0MkJ1aWx0SW4sIGNsYXNzIFVkdDJVZHQ+Ci0gIHN0cnVjdCBmb3JfdWR0X2J1aWx0aW5fbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgY3Rfc3dpdGNoNDxVZHRNaXh0dXJlCi0gICAgICAgICAgICAgICAgICwgYnVpbHRpbjJidWlsdGluX2MsIGJ1aWx0aW4ydWR0X2MsIHVkdDJidWlsdGluX2MgLy8gZGVmYXVsdAotICAgICAgICAgICAgICAgICAsIEJ1aWx0SW4yQnVpbHRJbiAgLCBCdWlsdEluMlVkdCAgLCBVZHQyQnVpbHRJbiAgLCBVZHQyVWR0Ci0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGdldF91ZHRfbWl4dHVyZTxULFM+Ojp0eXBlCi0gIC8vCi0gIC8vIFNlbGVjdHMgdGhlIGFwcHJvcHJpYXRlIFVkdE1peHR1cmUgSW50ZWdyYWwgQ29uc3RhbnQgZm9yIHRoZSBjb21iaW5hdGlvbiBULFMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IGdldF91ZHRfYnVpbHRpbl9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIGlzX2FyaXRobWV0aWM8Uz4gU19idWlsdGluIDsKLSAgICB0eXBlZGVmIGlzX2FyaXRobWV0aWM8VD4gVF9idWlsdGluIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9ib3RoPFNfYnVpbHRpbiwgVF9idWlsdGluLCBidWlsdGluMmJ1aWx0aW5fYywgYnVpbHRpbjJ1ZHRfYywgdWR0MmJ1aWx0aW5fYywgdWR0MnVkdF9jPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9pbnRfZmxvYXRfbWl4dHVyZV9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2ludF9mbG9hdF9taXh0dXJlX2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVjYzU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2ludF9mbG9hdF9taXh0dXJlX2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fSU5UX0ZMT0FUX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fSU5UX0ZMT0FUX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYwotewotICBlbnVtIGludF9mbG9hdF9taXh0dXJlX2VudW0KLSAgewotICAgICBpbnRlZ3JhbF90b19pbnRlZ3JhbAotICAgICxpbnRlZ3JhbF90b19mbG9hdAotICAgICxmbG9hdF90b19pbnRlZ3JhbAotICAgICxmbG9hdF90b19mbG9hdAotICB9IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL251bWVyaWNfY2FzdF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OTM2NGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMQotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ0FTVF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ0FTVF9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBFbmFibGVJZiA9IHZvaWQ+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgICAgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxTb3VyY2U+ICAgICAgICAgICByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsKLQotfX0vL25hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fUkVMQVhfQlVJTFRfSU5fQ0FTVF9UUkFJVFMgKQotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+Ci0jZW5kaWYvLyFkZWZpbmVkIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9SRUxBWF9CVUlMVF9JTl9DQVNUX1RSQUlUUwotCi0jZW5kaWYvL05ETkJPT1NUX05VTUVSSUNfQ0FTVF9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9zaWduX21peHR1cmVfZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9zaWduX21peHR1cmVfZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNDFkZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vc2lnbl9taXh0dXJlX2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0lHTl9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NJR05fTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljCi17Ci0gIGVudW0gc2lnbl9taXh0dXJlX2VudW0KLSAgewotICAgICB1bnNpZ25lZF90b191bnNpZ25lZAotICAgICxzaWduZWRfdG9fc2lnbmVkCi0gICAgLHNpZ25lZF90b191bnNpZ25lZAotICAgICx1bnNpZ25lZF90b19zaWduZWQKLSAgfSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi91ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vdWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JhNDQxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi91ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fVURUX0JVSUxUSU5fTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9VRFRfQlVJTFRJTl9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMKLXsKLSAgZW51bSB1ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0KLSAgewotICAgICBidWlsdGluX3RvX2J1aWx0aW4KLSAgICAsYnVpbHRpbl90b191ZHQKLSAgICAsdWR0X3RvX2J1aWx0aW4KLSAgICAsdWR0X3RvX3VkdAotICB9IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9vcGVyYXRvcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9vcGVyYXRvcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODJhMDY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvb3BlcmF0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3OCArMCwwIEBACi0vLyAgQm9vc3Qgb3BlcmF0b3JzLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zLCBKZXJlbXkgU2llaywgRGFyeWxlIFdhbGtlciAxOTk5LTIwMDEuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L29wZXJhdG9ycy5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMTYgRGVjIDEwIExpbWl0IHdhcm5pbmcgc3VwcHJlc3Npb24gZm9yIDQyODQgdG8gb2xkZXIgdmVyc2lvbnMgb2YgVkMrKwotLy8gICAgICAgICAgICAoTWF0dGhldyBCcmFkYnVyeSwgZml4ZXMgIzQ0MzIpCi0vLyAgMDcgQXVnIDA4IEFkZGVkICJldWNsaWRlYW4iIHNwZWxsaW5nLiAoRGFuaWVsIEZyZXkpCi0vLyAgMDMgQXByIDA4IE1ha2Ugc3VyZSAiY29udmVydGlibGUgdG8gYm9vbCIgaXMgc3VmZmljaWVudAotLy8gICAgICAgICAgICBmb3IgVDo6b3BlcmF0b3I8LCBldGMuIChEYW5pZWwgRnJleSkKLS8vICAyNCBNYXkgMDcgQ2hhbmdlZCBlbXB0eV9iYXNlIHRvIGRlcGVuZCBvbiBULCBzZWUKLS8vICAgICAgICAgICAgaHR0cDovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvOTc5Ci0vLyAgMjEgT2N0IDAyIE1vZGlmaWVkIGltcGxlbWVudGF0aW9uIG9mIG9wZXJhdG9ycyB0byBhbGxvdyBjb21waWxlcnMgd2l0aCBhCi0vLyAgICAgICAgICAgIGNvcnJlY3QgbmFtZWQgcmV0dXJuIHZhbHVlIG9wdGltaXphdGlvbiAoTlJWTykgdG8gcHJvZHVjZSBvcHRpbWFsCi0vLyAgICAgICAgICAgIGNvZGUuICAoRGFuaWVsIEZyZXkpCi0vLyAgMDIgRGVjIDAxIEJ1ZyBmaXhlZCBpbiByYW5kb21fYWNjZXNzX2l0ZXJhdGFibGUuICAoSGVsbXV0IFplaXNlbCkKLS8vICAyOCBTZXAgMDEgRmFjdG9yZWQgb3V0IGl0ZXJhdG9yIG9wZXJhdG9yIGdyb3Vwcy4gIChEYXJ5bGUgV2Fsa2VyKQotLy8gIDI3IEF1ZyAwMSAnbGVmdCcgZm9ybSBmb3Igbm9uIGNvbW11dGF0aXZlIG9wZXJhdG9ycyBhZGRlZDsKLS8vICAgICAgICAgICAgYWRkaXRpb25hbCBjbGFzc2VzIGZvciBncm91cHMgb2YgcmVsYXRlZCBvcGVyYXRvcnMgYWRkZWQ7Ci0vLyAgICAgICAgICAgIHdvcmthcm91bmQgZm9yIGVtcHR5IGJhc2UgY2xhc3Mgb3B0aW1pemF0aW9uCi0vLyAgICAgICAgICAgIGJ1ZyBvZiBHQ0MgMy4wIChIZWxtdXQgWmVpc2VsKQotLy8gIDI1IEp1biAwMSBvdXRwdXRfaXRlcmF0b3JfaGVscGVyIGNoYW5nZXM6IHJlbW92ZWQgZGVmYXVsdCB0ZW1wbGF0ZSAKLS8vICAgICAgICAgICAgcGFyYW1ldGVycywgYWRkZWQgc3VwcG9ydCBmb3Igc2VsZi1wcm94eWluZywgYWRkaXRpb25hbCAKLS8vICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdHMgKEFsZWtzZXkgR3VydG92b3kpCi0vLyAgMjkgTWF5IDAxIEFkZGVkIG9wZXJhdG9yIGNsYXNzZXMgZm9yIDw8IGFuZCA+Pi4gIEFkZGVkIGlucHV0IGFuZCBvdXRwdXQKLS8vICAgICAgICAgICAgaXRlcmF0b3IgaGVscGVyIGNsYXNzZXMuICBBZGRlZCBjbGFzc2VzIHRvIGNvbm5lY3QgZXF1YWxpdHkgYW5kCi0vLyAgICAgICAgICAgIHJlbGF0aW9uYWwgb3BlcmF0b3JzLiAgQWRkZWQgY2xhc3NlcyBmb3IgZ3JvdXBzIG9mIHJlbGF0ZWQKLS8vICAgICAgICAgICAgb3BlcmF0b3JzLiAgUmVpbXBsZW1lbnRlZCBleGFtcGxlIG9wZXJhdG9yIGFuZCBpdGVyYXRvciBoZWxwZXIKLS8vICAgICAgICAgICAgY2xhc3NlcyBpbiB0ZXJtcyBvZiB0aGUgbmV3IGdyb3Vwcy4gIChEYXJ5bGUgV2Fsa2VyLCB3aXRoIGhlbHAKLS8vICAgICAgICAgICAgZnJvbSBBbGV4eSBHdXJ0b3ZveSkKLS8vICAxMSBGZWIgMDEgRml4ZWQgYnVncyBpbiB0aGUgaXRlcmF0b3IgaGVscGVycyB3aGljaCBwcmV2ZW50ZWQgZXhwbGljaXRseQotLy8gICAgICAgICAgICBzdXBwbGllZCBhcmd1bWVudHMgZnJvbSBhY3R1YWxseSBiZWluZyB1c2VkIChEYXZlIEFicmFoYW1zKQotLy8gIDA0IEp1bCAwMCBGaXhlZCBOT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFIGJ1Z3MsIG1ham9yIGNsZWFudXAgYW5kCi0vLyAgICAgICAgICAgIHJlZmFjdG9yaW5nIG9mIGNvbXBpbGVyIHdvcmthcm91bmRzLCBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24KLS8vICAgICAgICAgICAgKEFsZXh5IEd1cnRvdm95IGFuZCBNYXJrIFJvZGdlcnMgd2l0aCBzb21lIGhlbHAgYW5kIHByb21wdGluZyBmcm9tCi0vLyAgICAgICAgICAgIERhdmUgQWJyYWhhbXMpIAotLy8gIDI4IEp1biAwMCBHZW5lcmFsIGNsZWFudXAgYW5kIGludGVncmF0aW9uIG9mIGJ1Z2ZpeGVzIGZyb20gTWFyayBSb2RnZXJzIGFuZAotLy8gICAgICAgICAgICBKZXJlbXkgU2llayAoRGF2ZSBBYnJhaGFtcykKLS8vICAyMCBKdW4gMDAgQ2hhbmdlcyB0byBhY2NvbW1vZGF0ZSBCb3JsYW5kIEMrK0J1aWxkZXIgNCBhbmQgQm9ybGFuZCBDKysgNS41Ci0vLyAgICAgICAgICAgIChNYXJrIFJvZGdlcnMpCi0vLyAgMjAgSnVuIDAwIE1pbm9yIGZpeGVzIHRvIHRoZSBwcmlvciByZXZpc2lvbiAoQWxla3NleSBHdXJ0b3ZveSkKLS8vICAxMCBKdW4gMDAgU3VwcG9ydCBmb3IgdGhlIGJhc2UgY2xhc3MgY2hhaW5pbmcgdGVjaG5pcXVlIHdhcyBhZGRlZAotLy8gICAgICAgICAgICAoQWxla3NleSBHdXJ0b3ZveSkuIFNlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgY29tbWVudHMgYmVsb3cgCi0vLyAgICAgICAgICAgIGZvciB0aGUgZGV0YWlscy4gCi0vLyAgMTIgRGVjIDk5IEluaXRpYWwgdmVyc2lvbiB3aXRoIGl0ZXJhdG9yIG9wZXJhdG9ycyAoSmVyZW15IFNpZWspCi0vLyAgMTggTm92IDk5IENoYW5nZSBuYW1lICJkaXZpZGVhYmxlIiB0byAiZGl2aWRhYmxlIiwgcmVtb3ZlIHVubmVjZXNzYXJ5Ci0vLyAgICAgICAgICAgIHNwZWNpYWxpemF0aW9ucyBvZiBkaXZpZGFibGUsIHN1YnRyYWN0YWJsZSwgbW9kYWJsZSAoRWQgQnJleSkgCi0vLyAgMTcgTm92IDk5IEFkZCBjb21tZW50cyAoQmVtYW4gRGF3ZXMpCi0vLyAgICAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBzcGVjaWFsaXphdGlvbiBvZiBvcGVyYXRvcnM8PiAoRWQgQnJleSkKLS8vICAxNSBOb3YgOTkgRml4IGxlc3NfdGhhbl9jb21wYXJhYmxlPFQsVT4gc2Vjb25kIG9wZXJhbmQgdHlwZSBmb3IgZmlyc3QgdHdvCi0vLyAgICAgICAgICAgIG9wZXJhdG9ycy4oQmVtYW4gRGF3ZXMpCi0vLyAgMTIgTm92IDk5IEFkZCBvcGVyYXRvcnMgdGVtcGxhdGVzIChFZCBCcmV5KQotLy8gIDExIE5vdiA5OSBBZGQgc2luZ2xlIHRlbXBsYXRlIHBhcmFtZXRlciB2ZXJzaW9uIGZvciBjb21waWxlcnMgd2l0aG91dAotLy8gICAgICAgICAgICBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIChCZW1hbiBEYXdlcykKLS8vICAxMCBOb3YgOTkgSW5pdGlhbCB2ZXJzaW9uCi0KLS8vIDEwIEp1biAwMDoKLS8vIEFuIGFkZGl0aW9uYWwgb3B0aW9uYWwgdGVtcGxhdGUgcGFyYW1ldGVyIHdhcyBhZGRlZCB0byBtb3N0IG9mIAotLy8gb3BlcmF0b3IgdGVtcGxhdGVzIHRvIHN1cHBvcnQgdGhlIGJhc2UgY2xhc3MgY2hhaW5pbmcgdGVjaG5pcXVlIChzZWUgCi0vLyBkb2N1bWVudGF0aW9uIGZvciB0aGUgZGV0YWlscykuIFVuZm9ydHVuYXRlbHksIGEgc3RyYWlnaHRmb3J3YXJkCi0vLyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNoYW5nZSB3b3VsZCBoYXZlIGJyb2tlbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlCi0vLyBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IGJ5IG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHVzZSB0aGUgc2FtZQotLy8gdGVtcGxhdGUgbmFtZSAoZS5nLiAnYWRkYWJsZScpIGZvciBib3RoIHRoZSAxLSBhbmQgMi1hcmd1bWVudCB2ZXJzaW9ucyBvZgotLy8gYW4gb3BlcmF0b3IgdGVtcGxhdGUuIFRoaXMgaW1wbGVtZW50YXRpb24gc29sdmVzIHRoZSBiYWNrd2FyZC1jb21wYXRpYmlsaXR5Ci0vLyBpc3N1ZSBhdCB0aGUgY29zdCBvZiBzb21lIHNpbXBsaWNpdHkuCi0vLwotLy8gT25lIG9mIHRoZSBjb21wbGljYXRpb25zIGlzIGFuIGV4aXN0ZW5jZSBvZiBzcGVjaWFsIGF1eGlsaWFyeSBjbGFzcyB0ZW1wbGF0ZQotLy8gJ2lzX2NoYWluZWRfYmFzZTw+JyAoc2VlICdkZXRhaWwnIG5hbWVzcGFjZSBiZWxvdyksIHdoaWNoIGlzIHVzZWQKLS8vIHRvIGRldGVybWluZSB3aGV0aGVyIGl0cyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaXMgYSBsaWJyYXJ5J3Mgb3BlcmF0b3IgdGVtcGxhdGUKLS8vIG9yIG5vdC4gWW91IGhhdmUgdG8gc3BlY2lhbGl6ZSAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBlYWNoIG5ldyAKLS8vIG9wZXJhdG9yIHRlbXBsYXRlIHlvdSBhZGQgdG8gdGhlIGxpYnJhcnkuCi0vLwotLy8gSG93ZXZlciwgbW9zdCBvZiB0aGUgbm9uLXRyaXZpYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgaGlkZGVuIGJlaGluZCAKLS8vIHNldmVyYWwgbG9jYWwgbWFjcm9zIGRlZmluZWQgYmVsb3csIGFuZCBhcyBzb29uIGFzIHlvdSB1bmRlcnN0YW5kIHRoZW0sCi0vLyB5b3UgdW5kZXJzdGFuZCB0aGUgd2hvbGUgbGlicmFyeSBpbXBsZW1lbnRhdGlvbi4gCi0KLSNpZm5kZWYgTkROQk9PU1RfT1BFUkFUT1JTX0hQUAotI2RlZmluZSBORE5CT09TVF9PUEVSQVRPUlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fc2dpKSAmJiAhZGVmaW5lZChfX0dOVUNfXykKLSMgICBwcmFnbWEgc2V0IHdvZmYgMTIzNAotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTYwMCkKLSMgICBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQyODQgKSAvLyBjb21wbGFpbnQgYWJvdXQgcmV0dXJuIHR5cGUgb2YgCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0b3ItPiBub3QgYmVnaW4gYSBVRFQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgZW1wdHlfYmFzZSB7Ci0KLS8vIEhlbG11dCBaZWlzZWwsIGVtcHR5IGJhc2UgY2xhc3Mgb3B0aW1pemF0aW9uIGJ1ZyB3aXRoIEdDQyAzLjAuMAotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fPT0zICYmIF9fR05VQ19NSU5PUl9fPT0wICYmIF9fR05VX1BBVENITEVWRUxfXz09MAotICBib29sIGR1bW15OyAKLSNlbmRpZgotCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vIEluIHRoaXMgc2VjdGlvbiB3ZSBzdXBwbHkgdGhlIHh4eHgxIGFuZCB4eHh4MiBmb3JtcyBvZiB0aGUgb3BlcmF0b3IKLS8vIHRlbXBsYXRlcywgd2hpY2ggYXJlIGV4cGxpY2l0bHkgdGFyZ2V0ZWQgYXQgdGhlIDEtdHlwZS1hcmd1bWVudCBhbmQKLS8vIDItdHlwZS1hcmd1bWVudCBvcGVyYXRvciBmb3JtcywgcmVzcGVjdGl2ZWx5LiBTb21lIGNvbXBpbGVycyBnZXQgY29uZnVzZWQKLS8vIHdoZW4gaW5saW5lIGZyaWVuZCBmdW5jdGlvbnMgYXJlIG92ZXJsb2FkZWQgaW4gbmFtZXNwYWNlcyBvdGhlciB0aGFuIHRoZQotLy8gZ2xvYmFsIG5hbWVzcGFjZS4gV2hlbiBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFIGlzIGRlZmluZWQsIGFsbCBvZgotLy8gdGhlc2UgdGVtcGxhdGVzIG11c3QgZ28gaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0jZW5kaWYKLQotLy8gIEJhc2ljIG9wZXJhdG9yIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IERhdmUgQWJyYWhhbXMpIC0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBOb3RlIHRoYXQgZnJpZW5kIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGEgY2xhc3MgYXJlIGltcGxpY2l0bHkgaW5saW5lLgotLy8gIFNlZSB0aGUgQysrIHN0ZCwgMTEuNCBbY2xhc3MuZnJpZW5kXSBwYXJhZ3JhcGggNQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbGVzc190aGFuX2NvbXBhcmFibGUyIDogQgotewotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHgsIGNvbnN0IFUmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4ID4geSk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpOyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPihjb25zdCBVJiB4LCBjb25zdCBUJiB5KSAgeyByZXR1cm4geSA8IHg7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpICB7IHJldHVybiB5ID4geDsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih5IDwgeCk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVJiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeSA+IHgpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbGVzc190aGFuX2NvbXBhcmFibGUxIDogQgotewotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgIHsgcmV0dXJuIHkgPCB4OyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4IDwgeSk7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBlcXVhbGl0eV9jb21wYXJhYmxlMiA6IEIKLXsKLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVJiB5LCBjb25zdCBUJiB4KSB7IHJldHVybiB4ID09IHk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVJiB5LCBjb25zdCBUJiB4KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHksIGNvbnN0IFUmIHgpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih5ID09IHgpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXF1YWxpdHlfY29tcGFyYWJsZTEgOiBCCi17Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLX07Ci0KLS8vIEEgbWFjcm8gd2hpY2ggcHJvZHVjZXMgIm5hbWVfMmxlZnQiIGZyb20gIm5hbWUiLgotI2RlZmluZSBORE5CT09TVF9PUEVSQVRPUjJfTEVGVChuYW1lKSBuYW1lIyMyIyNfIyNsZWZ0Ci0KLS8vICBOUlZPLWZyaWVuZGx5IGltcGxlbWVudGF0aW9uIChjb250cmlidXRlZCBieSBEYW5pZWwgRnJleSkgLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotLy8gVGhpcyBpcyB0aGUgb3B0aW1hbCBpbXBsZW1lbnRhdGlvbiBmb3IgSVNPL0FOU0kgQysrLAotLy8gYnV0IGl0IHJlcXVpcmVzIHRoZSBjb21waWxlciB0byBpbXBsZW1lbnQgdGhlIE5SVk8uCi0vLyBJZiB0aGUgY29tcGlsZXIgaGFzIG5vIE5SVk8sIHRoaXMgaXMgdGhlIGJlc3Qgc3ltbWV0cmljCi0vLyBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUuCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVSYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCByaHMgKTsgbnJ2IE9QIyM9IGxoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggTkFNRSwgT1AgKSAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVSYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBORE5CT09TVF9PUEVSQVRPUjJfTEVGVChOQU1FKSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07Ci0KLSNlbHNlIC8vIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotLy8gRm9yIGNvbXBpbGVycyB3aXRob3V0IE5SVk8gdGhlIGZvbGxvd2luZyBjb2RlIGlzIG9wdGltYWwsIGJ1dCBub3QKLS8vIHN5bW1ldHJpYyEgIE5vdGUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YKLS8vIE5ETkJPT1NUX09QRVJBVE9SMl9MRUZUKE5BTUUpIG9ubHkgbG9va3MgY29vbCwgYnV0IGRvZXNuJ3QgcHJvdmlkZQotLy8gb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgdG8gdGhlIGNvbXBpbGVyIDopCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBVJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgVCByaHMgKSB7IHJldHVybiByaHMgT1AjIz0gbGhzOyB9IFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBUJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggTkFNRSwgT1AgKSAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBVJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBORE5CT09TVF9PUEVSQVRPUjJfTEVGVChOQU1FKSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IHJldHVybiBUKCBsaHMgKSBPUCMjPSByaHM7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBUJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLX07Ci0KLSNlbmRpZiAvLyBkZWZpbmVkKE5ETkJPT1NUX0hBU19OUlZPKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZPUkNFX1NZTU1FVFJJQ19PUEVSQVRPUlMpCi0KLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggbXVsdGlwbGlhYmxlLCAqICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggYWRkYWJsZSwgKyApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFKCBzdWJ0cmFjdGFibGUsIC0gKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggZGl2aWRhYmxlLCAvICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9OT05fQ09NTVVUQVRJVkUoIG1vZGFibGUsICUgKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCB4b3JhYmxlLCBeICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggYW5kYWJsZSwgJiApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIG9yYWJsZSwgfCApCi0KLSN1bmRlZiBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUKLSN1bmRlZiBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1IyX0xFRlQKLQotLy8gIGluY3JlbWVudGFibGUgYW5kIGRlY3JlbWVudGFibGUgY29udHJpYnV0ZWQgYnkgSmVyZW15IFNpZWsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGluY3JlbWVudGFibGUgOiBCCi17Ci0gIGZyaWVuZCBUIG9wZXJhdG9yKysoVCYgeCwgaW50KQotICB7Ci0gICAgaW5jcmVtZW50YWJsZV90eXBlIG5ydih4KTsKLSAgICArK3g7Ci0gICAgcmV0dXJuIG5ydjsKLSAgfQotcHJpdmF0ZTogLy8gVGhlIHVzZSBvZiB0aGlzIHR5cGVkZWYgd29ya3MgYXJvdW5kIGEgQm9ybGFuZCBidWcKLSAgdHlwZWRlZiBUIGluY3JlbWVudGFibGVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBkZWNyZW1lbnRhYmxlIDogQgotewotICBmcmllbmQgVCBvcGVyYXRvci0tKFQmIHgsIGludCkKLSAgewotICAgIGRlY3JlbWVudGFibGVfdHlwZSBucnYoeCk7Ci0gICAgLS14OwotICAgIHJldHVybiBucnY7Ci0gIH0KLXByaXZhdGU6IC8vIFRoZSB1c2Ugb2YgdGhpcyB0eXBlZGVmIHdvcmtzIGFyb3VuZCBhIEJvcmxhbmQgYnVnCi0gIHR5cGVkZWYgVCBkZWNyZW1lbnRhYmxlX3R5cGU7Ci19OwotCi0vLyAgSXRlcmF0b3Igb3BlcmF0b3IgY2xhc3NlcyAoY29udHJpYnV0ZWQgYnkgSmVyZW15IFNpZWspIC0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBkZXJlZmVyZW5jZWFibGUgOiBCCi17Ci0gIFAgb3BlcmF0b3ItPigpIGNvbnN0Ci0gIHsgCi0gICAgcmV0dXJuICYqc3RhdGljX2Nhc3Q8Y29uc3QgVCY+KCp0aGlzKTsgCi0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBJLCBjbGFzcyBSLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbmRleGFibGUgOiBCCi17Ci0gIFIgb3BlcmF0b3JbXShJIG4pIGNvbnN0Ci0gIHsKLSAgICByZXR1cm4gKihzdGF0aWNfY2FzdDxjb25zdCBUJj4oKnRoaXMpICsgbik7Ci0gIH0KLX07Ci0KLS8vICBNb3JlIG9wZXJhdG9yIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IERhcnlsZSBXYWxrZXIpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAoTlJWTy1mcmllbmRseSBpbXBsZW1lbnRhdGlvbiBjb250cmlidXRlZCBieSBEYW5pZWwgRnJleSkgLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfT1BFUkFUT1IoIE5BTUUsIE9QICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgXAotc3RydWN0IE5BTUUjIzIgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgICAgICAgICAgXAotc3RydWN0IE5BTUUjIzEgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsKLQotI2Vsc2UgLy8gZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUiggTkFNRSwgT1AgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMiA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVSYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVCYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSAgICAgICBcCi19OwotCi0jZW5kaWYgLy8gZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1IoIGxlZnRfc2hpZnRhYmxlLCA8PCApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1IoIHJpZ2h0X3NoaWZ0YWJsZSwgPj4gKQotCi0jdW5kZWYgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBlcXVpdmFsZW50MiA6IEIKLXsKLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KQotICB7Ci0gICAgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4IDwgeSkgJiYgIXN0YXRpY19jYXN0PGJvb2w+KHggPiB5KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGVxdWl2YWxlbnQxIDogQgotewotICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmeCwgY29uc3QgVCZ5KQotICB7Ci0gICAgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4IDwgeSkgJiYgIXN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHBhcnRpYWxseV9vcmRlcmVkMiA6IEIKLXsKLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHggPCB5KSB8fCBzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgeCwgY29uc3QgVSYgeSkKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih4ID4geSkgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcj4oY29uc3QgVSYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiB5IDwgeDsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgVSYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiB5ID4geDsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeSA+IHgpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHkgPT0geCk7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KSB8fCBzdGF0aWNfY2FzdDxib29sPih5ID09IHgpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgcGFydGlhbGx5X29yZGVyZWQxIDogQgotewotICBmcmllbmQgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiB5IDwgeDsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KSB8fCBzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci19OwotCi0vLyAgQ29tYmluZWQgb3BlcmF0b3IgY2xhc3NlcyAoY29udHJpYnV0ZWQgYnkgRGFyeWxlIFdhbGtlcikgLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCB0b3RhbGx5X29yZGVyZWQyCi0gICAgOiBsZXNzX3RoYW5fY29tcGFyYWJsZTI8VCwgVQotICAgICwgZXF1YWxpdHlfY29tcGFyYWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgdG90YWxseV9vcmRlcmVkMQotICAgIDogbGVzc190aGFuX2NvbXBhcmFibGUxPFQKLSAgICAsIGVxdWFsaXR5X2NvbXBhcmFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGFkZGl0aXZlMgotICAgIDogYWRkYWJsZTI8VCwgVQotICAgICwgc3VidHJhY3RhYmxlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBhZGRpdGl2ZTEKLSAgICA6IGFkZGFibGUxPFQKLSAgICAsIHN1YnRyYWN0YWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbXVsdGlwbGljYXRpdmUyCi0gICAgOiBtdWx0aXBsaWFibGUyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbXVsdGlwbGljYXRpdmUxCi0gICAgOiBtdWx0aXBsaWFibGUxPFQKLSAgICAsIGRpdmlkYWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW50ZWdlcl9tdWx0aXBsaWNhdGl2ZTIKLSAgICA6IG11bHRpcGxpY2F0aXZlMjxULCBVCi0gICAgLCBtb2RhYmxlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbnRlZ2VyX211bHRpcGxpY2F0aXZlMQotICAgIDogbXVsdGlwbGljYXRpdmUxPFQKLSAgICAsIG1vZGFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGFyaXRobWV0aWMyCi0gICAgOiBhZGRpdGl2ZTI8VCwgVQotICAgICwgbXVsdGlwbGljYXRpdmUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGFyaXRobWV0aWMxCi0gICAgOiBhZGRpdGl2ZTE8VAotICAgICwgbXVsdGlwbGljYXRpdmUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGludGVnZXJfYXJpdGhtZXRpYzIKLSAgICA6IGFkZGl0aXZlMjxULCBVCi0gICAgLCBpbnRlZ2VyX211bHRpcGxpY2F0aXZlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbnRlZ2VyX2FyaXRobWV0aWMxCi0gICAgOiBhZGRpdGl2ZTE8VAotICAgICwgaW50ZWdlcl9tdWx0aXBsaWNhdGl2ZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYml0d2lzZTIKLSAgICA6IHhvcmFibGUyPFQsIFUKLSAgICAsIGFuZGFibGUyPFQsIFUKLSAgICAsIG9yYWJsZTI8VCwgVSwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBiaXR3aXNlMQotICAgIDogeG9yYWJsZTE8VAotICAgICwgYW5kYWJsZTE8VAotICAgICwgb3JhYmxlMTxULCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHVuaXRfc3RlcHBhYmxlCi0gICAgOiBpbmNyZW1lbnRhYmxlPFQKLSAgICAsIGRlY3JlbWVudGFibGU8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgc2hpZnRhYmxlMgotICAgIDogbGVmdF9zaGlmdGFibGUyPFQsIFUKLSAgICAsIHJpZ2h0X3NoaWZ0YWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgc2hpZnRhYmxlMQotICAgIDogbGVmdF9zaGlmdGFibGUxPFQKLSAgICAsIHJpZ2h0X3NoaWZ0YWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgcmluZ19vcGVyYXRvcnMyCi0gICAgOiBhZGRpdGl2ZTI8VCwgVQotICAgICwgc3VidHJhY3RhYmxlMl9sZWZ0PFQsIFUKLSAgICAsIG11bHRpcGxpYWJsZTI8VCwgVSwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCByaW5nX29wZXJhdG9yczEKLSAgICA6IGFkZGl0aXZlMTxUCi0gICAgLCBtdWx0aXBsaWFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfcmluZ19vcGVyYXRvcnMyCi0gICAgOiByaW5nX29wZXJhdG9yczI8VCwgVQotICAgICwgdG90YWxseV9vcmRlcmVkMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogcmluZ19vcGVyYXRvcnMxPFQKLSAgICAsIHRvdGFsbHlfb3JkZXJlZDE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZmllbGRfb3BlcmF0b3JzMgotICAgIDogcmluZ19vcGVyYXRvcnMyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTI8VCwgVQotICAgICwgZGl2aWRhYmxlMl9sZWZ0PFQsIFUsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZmllbGRfb3BlcmF0b3JzMQotICAgIDogcmluZ19vcGVyYXRvcnMxPFQKLSAgICAsIGRpdmlkYWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9maWVsZF9vcGVyYXRvcnMyCi0gICAgOiBmaWVsZF9vcGVyYXRvcnMyPFQsIFUKLSAgICAsIHRvdGFsbHlfb3JkZXJlZDI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9maWVsZF9vcGVyYXRvcnMxCi0gICAgOiBmaWVsZF9vcGVyYXRvcnMxPFQKLSAgICAsIHRvdGFsbHlfb3JkZXJlZDE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMgotICAgIDogcmluZ19vcGVyYXRvcnMyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTI8VCwgVQotICAgICwgZGl2aWRhYmxlMl9sZWZ0PFQsIFUKLSAgICAsIG1vZGFibGUyPFQsIFUKLSAgICAsIG1vZGFibGUyX2xlZnQ8VCwgVSwgQgotICAgICAgPiA+ID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogcmluZ19vcGVyYXRvcnMxPFQKLSAgICAsIGRpdmlkYWJsZTE8VAotICAgICwgbW9kYWJsZTE8VCwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2V1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczIKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDI8VCwgVQotICAgICwgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2V1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczEKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDE8VAotICAgICwgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMyCi0gICAgOiByaW5nX29wZXJhdG9yczI8VCwgVQotICAgICwgZGl2aWRhYmxlMjxULCBVCi0gICAgLCBkaXZpZGFibGUyX2xlZnQ8VCwgVQotICAgICwgbW9kYWJsZTI8VCwgVQotICAgICwgbW9kYWJsZTJfbGVmdDxULCBVLCBCCi0gICAgICA+ID4gPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMxCi0gICAgOiByaW5nX29wZXJhdG9yczE8VAotICAgICwgZGl2aWRhYmxlMTxUCi0gICAgLCBtb2RhYmxlMTxULCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMgotICAgIDogdG90YWxseV9vcmRlcmVkMjxULCBVCi0gICAgLCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogdG90YWxseV9vcmRlcmVkMTxUCi0gICAgLCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGlucHV0X2l0ZXJhdGFibGUKLSAgICA6IGVxdWFsaXR5X2NvbXBhcmFibGUxPFQKLSAgICAsIGluY3JlbWVudGFibGU8VAotICAgICwgZGVyZWZlcmVuY2VhYmxlPFQsIFAsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3V0cHV0X2l0ZXJhdGFibGUKLSAgICA6IGluY3JlbWVudGFibGU8VCwgQgotICAgICAgPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGZvcndhcmRfaXRlcmF0YWJsZQotICAgIDogaW5wdXRfaXRlcmF0YWJsZTxULCBQLCBCCi0gICAgICA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRhYmxlCi0gICAgOiBmb3J3YXJkX2l0ZXJhdGFibGU8VCwgUAotICAgICwgZGVjcmVtZW50YWJsZTxULCBCCi0gICAgICA+ID4ge307Ci0KLS8vICBUbyBhdm9pZCByZXBlYXRlZCBkZXJpdmF0aW9uIGZyb20gZXF1YWxpdHlfY29tcGFyYWJsZSwKLS8vICB3aGljaCBpcyBhbiBpbmRpcmVjdCBiYXNlIGNsYXNzIG9mIGJpZGlyZWN0aW9uYWxfaXRlcmFibGUsCi0vLyAgcmFuZG9tX2FjY2Vzc19pdGVyYXRhYmxlIG11c3Qgbm90IGJlIGRlcml2ZWQgZnJvbSB0b3RhbGx5X29yZGVyZWQxCi0vLyAgYnV0IGZyb20gbGVzc190aGFuX2NvbXBhcmFibGUxIG9ubHkuIChIZWxtdXQgWmVpc2VsLCAwMi1EZWMtMjAwMSkKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQLCBjbGFzcyBELCBjbGFzcyBSLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdGFibGUKLSAgICA6IGJpZGlyZWN0aW9uYWxfaXRlcmF0YWJsZTxULCBQCi0gICAgLCBsZXNzX3RoYW5fY29tcGFyYWJsZTE8VAotICAgICwgYWRkaXRpdmUyPFQsIEQKLSAgICAsIGluZGV4YWJsZTxULCBELCBSLCBCCi0gICAgICA+ID4gPiA+IHt9OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0KLS8vIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEgLi4gTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCAtCi0vLwotLy8gV2hlbiBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFIGlzIGRlZmluZWQgd2UgbmVlZCBhIHdheSB0byBpbXBvcnQgYW4KLS8vIG9wZXJhdG9yIHRlbXBsYXRlIGludG8gdGhlIGJvb3N0IG5hbWVzcGFjZS4gTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSBpcyB1c2VkCi0vLyBmb3Igb25lLWFyZ3VtZW50IGZvcm1zIG9mIG9wZXJhdG9yIHRlbXBsYXRlczsgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMiBmb3IKLS8vIHR3by1hcmd1bWVudCBmb3Jtcy4gTm90ZSB0aGF0IHRoZXNlIG1hY3JvcyBleHBlY3QgdG8gYmUgaW52b2tlZCBmcm9tIHdpdGhpbgotLy8gYm9vc3QuCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0gIC8vIFRoZSB0ZW1wbGF0ZSBpcyBhbHJlYWR5IGluIGJvb3N0IHNvIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQodGVtcGxhdGVfbmFtZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEodGVtcGxhdGVfbmFtZSkKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLQotICAgICAvLyBCcmluZyB0aGUgbmFtZXMgaW4gd2l0aCBhIHVzaW5nLWRlY2xhcmF0aW9uCi0gICAgIC8vIHRvIGF2b2lkIHN0cmVzc2luZyB0aGUgY29tcGlsZXIuCi0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0KHRlbXBsYXRlX25hbWUpIHVzaW5nIDo6dGVtcGxhdGVfbmFtZTsKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZSkgdXNpbmcgOjp0ZW1wbGF0ZV9uYW1lOwotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lKSB1c2luZyA6OnRlbXBsYXRlX25hbWU7Ci0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUpIHVzaW5nIDo6dGVtcGxhdGVfbmFtZTsKLQotIyAgZWxzZQotCi0gICAgIC8vIE90aGVyd2lzZSwgYmVjYXVzZSBhIEJvcmxhbmQgQysrIDUuNSBidWcgcHJldmVudHMgYSB1c2luZyBkZWNsYXJhdGlvbgotICAgICAvLyBmcm9tIHdvcmtpbmcsIHdlIGFyZSBmb3JjZWQgdG8gdXNlIGluaGVyaXRhbmNlIGZvciB0aGF0IGNvbXBpbGVyLgotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIFcsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiBcCi0gICAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogOjp0ZW1wbGF0ZV9uYW1lPFQsIFUsIFYsIFcsIEI+IHt9OwotCi0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+IFwKLSAgICAgc3RydWN0IHRlbXBsYXRlX25hbWUgOiA6OnRlbXBsYXRlX25hbWU8VCwgVSwgViwgQj4ge307Ci0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gXAotICAgICBzdHJ1Y3QgdGVtcGxhdGVfbmFtZSA6IDo6dGVtcGxhdGVfbmFtZTxULCBVLCBCPiB7fTsKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgIFwKLSAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiBcCi0gICAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogOjp0ZW1wbGF0ZV9uYW1lPFQsIEI+IHt9OwotCi0jICBlbmRpZiAvLyBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0vLwotLy8gSGVyZSdzIHdoZXJlIHdlIHB1dCBpdCBhbGwgdG9nZXRoZXIsIGRlZmluaW5nIHRoZSB4eHh4IGZvcm1zIG9mIHRoZSB0ZW1wbGF0ZXMKLS8vIGluIG5hbWVzcGFjZSBuZG5ib29zdC4gV2UgYWxzbyBkZWZpbmUgc3BlY2lhbGl6YXRpb25zIG9mIGlzX2NoYWluZWRfYmFzZTw+IGZvcgotLy8gdGhlIHh4eHgsIHh4eHgxLCBhbmQgeHh4eDIgdGVtcGxhdGVzLCBpbXBvcnRpbmcgdGhlbSBpbnRvIG5kbmJvb3N0OjogYXMKLS8vIG5lY2Vzc2FyeS4KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gaXNfY2hhaW5lZF9iYXNlPD4gLSBhIHRyYWl0cyBjbGFzcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHdoZXRoZXIgYW4gb3BlcmF0b3IKLS8vIHRlbXBsYXRlIGFyZ3VtZW50IGlzIGJlaW5nIHVzZWQgZm9yIGJhc2UgY2xhc3MgY2hhaW5pbmcsIG9yIGlzIHNwZWNpZnlpbmcgYQotLy8gMm5kIGFyZ3VtZW50IHR5cGUuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0vLyBBIHR5cGUgcGFyYW1ldGVyIGlzIHVzZWQgaW5zdGVhZCBvZiBhIHBsYWluIGJvb2wgYmVjYXVzZSBCb3JsYW5kJ3MgY29tcGlsZXIKLS8vIGRpZG4ndCBjb3BlIHdlbGwgd2l0aCB0aGUgbW9yZSBvYnZpb3VzIG5vbi10eXBlIHRlbXBsYXRlIHBhcmFtZXRlci4KLW5hbWVzcGFjZSBkZXRhaWwgewotICBzdHJ1Y3QgdHJ1ZV90IHt9OwotICBzdHJ1Y3QgZmFsc2VfdCB7fTsKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyBVbnNwZWNpYWxpemVkIHZlcnNpb24gYXNzdW1lcyB0aGF0IG1vc3QgdHlwZXMgYXJlIG5vdCBiZWluZyB1c2VkIGZvciBiYXNlCi0vLyBjbGFzcyBjaGFpbmluZy4gV2Ugc3BlY2lhbGl6ZSBmb3IgdGhlIG9wZXJhdG9yIHRlbXBsYXRlcyBkZWZpbmVkIGluIHRoaXMKLS8vIGxpYnJhcnkuCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlIHsKLSAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OmZhbHNlX3QgdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyBJbXBvcnQgYSA0LXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lNCkgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQodGVtcGxhdGVfbmFtZTQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBXLCBjbGFzcyBCPiAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTQ8VCwgVSwgViwgVywgQj4gPiB7ICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBJbXBvcnQgYSAzLXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lMykgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZTMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTM8VCwgVSwgViwgQj4gPiB7ICAgICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBJbXBvcnQgYSAyLXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lMikgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTI8VCwgVSwgQj4gPiB7ICAgICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBJbXBvcnQgYSAxLXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lMSkgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEodGVtcGxhdGVfbmFtZTEpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTE8VCwgQj4gPiB7ICAgICAgICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURSh0ZW1wbGF0ZV9uYW1lKSBkZWZpbmVzIHRlbXBsYXRlX25hbWU8PiBzdWNoIHRoYXQgaXQKLS8vIGNhbiBiZSB1c2VkIGZvciBzcGVjaWZ5aW5nIGJvdGggMS1hcmd1bWVudCBhbmQgMi1hcmd1bWVudCBmb3Jtcy4gUmVxdWlyZXMgdGhlCi0vLyBleGlzdGVuY2Ugb2YgdHdvIHByZXZpb3VzbHkgZGVmaW5lZCBjbGFzcyB0ZW1wbGF0ZXMgbmFtZWQgJzx0ZW1wbGF0ZV9uYW1lPjEnCi0vLyBhbmQgJzx0ZW1wbGF0ZV9uYW1lPjInIHdoaWNoIG11c3QgaW1wbGVtZW50IHRoZSBjb3JyZXNwb25kaW5nIDEtIGFuZCAyLQotLy8gYXJndW1lbnQgZm9ybXMuCi0vLwotLy8gVGhlIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVyIE8gPT0gaXNfY2hhaW5lZF9iYXNlPFU+Ojp2YWx1ZSBpcyB1c2VkIHRvCi0vLyBkaXN0aW5ndWlzaCB3aGV0aGVyIHRoZSAybmQgYXJndW1lbnQgdG8gPHRlbXBsYXRlX25hbWU+IGlzIGJlaW5nIHVzZWQgZm9yCi0vLyBiYXNlIGNsYXNzIGNoYWluaW5nIGZyb20gYW5vdGhlciBib29zdCBvcGVyYXRvciB0ZW1wbGF0ZSBvciBpcyBkZXNjcmliaW5nIGEKLS8vIDJuZCBvcGVyYW5kIHR5cGUuIE8gPT0gdHJ1ZV90IG9ubHkgd2hlbiBVIGlzIGFjdHVhbGx5IGFuIGFub3RoZXIgb3BlcmF0b3IKLS8vIHRlbXBsYXRlIGZyb20gdGhlIGxpYnJhcnkuIFBhcnRpYWwgc3BlY2lhbGl6YXRpb24gaXMgdXNlZCB0byBzZWxlY3QgYW4KLS8vIGltcGxlbWVudGF0aW9uIGluIHRlcm1zIG9mIGVpdGhlciAnPHRlbXBsYXRlX25hbWU+MScgb3IgJzx0ZW1wbGF0ZV9uYW1lPjInLgotLy8KLQotIyBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsY2xhc3MgVSA9IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgLGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICxjbGFzcyBPID0gdHlwZW5hbWUgaXNfY2hhaW5lZF9iYXNlPFU+Ojp2YWx1ZSAgICAgICAgICAgICBcCi0gICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHRlbXBsYXRlX25hbWUgOiB0ZW1wbGF0ZV9uYW1lIyMyPFQsIFUsIEI+IHt9OyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHRlbXBsYXRlX25hbWU8VCwgVSwgQiwgOjpuZG5ib29zdDo6ZGV0YWlsOjp0cnVlX3Q+ICAgICAgICAgICAgIFwKLSAgOiB0ZW1wbGF0ZV9uYW1lIyMxPFQsIFU+IHt9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0ZW1wbGF0ZV9uYW1lPFQsIFQsIEIsIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZmFsc2VfdD4gICAgICAgICAgICBcCi0gIDogdGVtcGxhdGVfbmFtZSMjMTxULCBCPiB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIsIGNsYXNzIE8+ICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlPCA6Om5kbmJvb3N0Ojp0ZW1wbGF0ZV9uYW1lPFQsIFUsIEIsIE8+ID4geyAgICAgXAotICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHJ1ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUjIzIpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lIyMxKQotCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lNCkgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0KHRlbXBsYXRlX25hbWU0KQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lMykgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUzKQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lMikgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUyKQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lMSkgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUxKQotCi0gICAvLyBJbiB0aGlzIGNhc2Ugd2UgY2FuIG9ubHkgYXNzdW1lIHRoYXQgdGVtcGxhdGVfbmFtZTw+IGlzIGVxdWl2YWxlbnQgdG8gdGhlCi0gICAvLyBtb3JlIGNvbW1vbmx5IG5lZWRlZCB0ZW1wbGF0ZV9uYW1lMTw+IGZvcm0uCi0jICBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgIFwKLSAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogdGVtcGxhdGVfbmFtZSMjMTxULCBCPiB7fTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICAKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGxlc3NfdGhhbl9jb21wYXJhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZXF1YWxpdHlfY29tcGFyYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG11bHRpcGxpYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGFkZGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShzdWJ0cmFjdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoc3VidHJhY3RhYmxlMl9sZWZ0KQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZGl2aWRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKGRpdmlkYWJsZTJfbGVmdCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG1vZGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIobW9kYWJsZTJfbGVmdCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHhvcmFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShhbmRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUob3JhYmxlKQotCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEoaW5jcmVtZW50YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMShkZWNyZW1lbnRhYmxlKQotCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoZGVyZWZlcmVuY2VhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUzKGluZGV4YWJsZSkKLQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUobGVmdF9zaGlmdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShyaWdodF9zaGlmdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShlcXVpdmFsZW50KQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUocGFydGlhbGx5X29yZGVyZWQpCi0KLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHRvdGFsbHlfb3JkZXJlZCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGFkZGl0aXZlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUobXVsdGlwbGljYXRpdmUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShpbnRlZ2VyX211bHRpcGxpY2F0aXZlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoYXJpdGhtZXRpYykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGludGVnZXJfYXJpdGhtZXRpYykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGJpdHdpc2UpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEodW5pdF9zdGVwcGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShzaGlmdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShyaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG9yZGVyZWRfcmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShmaWVsZF9vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShvcmRlcmVkX2ZpZWxkX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGV1Y2xpZGlhbl9yaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG9yZGVyZWRfZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUob3JkZXJlZF9ldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoaW5wdXRfaXRlcmF0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMShvdXRwdXRfaXRlcmF0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihmb3J3YXJkX2l0ZXJhdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoYmlkaXJlY3Rpb25hbF9pdGVyYXRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEU0KHJhbmRvbV9hY2Nlc3NfaXRlcmF0YWJsZSkKLQotI3VuZGVmIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEU0Ci0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUzCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxCi0jdW5kZWYgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMQotI3VuZGVmIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIKLSN1bmRlZiBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzCi0jdW5kZWYgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNAotCi0vLyBUaGUgZm9sbG93aW5nICdvcGVyYXRvcnMnIGNsYXNzZXMgY2FuIG9ubHkgYmUgdXNlZCBwb3J0YWJseSBpZiB0aGUgZGVyaXZlZCBjbGFzcwotLy8gZGVjbGFyZXMgQUxMIG9mIHRoZSByZXF1aXJlZCBtZW1iZXIgb3BlcmF0b3JzLgotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3Qgb3BlcmF0b3JzMgotICAgIDogdG90YWxseV9vcmRlcmVkMjxULFUKLSAgICAsIGludGVnZXJfYXJpdGhtZXRpYzI8VCxVCi0gICAgLCBiaXR3aXNlMjxULFUKLSAgICAgID4gPiA+IHt9OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVID0gVD4KLXN0cnVjdCBvcGVyYXRvcnMgOiBvcGVyYXRvcnMyPFQsIFU+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IG9wZXJhdG9yczxULCBUPgotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3Qgb3BlcmF0b3JzCi0jZW5kaWYKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDxUCi0gICAgLCBpbnRlZ2VyX2FyaXRobWV0aWM8VAotICAgICwgYml0d2lzZTxUCi0gICAgLCB1bml0X3N0ZXBwYWJsZTxUCi0gICAgICA+ID4gPiA+IHt9OwotCi0vLyAgSXRlcmF0b3IgaGVscGVyIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IEplcmVteSBTaWVrKSAtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAoSW5wdXQgYW5kIG91dHB1dCBpdGVyYXRvciBoZWxwZXJzIGNvbnRyaWJ1dGVkIGJ5IERhcnlsZSBXYWxrZXIpIC0tLS0tLS0vLwotLy8gIChDaGFuZ2VkIHRvIHVzZSBjb21iaW5lZCBvcGVyYXRvciBjbGFzc2VzIGJ5IERhcnlsZSBXYWxrZXIpIC0tLS0tLS0tLS0tLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICBjbGFzcyBWLAotICAgICAgICAgIGNsYXNzIEQgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICBjbGFzcyBQID0gViBjb25zdCAqLAotICAgICAgICAgIGNsYXNzIFIgPSBWIGNvbnN0ICY+Ci1zdHJ1Y3QgaW5wdXRfaXRlcmF0b3JfaGVscGVyCi0gIDogaW5wdXRfaXRlcmF0YWJsZTxULCBQCi0gICwgbmRuYm9vc3Q6Oml0ZXJhdG9yPHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnLCBWLCBELCBQLCBSCi0gICAgPiA+IHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG91dHB1dF9pdGVyYXRvcl9oZWxwZXIKLSAgOiBvdXRwdXRfaXRlcmF0YWJsZTxUCi0gICwgbmRuYm9vc3Q6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZAotICA+ID4KLXsKLSAgVCYgb3BlcmF0b3IqKCkgIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQmPigqdGhpcyk7IH0KLSAgVCYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQmPigqdGhpcyk7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULAotICAgICAgICAgIGNsYXNzIFYsCi0gICAgICAgICAgY2xhc3MgRCA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgIGNsYXNzIFAgPSBWKiwKLSAgICAgICAgICBjbGFzcyBSID0gViY+Ci1zdHJ1Y3QgZm9yd2FyZF9pdGVyYXRvcl9oZWxwZXIKLSAgOiBmb3J3YXJkX2l0ZXJhdGFibGU8VCwgUAotICAsIG5kbmJvb3N0OjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWLCBELCBQLCBSCi0gICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICBjbGFzcyBWLAotICAgICAgICAgIGNsYXNzIEQgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICBjbGFzcyBQID0gViosCi0gICAgICAgICAgY2xhc3MgUiA9IFYmPgotc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfaGVscGVyCi0gIDogYmlkaXJlY3Rpb25hbF9pdGVyYXRhYmxlPFQsIFAKLSAgLCBuZG5ib29zdDo6aXRlcmF0b3I8c3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgViwgRCwgUCwgUgotICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgY2xhc3MgViwgCi0gICAgICAgICAgY2xhc3MgRCA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgIGNsYXNzIFAgPSBWKiwKLSAgICAgICAgICBjbGFzcyBSID0gViY+Ci1zdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl9oZWxwZXIKLSAgOiByYW5kb21fYWNjZXNzX2l0ZXJhdGFibGU8VCwgUCwgRCwgUgotICAsIG5kbmJvb3N0OjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBWLCBELCBQLCBSCi0gICAgPiA+Ci17Ci0gIGZyaWVuZCBEIHJlcXVpcmVzX2RpZmZlcmVuY2Vfb3BlcmF0b3IoY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgewotICAgIHJldHVybiB4IC0geTsKLSAgfQotfTsgLy8gcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl9oZWxwZXIKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoX19zZ2kpICYmICFkZWZpbmVkKF9fR05VQ19fKQotI3ByYWdtYSByZXNldCB3b2ZmIDEyMzQKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfT1BFUkFUT1JTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY5MjYzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsLmhwcCIKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhM2RiMTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0vLyBSZXZpc2lvbnM6Ci0vLyAyNyBBcHIgMjAwOCAoaW1wcm92ZWQgc3dhcCkgRmVybmFuZG8gQ2FjY2lvbGEsIE5pZWxzIERla2tlciwgVGhvcnN0ZW4gT3R0b3NlbgotLy8KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgPG5ldz4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25vbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvY29tcGFyZV9wb2ludGVlcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsX2Z3ZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEyMDApCi0vLyBWQzYuMCBoYXMgdGhlIGZvbGxvd2luZyBidWc6Ci0vLyAgIFdoZW4gYSB0ZW1wbGF0ZWQgYXNzaWdubWVudCBvcGVyYXRvciBleGlzdCwgYW4gaW1wbGljaXQgY29udmVyc2lvbgotLy8gICBjb25zdHJ1Y3RpbmcgYW4gb3B0aW9uYWw8VD4gaXMgdXNlZCB3aGVuIGFzc2lnbWVudCBvZiB0aGUgZm9ybToKLS8vICAgICBvcHRpb25hbDxUPiBvcHQgOyBvcHQgPSBUKC4uLik7Ci0vLyAgIGlzIGNvbXBpbGVkLgotLy8gICBIb3dldmVyLCBvcHRpb25hbCdzIGN0b3IgaXMgX2V4cGxpY2l0XyBhbmQgdGhlIGFzc2lnbmVtdCBzaG91bGRuJ3QgY29tcGlsZS4KLS8vICAgVGhlcmVmb3JlLCBmb3IgVkM2LjAgdGVtcGxhdGVkIGFzc2lnbm1lbnQgaXMgZGlzYWJsZWQuCi0vLwotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9OT19DT05WRVJUSU5HX0FTU0lHTk1FTlQKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotLy8gVkM3LjAgaGFzIHRoZSBmb2xsb3dpbmcgYnVnOgotLy8gICBXaGVuIGJvdGggYSBub24tdGVtcGxhdGUgYW5kIGEgdGVtcGxhdGUgY29weS1jdG9yIGV4aXN0Ci0vLyAgIGFuZCB0aGUgdGVtcGxhdGVkIHZlcnNpb24gaXMgbWFkZSAnZXhwbGljaXQnLCB0aGUgZXhwbGljaXQgaXMgYWxzbwotLy8gICBnaXZlbiB0byB0aGUgbm9uLXRlbXBsYXRlZCB2ZXJzaW9uLCBtYWtpbmcgdGhlIGNsYXNzIG5vbi1pbXBsaWNpdGVseS1jb3B5YWJsZS4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX05PX0NPTlZFUlRJTkdfQ09QWV9DVE9SCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiw8PTcwMCkKLS8vIEFGQUlDVCBvbmx5IFZDNy4xIGNvcnJlY3RseSByZXNvbHZlcyB0aGUgb3ZlcmxvYWQgc2V0Ci0vLyB0aGF0IGluY2x1ZGVzIHRoZSBpbi1wbGFjZSBmYWN0b3J5IHRha2luZyBmdW5jdGlvbnMsCi0vLyBzbyBmb3IgdGhlIG90aGVyIFZDIHZlcnNpb25zLCBpbi1wbGFjZSBmYWN0b3J5IHN1cHBvcnQKLS8vIGlzIGRpc2FibGVkCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU1MSkKLS8vIEJDQiAoNS41LjEpIGNhbm5vdCBwYXJzZSB0aGUgbmVzdGVkIHRlbXBsYXRlIHN0cnVjdCBpbiBhbiBpbnBsYWNlIGZhY3RvcnkuCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkgKQotLy8gQkNCICh1cCB0byA1LjY0KSBoYXMgdGhlIGZvbGxvd2luZyBidWc6Ci0vLyAgIElmIHRoZXJlIGlzIGEgbWVtYmVyIGZ1bmN0aW9uL29wZXJhdG9yIHRlbXBsYXRlIG9mIHRoZSBmb3JtCi0vLyAgICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4gbWZ1bmMoIEV4cHIgZXhwciApIDsKLS8vICAgc29tZSBjYWxscyBhcmUgcmVzb2x2ZWQgdG8gdGhpcyBldmVuIGlmIHRoZXJlIGFyZSBvdGhlciBiZXR0ZXIgbWF0Y2hlcy4KLS8vICAgVGhlIGVmZmVjdCBvZiB0aGlzIGJ1ZyBpcyB0aGF0IGNhbGxzIHRvIGNvbnZlcnRpbmcgY3RvcnMgYW5kIGFzc2lnbm1lbnRzCi0vLyAgIGFyZSBpbmNyb3JyZWN0bHkgc2luayB0byB0aGlzIGdlbmVyYWwgY2F0Y2gtYWxsIG1lbWJlciBmdW5jdGlvbiB0ZW1wbGF0ZSBhcyBzaG93biBhYm92ZS4KLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfV0VBS19PVkVSTE9BRF9SRVNPTFVUSU9OCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fKSA+IDMwMiBcCi0gICAgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKLS8vIEdDQyBzaW5jZSAzLjMgaGFzIG1heV9hbGlhcyBhdHRyaWJ1dGUgdGhhdCBoZWxwcyB0byBhbGxldmlhdGUgb3B0aW1pemVyIGlzc3VlcyB3aXRoCi0vLyByZWdhcmQgdG8gdmlvbGF0aW9uIG9mIHRoZSBzdHJpY3QgYWxpYXNpbmcgcnVsZXMuIFRoZSBvcHRpb25hbDwgVCA+IHN0b3JhZ2UgdHlwZSBpcyBtYXJrZWQKLS8vIHdpdGggdGhpcyBhdHRyaWJ1dGUgaW4gb3JkZXIgdG8gbGV0IHRoZSBjb21waWxlciBrbm93IHRoYXQgaXQgd2lsbCBhbGlhcyBvYmplY3RzIG9mIHR5cGUgVAotLy8gYW5kIHNpbGVuY2UgY29tcGlsYXRpb24gd2FybmluZ3MuCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX0RFVEFJTF9VU0VfQVRUUklCVVRFX01BWV9BTElBUwotI2VuZGlmCi0KLS8vIERhbmllbCBXYWxsaW4gZGlzY292ZXJlZCB0aGF0IGJpbmQvYXBwbHkuaHBwIGJhZGx5IGludGVyYWN0cyB3aXRoIHRoZSBhcHBseTw+Ci0vLyBtZW1iZXIgdGVtcGxhdGUgb2YgYSBmYWN0b3J5IGFzIHVzZWQgaW4gdGhlIG9wdGlvbmFsPD4gaW1wbGVtZW50YXRpb24uCi0vLyBIZSBwcm9wb3NlZCB0aGlzIHNpbXBsZSBmaXggd2hpY2ggaXMgdG8gbW92ZSB0aGUgY2FsbCB0byBhcHBseTw+IG91dHNpZGUKLS8vIG5hbWVzcGFjZSBuZG5ib29zdC4KLW5hbWVzcGFjZSBuZG5ib29zdF9vcHRpb25hbF9kZXRhaWwKLXsKLSAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEZhY3Rvcnk+Ci0gIGlubGluZSB2b2lkIGNvbnN0cnVjdChGYWN0b3J5IGNvbnN0JiBmYWN0b3J5LCB2b2lkKiBhZGRyZXNzKQotICB7Ci0gICAgZmFjdG9yeS5ORE5CT09TVF9ORVNURURfVEVNUExBVEUgYXBwbHk8VD4oYWRkcmVzcyk7Ci0gIH0KLX0KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1jbGFzcyBpbl9wbGFjZV9mYWN0b3J5X2Jhc2UgOwotY2xhc3MgdHlwZWRfaW5fcGxhY2VfZmFjdG9yeV9iYXNlIDsKLQotLy8gVGhpcyBmb3J3YXJkIGlzIG5lZWRlZCB0byByZWZlciB0byBuYW1lc3BhY2Ugc2NvcGUgc3dhcCBmcm9tIHRoZSBtZW1iZXIgc3dhcAotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwICggb3B0aW9uYWw8VD4mIHgsIG9wdGlvbmFsPFQ+JiB5ICk7Ci0KLW5hbWVzcGFjZSBvcHRpb25hbF9kZXRhaWwgewotCi0vLyBUaGlzIGxvY2FsIGNsYXNzIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGF0IGluICJhbGlnbmVkX3N0b3JhZ2UuaHBwIgotLy8gYmVjYXVzZSBJJ3ZlIGZvdW5kIHRoZSAnb2ZmaWNpYWwnIGNsYXNzIHRvIElDRSBCQ0I1LjUKLS8vIHdoZW4gc29tZSB0eXBlcyBhcmUgdXNlZCB3aXRoIG9wdGlvbmFsPD4KLS8vIChkdWUgdG8gc2l6ZW9mKCkgcGFzc2VkIGRvd24gYXMgYSBub24tdHlwZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIpCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGFsaWduZWRfc3RvcmFnZQotewotICAgIC8vIEJvcmxhbmQgSUNFcyBpZiB1bm5hbWVkIHVuaW9ucyBhcmUgdXNlZCBmb3IgdGhpcyEKLSAgICB1bmlvbgotICAgIC8vIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5ncyBhYm91dCBicmVha2luZyBzdHJpY3QgYWxpYXNpbmcgcnVsZXMgd2hlbiBjYXN0aW5nIHN0b3JhZ2UgYWRkcmVzcyB0byBUKgotI2lmIGRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfREVUQUlMX1VTRV9BVFRSSUJVVEVfTUFZX0FMSUFTKQotICAgIF9fYXR0cmlidXRlX18oKG1heV9hbGlhcykpCi0jZW5kaWYKLSAgICBkdW1teV91Ci0gICAgewotICAgICAgICBjaGFyIGRhdGFbIHNpemVvZihUKSBdOwotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVfd2l0aF9hbGlnbm1lbnQ8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZSA+Ojp0eXBlIGFsaWduZXJfOwotICAgIH0gZHVtbXlfIDsKLQotICBwdWJsaWM6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX0RFVEFJTF9VU0VfQVRUUklCVVRFX01BWV9BTElBUykKLSAgICB2b2lkIGNvbnN0KiBhZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gJmR1bW15XzsgfQotICAgIHZvaWQgICAgICAqIGFkZHJlc3MoKSAgICAgICB7IHJldHVybiAmZHVtbXlfOyB9Ci0jZWxzZQotICAgIHZvaWQgY29uc3QqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBkdW1teV8uZGF0YTsgfQotICAgIHZvaWQgICAgICAqIGFkZHJlc3MoKSAgICAgICB7IHJldHVybiBkdW1teV8uZGF0YTsgfQotI2VuZGlmCi19IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCB0eXBlc193aGVuX2lzbnRfcmVmCi17Ci0gIHR5cGVkZWYgVCBjb25zdCYgcmVmZXJlbmNlX2NvbnN0X3R5cGUgOwotICB0eXBlZGVmIFQgJiAgICAgIHJlZmVyZW5jZV90eXBlIDsKLSAgdHlwZWRlZiBUIGNvbnN0KiBwb2ludGVyX2NvbnN0X3R5cGUgOwotICB0eXBlZGVmIFQgKiAgICAgIHBvaW50ZXJfdHlwZSA7Ci0gIHR5cGVkZWYgVCBjb25zdCYgYXJndW1lbnRfdHlwZSA7Ci19IDsKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdHlwZXNfd2hlbl9pc19yZWYKLXsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgcmF3X3R5cGUgOwotCi0gIHR5cGVkZWYgcmF3X3R5cGUmIHJlZmVyZW5jZV9jb25zdF90eXBlIDsKLSAgdHlwZWRlZiByYXdfdHlwZSYgcmVmZXJlbmNlX3R5cGUgOwotICB0eXBlZGVmIHJhd190eXBlKiBwb2ludGVyX2NvbnN0X3R5cGUgOwotICB0eXBlZGVmIHJhd190eXBlKiBwb2ludGVyX3R5cGUgOwotICB0eXBlZGVmIHJhd190eXBlJiBhcmd1bWVudF90eXBlIDsKLX0gOwotCi1zdHJ1Y3Qgb3B0aW9uYWxfdGFnIHt9IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIG9wdGlvbmFsX2Jhc2UgOiBwdWJsaWMgb3B0aW9uYWxfdGFnCi17Ci0gIHByaXZhdGUgOgotCi0gICAgdHlwZWRlZgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0jZW5kaWYKLSAgICA6Om5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8VD46OnR5cGUgaW50ZXJuYWxfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIGFsaWduZWRfc3RvcmFnZTxpbnRlcm5hbF90eXBlPiBzdG9yYWdlX3R5cGUgOwotCi0gICAgdHlwZWRlZiB0eXBlc193aGVuX2lzbnRfcmVmPFQ+IHR5cGVzX3doZW5fbm90X3JlZiA7Ci0gICAgdHlwZWRlZiB0eXBlc193aGVuX2lzX3JlZjxUPiAgIHR5cGVzX3doZW5fcmVmICAgOwotCi0gICAgdHlwZWRlZiBvcHRpb25hbF9iYXNlPFQ+IHRoaXNfdHlwZSA7Ci0KLSAgcHJvdGVjdGVkIDoKLQotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlIDsKLQotICAgIHR5cGVkZWYgbXBsOjp0cnVlXyAgaXNfcmVmZXJlbmNlX3RhZyA7Ci0gICAgdHlwZWRlZiBtcGw6OmZhbHNlXyBpc19ub3RfcmVmZXJlbmNlX3RhZyA7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaXNfcmVmZXJlbmNlPFQ+Ojp0eXBlIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUgOwotCi0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbXBsOjppZl88aXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSx0eXBlc193aGVuX3JlZix0eXBlc193aGVuX25vdF9yZWY+Ojp0eXBlIHR5cGVzIDsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgdHlwZWRlZiBib29sICh0aGlzX3R5cGU6Oip1bnNwZWNpZmllZF9ib29sX3R5cGUpKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OnJlZmVyZW5jZV90eXBlICAgICAgIHJlZmVyZW5jZV90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OnJlZmVyZW5jZV9jb25zdF90eXBlIHJlZmVyZW5jZV9jb25zdF90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OnBvaW50ZXJfdHlwZSAgICAgICAgIHBvaW50ZXJfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVzOjpwb2ludGVyX2NvbnN0X3R5cGUgICBwb2ludGVyX2NvbnN0X3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlczo6YXJndW1lbnRfdHlwZSAgICAgICAgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IHVuaW5pdGlhbGl6ZWQuCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcHRpb25hbF9iYXNlKCkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IHVuaW5pdGlhbGl6ZWQuCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcHRpb25hbF9iYXNlICggbm9uZV90ICkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IGluaXRpYWxpemVkIHdpdGggJ3ZhbCcuCi0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbF9iYXNlICggYXJndW1lbnRfdHlwZSB2YWwgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBjb25zdHJ1Y3QodmFsKTsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IGluaXRpYWxpemVkIHdpdGggJ3ZhbCcgSUZGIGNvbmQgaXMgdHJ1ZSwgb3RoZXJ3aXNlIGNyZWF0ZXMgYW4gdW5pbml0aWFsemVkIG9wdGlvbmFsPFQ+LgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWxfYmFzZSAoIGJvb2wgY29uZCwgYXJndW1lbnRfdHlwZSB2YWwgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBpZiAoIGNvbmQgKQotICAgICAgICBjb25zdHJ1Y3QodmFsKTsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIGFub3RoZXIgb3B0aW9uYWw8VD4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChUIGNvbnN0JikgZG9lcwotICAgIG9wdGlvbmFsX2Jhc2UgKCBvcHRpb25hbF9iYXNlIGNvbnN0JiByaHMgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgY29uc3RydWN0KHJocy5nZXRfaW1wbCgpKTsKLSAgICB9Ci0KLQotICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgYm90aCBjb252ZXJ0aW5nIGFuZCBpbi1wbGFjZSBjb25zdHJ1Y3Rpb25zLgotICAgIC8vIERlcml2ZWQgY2xhc3NlcyB1c2UgdGhlICd0YWcnIHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUKLSAgICAvLyBpbXBsZW1lbnRhdGlvbiAodGhlIGNvcnJlY3QgJ2NvbnN0cnVjdCgpJyBvdmVybG9hZCkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIGV4cGxpY2l0IG9wdGlvbmFsX2Jhc2UgKCBFeHByIGNvbnN0JiBleHByLCBFeHByIGNvbnN0KiB0YWcgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBjb25zdHJ1Y3QoZXhwcix0YWcpOwotICAgIH0KLQotCi0KLSAgICAvLyBOby10aHJvdyAoYXNzdW1pbmcgVDo6flQoKSBkb2Vzbid0KQotICAgIH5vcHRpb25hbF9iYXNlKCkgeyBkZXN0cm95KCkgOyB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gYW5vdGhlciBvcHRpb25hbDxUPiAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICB2b2lkIGFzc2lnbiAoIG9wdGlvbmFsX2Jhc2UgY29uc3QmIHJocyApCi0gICAgewotICAgICAgaWYgKGlzX2luaXRpYWxpemVkKCkpCi0gICAgICB7Ci0gICAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICAgICAgIGFzc2lnbl92YWx1ZShyaHMuZ2V0X2ltcGwoKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICk7Ci0gICAgICAgIGVsc2UgZGVzdHJveSgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgICBjb25zdHJ1Y3QocmhzLmdldF9pbXBsKCkpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhbm90aGVyIF9jb252ZXJ0aWJsZV8gb3B0aW9uYWw8VT4gKGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICB2b2lkIGFzc2lnbiAoIG9wdGlvbmFsPFU+IGNvbnN0JiByaHMgKQotICAgIHsKLSAgICAgIGlmIChpc19pbml0aWFsaXplZCgpKQotICAgICAgewotICAgICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgICAgICBhc3NpZ25fdmFsdWUoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4ocmhzLmdldCgpKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICk7Ci0gICAgICAgIGVsc2UgZGVzdHJveSgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgICBjb25zdHJ1Y3Qoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4ocmhzLmdldCgpKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gQXNzaWducyBmcm9tIGEgVCAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICB2b2lkIGFzc2lnbiAoIGFyZ3VtZW50X3R5cGUgdmFsICkKLSAgICB7Ci0gICAgICBpZiAoaXNfaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgICAgYXNzaWduX3ZhbHVlKHZhbCwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICk7Ci0gICAgICBlbHNlIGNvbnN0cnVjdCh2YWwpOwotICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSAibm9uZSIsIGRlc3Ryb3lpbmcgdGhlIGN1cnJlbnQgdmFsdWUsIGlmIGFueSwgbGVhdmluZyB0aGlzIFVOSU5JVElBTElaRUQKLSAgICAvLyBOby10aHJvdyAoYXNzdW1pbmcgVDo6flQoKSBkb2Vzbid0KQotICAgIHZvaWQgYXNzaWduICggbm9uZV90ICkgeyBkZXN0cm95KCk7IH0KLQotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVAotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBhc3NpZ25fZXhwciAoIEV4cHIgY29uc3QmIGV4cHIsIEV4cHIgY29uc3QqIHRhZyApCi0gICAgICB7Ci0gICAgICAgIGlmIChpc19pbml0aWFsaXplZCgpKQotICAgICAgICAgICAgIGFzc2lnbl9leHByX3RvX2luaXRpYWxpemVkKGV4cHIsdGFnKTsKLSAgICAgICAgZWxzZSBjb25zdHJ1Y3QoZXhwcix0YWcpOwotICAgICAgfQotI2VuZGlmCi0KLSAgcHVibGljIDoKLQotICAgIC8vIERlc3Ryb3lzIHRoZSBjdXJyZW50IHZhbHVlLCBpZiBhbnksIGxlYXZpbmcgdGhpcyBVTklOSVRJQUxJWkVECi0gICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICB2b2lkIHJlc2V0KCkgeyBkZXN0cm95KCk7IH0KLQotICAgIC8vIFJlcGxhY2VzIHRoZSBjdXJyZW50IHZhbHVlIC1pZiBhbnktIHdpdGggJ3ZhbCcKLSAgICB2b2lkIHJlc2V0ICggYXJndW1lbnRfdHlwZSB2YWwgKSB7IGFzc2lnbih2YWwpOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLAotICAgIC8vIHJldHVybnMgTlVMTC4KLSAgICAvLyBOby10aHJvdwotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBnZXRfcHRyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZCA/IGdldF9wdHJfaW1wbCgpIDogMCA7IH0KLSAgICBwb2ludGVyX3R5cGUgICAgICAgZ2V0X3B0cigpICAgICAgIHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQgPyBnZXRfcHRyX2ltcGwoKSA6IDAgOyB9Ci0KLSAgICBib29sIGlzX2luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZCA7IH0KLQotICBwcm90ZWN0ZWQgOgotCi0gICAgdm9pZCBjb25zdHJ1Y3QgKCBhcmd1bWVudF90eXBlIHZhbCApCi0gICAgIHsKLSAgICAgICBuZXcgKG1fc3RvcmFnZS5hZGRyZXNzKCkpIGludGVybmFsX3R5cGUodmFsKSA7Ci0gICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQKLSAgICAvLyBDb25zdHJ1Y3RzIGluLXBsYWNlIHVzaW5nIHRoZSBnaXZlbiBmYWN0b3J5Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGNvbnN0cnVjdCAoIEV4cHIgY29uc3QmIGZhY3RvcnksIGluX3BsYWNlX2ZhY3RvcnlfYmFzZSBjb25zdCogKQotICAgICB7Ci0gICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCAoIDo6bmRuYm9vc3Q6Om1wbDo6bm90Xzxpc19yZWZlcmVuY2VfcHJlZGljYXRlPjo6dmFsdWUgKSA7Ci0gICAgICAgbmRuYm9vc3Rfb3B0aW9uYWxfZGV0YWlsOjpjb25zdHJ1Y3Q8dmFsdWVfdHlwZT4oZmFjdG9yeSwgbV9zdG9yYWdlLmFkZHJlc3MoKSk7Ci0gICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RzIGluLXBsYWNlIHVzaW5nIHRoZSBnaXZlbiB0eXBlZCBmYWN0b3J5Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGNvbnN0cnVjdCAoIEV4cHIgY29uc3QmIGZhY3RvcnksIHR5cGVkX2luX3BsYWNlX2ZhY3RvcnlfYmFzZSBjb25zdCogKQotICAgICB7Ci0gICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCAoIDo6bmRuYm9vc3Q6Om1wbDo6bm90Xzxpc19yZWZlcmVuY2VfcHJlZGljYXRlPjo6dmFsdWUgKSA7Ci0gICAgICAgZmFjdG9yeS5hcHBseShtX3N0b3JhZ2UuYWRkcmVzcygpKSA7Ci0gICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgYXNzaWduX2V4cHJfdG9faW5pdGlhbGl6ZWQgKCBFeHByIGNvbnN0JiBmYWN0b3J5LCBpbl9wbGFjZV9mYWN0b3J5X2Jhc2UgY29uc3QqIHRhZyApCi0gICAgIHsKLSAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgY29uc3RydWN0KGZhY3RvcnksdGFnKTsKLSAgICAgfQotCi0gICAgLy8gQ29uc3RydWN0cyBpbi1wbGFjZSB1c2luZyB0aGUgZ2l2ZW4gdHlwZWQgZmFjdG9yeQotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBhc3NpZ25fZXhwcl90b19pbml0aWFsaXplZCAoIEV4cHIgY29uc3QmIGZhY3RvcnksIHR5cGVkX2luX3BsYWNlX2ZhY3RvcnlfYmFzZSBjb25zdCogdGFnICkKLSAgICAgewotICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICBjb25zdHJ1Y3QoZmFjdG9yeSx0YWcpOwotICAgICB9Ci0jZW5kaWYKLQotICAgIC8vIENvbnN0cnVjdHMgdXNpbmcgYW55IGV4cHJlc3Npb24gaW1wbGljaXRlbHkgY29udmVydGlibGUgdG8gdGhlIHNpbmdsZSBhcmd1bWVudAotICAgIC8vIG9mIGEgb25lLWFyZ3VtZW50IFQgY29uc3RydWN0b3IuCi0gICAgLy8gQ29udmVydGluZyBjb25zdHJ1Y3Rpb25zIG9mIG9wdGlvbmFsPFQ+IGZyb20gb3B0aW9uYWw8VT4gdXNlcyB0aGlzIGZ1bmN0aW9uIHdpdGgKLSAgICAvLyAnRXhwcicgYmVpbmcgb2YgdHlwZSAnVScgYW5kIHJlbHlpbmcgb24gYSBjb252ZXJ0aW5nIGNvbnN0cnVjdG9yIG9mIFQgZnJvbSBVLgotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBjb25zdHJ1Y3QgKCBFeHByIGNvbnN0JiBleHByLCB2b2lkIGNvbnN0KiApCi0gICAgIHsKLSAgICAgICBuZXcgKG1fc3RvcmFnZS5hZGRyZXNzKCkpIGludGVybmFsX3R5cGUoZXhwcikgOwotICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlIDsKLSAgICAgfQotCi0gICAgLy8gQXNzaWducyB1c2luZyBhIGZvcm0gYW55IGV4cHJlc3Npb24gaW1wbGljaXRlbHkgY29udmVydGlibGUgdG8gdGhlIHNpbmdsZSBhcmd1bWVudAotICAgIC8vIG9mIGEgVCdzIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0gICAgLy8gQ29udmVydGluZyBhc3NpZ25tZW50cyBvZiBvcHRpb25hbDxUPiBmcm9tIG9wdGlvbmFsPFU+IHVzZXMgdGhpcyBmdW5jdGlvbiB3aXRoCi0gICAgLy8gJ0V4cHInIGJlaW5nIG9mIHR5cGUgJ1UnIGFuZCByZWx5aW5nIG9uIGEgY29udmVydGluZyBhc3NpZ25tZW50IG9mIFQgZnJvbSBVLgotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBhc3NpZ25fZXhwcl90b19pbml0aWFsaXplZCAoIEV4cHIgY29uc3QmIGV4cHIsIHZvaWQgY29uc3QqICkKLSAgICAgewotICAgICAgIGFzc2lnbl92YWx1ZShleHByLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkpOwotICAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9PUFRJT05BTF9XRUFLX09WRVJMT0FEX1JFU09MVVRJT04KLSAgICAvLyBCQ0I1LjY0IChhbmQgcHJvYmFibHkgbG93ZXIgdmVyc2lvbnMpIHdvcmthcm91bmQuCi0gICAgLy8gICBUaGUgaW4tcGxhY2UgZmFjdG9yaWVzIGFyZSBzdXBwb3J0ZWQgYnkgbWVhbnMgb2YgY2F0Y2gtYWxsIGNvbnN0cnVjdG9ycwotICAgIC8vICAgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3JzICh0aGUgZnVuY3Rpb25zIGFyZSBwYXJhbWV0ZXJpemVkIGluIHRlcm1zIG9mCi0gICAgLy8gICBhbiBhcmJpdHJhcnkgJ0V4cHInIHR5cGUpCi0gICAgLy8gICBUaGlzIGNvbXBpbGVyIGluY29ycmVjdGx5IHJlc29sdmVzIHRoZSBvdmVybG9hZCBzZXQgYW5kIHNpbmtzIG9wdGlvbmFsPFQ+IGFuZCBvcHRpb25hbDxVPgotICAgIC8vICAgdG8gdGhlICdFeHByJy10YWtpbmcgZnVuY3Rpb25zIGV2ZW4gdGhvdWdoIGV4cGxpY2l0IG92ZXJsb2FkcyBhcmUgcHJlc2VudCBmb3IgdGhlbS4KLSAgICAvLyAgIFRodXMsIHRoZSBmb2xsb3dpbmcgb3ZlcmxvYWQgaXMgbmVlZGVkIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZSAnbGhzJwotICAgIC8vICAgaXMgYW5vdGhlciBvcHRpb25hbC4KLSAgICAvLwotICAgIC8vIEZvciBWQzw9NzAgY29tcGlsZXJzIHRoaXMgd29ya2Fyb3VuZCBkb3Nlbid0IHdvcmsgYmVjYXN1ZSB0aGUgY29tbnBpbGVyIGlzc3VlcyBhbmQgZXJyb3IKLSAgICAvLyBpbnN0ZWFkIG9mIGNob29zaW5nIHRoZSB3cm9uZyBvdmVybG9hZAotICAgIC8vCi0gICAgLy8gTm90aWNlIHRoYXQgJ0V4cHInIHdpbGwgYmUgb3B0aW9uYWw8VD4gb3Igb3B0aW9uYWw8VT4gKGJ1dCBub3Qgb3B0aW9uYWxfYmFzZTwuLj4pCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGNvbnN0cnVjdCAoIEV4cHIgY29uc3QmIGV4cHIsIG9wdGlvbmFsX3RhZyBjb25zdCogKQotICAgICB7Ci0gICAgICAgaWYgKCBleHByLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgIHsKLSAgICAgICAgIC8vIEFuIGV4Y2VwdGlvbiBjYW4gYmUgdGhyb3duIGhlcmUuCi0gICAgICAgICAvLyBJdCBpdCBoYXBwZW5zLCBUSElTIHdpbGwgYmUgbGVmdCB1bmluaXRpYWxpemVkLgotICAgICAgICAgbmV3IChtX3N0b3JhZ2UuYWRkcmVzcygpKSBpbnRlcm5hbF90eXBlKGV4cHIuZ2V0KCkpIDsKLSAgICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlIDsKLSAgICAgICB9Ci0gICAgIH0KLSNlbmRpZgotCi0gICAgdm9pZCBhc3NpZ25fdmFsdWUgKCBhcmd1bWVudF90eXBlIHZhbCwgaXNfbm90X3JlZmVyZW5jZV90YWcgKSB7IGdldF9pbXBsKCkgPSB2YWw7IH0KLSAgICB2b2lkIGFzc2lnbl92YWx1ZSAoIGFyZ3VtZW50X3R5cGUgdmFsLCBpc19yZWZlcmVuY2VfdGFnICAgICApIHsgY29uc3RydWN0KHZhbCk7IH0KLQotICAgIHZvaWQgZGVzdHJveSgpCi0gICAgewotICAgICAgaWYgKCBtX2luaXRpYWxpemVkICkKLSAgICAgICAgZGVzdHJveV9pbXBsKGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSkgOwotICAgIH0KLQotICAgIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSBzYWZlX2Jvb2woKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkID8gJnRoaXNfdHlwZTo6aXNfaW5pdGlhbGl6ZWQgOiAwIDsgfQotCi0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgZ2V0X2ltcGwoKSBjb25zdCB7IHJldHVybiBkZXJlZmVyZW5jZShnZXRfb2JqZWN0KCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGdldF9pbXBsKCkgICAgICAgeyByZXR1cm4gZGVyZWZlcmVuY2UoZ2V0X29iamVjdCgpLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKSA7IH0KLQotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBnZXRfcHRyX2ltcGwoKSBjb25zdCB7IHJldHVybiBjYXN0X3B0cihnZXRfb2JqZWN0KCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApIDsgfQotICAgIHBvaW50ZXJfdHlwZSAgICAgICBnZXRfcHRyX2ltcGwoKSAgICAgICB7IHJldHVybiBjYXN0X3B0cihnZXRfb2JqZWN0KCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApIDsgfQotCi0gIHByaXZhdGUgOgotCi0gICAgLy8gaW50ZXJuYWxfdHlwZSBjYW4gYmUgZWl0aGVyIFQgb3IgcmVmZXJlbmNlX2NvbnRlbnQ8VD4KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX0RFVEFJTF9VU0VfQVRUUklCVVRFX01BWV9BTElBUykKLSAgICAvLyBUaGlzIHdvcmthcm91bmQgaXMgc3VwcG9zZWQgdG8gc2lsZW5jZSBHQ0Mgd2FybmluZ3MgYWJvdXQgYnJva2VuIHN0cmljdCBhbGlhc2luZyBydWxlcwotICAgIGludGVybmFsX3R5cGUgY29uc3QqIGdldF9vYmplY3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5pb24geyB2b2lkIGNvbnN0KiBhcF9wdm9pZDsgaW50ZXJuYWxfdHlwZSBjb25zdCogYXNfcHR5cGU7IH0gY2FzdGVyID0geyBtX3N0b3JhZ2UuYWRkcmVzcygpIH07Ci0gICAgICAgIHJldHVybiBjYXN0ZXIuYXNfcHR5cGU7Ci0gICAgfQotICAgIGludGVybmFsX3R5cGUgKiAgICAgIGdldF9vYmplY3QoKQotICAgIHsKLSAgICAgICAgdW5pb24geyB2b2lkKiBhcF9wdm9pZDsgaW50ZXJuYWxfdHlwZSogYXNfcHR5cGU7IH0gY2FzdGVyID0geyBtX3N0b3JhZ2UuYWRkcmVzcygpIH07Ci0gICAgICAgIHJldHVybiBjYXN0ZXIuYXNfcHR5cGU7Ci0gICAgfQotI2Vsc2UKLSAgICBpbnRlcm5hbF90eXBlIGNvbnN0KiBnZXRfb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50ZXJuYWxfdHlwZSBjb25zdCo+KG1fc3RvcmFnZS5hZGRyZXNzKCkpOyB9Ci0gICAgaW50ZXJuYWxfdHlwZSAqICAgICAgZ2V0X29iamVjdCgpICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludGVybmFsX3R5cGUgKj4gICAgIChtX3N0b3JhZ2UuYWRkcmVzcygpKTsgfQotI2VuZGlmCi0KLSAgICAvLyByZWZlcmVuY2VfY29udGVudDxUPiBsYWNrcyBhbiBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIFQmLCBzbyB0aGUgZm9sbG93aW5nIGlzIG5lZWRlZCB0byBvYnRhaW4gYSBwcm9wZXIgcmVmZXJlbmNlLgotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlIGNvbnN0KiBwLCBpc19ub3RfcmVmZXJlbmNlX3RhZyApIGNvbnN0IHsgcmV0dXJuICpwIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlKiAgICAgICBwLCBpc19ub3RfcmVmZXJlbmNlX3RhZyApICAgICAgIHsgcmV0dXJuICpwIDsgfQotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlIGNvbnN0KiBwLCBpc19yZWZlcmVuY2VfdGFnICAgICApIGNvbnN0IHsgcmV0dXJuIHAtPmdldCgpIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlKiAgICAgICBwLCBpc19yZWZlcmVuY2VfdGFnICAgICApICAgICAgIHsgcmV0dXJuIHAtPmdldCgpIDsgfQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkpCi0gICAgdm9pZCBkZXN0cm95X2ltcGwgKCBpc19ub3RfcmVmZXJlbmNlX3RhZyApIHsgZ2V0X3B0cl9pbXBsKCktPmludGVybmFsX3R5cGU6On5pbnRlcm5hbF90eXBlKCkgOyBtX2luaXRpYWxpemVkID0gZmFsc2UgOyB9Ci0jZWxzZQotICAgIHZvaWQgZGVzdHJveV9pbXBsICggaXNfbm90X3JlZmVyZW5jZV90YWcgKSB7IGdldF9wdHJfaW1wbCgpLT5UOjp+VCgpIDsgbV9pbml0aWFsaXplZCA9IGZhbHNlIDsgfQotI2VuZGlmCi0KLSAgICB2b2lkIGRlc3Ryb3lfaW1wbCAoIGlzX3JlZmVyZW5jZV90YWcgICAgICkgeyBtX2luaXRpYWxpemVkID0gZmFsc2UgOyB9Ci0KLSAgICAvLyBJZiBUIGlzIG9mIHJlZmVyZW5jZSB0eXBlLCB0cnlpbmcgdG8gZ2V0IGEgcG9pbnRlciB0byB0aGUgaGVsZCB2YWx1ZSBtdXN0IHJlc3VsdCBpbiBhIGNvbXBpbGUtdGltZSBlcnJvci4KLSAgICAvLyBEZWNlbnQgY29tcGlsZXJzIHNob3VsZCBkaXNhbGxvdyBjb252ZXJzaW9ucyBmcm9tIHJlZmVyZW5jZV9jb250ZW50PFQ+KiB0byBUKiwgYnV0IGp1c3QgaW4gY2FzZSwKLSAgICAvLyB0aGUgZm9sbG93aW5nIG9sdmVybG9hZHMgYXJlIHVzZWQgdG8gZmlsdGVyIG91dCB0aGUgY2FzZSBhbmQgZ3VhcmFudGVlIGFuIGVycm9yIGluIGNhc2Ugb2YgVCBiZWluZyBhIHJlZmVyZW5jZS4KLSAgICBwb2ludGVyX2NvbnN0X3R5cGUgY2FzdF9wdHIoIGludGVybmFsX3R5cGUgY29uc3QqIHAsIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgY29uc3QgeyByZXR1cm4gcCA7IH0KLSAgICBwb2ludGVyX3R5cGUgICAgICAgY2FzdF9wdHIoIGludGVybmFsX3R5cGUgKiAgICAgIHAsIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgICAgICAgeyByZXR1cm4gcCA7IH0KLSAgICBwb2ludGVyX2NvbnN0X3R5cGUgY2FzdF9wdHIoIGludGVybmFsX3R5cGUgY29uc3QqIHAsIGlzX3JlZmVyZW5jZV90YWcgICAgICkgY29uc3QgeyByZXR1cm4gJnAtPmdldCgpIDsgfQotICAgIHBvaW50ZXJfdHlwZSAgICAgICBjYXN0X3B0ciggaW50ZXJuYWxfdHlwZSAqICAgICAgcCwgaXNfcmVmZXJlbmNlX3RhZyAgICAgKSAgICAgICB7IHJldHVybiAmcC0+Z2V0KCkgOyB9Ci0KLSAgICBib29sIG1faW5pdGlhbGl6ZWQgOwotICAgIHN0b3JhZ2VfdHlwZSBtX3N0b3JhZ2UgOwotfSA7Ci0KLX0gLy8gbmFtZXNwYWNlIG9wdGlvbmFsX2RldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3Mgb3B0aW9uYWwgOiBwdWJsaWMgb3B0aW9uYWxfZGV0YWlsOjpvcHRpb25hbF9iYXNlPFQ+Ci17Ci0gICAgdHlwZWRlZiBvcHRpb25hbF9kZXRhaWw6Om9wdGlvbmFsX2Jhc2U8VD4gYmFzZSA7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6dW5zcGVjaWZpZWRfYm9vbF90eXBlICB1bnNwZWNpZmllZF9ib29sX3R5cGUgOwotCi0gIHB1YmxpYyA6Ci0KLSAgICB0eXBlZGVmIG9wdGlvbmFsPFQ+IHRoaXNfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6dmFsdWVfdHlwZSAgICAgICAgICAgdmFsdWVfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OnJlZmVyZW5jZV90eXBlICAgICAgIHJlZmVyZW5jZV90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6cmVmZXJlbmNlX2NvbnN0X3R5cGUgcmVmZXJlbmNlX2NvbnN0X3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjpwb2ludGVyX3R5cGUgICAgICAgICBwb2ludGVyX3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjpwb2ludGVyX2NvbnN0X3R5cGUgICBwb2ludGVyX2NvbnN0X3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjphcmd1bWVudF90eXBlICAgICAgICBhcmd1bWVudF90eXBlIDsKLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gdW5pbml0aWFsaXplZC4KLSAgICAvLyBOby10aHJvdwotICAgIG9wdGlvbmFsKCkgOiBiYXNlKCkge30KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gdW5pbml0aWFsaXplZC4KLSAgICAvLyBOby10aHJvdwotICAgIG9wdGlvbmFsKCBub25lX3Qgbm9uZV8gKSA6IGJhc2Uobm9uZV8pIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IGluaXRpYWxpemVkIHdpdGggJ3ZhbCcuCi0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbCAoIGFyZ3VtZW50X3R5cGUgdmFsICkgOiBiYXNlKHZhbCkge30KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gaW5pdGlhbGl6ZWQgd2l0aCAndmFsJyBJRkYgY29uZCBpcyB0cnVlLCBvdGhlcndpc2UgY3JlYXRlcyBhbiB1bmluaXRpYWxpemVkIG9wdGlvbmFsLgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWwgKCBib29sIGNvbmQsIGFyZ3VtZW50X3R5cGUgdmFsICkgOiBiYXNlKGNvbmQsdmFsKSB7fQotCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX05PX0NPTlZFUlRJTkdfQ09QWV9DVE9SCi0gICAgLy8gTk9URTogTVNWQyBuZWVkcyB0ZW1wbGF0ZWQgdmVyc2lvbnMgZmlyc3QKLQotICAgIC8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgYW5vdGhlciBjb252ZXJ0aWJsZSBvcHRpb25hbDxVPgotICAgIC8vIFJlcXVpcmVzIGEgdmFsaWQgY29udmVyc2lvbiBmcm9tIFUgdG8gVC4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChVIGNvbnN0JikgZG9lcwotICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgZXhwbGljaXQgb3B0aW9uYWwgKCBvcHRpb25hbDxVPiBjb25zdCYgcmhzICkKLSAgICAgIDoKLSAgICAgIGJhc2UoKQotICAgIHsKLSAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICB0aGlzLT5jb25zdHJ1Y3QocmhzLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVAotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gd2l0aCBhbiBleHByZXNzaW9uIHdoaWNoIGNhbiBiZSBlaXRoZXIKLSAgICAvLyAgKGEpIEFuIGluc3RhbmNlIG9mIEluUGxhY2VGYWN0b3J5IChpLmUuIGluX3BsYWNlKGEsYiwuLi4sbik7Ci0gICAgLy8gIChiKSBBbiBpbnN0YW5jZSBvZiBUeXBlZEluUGxhY2VGYWN0b3J5ICggaS5lLiBpbl9wbGFjZTxUPihhLGIsLi4uLG4pOwotICAgIC8vICAoYykgQW55IGV4cHJlc3Npb24gaW1wbGljaXRlbHkgY29udmVydGlibGUgdG8gdGhlIHNpbmdsZSB0eXBlCi0gICAgLy8gICAgICBvZiBhIG9uZS1hcmd1bWVudCBUJ3MgY29uc3RydWN0b3IuCi0gICAgLy8gIChkKikgV2VhayBjb21waWxlcnMgKEJDQikgbWlnaHQgYWxzbyByZXNvbHZlZCBFeHByIGFzIG9wdGlvbmFsPFQ+IGFuZCBvcHRpb25hbDxVPgotICAgIC8vICAgICAgIGV2ZW4gdGhvdWdoIGV4cGxpY2l0IG92ZXJsb2FkcyBhcmUgcHJlc2VudCBmb3IgdGhlc2UuCi0gICAgLy8gRGVwZW5kaW5nIG9uIHRoZSBhYm92ZSBzb21lIFQgY3RvciBpcyBjYWxsZWQuCi0gICAgLy8gQ2FuIHRocm93IGlzIHRoZSByZXNvbHZlZCBUIGN0b3IgdGhyb3dzLgotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgZXhwbGljaXQgb3B0aW9uYWwgKCBFeHByIGNvbnN0JiBleHByICkgOiBiYXNlKGV4cHIsbmRuYm9vc3Q6OmFkZHJlc3NvZihleHByKSkge30KLSNlbmRpZgotCi0gICAgLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiBhbm90aGVyIG9wdGlvbmFsPFQ+Ci0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbCAoIG9wdGlvbmFsIGNvbnN0JiByaHMgKSA6IGJhc2UoIHN0YXRpY19jYXN0PGJhc2UgY29uc3QmPihyaHMpICkge30KLQotICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICB+b3B0aW9uYWwoKSB7fQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQpICYmICFkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX1dFQUtfT1ZFUkxPQURfUkVTT0xVVElPTikKLSAgICAvLyBBc3NpZ25zIGZyb20gYW4gZXhwcmVzc2lvbi4gU2VlIGNvcnJlc3BvbmRpbmcgY29uc3RydWN0b3IuCi0gICAgLy8gQmFzaWMgR3VhcmFudGVlOiBJZiB0aGUgcmVzb2x2ZWQgVCBjdG9yIHRocm93cywgdGhpcyBpcyBsZWZ0IFVOSU5JVElBTElaRUQKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIG9wdGlvbmFsJiBvcGVyYXRvcj0gKCBFeHByIGNvbnN0JiBleHByICkKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduX2V4cHIoZXhwcixuZG5ib29zdDo6YWRkcmVzc29mKGV4cHIpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLSNlbmRpZgotCi0KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfTk9fQ09OVkVSVElOR19BU1NJR05NRU5UCi0gICAgLy8gQXNzaWducyBmcm9tIGFub3RoZXIgY29udmVydGlibGUgb3B0aW9uYWw8VT4gKGNvbnZlcnRzICYmIGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgLy8gUmVxdWlyZXMgYSB2YWxpZCBjb252ZXJzaW9uIGZyb20gVSB0byBULgotICAgIC8vIEJhc2ljIEd1YXJhbnRlZTogSWYgVDo6VCggVSBjb25zdCYgKSB0aHJvd3MsIHRoaXMgaXMgbGVmdCBVTklOSVRJQUxJWkVECi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggb3B0aW9uYWw8VT4gY29uc3QmIHJocyApCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbihyaHMpOwotICAgICAgICByZXR1cm4gKnRoaXMgOwotICAgICAgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25zIGZyb20gYW5vdGhlciBvcHRpb25hbDxUPiAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICAvLyBCYXNpYyBHdWFyYW50ZWU6IElmIFQ6OlQoIFQgY29uc3QmICkgdGhyb3dzLCB0aGlzIGlzIGxlZnQgVU5JTklUSUFMSVpFRAotICAgIC8vICAoTk9URTogT24gQkNCLCB0aGlzIG9wZXJhdG9yIGlzIG5vdCBhY3R1YWxseSBjYWxsZWQgYW5kIGxlZnQgaXMgbGVmdCBVTk1PRElGSUVEIGluIGNhc2Ugb2YgYSB0aHJvdykKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggb3B0aW9uYWwgY29uc3QmIHJocyApCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbiggc3RhdGljX2Nhc3Q8YmFzZSBjb25zdCY+KHJocykgKSA7Ci0gICAgICAgIHJldHVybiAqdGhpcyA7Ci0gICAgICB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gYSBUIChkZWVwLWNvcGllcyB0aGUgcmhzIHZhbHVlKQotICAgIC8vIEJhc2ljIEd1YXJhbnRlZTogSWYgVDo6KCBUIGNvbnN0JiApIHRocm93cywgdGhpcyBpcyBsZWZ0IFVOSU5JVElBTElaRUQKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggYXJndW1lbnRfdHlwZSB2YWwgKQotICAgICAgewotICAgICAgICB0aGlzLT5hc3NpZ24oIHZhbCApIDsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhICJub25lIgotICAgIC8vIFdoaWNoIGRlc3Ryb3lzIHRoZSBjdXJyZW50IHZhbHVlLCBpZiBhbnksIGxlYXZpbmcgdGhpcyBVTklOSVRJQUxJWkVECi0gICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggbm9uZV90IG5vbmVfICkKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduKCBub25lXyApIDsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLQotICAgIHZvaWQgc3dhcCggb3B0aW9uYWwgJiBhcmcgKQotICAgICAgewotICAgICAgICAvLyBhbGxvdyBmb3IgS29lbmlnIGxvb2t1cAotICAgICAgICB1c2luZyBuZG5ib29zdDo6c3dhcDsKLSAgICAgICAgc3dhcCgqdGhpcywgYXJnKTsKLSAgICAgIH0KLQotCi0gICAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLAotICAgIC8vIHRoZSBiZWhhdmlvdXIgaXMgVU5ERUZJTkVECi0gICAgLy8gTm8tdGhyb3cKLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBnZXQoKSBjb25zdCB7IE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5pc19pbml0aWFsaXplZCgpKSA7IHJldHVybiB0aGlzLT5nZXRfaW1wbCgpOyB9Ci0gICAgcmVmZXJlbmNlX3R5cGUgICAgICAgZ2V0KCkgICAgICAgeyBORE5CT09TVF9BU1NFUlQodGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSkgOyByZXR1cm4gdGhpcy0+Z2V0X2ltcGwoKTsgfQotCi0gICAgLy8gUmV0dXJucyBhIGNvcHkgb2YgdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsICd2JyBvdGhlcndpc2UKLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBnZXRfdmFsdWVfb3IgKCByZWZlcmVuY2VfY29uc3RfdHlwZSB2ICkgY29uc3QgeyByZXR1cm4gdGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSA/IGdldCgpIDogdiA7IH0KLSAgICByZWZlcmVuY2VfdHlwZSAgICAgICBnZXRfdmFsdWVfb3IgKCByZWZlcmVuY2VfdHlwZSAgICAgICB2ICkgICAgICAgeyByZXR1cm4gdGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSA/IGdldCgpIDogdiA7IH0KLQotICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsCi0gICAgLy8gdGhlIGJlaGF2aW91ciBpcyBVTkRFRklORUQKLSAgICAvLyBOby10aHJvdwotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyBORE5CT09TVF9BU1NFUlQodGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSkgOyByZXR1cm4gdGhpcy0+Z2V0X3B0cl9pbXBsKCkgOyB9Ci0gICAgcG9pbnRlcl90eXBlICAgICAgIG9wZXJhdG9yLT4oKSAgICAgICB7IE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5pc19pbml0aWFsaXplZCgpKSA7IHJldHVybiB0aGlzLT5nZXRfcHRyX2ltcGwoKSA7IH0KLQotICAgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwKLSAgICAvLyB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRAotICAgIC8vIE5vLXRocm93Ci0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgb3BlcmF0b3IgKigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmdldCgpIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIG9wZXJhdG9yICooKSAgICAgICB7IHJldHVybiB0aGlzLT5nZXQoKSA7IH0KLQotICAgIC8vIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gImJvb2wiCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCB7IHJldHVybiB0aGlzLT5zYWZlX2Jvb2woKSA7IH0KLQotICAgIC8vIFRoaXMgaXMgcHJvdmlkZWQgZm9yIHRob3NlIGNvbXBpbGVycyB3aGljaCBkb24ndCBsaWtlIHRoZSBjb252ZXJzaW9uIHRvIGJvb2wKLSAgICAvLyBvbiBzb21lIGNvbnRleHRzLgotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIXRoaXMtPmlzX2luaXRpYWxpemVkKCkgOyB9Ci19IDsKLQotLy8gUmV0dXJucyBvcHRpb25hbDxUPih2KQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotb3B0aW9uYWw8VD4gbWFrZV9vcHRpb25hbCAoIFQgY29uc3QmIHYgICkKLXsKLSAgcmV0dXJuIG9wdGlvbmFsPFQ+KHYpOwotfQotCi0vLyBSZXR1cm5zIG9wdGlvbmFsPFQ+KGNvbmQsdikKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLW9wdGlvbmFsPFQ+IG1ha2Vfb3B0aW9uYWwgKCBib29sIGNvbmQsIFQgY29uc3QmIHYgKQotewotICByZXR1cm4gb3B0aW9uYWw8VD4oY29uZCx2KTsKLX0KLQotLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLCB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRC4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfY29uc3RfdHlwZQotZ2V0ICggb3B0aW9uYWw8VD4gY29uc3QmIG9wdCApCi17Ci0gIHJldHVybiBvcHQuZ2V0KCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfdHlwZQotZ2V0ICggb3B0aW9uYWw8VD4mIG9wdCApCi17Ci0gIHJldHVybiBvcHQuZ2V0KCkgOwotfQotCi0vLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLCByZXR1cm5zIE5VTEwuCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cG9pbnRlcl9jb25zdF90eXBlCi1nZXQgKCBvcHRpb25hbDxUPiBjb25zdCogb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC0+Z2V0X3B0cigpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cG9pbnRlcl90eXBlCi1nZXQgKCBvcHRpb25hbDxUPiogb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC0+Z2V0X3B0cigpIDsKLX0KLQotLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLCB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRC4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfY29uc3RfdHlwZQotZ2V0X29wdGlvbmFsX3ZhbHVlX29yICggb3B0aW9uYWw8VD4gY29uc3QmIG9wdCwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX2NvbnN0X3R5cGUgdiApCi17Ci0gIHJldHVybiBvcHQuZ2V0X3ZhbHVlX29yKHYpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX3R5cGUKLWdldF9vcHRpb25hbF92YWx1ZV9vciAoIG9wdGlvbmFsPFQ+JiBvcHQsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnJlZmVyZW5jZV90eXBlIHYgKQotewotICByZXR1cm4gb3B0LmdldF92YWx1ZV9vcih2KSA7Ci19Ci0KLS8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsIHJldHVybnMgTlVMTC4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+Ojpwb2ludGVyX2NvbnN0X3R5cGUKLWdldF9wb2ludGVyICggb3B0aW9uYWw8VD4gY29uc3QmIG9wdCApCi17Ci0gIHJldHVybiBvcHQuZ2V0X3B0cigpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cG9pbnRlcl90eXBlCi1nZXRfcG9pbnRlciAoIG9wdGlvbmFsPFQ+JiBvcHQgKQotewotICByZXR1cm4gb3B0LmdldF9wdHIoKSA7Ci19Ci0KLS8vIG9wdGlvbmFsJ3MgcmVsYXRpb25hbCBvcGVyYXRvcnMgKCA9PSwgIT0sIDwsID4sIDw9LCA+PSApIGhhdmUgZGVlcC1zZW1hbnRpY3MgKGNvbXBhcmUgdmFsdWVzKS4KLS8vIFdBUk5JTkc6IFRoaXMgaXMgVU5MSUtFIHBvaW50ZXJzLiBVc2UgZXF1YWxfcG9pbnRlZXMoKS9sZXNzX3BvaW50ZXNzKCkgaW4gZ2VuZXJpYyBjb2RlIGluc3RlYWQuCi0KLQotLy8KLS8vIG9wdGlvbmFsPFQ+IHZzIG9wdGlvbmFsPFQ+IGNhc2VzCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID09ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgseSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoeCx5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPT0geSApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID4gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4geSA8IHggOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPD0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB4IDwgeSApIDsgfQotCi0KLS8vCi0vLyBvcHRpb25hbDxUPiB2cyBUIGNhc2VzCi0vLwotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA9PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgsIG9wdGlvbmFsPFQ+KHkpKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgVCBjb25zdCYgeSApCi17IHJldHVybiBsZXNzX3BvaW50ZWVzKHgsIG9wdGlvbmFsPFQ+KHkpKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLS8vCi0vLyBUIHZzIG9wdGlvbmFsPFQ+IGNhc2VzCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID09ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gZXF1YWxfcG9pbnRlZXMoIG9wdGlvbmFsPFQ+KHgpLCB5ICk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gbGVzc19wb2ludGVlcyggb3B0aW9uYWw8VD4oeCksIHkgKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLQotLy8KLS8vIG9wdGlvbmFsPFQ+IHZzIG5vbmUgY2FzZXMKLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPT0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgsIG9wdGlvbmFsPFQ+KCkgKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90ICkKLXsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoeCxvcHRpb25hbDxUPigpICk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciAhPSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBub25lX3QgeSApCi17IHJldHVybiAhKCB4ID09IHkgKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCB5ICkKLXsgcmV0dXJuICEoIHkgPCB4ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPj0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90IHkgKQoteyByZXR1cm4gISggeCA8IHkgKSA7IH0KLQotLy8KLS8vIG5vbmUgdnMgb3B0aW9uYWw8VD4gY2FzZXMKLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPT0gKCBub25lX3QgLCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBlcXVhbF9wb2ludGVlcyhvcHRpb25hbDxUPigpICx5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBub25lX3QgLCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBsZXNzX3BvaW50ZWVzKG9wdGlvbmFsPFQ+KCkgLHkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgIT0gKCBub25lX3QgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIG5vbmVfdCB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiB5IDwgeCA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8PSAoIG5vbmVfdCB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB5IDwgeCApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID49ICggbm9uZV90IHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLW5hbWVzcGFjZSBvcHRpb25hbF9kZXRhaWwgewotCi10ZW1wbGF0ZTxib29sIHVzZV9kZWZhdWx0X2NvbnN0cnVjdG9yPiBzdHJ1Y3Qgc3dhcF9zZWxlY3RvcjsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHN3YXBfc2VsZWN0b3I8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0YXRpYyB2b2lkIG9wdGlvbmFsX3N3YXAgKCBvcHRpb25hbDxUPiYgeCwgb3B0aW9uYWw8VD4mIHkgKQotICAgIHsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNYID0gISF4OwotICAgICAgICBjb25zdCBib29sIGhhc1kgPSAhIXk7Ci0KLSAgICAgICAgaWYgKCAhaGFzWCAmJiAhaGFzWSApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYoICFoYXNYICkKLSAgICAgICAgICAgIHggPSBuZG5ib29zdDo6aW5fcGxhY2UoKTsKLSAgICAgICAgZWxzZSBpZiAoICFoYXNZICkKLSAgICAgICAgICAgIHkgPSBuZG5ib29zdDo6aW5fcGxhY2UoKTsKLQotICAgICAgICAvLyBCb29zdC5VdGlsaXR5LlN3YXAgd2lsbCB0YWtlIGNhcmUgb2YgQURMIGFuZCB3b3JrYXJvdW5kcyBmb3IgYnJva2VuIGNvbXBpbGVycwotICAgICAgICBuZG5ib29zdDo6c3dhcCh4LmdldCgpLHkuZ2V0KCkpOwotCi0gICAgICAgIGlmKCAhaGFzWCApCi0gICAgICAgICAgICB5ID0gbmRuYm9vc3Q6Om5vbmUgOwotICAgICAgICBlbHNlIGlmKCAhaGFzWSApCi0gICAgICAgICAgICB4ID0gbmRuYm9vc3Q6Om5vbmUgOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzd2FwX3NlbGVjdG9yPGZhbHNlPgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RhdGljIHZvaWQgb3B0aW9uYWxfc3dhcCAoIG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxUPiYgeSApCi0gICAgewotICAgICAgICBjb25zdCBib29sIGhhc1ggPSAhIXg7Ci0gICAgICAgIGNvbnN0IGJvb2wgaGFzWSA9ICEheTsKLQotICAgICAgICBpZiAoICFoYXNYICYmIGhhc1kgKQotICAgICAgICB7Ci0gICAgICAgICAgICB4ID0geS5nZXQoKTsKLSAgICAgICAgICAgIHkgPSBuZG5ib29zdDo6bm9uZSA7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIGhhc1ggJiYgIWhhc1kgKQotICAgICAgICB7Ci0gICAgICAgICAgICB5ID0geC5nZXQoKTsKLSAgICAgICAgICAgIHggPSBuZG5ib29zdDo6bm9uZSA7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIGhhc1ggJiYgaGFzWSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEJvb3N0LlV0aWxpdHkuU3dhcCB3aWxsIHRha2UgY2FyZSBvZiBBREwgYW5kIHdvcmthcm91bmRzIGZvciBicm9rZW4gY29tcGlsZXJzCi0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcCh4LmdldCgpLHkuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2Ugb3B0aW9uYWxfZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgb3B0aW9uYWxfc3dhcF9zaG91bGRfdXNlX2RlZmF1bHRfY29uc3RydWN0b3IgOiBoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yPFQ+IHt9IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcCAoIG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxUPiYgeSApCi17Ci0gICAgb3B0aW9uYWxfZGV0YWlsOjpzd2FwX3NlbGVjdG9yPG9wdGlvbmFsX3N3YXBfc2hvdWxkX3VzZV9kZWZhdWx0X2NvbnN0cnVjdG9yPFQ+Ojp2YWx1ZT46Om9wdGlvbmFsX3N3YXAoeCwgeSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTQ5N2EyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWxfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotLy8gUmV2aXNpb25zOgotLy8gMTAgTWF5IDIwMDggKGFkZGVkIHN3YXAgcmVsYXRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uKSBOaWVscyBEZWtrZXIKLS8vIAotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9PUFRJT05BTF9GV0RfRkxDXzE5Tk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfT1BUSU9OQUxfRldEX0ZMQ18xOU5PVjIwMDJfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIG9wdGlvbmFsIDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwICggb3B0aW9uYWw8VD4mICwgb3B0aW9uYWw8VD4mICkgOwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgb3B0aW9uYWxfc3dhcF9zaG91bGRfdXNlX2RlZmF1bHRfY29uc3RydWN0b3IgOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wZW5kaW5nL2ludGVnZXJfbG9nMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3BlbmRpbmcvaW50ZWdlcl9sb2cyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg1MDRkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3BlbmRpbmcvaW50ZWdlcl9sb2cyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gaW50ZWdlcl9sb2cyLmhwcAotLy8KLS8vICAgR2l2ZXMgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgbG9nYXJpdGhtLCBpbiBiYXNlIDIsIG9mIGEKLS8vIGdpdmVuIG51bWJlci4gQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIHRoZSBhcmd1bWVudCBpcyA8PSAwLgotLy8KLS8vICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAzLTIwMDQsIDIwMDggR2VubmFybyBQcm90YQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVHRVJfTE9HMl9IUFBfR1BfMjAwMzAzMDEKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9MT0cyX0hQUF9HUF8yMDAzMDMwMQotCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNlbmRpZgotI2luY2x1ZGUgIm5kbmJvb3N0L2xpbWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbnQgaW50ZWdlcl9sb2cyX2ltcGwoVCB4LCBpbnQgbikgewotCi0gICAgICBpbnQgcmVzdWx0ID0gMDsKLQotICAgICAgd2hpbGUgKHggIT0gMSkgewotCi0gICAgICAgICAgY29uc3QgVCB0ID0gc3RhdGljX2Nhc3Q8VD4oeCA+PiBuKTsKLSAgICAgICAgICBpZiAodCkgewotICAgICAgICAgICAgICByZXN1bHQgKz0gbjsKLSAgICAgICAgICAgICAgeCA9IHQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIG4gLz0gMjsKLQotICAgICAgfQotCi0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLQotCi0gIC8vIGhlbHBlciB0byBmaW5kIHRoZSBtYXhpbXVtIHBvd2VyIG9mIHR3bwotICAvLyBsZXNzIHRoYW4gcCAobW9yZSBpbnZvbHZlZCB0aGFuIG5lY2Vzc2FyeSwKLSAgLy8gdG8gYXZvaWQgUFRTKQotICAvLwotICB0ZW1wbGF0ZSA8aW50IHAsIGludCBuPgotICBzdHJ1Y3QgbWF4X3BvdzJfbGVzcyB7Ci0KLSAgICAgIGVudW0geyBjID0gMipuIDwgcCB9OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgYyA/IChtYXhfcG93Ml9sZXNzPCBjKnAsIDIqYypuPjo6dmFsdWUpIDogbik7Ci0KLSAgfTsKLQotICB0ZW1wbGF0ZSA8PgotICBzdHJ1Y3QgbWF4X3BvdzJfbGVzczwwLCAwPiB7Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gIH07Ci0KLSAgLy8gdGhpcyB0ZW1wbGF0ZSBpcyBoZXJlIGp1c3QgZm9yIEJvcmxhbmQgOigKLSAgLy8gd2UgY291bGQgc2ltcGx5IHJlbHkgb24gbnVtZXJpY19saW1pdHMgYnV0IHNvbWV0aW1lcwotICAvLyBCb3JsYW5kIHRyaWVzIHRvIHVzZSBudW1lcmljX2xpbWl0czxjb25zdCBUPiwgYmVjYXVzZQotICAvLyBvZiBpdHMgdXN1YWwgY29uc3QtcmVsYXRlZCBwcm9ibGVtcyBpbiBhcmd1bWVudCBkZWR1Y3Rpb24KLSAgLy8gLSBncHMKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHN0cnVjdCB3aWR0aCB7Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQpOwotI2Vsc2UKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cykpOwotI2VuZGlmCi0KLSAgfTsKLQotIH0gLy8gZGV0YWlsCi0KLQotIC8vIC0tLS0tLS0tLQotIC8vIGludGVnZXJfbG9nMgotIC8vIC0tLS0tLS0tLS0tLS0tLQotIC8vCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gaW50IGludGVnZXJfbG9nMihUIHgpIHsKLQotICAgICBhc3NlcnQoeCA+IDApOwotCi0gICAgIGNvbnN0IGludCBuID0gZGV0YWlsOjptYXhfcG93Ml9sZXNzPAotICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjp3aWR0aDxUPiA6OiB2YWx1ZSwgNAotICAgICAgICAgICAgICAgICAgID4gOjogdmFsdWU7Ci0KLSAgICAgcmV0dXJuIGRldGFpbDo6aW50ZWdlcl9sb2cyX2ltcGwoeCwgbik7Ci0KLSB9Ci0KLQotCi19Ci0KLQotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YzkyN2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLSNpZm5kZWYgUE9JTlRFRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCi0jIGRlZmluZSBQT0lOVEVFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLQotLy8KLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzCi0vLyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIHR5cGVuYW1lIHBvaW50ZWU8UD46OnR5cGUgcHJvdmlkZXMgdGhlIHBvaW50ZWUgdHlwZSBvZiBQLgotLy8KLS8vIEZvciBleGFtcGxlLCBpdCBpcyBUIGZvciBUKiBhbmQgWCBmb3Igc2hhcmVkX3B0cjxYPi4KLS8vCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2l0ZXJhdG9yL2RvYy9wb2ludGVlLmh0bWwKLS8vCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0gIHRlbXBsYXRlIDxjbGFzcyBQPgotICBzdHJ1Y3Qgc21hcnRfcHRyX3BvaW50ZWUKLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBQOjplbGVtZW50X3R5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci0gIHN0cnVjdCBpdGVyYXRvcl9wb2ludGVlCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgCi0gICAgICBzdHJ1Y3QgaW1wbAotICAgICAgewotICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgIHN0YXRpYyBjaGFyIHRlc3QoVCBjb25zdCYpOwotICAgICAgICAgIAotICAgICAgICAgIHN0YXRpYyBjaGFyICgmIHRlc3QodmFsdWVfdHlwZSYpIClbMl07Ci0gICAgICAgICAgCi0gICAgICAgICAgc3RhdGljIEl0ZXJhdG9yJiB4OwotICAgICAgfTsKLSAgICAgIAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0YW50ID0gc2l6ZW9mKGltcGw6OnRlc3QoKmltcGw6OngpKSA9PSAxKTsKLSAgICAgIAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLSAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3BvaW50ZWU8SXRlcmF0b3I+Ojppc19jb25zdGFudAotIyAgZWxzZQotICAgICAgICAgIGlzX2NvbnN0YW50Ci0jICBlbmRpZiAKLSAgICAgICAgLCB0eXBlbmFtZSBhZGRfY29uc3Q8dmFsdWVfdHlwZT46OnR5cGUKLSAgICAgICAgLCB2YWx1ZV90eXBlCi0gICAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQPgotc3RydWN0IHBvaW50ZWUKLSAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgIGRldGFpbDo6aXNfaW5jcmVtZW50YWJsZTxQPgotICAgICAgLCBkZXRhaWw6Oml0ZXJhdG9yX3BvaW50ZWU8UD4KLSAgICAgICwgZGV0YWlsOjpzbWFydF9wdHJfcG9pbnRlZTxQPgotICAgID4KLXsKLX07Ci0gIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIFBPSU5URUVfTkROQk9PU1RfRFdBMjAwNDE1X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVyX3RvX290aGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlcl90b19vdGhlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNmQ2MTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVyX3RvX290aGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfUE9JTlRFUl9UT19PVEhFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUE9JTlRFUl9UT19PVEhFUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBwb2ludGVyX3RvX290aGVyLmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwNS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDUgUGV0ZXIgRGltb3YuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9wb2ludGVyX3RvX290aGVyLmh0bWwKLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyBEZWZpbmVzIHRoZSBzYW1lIHBvaW50ZXIgdHlwZSAocmF3IG9yIHNtYXJ0KSB0byBhbm90aGVyIHBvaW50ZWUgdHlwZQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IHBvaW50ZXJfdG9fb3RoZXI7Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIAotICAgICAgICAgdGVtcGxhdGU8Y2xhc3M+IGNsYXNzIFNwPgotc3RydWN0IHBvaW50ZXJfdG9fb3RoZXI8IFNwPFQ+LCBVID4KLXsKLSAgIHR5cGVkZWYgU3A8VT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFQyLCBjbGFzcyBVLCAKLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzLCBjbGFzcz4gY2xhc3MgU3A+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjwgU3A8VCwgVDI+LCBVID4KLXsKLSAgIHR5cGVkZWYgU3A8VSwgVDI+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFUsIAotICAgICAgICAgdGVtcGxhdGU8Y2xhc3MsIGNsYXNzLCBjbGFzcz4gY2xhc3MgU3A+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjwgU3A8VCwgVDIsIFQzPiwgVSA+Ci17Ci0gICB0eXBlZGVmIFNwPFUsIFQyLCBUMz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjwgVCosIFUgPgotewotICAgdHlwZWRlZiBVKiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfUE9JTlRFUl9UT19PVEhFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0YzBmYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0FERF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0FERF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQUREICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BREQoeCwgeSkgTkROQk9PU1RfUFBfQUREX0koeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9JKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQUREX1AoZCwgeHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgeHkpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9PKGQsIHh5KSBORE5CT09TVF9QUF9BRERfT19JIHh5Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9PKGQsIHh5KSBORE5CT09TVF9QUF9BRERfT19JKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIHh5KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9PX0koeCwgeSkgKE5ETkJPT1NUX1BQX0lOQyh4KSwgTkROQk9PU1RfUFBfREVDKHkpKQotIwotIyAvKiBORE5CT09TVF9QUF9BRERfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfRChkLCB4LCB5KSBORE5CT09TVF9QUF9BRERfRF9JKGQsIHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfRF9JKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTIwYzJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0RFQ19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0RFQ19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9ERUMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfREVDKHgpIE5ETkJPT1NUX1BQX0RFQ19JKHgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQyh4KSBORE5CT09TVF9QUF9ERUNfT08oKHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfREVDX09PKHBhcikgTkROQk9PU1RfUFBfREVDX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfSSh4KSBORE5CT09TVF9QUF9ERUNfICMjIHgKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18wIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zIDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180IDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181IDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182IDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183IDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184IDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185IDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMCA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTEgMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMiAxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzIDEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQgMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNSAxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2IDE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTcgMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOCAxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5IDE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjAgMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMSAyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyIDIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjMgMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNCAyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1IDI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjYgMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNyAyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI4IDI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjkgMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zMCAyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzMxIDMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzIgMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zMyAzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM0IDMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzUgMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zNiAzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM3IDM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzggMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zOSAzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQwIDM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDEgNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180MiA0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQzIDQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDQgNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180NSA0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ2IDQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDcgNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180OCA0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ5IDQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTAgNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181MSA1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzUyIDUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTMgNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181NCA1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU1IDU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTYgNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181NyA1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU4IDU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTkgNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182MCA1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzYxIDYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjIgNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182MyA2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY0IDYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjUgNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182NiA2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY3IDY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjggNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182OSA2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzcwIDY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzEgNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183MiA3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzczIDcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzQgNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183NSA3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc2IDc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzcgNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183OCA3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc5IDc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODAgNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184MSA4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzgyIDgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODMgODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184NCA4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg1IDg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODYgODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184NyA4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg4IDg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODkgODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185MCA4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzkxIDkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTIgOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185MyA5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk0IDkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTUgOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185NiA5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk3IDk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTggOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185OSA5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwMCA5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwMSAxMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDIgMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTAzIDEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwNCAxMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDUgMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA2IDEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwNyAxMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDggMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA5IDEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExMCAxMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTEgMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTEyIDExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExMyAxMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTQgMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE1IDExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExNiAxMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTcgMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE4IDExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExOSAxMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjAgMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTIxIDEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyMiAxMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjMgMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI0IDEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyNSAxMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjYgMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI3IDEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyOCAxMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjkgMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTMwIDEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzMSAxMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzIgMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTMzIDEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzNCAxMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzUgMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM2IDEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzNyAxMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzggMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM5IDEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0MCAxMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDEgMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQyIDE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0MyAxNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDQgMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ1IDE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0NiAxNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDcgMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ4IDE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0OSAxNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTAgMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTUxIDE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1MiAxNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTMgMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU0IDE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1NSAxNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTYgMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU3IDE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1OCAxNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTkgMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTYwIDE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2MSAxNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjIgMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTYzIDE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2NCAxNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjUgMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY2IDE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2NyAxNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjggMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY5IDE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3MCAxNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzEgMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTcyIDE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3MyAxNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzQgMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc1IDE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3NiAxNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzcgMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc4IDE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3OSAxNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODAgMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTgxIDE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4MiAxODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODMgMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg0IDE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4NSAxODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODYgMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg3IDE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4OCAxODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODkgMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTkwIDE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5MSAxOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTIgMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTkzIDE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5NCAxOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTUgMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk2IDE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5NyAxOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTggMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk5IDE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwMCAxOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDEgMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjAyIDIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwMyAyMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDQgMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA1IDIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwNiAyMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDcgMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA4IDIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwOSAyMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTAgMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjExIDIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxMiAyMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTMgMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE0IDIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxNSAyMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTYgMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE3IDIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxOCAyMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTkgMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjIwIDIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyMSAyMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjIgMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjIzIDIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyNCAyMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjUgMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI2IDIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyNyAyMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjggMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI5IDIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzMCAyMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzEgMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjMyIDIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzMyAyMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzQgMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM1IDIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzNiAyMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzcgMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM4IDIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzOSAyMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDAgMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQxIDI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0MiAyNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDMgMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ0IDI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0NSAyNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDYgMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ3IDI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0OCAyNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDkgMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjUwIDI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1MSAyNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTIgMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjUzIDI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1NCAyNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTUgMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjU2IDI1NQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvZGl2X2Jhc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvZGl2X2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjRlNDEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGV0YWlsL2Rpdl9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfREVUQUlMX0RJVl9CQVNFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfREVUQUlMX0RJVl9CQVNFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0RJVl9CQVNFICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0UoeCwgeSkgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfRElWX0JBU0VfUCwgTkROQk9PU1RfUFBfRElWX0JBU0VfTywgKDAsIHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRSh4LCB5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9JKHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9JKHgsIHkpIE5ETkJPT1NUX1BQX1dISUxFKE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08sICgwLCB4LCB5KSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AoZCwgcnh5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9QX0lNKGQsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zIHJ4eSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSU0oZCwgaW0pIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSShkLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfUChkLCByeHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSShkLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHJ4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgcnh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCByeHkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfUF9JKGQsIHIsIHgsIHkpIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRChkLCB5LCB4KQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfTyhkLCByeHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX09fSU0oZCwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgcnh5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JTShkLCBpbSkgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JKGQsIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9PKGQsIHJ4eSkgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JKGQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgcnh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCByeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHJ4eSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9PX0koZCwgciwgeCwgeSkgKE5ETkJPT1NUX1BQX0lOQyhyKSwgTkROQk9PU1RfUFBfU1VCX0QoZCwgeCwgeSksIHkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBkKE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08sICgwLCB4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfRChkLCB4LCB5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0RfSShkLCB4LCB5KSBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9ESVZfQkFTRV9QLCBORE5CT09TVF9QUF9ESVZfQkFTRV9PLCAoMCwgeCwgeSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NzgzOTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfSU5DX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfSU5DX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lOQyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JTkMoeCkgTkROQk9PU1RfUFBfSU5DX0koeCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSU5DKHgpIE5ETkJPT1NUX1BQX0lOQ19PTygoeCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JTkNfT08ocGFyKSBORE5CT09TVF9QUF9JTkNfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ19JKHgpIE5ETkJPT1NUX1BQX0lOQ18gIyMgeAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEgMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIgMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzMgNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQgNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUgNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzYgNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzcgOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzggOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzkgMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMCAxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExIDEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTIgMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMyAxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0IDE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTUgMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNiAxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3IDE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTggMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOSAyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwIDIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjEgMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMiAyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzIDI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQgMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNSAyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI2IDI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjcgMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yOCAyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI5IDMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzAgMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zMSAzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzMyIDMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzMgMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zNCAzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM1IDM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzYgMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zNyAzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM4IDM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzkgNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180MCA0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQxIDQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDIgNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180MyA0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ0IDQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDUgNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180NiA0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ3IDQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDggNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180OSA1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUwIDUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTEgNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181MiA1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUzIDU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTQgNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181NSA1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU2IDU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTcgNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181OCA1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU5IDYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjAgNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182MSA2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzYyIDYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjMgNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182NCA2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY1IDY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjYgNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182NyA2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY4IDY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjkgNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183MCA3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzcxIDcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzIgNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183MyA3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc0IDc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzUgNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183NiA3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc3IDc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzggNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183OSA4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzgwIDgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODEgODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184MiA4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzgzIDg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODQgODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184NSA4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg2IDg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODcgODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184OCA4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg5IDkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTAgOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185MSA5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzkyIDkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTMgOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185NCA5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk1IDk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTYgOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185NyA5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk4IDk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTkgMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTAwIDEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwMSAxMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDIgMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTAzIDEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwNCAxMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDUgMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA2IDEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwNyAxMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDggMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA5IDExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExMCAxMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTEgMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTEyIDExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExMyAxMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTQgMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE1IDExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExNiAxMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTcgMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE4IDExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExOSAxMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjAgMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTIxIDEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyMiAxMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjMgMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI0IDEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyNSAxMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjYgMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI3IDEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyOCAxMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjkgMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTMwIDEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzMSAxMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzIgMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTMzIDEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzNCAxMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzUgMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM2IDEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzNyAxMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzggMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM5IDE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0MCAxNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDEgMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQyIDE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0MyAxNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDQgMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ1IDE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0NiAxNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDcgMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ4IDE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0OSAxNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTAgMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTUxIDE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1MiAxNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTMgMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU0IDE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1NSAxNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTYgMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU3IDE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1OCAxNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTkgMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTYwIDE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2MSAxNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjIgMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTYzIDE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2NCAxNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjUgMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY2IDE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2NyAxNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjggMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY5IDE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3MCAxNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzEgMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTcyIDE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3MyAxNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzQgMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc1IDE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3NiAxNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzcgMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc4IDE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3OSAxODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODAgMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTgxIDE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4MiAxODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODMgMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg0IDE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4NSAxODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODYgMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg3IDE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4OCAxODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODkgMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTkwIDE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5MSAxOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTIgMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTkzIDE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5NCAxOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTUgMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk2IDE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5NyAxOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTggMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk5IDIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwMCAyMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDEgMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjAyIDIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwMyAyMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDQgMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA1IDIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwNiAyMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDcgMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA4IDIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwOSAyMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTAgMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjExIDIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxMiAyMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTMgMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE0IDIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxNSAyMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTYgMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE3IDIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxOCAyMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTkgMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjIwIDIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyMSAyMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjIgMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjIzIDIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyNCAyMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjUgMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI2IDIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyNyAyMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjggMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI5IDIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzMCAyMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzEgMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjMyIDIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzMyAyMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzQgMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM1IDIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzNiAyMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzcgMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM4IDIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzOSAyNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDAgMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQxIDI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0MiAyNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDMgMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ0IDI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0NSAyNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDYgMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ3IDI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0OCAyNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDkgMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjUwIDI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1MSAyNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTIgMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjUzIDI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1NCAyNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTUgMjU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjU2IDI1NgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9tb2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9tb2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjU3NTRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvbW9kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfTU9EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfTU9EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvZGl2X2Jhc2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTU9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgTkROQk9PU1RfUFBfRElWX0JBU0UoeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRCh4LCB5KSBORE5CT09TVF9QUF9NT0RfSSh4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EX0koeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBORE5CT09TVF9QUF9ESVZfQkFTRSh4LCB5KSkKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfTU9EX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9NT0RfRChkLCB4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0QoZCwgeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX01PRF9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRF9EX0koZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBORE5CT09TVF9QUF9ESVZfQkFTRV9EKGQsIHgsIHkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDMzMWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfU1VCX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfU1VCX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TVUIgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUIoeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQih4LCB5KSBORE5CT09TVF9QUF9TVUJfSSh4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX0koeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TVUJfUChkLCB4eSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCB4eSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX08oZCwgeHkpIE5ETkJPT1NUX1BQX1NVQl9PX0kgeHkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX08oZCwgeHkpIE5ETkJPT1NUX1BQX1NVQl9PX0koTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCB4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgeHkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX09fSSh4LCB5KSAoTkROQk9PU1RfUFBfREVDKHgpLCBORE5CT09TVF9QUF9ERUMoeSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NVQl9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1NVQl9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9EX0koZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9kYXRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2RhdGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzhlZTc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2RhdGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9EQVRBX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX0RBVEFfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BUlJBWV9EQVRBICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBhcnJheSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkgTkROQk9PU1RfUFBfQVJSQVlfREFUQV9JKGFycmF5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfREFUQV9JKGFycmF5KSBORE5CT09TVF9QUF9BUlJBWV9EQVRBX0lJIGFycmF5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9EQVRBX0lJKHNpemUsIGRhdGEpIGRhdGEKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2VsZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YmJhNmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX0VMRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJSQVlfRUxFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2RhdGEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvc2l6ZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BUlJBWV9FTEVNICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTShpLCBhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTShORE5CT09TVF9QUF9BUlJBWV9TSVpFKGFycmF5KSwgaSwgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oaSwgYXJyYXkpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU1fSShpLCBhcnJheSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU1fSShpLCBhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTShORE5CT09TVF9QUF9BUlJBWV9TSVpFKGFycmF5KSwgaSwgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWU5MWJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9TSVpFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX1NJWkVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BUlJBWV9TSVpFICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfU0laRShhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBhcnJheSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfU0laRShhcnJheSkgTkROQk9PU1RfUFBfQVJSQVlfU0laRV9JKGFycmF5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfU0laRV9JKGFycmF5KSBORE5CT09TVF9QUF9BUlJBWV9TSVpFX0lJIGFycmF5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9TSVpFX0lJKHNpemUsIGRhdGEpIHNpemUKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VkOWY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ0FUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0NBVCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVQoYSwgYikgTkROQk9PU1RfUFBfQ0FUX0koYSwgYikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUKGEsIGIpIE5ETkJPT1NUX1BQX0NBVF9PTygoYSwgYikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVRfT08ocGFyKSBORE5CT09TVF9QUF9DQVRfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUX0koYSwgYikgYSAjIyBiCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NBVF9JKGEsIGIpIE5ETkJPT1NUX1BQX0NBVF9JSSh+LCBhICMjIGIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVRfSUkocCwgcmVzKSByZXMKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiZmJmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTU1BX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTU1BX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbXBhcmlzb24vbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMjA5YzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTVBBUklTT05fTEVTU19FUVVBTF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT01QQVJJU09OX0xFU1NfRVFVQUxfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvbm90LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTEVTU19FUVVBTCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUwoeCwgeSkgTkROQk9PU1RfUFBfTk9UKE5ETkJPT1NUX1BQX1NVQih4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTEVTU19FUVVBTCh4LCB5KSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0koeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfSSh4LCB5KSBORE5CT09TVF9QUF9OT1QoTkROQk9PU1RfUFBfU1VCKHgsIHkpKQotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfTk9UKE5ETkJPT1NUX1BQX1NVQl9EKGQsIHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRF9JKGQsIHgsIHkpIE5ETkJPT1NUX1BQX05PVChORE5CT09TVF9QUF9TVUJfRChkLCB4LCB5KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNTliNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi0yMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBFZHdhcmQgRGllbmVyIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTkZJR19DT05GSUdfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09ORklHX0NPTkZJR19IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkgMHgwMDAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfSURFQUwoKSAweDAwMDIKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkgMHgwMDA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpIDB4MDAwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0JDQygpIDB4MDAxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0VERygpIDB4MDAyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpIDB4MDA0MAotIwotIyBpZm5kZWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTCi0jICAgIGlmIGRlZmluZWQoX19HQ0NYTUxfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICBlbGlmIGRlZmluZWQoX19XQVZFX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pICYmIF9fTVdFUktTX18gPj0gMHgzMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fRURHX18pIHx8IGRlZmluZWQoX19FREdfVkVSU0lPTl9fKQotIyAgICAgICAgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX19FREdfVkVSU0lPTl9fID49IDMwOAotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKSkKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKSB8IE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgICAgIGVuZGlmCi0jICAgIGVsaWYgZGVmaW5lZChfX01XRVJLU19fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfTVdDQygpKQotIyAgICBlbGlmIGRlZmluZWQoX19ETUNfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX0RNQygpKQotIyAgICBlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPj0gMHg1ODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICBlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fSUJNQ19fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19CQ0MoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfTVNWQygpKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfQ09ORklHX0VYVEVOREVEX0xJTkVfSU5GTyAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFBfQ09ORklHX0VYVEVOREVEX0xJTkVfSU5GTwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0VYVEVOREVEX0xJTkVfSU5GTyAwCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTkZJR19FUlJPUlMgKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BQX0NPTkZJR19FUlJPUlMKLSMgICAgaWZkZWYgTkRFQlVHCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0VSUk9SUyAwCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRVJST1JTIDEKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfVkFSSUFESUNTICovCi0jCi0jIGlmICFkZWZpbmVkIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICAvKiB2YXJpYWRpYyBzdXBwb3J0IGV4cGxpY2l0bHkgZGlzYWJsZWQgZm9yIGFsbCB1bnRlc3RlZCBjb21waWxlcnMgKi8KLSMgICAgaWYgZGVmaW5lZCBfX0dDQ1hNTF9fIHx8IGRlZmluZWQgX19DVURBQ0NfXyB8fCBkZWZpbmVkIF9fUEFUSFNDQUxFX18gfHwgZGVmaW5lZCBfX2NsYW5nX18gfHwgZGVmaW5lZCBfX0RNQ19fIHx8IGRlZmluZWQgX19DT0RFR0VBUkNfXyB8fCBkZWZpbmVkIF9fQk9STEFORENfXyB8fCBkZWZpbmVkIF9fTVdFUktTX18gfHwgZGVmaW5lZCBfX1NVTlBST19DQyB8fCBkZWZpbmVkIF9fSFBfYUNDICYmICFkZWZpbmVkIF9fRURHX18gfHwgZGVmaW5lZCBfX01SQ19fIHx8IGRlZmluZWQgX19TQ19fIHx8IGRlZmluZWQgX19JQk1DUFBfXyB8fCBkZWZpbmVkIF9fUEdJCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDAKLSMgICAgLyogVkMrKyAoQy9DKyspICovCi0jICAgIGVsaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmICFkZWZpbmVkIF9fRURHX18KLSMgICAgICAgIGlmIF9NU0NfVkVSID49IDE0MDAKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDEKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMgMQotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMAotIyAgICAgICAgZW5kaWYKLSMgICAgLyogV2F2ZSAoQy9DKyspLCBHQ0MgKEMrKykgKi8KLSMgICAgZWxpZiBkZWZpbmVkIF9fV0FWRV9fICYmIF9fV0FWRV9IQVNfVkFSSUFESUNTX18gfHwgZGVmaW5lZCBfX0dOVUNfXyAmJiBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAxCi0jICAgIC8qIEVERy1iYXNlZCAoQy9DKyspLCBHQ0MgKEMpLCBhbmQgdW5rbm93biAoQy9DKyspICovCi0jICAgIGVsaWYgIWRlZmluZWQgX19jcGx1c3BsdXMgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDAKLSMgICAgZW5kaWYKLSMgZWxpZiAhTkROQk9PU1RfUFBfVkFSSUFESUNTICsgMSA8IDIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMQotIyAgICBpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgIShkZWZpbmVkIF9fRURHX18gfHwgZGVmaW5lZCBfX0dDQ1hNTF9fIHx8IGRlZmluZWQgX19DVURBQ0NfXyB8fCBkZWZpbmVkIF9fUEFUSFNDQUxFX18gfHwgZGVmaW5lZCBfX2NsYW5nX18gfHwgZGVmaW5lZCBfX0RNQ19fIHx8IGRlZmluZWQgX19DT0RFR0VBUkNfXyB8fCBkZWZpbmVkIF9fQk9STEFORENfXyB8fCBkZWZpbmVkIF9fTVdFUktTX18gfHwgZGVmaW5lZCBfX1NVTlBST19DQyB8fCBkZWZpbmVkIF9fSFBfYUNDIHx8IGRlZmluZWQgX19NUkNfXyB8fCBkZWZpbmVkIF9fU0NfXyB8fCBkZWZpbmVkIF9fSUJNQ1BQX18gfHwgZGVmaW5lZCBfX1BHSSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQyAxCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMAotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZWR1Y2VfZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RlZHVjZV9kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM3NGNjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RlZHVjZV9kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERURVQ0VfRF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFRFVDRV9EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9ERURVQ0VfRCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVEVUNFX0QoKSBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvd2hpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZG1jL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc2NmQ5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvd2hpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX1dISUxFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNThfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOThfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTcsIHMpKSwgcCwgbywgcykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTcsIHMpKQotIwotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZWRnL3doaWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2VkZy93aGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMTMwM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZWRnL3doaWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9FREdfV0hJTEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfRURHX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTczX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9JKHAsIG8sIHMpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV82LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBORE5CT09TVF9QUF9XSElMRV85LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8zOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV80OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBORE5CT09TVF9QUF9XSElMRV81OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV82OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBORE5CT09TVF9QUF9XSElMRV82OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV83OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBORE5CT09TVF9QUF9XSElMRV83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBORE5CT09TVF9QUF9XSElMRV84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBORE5CT09TVF9QUF9XSElMRV84OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV85OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBORE5CT09TVF9QUF9XSElMRV85OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTcsIHMpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvbXN2Yy93aGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9tc3ZjL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFjOTg2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9tc3ZjL3doaWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9NU1ZDX1dISUxFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX01TVkNfV0hJTEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBORE5CT09TVF9QUF9XSElMRV83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBORE5CT09TVF9QUF9XSElMRV84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU3LCBzKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL3doaWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFlOWVlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC93aGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfV0hJTEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfV0hJTEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzJfQyhORE5CT09TVF9QUF9CT09MKHAoMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zX0MoTkROQk9PU1RfUFBfQk9PTChwKDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzVfQyhORE5CT09TVF9QUF9CT09MKHAoNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82X0MoTkROQk9PU1RfUFBfQk9PTChwKDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfN19DKE5ETkJPT1NUX1BQX0JPT0wocCg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzhfQyhORE5CT09TVF9QUF9CT09MKHAoOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjBfQyhORE5CT09TVF9QUF9CT09MKHAoMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjNfQyhORE5CT09TVF9QUF9CT09MKHAoMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjZfQyhORE5CT09TVF9QUF9CT09MKHAoMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjlfQyhORE5CT09TVF9QUF9CT09MKHAoMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzJfQyhORE5CT09TVF9QUF9CT09MKHAoMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzVfQyhORE5CT09TVF9QUF9CT09MKHAoMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zN19DKE5ETkJPT1NUX1BQX0JPT0wocCgzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzhfQyhORE5CT09TVF9QUF9CT09MKHAoMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDFfQyhORE5CT09TVF9QUF9CT09MKHAoNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80M19DKE5ETkJPT1NUX1BQX0JPT0wocCg0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDRfQyhORE5CT09TVF9QUF9CT09MKHAoNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDdfQyhORE5CT09TVF9QUF9CT09MKHAoNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTBfQyhORE5CT09TVF9QUF9CT09MKHAoNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTNfQyhORE5CT09TVF9QUF9CT09MKHAoNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTZfQyhORE5CT09TVF9QUF9CT09MKHAoNTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU3X0MoTkROQk9PU1RfUFBfQk9PTChwKDU4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTlfQyhORE5CT09TVF9QUF9CT09MKHAoNjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYwX0MoTkROQk9PU1RfUFBfQk9PTChwKDYxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjJfQyhORE5CT09TVF9QUF9CT09MKHAoNjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYzX0MoTkROQk9PU1RfUFBfQk9PTChwKDY0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg2NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjVfQyhORE5CT09TVF9QUF9CT09MKHAoNjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY2X0MoTkROQk9PU1RfUFBfQk9PTChwKDY3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82N19DKE5ETkJPT1NUX1BQX0JPT0wocCg2OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjhfQyhORE5CT09TVF9QUF9CT09MKHAoNjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY5X0MoTkROQk9PU1RfUFBfQk9PTChwKDcwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzFfQyhORE5CT09TVF9QUF9CT09MKHAoNzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcyX0MoTkROQk9PU1RfUFBfQk9PTChwKDczLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83M19DKE5ETkJPT1NUX1BQX0JPT0wocCg3NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzRfQyhORE5CT09TVF9QUF9CT09MKHAoNzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc1X0MoTkROQk9PU1RfUFBfQk9PTChwKDc2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg3NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzdfQyhORE5CT09TVF9QUF9CT09MKHAoNzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc4X0MoTkROQk9PU1RfUFBfQk9PTChwKDc5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODBfQyhORE5CT09TVF9QUF9CT09MKHAoODEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgxX0MoTkROQk9PU1RfUFBfQk9PTChwKDgyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODNfQyhORE5CT09TVF9QUF9CT09MKHAoODQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg0X0MoTkROQk9PU1RfUFBfQk9PTChwKDg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODZfQyhORE5CT09TVF9QUF9CT09MKHAoODcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg3X0MoTkROQk9PU1RfUFBfQk9PTChwKDg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg4OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODlfQyhORE5CT09TVF9QUF9CT09MKHAoOTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkwX0MoTkROQk9PU1RfUFBfQk9PTChwKDkxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTJfQyhORE5CT09TVF9QUF9CT09MKHAoOTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkzX0MoTkROQk9PU1RfUFBfQk9PTChwKDk0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTVfQyhORE5CT09TVF9QUF9CT09MKHAoOTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk2X0MoTkROQk9PU1RfUFBfQk9PTChwKDk3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85N19DKE5ETkJPT1NUX1BQX0JPT0wocCg5OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOThfQyhORE5CT09TVF9QUF9CT09MKHAoOTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDFfQyhORE5CT09TVF9QUF9CT09MKHAoMTAyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDRfQyhORE5CT09TVF9QUF9CT09MKHAoMTA1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDdfQyhORE5CT09TVF9QUF9CT09MKHAoMTA4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTExLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTExX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTE0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTE3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDExOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTlfQyhORE5CT09TVF9QUF9CT09MKHAoMTIwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjJfQyhORE5CT09TVF9QUF9CT09MKHAoMTIzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjVfQyhORE5CT09TVF9QUF9CT09MKHAoMTI2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjhfQyhORE5CT09TVF9QUF9CT09MKHAoMTI5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzFfQyhORE5CT09TVF9QUF9CT09MKHAoMTMyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzRfQyhORE5CT09TVF9QUF9CT09MKHAoMTM1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzdfQyhORE5CT09TVF9QUF9CT09MKHAoMTM4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDBfQyhORE5CT09TVF9QUF9CT09MKHAoMTQxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDNfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDZfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDlfQyhORE5CT09TVF9QUF9CT09MKHAoMTUwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTUzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTU2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNThfQyhORE5CT09TVF9QUF9CT09MKHAoMTU5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjFfQyhORE5CT09TVF9QUF9CT09MKHAoMTYyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjRfQyhORE5CT09TVF9QUF9CT09MKHAoMTY1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjdfQyhORE5CT09TVF9QUF9CT09MKHAoMTY4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzBfQyhORE5CT09TVF9QUF9CT09MKHAoMTcxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzNfQyhORE5CT09TVF9QUF9CT09MKHAoMTc0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzZfQyhORE5CT09TVF9QUF9CT09MKHAoMTc3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzlfQyhORE5CT09TVF9QUF9CT09MKHAoMTgwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODJfQyhORE5CT09TVF9QUF9CT09MKHAoMTgzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODVfQyhORE5CT09TVF9QUF9CT09MKHAoMTg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxODgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODhfQyhORE5CT09TVF9QUF9CT09MKHAoMTg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTkyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTk1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTk4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDBfQyhORE5CT09TVF9QUF9CT09MKHAoMjAxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDNfQyhORE5CT09TVF9QUF9CT09MKHAoMjA0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDZfQyhORE5CT09TVF9QUF9CT09MKHAoMjA3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDlfQyhORE5CT09TVF9QUF9CT09MKHAoMjEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTJfQyhORE5CT09TVF9QUF9CT09MKHAoMjEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTVfQyhORE5CT09TVF9QUF9CT09MKHAoMjE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMThfQyhORE5CT09TVF9QUF9CT09MKHAoMjE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjFfQyhORE5CT09TVF9QUF9CT09MKHAoMjIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjRfQyhORE5CT09TVF9QUF9CT09MKHAoMjI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjdfQyhORE5CT09TVF9QUF9CT09MKHAoMjI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzBfQyhORE5CT09TVF9QUF9CT09MKHAoMjMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzNfQyhORE5CT09TVF9QUF9CT09MKHAoMjM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzZfQyhORE5CT09TVF9QUF9CT09MKHAoMjM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzlfQyhORE5CT09TVF9QUF9CT09MKHAoMjQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDJfQyhORE5CT09TVF9QUF9CT09MKHAoMjQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDVfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0N19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDhfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTFfQyhORE5CT09TVF9QUF9CT09MKHAoMjUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1M19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTRfQyhORE5CT09TVF9QUF9CT09MKHAoMjU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTcsIHMpKSwgcCwgbywgcykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTcsIHMpKQotIwotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MWEzMjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfRVhQUl9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0VYUFJfSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRVhQUl9JRiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUYoY29uZCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfQk9PTChjb25kKSwgZXhwcikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JRihjb25kLCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lGX0koY29uZCwgZXhwcikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUZfSShjb25kLCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9CT09MKGNvbmQpLCBleHByKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZhNGFlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9FWFBSX0lJRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0VYUFJfSUlGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VYUFJfSUlGICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGKGJpdCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUZfSShiaXQsIGV4cHIpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGKGJpdCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUZfT08oKGJpdCwgZXhwcikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRl9PTyhwYXIpIE5ETkJPT1NUX1BQX0VYUFJfSUlGX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRl9JKGJpdCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUZfICMjIGJpdChleHByKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUZfMChleHByKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUZfMShleHByKSBleHByCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjJmMWM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JRiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lGKGNvbmQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9CT09MKGNvbmQpLCB0LCBmKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JRihjb25kLCB0LCBmKSBORE5CT09TVF9QUF9JRl9JKGNvbmQsIHQsIGYpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JRl9JKGNvbmQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9CT09MKGNvbmQpLCB0LCBmKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2M2ZjIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9JSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9JSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGKGJpdCwgdCwgZikgTkROQk9PU1RfUFBfSUlGX0koYml0LCB0LCBmKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUYoYml0LCB0LCBmKSBORE5CT09TVF9QUF9JSUZfT08oKGJpdCwgdCwgZikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUZfT08ocGFyKSBORE5CT09TVF9QUF9JSUZfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGX0koYml0LCB0LCBmKSBORE5CT09TVF9QUF9JSUZfICMjIGJpdCh0LCBmKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUZfSShiaXQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRl9JSShORE5CT09TVF9QUF9JSUZfICMjIGJpdCh0LCBmKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl9JSShpZCkgaWQKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl8wKHQsIGYpIGYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl8xKHQsIGYpIHQKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1M2MzOTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTIgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9XSElMRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1dISUxFICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFKHByZWQsIG9wLCBzdGF0ZSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9XSElMRV8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NikpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9QKG4pIE5ETkJPT1NUX1BQX0JJVEFORChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfLCBORE5CT09TVF9QUF9XSElMRV8gIyMgbihORE5CT09TVF9QUF9XSElMRV9GLCBORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCkpLCBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLXywgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfICMjIG4oTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCkpLCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLXywgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBuKE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwpKSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX1AobikgTkROQk9PU1RfUFBfQklUQU5EKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9XSElMRV9DSEVDS18sIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBuKE5ETkJPT1NUX1BQX1dISUxFX0YsIE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMKSksIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS18sIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXyAjIyBuKE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwpKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0YoZCwgXykgMAotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZWRnL3doaWxlLmhwcD4KLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL21zdmMvd2hpbGUuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvd2hpbGUuaHBwPgotIyBlbHNlCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC93aGlsZS5ocHA+Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTcocCwgbywgcykgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAxKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfTklMIDEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzczKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTAyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTExKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTIwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTIzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTMyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTUwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTUzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTYyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTcxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTgwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTgzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTkyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjAxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjEwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjEzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjIyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjMxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjUyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjU1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1NihwLCBvLCBzKSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5ZjEzNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERUJVR19FUlJPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERUJVR19FUlJPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRVJST1IgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0VSUk9SUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1IoY29kZSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0VSUk9SXywgY29kZSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwMCBORE5CT09TVF9QUF9FUlJPUigweDAwMDAsIE5ETkJPT1NUX1BQX0lOREVYX09VVF9PRl9CT1VORFMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDEgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAxLCBORE5CT09TVF9QUF9XSElMRV9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwMiBORE5CT09TVF9QUF9FUlJPUigweDAwMDIsIE5ETkJPT1NUX1BQX0ZPUl9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwMyBORE5CT09TVF9QUF9FUlJPUigweDAwMDMsIE5ETkJPT1NUX1BQX1JFUEVBVF9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwNCBORE5CT09TVF9QUF9FUlJPUigweDAwMDQsIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwNSBORE5CT09TVF9QUF9FUlJPUigweDAwMDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX09WRVJGTE9XKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDA2IE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNiwgTkROQk9PU1RfUFBfQVJJVEhNRVRJQ19PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwNyBORE5CT09TVF9QUF9FUlJPUigweDAwMDcsIE5ETkJPT1NUX1BQX0RJVklTSU9OX0JZX1pFUk8pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ4ZTczOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERUNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVDX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZjRhY2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy9hdXRvX3JlYy5ocHA+Ci0jIGVsc2UKLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQVVUT19SRUNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0FVVE9fUkVDX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BVVRPX1JFQyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVVUT19SRUMocHJlZCwgbikgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8gIyMgbihwcmVkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yNTYocCkgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMTI4KHApIE5ETkJPT1NUX1BQX05PREVfNjQocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfNjQocCkgTkROQk9PU1RfUFBfTk9ERV8zMihwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8zMihwKSBORE5CT09TVF9QUF9OT0RFXzE2KHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzE2KHApIE5ETkJPT1NUX1BQX05PREVfOChwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV84KHApIE5ETkJPT1NUX1BQX05PREVfNChwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV80KHApIE5ETkJPT1NUX1BQX05PREVfMihwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yKHApIE5ETkJPT1NUX1BQX05PREVfMShwKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI4KSwgTkROQk9PU1RfUFBfTk9ERV82NCwgTkROQk9PU1RfUFBfTk9ERV8xOTIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY0KHApIE5ETkJPT1NUX1BQX0lJRihwKDY0KSwgTkROQk9PU1RfUFBfTk9ERV8zMiwgTkROQk9PU1RfUFBfTk9ERV85NikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMyKHApIE5ETkJPT1NUX1BQX0lJRihwKDMyKSwgTkROQk9PU1RfUFBfTk9ERV8xNiwgTkROQk9PU1RfUFBfTk9ERV80OCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNihwKSBORE5CT09TVF9QUF9JSUYocCgxNiksIE5ETkJPT1NUX1BQX05PREVfOCwgTkROQk9PU1RfUFBfTk9ERV8yNCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOChwKSBORE5CT09TVF9QUF9JSUYocCg4KSwgTkROQk9PU1RfUFBfTk9ERV80LCBORE5CT09TVF9QUF9OT0RFXzEyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNChwKSBORE5CT09TVF9QUF9JSUYocCg0KSwgTkROQk9PU1RfUFBfTk9ERV8yLCBORE5CT09TVF9QUF9OT0RFXzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMihwKSBORE5CT09TVF9QUF9JSUYocCgyKSwgTkROQk9PU1RfUFBfTk9ERV8xLCBORE5CT09TVF9QUF9OT0RFXzMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEocCkgTkROQk9PU1RfUFBfSUlGKHAoMSksIDEsIDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMyksIDMsIDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNihwKSBORE5CT09TVF9QUF9JSUYocCg2KSwgTkROQk9PU1RfUFBfTk9ERV81LCBORE5CT09TVF9QUF9OT0RFXzcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUocCkgTkROQk9PU1RfUFBfSUlGKHAoNSksIDUsIDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcocCkgTkROQk9PU1RfUFBfSUlGKHAoNyksIDcsIDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMihwKSBORE5CT09TVF9QUF9JSUYocCgxMiksIE5ETkJPT1NUX1BQX05PREVfMTAsIE5ETkJPT1NUX1BQX05PREVfMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTApLCBORE5CT09TVF9QUF9OT0RFXzksIE5ETkJPT1NUX1BQX05PREVfMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkocCkgTkROQk9PU1RfUFBfSUlGKHAoOSksIDksIDEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMShwKSBORE5CT09TVF9QUF9JSUYocCgxMSksIDExLCAxMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNChwKSBORE5CT09TVF9QUF9JSUYocCgxNCksIE5ETkJPT1NUX1BQX05PREVfMTMsIE5ETkJPT1NUX1BQX05PREVfMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzKHApIE5ETkJPT1NUX1BQX0lJRihwKDEzKSwgMTMsIDE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNShwKSBORE5CT09TVF9QUF9JSUYocCgxNSksIDE1LCAxNikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQpLCBORE5CT09TVF9QUF9OT0RFXzIwLCBORE5CT09TVF9QUF9OT0RFXzI4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjApLCBORE5CT09TVF9QUF9OT0RFXzE4LCBORE5CT09TVF9QUF9OT0RFXzIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4KSwgTkROQk9PU1RfUFBfTk9ERV8xNywgTkROQk9PU1RfUFBfTk9ERV8xOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTcpLCAxNywgMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5KSwgMTksIDIwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyKHApIE5ETkJPT1NUX1BQX0lJRihwKDIyKSwgTkROQk9PU1RfUFBfTk9ERV8yMSwgTkROQk9PU1RfUFBfTk9ERV8yMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjEpLCAyMSwgMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzKHApIE5ETkJPT1NUX1BQX0lJRihwKDIzKSwgMjMsIDI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjgpLCBORE5CT09TVF9QUF9OT0RFXzI2LCBORE5CT09TVF9QUF9OT0RFXzMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI2KHApIE5ETkJPT1NUX1BQX0lJRihwKDI2KSwgTkROQk9PU1RfUFBfTk9ERV8yNSwgTkROQk9PU1RfUFBfTk9ERV8yNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUpLCAyNSwgMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI3KHApIE5ETkJPT1NUX1BQX0lJRihwKDI3KSwgMjcsIDI4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMwKHApIE5ETkJPT1NUX1BQX0lJRihwKDMwKSwgTkROQk9PU1RfUFBfTk9ERV8yOSwgTkROQk9PU1RfUFBfTk9ERV8zMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjkpLCAyOSwgMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMxKHApIE5ETkJPT1NUX1BQX0lJRihwKDMxKSwgMzEsIDMyKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ4KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ4KSwgTkROQk9PU1RfUFBfTk9ERV80MCwgTkROQk9PU1RfUFBfTk9ERV81NikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDAocCkgTkROQk9PU1RfUFBfSUlGKHAoNDApLCBORE5CT09TVF9QUF9OT0RFXzM2LCBORE5CT09TVF9QUF9OT0RFXzQ0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzYocCkgTkROQk9PU1RfUFBfSUlGKHAoMzYpLCBORE5CT09TVF9QUF9OT0RFXzM0LCBORE5CT09TVF9QUF9OT0RFXzM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM0KHApIE5ETkJPT1NUX1BQX0lJRihwKDM0KSwgTkROQk9PU1RfUFBfTk9ERV8zMywgTkROQk9PU1RfUFBfTk9ERV8zNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMzMpLCAzMywgMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM1KHApIE5ETkJPT1NUX1BQX0lJRihwKDM1KSwgMzUsIDM2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM4KHApIE5ETkJPT1NUX1BQX0lJRihwKDM4KSwgTkROQk9PU1RfUFBfTk9ERV8zNywgTkROQk9PU1RfUFBfTk9ERV8zOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzcocCkgTkROQk9PU1RfUFBfSUlGKHAoMzcpLCAzNywgMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM5KHApIE5ETkJPT1NUX1BQX0lJRihwKDM5KSwgMzksIDQwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDQocCkgTkROQk9PU1RfUFBfSUlGKHAoNDQpLCBORE5CT09TVF9QUF9OT0RFXzQyLCBORE5CT09TVF9QUF9OT0RFXzQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQyKHApIE5ETkJPT1NUX1BQX0lJRihwKDQyKSwgTkROQk9PU1RfUFBfTk9ERV80MSwgTkROQk9PU1RfUFBfTk9ERV80MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDEocCkgTkROQk9PU1RfUFBfSUlGKHAoNDEpLCA0MSwgNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQzKHApIE5ETkJPT1NUX1BQX0lJRihwKDQzKSwgNDMsIDQ0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ2KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ2KSwgTkROQk9PU1RfUFBfTk9ERV80NSwgTkROQk9PU1RfUFBfTk9ERV80NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDUocCkgTkROQk9PU1RfUFBfSUlGKHAoNDUpLCA0NSwgNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ3KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ3KSwgNDcsIDQ4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NihwKSBORE5CT09TVF9QUF9JSUYocCg1NiksIE5ETkJPT1NUX1BQX05PREVfNTIsIE5ETkJPT1NUX1BQX05PREVfNjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MihwKSBORE5CT09TVF9QUF9JSUYocCg1MiksIE5ETkJPT1NUX1BQX05PREVfNTAsIE5ETkJPT1NUX1BQX05PREVfNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTAocCkgTkROQk9PU1RfUFBfSUlGKHAoNTApLCBORE5CT09TVF9QUF9OT0RFXzQ5LCBORE5CT09TVF9QUF9OT0RFXzUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80OShwKSBORE5CT09TVF9QUF9JSUYocCg0OSksIDQ5LCA1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTEocCkgTkROQk9PU1RfUFBfSUlGKHAoNTEpLCA1MSwgNTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTQocCkgTkROQk9PU1RfUFBfSUlGKHAoNTQpLCBORE5CT09TVF9QUF9OT0RFXzUzLCBORE5CT09TVF9QUF9OT0RFXzU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MyhwKSBORE5CT09TVF9QUF9JSUYocCg1MyksIDUzLCA1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTUocCkgTkROQk9PU1RfUFBfSUlGKHAoNTUpLCA1NSwgNTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MChwKSBORE5CT09TVF9QUF9JSUYocCg2MCksIE5ETkJPT1NUX1BQX05PREVfNTgsIE5ETkJPT1NUX1BQX05PREVfNjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTgocCkgTkROQk9PU1RfUFBfSUlGKHAoNTgpLCBORE5CT09TVF9QUF9OT0RFXzU3LCBORE5CT09TVF9QUF9OT0RFXzU5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NyhwKSBORE5CT09TVF9QUF9JSUYocCg1NyksIDU3LCA1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTkocCkgTkROQk9PU1RfUFBfSUlGKHAoNTkpLCA1OSwgNjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjIocCkgTkROQk9PU1RfUFBfSUlGKHAoNjIpLCBORE5CT09TVF9QUF9OT0RFXzYxLCBORE5CT09TVF9QUF9OT0RFXzYzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MShwKSBORE5CT09TVF9QUF9JSUYocCg2MSksIDYxLCA2MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjMocCkgTkROQk9PU1RfUFBfSUlGKHAoNjMpLCA2MywgNjQpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NihwKSBORE5CT09TVF9QUF9JSUYocCg5NiksIE5ETkJPT1NUX1BQX05PREVfODAsIE5ETkJPT1NUX1BQX05PREVfMTEyKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgwKHApIE5ETkJPT1NUX1BQX0lJRihwKDgwKSwgTkROQk9PU1RfUFBfTk9ERV83MiwgTkROQk9PU1RfUFBfTk9ERV84OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzIocCkgTkROQk9PU1RfUFBfSUlGKHAoNzIpLCBORE5CT09TVF9QUF9OT0RFXzY4LCBORE5CT09TVF9QUF9OT0RFXzc2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjgocCkgTkROQk9PU1RfUFBfSUlGKHAoNjgpLCBORE5CT09TVF9QUF9OT0RFXzY2LCBORE5CT09TVF9QUF9OT0RFXzcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY2KHApIE5ETkJPT1NUX1BQX0lJRihwKDY2KSwgTkROQk9PU1RfUFBfTk9ERV82NSwgTkROQk9PU1RfUFBfTk9ERV82NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjUocCkgTkROQk9PU1RfUFBfSUlGKHAoNjUpLCA2NSwgNjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY3KHApIE5ETkJPT1NUX1BQX0lJRihwKDY3KSwgNjcsIDY4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcwKHApIE5ETkJPT1NUX1BQX0lJRihwKDcwKSwgTkROQk9PU1RfUFBfTk9ERV82OSwgTkROQk9PU1RfUFBfTk9ERV83MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjkocCkgTkROQk9PU1RfUFBfSUlGKHAoNjkpLCA2OSwgNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcxKHApIE5ETkJPT1NUX1BQX0lJRihwKDcxKSwgNzEsIDcyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzYocCkgTkROQk9PU1RfUFBfSUlGKHAoNzYpLCBORE5CT09TVF9QUF9OT0RFXzc0LCBORE5CT09TVF9QUF9OT0RFXzc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc0KHApIE5ETkJPT1NUX1BQX0lJRihwKDc0KSwgTkROQk9PU1RfUFBfTk9ERV83MywgTkROQk9PU1RfUFBfTk9ERV83NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzMocCkgTkROQk9PU1RfUFBfSUlGKHAoNzMpLCA3MywgNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc1KHApIE5ETkJPT1NUX1BQX0lJRihwKDc1KSwgNzUsIDc2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc4KHApIE5ETkJPT1NUX1BQX0lJRihwKDc4KSwgTkROQk9PU1RfUFBfTk9ERV83NywgTkROQk9PU1RfUFBfTk9ERV83OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzcocCkgTkROQk9PU1RfUFBfSUlGKHAoNzcpLCA3NywgNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc5KHApIE5ETkJPT1NUX1BQX0lJRihwKDc5KSwgNzksIDgwKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84OChwKSBORE5CT09TVF9QUF9JSUYocCg4OCksIE5ETkJPT1NUX1BQX05PREVfODQsIE5ETkJPT1NUX1BQX05PREVfOTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NChwKSBORE5CT09TVF9QUF9JSUYocCg4NCksIE5ETkJPT1NUX1BQX05PREVfODIsIE5ETkJPT1NUX1BQX05PREVfODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODIocCkgTkROQk9PU1RfUFBfSUlGKHAoODIpLCBORE5CT09TVF9QUF9OT0RFXzgxLCBORE5CT09TVF9QUF9OT0RFXzgzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MShwKSBORE5CT09TVF9QUF9JSUYocCg4MSksIDgxLCA4MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODMocCkgTkROQk9PU1RfUFBfSUlGKHAoODMpLCA4MywgODQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODYocCkgTkROQk9PU1RfUFBfSUlGKHAoODYpLCBORE5CT09TVF9QUF9OT0RFXzg1LCBORE5CT09TVF9QUF9OT0RFXzg3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NShwKSBORE5CT09TVF9QUF9JSUYocCg4NSksIDg1LCA4NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODcocCkgTkROQk9PU1RfUFBfSUlGKHAoODcpLCA4NywgODgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MihwKSBORE5CT09TVF9QUF9JSUYocCg5MiksIE5ETkJPT1NUX1BQX05PREVfOTAsIE5ETkJPT1NUX1BQX05PREVfOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTAocCkgTkROQk9PU1RfUFBfSUlGKHAoOTApLCBORE5CT09TVF9QUF9OT0RFXzg5LCBORE5CT09TVF9QUF9OT0RFXzkxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84OShwKSBORE5CT09TVF9QUF9JSUYocCg4OSksIDg5LCA5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTEocCkgTkROQk9PU1RfUFBfSUlGKHAoOTEpLCA5MSwgOTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTQocCkgTkROQk9PU1RfUFBfSUlGKHAoOTQpLCBORE5CT09TVF9QUF9OT0RFXzkzLCBORE5CT09TVF9QUF9OT0RFXzk1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MyhwKSBORE5CT09TVF9QUF9JSUYocCg5MyksIDkzLCA5NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTUocCkgTkROQk9PU1RfUFBfSUlGKHAoOTUpLCA5NSwgOTYpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEyKHApIE5ETkJPT1NUX1BQX0lJRihwKDExMiksIE5ETkJPT1NUX1BQX05PREVfMTA0LCBORE5CT09TVF9QUF9OT0RFXzEyMCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA0KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwNCksIE5ETkJPT1NUX1BQX05PREVfMTAwLCBORE5CT09TVF9QUF9OT0RFXzEwOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMChwKSBORE5CT09TVF9QUF9JSUYocCgxMDApLCBORE5CT09TVF9QUF9OT0RFXzk4LCBORE5CT09TVF9QUF9OT0RFXzEwMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85OChwKSBORE5CT09TVF9QUF9JSUYocCg5OCksIE5ETkJPT1NUX1BQX05PREVfOTcsIE5ETkJPT1NUX1BQX05PREVfOTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk3KHApIE5ETkJPT1NUX1BQX0lJRihwKDk3KSwgOTcsIDk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85OShwKSBORE5CT09TVF9QUF9JSUYocCg5OSksIDk5LCAxMDApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAyKHApIE5ETkJPT1NUX1BQX0lJRihwKDEwMiksIE5ETkJPT1NUX1BQX05PREVfMTAxLCBORE5CT09TVF9QUF9OT0RFXzEwMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAxKHApIE5ETkJPT1NUX1BQX0lJRihwKDEwMSksIDEwMSwgMTAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTAzKSwgMTAzLCAxMDQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTA4KSwgTkROQk9PU1RfUFBfTk9ERV8xMDYsIE5ETkJPT1NUX1BQX05PREVfMTEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNihwKSBORE5CT09TVF9QUF9JSUYocCgxMDYpLCBORE5CT09TVF9QUF9OT0RFXzEwNSwgTkROQk9PU1RfUFBfTk9ERV8xMDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNShwKSBORE5CT09TVF9QUF9JSUYocCgxMDUpLCAxMDUsIDEwNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA3KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwNyksIDEwNywgMTA4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMChwKSBORE5CT09TVF9QUF9JSUYocCgxMTApLCBORE5CT09TVF9QUF9OT0RFXzEwOSwgTkROQk9PU1RfUFBfTk9ERV8xMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwOShwKSBORE5CT09TVF9QUF9JSUYocCgxMDkpLCAxMDksIDExMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTExKHApIE5ETkJPT1NUX1BQX0lJRihwKDExMSksIDExMSwgMTEyKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTIwKSwgTkROQk9PU1RfUFBfTk9ERV8xMTYsIE5ETkJPT1NUX1BQX05PREVfMTI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE2KHApIE5ETkJPT1NUX1BQX0lJRihwKDExNiksIE5ETkJPT1NUX1BQX05PREVfMTE0LCBORE5CT09TVF9QUF9OT0RFXzExOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE0KSwgTkROQk9PU1RfUFBfTk9ERV8xMTMsIE5ETkJPT1NUX1BQX05PREVfMTE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTEzKSwgMTEzLCAxMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNShwKSBORE5CT09TVF9QUF9JSUYocCgxMTUpLCAxMTUsIDExNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE4KSwgTkROQk9PU1RfUFBfTk9ERV8xMTcsIE5ETkJPT1NUX1BQX05PREVfMTE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE3KSwgMTE3LCAxMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExOShwKSBORE5CT09TVF9QUF9JSUYocCgxMTkpLCAxMTksIDEyMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNChwKSBORE5CT09TVF9QUF9JSUYocCgxMjQpLCBORE5CT09TVF9QUF9OT0RFXzEyMiwgTkROQk9PU1RfUFBfTk9ERV8xMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIyKHApIE5ETkJPT1NUX1BQX0lJRihwKDEyMiksIE5ETkJPT1NUX1BQX05PREVfMTIxLCBORE5CT09TVF9QUF9OT0RFXzEyMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIxKHApIE5ETkJPT1NUX1BQX0lJRihwKDEyMSksIDEyMSwgMTIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTIzKSwgMTIzLCAxMjQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI2KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyNiksIE5ETkJPT1NUX1BQX05PREVfMTI1LCBORE5CT09TVF9QUF9OT0RFXzEyNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI1KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyNSksIDEyNSwgMTI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI3KSwgMTI3LCAxMjgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MihwKSBORE5CT09TVF9QUF9JSUYocCgxOTIpLCBORE5CT09TVF9QUF9OT0RFXzE2MCwgTkROQk9PU1RfUFBfTk9ERV8yMjQpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTYwKSwgTkROQk9PU1RfUFBfTk9ERV8xNDQsIE5ETkJPT1NUX1BQX05PREVfMTc2KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NChwKSBORE5CT09TVF9QUF9JSUYocCgxNDQpLCBORE5CT09TVF9QUF9OT0RFXzEzNiwgTkROQk9PU1RfUFBfTk9ERV8xNTIpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNihwKSBORE5CT09TVF9QUF9JSUYocCgxMzYpLCBORE5CT09TVF9QUF9OT0RFXzEzMiwgTkROQk9PU1RfUFBfTk9ERV8xNDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTMyKSwgTkROQk9PU1RfUFBfTk9ERV8xMzAsIE5ETkJPT1NUX1BQX05PREVfMTM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMChwKSBORE5CT09TVF9QUF9JSUYocCgxMzApLCBORE5CT09TVF9QUF9OT0RFXzEyOSwgTkROQk9PU1RfUFBfTk9ERV8xMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyOShwKSBORE5CT09TVF9QUF9JSUYocCgxMjkpLCAxMjksIDEzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMxKHApIE5ETkJPT1NUX1BQX0lJRihwKDEzMSksIDEzMSwgMTMyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNChwKSBORE5CT09TVF9QUF9JSUYocCgxMzQpLCBORE5CT09TVF9QUF9OT0RFXzEzMywgTkROQk9PU1RfUFBfTk9ERV8xMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMyhwKSBORE5CT09TVF9QUF9JSUYocCgxMzMpLCAxMzMsIDEzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM1KHApIE5ETkJPT1NUX1BQX0lJRihwKDEzNSksIDEzNSwgMTM2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE0MCksIE5ETkJPT1NUX1BQX05PREVfMTM4LCBORE5CT09TVF9QUF9OT0RFXzE0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM4KSwgTkROQk9PU1RfUFBfTk9ERV8xMzcsIE5ETkJPT1NUX1BQX05PREVfMTM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM3KSwgMTM3LCAxMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzOShwKSBORE5CT09TVF9QUF9JSUYocCgxMzkpLCAxMzksIDE0MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQyKSwgTkROQk9PU1RfUFBfTk9ERV8xNDEsIE5ETkJPT1NUX1BQX05PREVfMTQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQxKSwgMTQxLCAxNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MyhwKSBORE5CT09TVF9QUF9JSUYocCgxNDMpLCAxNDMsIDE0NCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE1MiksIE5ETkJPT1NUX1BQX05PREVfMTQ4LCBORE5CT09TVF9QUF9OT0RFXzE1NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0OChwKSBORE5CT09TVF9QUF9JSUYocCgxNDgpLCBORE5CT09TVF9QUF9OT0RFXzE0NiwgTkROQk9PU1RfUFBfTk9ERV8xNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0NiksIE5ETkJPT1NUX1BQX05PREVfMTQ1LCBORE5CT09TVF9QUF9OT0RFXzE0NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0NSksIDE0NSwgMTQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQ3KSwgMTQ3LCAxNDgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE1MCksIE5ETkJPT1NUX1BQX05PREVfMTQ5LCBORE5CT09TVF9QUF9OT0RFXzE1MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0OSksIDE0OSwgMTUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTUxKSwgMTUxLCAxNTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTU2KSwgTkROQk9PU1RfUFBfTk9ERV8xNTQsIE5ETkJPT1NUX1BQX05PREVfMTU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NChwKSBORE5CT09TVF9QUF9JSUYocCgxNTQpLCBORE5CT09TVF9QUF9OT0RFXzE1MywgTkROQk9PU1RfUFBfTk9ERV8xNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MyhwKSBORE5CT09TVF9QUF9JSUYocCgxNTMpLCAxNTMsIDE1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1NSksIDE1NSwgMTU2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1OChwKSBORE5CT09TVF9QUF9JSUYocCgxNTgpLCBORE5CT09TVF9QUF9OT0RFXzE1NywgTkROQk9PU1RfUFBfTk9ERV8xNTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NyhwKSBORE5CT09TVF9QUF9JSUYocCgxNTcpLCAxNTcsIDE1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1OSksIDE1OSwgMTYwKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NihwKSBORE5CT09TVF9QUF9JSUYocCgxNzYpLCBORE5CT09TVF9QUF9OT0RFXzE2OCwgTkROQk9PU1RfUFBfTk9ERV8xODQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2OChwKSBORE5CT09TVF9QUF9JSUYocCgxNjgpLCBORE5CT09TVF9QUF9OT0RFXzE2NCwgTkROQk9PU1RfUFBfTk9ERV8xNzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY0KSwgTkROQk9PU1RfUFBfTk9ERV8xNjIsIE5ETkJPT1NUX1BQX05PREVfMTY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MihwKSBORE5CT09TVF9QUF9JSUYocCgxNjIpLCBORE5CT09TVF9QUF9OT0RFXzE2MSwgTkROQk9PU1RfUFBfTk9ERV8xNjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MShwKSBORE5CT09TVF9QUF9JSUYocCgxNjEpLCAxNjEsIDE2MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYzKHApIE5ETkJPT1NUX1BQX0lJRihwKDE2MyksIDE2MywgMTY0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NihwKSBORE5CT09TVF9QUF9JSUYocCgxNjYpLCBORE5CT09TVF9QUF9OT0RFXzE2NSwgTkROQk9PU1RfUFBfTk9ERV8xNjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NShwKSBORE5CT09TVF9QUF9JSUYocCgxNjUpLCAxNjUsIDE2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2NyksIDE2NywgMTY4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE3MiksIE5ETkJPT1NUX1BQX05PREVfMTcwLCBORE5CT09TVF9QUF9OT0RFXzE3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTcwKSwgTkROQk9PU1RfUFBfTk9ERV8xNjksIE5ETkJPT1NUX1BQX05PREVfMTcxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY5KSwgMTY5LCAxNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MShwKSBORE5CT09TVF9QUF9JSUYocCgxNzEpLCAxNzEsIDE3MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc0KSwgTkROQk9PU1RfUFBfTk9ERV8xNzMsIE5ETkJPT1NUX1BQX05PREVfMTc1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTczKSwgMTczLCAxNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NShwKSBORE5CT09TVF9QUF9JSUYocCgxNzUpLCAxNzUsIDE3NikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4NCksIE5ETkJPT1NUX1BQX05PREVfMTgwLCBORE5CT09TVF9QUF9OT0RFXzE4OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MChwKSBORE5CT09TVF9QUF9JSUYocCgxODApLCBORE5CT09TVF9QUF9OT0RFXzE3OCwgTkROQk9PU1RfUFBfTk9ERV8xODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3OCksIE5ETkJPT1NUX1BQX05PREVfMTc3LCBORE5CT09TVF9QUF9OT0RFXzE3OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3NyksIDE3NywgMTc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc5KSwgMTc5LCAxODApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE4MiksIE5ETkJPT1NUX1BQX05PREVfMTgxLCBORE5CT09TVF9QUF9OT0RFXzE4MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE4MSksIDE4MSwgMTgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTgzKSwgMTgzLCAxODQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTg4KSwgTkROQk9PU1RfUFBfTk9ERV8xODYsIE5ETkJPT1NUX1BQX05PREVfMTkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NihwKSBORE5CT09TVF9QUF9JSUYocCgxODYpLCBORE5CT09TVF9QUF9OT0RFXzE4NSwgTkROQk9PU1RfUFBfTk9ERV8xODcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NShwKSBORE5CT09TVF9QUF9JSUYocCgxODUpLCAxODUsIDE4NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4NyksIDE4NywgMTg4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MChwKSBORE5CT09TVF9QUF9JSUYocCgxOTApLCBORE5CT09TVF9QUF9OT0RFXzE4OSwgTkROQk9PU1RfUFBfTk9ERV8xOTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4OShwKSBORE5CT09TVF9QUF9JSUYocCgxODkpLCAxODksIDE5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE5MSksIDE5MSwgMTkyKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI0KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyNCksIE5ETkJPT1NUX1BQX05PREVfMjA4LCBORE5CT09TVF9QUF9OT0RFXzI0MCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA4KSwgTkROQk9PU1RfUFBfTk9ERV8yMDAsIE5ETkJPT1NUX1BQX05PREVfMjE2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjAwKSwgTkROQk9PU1RfUFBfTk9ERV8xOTYsIE5ETkJPT1NUX1BQX05PREVfMjA0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5NiksIE5ETkJPT1NUX1BQX05PREVfMTk0LCBORE5CT09TVF9QUF9OT0RFXzE5OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk0KSwgTkROQk9PU1RfUFBfTk9ERV8xOTMsIE5ETkJPT1NUX1BQX05PREVfMTk1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTkzKSwgMTkzLCAxOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NShwKSBORE5CT09TVF9QUF9JSUYocCgxOTUpLCAxOTUsIDE5NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk4KSwgTkROQk9PU1RfUFBfTk9ERV8xOTcsIE5ETkJPT1NUX1BQX05PREVfMTk5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk3KSwgMTk3LCAxOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5OShwKSBORE5CT09TVF9QUF9JSUYocCgxOTkpLCAxOTksIDIwMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNChwKSBORE5CT09TVF9QUF9JSUYocCgyMDQpLCBORE5CT09TVF9QUF9OT0RFXzIwMiwgTkROQk9PU1RfUFBfTk9ERV8yMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAyKHApIE5ETkJPT1NUX1BQX0lJRihwKDIwMiksIE5ETkJPT1NUX1BQX05PREVfMjAxLCBORE5CT09TVF9QUF9OT0RFXzIwMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAxKHApIE5ETkJPT1NUX1BQX0lJRihwKDIwMSksIDIwMSwgMjAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjAzKSwgMjAzLCAyMDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA2KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwNiksIE5ETkJPT1NUX1BQX05PREVfMjA1LCBORE5CT09TVF9QUF9OT0RFXzIwNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA1KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwNSksIDIwNSwgMjA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA3KSwgMjA3LCAyMDgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNihwKSBORE5CT09TVF9QUF9JSUYocCgyMTYpLCBORE5CT09TVF9QUF9OT0RFXzIxMiwgTkROQk9PU1RfUFBfTk9ERV8yMjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjEyKSwgTkROQk9PU1RfUFBfTk9ERV8yMTAsIE5ETkJPT1NUX1BQX05PREVfMjE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMChwKSBORE5CT09TVF9QUF9JSUYocCgyMTApLCBORE5CT09TVF9QUF9OT0RFXzIwOSwgTkROQk9PU1RfUFBfTk9ERV8yMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwOShwKSBORE5CT09TVF9QUF9JSUYocCgyMDkpLCAyMDksIDIxMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjExKHApIE5ETkJPT1NUX1BQX0lJRihwKDIxMSksIDIxMSwgMjEyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNChwKSBORE5CT09TVF9QUF9JSUYocCgyMTQpLCBORE5CT09TVF9QUF9OT0RFXzIxMywgTkROQk9PU1RfUFBfTk9ERV8yMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMyhwKSBORE5CT09TVF9QUF9JSUYocCgyMTMpLCAyMTMsIDIxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE1KHApIE5ETkJPT1NUX1BQX0lJRihwKDIxNSksIDIxNSwgMjE2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIwKHApIE5ETkJPT1NUX1BQX0lJRihwKDIyMCksIE5ETkJPT1NUX1BQX05PREVfMjE4LCBORE5CT09TVF9QUF9OT0RFXzIyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE4KSwgTkROQk9PU1RfUFBfTk9ERV8yMTcsIE5ETkJPT1NUX1BQX05PREVfMjE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE3KSwgMjE3LCAyMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxOShwKSBORE5CT09TVF9QUF9JSUYocCgyMTkpLCAyMTksIDIyMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjIyKSwgTkROQk9PU1RfUFBfTk9ERV8yMjEsIE5ETkJPT1NUX1BQX05PREVfMjIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjIxKSwgMjIxLCAyMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMyhwKSBORE5CT09TVF9QUF9JSUYocCgyMjMpLCAyMjMsIDIyNCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQwKSwgTkROQk9PU1RfUFBfTk9ERV8yMzIsIE5ETkJPT1NUX1BQX05PREVfMjQ4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjMyKSwgTkROQk9PU1RfUFBfTk9ERV8yMjgsIE5ETkJPT1NUX1BQX05PREVfMjM2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI4KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyOCksIE5ETkJPT1NUX1BQX05PREVfMjI2LCBORE5CT09TVF9QUF9OT0RFXzIzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjYocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI2KSwgTkROQk9PU1RfUFBfTk9ERV8yMjUsIE5ETkJPT1NUX1BQX05PREVfMjI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI1KSwgMjI1LCAyMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNyhwKSBORE5CT09TVF9QUF9JSUYocCgyMjcpLCAyMjcsIDIyOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjMwKSwgTkROQk9PU1RfUFBfTk9ERV8yMjksIE5ETkJPT1NUX1BQX05PREVfMjMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI5KSwgMjI5LCAyMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMShwKSBORE5CT09TVF9QUF9JSUYocCgyMzEpLCAyMzEsIDIzMikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNihwKSBORE5CT09TVF9QUF9JSUYocCgyMzYpLCBORE5CT09TVF9QUF9OT0RFXzIzNCwgTkROQk9PU1RfUFBfTk9ERV8yMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM0KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzNCksIE5ETkJPT1NUX1BQX05PREVfMjMzLCBORE5CT09TVF9QUF9OT0RFXzIzNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMzKHApIE5ETkJPT1NUX1BQX0lJRihwKDIzMyksIDIzMywgMjM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM1KSwgMjM1LCAyMzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM4KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzOCksIE5ETkJPT1NUX1BQX05PREVfMjM3LCBORE5CT09TVF9QUF9OT0RFXzIzOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM3KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzNyksIDIzNywgMjM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM5KSwgMjM5LCAyNDApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0OChwKSBORE5CT09TVF9QUF9JSUYocCgyNDgpLCBORE5CT09TVF9QUF9OT0RFXzI0NCwgTkROQk9PU1RfUFBfTk9ERV8yNTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ0KSwgTkROQk9PU1RfUFBfTk9ERV8yNDIsIE5ETkJPT1NUX1BQX05PREVfMjQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MihwKSBORE5CT09TVF9QUF9JSUYocCgyNDIpLCBORE5CT09TVF9QUF9OT0RFXzI0MSwgTkROQk9PU1RfUFBfTk9ERV8yNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MShwKSBORE5CT09TVF9QUF9JSUYocCgyNDEpLCAyNDEsIDI0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQzKHApIE5ETkJPT1NUX1BQX0lJRihwKDI0MyksIDI0MywgMjQ0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NihwKSBORE5CT09TVF9QUF9JSUYocCgyNDYpLCBORE5CT09TVF9QUF9OT0RFXzI0NSwgTkROQk9PU1RfUFBfTk9ERV8yNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NShwKSBORE5CT09TVF9QUF9JSUYocCgyNDUpLCAyNDUsIDI0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ3KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0NyksIDI0NywgMjQ4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUyKHApIE5ETkJPT1NUX1BQX0lJRihwKDI1MiksIE5ETkJPT1NUX1BQX05PREVfMjUwLCBORE5CT09TVF9QUF9OT0RFXzI1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUwKSwgTkROQk9PU1RfUFBfTk9ERV8yNDksIE5ETkJPT1NUX1BQX05PREVfMjUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ5KSwgMjQ5LCAyNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MShwKSBORE5CT09TVF9QUF9JSUYocCgyNTEpLCAyNTEsIDI1MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjU0KSwgTkROQk9PU1RfUFBfTk9ERV8yNTMsIE5ETkJPT1NUX1BQX05PREVfMjU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUzKSwgMjUzLCAyNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1NShwKSBORE5CT09TVF9QUF9JSUYocCgyNTUpLCAyNTUsIDI1NikKLSMKLSMgZW5kaWYKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvY2hlY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTA4ZTNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9DSEVDS19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQ0hFQ0tfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0NIRUNLICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLKHgsIHR5cGUpIE5ETkJPT1NUX1BQX0NIRUNLX0QoeCwgdHlwZSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0soeCwgdHlwZSkgTkROQk9PU1RfUFBfQ0hFQ0tfT08oKHgsIHR5cGUpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfT08ocGFyKSBORE5CT09TVF9QUF9DSEVDS19EICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpICYmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfRCh4LCB0eXBlKSBORE5CT09TVF9QUF9DSEVDS18xKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfLCB0eXBlIHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMShjaGspIE5ETkJPT1NUX1BQX0NIRUNLXzIoY2hrKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMihyZXMsIF8pIHJlcwotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfRCh4LCB0eXBlKSBORE5CT09TVF9QUF9DSEVDS18xKHR5cGUgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzEoY2hrKSBORE5CT09TVF9QUF9DSEVDS18yKGNoaykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzIoY2hrKSBORE5CT09TVF9QUF9DSEVDS18zKChORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfICMjIGNoaykpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18zKGltKSBORE5CT09TVF9QUF9DSEVDS181KE5ETkJPT1NUX1BQX0NIRUNLXzQgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS180KHJlcywgXykgcmVzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS181KHJlcykgcmVzCi0jIGVsc2UgLyogRE1DICovCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19EKHgsIHR5cGUpIE5ETkJPT1NUX1BQX0NIRUNLX09PKCh0eXBlIHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfT08ocGFyKSBORE5CT09TVF9QUF9DSEVDS18wICMjIHBhcgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMChjaGspIE5ETkJPT1NUX1BQX0NIRUNLXzEoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NIRUNLX1JFU1VMVF8sIGNoaykpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18xKGNoaykgTkROQk9PU1RfUFBfQ0hFQ0tfMihjaGspCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18yKHJlcywgXykgcmVzCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfMSAxLCBORE5CT09TVF9QUF9OSUwKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9kbWMvYXV0b19yZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy9hdXRvX3JlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMmU2YjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy9hdXRvX3JlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQVVUT19SRUNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0FVVE9fUkVDX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BVVRPX1JFQyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVVUT19SRUMocHJlZCwgbikgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8gIyMgbihwcmVkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yNTYocCkgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMTI4KHApIE5ETkJPT1NUX1BQX05PREVfNjQocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfNjQocCkgTkROQk9PU1RfUFBfTk9ERV8zMihwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8zMihwKSBORE5CT09TVF9QUF9OT0RFXzE2KHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzE2KHApIE5ETkJPT1NUX1BQX05PREVfOChwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV84KHApIE5ETkJPT1NUX1BQX05PREVfNChwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV80KHApIE5ETkJPT1NUX1BQX05PREVfMihwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yKHApIE5ETkJPT1NUX1BQX05PREVfMShwKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjgpLCBORE5CT09TVF9QUF9OT0RFXzY0LCBORE5CT09TVF9QUF9OT0RFXzE5MikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2NCksIE5ETkJPT1NUX1BQX05PREVfMzIsIE5ETkJPT1NUX1BQX05PREVfOTYpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDMyKSwgTkROQk9PU1RfUFBfTk9ERV8xNiwgTkROQk9PU1RfUFBfTk9ERV80OCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2KSwgTkROQk9PU1RfUFBfTk9ERV84LCBORE5CT09TVF9QUF9OT0RFXzI0KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOCksIE5ETkJPT1NUX1BQX05PREVfNCwgTkROQk9PU1RfUFBfTk9ERV8xMikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0KSwgTkROQk9PU1RfUFBfTk9ERV8yLCBORE5CT09TVF9QUF9OT0RFXzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIpLCBORE5CT09TVF9QUF9OT0RFXzEsIE5ETkJPT1NUX1BQX05PREVfMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEpLCAxLCAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMyksIDMsIDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDYpLCBORE5CT09TVF9QUF9OT0RFXzUsIE5ETkJPT1NUX1BQX05PREVfNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDUpLCA1LCA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNyksIDcsIDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyKSwgTkROQk9PU1RfUFBfTk9ERV8xMCwgTkROQk9PU1RfUFBfTk9ERV8xNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwKSwgTkROQk9PU1RfUFBfTk9ERV85LCBORE5CT09TVF9QUF9OT0RFXzExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOSksIDksIDEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDExKSwgMTEsIDEyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQpLCBORE5CT09TVF9QUF9OT0RFXzEzLCBORE5CT09TVF9QUF9OT0RFXzE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzKSwgMTMsIDE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1KSwgMTUsIDE2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0KSwgTkROQk9PU1RfUFBfTk9ERV8yMCwgTkROQk9PU1RfUFBfTk9ERV8yOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjApLCBORE5CT09TVF9QUF9OT0RFXzE4LCBORE5CT09TVF9QUF9OT0RFXzIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgpLCBORE5CT09TVF9QUF9OT0RFXzE3LCBORE5CT09TVF9QUF9OT0RFXzE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3KSwgMTcsIDE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5KSwgMTksIDIwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIpLCBORE5CT09TVF9QUF9OT0RFXzIxLCBORE5CT09TVF9QUF9OT0RFXzIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxKSwgMjEsIDIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzKSwgMjMsIDI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyOCksIE5ETkJPT1NUX1BQX05PREVfMjYsIE5ETkJPT1NUX1BQX05PREVfMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNiksIE5ETkJPT1NUX1BQX05PREVfMjUsIE5ETkJPT1NUX1BQX05PREVfMjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjUpLCAyNSwgMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjcpLCAyNywgMjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzMCksIE5ETkJPT1NUX1BQX05PREVfMjksIE5ETkJPT1NUX1BQX05PREVfMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjkpLCAyOSwgMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzEpLCAzMSwgMzIpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0OCksIE5ETkJPT1NUX1BQX05PREVfNDAsIE5ETkJPT1NUX1BQX05PREVfNTYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDApLCBORE5CT09TVF9QUF9OT0RFXzM2LCBORE5CT09TVF9QUF9OT0RFXzQ0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzNiksIE5ETkJPT1NUX1BQX05PREVfMzQsIE5ETkJPT1NUX1BQX05PREVfMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzNCksIE5ETkJPT1NUX1BQX05PREVfMzMsIE5ETkJPT1NUX1BQX05PREVfMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzMpLCAzMywgMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzUpLCAzNSwgMzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzOCksIE5ETkJPT1NUX1BQX05PREVfMzcsIE5ETkJPT1NUX1BQX05PREVfMzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzcpLCAzNywgMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzkpLCAzOSwgNDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ0KSwgTkROQk9PU1RfUFBfTk9ERV80MiwgTkROQk9PU1RfUFBfTk9ERV80NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDQyKSwgTkROQk9PU1RfUFBfTk9ERV80MSwgTkROQk9PU1RfUFBfTk9ERV80MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0MSksIDQxLCA0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0MyksIDQzLCA0NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ2KSwgTkROQk9PU1RfUFBfTk9ERV80NSwgTkROQk9PU1RfUFBfTk9ERV80NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0NSksIDQ1LCA0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0NyksIDQ3LCA0OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1NiksIE5ETkJPT1NUX1BQX05PREVfNTIsIE5ETkJPT1NUX1BQX05PREVfNjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDUyKSwgTkROQk9PU1RfUFBfTk9ERV81MCwgTkROQk9PU1RfUFBfTk9ERV81NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDUwKSwgTkROQk9PU1RfUFBfTk9ERV80OSwgTkROQk9PU1RfUFBfTk9ERV81MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0OSksIDQ5LCA1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1MSksIDUxLCA1MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDU0KSwgTkROQk9PU1RfUFBfTk9ERV81MywgTkROQk9PU1RfUFBfTk9ERV81NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1MyksIDUzLCA1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1NSksIDU1LCA1NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjApLCBORE5CT09TVF9QUF9OT0RFXzU4LCBORE5CT09TVF9QUF9OT0RFXzYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTgpLCBORE5CT09TVF9QUF9OT0RFXzU3LCBORE5CT09TVF9QUF9OT0RFXzU5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDU3KSwgNTcsIDU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDU5KSwgNTksIDYwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjIpLCBORE5CT09TVF9QUF9OT0RFXzYxLCBORE5CT09TVF9QUF9OT0RFXzYzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDYxKSwgNjEsIDYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDYzKSwgNjMsIDY0KQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5NiksIE5ETkJPT1NUX1BQX05PREVfODAsIE5ETkJPT1NUX1BQX05PREVfMTEyKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODApLCBORE5CT09TVF9QUF9OT0RFXzcyLCBORE5CT09TVF9QUF9OT0RFXzg4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDcyKSwgTkROQk9PU1RfUFBfTk9ERV82OCwgTkROQk9PU1RfUFBfTk9ERV83NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjgpLCBORE5CT09TVF9QUF9OT0RFXzY2LCBORE5CT09TVF9QUF9OT0RFXzcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjYpLCBORE5CT09TVF9QUF9OT0RFXzY1LCBORE5CT09TVF9QUF9OT0RFXzY3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDY1KSwgNjUsIDY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDY3KSwgNjcsIDY4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzApLCBORE5CT09TVF9QUF9OT0RFXzY5LCBORE5CT09TVF9QUF9OT0RFXzcxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDY5KSwgNjksIDcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDcxKSwgNzEsIDcyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3NiksIE5ETkJPT1NUX1BQX05PREVfNzQsIE5ETkJPT1NUX1BQX05PREVfNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3NCksIE5ETkJPT1NUX1BQX05PREVfNzMsIE5ETkJPT1NUX1BQX05PREVfNzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzczKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzMpLCA3MywgNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzUpLCA3NSwgNzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3OCksIE5ETkJPT1NUX1BQX05PREVfNzcsIE5ETkJPT1NUX1BQX05PREVfNzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzcpLCA3NywgNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzkpLCA3OSwgODApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODgpLCBORE5CT09TVF9QUF9OT0RFXzg0LCBORE5CT09TVF9QUF9OT0RFXzkyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4NCksIE5ETkJPT1NUX1BQX05PREVfODIsIE5ETkJPT1NUX1BQX05PREVfODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODIocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4MiksIE5ETkJPT1NUX1BQX05PREVfODEsIE5ETkJPT1NUX1BQX05PREVfODMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODEpLCA4MSwgODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODMpLCA4MywgODQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4NiksIE5ETkJPT1NUX1BQX05PREVfODUsIE5ETkJPT1NUX1BQX05PREVfODcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODUpLCA4NSwgODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODcpLCA4NywgODgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDkyKSwgTkROQk9PU1RfUFBfTk9ERV85MCwgTkROQk9PU1RfUFBfTk9ERV85NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDkwKSwgTkROQk9PU1RfUFBfTk9ERV84OSwgTkROQk9PU1RfUFBfTk9ERV85MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4OSksIDg5LCA5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5MSksIDkxLCA5MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDk0KSwgTkROQk9PU1RfUFBfTk9ERV85MywgTkROQk9PU1RfUFBfTk9ERV85NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5MyksIDkzLCA5NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5NSksIDk1LCA5NikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTIpLCBORE5CT09TVF9QUF9OT0RFXzEwNCwgTkROQk9PU1RfUFBfTk9ERV8xMjApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwNCksIE5ETkJPT1NUX1BQX05PREVfMTAwLCBORE5CT09TVF9QUF9OT0RFXzEwOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwMCksIE5ETkJPT1NUX1BQX05PREVfOTgsIE5ETkJPT1NUX1BQX05PREVfMTAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTgpLCBORE5CT09TVF9QUF9OT0RFXzk3LCBORE5CT09TVF9QUF9OT0RFXzk5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDk3KSwgOTcsIDk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDk5KSwgOTksIDEwMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDIpLCBORE5CT09TVF9QUF9OT0RFXzEwMSwgTkROQk9PU1RfUFBfTk9ERV8xMDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwMSksIDEwMSwgMTAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDMpLCAxMDMsIDEwNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwOCksIE5ETkJPT1NUX1BQX05PREVfMTA2LCBORE5CT09TVF9QUF9OT0RFXzExMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDYpLCBORE5CT09TVF9QUF9OT0RFXzEwNSwgTkROQk9PU1RfUFBfTk9ERV8xMDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwNSksIDEwNSwgMTA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDcpLCAxMDcsIDEwOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTApLCBORE5CT09TVF9QUF9OT0RFXzEwOSwgTkROQk9PU1RfUFBfTk9ERV8xMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwOSksIDEwOSwgMTEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTEpLCAxMTEsIDExMikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTIwKSwgTkROQk9PU1RfUFBfTk9ERV8xMTYsIE5ETkJPT1NUX1BQX05PREVfMTI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE2KSwgTkROQk9PU1RfUFBfTk9ERV8xMTQsIE5ETkJPT1NUX1BQX05PREVfMTE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDExNCksIE5ETkJPT1NUX1BQX05PREVfMTEzLCBORE5CT09TVF9QUF9OT0RFXzExNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTEzKSwgMTEzLCAxMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDExNSksIDExNSwgMTE2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDExOCksIE5ETkJPT1NUX1BQX05PREVfMTE3LCBORE5CT09TVF9QUF9OT0RFXzExOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE3KSwgMTE3LCAxMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDExOSksIDExOSwgMTIwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI0KSwgTkROQk9PU1RfUFBfTk9ERV8xMjIsIE5ETkJPT1NUX1BQX05PREVfMTI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyMiksIE5ETkJPT1NUX1BQX05PREVfMTIxLCBORE5CT09TVF9QUF9OT0RFXzEyMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTIxKSwgMTIxLCAxMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyMyksIDEyMywgMTI0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyNiksIE5ETkJPT1NUX1BQX05PREVfMTI1LCBORE5CT09TVF9QUF9OT0RFXzEyNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI1KSwgMTI1LCAxMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyNyksIDEyNywgMTI4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTIpLCBORE5CT09TVF9QUF9OT0RFXzE2MCwgTkROQk9PU1RfUFBfTk9ERV8yMjQpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjApLCBORE5CT09TVF9QUF9OT0RFXzE0NCwgTkROQk9PU1RfUFBfTk9ERV8xNzYpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQ0KSwgTkROQk9PU1RfUFBfTk9ERV8xMzYsIE5ETkJPT1NUX1BQX05PREVfMTUyKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzYpLCBORE5CT09TVF9QUF9OT0RFXzEzMiwgTkROQk9PU1RfUFBfTk9ERV8xNDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzIpLCBORE5CT09TVF9QUF9OT0RFXzEzMCwgTkROQk9PU1RfUFBfTk9ERV8xMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTMwKSwgTkROQk9PU1RfUFBfTk9ERV8xMjksIE5ETkJPT1NUX1BQX05PREVfMTMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjkpLCAxMjksIDEzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTMxKSwgMTMxLCAxMzIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM0KSwgTkROQk9PU1RfUFBfTk9ERV8xMzMsIE5ETkJPT1NUX1BQX05PREVfMTM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzMpLCAxMzMsIDEzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM1KSwgMTM1LCAxMzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDApLCBORE5CT09TVF9QUF9OT0RFXzEzOCwgTkROQk9PU1RfUFBfTk9ERV8xNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM4KSwgTkROQk9PU1RfUFBfTk9ERV8xMzcsIE5ETkJPT1NUX1BQX05PREVfMTM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzcpLCAxMzcsIDEzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM5KSwgMTM5LCAxNDApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQyKSwgTkROQk9PU1RfUFBfTk9ERV8xNDEsIE5ETkJPT1NUX1BQX05PREVfMTQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDEpLCAxNDEsIDE0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQzKSwgMTQzLCAxNDQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1MiksIE5ETkJPT1NUX1BQX05PREVfMTQ4LCBORE5CT09TVF9QUF9OT0RFXzE1NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0OCksIE5ETkJPT1NUX1BQX05PREVfMTQ2LCBORE5CT09TVF9QUF9OT0RFXzE1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDYpLCBORE5CT09TVF9QUF9OT0RFXzE0NSwgTkROQk9PU1RfUFBfTk9ERV8xNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0NSksIDE0NSwgMTQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDcpLCAxNDcsIDE0OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTApLCBORE5CT09TVF9QUF9OT0RFXzE0OSwgTkROQk9PU1RfUFBfTk9ERV8xNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0OSksIDE0OSwgMTUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTEpLCAxNTEsIDE1MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1NiksIE5ETkJPT1NUX1BQX05PREVfMTU0LCBORE5CT09TVF9QUF9OT0RFXzE1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTQpLCBORE5CT09TVF9QUF9OT0RFXzE1MywgTkROQk9PU1RfUFBfTk9ERV8xNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1MyksIDE1MywgMTU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTUpLCAxNTUsIDE1NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTgpLCBORE5CT09TVF9QUF9OT0RFXzE1NywgTkROQk9PU1RfUFBfTk9ERV8xNTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1NyksIDE1NywgMTU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTkpLCAxNTksIDE2MCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzYpLCBORE5CT09TVF9QUF9OT0RFXzE2OCwgTkROQk9PU1RfUFBfTk9ERV8xODQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2OCksIE5ETkJPT1NUX1BQX05PREVfMTY0LCBORE5CT09TVF9QUF9OT0RFXzE3MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2NCksIE5ETkJPT1NUX1BQX05PREVfMTYyLCBORE5CT09TVF9QUF9OT0RFXzE2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjIpLCBORE5CT09TVF9QUF9OT0RFXzE2MSwgTkROQk9PU1RfUFBfTk9ERV8xNjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2MSksIDE2MSwgMTYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjMpLCAxNjMsIDE2NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjYpLCBORE5CT09TVF9QUF9OT0RFXzE2NSwgTkROQk9PU1RfUFBfTk9ERV8xNjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2NSksIDE2NSwgMTY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjcpLCAxNjcsIDE2OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3MiksIE5ETkJPT1NUX1BQX05PREVfMTcwLCBORE5CT09TVF9QUF9OT0RFXzE3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzApLCBORE5CT09TVF9QUF9OT0RFXzE2OSwgTkROQk9PU1RfUFBfTk9ERV8xNzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2OSksIDE2OSwgMTcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzEpLCAxNzEsIDE3MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzQpLCBORE5CT09TVF9QUF9OT0RFXzE3MywgTkROQk9PU1RfUFBfTk9ERV8xNzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3MyksIDE3MywgMTc0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzUpLCAxNzUsIDE3NikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg0KSwgTkROQk9PU1RfUFBfTk9ERV8xODAsIE5ETkJPT1NUX1BQX05PREVfMTg4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgwKSwgTkROQk9PU1RfUFBfTk9ERV8xNzgsIE5ETkJPT1NUX1BQX05PREVfMTgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3OCksIE5ETkJPT1NUX1BQX05PREVfMTc3LCBORE5CT09TVF9QUF9OT0RFXzE3OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTc3KSwgMTc3LCAxNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3OSksIDE3OSwgMTgwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4MiksIE5ETkJPT1NUX1BQX05PREVfMTgxLCBORE5CT09TVF9QUF9OT0RFXzE4MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgxKSwgMTgxLCAxODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4MyksIDE4MywgMTg0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg4KSwgTkROQk9PU1RfUFBfTk9ERV8xODYsIE5ETkJPT1NUX1BQX05PREVfMTkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4NiksIE5ETkJPT1NUX1BQX05PREVfMTg1LCBORE5CT09TVF9QUF9OT0RFXzE4NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg1KSwgMTg1LCAxODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4NyksIDE4NywgMTg4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5MCksIE5ETkJPT1NUX1BQX05PREVfMTg5LCBORE5CT09TVF9QUF9OT0RFXzE5MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg5KSwgMTg5LCAxOTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5MSksIDE5MSwgMTkyKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI0KSwgTkROQk9PU1RfUFBfTk9ERV8yMDgsIE5ETkJPT1NUX1BQX05PREVfMjQwKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwOCksIE5ETkJPT1NUX1BQX05PREVfMjAwLCBORE5CT09TVF9QUF9OT0RFXzIxNikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjAwKSwgTkROQk9PU1RfUFBfTk9ERV8xOTYsIE5ETkJPT1NUX1BQX05PREVfMjA0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk2KSwgTkROQk9PU1RfUFBfTk9ERV8xOTQsIE5ETkJPT1NUX1BQX05PREVfMTk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5NCksIE5ETkJPT1NUX1BQX05PREVfMTkzLCBORE5CT09TVF9QUF9OT0RFXzE5NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTkzKSwgMTkzLCAxOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5NSksIDE5NSwgMTk2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5OCksIE5ETkJPT1NUX1BQX05PREVfMTk3LCBORE5CT09TVF9QUF9OT0RFXzE5OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk3KSwgMTk3LCAxOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5OSksIDE5OSwgMjAwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA0KSwgTkROQk9PU1RfUFBfTk9ERV8yMDIsIE5ETkJPT1NUX1BQX05PREVfMjA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwMiksIE5ETkJPT1NUX1BQX05PREVfMjAxLCBORE5CT09TVF9QUF9OT0RFXzIwMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjAxKSwgMjAxLCAyMDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwMyksIDIwMywgMjA0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwNiksIE5ETkJPT1NUX1BQX05PREVfMjA1LCBORE5CT09TVF9QUF9OT0RFXzIwNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA1KSwgMjA1LCAyMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwNyksIDIwNywgMjA4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTYpLCBORE5CT09TVF9QUF9OT0RFXzIxMiwgTkROQk9PU1RfUFBfTk9ERV8yMjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTIpLCBORE5CT09TVF9QUF9OT0RFXzIxMCwgTkROQk9PU1RfUFBfTk9ERV8yMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjEwKSwgTkROQk9PU1RfUFBfTk9ERV8yMDksIE5ETkJPT1NUX1BQX05PREVfMjExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDkpLCAyMDksIDIxMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjExKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjExKSwgMjExLCAyMTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE0KSwgTkROQk9PU1RfUFBfTk9ERV8yMTMsIE5ETkJPT1NUX1BQX05PREVfMjE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTMpLCAyMTMsIDIxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE1KSwgMjE1LCAyMTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjApLCBORE5CT09TVF9QUF9OT0RFXzIxOCwgTkROQk9PU1RfUFBfTk9ERV8yMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE4KSwgTkROQk9PU1RfUFBfTk9ERV8yMTcsIE5ETkJPT1NUX1BQX05PREVfMjE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTcpLCAyMTcsIDIxOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE5KSwgMjE5LCAyMjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIyKSwgTkROQk9PU1RfUFBfTk9ERV8yMjEsIE5ETkJPT1NUX1BQX05PREVfMjIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjEpLCAyMjEsIDIyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIzKSwgMjIzLCAyMjQpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQwKSwgTkROQk9PU1RfUFBfTk9ERV8yMzIsIE5ETkJPT1NUX1BQX05PREVfMjQ4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzIpLCBORE5CT09TVF9QUF9OT0RFXzIyOCwgTkROQk9PU1RfUFBfTk9ERV8yMzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjgpLCBORE5CT09TVF9QUF9OT0RFXzIyNiwgTkROQk9PU1RfUFBfTk9ERV8yMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI2KSwgTkROQk9PU1RfUFBfTk9ERV8yMjUsIE5ETkJPT1NUX1BQX05PREVfMjI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjUpLCAyMjUsIDIyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI3KSwgMjI3LCAyMjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjMwKSwgTkROQk9PU1RfUFBfTk9ERV8yMjksIE5ETkJPT1NUX1BQX05PREVfMjMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjkpLCAyMjksIDIzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjMxKSwgMjMxLCAyMzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzYpLCBORE5CT09TVF9QUF9OT0RFXzIzNCwgTkROQk9PU1RfUFBfTk9ERV8yMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM0KSwgTkROQk9PU1RfUFBfTk9ERV8yMzMsIE5ETkJPT1NUX1BQX05PREVfMjM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzMpLCAyMzMsIDIzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM1KSwgMjM1LCAyMzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM4KSwgTkROQk9PU1RfUFBfTk9ERV8yMzcsIE5ETkJPT1NUX1BQX05PREVfMjM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzcpLCAyMzcsIDIzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM5KSwgMjM5LCAyNDApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0OCksIE5ETkJPT1NUX1BQX05PREVfMjQ0LCBORE5CT09TVF9QUF9OT0RFXzI1MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0NCksIE5ETkJPT1NUX1BQX05PREVfMjQyLCBORE5CT09TVF9QUF9OT0RFXzI0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDIpLCBORE5CT09TVF9QUF9OT0RFXzI0MSwgTkROQk9PU1RfUFBfTk9ERV8yNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0MSksIDI0MSwgMjQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDMpLCAyNDMsIDI0NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDYpLCBORE5CT09TVF9QUF9OT0RFXzI0NSwgTkROQk9PU1RfUFBfTk9ERV8yNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0NSksIDI0NSwgMjQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDcpLCAyNDcsIDI0OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1MiksIE5ETkJPT1NUX1BQX05PREVfMjUwLCBORE5CT09TVF9QUF9OT0RFXzI1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTApLCBORE5CT09TVF9QUF9OT0RFXzI0OSwgTkROQk9PU1RfUFBfTk9ERV8yNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0OSksIDI0OSwgMjUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTEpLCAyNTEsIDI1MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTQpLCBORE5CT09TVF9QUF9OT0RFXzI1MywgTkROQk9PU1RfUFBfTk9ERV8yNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1MyksIDI1MywgMjU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTUpLCAyNTUsIDI1NikKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc19iaW5hcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX2JpbmFyeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwODc3N2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX2JpbmFyeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9JU19CSU5BUllfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0lTX0JJTkFSWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2NoZWNrLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSVNfQklOQVJZICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfQklOQVJZKHgpIE5ETkJPT1NUX1BQX0NIRUNLKHgsIE5ETkJPT1NUX1BQX0lTX0JJTkFSWV9DSEVDSykKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfQklOQVJZKHgpIE5ETkJPT1NUX1BQX0lTX0JJTkFSWV9JKHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JU19CSU5BUllfSSh4KSBORE5CT09TVF9QUF9DSEVDSyh4LCBORE5CT09TVF9QUF9JU19CSU5BUllfQ0hFQ0spCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JU19CSU5BUllfQ0hFQ0soYSwgYikgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfUkVTVUxUX05ETkJPT1NUX1BQX0lTX0JJTkFSWV9DSEVDSyAwLCBORE5CT09TVF9QUF9OSUwKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc191bmFyeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfdW5hcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWFhZjU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc191bmFyeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9JU19VTkFSWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfSVNfVU5BUllfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lTX1VOQVJZICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfVU5BUlkoeCkgTkROQk9PU1RfUFBfQ0hFQ0soeCwgTkROQk9PU1RfUFBfSVNfVU5BUllfQ0hFQ0spCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX1VOQVJZKHgpIE5ETkJPT1NUX1BQX0lTX1VOQVJZX0koeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX1VOQVJZX0koeCkgTkROQk9PU1RfUFBfQ0hFQ0soeCwgTkROQk9PU1RfUFBfSVNfVU5BUllfQ0hFQ0spCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JU19VTkFSWV9DSEVDSyhhKSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfTkROQk9PU1RfUFBfSVNfVU5BUllfQ0hFQ0sgMCwgTkROQk9PU1RfUFBfTklMCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYjlhZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTVBUWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTVBUWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRkYjhhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjExZjZkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkODBmYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3YTIyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9TSElGVEVEX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1NISUZURURfUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2V4cHJfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZXhwcl9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZDMwMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZXhwcl9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VYUFJfSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRVhQUl9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9pZi5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ZkM2VhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19FTVBUWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX0VNUFRZX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9FTVBUWSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU1QVFkoKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxNGFmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfSURFTlRJVFlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19JREVOVElUWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JREVOVElUWSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSURFTlRJVFkoaXRlbSkgaXRlbSBORE5CT09TVF9QUF9FTVBUWQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTIyNTY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaW50ZXJjZXB0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfSU5URVJDRVBUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfSU5URVJDRVBUX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9JTlRFUkNFUFQgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCBORE5CT09TVF9QUF9JTlRFUkNFUFRfCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzczCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1NgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5ZWVkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX09WRVJMT0FEX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfT1ZFUkxPQURfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvc2l6ZS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX09WRVJMT0FEICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfT1ZFUkxPQUQocHJlZml4LCAuLi4pIE5ETkJPT1NUX1BQX0NBVChwcmVmaXgsIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkUoX19WQV9BUkdTX18pKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWRlbnRpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWRlbnRpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDZiZDU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lkZW50aXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSURFTlRJVFlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSURFTlRJVFlfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE0NGVkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ1YjY2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JTkNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSU5DX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiMmYzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFURV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNzE2NmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3OWIyZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZTM0NTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlY2Q3OTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNAotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMGM1MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NTQ3ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDgyYWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI4NTcxNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NjEwYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzg3YzdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2ZpbmlzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2ZpbmlzaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczODE3MmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9maW5pc2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiwgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkUoKSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQyOTQ2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0MiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMxIGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjEuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18xKCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xKQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18xKCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMSgpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMxIGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HIDEKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xKSA+IChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTEuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDAKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlhMmQ5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMyIGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjIuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIyLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18yKCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMi5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yKQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18yKCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMigpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMyIGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMgotIwotIyBpZiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIpID4gKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMi5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAxCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMgotIyB1bmRlZiBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNzllMTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9GSUxFTkFNRV8zKQotIyAgICAgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMyBmaWxlbmFtZSBpcyBub3QgZGVmaW5lZAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMy5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMygpIDAKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjMuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfMyBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMykKLSMgICAgaWYgTkROQk9PU1RfUFBfQVJSQVlfU0laRShORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMygpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzMoKSAwCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMyBpdGVyYXRpb24gYm91bmRhcmllcyBvciBmaWxlbmFtZSBub3QgZGVmaW5lZAotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDMKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zKSA+IChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTMuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmMyMTUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfRklMRU5BTUVfNCkKLSMgICAgICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzQgZmlsZW5hbWUgaXMgbm90IGRlZmluZWQKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNC5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjQuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzQoKSAwCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQpCi0jICAgIGlmIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzQoKSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU180KCkgMAotIyAgICBlbmRpZgotIyBlbHNlCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzQgaXRlcmF0aW9uIGJvdW5kYXJpZXMgb3IgZmlsZW5hbWUgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA0Ci0jCi0jIGlmIChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCkgPiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U0LmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDMKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlmZWJiMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICM1IGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjUuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI1LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU181KCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV81IE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181KQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU181KCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNSgpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICM1IGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgNQotIwotIyBpZiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUpID4gKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNS5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA0Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNQotIyB1bmRlZiBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU181Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMDFhZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOTYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmNjNmI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjk2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM4MTBhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5NiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZTc3MzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOTYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2JlYmQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjk2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2xvY2FsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvbG9jYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWMxNGEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvbG9jYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUykKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBsb2NhbCBpdGVyYXRpb24gYm91bmRhcmllcyBhcmUgbm90IGRlZmluZWQKLSMgZWxpZiAhZGVmaW5lZChORE5CT09TVF9QUF9MT0NBTF9NQUNSTykKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBsb2NhbCBpdGVyYXRpb24gdGFyZ2V0IG1hY3JvIGlzIG5vdCBkZWZpbmVkCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfUyBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMpCi0jICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zdGFydC5ocHA+Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMpCi0jICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9maW5pc2guaHBwPgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1MgTkROQk9PU1RfUFBfTE9DQUxfU0UoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0YgTkROQk9PU1RfUFBfTE9DQUxfRkUoKQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyBpZiAoTkROQk9PU1RfUFBfTE9DQUxfUykgPiAoTkROQk9PU1RfUFBfTE9DQUxfRikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvcmxvY2FsLmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDMyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDUwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDUzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDYyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDcxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDczKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDgwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDgzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDkyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTEwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTExKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTEyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTEzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTcwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTcxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTcyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTczKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjEwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjExKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjEyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjEzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzYpCi0jICAgIGVuZGlmCi0KLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NikKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1MKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ybG9jYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ybG9jYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDYwMWE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvcmxvY2FsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4MiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjU1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjU0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjUyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjMxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjIyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjEzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjEwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjAxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTkyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTczKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTcxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTYyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTMyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTExKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTAyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygwKQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zZWxmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc2VsZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NDBjOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zZWxmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYpCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgbm8gaW5kaXJlY3QgZmlsZSB0byBpbmNsdWRlCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JU19TRUxGSVNIIDEKLSMKLSMgaW5jbHVkZSBORE5CT09TVF9QUF9JTkRJUkVDVF9TRUxGCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lTX1NFTEZJU0gKLSMgdW5kZWYgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zdGFydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3N0YXJ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZhZjAzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3N0YXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zLCBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yLCBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFKCkgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmUxOTQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX0lURVJBVEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX0lURVJBVEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAwCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lURVJBVElPTiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKQotIwotIyAvKiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUKCkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8sIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfLCBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkoKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl8sIGkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0ZSQU1FX1NUQVJUICYmIE5ETkJPT1NUX1BQX0ZSQU1FX0ZJTklTSCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRlJBTUVfU1RBUlQoaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8sIGkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9GUkFNRV9GSU5JU0goaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfLCBpKQotIwotIyAvKiBORE5CT09TVF9QUF9GUkFNRV9GTEFHUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRlJBTUVfRkxBR1MoaSkgKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfLCBpKSgpKQotIwotIyAvKiBORE5CT09TVF9QUF9SRUxBVElWRV9JVEVSQVRJT04gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0lURVJBVElPTihpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVMQVRJVkVfLCBpKShORE5CT09TVF9QUF9JVEVSQVRJT05fKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfMChtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV8xKG0pIE5ETkJPT1NUX1BQX0NBVChtLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfMihtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfMyhtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV80KG0pIE5ETkJPT1NUX1BQX0NBVChtLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKSkpKQotIwotIyAvKiBORE5CT09TVF9QUF9SRUxBVElWRV9TVEFSVCAmJiBORE5CT09TVF9QUF9SRUxBVElWRV9GSU5JU0ggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFX1NUQVJUKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRUxBVElWRV8sIGkpKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8pCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV9GSU5JU0goaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFTEFUSVZFXywgaSkoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8pCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0ZMQUdTICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV9GTEFHUyhpKSAoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFTEFUSVZFXywgaSkoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXykoKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfSVRFUkFURSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURSgpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRFXywgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEVfMSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFXzIgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDIuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURV8zIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQzLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEVfNCA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNC5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFXzUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDUuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYWM4YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX0xPQ0FMX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9MT0NBTF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2xvY2FsLmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0MobikgKE5ETkJPT1NUX1BQX0xPQ0FMX1MpIDw9IG4gJiYgKE5ETkJPT1NUX1BQX0xPQ0FMX0YpID49IG4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1IobikgKE5ETkJPT1NUX1BQX0xPQ0FMX0YpIDw9IG4gJiYgKE5ETkJPT1NUX1BQX0xPQ0FMX1MpID49IG4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxMmY4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vc2VsZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9TRUxGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9TRUxGX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zZWxmLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcyNTQxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKgotIyAgKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0FEVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0FEVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX2JpbmFyeS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfQ09OUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9DT05TKGhlYWQsIHRhaWwpIChoZWFkLCB0YWlsKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX05JTCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9OSUwgTkROQk9PU1RfUFBfTklMCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9EKGxpc3QpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfRChsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0kgbGlzdAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9JICMjIGxpc3QKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfSShoZWFkLCB0YWlsKSBoZWFkCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfUkVTVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVNUKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9EKGxpc3QpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9EKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9JIGxpc3QKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVNUX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9SRVNUX0kgIyMgbGlzdAotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVNUX0koaGVhZCwgdGFpbCkgdGFpbAotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfQkNDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsaXN0KSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlNfRChsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19DT05TX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9JU19DT05TXyAjIyBsaXN0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlNfKGhlYWQsIHRhaWwpIDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OU19ORE5CT09TVF9QUF9OSUwgMAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobGlzdCkgTkROQk9PU1RfUFBfSVNfQklOQVJZKGxpc3QpCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfSVNfTklMICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19CQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19OSUwobGlzdCkgTkROQk9PU1RfUFBfQ09NUEwoTkROQk9PU1RfUFBfSVNfQklOQVJZKGxpc3QpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX05JTChsaXN0KSBORE5CT09TVF9QUF9DT01QTChORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobGlzdCkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FwcGVuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FwcGVuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZjAxOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hcHBlbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9BUFBFTkRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9BUFBFTkRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkQoYSwgYikgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX08sIGIsIGEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EKGEsIGIpIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0koYSwgYikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0koYSwgYikgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX08sIGIsIGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9PKGQsIHMsIHgpICh4LCBzKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfRChkLCBhLCBiKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfTywgYiwgYSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfRChkLCBhLCBiKSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9EX0koZCwgYSwgYikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0RfSShkLCBhLCBiKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfTywgYiwgYSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2RtYy9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZG1jL2ZvbGRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDg4YjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZG1jL2ZvbGRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9MRUZUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzU2MTg2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0VER19GT0xEX0xFRlRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRURHX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTZfRChvLCBzLCBsKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2Nzc2YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzk0ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0VER19GT0xEX1JJR0hUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0VER19GT0xEX1JJR0hUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1Nl9EKG8sIHMsIGwpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDczLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzczKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NihvLCBzLCBsKSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI5ODBmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfTEVGVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9GT0xEX0xFRlRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTFmMDQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfUklHSFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9SSUdIVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvcmV2ZXJzZS5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDMyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDUwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDUzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDYyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDcxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDgwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDgzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDkyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTAxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTEwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTEzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTIyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTMxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTUyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTYxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTcwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTczLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTgyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTkxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjAwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjAzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjEyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjIxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjMwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjMzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjUxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjU0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTYsIGwpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTZkM2I2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0ZPTERfTEVGVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUKG9wLCBzdGF0ZSwgbGlzdCkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NikpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTcobywgcywgbCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA0KQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfRChkLCBvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8gIyMgZChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMk5EIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yTkRfRCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9ECi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9sZWZ0LmhwcD4KLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZG1jL2ZvbGRfbGVmdC5ocHA+Ci0jIGVsc2UKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfbGVmdC5ocHA+Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIGwpIDAKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDg1NTk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0ZPTERfUklHSFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9GT0xEX1JJR0hUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKG9wLCBzdGF0ZSwgbGlzdCkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTcobywgcywgbCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA0KQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0QoZCwgbywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBkKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMk5EIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzJORF9EIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9ECi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9yaWdodC5ocHA+Ci0jIGVsc2UKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfcmlnaHQuaHBwPgotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZWE0M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfTElTVF9GT1JfRUFDSF9JX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfTElTVF9GT1JfRUFDSF9JX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkgJiYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfSShtYWNybywgZGF0YSwgbGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9JKG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QX0QgeAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1BfRChtLCBkLCBsLCBpKSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AociwgeCkgTkROQk9PU1RfUFBfTElTVF9JU19DT05TKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCkpCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PX0QgeAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX09fRChtLCBkLCBsLCBpKSAobSwgZCwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpLCBORE5CT09TVF9QUF9JTkMoaSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PKHIsIHgpIChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIHgpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCB4KSksIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIHgpKSkKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTShyLCB4KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTV9EKHIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgeCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0kociwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0kociwgeF9lKSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTV9EKHIsIHhfZSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0QociwgbSwgZCwgbCwgaSkgbShyLCBkLCBpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SKHIsIG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IociwgbWFjcm8sIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SX0kociwgbWFjcm8sIGRhdGEsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUl9JKHIsIG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvcmV2ZXJzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3JldmVyc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjFlYWI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvcmV2ZXJzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX1JFVkVSU0VfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9SRVZFUlNFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRShsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVChORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTywgTkROQk9PU1RfUFBfTklMLCBsaXN0KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0UobGlzdCkgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0kobGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9JKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUKE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9PLCBORE5CT09TVF9QUF9OSUwsIGxpc3QpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTyhkLCBzLCB4KSAoeCwgcykKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRChkLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTywgTkROQk9PU1RfUFBfTklMLCBsaXN0KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRChkLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRF9JKGQsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRF9JKGQsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9PLCBORE5CT09TVF9QUF9OSUwsIGxpc3QpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3RyYW5zZm9ybS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3RyYW5zZm9ybS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZDU2NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC90cmFuc2Zvcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9UUkFOU0ZPUk1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9UUkFOU0ZPUk1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk0ob3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgTkROQk9PU1RfUFBfTklMKSwgbGlzdCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNKG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9JKG9wLCBkYXRhLCBsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fSShvcCwgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQoTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCBORE5CT09TVF9QUF9OSUwpLCBsaXN0KSkKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PKGQsIG9kciwgZWxlbSkgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fT19EKGQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgb2RyKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBvZHIpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIG9kciksIGVsZW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08oZCwgb2RyLCBlbGVtKSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0koZCwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgb2RyLCBlbGVtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fT19JKGQsIGltLCBlbGVtKSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0QoZCwgaW0sIGVsZW0pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0QoZCwgb3AsIGRhdGEsIHJlcywgZWxlbSkgKG9wLCBkYXRhLCAob3AoZCwgZGF0YSwgZWxlbSksIHJlcykpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EKGQsIG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIE5ETkJPT1NUX1BQX05JTCksIGxpc3QpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EKGQsIG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EX0koZCwgb3AsIGRhdGEsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EX0koZCwgb3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgTkROQk9PU1RfUFBfTklMKSwgbGlzdCkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MzI5Y2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9BTkRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9BTkRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FORCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FORChwLCBxKSBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQk9PTChwKSwgTkROQk9PU1RfUFBfQk9PTChxKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQU5EKHAsIHEpIE5ETkJPT1NUX1BQX0FORF9JKHAsIHEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BTkRfSShwLCBxKSBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQk9PTChwKSwgTkROQk9PU1RfUFBfQk9PTChxKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg3OWYxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQklUQU5EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQklUQU5EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0JJVEFORCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkQoeCwgeSkgTkROQk9PU1RfUFBfQklUQU5EX0koeCwgeSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EKHgsIHkpIE5ETkJPT1NUX1BQX0JJVEFORF9PTygoeCwgeSkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfT08ocGFyKSBORE5CT09TVF9QUF9CSVRBTkRfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EX0koeCwgeSkgTkROQk9PU1RfUFBfQklUQU5EXyAjIyB4ICMjIHkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EX0koeCwgeSkgTkROQk9PU1RfUFBfQklUQU5EX0lEKE5ETkJPT1NUX1BQX0JJVEFORF8gIyMgeCAjIyB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EX0lEKHJlcykgcmVzCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfMDAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EXzAxIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF8xMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfMTEgMQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg0YWQ1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9CSVRPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JJVE9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0JJVE9SICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SKHgsIHkpIE5ETkJPT1NUX1BQX0JJVE9SX0koeCwgeSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1IoeCwgeSkgTkROQk9PU1RfUFBfQklUT1JfT08oKHgsIHkpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfT08ocGFyKSBORE5CT09TVF9QUF9CSVRPUl9JICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl9JKHgsIHkpIE5ETkJPT1NUX1BQX0JJVE9SXyAjIyB4ICMjIHkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfSSh4LCB5KSBORE5CT09TVF9QUF9CSVRPUl9JRChORE5CT09TVF9QUF9CSVRPUl8gIyMgeCAjIyB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfSUQoaWQpIGlkCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8wMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8wMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8xMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8xMSAxCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ0NWRkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQk9PTF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JPT0xfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQk9PTCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CT09MKHgpIE5ETkJPT1NUX1BQX0JPT0xfSSh4KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CT09MKHgpIE5ETkJPT1NUX1BQX0JPT0xfT08oKHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF9PTyhwYXIpIE5ETkJPT1NUX1BQX0JPT0xfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfSSh4KSBORE5CT09TVF9QUF9CT09MXyAjIyB4Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzMyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzUwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzUzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzYyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzcxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzgwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzgzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzkyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTYgMQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9jb21wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZiNGM2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9DT01QTF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0NPTVBMX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTVBMICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMKHgpIE5ETkJPT1NUX1BQX0NPTVBMX0koeCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUEwoeCkgTkROQk9PU1RfUFBfQ09NUExfT08oKHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfT08ocGFyKSBORE5CT09TVF9QUF9DT01QTF9JICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF9JKHgpIE5ETkJPT1NUX1BQX0NPTVBMXyAjIyB4Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMX0koeCkgTkROQk9PU1RfUFBfQ09NUExfSUQoTkROQk9PU1RfUFBfQ09NUExfICMjIHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF9JRChpZCkgaWQKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMXzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfMSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOTIxMGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9OT1RfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9OT1RfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTk9UICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9UKHgpIE5ETkJPT1NUX1BQX0NPTVBMKE5ETkJPT1NUX1BQX0JPT0woeCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PVCh4KSBORE5CT09TVF9QUF9OT1RfSSh4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9UX0koeCkgTkROQk9PU1RfUFBfQ09NUEwoTkROQk9PU1RfUFBfQk9PTCh4KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzllZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX09SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG9yLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfT1IgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9PUihwLCBxKSBORE5CT09TVF9QUF9CSVRPUihORE5CT09TVF9QUF9CT09MKHApLCBORE5CT09TVF9QUF9CT09MKHEpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9PUihwLCBxKSBORE5CT09TVF9QUF9PUl9JKHAsIHEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9PUl9JKHAsIHEpIE5ETkJPT1NUX1BQX0JJVE9SKE5ETkJPT1NUX1BQX0JPT0wocCksIE5ETkJPT1NUX1BQX0JPT0wocSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMWEzMzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fQ09NTUFfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fQ09NTUFfSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTU1BICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT01NQSgpICwKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1YjBiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9DT01NQV9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9DT01NQV9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQ09NTUFfSUYgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01NQV9JRihjb25kKSBORE5CT09TVF9QUF9JRihjb25kLCBORE5CT09TVF9QUF9DT01NQSwgTkROQk9PU1RfUFBfRU1QVFkpKCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NTUFfSUYoY29uZCkgTkROQk9PU1RfUFBfQ09NTUFfSUZfSShjb25kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NTUFfSUZfSShjb25kKSBORE5CT09TVF9QUF9JRihjb25kLCBORE5CT09TVF9QUF9DT01NQSwgTkROQk9PU1RfUFBfRU1QVFkpKCkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAzM2ZlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX1BBUkVOX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX1BBUkVOX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9MUEFSRU4gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xQQVJFTigpICgKLSMKLSMgLyogTkROQk9PU1RfUFBfUlBBUkVOICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SUEFSRU4oKSApCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQzOGNiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0XzJuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfMm5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUwM2I5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfMm5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUXzJORF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfMk5EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0X2Zyb21fdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0X2Zyb21fdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWM4YTU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF9mcm9tX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUX0ZST01fVE9fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUX0ZST01fVE9fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2RtYy9mb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MzA2NzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jL2Zvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0ZPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTczX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NywgcykpLCBzLCBwLCBvLCBtKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NywgcyksIHAsIG8sIG0pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9lZGcvZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2VkZy9mb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTc1MDMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2VkZy9mb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0VER19GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRURHX0ZPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTExX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Nl9JKHMsIHAsIG8sIG0pCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyLCBzKSBORE5CT09TVF9QUF9JRihwKDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzLCBzKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0LCBzKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBORE5CT09TVF9QUF9GT1JfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1LCBzKSBORE5CT09TVF9QUF9JRihwKDUsIHMpLCBORE5CT09TVF9QUF9GT1JfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2LCBzKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3LCBzKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBORE5CT09TVF9QUF9GT1JfNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4LCBzKSBORE5CT09TVF9QUF9JRihwKDgsIHMpLCBORE5CT09TVF9QUF9GT1JfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5LCBzKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBORE5CT09TVF9QUF9GT1JfNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBORE5CT09TVF9QUF9GT1JfNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBORE5CT09TVF9QUF9GT1JfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBORE5CT09TVF9QUF9GT1JfNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBORE5CT09TVF9QUF9GT1JfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBORE5CT09TVF9QUF9GT1JfNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBORE5CT09TVF9QUF9GT1JfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBORE5CT09TVF9QUF9GT1JfNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBORE5CT09TVF9QUF9GT1JfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBORE5CT09TVF9QUF9GT1JfNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBORE5CT09TVF9QUF9GT1JfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBORE5CT09TVF9QUF9GT1JfNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBORE5CT09TVF9QUF9GT1JfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBORE5CT09TVF9QUF9GT1JfNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBORE5CT09TVF9QUF9GT1JfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBORE5CT09TVF9QUF9GT1JfNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBORE5CT09TVF9QUF9GT1JfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBORE5CT09TVF9QUF9GT1JfODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBORE5CT09TVF9QUF9GT1JfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBORE5CT09TVF9QUF9GT1JfODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBORE5CT09TVF9QUF9GT1JfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBORE5CT09TVF9QUF9GT1JfODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODksIHMpIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBORE5CT09TVF9QUF9GT1JfODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBORE5CT09TVF9QUF9GT1JfOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBORE5CT09TVF9QUF9GT1JfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBORE5CT09TVF9QUF9GT1JfOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBORE5CT09TVF9QUF9GT1JfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBORE5CT09TVF9QUF9GT1JfOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBORE5CT09TVF9QUF9GT1JfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykgTkROQk9PU1RfUFBfSUYocCgxMDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNywgcykgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDksIHMpLCBORE5CT09TVF9QUF9GT1JfMTA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMywgcykgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNywgcykgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMywgcykgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykgTkROQk9PU1RfUFBfSUYocCgxMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykgTkROQk9PU1RfUFBfSUYocCgxMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNywgcykgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMTM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MywgcykgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NywgcykgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MywgcykgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykgTkROQk9PU1RfUFBfSUYocCgxNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykgTkROQk9PU1RfUFBfSUYocCgxNjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NywgcykgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjksIHMpLCBORE5CT09TVF9QUF9GT1JfMTY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTczLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MywgcykgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NywgcykgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBORE5CT09TVF9QUF9GT1JfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MCwgcykgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykgTkROQk9PU1RfUFBfSUYocCgxODEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MiwgcykgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MywgcykgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykgTkROQk9PU1RfUFBfSUYocCgxODQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NSwgcykgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NiwgcykgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykgTkROQk9PU1RfUFBfSUYocCgxODcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OCwgcykgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OSwgcykgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MiwgcykgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykgTkROQk9PU1RfUFBfSUYocCgxOTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykgTkROQk9PU1RfUFBfSUYocCgxOTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NywgcykgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMywgcykgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNywgcykgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBORE5CT09TVF9QUF9GT1JfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMywgcykgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykgTkROQk9PU1RfUFBfSUYocCgyMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykgTkROQk9PU1RfUFBfSUYocCgyMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNywgcykgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMjI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMywgcykgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNywgcykgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MiwgcykgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MywgcykgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NiwgcykgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykgTkROQk9PU1RfUFBfSUYocCgyNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykgTkROQk9PU1RfUFBfSUYocCgyNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MSwgcykgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MiwgcykgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykgTkROQk9PU1RfUFBfSUYocCgyNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NCwgcykgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NSwgcykgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykgTkROQk9PU1RfUFBfSUYocCgyNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NywgcykgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTcsIHMpLCBwLCBvLCBtKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZjM3NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xX0MoTkROQk9PU1RfUFBfQk9PTChwKDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yX0MoTkROQk9PU1RfUFBfQk9PTChwKDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zX0MoTkROQk9PU1RfUFBfQk9PTChwKDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80X0MoTkROQk9PU1RfUFBfQk9PTChwKDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81X0MoTkROQk9PU1RfUFBfQk9PTChwKDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82X0MoTkROQk9PU1RfUFBfQk9PTChwKDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83X0MoTkROQk9PU1RfUFBfQk9PTChwKDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84X0MoTkROQk9PU1RfUFBfQk9PTChwKDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDMwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDMzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDM2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDM5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDQyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDUxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDU0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDU3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU3X0MoTkROQk9PU1RfUFBfQk9PTChwKDU4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU4X0MoTkROQk9PU1RfUFBfQk9PTChwKDU5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU5X0MoTkROQk9PU1RfUFBfQk9PTChwKDYwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYwX0MoTkROQk9PU1RfUFBfQk9PTChwKDYxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYxX0MoTkROQk9PU1RfUFBfQk9PTChwKDYyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYyX0MoTkROQk9PU1RfUFBfQk9PTChwKDYzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYzX0MoTkROQk9PU1RfUFBfQk9PTChwKDY0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY0X0MoTkROQk9PU1RfUFBfQk9PTChwKDY1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY1X0MoTkROQk9PU1RfUFBfQk9PTChwKDY2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY2X0MoTkROQk9PU1RfUFBfQk9PTChwKDY3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY3X0MoTkROQk9PU1RfUFBfQk9PTChwKDY4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY4X0MoTkROQk9PU1RfUFBfQk9PTChwKDY5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY5X0MoTkROQk9PU1RfUFBfQk9PTChwKDcwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcwX0MoTkROQk9PU1RfUFBfQk9PTChwKDcxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcxX0MoTkROQk9PU1RfUFBfQk9PTChwKDcyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcyX0MoTkROQk9PU1RfUFBfQk9PTChwKDczLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzczX0MoTkROQk9PU1RfUFBfQk9PTChwKDc0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc0X0MoTkROQk9PU1RfUFBfQk9PTChwKDc1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc1X0MoTkROQk9PU1RfUFBfQk9PTChwKDc2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc2X0MoTkROQk9PU1RfUFBfQk9PTChwKDc3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc3X0MoTkROQk9PU1RfUFBfQk9PTChwKDc4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc4X0MoTkROQk9PU1RfUFBfQk9PTChwKDc5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc5X0MoTkROQk9PU1RfUFBfQk9PTChwKDgwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgwX0MoTkROQk9PU1RfUFBfQk9PTChwKDgxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgxX0MoTkROQk9PU1RfUFBfQk9PTChwKDgyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgyX0MoTkROQk9PU1RfUFBfQk9PTChwKDgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgzX0MoTkROQk9PU1RfUFBfQk9PTChwKDg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg0X0MoTkROQk9PU1RfUFBfQk9PTChwKDg1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg1X0MoTkROQk9PU1RfUFBfQk9PTChwKDg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg2X0MoTkROQk9PU1RfUFBfQk9PTChwKDg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg3X0MoTkROQk9PU1RfUFBfQk9PTChwKDg4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg4X0MoTkROQk9PU1RfUFBfQk9PTChwKDg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg5X0MoTkROQk9PU1RfUFBfQk9PTChwKDkwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkwX0MoTkROQk9PU1RfUFBfQk9PTChwKDkxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkxX0MoTkROQk9PU1RfUFBfQk9PTChwKDkyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkyX0MoTkROQk9PU1RfUFBfQk9PTChwKDkzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkzX0MoTkROQk9PU1RfUFBfQk9PTChwKDk0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk0X0MoTkROQk9PU1RfUFBfQk9PTChwKDk1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk1X0MoTkROQk9PU1RfUFBfQk9PTChwKDk2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk2X0MoTkROQk9PU1RfUFBfQk9PTChwKDk3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk3X0MoTkROQk9PU1RfUFBfQk9PTChwKDk4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk4X0MoTkROQk9PU1RfUFBfQk9PTChwKDk5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA5X0MoTkROQk9PU1RfUFBfQk9PTChwKDExMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTExX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDExNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDExOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDExOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTczX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjExX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NywgcykpLCBzLCBwLCBvLCBtKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NywgcyksIHAsIG8sIG0pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9tc3ZjL2Zvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9tc3ZjL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZWZiNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvbXN2Yy9mb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX01TVkNfRk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX01TVkNfRk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzLCBzKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNCwgcykgTkROQk9PU1RfUFBfSUYocCg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2LCBzKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNywgcykgTkROQk9PU1RfUFBfSUYocCg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5LCBzKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIE5ETkJPT1NUX1BQX0ZPUl80NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIE5ETkJPT1NUX1BQX0ZPUl81MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgTkROQk9PU1RfUFBfRk9SXzczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIE5ETkJPT1NUX1BQX0ZPUl83NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIE5ETkJPT1NUX1BQX0ZPUl84MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNywgcykgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMywgcykgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NywgcykgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MywgcykgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NywgcykgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MCwgcykgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MywgcykgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NiwgcykgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OSwgcykgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MiwgcykgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNywgcykgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMywgcykgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNywgcykgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MywgcykgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NiwgcykgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MiwgcykgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NSwgcykgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NywgcyksIHAsIG8sIG0pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1Y2IxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU0gKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTShjb3VudCwgbWFjcm8sIGRhdGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9FTlVNXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfUkVQRUFUX1AsIDQpKQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMShjLCBORE5CT09TVF9QUF9FTlVNX01fMSwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8yKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8yLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzMoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgTkROQk9PU1RfUFBfRU5VTV9NXzMsIChtLCBkKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8xKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fMV9JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV8yX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMyhjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNXzNfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8xX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgTkROQk9PU1RfUFBfRU5VTV9NXzEsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMl9JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8yLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzNfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBORE5CT09TVF9QUF9FTlVNX01fMywgKG0sIGQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV80KGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMykKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8xKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fMV9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8yKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fMl9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8zKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fM19JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8xX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX01fMV9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzJfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fTV8yX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fM19JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9NXzNfSSh6LCBuLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzEoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8xX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzIoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8yX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzMoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8zX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzFfSSh6LCBuLCBtLCBkKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBtKHosIG4sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMl9JKHosIG4sIG0sIGQpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIG0oeiwgbiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8zX0koeiwgbiwgbSwgZCkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgbSh6LCBuLCBkKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDg0MjZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX0JJTkFSWV9QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX0JJTkFSWV9QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NLCAocDEsIHAyKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19JKGNvdW50LCBwMSwgcDIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfSShjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NLCAocDEsIHAyKSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NKHosIG4sIHBwKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBwcCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JKHosIG4sIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSh6LCBuLCBwcCkgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIHBwKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBwcCkpCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0koeiwgbiwgcDEsIHAyKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JSSh6LCBuLCBwMSwgcDIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JSSh6LCBuLCBwMSwgcDIpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIHAxICMjIG4gcDIgIyMgbgotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JKHosIG4sIHAxLCBwMikgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgTkROQk9PU1RfUFBfQ0FUKHAxLCBuKSBORE5CT09TVF9QUF9DQVQocDIsIG4pCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSwgKHAxLCBwMikpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aX0koeiwgY291bnQsIHAxLCBwMikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aX0koeiwgY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSwgKHAxLCBwMikpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGQ3Njc3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX0koY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfSShjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19NKHosIG4sIHBhcmFtKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBwYXJhbSAjIyBuCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ogKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19NLCBwYXJhbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1pfSSh6LCBjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZmZDM3Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFQoY291bnQsIHBhcmFtLCBkZWYpIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhjb3VudCwgcGFyYW0sID0gZGVmIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODFhZjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fU0hJRlRFRF9QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1NISUZURURfUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9QUF9ERUMoY291bnQpLCBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19JKGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfSShjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9QUF9ERUMoY291bnQpLCBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19NKHosIG4sIHBhcmFtKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBORE5CT09TVF9QUF9DQVQocGFyYW0sIE5ETkJPT1NUX1BQX0lOQyhuKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KE5ETkJPT1NUX1BQX0RFQyhjb3VudCksIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KE5ETkJPT1NUX1BQX0RFQyhjb3VudCksIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2YzUyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fVFJBSUxJTkdfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1RSQUlMSU5HX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKGNvdW50LCBtYWNybywgZGF0YSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9SRVBFQVRfUCwgNCkpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18xKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzIsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMyhjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMywgKG0sIGQpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzEoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18xX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMihjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzJfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18zKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfM19JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzFfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMShjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMSwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18yX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzIsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfM19JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zLCAobSwgZCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzQoYywgbSwgZCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzEoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzIoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzMoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzFfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMl9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSSh6LCBuLCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fM19JKHosIG4sIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMSh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzFfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMih6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMyh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzNfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMV9JKHosIG4sIG0sIGQpICwgbSh6LCBuLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSSh6LCBuLCBtLCBkKSAsIG0oeiwgbiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0koeiwgbiwgbSwgZCkgLCBtKHosIG4sIGQpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTljZDdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fVFJBSUxJTkdfUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9UUkFJTElOR19QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfSShjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19JKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX00oeiwgbiwgcGFyYW0pICwgcGFyYW0gIyMgbgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19aICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX1ooeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdhZGYzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9GT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRk9SICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUihzdGF0ZSwgcHJlZCwgb3AsIG1hY3JvKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9GT1JfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9GT1JfUCwgMjU2KSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9QKG4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9GT1JfQ0hFQ0tfLCBORE5CT09TVF9QUF9GT1JfICMjIG4oMSwgTkROQk9PU1RfUFBfRk9SX1NSX1AsIE5ETkJPT1NUX1BQX0ZPUl9TUl9PLCBORE5CT09TVF9QUF9GT1JfU1JfTSkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfU1JfUChyLCBzKSBzCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfU1JfTyhyLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfU1JfTShyLCBzKSBORE5CT09TVF9QUF9OSUwKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2VkZy9mb3IuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvbXN2Yy9mb3IuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9kbWMvZm9yLmhwcD4KLSMgZWxzZQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZm9yLmhwcD4KLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAyKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzMxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzUyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzYxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzcwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzczKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzgyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzkxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1NihzLCBwLCBvLCBtKSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YzRhZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODI1ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fUkVQRUFUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fUkVQRUFUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFUEVBVCAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRVBFQVRfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9SRVBFQVRfUCwgNCkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfUChuKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVQRUFUX0NIRUNLXywgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyBuKDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMywgTkROQk9PU1RfUFBfTklMKSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0NIRUNLX05ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIG0sIGQpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9DSEVDS19ORE5CT09TVF9QUF9SRVBFQVRfMihjLCBtLCBkKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfQ0hFQ0tfTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgbSwgZCkgMAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfSShjLCBtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfSShjLCBtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfSShjLCBtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzQoYywgbSwgZCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8gIyMgYyhtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8gIyMgYyhtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18gIyMgYyhtLCBkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFTVCBORE5CT09TVF9QUF9SRVBFQVRfMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJORCBORE5CT09TVF9QUF9SRVBFQVRfMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNSRCBORE5CT09TVF9QUF9SRVBFQVRfMwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMChtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMShtLCBkKSBtKDIsIDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEobSwgZCkgbSgyLCAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yKG0sIGQpIG0oMiwgMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMyhtLCBkKSBtKDIsIDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQobSwgZCkgbSgyLCA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81KG0sIGQpIG0oMiwgNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNihtLCBkKSBtKDIsIDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcobSwgZCkgbSgyLCA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84KG0sIGQpIG0oMiwgOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkobSwgZCkgbSgyLCA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAobSwgZCkgbSgyLCAxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExKG0sIGQpIG0oMiwgMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMihtLCBkKSBtKDIsIDEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMobSwgZCkgbSgyLCAxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0KG0sIGQpIG0oMiwgMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNShtLCBkKSBtKDIsIDE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYobSwgZCkgbSgyLCAxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3KG0sIGQpIG0oMiwgMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOChtLCBkKSBtKDIsIDE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkobSwgZCkgbSgyLCAxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwKG0sIGQpIG0oMiwgMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMShtLCBkKSBtKDIsIDIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIobSwgZCkgbSgyLCAyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzKG0sIGQpIG0oMiwgMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNChtLCBkKSBtKDIsIDI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUobSwgZCkgbSgyLCAyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI2KG0sIGQpIG0oMiwgMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNyhtLCBkKSBtKDIsIDI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjgobSwgZCkgbSgyLCAyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI5KG0sIGQpIG0oMiwgMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMChtLCBkKSBtKDIsIDMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzEobSwgZCkgbSgyLCAzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMyKG0sIGQpIG0oMiwgMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMyhtLCBkKSBtKDIsIDMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzQobSwgZCkgbSgyLCAzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM1KG0sIGQpIG0oMiwgMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNihtLCBkKSBtKDIsIDM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzcobSwgZCkgbSgyLCAzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM4KG0sIGQpIG0oMiwgMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zOShtLCBkKSBtKDIsIDM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDAobSwgZCkgbSgyLCA0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQxKG0sIGQpIG0oMiwgNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80MihtLCBkKSBtKDIsIDQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDMobSwgZCkgbSgyLCA0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ0KG0sIGQpIG0oMiwgNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80NShtLCBkKSBtKDIsIDQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDYobSwgZCkgbSgyLCA0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ3KG0sIGQpIG0oMiwgNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80OChtLCBkKSBtKDIsIDQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDkobSwgZCkgbSgyLCA0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUwKG0sIGQpIG0oMiwgNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81MShtLCBkKSBtKDIsIDUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTIobSwgZCkgbSgyLCA1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUzKG0sIGQpIG0oMiwgNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81NChtLCBkKSBtKDIsIDU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTUobSwgZCkgbSgyLCA1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU2KG0sIGQpIG0oMiwgNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81NyhtLCBkKSBtKDIsIDU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTgobSwgZCkgbSgyLCA1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU5KG0sIGQpIG0oMiwgNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82MChtLCBkKSBtKDIsIDYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjEobSwgZCkgbSgyLCA2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYyKG0sIGQpIG0oMiwgNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82MyhtLCBkKSBtKDIsIDYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjQobSwgZCkgbSgyLCA2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY1KG0sIGQpIG0oMiwgNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82NihtLCBkKSBtKDIsIDY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjcobSwgZCkgbSgyLCA2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY4KG0sIGQpIG0oMiwgNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82OShtLCBkKSBtKDIsIDY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzAobSwgZCkgbSgyLCA3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcxKG0sIGQpIG0oMiwgNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83MihtLCBkKSBtKDIsIDcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzMobSwgZCkgbSgyLCA3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc0KG0sIGQpIG0oMiwgNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83NShtLCBkKSBtKDIsIDc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzYobSwgZCkgbSgyLCA3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc3KG0sIGQpIG0oMiwgNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83OChtLCBkKSBtKDIsIDc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzkobSwgZCkgbSgyLCA3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgwKG0sIGQpIG0oMiwgODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84MShtLCBkKSBtKDIsIDgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODIobSwgZCkgbSgyLCA4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgzKG0sIGQpIG0oMiwgODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84NChtLCBkKSBtKDIsIDg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODUobSwgZCkgbSgyLCA4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg2KG0sIGQpIG0oMiwgODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84NyhtLCBkKSBtKDIsIDg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODgobSwgZCkgbSgyLCA4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg5KG0sIGQpIG0oMiwgODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85MChtLCBkKSBtKDIsIDkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTEobSwgZCkgbSgyLCA5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkyKG0sIGQpIG0oMiwgOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85MyhtLCBkKSBtKDIsIDkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTQobSwgZCkgbSgyLCA5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk1KG0sIGQpIG0oMiwgOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85NihtLCBkKSBtKDIsIDk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTcobSwgZCkgbSgyLCA5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk4KG0sIGQpIG0oMiwgOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTkobSwgZCkgbSgyLCA5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDAobSwgZCkgbSgyLCAxMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAxKG0sIGQpIG0oMiwgMTAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMihtLCBkKSBtKDIsIDEwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDMobSwgZCkgbSgyLCAxMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA0KG0sIGQpIG0oMiwgMTA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNShtLCBkKSBtKDIsIDEwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDYobSwgZCkgbSgyLCAxMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA3KG0sIGQpIG0oMiwgMTA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwOChtLCBkKSBtKDIsIDEwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDkobSwgZCkgbSgyLCAxMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEwKG0sIGQpIG0oMiwgMTEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMShtLCBkKSBtKDIsIDExMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTIobSwgZCkgbSgyLCAxMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEzKG0sIGQpIG0oMiwgMTEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNChtLCBkKSBtKDIsIDExNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTUobSwgZCkgbSgyLCAxMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE2KG0sIGQpIG0oMiwgMTE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNyhtLCBkKSBtKDIsIDExNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTgobSwgZCkgbSgyLCAxMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE5KG0sIGQpIG0oMiwgMTE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMChtLCBkKSBtKDIsIDEyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjEobSwgZCkgbSgyLCAxMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIyKG0sIGQpIG0oMiwgMTIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMyhtLCBkKSBtKDIsIDEyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjQobSwgZCkgbSgyLCAxMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI1KG0sIGQpIG0oMiwgMTI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNihtLCBkKSBtKDIsIDEyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjcobSwgZCkgbSgyLCAxMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI4KG0sIGQpIG0oMiwgMTI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyOShtLCBkKSBtKDIsIDEyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzAobSwgZCkgbSgyLCAxMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMxKG0sIGQpIG0oMiwgMTMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMihtLCBkKSBtKDIsIDEzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzMobSwgZCkgbSgyLCAxMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM0KG0sIGQpIG0oMiwgMTM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNShtLCBkKSBtKDIsIDEzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzYobSwgZCkgbSgyLCAxMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM3KG0sIGQpIG0oMiwgMTM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzOChtLCBkKSBtKDIsIDEzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzkobSwgZCkgbSgyLCAxMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQwKG0sIGQpIG0oMiwgMTQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MShtLCBkKSBtKDIsIDE0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDIobSwgZCkgbSgyLCAxNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQzKG0sIGQpIG0oMiwgMTQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NChtLCBkKSBtKDIsIDE0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDUobSwgZCkgbSgyLCAxNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ2KG0sIGQpIG0oMiwgMTQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NyhtLCBkKSBtKDIsIDE0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDgobSwgZCkgbSgyLCAxNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ5KG0sIGQpIG0oMiwgMTQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MChtLCBkKSBtKDIsIDE1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTEobSwgZCkgbSgyLCAxNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUyKG0sIGQpIG0oMiwgMTUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MyhtLCBkKSBtKDIsIDE1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTQobSwgZCkgbSgyLCAxNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU1KG0sIGQpIG0oMiwgMTU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NihtLCBkKSBtKDIsIDE1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTcobSwgZCkgbSgyLCAxNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU4KG0sIGQpIG0oMiwgMTU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1OShtLCBkKSBtKDIsIDE1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjAobSwgZCkgbSgyLCAxNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYxKG0sIGQpIG0oMiwgMTYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MihtLCBkKSBtKDIsIDE2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjMobSwgZCkgbSgyLCAxNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY0KG0sIGQpIG0oMiwgMTY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NShtLCBkKSBtKDIsIDE2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjYobSwgZCkgbSgyLCAxNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY3KG0sIGQpIG0oMiwgMTY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2OChtLCBkKSBtKDIsIDE2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjkobSwgZCkgbSgyLCAxNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcwKG0sIGQpIG0oMiwgMTcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MShtLCBkKSBtKDIsIDE3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzIobSwgZCkgbSgyLCAxNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTczKG0sIGQpIG0oMiwgMTczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NChtLCBkKSBtKDIsIDE3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzUobSwgZCkgbSgyLCAxNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc2KG0sIGQpIG0oMiwgMTc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NyhtLCBkKSBtKDIsIDE3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzgobSwgZCkgbSgyLCAxNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc5KG0sIGQpIG0oMiwgMTc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MChtLCBkKSBtKDIsIDE4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODEobSwgZCkgbSgyLCAxODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgyKG0sIGQpIG0oMiwgMTgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MyhtLCBkKSBtKDIsIDE4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODQobSwgZCkgbSgyLCAxODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg1KG0sIGQpIG0oMiwgMTg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NihtLCBkKSBtKDIsIDE4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODcobSwgZCkgbSgyLCAxODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg4KG0sIGQpIG0oMiwgMTg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4OShtLCBkKSBtKDIsIDE4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTAobSwgZCkgbSgyLCAxOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkxKG0sIGQpIG0oMiwgMTkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MihtLCBkKSBtKDIsIDE5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTMobSwgZCkgbSgyLCAxOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk0KG0sIGQpIG0oMiwgMTk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NShtLCBkKSBtKDIsIDE5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTYobSwgZCkgbSgyLCAxOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk3KG0sIGQpIG0oMiwgMTk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5OChtLCBkKSBtKDIsIDE5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTkobSwgZCkgbSgyLCAxOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAwKG0sIGQpIG0oMiwgMjAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMShtLCBkKSBtKDIsIDIwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDIobSwgZCkgbSgyLCAyMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAzKG0sIGQpIG0oMiwgMjAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNChtLCBkKSBtKDIsIDIwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDUobSwgZCkgbSgyLCAyMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA2KG0sIGQpIG0oMiwgMjA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNyhtLCBkKSBtKDIsIDIwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDgobSwgZCkgbSgyLCAyMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA5KG0sIGQpIG0oMiwgMjA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMChtLCBkKSBtKDIsIDIxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTEobSwgZCkgbSgyLCAyMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEyKG0sIGQpIG0oMiwgMjEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMyhtLCBkKSBtKDIsIDIxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTQobSwgZCkgbSgyLCAyMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE1KG0sIGQpIG0oMiwgMjE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNihtLCBkKSBtKDIsIDIxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTcobSwgZCkgbSgyLCAyMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE4KG0sIGQpIG0oMiwgMjE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxOShtLCBkKSBtKDIsIDIxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjAobSwgZCkgbSgyLCAyMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIxKG0sIGQpIG0oMiwgMjIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMihtLCBkKSBtKDIsIDIyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjMobSwgZCkgbSgyLCAyMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI0KG0sIGQpIG0oMiwgMjI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNShtLCBkKSBtKDIsIDIyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjYobSwgZCkgbSgyLCAyMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI3KG0sIGQpIG0oMiwgMjI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyOChtLCBkKSBtKDIsIDIyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjkobSwgZCkgbSgyLCAyMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMwKG0sIGQpIG0oMiwgMjMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMShtLCBkKSBtKDIsIDIzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzIobSwgZCkgbSgyLCAyMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMzKG0sIGQpIG0oMiwgMjMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNChtLCBkKSBtKDIsIDIzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzUobSwgZCkgbSgyLCAyMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM2KG0sIGQpIG0oMiwgMjM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNyhtLCBkKSBtKDIsIDIzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzgobSwgZCkgbSgyLCAyMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM5KG0sIGQpIG0oMiwgMjM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MChtLCBkKSBtKDIsIDI0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDEobSwgZCkgbSgyLCAyNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQyKG0sIGQpIG0oMiwgMjQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MyhtLCBkKSBtKDIsIDI0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDQobSwgZCkgbSgyLCAyNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ1KG0sIGQpIG0oMiwgMjQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NihtLCBkKSBtKDIsIDI0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDcobSwgZCkgbSgyLCAyNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ4KG0sIGQpIG0oMiwgMjQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0OShtLCBkKSBtKDIsIDI0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTAobSwgZCkgbSgyLCAyNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUxKG0sIGQpIG0oMiwgMjUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MihtLCBkKSBtKDIsIDI1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTMobSwgZCkgbSgyLCAyNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjU0KG0sIGQpIG0oMiwgMjU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1NShtLCBkKSBtKDIsIDI1NSwgZCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzAobSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEobSwgZCkgbSgzLCAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xKG0sIGQpIG0oMywgMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMihtLCBkKSBtKDMsIDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMobSwgZCkgbSgzLCAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80KG0sIGQpIG0oMywgNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNShtLCBkKSBtKDMsIDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYobSwgZCkgbSgzLCA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83KG0sIGQpIG0oMywgNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOChtLCBkKSBtKDMsIDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85KG0sIGQpIG0oMywgOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwKG0sIGQpIG0oMywgMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMShtLCBkKSBtKDMsIDExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIobSwgZCkgbSgzLCAxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzKG0sIGQpIG0oMywgMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNChtLCBkKSBtKDMsIDE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUobSwgZCkgbSgzLCAxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2KG0sIGQpIG0oMywgMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNyhtLCBkKSBtKDMsIDE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgobSwgZCkgbSgzLCAxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5KG0sIGQpIG0oMywgMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMChtLCBkKSBtKDMsIDIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEobSwgZCkgbSgzLCAyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyKG0sIGQpIG0oMywgMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMyhtLCBkKSBtKDMsIDIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQobSwgZCkgbSgzLCAyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1KG0sIGQpIG0oMywgMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNihtLCBkKSBtKDMsIDI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjcobSwgZCkgbSgzLCAyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI4KG0sIGQpIG0oMywgMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yOShtLCBkKSBtKDMsIDI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzAobSwgZCkgbSgzLCAzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMxKG0sIGQpIG0oMywgMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMihtLCBkKSBtKDMsIDMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzMobSwgZCkgbSgzLCAzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM0KG0sIGQpIG0oMywgMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNShtLCBkKSBtKDMsIDM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzYobSwgZCkgbSgzLCAzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM3KG0sIGQpIG0oMywgMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zOChtLCBkKSBtKDMsIDM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzkobSwgZCkgbSgzLCAzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQwKG0sIGQpIG0oMywgNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80MShtLCBkKSBtKDMsIDQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDIobSwgZCkgbSgzLCA0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQzKG0sIGQpIG0oMywgNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80NChtLCBkKSBtKDMsIDQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDUobSwgZCkgbSgzLCA0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ2KG0sIGQpIG0oMywgNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80NyhtLCBkKSBtKDMsIDQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDgobSwgZCkgbSgzLCA0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ5KG0sIGQpIG0oMywgNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81MChtLCBkKSBtKDMsIDUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTEobSwgZCkgbSgzLCA1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUyKG0sIGQpIG0oMywgNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81MyhtLCBkKSBtKDMsIDUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTQobSwgZCkgbSgzLCA1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU1KG0sIGQpIG0oMywgNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81NihtLCBkKSBtKDMsIDU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTcobSwgZCkgbSgzLCA1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU4KG0sIGQpIG0oMywgNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81OShtLCBkKSBtKDMsIDU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjAobSwgZCkgbSgzLCA2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYxKG0sIGQpIG0oMywgNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82MihtLCBkKSBtKDMsIDYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjMobSwgZCkgbSgzLCA2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY0KG0sIGQpIG0oMywgNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82NShtLCBkKSBtKDMsIDY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjYobSwgZCkgbSgzLCA2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY3KG0sIGQpIG0oMywgNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82OChtLCBkKSBtKDMsIDY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjkobSwgZCkgbSgzLCA2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcwKG0sIGQpIG0oMywgNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83MShtLCBkKSBtKDMsIDcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzIobSwgZCkgbSgzLCA3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzczKG0sIGQpIG0oMywgNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83NChtLCBkKSBtKDMsIDc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzUobSwgZCkgbSgzLCA3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc2KG0sIGQpIG0oMywgNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83NyhtLCBkKSBtKDMsIDc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzgobSwgZCkgbSgzLCA3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc5KG0sIGQpIG0oMywgNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84MChtLCBkKSBtKDMsIDgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODEobSwgZCkgbSgzLCA4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgyKG0sIGQpIG0oMywgODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84MyhtLCBkKSBtKDMsIDgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODQobSwgZCkgbSgzLCA4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg1KG0sIGQpIG0oMywgODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84NihtLCBkKSBtKDMsIDg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODcobSwgZCkgbSgzLCA4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg4KG0sIGQpIG0oMywgODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84OShtLCBkKSBtKDMsIDg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTAobSwgZCkgbSgzLCA5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkxKG0sIGQpIG0oMywgOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85MihtLCBkKSBtKDMsIDkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTMobSwgZCkgbSgzLCA5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk0KG0sIGQpIG0oMywgOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85NShtLCBkKSBtKDMsIDk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTYobSwgZCkgbSgzLCA5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk3KG0sIGQpIG0oMywgOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85OChtLCBkKSBtKDMsIDk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk5KG0sIGQpIG0oMywgOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAwKG0sIGQpIG0oMywgMTAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMShtLCBkKSBtKDMsIDEwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDIobSwgZCkgbSgzLCAxMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAzKG0sIGQpIG0oMywgMTAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNChtLCBkKSBtKDMsIDEwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDUobSwgZCkgbSgzLCAxMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA2KG0sIGQpIG0oMywgMTA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNyhtLCBkKSBtKDMsIDEwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDgobSwgZCkgbSgzLCAxMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA5KG0sIGQpIG0oMywgMTA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMChtLCBkKSBtKDMsIDExMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTEobSwgZCkgbSgzLCAxMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEyKG0sIGQpIG0oMywgMTEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMyhtLCBkKSBtKDMsIDExMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTQobSwgZCkgbSgzLCAxMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE1KG0sIGQpIG0oMywgMTE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNihtLCBkKSBtKDMsIDExNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTcobSwgZCkgbSgzLCAxMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE4KG0sIGQpIG0oMywgMTE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExOShtLCBkKSBtKDMsIDExOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjAobSwgZCkgbSgzLCAxMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIxKG0sIGQpIG0oMywgMTIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMihtLCBkKSBtKDMsIDEyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjMobSwgZCkgbSgzLCAxMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI0KG0sIGQpIG0oMywgMTI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNShtLCBkKSBtKDMsIDEyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjYobSwgZCkgbSgzLCAxMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI3KG0sIGQpIG0oMywgMTI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyOChtLCBkKSBtKDMsIDEyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjkobSwgZCkgbSgzLCAxMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMwKG0sIGQpIG0oMywgMTMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMShtLCBkKSBtKDMsIDEzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzIobSwgZCkgbSgzLCAxMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMzKG0sIGQpIG0oMywgMTMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNChtLCBkKSBtKDMsIDEzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzUobSwgZCkgbSgzLCAxMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM2KG0sIGQpIG0oMywgMTM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNyhtLCBkKSBtKDMsIDEzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzgobSwgZCkgbSgzLCAxMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM5KG0sIGQpIG0oMywgMTM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MChtLCBkKSBtKDMsIDE0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDEobSwgZCkgbSgzLCAxNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQyKG0sIGQpIG0oMywgMTQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MyhtLCBkKSBtKDMsIDE0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDQobSwgZCkgbSgzLCAxNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ1KG0sIGQpIG0oMywgMTQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NihtLCBkKSBtKDMsIDE0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDcobSwgZCkgbSgzLCAxNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ4KG0sIGQpIG0oMywgMTQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0OShtLCBkKSBtKDMsIDE0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTAobSwgZCkgbSgzLCAxNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUxKG0sIGQpIG0oMywgMTUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MihtLCBkKSBtKDMsIDE1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTMobSwgZCkgbSgzLCAxNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU0KG0sIGQpIG0oMywgMTU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NShtLCBkKSBtKDMsIDE1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTYobSwgZCkgbSgzLCAxNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU3KG0sIGQpIG0oMywgMTU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1OChtLCBkKSBtKDMsIDE1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTkobSwgZCkgbSgzLCAxNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYwKG0sIGQpIG0oMywgMTYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MShtLCBkKSBtKDMsIDE2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjIobSwgZCkgbSgzLCAxNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYzKG0sIGQpIG0oMywgMTYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NChtLCBkKSBtKDMsIDE2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjUobSwgZCkgbSgzLCAxNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY2KG0sIGQpIG0oMywgMTY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NyhtLCBkKSBtKDMsIDE2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjgobSwgZCkgbSgzLCAxNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY5KG0sIGQpIG0oMywgMTY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MChtLCBkKSBtKDMsIDE3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzEobSwgZCkgbSgzLCAxNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcyKG0sIGQpIG0oMywgMTcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MyhtLCBkKSBtKDMsIDE3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzQobSwgZCkgbSgzLCAxNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc1KG0sIGQpIG0oMywgMTc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NihtLCBkKSBtKDMsIDE3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzcobSwgZCkgbSgzLCAxNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc4KG0sIGQpIG0oMywgMTc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3OShtLCBkKSBtKDMsIDE3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODAobSwgZCkgbSgzLCAxODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgxKG0sIGQpIG0oMywgMTgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MihtLCBkKSBtKDMsIDE4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODMobSwgZCkgbSgzLCAxODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg0KG0sIGQpIG0oMywgMTg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NShtLCBkKSBtKDMsIDE4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODYobSwgZCkgbSgzLCAxODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg3KG0sIGQpIG0oMywgMTg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4OChtLCBkKSBtKDMsIDE4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODkobSwgZCkgbSgzLCAxODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkwKG0sIGQpIG0oMywgMTkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MShtLCBkKSBtKDMsIDE5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTIobSwgZCkgbSgzLCAxOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkzKG0sIGQpIG0oMywgMTkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NChtLCBkKSBtKDMsIDE5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTUobSwgZCkgbSgzLCAxOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk2KG0sIGQpIG0oMywgMTk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NyhtLCBkKSBtKDMsIDE5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTgobSwgZCkgbSgzLCAxOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk5KG0sIGQpIG0oMywgMTk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMChtLCBkKSBtKDMsIDIwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDEobSwgZCkgbSgzLCAyMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAyKG0sIGQpIG0oMywgMjAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMyhtLCBkKSBtKDMsIDIwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDQobSwgZCkgbSgzLCAyMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA1KG0sIGQpIG0oMywgMjA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNihtLCBkKSBtKDMsIDIwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDcobSwgZCkgbSgzLCAyMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA4KG0sIGQpIG0oMywgMjA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwOShtLCBkKSBtKDMsIDIwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTAobSwgZCkgbSgzLCAyMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjExKG0sIGQpIG0oMywgMjExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMihtLCBkKSBtKDMsIDIxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTMobSwgZCkgbSgzLCAyMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE0KG0sIGQpIG0oMywgMjE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNShtLCBkKSBtKDMsIDIxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTYobSwgZCkgbSgzLCAyMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE3KG0sIGQpIG0oMywgMjE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxOChtLCBkKSBtKDMsIDIxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTkobSwgZCkgbSgzLCAyMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIwKG0sIGQpIG0oMywgMjIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMShtLCBkKSBtKDMsIDIyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjIobSwgZCkgbSgzLCAyMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIzKG0sIGQpIG0oMywgMjIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNChtLCBkKSBtKDMsIDIyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjUobSwgZCkgbSgzLCAyMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI2KG0sIGQpIG0oMywgMjI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNyhtLCBkKSBtKDMsIDIyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjgobSwgZCkgbSgzLCAyMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI5KG0sIGQpIG0oMywgMjI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMChtLCBkKSBtKDMsIDIzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzEobSwgZCkgbSgzLCAyMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMyKG0sIGQpIG0oMywgMjMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMyhtLCBkKSBtKDMsIDIzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzQobSwgZCkgbSgzLCAyMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM1KG0sIGQpIG0oMywgMjM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNihtLCBkKSBtKDMsIDIzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzcobSwgZCkgbSgzLCAyMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM4KG0sIGQpIG0oMywgMjM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzOShtLCBkKSBtKDMsIDIzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDAobSwgZCkgbSgzLCAyNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQxKG0sIGQpIG0oMywgMjQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MihtLCBkKSBtKDMsIDI0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDMobSwgZCkgbSgzLCAyNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ0KG0sIGQpIG0oMywgMjQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NShtLCBkKSBtKDMsIDI0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDYobSwgZCkgbSgzLCAyNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ3KG0sIGQpIG0oMywgMjQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0OChtLCBkKSBtKDMsIDI0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDkobSwgZCkgbSgzLCAyNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUwKG0sIGQpIG0oMywgMjUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MShtLCBkKSBtKDMsIDI1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTIobSwgZCkgbSgzLCAyNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUzKG0sIGQpIG0oMywgMjUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1NChtLCBkKSBtKDMsIDI1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTUobSwgZCkgbSgzLCAyNTUsIGQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18wKG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xKG0sIGQpIG0oNCwgMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMShtLCBkKSBtKDQsIDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIobSwgZCkgbSg0LCAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zKG0sIGQpIG0oNCwgMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNChtLCBkKSBtKDQsIDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUobSwgZCkgbSg0LCA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182KG0sIGQpIG0oNCwgNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNyhtLCBkKSBtKDQsIDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgobSwgZCkgbSg0LCA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOShtLCBkKSBtKDQsIDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMChtLCBkKSBtKDQsIDEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEobSwgZCkgbSg0LCAxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyKG0sIGQpIG0oNCwgMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMyhtLCBkKSBtKDQsIDEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQobSwgZCkgbSg0LCAxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1KG0sIGQpIG0oNCwgMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNihtLCBkKSBtKDQsIDE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcobSwgZCkgbSg0LCAxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4KG0sIGQpIG0oNCwgMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOShtLCBkKSBtKDQsIDE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAobSwgZCkgbSg0LCAyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxKG0sIGQpIG0oNCwgMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMihtLCBkKSBtKDQsIDIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMobSwgZCkgbSg0LCAyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0KG0sIGQpIG0oNCwgMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNShtLCBkKSBtKDQsIDI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjYobSwgZCkgbSg0LCAyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI3KG0sIGQpIG0oNCwgMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yOChtLCBkKSBtKDQsIDI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjkobSwgZCkgbSg0LCAyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMwKG0sIGQpIG0oNCwgMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zMShtLCBkKSBtKDQsIDMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzIobSwgZCkgbSg0LCAzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMzKG0sIGQpIG0oNCwgMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zNChtLCBkKSBtKDQsIDM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzUobSwgZCkgbSg0LCAzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM2KG0sIGQpIG0oNCwgMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zNyhtLCBkKSBtKDQsIDM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzgobSwgZCkgbSg0LCAzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM5KG0sIGQpIG0oNCwgMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180MChtLCBkKSBtKDQsIDQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDEobSwgZCkgbSg0LCA0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQyKG0sIGQpIG0oNCwgNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180MyhtLCBkKSBtKDQsIDQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDQobSwgZCkgbSg0LCA0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ1KG0sIGQpIG0oNCwgNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180NihtLCBkKSBtKDQsIDQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDcobSwgZCkgbSg0LCA0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ4KG0sIGQpIG0oNCwgNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180OShtLCBkKSBtKDQsIDQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTAobSwgZCkgbSg0LCA1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUxKG0sIGQpIG0oNCwgNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181MihtLCBkKSBtKDQsIDUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTMobSwgZCkgbSg0LCA1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU0KG0sIGQpIG0oNCwgNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181NShtLCBkKSBtKDQsIDU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTYobSwgZCkgbSg0LCA1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU3KG0sIGQpIG0oNCwgNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181OChtLCBkKSBtKDQsIDU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTkobSwgZCkgbSg0LCA1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYwKG0sIGQpIG0oNCwgNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182MShtLCBkKSBtKDQsIDYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjIobSwgZCkgbSg0LCA2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYzKG0sIGQpIG0oNCwgNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182NChtLCBkKSBtKDQsIDY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjUobSwgZCkgbSg0LCA2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY2KG0sIGQpIG0oNCwgNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182NyhtLCBkKSBtKDQsIDY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjgobSwgZCkgbSg0LCA2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY5KG0sIGQpIG0oNCwgNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183MChtLCBkKSBtKDQsIDcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzEobSwgZCkgbSg0LCA3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcyKG0sIGQpIG0oNCwgNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183MyhtLCBkKSBtKDQsIDczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzQobSwgZCkgbSg0LCA3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc1KG0sIGQpIG0oNCwgNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183NihtLCBkKSBtKDQsIDc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzcobSwgZCkgbSg0LCA3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc4KG0sIGQpIG0oNCwgNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183OShtLCBkKSBtKDQsIDc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODAobSwgZCkgbSg0LCA4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgxKG0sIGQpIG0oNCwgODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184MihtLCBkKSBtKDQsIDgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODMobSwgZCkgbSg0LCA4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg0KG0sIGQpIG0oNCwgODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184NShtLCBkKSBtKDQsIDg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODYobSwgZCkgbSg0LCA4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg3KG0sIGQpIG0oNCwgODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184OChtLCBkKSBtKDQsIDg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODkobSwgZCkgbSg0LCA4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkwKG0sIGQpIG0oNCwgOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185MShtLCBkKSBtKDQsIDkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTIobSwgZCkgbSg0LCA5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkzKG0sIGQpIG0oNCwgOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185NChtLCBkKSBtKDQsIDk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTUobSwgZCkgbSg0LCA5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk2KG0sIGQpIG0oNCwgOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185NyhtLCBkKSBtKDQsIDk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTgobSwgZCkgbSg0LCA5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185OShtLCBkKSBtKDQsIDk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMChtLCBkKSBtKDQsIDEwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDEobSwgZCkgbSg0LCAxMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAyKG0sIGQpIG0oNCwgMTAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMyhtLCBkKSBtKDQsIDEwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDQobSwgZCkgbSg0LCAxMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA1KG0sIGQpIG0oNCwgMTA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNihtLCBkKSBtKDQsIDEwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDcobSwgZCkgbSg0LCAxMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA4KG0sIGQpIG0oNCwgMTA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwOShtLCBkKSBtKDQsIDEwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTAobSwgZCkgbSg0LCAxMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTExKG0sIGQpIG0oNCwgMTExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMihtLCBkKSBtKDQsIDExMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTMobSwgZCkgbSg0LCAxMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE0KG0sIGQpIG0oNCwgMTE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNShtLCBkKSBtKDQsIDExNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTYobSwgZCkgbSg0LCAxMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE3KG0sIGQpIG0oNCwgMTE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExOChtLCBkKSBtKDQsIDExOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTkobSwgZCkgbSg0LCAxMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIwKG0sIGQpIG0oNCwgMTIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMShtLCBkKSBtKDQsIDEyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjIobSwgZCkgbSg0LCAxMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIzKG0sIGQpIG0oNCwgMTIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNChtLCBkKSBtKDQsIDEyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjUobSwgZCkgbSg0LCAxMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI2KG0sIGQpIG0oNCwgMTI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNyhtLCBkKSBtKDQsIDEyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjgobSwgZCkgbSg0LCAxMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI5KG0sIGQpIG0oNCwgMTI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMChtLCBkKSBtKDQsIDEzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzEobSwgZCkgbSg0LCAxMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMyKG0sIGQpIG0oNCwgMTMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMyhtLCBkKSBtKDQsIDEzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzQobSwgZCkgbSg0LCAxMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM1KG0sIGQpIG0oNCwgMTM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNihtLCBkKSBtKDQsIDEzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzcobSwgZCkgbSg0LCAxMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM4KG0sIGQpIG0oNCwgMTM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzOShtLCBkKSBtKDQsIDEzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDAobSwgZCkgbSg0LCAxNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQxKG0sIGQpIG0oNCwgMTQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MihtLCBkKSBtKDQsIDE0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDMobSwgZCkgbSg0LCAxNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ0KG0sIGQpIG0oNCwgMTQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NShtLCBkKSBtKDQsIDE0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDYobSwgZCkgbSg0LCAxNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ3KG0sIGQpIG0oNCwgMTQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0OChtLCBkKSBtKDQsIDE0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDkobSwgZCkgbSg0LCAxNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUwKG0sIGQpIG0oNCwgMTUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MShtLCBkKSBtKDQsIDE1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTIobSwgZCkgbSg0LCAxNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUzKG0sIGQpIG0oNCwgMTUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NChtLCBkKSBtKDQsIDE1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTUobSwgZCkgbSg0LCAxNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU2KG0sIGQpIG0oNCwgMTU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NyhtLCBkKSBtKDQsIDE1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTgobSwgZCkgbSg0LCAxNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU5KG0sIGQpIG0oNCwgMTU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MChtLCBkKSBtKDQsIDE2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjEobSwgZCkgbSg0LCAxNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYyKG0sIGQpIG0oNCwgMTYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MyhtLCBkKSBtKDQsIDE2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjQobSwgZCkgbSg0LCAxNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY1KG0sIGQpIG0oNCwgMTY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NihtLCBkKSBtKDQsIDE2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjcobSwgZCkgbSg0LCAxNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY4KG0sIGQpIG0oNCwgMTY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2OShtLCBkKSBtKDQsIDE2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzAobSwgZCkgbSg0LCAxNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcxKG0sIGQpIG0oNCwgMTcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MihtLCBkKSBtKDQsIDE3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzMobSwgZCkgbSg0LCAxNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc0KG0sIGQpIG0oNCwgMTc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NShtLCBkKSBtKDQsIDE3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzYobSwgZCkgbSg0LCAxNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc3KG0sIGQpIG0oNCwgMTc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3OChtLCBkKSBtKDQsIDE3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzkobSwgZCkgbSg0LCAxNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgwKG0sIGQpIG0oNCwgMTgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MShtLCBkKSBtKDQsIDE4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODIobSwgZCkgbSg0LCAxODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgzKG0sIGQpIG0oNCwgMTgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NChtLCBkKSBtKDQsIDE4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODUobSwgZCkgbSg0LCAxODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg2KG0sIGQpIG0oNCwgMTg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NyhtLCBkKSBtKDQsIDE4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODgobSwgZCkgbSg0LCAxODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg5KG0sIGQpIG0oNCwgMTg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MChtLCBkKSBtKDQsIDE5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTEobSwgZCkgbSg0LCAxOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkyKG0sIGQpIG0oNCwgMTkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MyhtLCBkKSBtKDQsIDE5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTQobSwgZCkgbSg0LCAxOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk1KG0sIGQpIG0oNCwgMTk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NihtLCBkKSBtKDQsIDE5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTcobSwgZCkgbSg0LCAxOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk4KG0sIGQpIG0oNCwgMTk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5OShtLCBkKSBtKDQsIDE5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDAobSwgZCkgbSg0LCAyMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAxKG0sIGQpIG0oNCwgMjAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMihtLCBkKSBtKDQsIDIwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDMobSwgZCkgbSg0LCAyMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA0KG0sIGQpIG0oNCwgMjA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNShtLCBkKSBtKDQsIDIwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDYobSwgZCkgbSg0LCAyMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA3KG0sIGQpIG0oNCwgMjA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwOChtLCBkKSBtKDQsIDIwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDkobSwgZCkgbSg0LCAyMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEwKG0sIGQpIG0oNCwgMjEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMShtLCBkKSBtKDQsIDIxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTIobSwgZCkgbSg0LCAyMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEzKG0sIGQpIG0oNCwgMjEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNChtLCBkKSBtKDQsIDIxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTUobSwgZCkgbSg0LCAyMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE2KG0sIGQpIG0oNCwgMjE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNyhtLCBkKSBtKDQsIDIxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTgobSwgZCkgbSg0LCAyMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE5KG0sIGQpIG0oNCwgMjE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMChtLCBkKSBtKDQsIDIyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjEobSwgZCkgbSg0LCAyMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIyKG0sIGQpIG0oNCwgMjIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMyhtLCBkKSBtKDQsIDIyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjQobSwgZCkgbSg0LCAyMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI1KG0sIGQpIG0oNCwgMjI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNihtLCBkKSBtKDQsIDIyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjcobSwgZCkgbSg0LCAyMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI4KG0sIGQpIG0oNCwgMjI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyOShtLCBkKSBtKDQsIDIyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzAobSwgZCkgbSg0LCAyMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMxKG0sIGQpIG0oNCwgMjMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMihtLCBkKSBtKDQsIDIzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzMobSwgZCkgbSg0LCAyMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM0KG0sIGQpIG0oNCwgMjM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNShtLCBkKSBtKDQsIDIzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzYobSwgZCkgbSg0LCAyMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM3KG0sIGQpIG0oNCwgMjM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzOChtLCBkKSBtKDQsIDIzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzkobSwgZCkgbSg0LCAyMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQwKG0sIGQpIG0oNCwgMjQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MShtLCBkKSBtKDQsIDI0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDIobSwgZCkgbSg0LCAyNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQzKG0sIGQpIG0oNCwgMjQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NChtLCBkKSBtKDQsIDI0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDUobSwgZCkgbSg0LCAyNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ2KG0sIGQpIG0oNCwgMjQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NyhtLCBkKSBtKDQsIDI0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDgobSwgZCkgbSg0LCAyNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ5KG0sIGQpIG0oNCwgMjQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MChtLCBkKSBtKDQsIDI1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTEobSwgZCkgbSg0LCAyNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUyKG0sIGQpIG0oNCwgMjUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MyhtLCBkKSBtKDQsIDI1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTQobSwgZCkgbSg0LCAyNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjU1KG0sIGQpIG0oNCwgMjU1LCBkKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0YzViMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fUkVQRUFUX0ZST01fVE9fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9SRVBFQVRfRlJPTV9UT19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8gKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oZmlyc3QsIGxhc3QsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8gTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfUkVQRUFUX1AsIDQpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMShmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8xKE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NiksIGYsIGwsIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMihmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8yKE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NiksIGYsIGwsIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMyhmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8zKE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NiksIGYsIGwsIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fNChmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMVNUIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzJORCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18yCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18zUkQgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMwotIwotIyAvKiBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0QoZCwgZmlyc3QsIGxhc3QsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1JFUEVBVF9QLCA0KSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzEoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzEsIChkLCBmLCBtLCBkdCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzIoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzIsIChkLCBmLCBtLCBkdCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzMoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzMsIChkLCBmLCBtLCBkdCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMShkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8xX0koZCwgZiwgbCwgbSwgZHQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzIoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMl9JKGQsIGYsIGwsIG0sIGR0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8zKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzNfSShkLCBmLCBsLCBtLCBkdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMV9JKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfMShORE5CT09TVF9QUF9TVUJfRChkLCBsLCBmKSwgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xLCAoZCwgZiwgbSwgZHQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8yX0koZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzIsIChkLCBmLCBtLCBkdCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzNfSShkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoTkROQk9PU1RfUFBfU1VCX0QoZCwgbCwgZiksIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMywgKGQsIGYsIG0sIGR0KSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMSh6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgZGZtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMih6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgZGZtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMyh6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgZGZtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSSh6LCBuLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xKHosIG4sIGRmbWQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgZGZtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzIoeiwgbiwgZGZtZCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCBkZm1kKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMyh6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIGRmbWQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0koeiwgbiwgZCwgZiwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JSSh6LCBORE5CT09TVF9QUF9BRERfRChkLCBuLCBmKSwgbSwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSSh6LCBuLCBkLCBmLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0lJKHosIE5ETkJPT1NUX1BQX0FERF9EKGQsIG4sIGYpLCBtLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JKHosIG4sIGQsIGYsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSUkoeiwgTkROQk9PU1RfUFBfQUREX0QoZCwgbiwgZiksIG0sIGR0KQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0lJKHosIG4sIG0sIGR0KSBtKHosIG4sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0lJKHosIG4sIG0sIGR0KSBtKHosIG4sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0lJKHosIG4sIG0sIGR0KSBtKHosIG4sIGR0KQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvY2F0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU2ODliMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvY2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0NBVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfQ0FUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfQ0FUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUKHNlcSkgXAotICAgIE5ETkJPT1NUX1BQX0lGKCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShzZXEpKSwgXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfQ0FUX0ksIFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0hFQUQgXAotICAgICkoc2VxKSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9JKHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChORE5CT09TVF9QUF9TRVFfQ0FUX08sIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUX08ocywgc3QsIGVsZW0pIE5ETkJPT1NUX1BQX1NFUV9DQVRfT19JKHN0LCBlbGVtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9PX0koYSwgYikgYSAjIyBiCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9DQVRfUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9TKHMsIHNlcSkgXAotICAgIE5ETkJPT1NUX1BQX0lGKCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShzZXEpKSwgXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfQ0FUX1NfSV9BLCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9DQVRfU19JX0IgXAotICAgICkocywgc2VxKSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9TX0lfQShzLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfICMjIHMoTkROQk9PU1RfUFBfU0VRX0NBVF9PLCBORE5CT09TVF9QUF9TRVFfSEVBRChzZXEpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9TX0lfQihzLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvc3BsaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlODMzYWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfREVUQUlMX1NQTElUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9ERVRBSUxfU1BMSVRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX1NQTElUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVQobiwgc2VxKSBORE5CT09TVF9QUF9TRVFfU1BMSVRfRChuLCBzZXEpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF9EKG4sIHNlcSkgKE5ETkJPT1NUX1BQX1NFUV9TUExJVF8gIyMgbiBzZXEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF9EKG4sIHNlcSkgKE5ETkJPT1NUX1BQX1NFUV9TUExJVF8gIyMgbiAjIyBzZXEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMSh4KSAoeCksCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTUKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJlMTZjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZWxlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRUxFTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRUxFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRUxFTSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koaSwgc2VxKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koKGksIHNlcSkpCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKChORE5CT09TVF9QUF9TRVFfRUxFTV8gIyMgaSBzZXEpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkocmVzKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JVihORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkgcmVzKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKHgsIF8pIHggTkROQk9PU1RfUFBfRU1QVFkoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSVYoeCkgeAotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShwYXIpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJICMjIHBhcgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkoaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkoTkROQk9PU1RfUFBfU0VRX0VMRU1fICMjIGkgIyMgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKGltKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JVihpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lWKHgsIF8pIHgKLSMgZWxzZQotIyAgICBpZiBkZWZpbmVkKF9fSUJNQ19fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRUxFTV8gIyMgaSwgc2VxKSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSShORE5CT09TVF9QUF9TRVFfRUxFTV8gIyMgaSBzZXEpCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSShpbSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKHgsIF8pIHgKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzAoeCkgeCwgTkROQk9PU1RfUFBfTklMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzczKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTExKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTczKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjExKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjU0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjU1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1NAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTI2YWY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9FTlVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9FTlVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRU5VTSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU0oc2VxKSBORE5CT09TVF9QUF9TRVFfRU5VTV9JKHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNX0koc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX0VOVU1fLCBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpKSBzZXEKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNKHNlcSkgTkROQk9PU1RfUFBfU0VRX0VOVU1fSShORE5CT09TVF9QUF9TRVFfU0laRShzZXEpLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV9JKHNpemUsIHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9FTlVNXywgc2l6ZSkgc2VxCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9FTlVNXywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSkgc2VxCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xKHgpIHgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzczKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTExKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTczKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjExKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1NQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZpcnN0X24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZpcnN0X24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGI0ZGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9maXJzdF9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZJUlNUX05fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZJUlNUX05fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04obiwgc2VxKSBORE5CT09TVF9QUF9JRihuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMiwgMCwgTkROQk9PU1RfUFBfU0VRX1NQTElUKG4sIHNlcSAobmlsKSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OKG4sIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX05fSShuLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRklSU1RfTl9JKG4sIHNlcSkgTkROQk9PU1RfUFBfSUYobiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIsIDAsIE5ETkJPT1NUX1BQX1NFUV9TUExJVChuLCBzZXEgKG5pbCkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIzMjkzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9MRF9MRUZUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT0xEX0xFRlRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChvcCwgc3RhdGUsIHNlcSkgLi4uCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9QLCAyNTYpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9QKG4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLXywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXyAjIyBuKE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfTywgTkROQk9PU1RfUFBfTklMLCAobmlsKSwgMSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX08ocywgc3QsIF8pIHN0Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9FUlJPUigweDAwMDUpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYob3AsIHN0LCBzcywgc3opIDAKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRihvcCwgc3QsIHNzLCBzeikgc3QKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTEyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTIxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTUxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTcyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTgxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjAyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjExKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjMyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjU2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDcwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDcxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDcyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDczLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDYxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDcwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDczLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDgyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDkxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTAyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTYyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTcxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTgwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTgzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTkyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjAxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGRmMDY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT1JfRUFDSF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9SX0VBQ0hfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0ggKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0gobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgc2VxIChuaWwpKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9EKG1hY3JvLCBkYXRhLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfRChtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCkpLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AociwgeCkgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgeCkpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX09fSSB4Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PX0koTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB4KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PX0kobWFjcm8sIGRhdGEsIHNlcSkgKG1hY3JvLCBkYXRhLCBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX00ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX01fSU0ociwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NX0lNKHIsIGltKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JKHIsIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTShyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JKHIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgeCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JKHIsIG1hY3JvLCBkYXRhLCBzZXEpIG1hY3JvKHIsIGRhdGEsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9SICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1IociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgc2VxIChuaWwpKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1IociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1JfSShyLCBtYWNybywgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1JfSShyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCkpLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzFiODEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaF9pLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPUl9FQUNIX0lfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPUl9FQUNIX0lfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSwgMCksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX0kobWFjcm8sIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX0kobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgc2VxIChuaWwpLCAwKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1AociwgeCkgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCkpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTyhyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PX0kgeAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX09fSShORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIHgpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfT19JKG1hY3JvLCBkYXRhLCBzZXEsIGkpIChtYWNybywgZGF0YSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSwgTkROQk9PU1RfUFBfSU5DKGkpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTShyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0lNKHIsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80IHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0lNKHIsIGltKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0kociwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTV9JKHIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgeCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0kociwgbWFjcm8sIGRhdGEsIHNlcSwgaSkgbWFjcm8ociwgZGF0YSwgaSwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc2VxKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1IociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgc2VxIChuaWwpLCAwKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUihyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9SX0kociwgbWFjcm8sIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1JfSShyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCksIDApLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3Jlc3Rfbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvcmVzdF9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1MGVkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvcmVzdF9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1JFU1RfTl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfUkVTVF9OX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvc3BsaXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9SRVNUX04gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfUkVTVF9OKG4sIHNlcSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9TRVFfU1BMSVQoTkROQk9PU1RfUFBfSU5DKG4pLCAobmlsKSBzZXEgTkROQk9PU1RfUFBfRU1QVFkpKSgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9SRVNUX04obiwgc2VxKSBORE5CT09TVF9QUF9TRVFfUkVTVF9OX0kobiwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1JFU1RfTl9JKG4sIHNlcSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9TRVFfU1BMSVQoTkROQk9PU1RfUFBfSU5DKG4pLCAobmlsKSBzZXEgTkROQk9PU1RfUFBfRU1QVFkpKSgpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzA2ZmU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU0VRX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TRVFfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0hFQUQgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU0oMCwgc2VxKQotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfVEFJTCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfMSgoc2VxKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMXzEocGFyKSBORE5CT09TVF9QUF9TRVFfVEFJTF8yICMjIHBhcgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfMihzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0kgIyMgc2VxCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0lEKE5ETkJPT1NUX1BQX1NFUV9UQUlMX0kgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfSUQoaWQpIGlkCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfRChzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTF9EKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfSSBzZXEKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTF9JIHNlcQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfSSh4KQotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfTklMICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfTklMKHgpICh4KQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODM0YzBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TSVpFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TSVpFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkgTkROQk9PU1RfUFBfU0VRX1NJWkVfSSgoc2VxKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0kocGFyKSBORE5CT09TVF9QUF9TRVFfU0laRV9JSSAjIyBwYXIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0lJKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXywgTkROQk9PU1RfUFBfU0VRX1NJWkVfMCAjIyBzZXEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkgfHwgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0koc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfSShzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfU0laRV8sIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzAgc2VxKQotIyBlbGlmIGRlZmluZWQoX19JQk1DX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXywgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXzAsIHNlcSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXywgTkROQk9PU1RfUFBfU0VRX1NJWkVfMCBzZXEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8wKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV82Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV80MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV80NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV80NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV81MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV81MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV81NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV81OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV82MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV82NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV82OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV83MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV83NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV83NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV84MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV84MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV84NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV84OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV85MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV85NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV85OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTExKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTczKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjExKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIgMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMyAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80IDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzUgNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNiA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83IDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzggOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOSA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMCAxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEgMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyIDEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMyAxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQgMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1IDE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNiAxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcgMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4IDE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOSAxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAgMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxIDIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMiAyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMgMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0IDI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNSAyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjYgMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI3IDI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yOCAyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjkgMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzMwIDMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zMSAzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzIgMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzMzIDMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zNCAzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzUgMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM2IDM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zNyAzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzggMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM5IDM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80MCA0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDEgNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQyIDQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80MyA0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDQgNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ1IDQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80NiA0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDcgNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ4IDQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80OSA0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTAgNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzUxIDUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81MiA1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTMgNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU0IDU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81NSA1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTYgNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU3IDU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81OCA1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTkgNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzYwIDYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82MSA2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjIgNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzYzIDYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82NCA2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjUgNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY2IDY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82NyA2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjggNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY5IDY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83MCA3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzEgNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzcyIDcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83MyA3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzQgNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc1IDc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83NiA3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzcgNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc4IDc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83OSA3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODAgODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzgxIDgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84MiA4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODMgODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg0IDg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84NSA4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODYgODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg3IDg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84OCA4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODkgODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzkwIDkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85MSA5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTIgOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzkzIDkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85NCA5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTUgOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk2IDk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85NyA5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTggOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk5IDk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDAgMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDEgMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDIgMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDMgMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDQgMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDUgMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDYgMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDcgMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDggMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDkgMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTAgMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTEgMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTIgMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTMgMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTQgMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTUgMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTYgMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTcgMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTggMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTkgMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjAgMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjEgMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjIgMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjMgMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjQgMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjUgMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjYgMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjcgMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjggMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjkgMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzAgMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzEgMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzIgMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzMgMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzQgMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzUgMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzYgMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzcgMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzggMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzkgMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDAgMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDEgMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDIgMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDMgMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDQgMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDUgMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDYgMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDcgMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDggMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDkgMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTAgMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTEgMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTIgMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTMgMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTQgMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTUgMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTYgMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTcgMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTggMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTkgMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjAgMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjEgMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjIgMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjMgMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjQgMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjUgMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjYgMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjcgMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjggMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjkgMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzAgMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzEgMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzIgMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzMgMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzQgMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzUgMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzYgMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzcgMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzggMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzkgMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODAgMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODEgMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODIgMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODMgMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODQgMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODUgMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODYgMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODcgMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODggMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODkgMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTAgMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTEgMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTIgMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTMgMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTQgMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTUgMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTYgMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTcgMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTggMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTkgMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDAgMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDEgMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDIgMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDMgMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDQgMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDUgMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDYgMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDcgMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDggMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDkgMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTAgMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTEgMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTIgMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTMgMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTQgMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTUgMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTYgMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTcgMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTggMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTkgMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjAgMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjEgMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjIgMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjMgMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjQgMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjUgMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjYgMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjcgMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjggMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjkgMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzAgMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzEgMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzIgMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzMgMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzQgMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzUgMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzYgMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzcgMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzggMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzkgMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDAgMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDEgMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDIgMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDMgMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDQgMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDUgMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDYgMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDcgMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDggMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDkgMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTAgMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTEgMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTIgMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTMgMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTQgMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTUgMjU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTYgMjU2Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc3Vic2VxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zdWJzZXEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTRlZTY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zdWJzZXEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU1VCU0VRX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TVUJTRVFfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9maXJzdF9uLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9yZXN0X24uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfU1VCU0VRICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NVQlNFUShzZXEsIGksIGxlbikgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04obGVuLCBORE5CT09TVF9QUF9TRVFfUkVTVF9OKGksIHNlcSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVEoc2VxLCBpLCBsZW4pIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVFfSShzZXEsIGksIGxlbikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVFfSShzZXEsIGksIGxlbikgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04obGVuLCBORE5CT09TVF9QUF9TRVFfUkVTVF9OKGksIHNlcSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvdHJhbnNmb3JtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDRlYjUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfVFJBTlNGT1JNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9UUkFOU0ZPUk1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNKG9wLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgKG5pbCkpLCBzZXEpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STShvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX0kob3AsIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fSShvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQoTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIChuaWwpKSwgc2VxKSkpCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08ocywgc3RhdGUsIGVsZW0pIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JTShzLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMyBzdGF0ZSwgZWxlbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JTShzLCBpbSwgZWxlbSkgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PX0kocywgaW0sIGVsZW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTyhzLCBzdGF0ZSwgZWxlbSkgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PX0kocywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCBzdGF0ZSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgc3RhdGUpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHN0YXRlKSwgZWxlbSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JKHMsIG9wLCBkYXRhLCByZXMsIGVsZW0pIChvcCwgZGF0YSwgcmVzIChvcChzLCBkYXRhLCBlbGVtKSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fUyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fUyhzLCBvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfICMjIHMoTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIChuaWwpKSwgc2VxKSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fUyhzLCBvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX1NfSShzLCBvcCwgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9TX0kocywgb3AsIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUwoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXyAjIyBzKE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCAobmlsKSksIHNlcSkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvY291bnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9jb3VudGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI4ZTQ3OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9jb3VudGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDA1LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgICAgICAqCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9DT1VOVEVSICsgMQotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzksIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU4NDk3MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TTE9UX0RFVEFJTF9ERUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0xPVF9ERVRBSUxfREVGX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF94ICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMCh4KSAoeCkgJSAxMDAwMDAwMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoeCkgJSAxMDAwMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOCh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KHgpICUgMTAwMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KHgpICUgMTAwMDAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoeCkgJSAxMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNSh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KHgpICUgMTAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNCh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KHgpICUgMTAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoeCkgJSAxMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMih4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKHgpICUgMTBVTAotIwotIyAvKiBORE5CT09TVF9QUF9TTE9UX0NDX3ggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihhLCBiKSBORE5CT09TVF9QUF9TTE9UX0NDXzJfRChhLCBiKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18zKGEsIGIsIGMpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfM19EKGEsIGIsIGMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzQoYSwgYiwgYywgZCkgTkROQk9PU1RfUFBfU0xPVF9DQ180X0QoYSwgYiwgYywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShhLCBiLCBjLCBkLCBlKSBORE5CT09TVF9QUF9TTE9UX0NDXzVfRChhLCBiLCBjLCBkLCBlKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ182KGEsIGIsIGMsIGQsIGUsIGYpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNl9EKGEsIGIsIGMsIGQsIGUsIGYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzcoYSwgYiwgYywgZCwgZSwgZiwgZykgTkROQk9PU1RfUFBfU0xPVF9DQ183X0QoYSwgYiwgYywgZCwgZSwgZiwgZykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKSBORE5CT09TVF9QUF9TTE9UX0NDXzhfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ185KGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGkpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOV9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGopIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTBfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18yX0QoYSwgYikgYSAjIyBiCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzNfRChhLCBiLCBjKSBhICMjIGIgIyMgYwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ180X0QoYSwgYiwgYywgZCkgYSAjIyBiICMjIGMgIyMgZAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ181X0QoYSwgYiwgYywgZCwgZSkgYSAjIyBiICMjIGMgIyMgZCAjIyBlCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzZfRChhLCBiLCBjLCBkLCBlLCBmKSBhICMjIGIgIyMgYyAjIyBkICMjIGUgIyMgZgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ183X0QoYSwgYiwgYywgZCwgZSwgZiwgZykgYSAjIyBiICMjIGMgIyMgZCAjIyBlICMjIGYgIyMgZwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ184X0QoYSwgYiwgYywgZCwgZSwgZiwgZywgaCkgYSAjIyBiICMjIGMgIyMgZCAjIyBlICMjIGYgIyMgZyAjIyBoCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzlfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpKSBhICMjIGIgIyMgYyAjIyBkICMjIGUgIyMgZiAjIyBnICMjIGggIyMgaQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18xMF9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGopIGEgIyMgYiAjIyBjICMjIGQgIyMgZSAjIyBmICMjIGcgIyMgaCAjIyBpICMjIGoKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzhkM2IwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BQX1ZBTFVFCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgTkROQk9PU1RfUFBfVkFMVUUgaXMgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwCi0jCi0jIGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDAKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCAxCi0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgMgotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDMKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA0Ci0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgNQotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDYKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA3Ci0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgOAotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA5Ci0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1ZBTFVFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90MS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90MS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNzI3MjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5OTk3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90Mi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDM1MDNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ185KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ182KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MDE3YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA5ODQ1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NjIyYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0xPVF9TTE9UX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NMT1RfU0xPVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9kZWYuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BU1NJR05fU0xPVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXywgaSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXzEgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90MS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVF8yIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDIuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1RfMyA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QzLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXzQgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NC5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVF81IDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDUuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TTE9UICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TTE9UXywgaSkoKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YjRhNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NUUklOR0laRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TVFJJTkdJWkVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU1RSSU5HSVpFICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKHRleHQpIE5ETkJPT1NUX1BQX1NUUklOR0laRV9BKCh0ZXh0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRV9BKGFyZykgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0kgYXJnCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkUodGV4dCkgTkROQk9PU1RfUFBfU1RSSU5HSVpFX09PKCh0ZXh0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRV9PTyhwYXIpIE5ETkJPT1NUX1BQX1NUUklOR0laRV9JICMjIHBhcgotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkUodGV4dCkgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0kodGV4dCkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRV9JKHRleHQpICN0ZXh0Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEwNDY0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMi0yMDExKSAqLwotIyAvKiBSZXZpc2VkIGJ5IEVkd2FyZCBEaWVuZXIgKDIwMTEpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9FQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfRUFUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VBVCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VBVCguLi4pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VBVCh4KQotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9UVVBMRV9FQVQgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVQoc2l6ZSkgTkROQk9PU1RfUFBfRUFUCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVChzaXplKSBORE5CT09TVF9QUF9UVVBMRV9FQVRfSShzaXplKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX0VBVF9PTygoc2l6ZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfRUFUX0kgIyMgcGFyCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfSShzaXplKSBORE5CT09TVF9QUF9UVVBMRV9FQVRfICMjIHNpemUKLSMgZW5kaWYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xKGUwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIoZTAsIGUxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMoZTAsIGUxLCBlMikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KGUwLCBlMSwgZTIsIGUzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzUoZTAsIGUxLCBlMiwgZTMsIGU0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF83KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNTU1ZjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyLTIwMTEpICovCi0jIC8qIFJldmlzZWQgYnkgRWR3YXJkIERpZW5lciAoMjAxMSkgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX0VMRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfRUxFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvb3ZlcmxvYWQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL2VsZW0uaHBwPgotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKC4uLikgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fT18sIF9fVkFfQVJHU19fKSwgKF9fVkFfQVJHU19fKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0kobSwgYXJncykgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSShtLCBhcmdzKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkobSwgYXJncykgTkROQk9PU1RfUFBfQ0FUKG0gIyMgYXJncywpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKC4uLikgTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXywgX19WQV9BUkdTX18pKF9fVkFfQVJHU19fKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXzIobiwgdHVwbGUpIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU0obiwgTkROQk9PU1RfUFBfUkVNIHR1cGxlKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXzMoc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fT18yKG4sIHR1cGxlKQotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8sIG4pLCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8sIHNpemUpLCB0dXBsZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkobSwgYXJncykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX0NBVChtICMjIGFyZ3MsKQotIyAgICBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSV9PTygoc2l6ZSwgbiwgdHVwbGUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSV9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSSAjIyBwYXIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0koc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkoKG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8gIyMgc2l6ZSAjIyB0dXBsZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSShwYXIpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUlJX09PKHBhcikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJSV9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUlJICMjIHBhcgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUlJKG4sIGV0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8gIyMgbiAjIyBldHVwbGUKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8sIG4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfLCBzaXplKSB0dXBsZSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0koeCkgeAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzEoZTApIChlMCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yKGUwLCBlMSkgKGUwLCBlMSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zKGUwLCBlMSwgZTIpIChlMCwgZTEsIGUyLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQoZTAsIGUxLCBlMiwgZTMpIChlMCwgZTEsIGUyLCBlMywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81KGUwLCBlMSwgZTIsIGUzLCBlNCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV84KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTYzCi0jIGVuZGlmCi0jCi0jIC8qIGRpcmVjdGx5IHVzZWQgZWxzZXdoZXJlIGluIEJvb3N0Li4uICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzFfMChhKSBhCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMChhLCBiKSBhCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMShhLCBiKSBiCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMChhLCBiLCBjKSBhCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMShhLCBiLCBjKSBiCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMihhLCBiLCBjKSBjCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg2ZTA1ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDItMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9SRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfUkVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFTSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTSguLi4pIF9fVkFfQVJHU19fCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTSh4KSB4Ci0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1RVUExFX1JFTSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTShzaXplKSBORE5CT09TVF9QUF9SRU0KLSMgZWxzZQotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9JKHNpemUpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU0oc2l6ZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX09PKChzaXplKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fT08ocGFyKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fSSAjIyBwYXIKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9JKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8gIyMgc2l6ZQotIyBlbmRpZgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzEoZTApIGUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMihlMCwgZTEpIGUwLCBlMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMoZTAsIGUxLCBlMikgZTAsIGUxLCBlMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQoZTAsIGUxLCBlMiwgZTMpIGUwLCBlMSwgZTIsIGUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNShlMCwgZTEsIGUyLCBlMywgZTQpIGUwLCBlMSwgZTIsIGUzLCBlNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzY0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MwotIwotIyAvKiBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUiguLi4pIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT18sIF9fVkFfQVJHU19fKSwgKF9fVkFfQVJHU19fKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0lJKG0sIGFyZ3MpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSUkobSwgYXJncykgTkROQk9PU1RfUFBfQ0FUKG0gIyMgYXJncywpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUiguLi4pIE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09fLCBfX1ZBX0FSR1NfXykoX19WQV9BUkdTX18pCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PXzEodHVwbGUpIE5ETkJPT1NUX1BQX1JFTSB0dXBsZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT18yKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PXzEodHVwbGUpCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1Ioc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpLCB0dXBsZSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9EKHNpemUsIHR1cGxlKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0Qoc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpLCB0dXBsZSkKLSMgICAgZW5kaWYKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koZXh0LCB0dXBsZSkgZXh0IHR1cGxlCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKGV4dCwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09PKChleHQsIHR1cGxlKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0lJICMjIHBhcgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0lJKGV4dCwgdHVwbGUpIGV4dCAjIyB0dXBsZQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS90b19saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMyMmRjNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS90b19saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDItMjAxMSkgKi8KLSMgLyogUmV2aXNlZCBieSBFZHdhcmQgRGllbmVyICgyMDExKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfVE9fTElTVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9UT19MSVNUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9zaXplLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKC4uLikgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT18sIF9fVkFfQVJHU19fKSwgKF9fVkFfQVJHU19fKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0kobSwgYXJncykgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JSShtLCBhcmdzKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSUkobSwgYXJncykgTkROQk9PU1RfUFBfQ0FUKG0gIyMgYXJncywpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKC4uLikgTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PXywgX19WQV9BUkdTX18pKF9fVkFfQVJHU19fKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PXzEodHVwbGUpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXywgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRSB0dXBsZSkgdHVwbGUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT18yKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09fMSh0dXBsZSkKLSMgZWxzZQotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVChzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKHNpemUsIHR1cGxlKQotIyAgICAgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0kocywgdCkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8gIyMgcyB0Ci0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShzLCB0KSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0lJKE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfICMjIHMgdCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JSShyZXMpIHJlcwotIyAgICAgICAgZW5kaWYKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1Qoc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT08oKHNpemUsIHR1cGxlKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JICMjIHBhcgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShzLCB0KSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXyAjIyBzICMjIHQKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMShlMCkgKGUwLCBORE5CT09TVF9QUF9OSUwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzIoZTAsIGUxKSAoZTAsIChlMSwgTkROQk9PU1RfUFBfTklMKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMyhlMCwgZTEsIGUyKSAoZTAsIChlMSwgKGUyLCBORE5CT09TVF9QUF9OSUwpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNChlMCwgZTEsIGUyLCBlMykgKGUwLCAoZTEsIChlMiwgKGUzLCBORE5CT09TVF9QUF9OSUwpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzUoZTAsIGUxLCBlMiwgZTMsIGU0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgTkROQk9PU1RfUFBfTklMKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCAoZTU5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgKGU1OSwgKGU2MCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIChlNTksIChlNjAsIChlNjEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCAoZTU5LCAoZTYwLCAoZTYxLCAoZTYyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgKGU1OSwgKGU2MCwgKGU2MSwgKGU2MiwgKGU2MywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvZWxlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9lbGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M3MmVjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9lbGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9WQVJJQURJQ19FTEVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1ZBUklBRElDX0VMRU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU0gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTShuLCAuLi4pIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fSShuLF9fVkFfQVJHU19fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fSShuLCAuLi4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8sIG4pKF9fVkFfQVJHU19fLCksKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTShuLCAuLi4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXywgbikoX19WQV9BUkdTX18sKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8wKGUwLCAuLi4pIGUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzEoZTAsIGUxLCAuLi4pIGUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIoZTAsIGUxLCBlMiwgLi4uKSBlMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zKGUwLCBlMSwgZTIsIGUzLCAuLi4pIGUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQoZTAsIGUxLCBlMiwgZTMsIGU0LCAuLi4pIGU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgLi4uKSBlNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCAuLi4pIGU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCAuLi4pIGU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgLi4uKSBlOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCAuLi4pIGU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIC4uLikgZTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgLi4uKSBlMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIC4uLikgZTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIC4uLikgZTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgLi4uKSBlMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIC4uLikgZTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIC4uLikgZTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgLi4uKSBlMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIC4uLikgZTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIC4uLikgZTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgLi4uKSBlMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIC4uLikgZTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIC4uLikgZTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgLi4uKSBlMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIC4uLikgZTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIC4uLikgZTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgLi4uKSBlMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIC4uLikgZTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIC4uLikgZTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgLi4uKSBlMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIC4uLikgZTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIC4uLikgZTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgLi4uKSBlMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIC4uLikgZTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIC4uLikgZTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgLi4uKSBlMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIC4uLikgZTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIC4uLikgZTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgLi4uKSBlMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIC4uLikgZTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIC4uLikgZTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgLi4uKSBlNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIC4uLikgZTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIC4uLikgZTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgLi4uKSBlNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIC4uLikgZTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIC4uLikgZTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgLi4uKSBlNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIC4uLikgZTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIC4uLikgZTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgLi4uKSBlNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIC4uLikgZTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIC4uLikgZTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgLi4uKSBlNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIC4uLikgZTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIC4uLikgZTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgLi4uKSBlNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIC4uLikgZTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIC4uLikgZTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgLi4uKSBlNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIC4uLikgZTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIC4uLikgZTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgLi4uKSBlNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMsIC4uLikgZTYzCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDM0YTFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBFZHdhcmQgRGllbmVyIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1ZBUklBRElDX1NJWkVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVkFSSUFESUNfU0laRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFKC4uLikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkVfSShfX1ZBX0FSR1NfXywgNjQsIDYzLCA2MiwgNjEsIDYwLCA1OSwgNTgsIDU3LCA1NiwgNTUsIDU0LCA1MywgNTIsIDUxLCA1MCwgNDksIDQ4LCA0NywgNDYsIDQ1LCA0NCwgNDMsIDQyLCA0MSwgNDAsIDM5LCAzOCwgMzcsIDM2LCAzNSwgMzQsIDMzLCAzMiwgMzEsIDMwLCAyOSwgMjgsIDI3LCAyNiwgMjUsIDI0LCAyMywgMjIsIDIxLCAyMCwgMTksIDE4LCAxNywgMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsKSwpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFKC4uLikgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRV9JKF9fVkFfQVJHU19fLCA2NCwgNjMsIDYyLCA2MSwgNjAsIDU5LCA1OCwgNTcsIDU2LCA1NSwgNTQsIDUzLCA1MiwgNTEsIDUwLCA0OSwgNDgsIDQ3LCA0NiwgNDUsIDQ0LCA0MywgNDIsIDQxLCA0MCwgMzksIDM4LCAzNywgMzYsIDM1LCAzNCwgMzMsIDMyLCAzMSwgMzAsIDI5LCAyOCwgMjcsIDI2LCAyNSwgMjQsIDIzLCAyMiwgMjEsIDIwLCAxOSwgMTgsIDE3LCAxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwpCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFX0koZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMsIHNpemUsIC4uLikgc2l6ZQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcm9ncmVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Byb2dyZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y1ZTllZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Byb2dyZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLyAgYm9vc3QgcHJvZ3Jlc3MuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTQtOTkuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3RpbWVyIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gICAxIERlYyAwMSAgQWRkIGxlYWRpbmcgcHJvZ3Jlc3MgZGlzcGxheSBzdHJpbmdzIChzdWdnZXN0ZWQgYnkgVG9vbiBLbmFwZW4pCi0vLyAgMjAgTWF5IDAxICBJbnRyb2R1Y2Ugc2V2ZXJhbCBzdGF0aWNfY2FzdHM8PiB0byBlbGltaW5hdGUgd2FybmluZyBtZXNzYWdlcwotLy8gICAgICAgICAgICAgKEZpeGVkIGJ5IEJlbWFuLCByZXBvcnRlZCBieSBIZXJ2ZSBCcm9ubmltYW5uKQotLy8gIDEyIEphbiAwMSAgQ2hhbmdlIHRvIGlubGluZSBpbXBsZW1lbnRhdGlvbiB0byBhbGxvdyB1c2Ugd2l0aG91dCBsaWJyYXJ5Ci0vLyAgICAgICAgICAgICBidWlsZHMuIFNlZSBkb2NzIGZvciBtb3JlIHJhdGlvbmFsZS4gKEJlbWFuIERhd2VzKSAKLS8vICAyMiBKdWwgOTkgIE5hbWUgY2hhbmdlZCB0byAuaHBwCi0vLyAgMTYgSnVsIDk5ICBTZWNvbmQgYmV0YQotLy8gICA2IEp1bCA5OSAgSW5pdGlhbCBib29zdCB2ZXJzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfUFJPR1JFU1NfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1BST0dSRVNTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGltZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkuaHBwPiAgLy8gZm9yIG5vbmNvcHlhYmxlCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+ICAvLyBmb3IgdWludG1heF90Ci0jaW5jbHVkZSA8aW9zdHJlYW0+ICAgICAgICAgICAvLyBmb3Igb3N0cmVhbSwgY291dCwgZXRjCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgICAgICAgICAvLyBmb3Igc3RyaW5nCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICBwcm9ncmVzc190aW1lciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBBIHByb2dyZXNzX3RpbWVyIGJlaGF2ZXMgbGlrZSBhIHRpbWVyIGV4Y2VwdCB0aGF0IHRoZSBkZXN0cnVjdG9yIGRpc3BsYXlzCi0vLyAgYW4gZWxhcHNlZCB0aW1lIG1lc3NhZ2UgYXQgYW4gYXBwcm9wcmlhdGUgcGxhY2UgaW4gYW4gYXBwcm9wcmlhdGUgZm9ybS4KLQotY2xhc3MgcHJvZ3Jlc3NfdGltZXIgOiBwdWJsaWMgdGltZXIsIHByaXZhdGUgbm9uY29weWFibGUKLXsKLSAgCi0gcHVibGljOgotICBleHBsaWNpdCBwcm9ncmVzc190aW1lciggc3RkOjpvc3RyZWFtICYgb3MgPSBzdGQ6OmNvdXQgKQotICAgICAvLyBvcyBpcyBoaW50OyBpbXBsZW1lbnRhdGlvbiBtYXkgaWdub3JlLCBwYXJ0aWN1bGFybHkgaW4gZW1iZWRkZWQgc3lzdGVtcwotICAgICA6IG1fb3Mob3MpIHt9Ci0gIH5wcm9ncmVzc190aW1lcigpCi0gIHsKLSAgLy8gIEEpIFRocm93aW5nIGFuIGV4Y2VwdGlvbiBmcm9tIGEgZGVzdHJ1Y3RvciBpcyBhIEJhZCBUaGluZy4KLSAgLy8gIEIpIFRoZSBwcm9ncmVzc190aW1lciBkZXN0cnVjdG9yIGRvZXMgb3V0cHV0IHdoaWNoIG1heSB0aHJvdy4KLSAgLy8gIEMpIEEgcHJvZ3Jlc3NfdGltZXIgaXMgdXN1YWxseSBub3QgY3JpdGljYWwgdG8gdGhlIGFwcGxpY2F0aW9uLgotICAvLyAgVGhlcmVmb3JlLCB3cmFwIHRoZSBJL08gaW4gYSB0cnkgYmxvY2ssIGNhdGNoIGFuZCBpZ25vcmUgYWxsIGV4Y2VwdGlvbnMuCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gdXNlIGlzdHJlYW0gaW5zdGVhZCBvZiBpb3NfYmFzZSB0byB3b3JrYXJvdW5kIEdOVSBwcm9ibGVtIChHcmVnIENoaWNhcmVzKQotICAgICAgc3RkOjppc3RyZWFtOjpmbXRmbGFncyBvbGRfZmxhZ3MgPSBtX29zLnNldGYoIHN0ZDo6aXN0cmVhbTo6Zml4ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzdHJlYW06OmZsb2F0ZmllbGQgKTsKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBvbGRfcHJlYyA9IG1fb3MucHJlY2lzaW9uKCAyICk7Ci0gICAgICBtX29zIDw8IGVsYXBzZWQoKSA8PCAiIHNcbiIgLy8gInMiIGlzIFN5c3RlbSBJbnRlcm5hdGlvbmFsIGQnVW5pdGVzIHN0ZAotICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgbV9vcy5mbGFncyggb2xkX2ZsYWdzICk7Ci0gICAgICBtX29zLnByZWNpc2lvbiggb2xkX3ByZWMgKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoLi4uKSB7fSAvLyBlYXQgYW55IGV4Y2VwdGlvbnMKLSAgfSAvLyB+cHJvZ3Jlc3NfdGltZXIKLQotIHByaXZhdGU6Ci0gIHN0ZDo6b3N0cmVhbSAmIG1fb3M7Ci19OwotCi0KLS8vICBwcm9ncmVzc19kaXNwbGF5ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBwcm9ncmVzc19kaXNwbGF5IGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGluZGljYXRpb24gb2YgCi0vLyAgcHJvZ3Jlc3MgYXQgYW4gYXBwcm9wcmlhdGUgcGxhY2UgaW4gYW4gYXBwcm9wcmlhdGUgZm9ybS4KLQotLy8gTk9URTogKEphbiAxMiwgMjAwMSkgVHJpZWQgdG8gY2hhbmdlIHVuc2lnbmVkIGxvbmcgdG8gbmRuYm9vc3Q6OnVpbnRtYXhfdCwgYnV0Ci0vLyBmb3VuZCBzb21lIGNvbXBpbGVycyBjb3VsZG4ndCBoYW5kbGUgdGhlIHJlcXVpcmVkIGNvbnZlcnNpb24gdG8gZG91YmxlLgotLy8gUmV2ZXJ0ZWQgdG8gdW5zaWduZWQgbG9uZyB1bnRpbCB0aGUgY29tcGlsZXJzIGNhdGNoIHVwLiAKLQotY2xhc3MgcHJvZ3Jlc3NfZGlzcGxheSA6IHByaXZhdGUgbm9uY29weWFibGUKLXsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IHByb2dyZXNzX2Rpc3BsYXkoIHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSAmIG9zID0gc3RkOjpjb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHMxID0gIlxuIiwgLy9sZWFkaW5nIHN0cmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiBzMiA9ICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHMzID0gIiIgKQotICAgLy8gb3MgaXMgaGludDsgaW1wbGVtZW50YXRpb24gbWF5IGlnbm9yZSwgcGFydGljdWxhcmx5IGluIGVtYmVkZGVkIHN5c3RlbXMKLSAgIDogbV9vcyhvcyksIG1fczEoczEpLCBtX3MyKHMyKSwgbV9zMyhzMykgeyByZXN0YXJ0KGV4cGVjdGVkX2NvdW50KTsgfQotCi0gIHZvaWQgICAgICAgICAgIHJlc3RhcnQoIHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfY291bnQgKQotICAvLyAgRWZmZWN0czogZGlzcGxheSBhcHByb3ByaWF0ZSBzY2FsZQotICAvLyAgUG9zdGNvbmRpdGlvbnM6IGNvdW50KCk9PTAsIGV4cGVjdGVkX2NvdW50KCk9PWV4cGVjdGVkX2NvdW50Ci0gIHsKLSAgICBfY291bnQgPSBfbmV4dF90aWNfY291bnQgPSBfdGljID0gMDsKLSAgICBfZXhwZWN0ZWRfY291bnQgPSBleHBlY3RlZF9jb3VudDsKLQotICAgIG1fb3MgPDwgbV9zMSA8PCAiMCUgICAxMCAgIDIwICAgMzAgICA0MCAgIDUwICAgNjAgICA3MCAgIDgwICAgOTAgICAxMDAlXG4iCi0gICAgICAgICA8PCBtX3MyIDw8ICJ8LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwiCi0gICAgICAgICA8PCBzdGQ6OmVuZGwgIC8vIGVuZGwgaW1wbGllcyBmbHVzaCwgd2hpY2ggZW5zdXJlcyBkaXNwbGF5Ci0gICAgICAgICA8PCBtX3MzOwotICAgIGlmICggIV9leHBlY3RlZF9jb3VudCApIF9leHBlY3RlZF9jb3VudCA9IDE7ICAvLyBwcmV2ZW50IGRpdmlkZSBieSB6ZXJvCi0gIH0gLy8gcmVzdGFydAotCi0gIHVuc2lnbmVkIGxvbmcgIG9wZXJhdG9yKz0oIHVuc2lnbmVkIGxvbmcgaW5jcmVtZW50ICkKLSAgLy8gIEVmZmVjdHM6IERpc3BsYXkgYXBwcm9wcmlhdGUgcHJvZ3Jlc3MgdGljIGlmIG5lZWRlZC4KLSAgLy8gIFBvc3Rjb25kaXRpb25zOiBjb3VudCgpPT0gb3JpZ2luYWwgY291bnQoKSArIGluY3JlbWVudAotICAvLyAgUmV0dXJuczogY291bnQoKS4KLSAgewotICAgIGlmICggKF9jb3VudCArPSBpbmNyZW1lbnQpID49IF9uZXh0X3RpY19jb3VudCApIHsgZGlzcGxheV90aWMoKTsgfQotICAgIHJldHVybiBfY291bnQ7Ci0gIH0KLQotICB1bnNpZ25lZCBsb25nICBvcGVyYXRvcisrKCkgICAgICAgICAgIHsgcmV0dXJuIG9wZXJhdG9yKz0oIDEgKTsgfQotICB1bnNpZ25lZCBsb25nICBjb3VudCgpIGNvbnN0ICAgICAgICAgIHsgcmV0dXJuIF9jb3VudDsgfQotICB1bnNpZ25lZCBsb25nICBleHBlY3RlZF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIF9leHBlY3RlZF9jb3VudDsgfQotCi0gIHByaXZhdGU6Ci0gIHN0ZDo6b3N0cmVhbSAmICAgICBtX29zOyAgLy8gbWF5IG5vdCBiZSBwcmVzZW50IGluIGFsbCBpbXBzCi0gIGNvbnN0IHN0ZDo6c3RyaW5nICBtX3MxOyAgLy8gc3RyaW5nIGlzIG1vcmUgZ2VuZXJhbCwgc2FmZXIgdGhhbiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgIG1fczI7ICAvLyAgY29uc3QgY2hhciAqLCBhbmQgZWZmaWNpZW5jeSBvciBzaXplIGFyZQotICBjb25zdCBzdGQ6OnN0cmluZyAgbV9zMzsgIC8vICBub3QgaXNzdWVzCi0KLSAgdW5zaWduZWQgbG9uZyBfY291bnQsIF9leHBlY3RlZF9jb3VudCwgX25leHRfdGljX2NvdW50OwotICB1bnNpZ25lZCBpbnQgIF90aWM7Ci0gIHZvaWQgZGlzcGxheV90aWMoKQotICB7Ci0gICAgLy8gdXNlIG9mIGZsb2F0aW5nIHBvaW50IGVuc3VyZXMgdGhhdCBib3RoIGxhcmdlIGFuZCBzbWFsbCBjb3VudHMKLSAgICAvLyB3b3JrIGNvcnJlY3RseS4gIHN0YXRpY19jYXN0PD4oKSBpcyBhbHNvIHVzZWQgc2V2ZXJhbCBwbGFjZXMKLSAgICAvLyB0byBzdXBwcmVzcyBzcHVyaW91cyBjb21waWxlciB3YXJuaW5ncy4gCi0gICAgdW5zaWduZWQgaW50IHRpY3NfbmVlZGVkID0KLSAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCi0gICAgICAgIChzdGF0aWNfY2FzdDxkb3VibGU+KF9jb3VudCkvX2V4cGVjdGVkX2NvdW50KSo1MC4wICk7Ci0gICAgZG8geyBtX29zIDw8ICcqJyA8PCBzdGQ6OmZsdXNoOyB9IHdoaWxlICggKytfdGljIDwgdGljc19uZWVkZWQgKTsKLSAgICBfbmV4dF90aWNfY291bnQgPSAKLSAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KChfdGljLzUwLjApKl9leHBlY3RlZF9jb3VudCk7Ci0gICAgaWYgKCBfY291bnQgPT0gX2V4cGVjdGVkX2NvdW50ICkgewotICAgICAgaWYgKCBfdGljIDwgNTEgKSBtX29zIDw8ICcqJzsKLSAgICAgIG1fb3MgPDwgc3RkOjplbmRsOwotICAgICAgfQotICB9IC8vIGRpc3BsYXlfdGljCi19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1BST0dSRVNTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ3ZjdiYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvY29uZmlnLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAwOQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGNvbmZpZy5ocHAgNTI0OTIgMjAwOS0wNC0xOSAxNDo1NTo1N1ogc3RldmVuX3dhdGFuYWJlICQKLSAqLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykKLSAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMjc3ZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDAtMjAwMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGNvbnN0X21vZC5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKiBSZXZpc2lvbiBoaXN0b3J5Ci0gKiAgMjAwMS0wMi0xOCAgbW92ZWQgdG8gaW5kaXZpZHVhbCBoZWFkZXIgZmlsZXMKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9DT05TVF9NT0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9DT05TVF9NT0RfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2xhcmdlX2FyaXRobWV0aWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIG0+Ci1jbGFzcyBjb25zdF9tb2QKLXsKLXB1YmxpYzoKLSAgc3RhdGljIEludFR5cGUgYXBwbHkoSW50VHlwZSB4KQotICB7Ci0gICAgaWYoKCh1bnNpZ25lZF9tKCkgLSAxKSAmIHVuc2lnbmVkX20oKSkgPT0gMCkKLSAgICAgIHJldHVybiAodW5zaWduZWRfdHlwZSh4KSkgJiAodW5zaWduZWRfbSgpIC0gMSk7Ci0gICAgZWxzZSB7Ci0gICAgICBJbnRUeXBlIHN1cHJlc3Nfd2FybmluZ3MgPSAobSA9PSAwKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzdXByZXNzX3dhcm5pbmdzID09IDApOwotICAgICAgcmV0dXJuIHggJSAobSArIHN1cHJlc3Nfd2FybmluZ3MpOwotICAgIH0KLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIGFkZChJbnRUeXBlIHgsIEludFR5cGUgYykKLSAgewotICAgIGlmKCgodW5zaWduZWRfbSgpIC0gMSkgJiB1bnNpZ25lZF9tKCkpID09IDApCi0gICAgICByZXR1cm4gKHVuc2lnbmVkX3R5cGUoeCkgKyB1bnNpZ25lZF90eXBlKGMpKSAmICh1bnNpZ25lZF9tKCkgLSAxKTsKLSAgICBlbHNlIGlmKGMgPT0gMCkKLSAgICAgIHJldHVybiB4OwotICAgIGVsc2UgaWYoeCA8IG0gLSBjKQotICAgICAgcmV0dXJuIHggKyBjOwotICAgIGVsc2UKLSAgICAgIHJldHVybiB4IC0gKG0gLSBjKTsKLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIG11bHQoSW50VHlwZSBhLCBJbnRUeXBlIHgpCi0gIHsKLSAgICBpZigoKHVuc2lnbmVkX20oKSAtIDEpICYgdW5zaWduZWRfbSgpKSA9PSAwKQotICAgICAgcmV0dXJuIHVuc2lnbmVkX3R5cGUoYSkgKiB1bnNpZ25lZF90eXBlKHgpICYgKHVuc2lnbmVkX20oKSAtIDEpOwotICAgIGVsc2UgaWYoYSA9PSAwKQotICAgICAgcmV0dXJuIDA7Ci0gICAgZWxzZSBpZihhID09IDEpCi0gICAgICByZXR1cm4geDsKLSAgICBlbHNlIGlmKG0gPD0gdHJhaXRzOjpjb25zdF9tYXgvYSkgICAgICAvLyBpLmUuIGEqbSA8PSBtYXgKLSAgICAgIHJldHVybiBtdWx0X3NtYWxsKGEsIHgpOwotICAgIGVsc2UgaWYodHJhaXRzOjppc19zaWduZWQgJiYgKG0lYSA8IG0vYSkpCi0gICAgICByZXR1cm4gbXVsdF9zY2hyYWdlKGEsIHgpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBtdWx0X2dlbmVyYWwoYSwgeCk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X2FkZChJbnRUeXBlIGEsIEludFR5cGUgeCwgSW50VHlwZSBjKQotICB7Ci0gICAgaWYoKCh1bnNpZ25lZF9tKCkgLSAxKSAmIHVuc2lnbmVkX20oKSkgPT0gMCkKLSAgICAgIHJldHVybiAodW5zaWduZWRfdHlwZShhKSAqIHVuc2lnbmVkX3R5cGUoeCkgKyB1bnNpZ25lZF90eXBlKGMpKSAmICh1bnNpZ25lZF9tKCkgLSAxKTsKLSAgICBlbHNlIGlmKGEgPT0gMCkKLSAgICAgIHJldHVybiBjOwotICAgIGVsc2UgaWYobSA8PSAodHJhaXRzOjpjb25zdF9tYXgtYykvYSkgeyAgLy8gaS5lLiBhKm0rYyA8PSBtYXgKLSAgICAgIEludFR5cGUgc3VwcmVzc193YXJuaW5ncyA9IChtID09IDApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZ3MgPT0gMCk7Ci0gICAgICByZXR1cm4gKGEqeCtjKSAlIChtICsgc3VwcmVzc193YXJuaW5ncyk7Ci0gICAgfSBlbHNlCi0gICAgICByZXR1cm4gYWRkKG11bHQoYSwgeCksIGMpOwotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgcG93KEludFR5cGUgYSwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBleHBvbmVudCkKLSAgewotICAgICAgSW50VHlwZSByZXN1bHQgPSAxOwotICAgICAgd2hpbGUoZXhwb25lbnQgIT0gMCkgewotICAgICAgICAgIGlmKGV4cG9uZW50ICUgMiA9PSAxKSB7Ci0gICAgICAgICAgICAgIHJlc3VsdCA9IG11bHQocmVzdWx0LCBhKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYSA9IG11bHQoYSwgYSk7Ci0gICAgICAgICAgZXhwb25lbnQgLz0gMjsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBpbnZlcnQoSW50VHlwZSB4KQotICB7IHJldHVybiB4ID09IDAgPyAwIDogKG0gPT0gMD8gaW52ZXJ0X2V1Y2xpZGlhbjAoeCkgOiBpbnZlcnRfZXVjbGlkaWFuKHgpKTsgfQotCi1wcml2YXRlOgotICB0eXBlZGVmIGludGVnZXJfdHJhaXRzPEludFR5cGU+IHRyYWl0czsKLSAgdHlwZWRlZiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPEludFR5cGU+Ojp0eXBlIHVuc2lnbmVkX3R5cGU7Ci0KLSAgY29uc3RfbW9kKCk7ICAgICAgLy8gZG9uJ3QgaW5zdGFudGlhdGUKLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X3NtYWxsKEludFR5cGUgYSwgSW50VHlwZSB4KQotICB7Ci0gICAgSW50VHlwZSBzdXByZXNzX3dhcm5pbmdzID0gKG0gPT0gMCk7Ci0gICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZ3MgPT0gMCk7Ci0gICAgcmV0dXJuIGEqeCAlIChtICsgc3VwcmVzc193YXJuaW5ncyk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X3NjaHJhZ2UoSW50VHlwZSBhLCBJbnRUeXBlIHZhbHVlKQotICB7Ci0gICAgY29uc3QgSW50VHlwZSBxID0gbSAvIGE7Ci0gICAgY29uc3QgSW50VHlwZSByID0gbSAlIGE7Ci0KLSAgICBORE5CT09TVF9BU1NFUlQociA8IHEpOyAgICAgICAgLy8gY2hlY2sgdGhhdCBvdmVyZmxvdyBjYW5ub3QgaGFwcGVuCi0KLSAgICByZXR1cm4gc3ViKGEqKHZhbHVlJXEpLCByKih2YWx1ZS9xKSk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X2dlbmVyYWwoSW50VHlwZSBhLCBJbnRUeXBlIGIpCi0gIHsKLSAgICBJbnRUeXBlIHN1cHByZXNzX3dhcm5pbmdzID0gKG0gPT0gMCk7Ci0gICAgTkROQk9PU1RfQVNTRVJUKHN1cHByZXNzX3dhcm5pbmdzID09IDApOwotICAgIEludFR5cGUgbW9kdWx1cyA9IG0gKyBzdXBwcmVzc193YXJuaW5nczsKLSAgICBORE5CT09TVF9BU1NFUlQobW9kdWx1cyA9PSBtKTsKLSAgICBpZig6Om5kbmJvb3N0Ojp1aW50bWF4X3QobW9kdWx1cykgPD0KLSAgICAgICAgKDo6c3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWludG1heF90Pjo6bWF4KSgpIC8gbW9kdWx1cykKLSAgICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50VHlwZT4obmRuYm9vc3Q6OnVpbnRtYXhfdChhKSAqIGIgJSBtb2R1bHVzKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludFR5cGU+KGRldGFpbDo6bXVsbW9kKGEsIGIsIG1vZHVsdXMpKTsKLSAgICB9Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBzdWIoSW50VHlwZSBhLCBJbnRUeXBlIGIpCi0gIHsKLSAgICBpZihhIDwgYikKLSAgICAgIHJldHVybiBtIC0gKGIgLSBhKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gYSAtIGI7Ci0gIH0KLQotICBzdGF0aWMgdW5zaWduZWRfdHlwZSB1bnNpZ25lZF9tKCkKLSAgewotICAgICAgaWYobSA9PSAwKSB7Ci0gICAgICAgICAgcmV0dXJuIHVuc2lnbmVkX3R5cGUoKHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46Om1heCkoKSkgKyAxOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gdW5zaWduZWRfdHlwZShtKTsKLSAgICAgIH0KLSAgfQotCi0gIC8vIGludmVydCBjIGluIHRoZSBmaW5pdGUgZmllbGQgKG1vZCBtKSAobSBtdXN0IGJlIHByaW1lKQotICBzdGF0aWMgSW50VHlwZSBpbnZlcnRfZXVjbGlkaWFuKEludFR5cGUgYykKLSAgewotICAgIC8vIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBnY2QgZmFjdG9yIGZvciBjLCBiZWNhdXNlIHRoaXMgaXMgb3VyIGludmVyc2UKLSAgICBORE5CT09TVF9BU1NFUlQoYyA+IDApOwotICAgIEludFR5cGUgbDEgPSAwOwotICAgIEludFR5cGUgbDIgPSAxOwotICAgIEludFR5cGUgbiA9IGM7Ci0gICAgSW50VHlwZSBwID0gbTsKLSAgICBmb3IoOzspIHsKLSAgICAgIEludFR5cGUgcSA9IHAgLyBuOwotICAgICAgbDEgKz0gcSAqIGwyOwotICAgICAgcCAtPSBxICogbjsKLSAgICAgIGlmKHAgPT0gMCkKLSAgICAgICAgcmV0dXJuIGwyOwotICAgICAgSW50VHlwZSBxMiA9IG4gLyBwOwotICAgICAgbDIgKz0gcTIgKiBsMTsKLSAgICAgIG4gLT0gcTIgKiBwOwotICAgICAgaWYobiA9PSAwKQotICAgICAgICByZXR1cm4gbSAtIGwxOwotICAgIH0KLSAgfQotCi0gIC8vIGludmVydCBjIGluIHRoZSBmaW5pdGUgZmllbGQgKG1vZCBtKSAoYyBtdXN0IGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gbSkKLSAgc3RhdGljIEludFR5cGUgaW52ZXJ0X2V1Y2xpZGlhbjAoSW50VHlwZSBjKQotICB7Ci0gICAgLy8gd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGdjZCBmYWN0b3IgZm9yIGMsIGJlY2F1c2UgdGhpcyBpcyBvdXIgaW52ZXJzZQotICAgIE5ETkJPT1NUX0FTU0VSVChjID4gMCk7Ci0gICAgaWYoYyA9PSAxKSByZXR1cm4gMTsKLSAgICBJbnRUeXBlIGwxID0gMDsKLSAgICBJbnRUeXBlIGwyID0gMTsKLSAgICBJbnRUeXBlIG4gPSBjOwotICAgIEludFR5cGUgcCA9IG07Ci0gICAgSW50VHlwZSBtYXggPSAoc3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6bWF4KSgpOwotICAgIEludFR5cGUgcSA9IG1heCAvIG47Ci0gICAgTkROQk9PU1RfQVNTRVJUKG1heCAlIG4gIT0gbiAtIDEgJiYgImMgbXVzdCBiZSByZWxhdGl2ZWx5IHByaW1lIHRvIG0uIik7Ci0gICAgbDEgKz0gcSAqIGwyOwotICAgIHAgPSBtYXggLSBxICogbiArIDE7Ci0gICAgZm9yKDs7KSB7Ci0gICAgICBpZihwID09IDApCi0gICAgICAgIHJldHVybiBsMjsKLSAgICAgIEludFR5cGUgcTIgPSBuIC8gcDsKLSAgICAgIGwyICs9IHEyICogbDE7Ci0gICAgICBuIC09IHEyICogcDsKLSAgICAgIGlmKG4gPT0gMCkKLSAgICAgICAgcmV0dXJuIG0gLSBsMTsKLSAgICAgIHEgPSBwIC8gbjsKLSAgICAgIGwxICs9IHEgKiBsMjsKLSAgICAgIHAgLT0gcSAqIG47Ci0gICAgfQotICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fQ09OU1RfTU9EX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjcwN2QwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMDkKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBkaXNhYmxlX3dhcm5pbmdzLmhwcCA2MDc1NSAyMDEwLTAzLTIyIDAwOjQ1OjA2WiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqLwotCi0vLyBObyAjaW5jbHVkZSBndWFyZC4gIFRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvIGJlIGluY2x1ZGVkIG11bHRpcGxlIHRpbWVzLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxMikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzI0KQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODUzNWUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogZW5hYmxlX3dhcm5pbmdzLmhwcCA1ODY0OSAyMDEwLTAxLTAyIDIxOjIzOjE3WiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqLwotCi0vLyBObyAjaW5jbHVkZSBndWFyZC4gIFRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvIGJlIGluY2x1ZGVkIG11bHRpcGxlIHRpbWVzLgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9nZW5lcmF0b3JfYml0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZDQ5ZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvZ2VuZXJhdG9yX2JpdHMuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDExCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogZ2VuZXJhdG9yX2JpdHMuaHBwIDcyOTUxIDIwMTEtMDctMDcgMDQ6NTc6MzdaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQklUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQklUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUaGlzIGlzIGEgdGVtcG9yYXJ5IG1lYXN1cmUgdGhhdCByZXRhaW5zIGJhY2t3YXJkcwotLy8gY29tcGF0aWJpbGl0eS4KLXRlbXBsYXRlPGNsYXNzIFVSTkc+Ci1zdHJ1Y3QgZ2VuZXJhdG9yX2JpdHMgewotICAgIHN0YXRpYyBzdGQ6OnNpemVfdCB2YWx1ZSgpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZW5hbWUgVVJORzo6cmVzdWx0X3R5cGU+OjpkaWdpdHM7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9CSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2ludGVnZXJfbG9nMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc0MjlhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAxMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGludGVnZXJfbG9nMi5ocHAgODMzODEgMjAxMy0wMy0wOSAyMjo1NTowNVogZXJpY19uaWVibGVyICQKLSAqCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0lOVEVHRVJfTE9HMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTlRFR0VSX0xPRzJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcGVuZGluZy9pbnRlZ2VyX2xvZzIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUikKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgY29uc3RleHByCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIF9fZm9yY2VpbmxpbmUKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDQKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgaW5saW5lIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBpbmxpbmUKLSNlbmRpZgotCi10ZW1wbGF0ZTxpbnQgU2hpZnQ+Ci1zdHJ1Y3QgaW50ZWdlcl9sb2cyX2ltcGwKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUikKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIHN0YXRpYyBpbnQgYXBwbHkoVCB0LCBpbnQgYWNjdW0pCi0gICAgewotICAgICAgICBpbnQgdXBkYXRlID0gKCh0ID4+IFNoaWZ0KSAhPSAwKSAqIFNoaWZ0OwotICAgICAgICByZXR1cm4gaW50ZWdlcl9sb2cyX2ltcGw8U2hpZnQgLyAyPjo6YXBwbHkodCA+PiB1cGRhdGUsIGFjY3VtICsgdXBkYXRlKTsKLSAgICB9Ci0jZWxzZQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgc3RhdGljIGludCBhcHBseTIoVCB0LCBpbnQgYWNjdW0sIGludCB1cGRhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gaW50ZWdlcl9sb2cyX2ltcGw8U2hpZnQgLyAyPjo6YXBwbHkodCA+PiB1cGRhdGUsIGFjY3VtICsgdXBkYXRlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIHN0YXRpYyBpbnQgYXBwbHkoVCB0LCBpbnQgYWNjdW0pCi0gICAgewotICAgICAgICByZXR1cm4gYXBwbHkyKHQsIGFjY3VtLCAoKHQgPj4gU2hpZnQpICE9IDApICogU2hpZnQpOwotICAgIH0KLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGludGVnZXJfbG9nMl9pbXBsPDE+Ci17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBzdGF0aWMgaW50IGFwcGx5KFQgdCwgaW50IGFjY3VtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGludCh0ID4+IDEpICsgYWNjdW07Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLU5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIGludCBpbnRlZ2VyX2xvZzIoVCB0KQotewotICAgIHJldHVybiBpbnRlZ2VyX2xvZzJfaW1wbDwKLSAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjptYXhfcG93Ml9sZXNzPAotICAgICAgICAgICAgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMsIDQKLSAgICAgICAgPjo6dmFsdWUKLSAgICA+OjphcHBseSh0LCAwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX0lOVEVHRVJfTE9HMl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzljNjQzNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvbGFyZ2VfYXJpdGhtZXRpYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAxMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGxhcmdlX2FyaXRobWV0aWMuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0xBUkdFX0FSSVRITUVUSUNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfTEFSR0VfQVJJVEhNRVRJQ19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBkaXZfdCB7Ci0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBxdW90aWVudDsKLSAgICBuZG5ib29zdDo6dWludG1heF90IHJlbWFpbmRlcjsKLX07Ci0KLWlubGluZSBkaXZfdCBtdWxkaXZtb2QobmRuYm9vc3Q6OnVpbnRtYXhfdCBhLCBuZG5ib29zdDo6dWludG1heF90IGIsIG5kbmJvb3N0Ojp1aW50bWF4X3QgbSkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJpdHMgPQotICAgICAgICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdD46OmRpZ2l0cyAvIDI7Ci0gICAgc3RhdGljIGNvbnN0IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCBtYXNrID0gKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCgxKSA8PCBiaXRzKSAtIDE7Ci0gICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojp1aW50X3Q8Yml0cz46OmZhc3QgZGlnaXRfdDsKLQotICAgIGludCBzaGlmdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdD46OmRpZ2l0cyAtIDEKLSAgICAgICAgLSBkZXRhaWw6OmludGVnZXJfbG9nMihtKTsKLQotICAgIGEgPDw9IHNoaWZ0OwotICAgIG0gPDw9IHNoaWZ0OwotCi0gICAgZGlnaXRfdCBwcm9kdWN0WzRdID0geyAwLCAwLCAwLCAwIH07Ci0gICAgZGlnaXRfdCBhX1syXSA9IHsgZGlnaXRfdChhICYgbWFzayksIGRpZ2l0X3QoKGEgPj4gYml0cykgJiBtYXNrKSB9OwotICAgIGRpZ2l0X3QgYl9bMl0gPSB7IGRpZ2l0X3QoYiAmIG1hc2spLCBkaWdpdF90KChiID4+IGJpdHMpICYgbWFzaykgfTsKLSAgICBkaWdpdF90IG1fWzJdID0geyBkaWdpdF90KG0gJiBtYXNrKSwgZGlnaXRfdCgobSA+PiBiaXRzKSAmIG1hc2spIH07Ci0KLSAgICAvLyBtdWx0aXBseSBhICogYgotICAgIGZvcihpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgZGlnaXRfdCBjYXJyeSA9IDA7Ci0gICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCAyOyArK2opIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnVpbnQ2NF90IHRlbXAgPSA6Om5kbmJvb3N0Ojp1aW50bWF4X3QoYV9baV0pICogYl9bal0gKwotICAgICAgICAgICAgICAgIGNhcnJ5ICsgcHJvZHVjdFtpICsgal07Ci0gICAgICAgICAgICBwcm9kdWN0W2kgKyBqXSA9IGRpZ2l0X3QodGVtcCAmIG1hc2spOwotICAgICAgICAgICAgY2FycnkgPSBkaWdpdF90KHRlbXAgPj4gYml0cyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYoY2FycnkgIT0gMCkgewotICAgICAgICAgICAgcHJvZHVjdFtpICsgMl0gKz0gY2Fycnk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBkaWdpdF90IHF1b3RpZW50WzJdOwotCi0gICAgaWYobSA9PSAwKSB7Ci0gICAgICAgIGRpdl90IHJlc3VsdCA9IHsKLSAgICAgICAgICAgICgoOjpuZG5ib29zdDo6dWludG1heF90KHByb2R1Y3RbM10pIDw8IGJpdHMpIHwgcHJvZHVjdFsyXSksCi0gICAgICAgICAgICAoKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChwcm9kdWN0WzFdKSA8PCBiaXRzKSB8IHByb2R1Y3RbMF0pID4+IHNoaWZ0LAotICAgICAgICB9OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIC8vIGRpdmlkZSBwcm9kdWN0IC8gbQotICAgIGZvcihpbnQgaSA9IDM7IGkgPj0gMjsgLS1pKSB7Ci0gICAgICAgIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCB0ZW1wID0KLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChwcm9kdWN0W2ldKSA8PCBiaXRzIHwgcHJvZHVjdFtpIC0gMV07Ci0KLSAgICAgICAgZGlnaXRfdCBxID0gZGlnaXRfdCgocHJvZHVjdFtpXSA9PSBtX1sxXSkgPyBtYXNrIDogdGVtcCAvIG1fWzFdKTsKLQotICAgICAgICA6Om5kbmJvb3N0Ojp1aW50bWF4X3QgcmVtID0KLSAgICAgICAgICAgICgodGVtcCAtIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChxKSAqIG1fWzFdKSA8PCBiaXRzKSArIHByb2R1Y3RbaSAtIDJdOwotCi0gICAgICAgIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCBkaWZmID0gbV9bMF0gKiA6Om5kbmJvb3N0Ojp1aW50bWF4X3QocSk7Ci0KLSAgICAgICAgaW50IGVycm9yID0gMDsKLSAgICAgICAgaWYoZGlmZiA+IHJlbSkgewotICAgICAgICAgICAgaWYoZGlmZiAtIHJlbSA+IG0pIHsKLSAgICAgICAgICAgICAgICBlcnJvciA9IDI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVycm9yID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBxIC09IGVycm9yOwotICAgICAgICByZW0gPSByZW0gKyBlcnJvciAqIG0gLSBkaWZmOwotCi0gICAgICAgIHF1b3RpZW50W2kgLSAyXSA9IHE7Ci0gICAgICAgIHByb2R1Y3RbaV0gPSAwOwotICAgICAgICBwcm9kdWN0W2ktMV0gPSAocmVtID4+IGJpdHMpICYgbWFzazsKLSAgICAgICAgcHJvZHVjdFtpLTJdID0gcmVtICYgbWFzazsKLSAgICB9Ci0KLSAgICBkaXZfdCByZXN1bHQgPSB7Ci0gICAgICAgICgoOjpuZG5ib29zdDo6dWludG1heF90KHF1b3RpZW50WzFdKSA8PCBiaXRzKSB8IHF1b3RpZW50WzBdKSwKLSAgICAgICAgKCg6Om5kbmJvb3N0Ojp1aW50bWF4X3QocHJvZHVjdFsxXSkgPDwgYml0cykgfCBwcm9kdWN0WzBdKSA+PiBzaGlmdCwKLSAgICB9OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSBuZG5ib29zdDo6dWludG1heF90IG11bGRpdihuZG5ib29zdDo6dWludG1heF90IGEsIG5kbmJvb3N0Ojp1aW50bWF4X3QgYiwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBtKQoteyByZXR1cm4gZGV0YWlsOjptdWxkaXZtb2QoYSwgYiwgbSkucXVvdGllbnQ7IH0KLQotaW5saW5lIG5kbmJvb3N0Ojp1aW50bWF4X3QgbXVsbW9kKG5kbmJvb3N0Ojp1aW50bWF4X3QgYSwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBiLCBuZG5ib29zdDo6dWludG1heF90IG0pCi17IHJldHVybiBkZXRhaWw6Om11bGRpdm1vZChhLCBiLCBtKS5yZW1haW5kZXI7IH0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX0xBUkdFX0FSSVRITUVUSUNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvb3BlcmF0b3JzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGY0ODgxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDEwLTIwMTEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBvcGVyYXRvcnMuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX09QRVJBVE9SU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PUEVSQVRPUlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzEwKSAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoMHg1MTAwKSkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX09TVFJFQU1fT1BFUkFUT1Iob3MsIFQsIHQpICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBUJiB0KSB7ICAgICAgXAotICAgICAgICB0LnByaW50KG9zLCB0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gb3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHByaW50KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgVCYgdCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0lTVFJFQU1fT1BFUkFUT1IoaXMsIFQsIHQpICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBUJiB0KSB7ICAgICAgICAgICAgXAotICAgICAgICB0LnJlYWQoaXMsIHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gaXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJlYWQoc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBUJiB0KQotCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IoVCwgbGhzLCByaHMpICAgICAgICAgICAgICBcCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHJocykgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyByZXR1cm4gVDo6aXNfZXF1YWwoKnRoaXMsIHJocyk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIGJvb2wgaXNfZXF1YWwoY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMpCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTkVRVUFMSVRZX09QRVJBVE9SKFQpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgcmhzKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IHJldHVybiAhVDo6aXNfZXF1YWwoKnRoaXMsIHJocyk7IH0KLQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PU1RSRUFNX09QRVJBVE9SCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1NUUkVBTV9PUEVSQVRPUihvcywgVCwgdCkgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHQpCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0lTVFJFQU1fT1BFUkFUT1IKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SKGlzLCBULCB0KSAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgVCYgdCkKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9FUVVBTElUWV9PUEVSQVRPUihULCBsaHMsIHJocykgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzKQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTkVRVUFMSVRZX09QRVJBVE9SCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5FUVVBTElUWV9PUEVSQVRPUihUKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiBsaHMsIGNvbnN0IFQmIHJocykgICAgICAgICAgICAgICAgICBcCi0gICAgeyByZXR1cm4gIShsaHMgPT0gcmhzKTsgfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDdhODhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9wdHJfaGVscGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvcHRyX2hlbHBlci5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IHB0cl9oZWxwZXIuaHBwIDI0MDk2IDIwMDQtMDctMjcgMDM6NDM6MzRaIGRncmVnb3IgJAotICoKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfUFRSX0hFTFBFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9QVFJfSEVMUEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gdHlwZV90cmFpdHMgY291bGQgaGVscCBoZXJlLCBidXQgSSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiB0eXBlX3RyYWl0cy4KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcHRyX2hlbHBlcgotewotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgdHlwZWRlZiBUJiByZWZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBUJiBydmFsdWVfdHlwZTsKLSAgc3RhdGljIHJlZmVyZW5jZV90eXBlIHJlZihUJiByKSB7IHJldHVybiByOyB9Ci0gIHN0YXRpYyBjb25zdCBUJiByZWYoY29uc3QgVCYgcikgeyByZXR1cm4gcjsgfQotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHB0cl9oZWxwZXI8VCY+Ci17Ci0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIFQmIHJ2YWx1ZV90eXBlOwotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQmIHIpIHsgcmV0dXJuIHI7IH0KLSAgc3RhdGljIGNvbnN0IFQmIHJlZihjb25zdCBUJiByKSB7IHJldHVybiByOyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHB0cl9oZWxwZXI8VCo+Ci17Ci0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIFQqIHJ2YWx1ZV90eXBlOwotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQgKiBwKSB7IHJldHVybiAqcDsgfQotICBzdGF0aWMgY29uc3QgVCYgcmVmKGNvbnN0IFQgKiBwKSB7IHJldHVybiAqcDsgfQotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8KLS8vIE5ETkJPT1NUX1JBTkRPTV9QVFJfSEVMUEVSX1NQRUMgLS0KLS8vCi0vLyAgSGVscGVyIG1hY3JvIGZvciBicm9rZW4gY29tcGlsZXJzIGRlZmluZXMgc3BlY2lhbGl6YXRpb25zIG9mCi0vLyAgcHRyX2hlbHBlci4KLS8vCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyBkZWZpbmUgTkROQk9PU1RfUkFORE9NX1BUUl9IRUxQRVJfU1BFQyhUKSAgICAgICAgICAgICAgICBcCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgcmFuZG9tIHsgbmFtZXNwYWNlIGRldGFpbCB7IFwKLXRlbXBsYXRlPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHB0cl9oZWxwZXI8VCY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCYgcnZhbHVlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RhdGljIHJlZmVyZW5jZV90eXBlIHJlZihUJiByKSB7IHJldHVybiByOyB9ICAgICAgICAgXAotICBzdGF0aWMgY29uc3QgVCYgcmVmKGNvbnN0IFQmIHIpIHsgcmV0dXJuIHI7IH0gICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgcHRyX2hlbHBlcjxUKj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCYgcmVmZXJlbmNlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUKiBydmFsdWVfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQgKiBwKSB7IHJldHVybiAqcDsgfSAgICAgICBcCi0gIHN0YXRpYyBjb25zdCBUJiByZWYoY29uc3QgVCAqIHApIHsgcmV0dXJuICpwOyB9ICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfX19Ci0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfUkFORE9NX1BUUl9IRUxQRVJfU1BFQyhUKQotI2VuZGlmIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0RFVEFJTF9QVFJfSEVMUEVSX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjVhYzJiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL3NlZWQuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogc2VlZC5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gU3VuIHNlZW1zIHRvIGhhdmUgdHJvdWJsZSB3aXRoIHRoZSB1c2Ugb2YgU0ZJTkFFIGZvciB0aGUKLS8vIHRlbXBsYXRlZCBjb25zdHJ1Y3Rvci4gIFNvIGRvZXMgQm9ybGFuZC4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGRpc2FibGVfc2VlZCA6IG5kbmJvb3N0OjpkaXNhYmxlX2lmPG5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+ID4ge307Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgVD4KLXN0cnVjdCBkaXNhYmxlX2NvbnN0cnVjdG9yIDogZGlzYWJsZV9zZWVkPFQ+IHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci1zdHJ1Y3QgZGlzYWJsZV9jb25zdHJ1Y3RvcjxFbmdpbmUsIEVuZ2luZT4ge307Ci0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQ09OU1RSVUNUT1IoU2VsZiwgR2VuZXJhdG9yLCBnZW4pIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCBTZWxmKEdlbmVyYXRvciYgZ2VuLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9jb25zdHJ1Y3RvcjxTZWxmLCBHZW5lcmF0b3I+Ojp0eXBlKiA9IDApCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfU0VFRChTZWxmLCBHZW5lcmF0b3IsIGdlbikgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzZWVkKEdlbmVyYXRvciYgZ2VuLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9zZWVkPEdlbmVyYXRvcj46OnR5cGUqID0gMCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX0NPTlNUUlVDVE9SKFNlbGYsIFNlZWRTZXEsIHNlcSkgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IFNlbGYoU2VlZFNlcSYgc2VxLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9jb25zdHJ1Y3RvcjxTZWxmLCBTZWVkU2VxPjo6dHlwZSogPSAwKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfU0VFRChTZWxmLCBTZWVkU2VxLCBzZXEpICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHNlZWQoU2VlZFNlcSYgc2VxLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9zZWVkPFNlZWRTZXE+Ojp0eXBlKiA9IDApCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX0NPTlNUUlVDVE9SKFNlbGYsIFQsIHgpICBcCi0gICAgZXhwbGljaXQgU2VsZihjb25zdCBUJiB4KQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19TRUVEKFNlbGYsIFQsIHgpIFwKLSAgICB2b2lkIHNlZWQoY29uc3QgVCYgeCkKLX0KLX0KLX0KLQotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9DT05TVFJVQ1RPUihTZWxmLCBHZW5lcmF0b3IsIGdlbikgXAotICAgIFNlbGYoU2VsZiYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFNlbGYoY29uc3QgU2VsZiYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IFNlbGYoR2VuZXJhdG9yJiBnZW4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbChnZW4sIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8R2VuZXJhdG9yPigpKTtcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbChHZW5lcmF0b3ImIGdlbiwgOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfU0VFRChTZWxmLCBHZW5lcmF0b3IsIGdlbikgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzZWVkKEdlbmVyYXRvciYgZ2VuKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChnZW4sIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8R2VuZXJhdG9yPigpKTtcCi0gICAgfVwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+XAotICAgIHZvaWQgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChHZW5lcmF0b3ImIGdlbiwgOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9DT05TVFJVQ1RPUihTZWxmLCBTZWVkU2VxLCBzZXEpICAgIFwKLSAgICBTZWxmKFNlbGYmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBTZWxmKGNvbnN0IFNlbGYmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCBTZWxmKFNlZWRTZXEmIHNlcSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoc2VxLCA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFNlZWRTZXE+KCkpO1wKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKFNlZWRTZXEmIHNlcSwgOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9TRUVEKFNlbGYsIFNlZWRTZXEsIHNlcSkgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHNlZWQoU2VlZFNlcSYgc2VxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChzZXEsIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8U2VlZFNlcT4oKSk7IFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoU2VlZFNlcSYgc2VxLCA6Om5kbmJvb3N0OjptcGw6OmZhbHNlXykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfQ09OU1RSVUNUT1IoU2VsZiwgVCwgeCkgIFwKLSAgICBleHBsaWNpdCBTZWxmKGNvbnN0IFQmIHgpIHsgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoeCwgOjpuZG5ib29zdDo6bXBsOjp0cnVlXygpKTsgfVwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKGNvbnN0IFQmIHgsIDo6bmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX1NFRUQoU2VsZiwgVCwgeCkgXAotICAgIHZvaWQgc2VlZChjb25zdCBUJiB4KSB7IGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoeCwgOjpuZG5ib29zdDo6bXBsOjp0cnVlXygpKTsgfVwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoY29uc3QgVCYgeCwgOjpuZG5ib29zdDo6bXBsOjp0cnVlXykKLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE4NGVkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL3NlZWQuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogc2VlZF9pbXBsLmhwcCA3Mjk1MSAyMDExLTA3LTA3IDA0OjU3OjM3WiBzdGV2ZW5fd2F0YW5hYmUgJAotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX0lNUExfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9JTVBMX0hQUAotCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19sb2cyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBmaW5kcyB0aGUgc2VlZCB0eXBlIG9mIGFuIGVuZ2luZSwgZ2l2ZW4gaXRzCi0vLyByZXN1bHRfdHlwZS4gIElmIHRoZSByZXN1bHRfdHlwZSBpcyBpbnRlZ3JhbAotLy8gdGhlIHNlZWQgdHlwZSBpcyB0aGUgc2FtZS4gIElmIHRoZSByZXN1bHRfdHlwZQotLy8gaXMgZmxvYXRpbmcgcG9pbnQsIHRoZSBzZWVkIHR5cGUgaXMgdWludDMyX3QKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc2VlZF90eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjppZl88bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+LAotICAgICAgICBULAotICAgICAgICBuZG5ib29zdDo6dWludDMyX3QKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgTj4KLXN0cnVjdCBjb25zdF9wb3dfaW1wbAotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RhdGljIFQgY2FsbChUIGFyZywgaW50IG4sIFQgcmVzdWx0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X3Bvd19pbXBsPE4gLyAyPjo6Y2FsbChhcmcgKiBhcmcsIG4gLyAyLAotICAgICAgICAgICAgbiUyID09IDA/IHJlc3VsdCA6IHJlc3VsdCAqIGFyZyk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNvbnN0X3Bvd19pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdGF0aWMgVCBjYWxsKFQsIGludCwgVCByZXN1bHQpCi0gICAgewotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLX07Ci0KLS8vIHJlcXVpcmVzIE4gaXMgYW4gdXBwZXIgYm91bmQgb24gbgotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+Ci1pbmxpbmUgVCBjb25zdF9wb3coVCBhcmcsIGludCBuKSB7IHJldHVybiBjb25zdF9wb3dfaW1wbDxOPjo6Y2FsbChhcmcsIG4sIFQoMSkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgVCBwb3cyKGludCBuKQotewotICAgIHR5cGVkZWYgdW5zaWduZWQgaW50X3R5cGU7Ci0gICAgY29uc3QgaW50IG1heF9iaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnRfdHlwZT46OmRpZ2l0czsKLSAgICBUIG11bHRpcGxpZXIgPSBUKGludF90eXBlKDEpIDw8IChtYXhfYml0cyAtIDEpKSAqIDI7Ci0gICAgcmV0dXJuIChpbnRfdHlwZSgxKSA8PCAobiAlIG1heF9iaXRzKSkgKgotICAgICAgICBjb25zdF9wb3c8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIC8gbWF4X2JpdHM+KG11bHRpcGxpZXIsIG4gLyBtYXhfYml0cyk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGVfZnJvbV9yZWFsKEVuZ2luZSYgZW5nLCBJdGVyIGJlZ2luLCBJdGVyIGVuZCkKLXsKLSAgICB1c2luZyBzdGQ6OmZtb2Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIFJlYWxUeXBlOwotICAgIGNvbnN0IGludCBCaXRzID0gZGV0YWlsOjpnZW5lcmF0b3JfYml0czxFbmdpbmU+Ojp2YWx1ZSgpOwotICAgIGludCByZW1haW5pbmdfYml0cyA9IDA7Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHNhdmVkX2JpdHMgPSAwOwotICAgIFJlYWxUeXBlIG11bHRpcGxpZXIgPSBwb3cyPFJlYWxUeXBlPiggQml0cyk7Ci0gICAgUmVhbFR5cGUgbXVsdDMyID0gUmVhbFR5cGUoNDI5NDk2NzI5Ni4wKTsgLy8gMl4zMgotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgUmVhbFR5cGUgdmFsID0gZW5nKCkgKiBtdWx0aXBsaWVyOwotICAgICAgICBpbnQgYXZhaWxhYmxlX2JpdHMgPSBCaXRzOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSB0aGlzIG91dAotICAgICAgICAvLyBpZiBpdCBpc24ndCBwb3NzaWJsZS4KLSAgICAgICAgaWYoQml0cyA8IDMyICYmIGF2YWlsYWJsZV9iaXRzIDwgMzIgLSByZW1haW5pbmdfYml0cykgewotICAgICAgICAgICAgc2F2ZWRfYml0cyB8PSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSA8PCByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzICs9IEJpdHM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJZiBCaXRzIDwgMzIsIHRoZW4gcmVtYWluaW5nX2JpdHMgIT0gMCwgc2luY2UKLSAgICAgICAgICAgIC8vIGlmIHJlbWFpbmluZ19iaXRzID09IDAsIGF2YWlsYWJsZV9iaXRzIDwgMzIgLSAwLAotICAgICAgICAgICAgLy8gYW5kIHdlIHdvbid0IGdldCBoZXJlIHRvIGJlZ2luIHdpdGguCi0gICAgICAgICAgICBpZihCaXRzIDwgMzIgfHwgcmVtYWluaW5nX2JpdHMgIT0gMCkgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBkaXZpc29yID0KLSAgICAgICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCgxKSA8PCAoMzIgLSByZW1haW5pbmdfYml0cykpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBleHRyYV9iaXRzID0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KGZtb2QodmFsLCBtdWx0MzIpKSAmIChkaXZpc29yIC0gMSk7Ci0gICAgICAgICAgICAgICAgdmFsID0gdmFsIC8gZGl2aXNvcjsKLSAgICAgICAgICAgICAgICAqYmVnaW4rKyA9IHNhdmVkX2JpdHMgfCAoZXh0cmFfYml0cyA8PCByZW1haW5pbmdfYml0cyk7Ci0gICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgYXZhaWxhYmxlX2JpdHMgLT0gMzIgLSByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgICAgICByZW1haW5pbmdfYml0cyA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBJZiBCaXRzIDwgMzIgd2Ugc2hvdWxkIG5ldmVyIGVudGVyIHRoaXMgbG9vcAotICAgICAgICAgICAgaWYoQml0cyA+PSAzMikgewotICAgICAgICAgICAgICAgIGZvcig7IGF2YWlsYWJsZV9iaXRzID49IDMyOyBhdmFpbGFibGVfYml0cyAtPSAzMikgewotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgd29yZCA9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdChmbW9kKHZhbCwgbXVsdDMyKSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbCAvPSBtdWx0MzI7Ci0gICAgICAgICAgICAgICAgICAgICpiZWdpbisrID0gd29yZDsKLSAgICAgICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgPSBhdmFpbGFibGVfYml0czsKLSAgICAgICAgICAgIHNhdmVkX2JpdHMgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludF9sZWFzdDMyX3Q+KHZhbCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGVfZnJvbV9pbnQoRW5naW5lJiBlbmcsIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBJbnRUeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8SW50VHlwZT46OnR5cGUgdW5zaWduZWRfdHlwZTsKLSAgICBpbnQgcmVtYWluaW5nX2JpdHMgPSAwOwotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBzYXZlZF9iaXRzID0gMDsKLSAgICB1bnNpZ25lZF90eXBlIHJhbmdlID0gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxJbnRUeXBlPigpKChlbmcubWF4KSgpLCAoZW5nLm1pbikoKSk7Ci0KLSAgICBpbnQgYml0cyA9Ci0gICAgICAgIChyYW5nZSA9PSAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZF90eXBlPjo6bWF4KSgpKSA/Ci0gICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+OjpkaWdpdHMgOgotICAgICAgICAgICAgZGV0YWlsOjppbnRlZ2VyX2xvZzIocmFuZ2UgKyAxKTsKLQotICAgIHsKLSAgICAgICAgaW50IGRpc2NhcmRlZF9iaXRzID0gZGV0YWlsOjppbnRlZ2VyX2xvZzIoYml0cyk7Ci0gICAgICAgIHVuc2lnbmVkX3R5cGUgZXhjZXNzID0gKHJhbmdlICsgMSkgPj4gKGJpdHMgLSBkaXNjYXJkZWRfYml0cyk7Ci0gICAgICAgIGlmKGV4Y2VzcyAhPSAwKSB7Ci0gICAgICAgICAgICBpbnQgZXh0cmFfYml0cyA9IGRldGFpbDo6aW50ZWdlcl9sb2cyKChleGNlc3MgLSAxKSBeIGV4Y2Vzcyk7Ci0gICAgICAgICAgICBiaXRzID0gYml0cyAtIGRpc2NhcmRlZF9iaXRzICsgZXh0cmFfYml0czsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHVuc2lnbmVkX3R5cGUgbWFzayA9IChzdGF0aWNfY2FzdDx1bnNpZ25lZF90eXBlPigyKSA8PCAoYml0cyAtIDEpKSAtIDE7Ci0gICAgdW5zaWduZWRfdHlwZSBsaW1pdCA9ICgocmFuZ2UgKyAxKSAmIH5tYXNrKSAtIDE7Ci0KLSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgIHVuc2lnbmVkX3R5cGUgdmFsOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICB2YWwgPSBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PEludFR5cGU+KCkoZW5nKCksIChlbmcubWluKSgpKTsKLSAgICAgICAgfSB3aGlsZShsaW1pdCAhPSByYW5nZSAmJiB2YWwgPiBsaW1pdCk7Ci0gICAgICAgIHZhbCAmPSBtYXNrOwotICAgICAgICBpbnQgYXZhaWxhYmxlX2JpdHMgPSBiaXRzOwotICAgICAgICBpZihhdmFpbGFibGVfYml0cyA9PSAzMikgewotICAgICAgICAgICAgKmJlZ2luKysgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludF9sZWFzdDMyX3Q+KHZhbCkgJiAweEZGRkZGRkZGdTsKLSAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYoYXZhaWxhYmxlX2JpdHMgJSAzMiA9PSAwKSB7Ci0gICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgYXZhaWxhYmxlX2JpdHMgLyAzMjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHdvcmQgPSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSAmIDB4RkZGRkZGRkZ1OwotICAgICAgICAgICAgICAgIGludCBzdXByZXNzX3dhcm5pbmcgPSAoYml0cyA+PSAzMik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZyA9PSAxKTsKLSAgICAgICAgICAgICAgICB2YWwgPj49ICgzMiAqIHN1cHJlc3Nfd2FybmluZyk7Ci0gICAgICAgICAgICAgICAgKmJlZ2luKysgPSB3b3JkOwotICAgICAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYoYml0cyA8IDMyICYmIGF2YWlsYWJsZV9iaXRzIDwgMzIgLSByZW1haW5pbmdfYml0cykgewotICAgICAgICAgICAgc2F2ZWRfYml0cyB8PSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSA8PCByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzICs9IGJpdHM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZihiaXRzIDwgMzIgfHwgcmVtYWluaW5nX2JpdHMgIT0gMCkgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBleHRyYV9iaXRzID0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KHZhbCkgJiAoKG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCgxKSA8PCAoMzIgLSByZW1haW5pbmdfYml0cykpIC0gMSk7Ci0gICAgICAgICAgICAgICAgdmFsID4+PSAzMiAtIHJlbWFpbmluZ19iaXRzOwotICAgICAgICAgICAgICAgICpiZWdpbisrID0gc2F2ZWRfYml0cyB8IChleHRyYV9iaXRzIDw8IHJlbWFpbmluZ19iaXRzKTsKLSAgICAgICAgICAgICAgICBpZihiZWdpbiA9PSBlbmQpIHJldHVybjsKLSAgICAgICAgICAgICAgICBhdmFpbGFibGVfYml0cyAtPSAzMiAtIHJlbWFpbmluZ19iaXRzOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKGJpdHMgPj0gMzIpIHsKLSAgICAgICAgICAgICAgICBmb3IoOyBhdmFpbGFibGVfYml0cyA+PSAzMjsgYXZhaWxhYmxlX2JpdHMgLT0gMzIpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHdvcmQgPSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSAmIDB4RkZGRkZGRkZ1OwotICAgICAgICAgICAgICAgICAgICBpbnQgc3VwcmVzc193YXJuaW5nID0gKGJpdHMgPj0gMzIpOwotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoc3VwcmVzc193YXJuaW5nID09IDEpOwotICAgICAgICAgICAgICAgICAgICB2YWwgPj49ICgzMiAqIHN1cHJlc3Nfd2FybmluZyk7Ci0gICAgICAgICAgICAgICAgICAgICpiZWdpbisrID0gd29yZDsKLSAgICAgICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgPSBhdmFpbGFibGVfYml0czsKLSAgICAgICAgICAgIHNhdmVkX2JpdHMgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludF9sZWFzdDMyX3Q+KHZhbCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGVfaW1wbChFbmdpbmUmIGVuZywgSXRlciBmaXJzdCwgSXRlciBsYXN0LCBuZG5ib29zdDo6bXBsOjp0cnVlXykKLXsKLSAgICByZXR1cm4gZGV0YWlsOjpnZW5lcmF0ZV9mcm9tX2ludChlbmcsIGZpcnN0LCBsYXN0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lLCBjbGFzcyBJdGVyPgotdm9pZCBnZW5lcmF0ZV9pbXBsKEVuZ2luZSYgZW5nLCBJdGVyIGZpcnN0LCBJdGVyIGxhc3QsIG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLXsKLSAgICByZXR1cm4gZGV0YWlsOjpnZW5lcmF0ZV9mcm9tX3JlYWwoZW5nLCBmaXJzdCwgbGFzdCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGUoRW5naW5lJiBlbmcsIEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCkKLXsKLSAgICByZXR1cm4gZGV0YWlsOjpnZW5lcmF0ZV9pbXBsKGVuZywgZmlyc3QsIGxhc3QsIG5kbmJvb3N0Ojppc19pbnRlZ3JhbDx0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlPigpKTsKLX0KLQotCi0KLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgbSwgY2xhc3MgU2VlZFNlcT4KLUludFR5cGUgc2VlZF9vbmVfaW50KFNlZWRTZXEmIHNlcSkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IGxvZyA9IDo6bmRuYm9vc3Q6Om1wbDo6aWZfYzwobSA9PSAwKSwKLSAgICAgICAgOjpuZG5ib29zdDo6bXBsOjppbnRfPCg6OnN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46OmRpZ2l0cyk+LAotICAgICAgICA6Om5kbmJvb3N0OjpzdGF0aWNfbG9nMjxtPiA+Ojp0eXBlOjp2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3QgaW50IGsgPQotICAgICAgICAobG9nICsgKCh+KHN0YXRpY19jYXN0PEludFR5cGU+KDIpIDw8IChsb2cgLSAxKSkgJiBtKT8gMzIgOiAzMSkpIC8gMzI7Ci0gICAgOjpuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgYXJyYXlbbG9nIC8gMzIgKyA0XTsKLSAgICBzZXEuZ2VuZXJhdGUoJmFycmF5WzBdLCAmYXJyYXlbMF0gKyBrICsgMyk7Ci0gICAgSW50VHlwZSBzID0gMDsKLSAgICBmb3IoaW50IGogPSAwOyBqIDwgazsgKytqKSB7Ci0gICAgICAgIEludFR5cGUgZGlnaXQgPSBjb25zdF9tb2Q8SW50VHlwZSwgbT46OmFwcGx5KEludFR5cGUoYXJyYXlbaiszXSkpOwotICAgICAgICBJbnRUeXBlIG11bHQgPSBJbnRUeXBlKDEpIDw8IDMyKmo7Ci0gICAgICAgIHMgPSBjb25zdF9tb2Q8SW50VHlwZSwgbT46Om11bHRfYWRkKG11bHQsIGRpZ2l0LCBzKTsKLSAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgbSwgY2xhc3MgSXRlcj4KLUludFR5cGUgZ2V0X29uZV9pbnQoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IGxvZyA9IDo6bmRuYm9vc3Q6Om1wbDo6aWZfYzwobSA9PSAwKSwKLSAgICAgICAgOjpuZG5ib29zdDo6bXBsOjppbnRfPCg6OnN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46OmRpZ2l0cyk+LAotICAgICAgICA6Om5kbmJvb3N0OjpzdGF0aWNfbG9nMjxtPiA+Ojp0eXBlOjp2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3QgaW50IGsgPQotICAgICAgICAobG9nICsgKCh+KHN0YXRpY19jYXN0PEludFR5cGU+KDIpIDw8IChsb2cgLSAxKSkgJiBtKT8gMzIgOiAzMSkpIC8gMzI7Ci0gICAgSW50VHlwZSBzID0gMDsKLSAgICBmb3IoaW50IGogPSAwOyBqIDwgazsgKytqKSB7Ci0gICAgICAgIGlmKGZpcnN0ID09IGxhc3QpIHsKLSAgICAgICAgICAgIHRocm93IDo6c3RkOjppbnZhbGlkX2FyZ3VtZW50KCJOb3QgZW5vdWdoIGVsZW1lbnRzIGluIGNhbGwgdG8gc2VlZC4iKTsKLSAgICAgICAgfQotICAgICAgICBJbnRUeXBlIGRpZ2l0ID0gY29uc3RfbW9kPEludFR5cGUsIG0+OjphcHBseShJbnRUeXBlKCpmaXJzdCsrKSk7Ci0gICAgICAgIEludFR5cGUgbXVsdCA9IEludFR5cGUoMSkgPDwgMzIqajsKLSAgICAgICAgcyA9IGNvbnN0X21vZDxJbnRUeXBlLCBtPjo6bXVsdF9hZGQobXVsdCwgZGlnaXQsIHMpOwotICAgIH0KLSAgICByZXR1cm4gczsKLX0KLQotLy8gVE9ETzogd29yayBpbi1wbGFjZSB3aGVuZXZlciBwb3NzaWJsZQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIFVJbnRUeXBlPgotdm9pZCBzZWVkX2FycmF5X2ludF9pbXBsKFNlZWRTZXEmIHNlcSwgVUludFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgc3RvcmFnZVsoKHcrMzEpLzMyKSAqIG5dOwotICAgIHNlcS5nZW5lcmF0ZSgmc3RvcmFnZVswXSwgJnN0b3JhZ2VbMF0gKyAoKHcrMzEpLzMyKSAqIG4pOwotICAgIGZvcihzdGQ6OnNpemVfdCBqID0gMDsgaiA8IG47IGorKykgewotICAgICAgICBVSW50VHlwZSB2YWwgPSAwOwotICAgICAgICBmb3Ioc3RkOjpzaXplX3QgayA9IDA7IGsgPCAodyszMSkvMzI7ICsraykgewotICAgICAgICAgICAgdmFsICs9IHN0YXRpY19jYXN0PFVJbnRUeXBlPihzdG9yYWdlWyh3KzMxKS8zMipqICsga10pIDw8IDMyKms7Ci0gICAgICAgIH0KLSAgICAgICAgeFtqXSA9IHZhbCAmIDo6bmRuYm9vc3Q6Omxvd19iaXRzX21hc2tfdDx3Pjo6c2lnX2JpdHM7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgU2VlZFNlcSwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIHNlZWRfYXJyYXlfaW50X2ltcGwoU2VlZFNlcSYgc2VxLCBJbnRUeXBlICgmeClbbl0sIG5kbmJvb3N0OjptcGw6OnRydWVfKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8SW50VHlwZT46OnR5cGUgdW5zaWduZWRfYXJyYXlbbl07Ci0gICAgc2VlZF9hcnJheV9pbnRfaW1wbDx3PihzZXEsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWRfYXJyYXkmPih4KSk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBTZWVkU2VxLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgc2VlZF9hcnJheV9pbnRfaW1wbChTZWVkU2VxJiBzZXEsIEludFR5cGUgKCZ4KVtuXSwgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotewotICAgIHNlZWRfYXJyYXlfaW50X2ltcGw8dz4oc2VxLCB4KTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBzZWVkX2FycmF5X2ludChTZWVkU2VxJiBzZXEsIEludFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBzZWVkX2FycmF5X2ludF9pbXBsPHc+KHNlcSwgeCwgbmRuYm9vc3Q6OmlzX3NpZ25lZDxJbnRUeXBlPigpKTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGNsYXNzIFVJbnRUeXBlPgotdm9pZCBmaWxsX2FycmF5X2ludF9pbXBsKEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QsIFVJbnRUeXBlICgmeClbbl0pCi17Ci0gICAgZm9yKHN0ZDo6c2l6ZV90IGogPSAwOyBqIDwgbjsgaisrKSB7Ci0gICAgICAgIFVJbnRUeXBlIHZhbCA9IDA7Ci0gICAgICAgIGZvcihzdGQ6OnNpemVfdCBrID0gMDsgayA8ICh3KzMxKS8zMjsgKytrKSB7Ci0gICAgICAgICAgICBpZihmaXJzdCA9PSBsYXN0KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgc3RkOjppbnZhbGlkX2FyZ3VtZW50KCJOb3QgZW5vdWdoIGVsZW1lbnRzIGluIGNhbGwgdG8gc2VlZC4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhbCArPSBzdGF0aWNfY2FzdDxVSW50VHlwZT4oKmZpcnN0KyspIDw8IDMyKms7Ci0gICAgICAgIH0KLSAgICAgICAgeFtqXSA9IHZhbCAmIDo6bmRuYm9vc3Q6Omxvd19iaXRzX21hc2tfdDx3Pjo6c2lnX2JpdHM7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlciwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIGZpbGxfYXJyYXlfaW50X2ltcGwoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCwgSW50VHlwZSAoJngpW25dLCBuZG5ib29zdDo6bXBsOjp0cnVlXykKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPEludFR5cGU+Ojp0eXBlIHVuc2lnbmVkX2FycmF5W25dOwotICAgIGZpbGxfYXJyYXlfaW50X2ltcGw8dz4oZmlyc3QsIGxhc3QsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWRfYXJyYXkmPih4KSk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgZmlsbF9hcnJheV9pbnRfaW1wbChJdGVyJiBmaXJzdCwgSXRlciBsYXN0LCBJbnRUeXBlICgmeClbbl0sIG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLXsKLSAgICBmaWxsX2FycmF5X2ludF9pbXBsPHc+KGZpcnN0LCBsYXN0LCB4KTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBmaWxsX2FycmF5X2ludChJdGVyJiBmaXJzdCwgSXRlciBsYXN0LCBJbnRUeXBlICgmeClbbl0pCi17Ci0gICAgZmlsbF9hcnJheV9pbnRfaW1wbDx3PihmaXJzdCwgbGFzdCwgeCwgbmRuYm9vc3Q6OmlzX3NpZ25lZDxJbnRUeXBlPigpKTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFJlYWxUeXBlPgotdm9pZCBzZWVkX2FycmF5X3JlYWxfaW1wbChjb25zdCBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QqIHN0b3JhZ2UsIFJlYWxUeXBlICgmeClbbl0pCi17Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IG1hc2sgPSB+KCh+bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KDApKSA8PCAodyUzMikpOwotICAgIFJlYWxUeXBlIHR3bzMyID0gNDI5NDk2NzI5Ni4wOwotICAgIGNvbnN0IFJlYWxUeXBlIGRpdmlzb3IgPSBSZWFsVHlwZSgxKS9kZXRhaWw6OnBvdzI8UmVhbFR5cGU+KHcpOwotICAgIHVuc2lnbmVkIGludCBqOwotICAgIGZvcihqID0gMDsgaiA8IG47ICsraikgewotICAgICAgICBSZWFsVHlwZSB2YWwgPSBSZWFsVHlwZSgwKTsKLSAgICAgICAgUmVhbFR5cGUgbXVsdCA9IGRpdmlzb3I7Ci0gICAgICAgIGZvcihpbnQgayA9IDA7IGsgPCB3LzMyOyArK2spIHsKLSAgICAgICAgICAgIHZhbCArPSAqc3RvcmFnZSsrICogbXVsdDsKLSAgICAgICAgICAgIG11bHQgKj0gdHdvMzI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYobWFzayAhPSAwKSB7Ci0gICAgICAgICAgICB2YWwgKz0gKCpzdG9yYWdlKysgJiBtYXNrKSAqIG11bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHZhbCA+PSAwKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHZhbCA8IDEpOwotICAgICAgICB4W2pdID0gdmFsOwotICAgIH0KLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIFJlYWxUeXBlPgotdm9pZCBzZWVkX2FycmF5X3JlYWwoU2VlZFNlcSYgc2VxLCBSZWFsVHlwZSAoJngpW25dKQotewotICAgIHVzaW5nIHN0ZDo6cG93OwotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBzdG9yYWdlWygodyszMSkvMzIpICogbl07Ci0gICAgc2VxLmdlbmVyYXRlKCZzdG9yYWdlWzBdLCAmc3RvcmFnZVswXSArICgodyszMSkvMzIpICogbik7Ci0gICAgc2VlZF9hcnJheV9yZWFsX2ltcGw8dz4oc3RvcmFnZSwgeCk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBjbGFzcyBSZWFsVHlwZT4KLXZvaWQgZmlsbF9hcnJheV9yZWFsKEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QsIFJlYWxUeXBlICgmeClbbl0pCi17Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IG1hc2sgPSB+KCh+bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KDApKSA8PCAodyUzMikpOwotICAgIFJlYWxUeXBlIHR3bzMyID0gNDI5NDk2NzI5Ni4wOwotICAgIGNvbnN0IFJlYWxUeXBlIGRpdmlzb3IgPSBSZWFsVHlwZSgxKS9kZXRhaWw6OnBvdzI8UmVhbFR5cGU+KHcpOwotICAgIHVuc2lnbmVkIGludCBqOwotICAgIGZvcihqID0gMDsgaiA8IG47ICsraikgewotICAgICAgICBSZWFsVHlwZSB2YWwgPSBSZWFsVHlwZSgwKTsKLSAgICAgICAgUmVhbFR5cGUgbXVsdCA9IGRpdmlzb3I7Ci0gICAgICAgIGZvcihpbnQgayA9IDA7IGsgPCB3LzMyOyArK2ssICsrZmlyc3QpIHsKLSAgICAgICAgICAgIGlmKGZpcnN0ID09IGxhc3QpIHRocm93IHN0ZDo6aW52YWxpZF9hcmd1bWVudCgiTm90IGVub3VnaCBlbGVtZW50cyBpbiBjYWxsIHRvIHNlZWQuIik7Ci0gICAgICAgICAgICB2YWwgKz0gKmZpcnN0ICogbXVsdDsKLSAgICAgICAgICAgIG11bHQgKj0gdHdvMzI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYobWFzayAhPSAwKSB7Ci0gICAgICAgICAgICBpZihmaXJzdCA9PSBsYXN0KSB0aHJvdyBzdGQ6OmludmFsaWRfYXJndW1lbnQoIk5vdCBlbm91Z2ggZWxlbWVudHMgaW4gY2FsbCB0byBzZWVkLiIpOwotICAgICAgICAgICAgdmFsICs9ICgqZmlyc3QgJiBtYXNrKSAqIG11bHQ7Ci0gICAgICAgICAgICArK2ZpcnN0OwotICAgICAgICB9Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCh2YWwgPj0gMCk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCh2YWwgPCAxKTsKLSAgICAgICAgeFtqXSA9IHZhbDsKLSAgICB9Ci19Ci0KLX0KLX0KLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmNiMWI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDYKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX1NJR05FRF9VTlNJR05FRF9UT09MUwotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NJR05FRF9VTlNJR05FRF9UT09MUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotCi0vKgotICogQ29tcHV0ZSB4IC0geSwgd2Uga25vdyB0aGF0IHggPj0geSwgcmV0dXJuIGFuIHVuc2lnbmVkIHZhbHVlLgotICovCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGJvb2wgc2duID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkPgotc3RydWN0IHN1YnRyYWN0IHsgfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBzdWJ0cmFjdDxULCAvKiBzaWduZWQgKi8gZmFsc2U+Ci17Ci0gIHR5cGVkZWYgVCByZXN1bHRfdHlwZTsKLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShUIHgsIFQgeSkgeyByZXR1cm4geCAtIHk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc3VidHJhY3Q8VCwgLyogc2lnbmVkICovIHRydWU+Ci17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShUIHgsIFQgeSkKLSAgewotICAgIGlmICh5ID49IDApICAgLy8gYmVjYXVzZSB4ID49IHksIGl0IGZvbGxvd3MgdGhhdCB4ID49IDAsIHRvbwotICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKHgpIC0gcmVzdWx0X3R5cGUoeSk7Ci0gICAgaWYgKHggPj0gMCkgICAvLyB5IDwgMAotICAgICAgLy8gYXZvaWQgdGhlIG5hc3R5IHR3bydzIGNvbXBsZW1lbnQgY2FzZSBmb3IgeSA9PSBtaW4oKQotICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKHgpICsgcmVzdWx0X3R5cGUoLSh5KzEpKSArIDE7Ci0gICAgLy8gYm90aCB4IGFuZCB5IGFyZSBuZWdhdGl2ZTogbm8gc2lnbmVkIG92ZXJmbG93Ci0gICAgcmV0dXJuIHJlc3VsdF90eXBlKHggLSB5KTsKLSAgfQotfTsKLQotLyoKLSAqIENvbXB1dGUgeCArIHksIHggaXMgdW5zaWduZWQsIHJlc3VsdCBmaXRzIGluIHR5cGUgb2YgInkiLgotICovCi0KLXRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgYm9vbCBzZ24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQyPjo6aXNfc2lnbmVkPgotc3RydWN0IGFkZCB7IH07Ci0KLXRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KLXN0cnVjdCBhZGQ8VDEsIFQyLCAvKiBzaWduZWQgKi8gZmFsc2U+Ci17Ci0gIHR5cGVkZWYgVDIgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVDEgeCwgVDIgeSkgeyByZXR1cm4gVDIoeCkgKyB5OyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+Ci1zdHJ1Y3QgYWRkPFQxLCBUMiwgLyogc2lnbmVkICovIHRydWU+Ci17Ci0gIHR5cGVkZWYgVDIgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVDEgeCwgVDIgeSkKLSAgewotICAgIGlmICh5ID49IDApCi0gICAgICByZXR1cm4gVDIoeCkgKyB5OwotICAgIC8vIHkgPCAwCi0gICAgaWYgKHggPiBUMSgtKHkrMSkpKSAgLy8gcmVzdWx0ID49IDAgYWZ0ZXIgc3VidHJhY3Rpb24KLSAgICAgIC8vIGF2b2lkIHRoZSBuYXN0eSB0d28ncyBjb21wbGVtZW50IGVkZ2UgY2FzZSBmb3IgeSA9PSBtaW4oKQotICAgICAgcmV0dXJuIFQyKHggLSBUMSgtKHkrMSkpIC0gMSk7Ci0gICAgLy8gYWJzKHgpIDwgYWJzKHkpLCB0aHVzIFQyIGFibGUgdG8gcmVwcmVzZW50IHgKLSAgICByZXR1cm4gVDIoeCkgKyB5OwotICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0lHTkVEX1VOU0lHTkVEX1RPT0xTCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vbGluZWFyX2NvbmdydWVudGlhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0YzY5ZDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vbGluZWFyX2NvbmdydWVudGlhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDAtMjAwMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGxpbmVhcl9jb25ncnVlbnRpYWwuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICogUmV2aXNpb24gaGlzdG9yeQotICogIDIwMDEtMDItMTggIG1vdmVkIHRvIGluZGl2aWR1YWwgaGVhZGVyIGZpbGVzCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fTElORUFSX0NPTkdSVUVOVElBTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0xJTkVBUl9DT05HUlVFTlRJQUxfSFBQCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbG9nMi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLQotLyoqCi0gKiBJbnN0YW50aWF0aW9ucyBvZiBjbGFzcyB0ZW1wbGF0ZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSBtb2RlbCBhCi0gKiBccHNldWRvX3JhbmRvbV9udW1iZXJfZ2VuZXJhdG9yLiBMaW5lYXIgY29uZ3J1ZW50aWFsIHBzZXVkby1yYW5kb20KLSAqIG51bWJlciBnZW5lcmF0b3JzIGFyZSBkZXNjcmliZWQgaW46Ci0gKgotICogIEBibG9ja3F1b3RlCi0gKiAgIk1hdGhlbWF0aWNhbCBtZXRob2RzIGluIGxhcmdlLXNjYWxlIGNvbXB1dGluZyB1bml0cyIsIEQuIEguIExlaG1lciwKLSAqICBQcm9jLiAybmQgU3ltcG9zaXVtIG9uIExhcmdlLVNjYWxlIERpZ2l0YWwgQ2FsY3VsYXRpbmcgTWFjaGluZXMsCi0gKiAgSGFydmFyZCBVbml2ZXJzaXR5IFByZXNzLCAxOTUxLCBwcC4gMTQxLTE0NgotICogIEBlbmRibG9ja3F1b3RlCi0gKgotICogTGV0IHgobikgZGVub3RlIHRoZSBzZXF1ZW5jZSBvZiBudW1iZXJzIHJldHVybmVkIGJ5IHNvbWUgcHNldWRvLXJhbmRvbQotICogbnVtYmVyIGdlbmVyYXRvci4gVGhlbiBmb3IgdGhlIGxpbmVhciBjb25ncnVlbnRpYWwgZ2VuZXJhdG9yLAotICogeChuKzEpIDo9IChhICogeChuKSArIGMpIG1vZCBtLiBQYXJhbWV0ZXJzIGZvciB0aGUgZ2VuZXJhdG9yIGFyZQotICogeCgwKSwgYSwgYywgbS4gVGhlIHRlbXBsYXRlIHBhcmFtZXRlciBJbnRUeXBlIHNoYWxsIGRlbm90ZSBhbiBpbnRlZ3JhbAotICogdHlwZS4gSXQgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB2YWx1ZXMgYSwgYywgYW5kIG0uIFRoZSB0ZW1wbGF0ZQotICogcGFyYW1ldGVycyBhIGFuZCBjIG11c3QgYmUgc21hbGxlciB0aGFuIG0uCi0gKgotICogTm90ZTogVGhlIHF1YWxpdHkgb2YgdGhlIGdlbmVyYXRvciBjcnVjaWFsbHkgZGVwZW5kcyBvbiB0aGUgY2hvaWNlIG9mCi0gKiB0aGUgcGFyYW1ldGVycy4gVXNlciBjb2RlIHNob3VsZCB1c2Ugb25lIG9mIHRoZSBzZW5zaWJseSBwYXJhbWV0ZXJpemVkCi0gKiBnZW5lcmF0b3JzIHN1Y2ggYXMgbWluc3RkX3JhbmQgaW5zdGVhZC4KLSAqLwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbT4KLWNsYXNzIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBJbnRUeXBlIHJlc3VsdF90eXBlOwotCi0gICAgLy8gUmVxdWlyZWQgZm9yIG9sZCBCb29zdC5SYW5kb20gY29uY2VwdAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZml4ZWRfcmFuZ2UgPSBmYWxzZSk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoSW50VHlwZSwgbXVsdGlwbGllciA9IGEpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChJbnRUeXBlLCBpbmNyZW1lbnQgPSBjKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoSW50VHlwZSwgbW9kdWx1cyA9IG0pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChJbnRUeXBlLCBkZWZhdWx0X3NlZWQgPSAxKTsKLSAgICAKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46OmlzX2ludGVnZXIpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQobSA9PSAwIHx8IGEgPCBtKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKG0gPT0gMCB8fCBjIDwgbSk7Ci0gICAgCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCB1c2luZyB0aGUgZGVmYXVsdCBzZWVkCi0gICAgICovCi0gICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUoKSB7IHNlZWQoKTsgfQotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCBzZWVkaW5nIGl0IHdpdGggQGMgeDAuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX0NPTlNUUlVDVE9SKGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRUeXBlLCB4MCkKLSAgICB7IHNlZWQoeDApOyB9Ci0gICAgCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCBzZWVkaW5nIGl0IHdpdGggdmFsdWVzCi0gICAgICogcHJvZHVjZWQgYnkgYSBjYWxsIHRvIEBjIHNlcS5nZW5lcmF0ZSgpLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfQ09OU1RSVUNUT1IobGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWVkU2VxLCBzZXEpCi0gICAgeyBzZWVkKHNlcSk7IH0KLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSAgYW5kIHNlZWRzIGl0Ci0gICAgICogd2l0aCB2YWx1ZXMgdGFrZW4gZnJvbSB0aGUgaXRyYXRvciByYW5nZSBbZmlyc3QsIGxhc3QpCi0gICAgICogYW5kIGFkanVzdHMgZmlyc3QgdG8gcG9pbnQgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGxhc3Qgb25lCi0gICAgICogdXNlZC4gIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoIGVsZW1lbnRzLCB0aHJvd3MgQGMgc3RkOjppbnZhbGlkX2FyZ3VtZW50LgotICAgICAqCi0gICAgICogZmlyc3QgYW5kIGxhc3QgbXVzdCBiZSBpbnB1dCBpdGVyYXRvcnMuCi0gICAgICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXQ+Ci0gICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUoSXQmIGZpcnN0LCBJdCBsYXN0KQotICAgIHsKLSAgICAgICAgc2VlZChmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0gICAgLy8gY29tcGlsZXItZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IgYXJlIGZpbmUKLQotICAgIC8qKgotICAgICAqIENhbGxzIHNlZWQoZGVmYXVsdF9zZWVkKQotICAgICAqLwotICAgIHZvaWQgc2VlZCgpIHsgc2VlZChkZWZhdWx0X3NlZWQpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBJZiBjIG1vZCBtIGlzIHplcm8gYW5kIHgwIG1vZCBtIGlzIHplcm8sIGNoYW5nZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YKLSAgICAgKiB0aGUgZ2VuZXJhdG9yIHRvIDEuIE90aGVyd2lzZSwgY2hhbmdlcyBpdCB0byB4MCBtb2QgbS4gSWYgYyBpcyB6ZXJvLAotICAgICAqIGRpc3RpbmN0IHNlZWRzIGluIHRoZSByYW5nZSBbMSxtKSB3aWxsIGxlYXZlIHRoZSBnZW5lcmF0b3IgaW4gZGlzdGluY3QKLSAgICAgKiBzdGF0ZXMuIElmIGMgaXMgbm90IHplcm8sIHRoZSByYW5nZSBpcyBbMCxtKS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfU0VFRChsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwgSW50VHlwZSwgeDApCi0gICAgewotICAgICAgICAvLyB3cmFwIF94IGlmIGl0IGRvZXNuJ3QgZml0IGluIHRoZSBkZXN0aW5hdGlvbgotICAgICAgICBpZihtb2R1bHVzID09IDApIHsKLSAgICAgICAgICAgIF94ID0geDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBfeCA9IHgwICUgbW9kdWx1czsKLSAgICAgICAgfQotICAgICAgICAvLyBoYW5kbGUgbmVnYXRpdmUgc2VlZHMKLSAgICAgICAgaWYoX3ggPD0gMCAmJiBfeCAhPSAwKSB7Ci0gICAgICAgICAgICBfeCArPSBtb2R1bHVzOwotICAgICAgICB9Ci0gICAgICAgIC8vIGFkanVzdCB0byB0aGUgY29ycmVjdCByYW5nZQotICAgICAgICBpZihpbmNyZW1lbnQgPT0gMCAmJiBfeCA9PSAwKSB7Ci0gICAgICAgICAgICBfeCA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKF94ID49IChtaW4pKCkpOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoX3ggPD0gKG1heCkoKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogU2VlZHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSB1c2luZyB2YWx1ZXMgZnJvbSBhIFNlZWRTZXEuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9TRUVEKGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCBTZWVkU2VxLCBzZXEpCi0gICAgeyBzZWVkKGRldGFpbDo6c2VlZF9vbmVfaW50PEludFR5cGUsIG0+KHNlcSkpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBzZWVkcyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lIHdpdGggdmFsdWVzIHRha2VuCi0gICAgICogZnJvbSB0aGUgaXRyYXRvciByYW5nZSBbZmlyc3QsIGxhc3QpIGFuZCBhZGp1c3RzIEBjIGZpcnN0IHRvCi0gICAgICogcG9pbnQgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGxhc3Qgb25lIHVzZWQuICBJZiB0aGVyZSBhcmUKLSAgICAgKiBub3QgZW5vdWdoIGVsZW1lbnRzLCB0aHJvd3MgQGMgc3RkOjppbnZhbGlkX2FyZ3VtZW50LgotICAgICAqCi0gICAgICogQGMgZmlyc3QgYW5kIEBjIGxhc3QgbXVzdCBiZSBpbnB1dCBpdGVyYXRvcnMuCi0gICAgICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXQ+Ci0gICAgdm9pZCBzZWVkKEl0JiBmaXJzdCwgSXQgbGFzdCkKLSAgICB7IHNlZWQoZGV0YWlsOjpnZXRfb25lX2ludDxJbnRUeXBlLCBtPihmaXJzdCwgbGFzdCkpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IHRoZSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZQotICAgICAqIGNhbiBwcm9kdWNlLgotICAgICAqLwotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICB7IHJldHVybiBjID09IDAgPyAxIDogMDsgfQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgdGhhdCB0aGUgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUKLSAgICAgKiBjYW4gcHJvZHVjZS4KLSAgICAgKi8KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgeyByZXR1cm4gbW9kdWx1cy0xOyB9Ci0KLSAgICAvKiogUmV0dXJucyB0aGUgbmV4dCB2YWx1ZSBvZiB0aGUgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUuICovCi0gICAgSW50VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIF94ID0gY29uc3RfbW9kPEludFR5cGUsIG0+OjptdWx0X2FkZChhLCBfeCwgYyk7Ci0gICAgICAgIHJldHVybiBfeDsKLSAgICB9Ci0gIAotICAgIC8qKiBGaWxscyBhIHJhbmdlIHdpdGggcmFuZG9tIHZhbHVlcyAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgdm9pZCBnZW5lcmF0ZShJdGVyIGZpcnN0LCBJdGVyIGxhc3QpCi0gICAgeyBkZXRhaWw6OmdlbmVyYXRlX2Zyb21faW50KCp0aGlzLCBmaXJzdCwgbGFzdCk7IH0KLQotICAgIC8qKiBBZHZhbmNlcyB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBieSBAYyB6LiAqLwotICAgIHZvaWQgZGlzY2FyZChuZG5ib29zdDo6dWludG1heF90IHopCi0gICAgewotICAgICAgICB0eXBlZGVmIGNvbnN0X21vZDxJbnRUeXBlLCBtPiBtb2RfdHlwZTsKLSAgICAgICAgSW50VHlwZSBiX2ludiA9IG1vZF90eXBlOjppbnZlcnQoYS0xKTsKLSAgICAgICAgSW50VHlwZSBiX2djZCA9IG1vZF90eXBlOjptdWx0KGEtMSwgYl9pbnYpOwotICAgICAgICBpZihiX2djZCA9PSAxKSB7Ci0gICAgICAgICAgICBJbnRUeXBlIGFfeiA9IG1vZF90eXBlOjpwb3coYSwgeik7Ci0gICAgICAgICAgICBfeCA9IG1vZF90eXBlOjptdWx0X2FkZChhX3osIF94LCAKLSAgICAgICAgICAgICAgICBtb2RfdHlwZTo6bXVsdChtb2RfdHlwZTo6bXVsdChjLCBiX2ludiksIGFfeiAtIDEpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIGNvbXB1dGUgKGFeeiAtIDEpKmMgJSAoYl9nY2QgKiBtKSAvIChiIC8gYl9nY2QpICogaW52KGIgLyBiX2djZCkKLSAgICAgICAgICAgIC8vIHdlJ3JlIHN0b3JpbmcgdGhlIGludGVybWVkaWF0ZSByZXN1bHQgLyBiX2djZAotICAgICAgICAgICAgSW50VHlwZSBhX3ptMV9vdmVyX2djZCA9IDA7Ci0gICAgICAgICAgICBJbnRUeXBlIGFfa20xX292ZXJfZ2NkID0gKGEgLSAxKSAvIGJfZ2NkOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBleHBvbmVudCA9IHo7Ci0gICAgICAgICAgICB3aGlsZShleHBvbmVudCAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYoZXhwb25lbnQgJSAyID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgYV96bTFfb3Zlcl9nY2QgPQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kX3R5cGU6Om11bHRfYWRkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJfZ2NkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF90eXBlOjptdWx0KGFfem0xX292ZXJfZ2NkLCBhX2ttMV9vdmVyX2djZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX3R5cGU6OmFkZChhX3ptMV9vdmVyX2djZCwgYV9rbTFfb3Zlcl9nY2QpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYV9rbTFfb3Zlcl9nY2QgPSBtb2RfdHlwZTo6bXVsdF9hZGQoCi0gICAgICAgICAgICAgICAgICAgIGJfZ2NkLAotICAgICAgICAgICAgICAgICAgICBtb2RfdHlwZTo6bXVsdChhX2ttMV9vdmVyX2djZCwgYV9rbTFfb3Zlcl9nY2QpLAotICAgICAgICAgICAgICAgICAgICBtb2RfdHlwZTo6YWRkKGFfa20xX292ZXJfZ2NkLCBhX2ttMV9vdmVyX2djZCkpOwotICAgICAgICAgICAgICAgIGV4cG9uZW50IC89IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEludFR5cGUgYV96ID0gbW9kX3R5cGU6Om11bHRfYWRkKGJfZ2NkLCBhX3ptMV9vdmVyX2djZCwgMSk7Ci0gICAgICAgICAgICBJbnRUeXBlIG51bSA9IG1vZF90eXBlOjptdWx0KGMsIGFfem0xX292ZXJfZ2NkKTsKLSAgICAgICAgICAgIGJfaW52ID0gbW9kX3R5cGU6OmludmVydCgoYS0xKS9iX2djZCk7Ci0gICAgICAgICAgICBfeCA9IG1vZF90eXBlOjptdWx0X2FkZChhX3osIF94LCBtb2RfdHlwZTo6bXVsdChiX2ludiwgbnVtKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUmIHkpCi0gICAgeyByZXR1cm4geC5feCA9PSB5Ll94OyB9Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiB5KQotICAgIHsgcmV0dXJuICEoeCA9PSB5KTsgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTKQotICAgIC8qKiBXcml0ZXMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSB0byBhIEBjIHN0ZDo6b3N0cmVhbS4gKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywKLSAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiBsY2cpCi0gICAgewotICAgICAgICByZXR1cm4gb3MgPDwgbGNnLl94OwotICAgIH0KLQotICAgIC8qKiBSZWFkcyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lIGZyb20gYSBAYyBzdGQ6OmlzdHJlYW0uICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsCi0gICAgICAgICAgICAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgbGNnKQotICAgIHsKLSAgICAgICAgbGNnLnJlYWQoaXMpOwotICAgICAgICByZXR1cm4gaXM7Ci0gICAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0KLSAgICAvLy8gXGNvbmQgc2hvd19wcml2YXRlCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICAgIHZvaWQgcmVhZChzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzKSB7Ci0gICAgICAgIEludFR5cGUgeDsKLSAgICAgICAgaWYoaXMgPj4geCkgewotICAgICAgICAgICAgaWYoeCA+PSAobWluKSgpICYmIHggPD0gKG1heCkoKSkgewotICAgICAgICAgICAgICAgIF94ID0geDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaXMuc2V0c3RhdGUoc3RkOjppb3NfYmFzZTo6ZmFpbGJpdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLy8gXGVuZGNvbmQKLQotICAgIEludFR5cGUgX3g7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0vLyAgQSBkZWZpbml0aW9uIGlzIHJlcXVpcmVkIGV2ZW4gZm9yIGludGVncmFsIHN0YXRpYyBjb25zdGFudHMKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBib29sIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsIGEsIGMsIG0+OjpoYXNfZml4ZWRfcmFuZ2U7Ci10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY29uc3QgSW50VHlwZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLGEsYyxtPjo6bXVsdGlwbGllcjsKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBJbnRUeXBlIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsYSxjLG0+OjppbmNyZW1lbnQ7Ci10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY29uc3QgSW50VHlwZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLGEsYyxtPjo6bW9kdWx1czsKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBJbnRUeXBlIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsYSxjLG0+OjpkZWZhdWx0X3NlZWQ7Ci0jZW5kaWYKLQotLy8vIFxjb25kIHNob3dfZGVwcmVjYXRlZAotCi0vLyBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0sIEludFR5cGUgdmFsID0gMD4KLWNsYXNzIGxpbmVhcl9jb25ncnVlbnRpYWwgOiBwdWJsaWMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSwgYSwgYywgbT4KLXsKLSAgICB0eXBlZGVmIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsIGEsIGMsIG0+IGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICBsaW5lYXJfY29uZ3J1ZW50aWFsKEludFR5cGUgeDAgPSAxKSA6IGJhc2VfdHlwZSh4MCkge30KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdD4KLSAgICBsaW5lYXJfY29uZ3J1ZW50aWFsKEl0JiBmaXJzdCwgSXQgbGFzdCkgOiBiYXNlX3R5cGUoZmlyc3QsIGxhc3QpIHt9Ci19OwotCi0vLy8gXGVuZGNvbmQKLQotLyoqCi0gKiBUaGUgc3BlY2lhbGl6YXRpb24gXG1pbnN0ZF9yYW5kMCB3YXMgb3JpZ2luYWxseSBzdWdnZXN0ZWQgaW4KLSAqCi0gKiAgQGJsb2NrcXVvdGUKLSAqICBBIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBmb3IgdGhlIFN5c3RlbS8zNjAsIFAuQS4gTGV3aXMsCi0gKiAgQS5TLiBHb29kbWFuLCBKLk0uIE1pbGxlciwgSUJNIFN5c3RlbXMgSm91cm5hbCwgVm9sLiA4LCBOby4gMiwKLSAqICAxOTY5LCBwcC4gMTM2LTE0NgotICogIEBlbmRibG9ja3F1b3RlCi0gKgotICogSXQgaXMgZXhhbWluZWQgbW9yZSBjbG9zZWx5IHRvZ2V0aGVyIHdpdGggXG1pbnN0ZF9yYW5kIGluCi0gKgotICogIEBibG9ja3F1b3RlCi0gKiAgIlJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yczogR29vZCBvbmVzIGFyZSBoYXJkIHRvIGZpbmQiLAotICogIFN0ZXBoZW4gSy4gUGFyayBhbmQgS2VpdGggVy4gTWlsbGVyLCBDb21tdW5pY2F0aW9ucyBvZgotICogIHRoZSBBQ00sIFZvbC4gMzEsIE5vLiAxMCwgT2N0b2JlciAxOTg4LCBwcC4gMTE5Mi0xMjAxIAotICogIEBlbmRibG9ja3F1b3RlCi0gKi8KLXR5cGVkZWYgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8dWludDMyX3QsIDE2ODA3LCAwLCAyMTQ3NDgzNjQ3PiBtaW5zdGRfcmFuZDA7Ci0KLS8qKiBUaGUgc3BlY2lhbGl6YXRpb24gXG1pbnN0ZF9yYW5kIHdhcyBzdWdnZXN0ZWQgaW4KLSAqCi0gKiAgQGJsb2NrcXVvdGUKLSAqICAiUmFuZG9tIE51bWJlciBHZW5lcmF0b3JzOiBHb29kIG9uZXMgYXJlIGhhcmQgdG8gZmluZCIsCi0gKiAgU3RlcGhlbiBLLiBQYXJrIGFuZCBLZWl0aCBXLiBNaWxsZXIsIENvbW11bmljYXRpb25zIG9mCi0gKiAgdGhlIEFDTSwgVm9sLiAzMSwgTm8uIDEwLCBPY3RvYmVyIDE5ODgsIHBwLiAxMTkyLTEyMDEKLSAqICBAZW5kYmxvY2txdW90ZQotICovCi10eXBlZGVmIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPHVpbnQzMl90LCA0ODI3MSwgMCwgMjE0NzQ4MzY0Nz4gbWluc3RkX3JhbmQ7Ci0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpCi0vKioKLSAqIENsYXNzIEBjIHJhbmQ0OCBtb2RlbHMgYSBccHNldWRvX3JhbmRvbV9udW1iZXJfZ2VuZXJhdG9yLiBJdCB1c2VzCi0gKiB0aGUgbGluZWFyIGNvbmdydWVudGlhbCBhbGdvcml0aG0gd2l0aCB0aGUgcGFyYW1ldGVycyBhID0gMHg1REVFQ0U2NkQsCi0gKiBjID0gMHhCLCBtID0gMioqNDguIEl0IGRlbGl2ZXJzIGlkZW50aWNhbCByZXN1bHRzIHRvIHRoZSBAYyBscmFuZDQ4KCkKLSAqIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiBzb21lIHN5c3RlbXMgKGFzc3VtaW5nIGxjb25nNDggaGFzIG5vdCBiZWVuIGNhbGxlZCkuCi0gKgotICogSXQgaXMgb25seSBhdmFpbGFibGUgb24gc3lzdGVtcyB3aGVyZSBAYyB1aW50NjRfdCBpcyBwcm92aWRlZCBhcyBhbgotICogaW50ZWdyYWwgdHlwZSwgc28gdGhhdCBmb3IgZXhhbXBsZSBzdGF0aWMgaW4tY2xhc3MgY29uc3RhbnRzIGFuZC9vcgotICogZW51bSBkZWZpbml0aW9ucyB3aXRoIGxhcmdlIEBjIHVpbnQ2NF90IG51bWJlcnMgd29yay4KLSAqLwotY2xhc3MgcmFuZDQ4IAotewotcHVibGljOgotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90IHJlc3VsdF90eXBlOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19maXhlZF9yYW5nZSA9IGZhbHNlKTsKLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IHRoZSBnZW5lcmF0b3IgY2FuIHByb2R1Y2UKLSAgICAgKi8KLSAgICBzdGF0aWMgdWludDMyX3QgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIHsgcmV0dXJuIDA7IH0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBsYXJnZXN0IHZhbHVlIHRoYXQgdGhlIGdlbmVyYXRvciBjYW4gcHJvZHVjZQotICAgICAqLwotICAgIHN0YXRpYyB1aW50MzJfdCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICB7IHJldHVybiAweDdGRkZGRkZGOyB9Ci0gIAotICAgIC8qKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHdpdGggdGhlIGRlZmF1bHQgc2VlZC4gKi8KLSAgICByYW5kNDgoKSA6IGxjZihjbnYoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpKSkge30KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgXHJhbmQ0OCBnZW5lcmF0b3Igd2l0aCB4KDApIDo9ICh4MCA8PCAxNikgfCAweDMzMGUuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX0NPTlNUUlVDVE9SKHJhbmQ0OCwgcmVzdWx0X3R5cGUsIHgwKQotICAgIHsgc2VlZCh4MCk7IH0KLSAgICAvKioKLSAgICAgKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHdpdGggdmFsdWVzIHByb2R1Y2VkIGJ5IEBjIHNlcS5nZW5lcmF0ZSgpLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfQ09OU1RSVUNUT1IocmFuZDQ4LCBTZWVkU2VxLCBzZXEpCi0gICAgeyBzZWVkKHNlcSk7IH0KLSAgICAvKioKLSAgICAgKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHVzaW5nIHZhbHVlcyBmcm9tIGFuIGl0ZXJhdG9yIHJhbmdlLAotICAgICAqIGFuZCB1cGRhdGVzIGZpcnN0IHRvIHBvaW50IG9uZSBwYXN0IHRoZSBsYXN0IHZhbHVlIGNvbnN1bWVkLgotICAgICAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0PiByYW5kNDgoSXQmIGZpcnN0LCBJdCBsYXN0KSA6IGxjZihmaXJzdCwgbGFzdCkgeyB9Ci0KLSAgICAvLyBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGFyZSBmaW5lCi0KLSAgICAvKiogU2VlZHMgdGhlIGdlbmVyYXRvciB3aXRoIHRoZSBkZWZhdWx0IHNlZWQuICovCi0gICAgdm9pZCBzZWVkKCkgeyBzZWVkKHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSk7IH0KLSAgICAvKioKLSAgICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IHZhbHVlIHgobikgb2YgdGhlIGdlbmVyYXRvciB0byAoeDAgPDwgMTYpIHwgMHgzMzBlLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19TRUVEKHJhbmQ0OCwgcmVzdWx0X3R5cGUsIHgwKQotICAgIHsgbGNmLnNlZWQoY252KHgwKSk7IH0KLSAgICAvKioKLSAgICAgKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHVzaW5nIHZhbHVlcyBmcm9tIGFuIGl0ZXJhdG9yIHJhbmdlLAotICAgICAqIGFuZCB1cGRhdGVzIGZpcnN0IHRvIHBvaW50IG9uZSBwYXN0IHRoZSBsYXN0IHZhbHVlIGNvbnN1bWVkLgotICAgICAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0PiB2b2lkIHNlZWQoSXQmIGZpcnN0LCBJdCBsYXN0KSB7IGxjZi5zZWVkKGZpcnN0LGxhc3QpOyB9Ci0gICAgLyoqCi0gICAgICogU2VlZHMgdGhlIGdlbmVyYXRvciB3aXRoIHZhbHVlcyBwcm9kdWNlZCBieSBAYyBzZXEuZ2VuZXJhdGUoKS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX1NFRUQocmFuZDQ4LCBTZWVkU2VxLCBzZXEpCi0gICAgeyBsY2Yuc2VlZChzZXEpOyB9Ci0KLSAgICAvKiogIFJldHVybnMgdGhlIG5leHQgdmFsdWUgb2YgdGhlIGdlbmVyYXRvci4gKi8KLSAgICB1aW50MzJfdCBvcGVyYXRvcigpKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxjZigpID4+IDE3KTsgfQotICAgIAotICAgIC8qKiBBZHZhbmNlcyB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBieSBAYyB6LiAqLwotICAgIHZvaWQgZGlzY2FyZChuZG5ib29zdDo6dWludG1heF90IHopIHsgbGNmLmRpc2NhcmQoeik7IH0KLSAgCi0gICAgLyoqIEZpbGxzIGEgcmFuZ2Ugd2l0aCByYW5kb20gdmFsdWVzICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICB2b2lkIGdlbmVyYXRlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCkKLSAgICB7Ci0gICAgICAgIGZvcig7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIHsKLSAgICAgICAgICAgICpmaXJzdCA9ICgqdGhpcykoKTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fTk9fU1RSRUFNX09QRVJBVE9SUwotICAgIC8qKiAgV3JpdGVzIGEgQGMgcmFuZDQ4IHRvIGEgQGMgc3RkOjpvc3RyZWFtLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULGNsYXNzIFRyYWl0cz4KLSAgICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IHJhbmQ0OCYgcikKLSAgICB7IG9zIDw8IHIubGNmOyByZXR1cm4gb3M7IH0KLQotICAgIC8qKiBSZWFkcyBhIEBjIHJhbmQ0OCBmcm9tIGEgQGMgc3RkOjppc3RyZWFtLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULGNsYXNzIFRyYWl0cz4KLSAgICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIHJhbmQ0OCYgcikKLSAgICB7IGlzID4+IHIubGNmOyByZXR1cm4gaXM7IH0KLSNlbmRpZgotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZ2VuZXJhdG9ycyB3aWxsIHByb2R1Y2UgaWRlbnRpY2FsCi0gICAgICogc2VxdWVuY2VzIG9mIHZhbHVlcy4KLSAgICAgKi8KLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJhbmQ0OCYgeCwgY29uc3QgcmFuZDQ4JiB5KQotICAgIHsgcmV0dXJuIHgubGNmID09IHkubGNmOyB9Ci0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZ2VuZXJhdG9ycyB3aWxsIHByb2R1Y2UgZGlmZmVyZW50Ci0gICAgICogc2VxdWVuY2VzIG9mIHZhbHVlcy4KLSAgICAgKi8KLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHJhbmQ0OCYgeCwgY29uc3QgcmFuZDQ4JiB5KQotICAgIHsgcmV0dXJuICEoeCA9PSB5KTsgfQotcHJpdmF0ZToKLSAgICAvLy8gXGNvbmQgc2hvd19wcml2YXRlCi0gICAgdHlwZWRlZiByYW5kb206OmxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPHVpbnQ2NF90LAotICAgICAgICAvLyB4eHh4VUxMIGlzIG5vdCBwb3J0YWJsZQotICAgICAgICB1aW50NjRfdCgweERFRUNFNjZEVUwpIHwgKHVpbnQ2NF90KDB4NSkgPDwgMzIpLAotICAgICAgICAweEIsIHVpbnQ2NF90KDEpPDw0OD4gbGNmX3Q7Ci0gICAgbGNmX3QgbGNmOwotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojp1aW50NjRfdCBjbnYobmRuYm9vc3Q6OnVpbnQzMl90IHgpCi0gICAgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih4KSA8PCAxNikgfCAweDMzMGU7IH0KLSAgICAvLy8gXGVuZGNvbmQKLX07Ci0jZW5kaWYgLyogIU5ETkJPT1NUX05PX0lOVDY0X1QgJiYgIU5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QgKi8KLQotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi0KLXVzaW5nIHJhbmRvbTo6bWluc3RkX3JhbmQwOwotdXNpbmcgcmFuZG9tOjptaW5zdGRfcmFuZDsKLXVzaW5nIHJhbmRvbTo6cmFuZDQ4OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0xJTkVBUl9DT05HUlVFTlRJQUxfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtXzAxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fMDEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTE0MTEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fMDEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS91bmlmb3JtXzAxLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAwLTIwMDEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiB1bmlmb3JtXzAxLmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqIFJldmlzaW9uIGhpc3RvcnkKLSAqICAyMDAxLTAyLTE4ICBtb3ZlZCB0byBpbmRpdmlkdWFsIGhlYWRlciBmaWxlcwotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fMDFfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNXzAxX0hQUAotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotCi0jaWZkZWYgTkROQk9PU1RfUkFORE9NX0RPWFlHRU4KLQotLyoqCi0gKiBUaGUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIHVuaWZvcm1fMDEgbW9kZWxzIGEgXHJhbmRvbV9kaXN0cmlidXRpb24uCi0gKiBPbiBlYWNoIGludm9jYXRpb24sIGl0IHJldHVybnMgYSByYW5kb20gZmxvYXRpbmctcG9pbnQgdmFsdWUKLSAqIHVuaWZvcm1seSBkaXN0cmlidXRlZCBpbiB0aGUgcmFuZ2UgWzAuLjEpLgotICoKLSAqIFRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgUmVhbFR5cGUgc2hhbGwgZGVub3RlIGEgZmxvYXQtbGlrZSB2YWx1ZSB0eXBlCi0gKiB3aXRoIHN1cHBvcnQgZm9yIGJpbmFyeSBvcGVyYXRvcnMgKywgLSwgYW5kIC8uCi0gKgotICogTm90ZTogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgYnVnZ3ksIGJlY2F1c2UgaXQgbWF5IG5vdCBmaWxsCi0gKiBhbGwgb2YgdGhlIG1hbnRpc3NhIHdpdGggcmFuZG9tIGJpdHMuIEknbSB1bnN1cmUgaG93IHRvIGZpbGwgYQotICogKHRvLWJlLWludmVudGVkKSBAYyBuZG5ib29zdDo6YmlnZmxvYXQgY2xhc3Mgd2l0aCByYW5kb20gYml0cyBlZmZpY2llbnRseS4KLSAqIEl0J3MgcHJvYmFibHkgdGltZSBmb3IgYSB0cmFpdHMgY2xhc3MuCi0gKi8KLXRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlID0gZG91YmxlPgotY2xhc3MgdW5pZm9ybV8wMQotewotcHVibGljOgotICB0eXBlZGVmIFJlYWxUeXBlIGlucHV0X3R5cGU7Ci0gIHR5cGVkZWYgUmVhbFR5cGUgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdDsKLSAgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0OwotICB2b2lkIHJlc2V0KCk7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nKTsKLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fTk9fU1RSRUFNX09QRVJBVE9SUwotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBuZXdfdW5pZm9ybV8wMSYpCi0gIHsKLSAgICByZXR1cm4gb3M7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBuZXdfdW5pZm9ybV8wMSYpCi0gIHsKLSAgICByZXR1cm4gaXM7Ci0gIH0KLSNlbmRpZgotfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlPgotY2xhc3MgbmV3X3VuaWZvcm1fMDEKLXsKLXB1YmxpYzoKLSAgdHlwZWRlZiBSZWFsVHlwZSBpbnB1dF90eXBlOwotICB0eXBlZGVmIFJlYWxUeXBlIHJlc3VsdF90eXBlOwotICAvLyBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgYXJlIGZpbmUKLSAgcmVzdWx0X3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIHJlc3VsdF90eXBlKDApOyB9Ci0gIHJlc3VsdF90eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiByZXN1bHRfdHlwZSgxKTsgfQotICB2b2lkIHJlc2V0KCkgeyB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nKSB7Ci0gICAgZm9yICg7OykgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICAgICAgcmVzdWx0X3R5cGUgZmFjdG9yID0gcmVzdWx0X3R5cGUoMSkgLwotICAgICAgICAgICAgICAocmVzdWx0X3R5cGUoKGVuZy5tYXgpKCktKGVuZy5taW4pKCkpICsKLSAgICAgICAgICAgICAgIHJlc3VsdF90eXBlKHN0ZDo6bnVtZXJpY19saW1pdHM8YmFzZV9yZXN1bHQ+Ojppc19pbnRlZ2VyID8gMSA6IDApKTsKLSAgICAgIHJlc3VsdF90eXBlIHJlc3VsdCA9IHJlc3VsdF90eXBlKGVuZygpIC0gKGVuZy5taW4pKCkpICogZmFjdG9yOwotICAgICAgaWYgKHJlc3VsdCA8IHJlc3VsdF90eXBlKDEpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IG5ld191bmlmb3JtXzAxJikKLSAgewotICAgIHJldHVybiBvczsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIG5ld191bmlmb3JtXzAxJikKLSAgewotICAgIHJldHVybiBpczsKLSAgfQotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBjbGFzcyBSZWFsVHlwZT4KLWNsYXNzIGJhY2t3YXJkX2NvbXBhdGlibGVfdW5pZm9ybV8wMQotewotICB0eXBlZGVmIG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6cHRyX2hlbHBlcjxVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPiB0cmFpdHM7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciBiYXNlX3R5cGU7Ci0gIHR5cGVkZWYgUmVhbFR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19maXhlZF9yYW5nZSA9IGZhbHNlKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSAmJiAhKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8PSAxMzAwKQotICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWxUeXBlPjo6aXNfaW50ZWdlcik7Ci0jZW5kaWYKLQotICBleHBsaWNpdCBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDEodHlwZW5hbWUgdHJhaXRzOjpydmFsdWVfdHlwZSBybmcpCi0gICAgOiBfcm5nKHJuZyksCi0gICAgICBfZmFjdG9yKHJlc3VsdF90eXBlKDEpIC8KLSAgICAgICAgICAgICAgKHJlc3VsdF90eXBlKChiYXNlKCkubWF4KSgpLShiYXNlKCkubWluKSgpKSArCi0gICAgICAgICAgICAgICByZXN1bHRfdHlwZShzdGQ6Om51bWVyaWNfbGltaXRzPGJhc2VfcmVzdWx0Pjo6aXNfaW50ZWdlciA/IDEgOiAwKSkpCi0gIHsKLSAgfQotICAvLyBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgYXJlIGZpbmUKLQotICByZXN1bHRfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3QgeyByZXR1cm4gcmVzdWx0X3R5cGUoMCk7IH0KLSAgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIHJlc3VsdF90eXBlKDEpOyB9Ci0gIHR5cGVuYW1lIHRyYWl0czo6dmFsdWVfdHlwZSYgYmFzZSgpIHsgcmV0dXJuIHRyYWl0czo6cmVmKF9ybmcpOyB9Ci0gIGNvbnN0IHR5cGVuYW1lIHRyYWl0czo6dmFsdWVfdHlwZSYgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIHRyYWl0czo6cmVmKF9ybmcpOyB9Ci0gIHZvaWQgcmVzZXQoKSB7IH0KLQotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgewotICAgIGZvciAoOzspIHsKLSAgICAgIHJlc3VsdF90eXBlIHJlc3VsdCA9IHJlc3VsdF90eXBlKGJhc2UoKSgpIC0gKGJhc2UoKS5taW4pKCkpICogX2ZhY3RvcjsKLSAgICAgIGlmIChyZXN1bHQgPCByZXN1bHRfdHlwZSgxKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDEmIHUpCi0gIHsKLSAgICBvcyA8PCB1Ll9ybmc7Ci0gICAgcmV0dXJuIG9zOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxJiB1KQotICB7Ci0gICAgaXMgPj4gdS5fcm5nOwotICAgIHJldHVybiBpczsKLSAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjp2YWx1ZV90eXBlOjpyZXN1bHRfdHlwZSBiYXNlX3Jlc3VsdDsKLSAgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciBfcm5nOwotICByZXN1bHRfdHlwZSBfZmFjdG9yOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotLy8gIEEgZGVmaW5pdGlvbiBpcyByZXF1aXJlZCBldmVuIGZvciBpbnRlZ3JhbCBzdGF0aWMgY29uc3RhbnRzCi10ZW1wbGF0ZTxjbGFzcyBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBjbGFzcyBSZWFsVHlwZT4KLWNvbnN0IGJvb2wgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIFJlYWxUeXBlPjo6aGFzX2ZpeGVkX3JhbmdlOwotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+Ci1zdHJ1Y3Qgc2VsZWN0X3VuaWZvcm1fMDEKLXsKLSAgdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGU+Ci0gIHN0cnVjdCBhcHBseQotICB7Ci0gICAgdHlwZWRlZiBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDE8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgUmVhbFR5cGU+IHR5cGU7Ci0gIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X3VuaWZvcm1fMDE8ZmxvYXQ+Ci17Ci0gIHRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlPgotICBzdHJ1Y3QgYXBwbHkKLSAgewotICAgIHR5cGVkZWYgbmV3X3VuaWZvcm1fMDE8ZmxvYXQ+IHR5cGU7Ci0gIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X3VuaWZvcm1fMDE8ZG91YmxlPgotewotICB0ZW1wbGF0ZTxjbGFzcyBSZWFsVHlwZT4KLSAgc3RydWN0IGFwcGx5Ci0gIHsKLSAgICB0eXBlZGVmIG5ld191bmlmb3JtXzAxPGRvdWJsZT4gdHlwZTsKLSAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfdW5pZm9ybV8wMTxsb25nIGRvdWJsZT4KLXsKLSAgdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGU+Ci0gIHN0cnVjdCBhcHBseQotICB7Ci0gICAgdHlwZWRlZiBuZXdfdW5pZm9ybV8wMTxsb25nIGRvdWJsZT4gdHlwZTsKLSAgfTsKLX07Ci0KLX0KLQotLy8gQmVjYXVzZSBpdCBpcyBzbyBjb21tb25seSB1c2VkOiB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvbiB0aGUgcmVhbCBbMC4uMSkKLS8vIHJhbmdlLiAgVGhpcyBhbGxvd3MgZm9yIHNwZWNpYWxpemF0aW9ucyB0byBhdm9pZCBhIGNvc3RseSBpbnQgLT4gZmxvYXQKLS8vIGNvbnZlcnNpb24gcGx1cyBmbG9hdCBtdWx0aXBsaWNhdGlvbgotdGVtcGxhdGU8Y2xhc3MgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciA9IGRvdWJsZSwgY2xhc3MgUmVhbFR5cGUgPSBkb3VibGU+Ci1jbGFzcyB1bmlmb3JtXzAxCi0gIDogcHVibGljIGRldGFpbDo6c2VsZWN0X3VuaWZvcm1fMDE8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBhcHBseTxSZWFsVHlwZT46OnR5cGUKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnNlbGVjdF91bmlmb3JtXzAxPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgYXBwbHk8UmVhbFR5cGU+Ojp0eXBlIGltcGxfdHlwZTsKLSAgdHlwZWRlZiBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OnB0cl9oZWxwZXI8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4gdHJhaXRzOwotcHVibGljOgotCi0gIHVuaWZvcm1fMDEoKSB7fQotCi0gIGV4cGxpY2l0IHVuaWZvcm1fMDEodHlwZW5hbWUgdHJhaXRzOjpydmFsdWVfdHlwZSBybmcpCi0gICAgOiBpbXBsX3R5cGUocm5nKQotICB7Ci0gIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCB1bmlmb3JtXzAxJiB1KQotICB7Ci0gICAgb3MgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgaW1wbF90eXBlJj4odSk7Ci0gICAgcmV0dXJuIG9zOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgdW5pZm9ybV8wMSYgdSkKLSAgewotICAgIGlzID4+IHN0YXRpY19jYXN0PGltcGxfdHlwZSY+KHUpOwotICAgIHJldHVybiBpczsKLSAgfQotI2VuZGlmCi19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi0KLXVzaW5nIHJhbmRvbTo6dW5pZm9ybV8wMTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNXzAxX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtX3NtYWxsaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwZTEwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtX3NtYWxsaW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vKiBib29zdCByYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMC0yMDAxCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogdW5pZm9ybV9zbWFsbGludC5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKiBSZXZpc2lvbiBoaXN0b3J5Ci0gKiAgMjAwMS0wNC0wOCAgYWRkZWQgbWluPG1heCBhc3NlcnRpb24gKE4uIEJlY2tlcikKLSAqICAyMDAxLTAyLTE4ICBtb3ZlZCB0byBpbmRpdmlkdWFsIGhlYWRlciBmaWxlcwotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fU01BTExJTlRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNX1NNQUxMSU5UX0hQUAotCi0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL29wZXJhdG9ycy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS91bmlmb3JtXzAxLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLQotLy8gdW5pZm9ybSBpbnRlZ2VyIGRpc3RyaWJ1dGlvbiBvbiBhIHNtYWxsIHJhbmdlIFttaW4sIG1heF0KLQotLyoqCi0gKiBUaGUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIHVuaWZvcm1fc21hbGxpbnQgbW9kZWxzIGEgXHJhbmRvbV9kaXN0cmlidXRpb24uCi0gKiBPbiBlYWNoIGludm9jYXRpb24sIGl0IHJldHVybnMgYSByYW5kb20gaW50ZWdlciB2YWx1ZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQKLSAqIGluIHRoZSBzZXQgb2YgaW50ZWdlciBudW1iZXJzIHttaW4sIG1pbisxLCBtaW4rMiwgLi4uLCBtYXh9LiBJdCBhc3N1bWVzCi0gKiB0aGF0IHRoZSBkZXNpcmVkIHJhbmdlIChtYXgtbWluKzEpIGlzIHNtYWxsIGNvbXBhcmVkIHRvIHRoZSByYW5nZSBvZiB0aGUKLSAqIHVuZGVybHlpbmcgc291cmNlIG9mIHJhbmRvbSBudW1iZXJzIGFuZCB0aHVzIG1ha2VzIG5vIGF0dGVtcHQgdG8gbGltaXQKLSAqIHF1YW50aXphdGlvbiBlcnJvcnMuCi0gKgotICogTGV0IFxmJHJfe1xtYXRodHR7b3V0fX0gPSAoXG1ib3h7bWF4fS1cbWJveHttaW59KzEpXGYkIHRoZSBkZXNpcmVkIHJhbmdlIG9mCi0gKiBpbnRlZ2VyIG51bWJlcnMsIGFuZAotICogbGV0IFxmJHJfe1xtYXRodHR7YmFzZX19XGYkIGJlIHRoZSByYW5nZSBvZiB0aGUgdW5kZXJseWluZyBzb3VyY2Ugb2YgcmFuZG9tCi0gKiBudW1iZXJzLiBUaGVuLCBmb3IgdGhlIHVuaWZvcm0gZGlzdHJpYnV0aW9uLCB0aGUgdGhlb3JldGljYWwgcHJvYmFiaWxpdHkKLSAqIGZvciBhbnkgbnVtYmVyIGkgaW4gdGhlIHJhbmdlIFxmJHJfe1xtYXRodHR7b3V0fX1cZiQgd2lsbCBiZQotICogXGYkXGRpc3BsYXlzdHlsZSBwX3tcbWF0aHR0e291dH19KGkpID0gXGZyYWN7MX17cl97XG1hdGh0dHtvdXR9fX1cZiQuCi0gKiBMaWtld2lzZSwgYXNzdW1lIGEgdW5pZm9ybSBkaXN0cmlidXRpb24gb24gXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgZm9yCi0gKiB0aGUgdW5kZXJseWluZyBzb3VyY2Ugb2YgcmFuZG9tIG51bWJlcnMsIGkuZS4KLSAqIFxmJFxkaXNwbGF5c3R5bGUgcF97XG1hdGh0dHtiYXNlfX0oaSkgPSBcZnJhY3sxfXtyX3tcbWF0aHR0e2Jhc2V9fX1cZiQuCi0gKiBMZXQgXGYkcF97XG1hdGh0dHtvdXRcX3N9fShpKVxmJCBkZW5vdGUgdGhlIHJhbmRvbQotICogZGlzdHJpYnV0aW9uIGdlbmVyYXRlZCBieSBAYyB1bmlmb3JtX3NtYWxsaW50LiBUaGVuIHRoZSBzdW0gb3ZlciBhbGwKLSAqIGkgaW4gXGYkcl97XG1hdGh0dHtvdXR9fVxmJCBvZgotICogXGYkXGRpc3BsYXlzdHlsZQotICogXGxlZnQoXGZyYWN7cF97XG1hdGh0dHtvdXRcX3N9fShpKX17cF97XG1hdGh0dHtvdXR9fShpKX0gLSAxXHJpZ2h0KV4yXGYkCi0gKiBzaGFsbCBub3QgZXhjZWVkCi0gKiBcZiRcZGlzcGxheXN0eWxlIFxmcmFje3Jfe1xtYXRodHR7b3V0fX19e3Jfe1xtYXRodHR7YmFzZX19XjJ9Ci0gKiAocl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX0pCi0gKiAocl97XG1hdGh0dHtvdXR9fSAtIHJfe1xtYXRodHR7YmFzZX19IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19KVxmJC4KLSAqCi0gKiBUaGUgdGVtcGxhdGUgcGFyYW1ldGVyIEludFR5cGUgc2hhbGwgZGVub3RlIGFuIGludGVnZXItbGlrZSB2YWx1ZSB0eXBlLgotICoKLSAqIEB4bWxub3RlCi0gKiBUaGUgcHJvcGVydHkgYWJvdmUgaXMgdGhlIHNxdWFyZSBzdW0gb2YgdGhlIHJlbGF0aXZlIGRpZmZlcmVuY2VzCi0gKiBpbiBwcm9iYWJpbGl0aWVzIGJldHdlZW4gdGhlIGRlc2lyZWQgdW5pZm9ybSBkaXN0cmlidXRpb24KLSAqIFxmJHBfe1xtYXRodHR7b3V0fX0oaSlcZiQgYW5kIHRoZSBnZW5lcmF0ZWQgZGlzdHJpYnV0aW9uCi0gKiBcZiRwX3tcbWF0aHR0e291dFxfc319KGkpXGYkLgotICogVGhlIHByb3BlcnR5IGNhbiBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgY2FsY3VsYXRpb24KLSAqIFxmJChcbWJveHtiYXNlXF9ybmd9IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19KVxmJCwgYXMgZm9sbG93czoKLSAqIExldCBcZiRyID0gcl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX1cZiQuCi0gKiBUaGUgYmFzZSBkaXN0cmlidXRpb24gb24gXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgaXMgZm9sZGVkIG9udG8gdGhlCi0gKiByYW5nZSBcZiRyX3tcbWF0aHR0e291dH19XGYkLiBUaGUgbnVtYmVycyBpIDwgciBoYXZlIGFzc2lnbmVkCi0gKiBcZiRcZGlzcGxheXN0eWxlCi0gKiBcbGVmdFxsZmxvb3JcZnJhY3tyX3tcbWF0aHR0e2Jhc2V9fX17cl97XG1hdGh0dHtvdXR9fX1ccmlnaHRccmZsb29yKzFcZiQKLSAqIG51bWJlcnMgb2YgdGhlIGJhc2UgZGlzdHJpYnV0aW9uLCB0aGUgcmVzdCBoYXMgb25seSBcZiRcZGlzcGxheXN0eWxlCi0gKiBcbGVmdFxsZmxvb3JcZnJhY3tyX3tcbWF0aHR0e2Jhc2V9fX17cl97XG1hdGh0dHtvdXR9fX1ccmlnaHRccmZsb29yXGYkLgotICogVGhlcmVmb3JlLAotICogXGYkXGRpc3BsYXlzdHlsZSBwX3tcbWF0aHR0e291dFxfc319KGkpID0KLSAqIFxsZWZ0KFxsZWZ0XGxmbG9vclxmcmFje3Jfe1xtYXRodHR7YmFzZX19fQotICoge3Jfe1xtYXRodHR7b3V0fX19XHJpZ2h0XHJmbG9vcisxXHJpZ2h0KSAvCi0gKiByX3tcbWF0aHR0e2Jhc2V9fVxmJCBmb3IgaSA8IHIgYW5kIFxmJFxkaXNwbGF5c3R5bGUgcF97XG1hdGh0dHtvdXRcX3N9fShpKSA9Ci0gKiBcbGVmdFxsZmxvb3JcZnJhY3tyX3tcbWF0aHR0e2Jhc2V9fX0KLSAqIHtyX3tcbWF0aHR0e291dH19fVxyaWdodFxyZmxvb3Ivcl97XG1hdGh0dHtiYXNlfX1cZiQgb3RoZXJ3aXNlLgotICogU3Vic3RpdHV0aW5nIHRoaXMgaW4gdGhlCi0gKiBhYm92ZSBzdW0gZm9ybXVsYSBsZWFkcyB0byB0aGUgZGVzaXJlZCByZXN1bHQuCi0gKiBAZW5keG1sbm90ZQotICoKLSAqIE5vdGU6IFRoZSB1cHBlciBib3VuZCBmb3IKLSAqIFxmJChyX3tcbWF0aHR0e2Jhc2V9fSBcbWJveHsgbW9kIH0gcl97XG1hdGh0dHtvdXR9fSkKLSAqIChyX3tcbWF0aHR0e291dH19IC0gcl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX0pXGYkIGlzCi0gKiBcZiRcZGlzcGxheXN0eWxlIFxmcmFje3Jfe1xtYXRodHR7b3V0fX1eMn17NH1cZiQuICBSZWdhcmRpbmcgdGhlIHVwcGVyIGJvdW5kCi0gKiBmb3IgdGhlIHNxdWFyZSBzdW0gb2YgdGhlIHJlbGF0aXZlIHF1YW50aXphdGlvbiBlcnJvciBvZgotICogXGYkXGRpc3BsYXlzdHlsZSBcZnJhY3tyX1xtYXRodHR7b3V0fV4zfXs0cl97XG1hdGh0dHtiYXNlfX1eMn1cZiQsIGl0Ci0gKiBzZWVtcyB3aXNlIHRvIGVpdGhlciBjaG9vc2UgXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgc28gdGhhdAotICogXGYkcl97XG1hdGh0dHtiYXNlfX0gPiAxMHJfe1xtYXRodHR7b3V0fX1eMlxmJCBvciBlbnN1cmUgdGhhdAotICogXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgaXMKLSAqIGRpdmlzaWJsZSBieSBcZiRyX3tcbWF0aHR0e291dH19XGYkLgotICovCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlID0gaW50PgotY2xhc3MgdW5pZm9ybV9zbWFsbGludAotewotcHVibGljOgotICAgIHR5cGVkZWYgSW50VHlwZSBpbnB1dF90eXBlOwotICAgIHR5cGVkZWYgSW50VHlwZSByZXN1bHRfdHlwZTsKLQotICAgIGNsYXNzIHBhcmFtX3R5cGUKLSAgICB7Ci0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdW5pZm9ybV9zbWFsbGludCBkaXN0cmlidXRpb25fdHlwZTsKLQotICAgICAgICAvKiogY29uc3RydWN0cyB0aGUgcGFyYW1ldGVycyBvZiBhIEBjIHVuaWZvcm1fc21hbGxpbnQgZGlzdHJpYnV0aW9uLiAqLwotICAgICAgICBwYXJhbV90eXBlKEludFR5cGUgbWluX2FyZyA9IDAsIEludFR5cGUgbWF4X2FyZyA9IDkpCi0gICAgICAgICAgOiBfbWluKG1pbl9hcmcpLCBfbWF4KG1heF9hcmcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChfbWluIDw9IF9tYXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqIFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuICovCi0gICAgICAgIEludFR5cGUgYSgpIGNvbnN0IHsgcmV0dXJuIF9taW47IH0KLSAgICAgICAgLyoqIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuICovCi0gICAgICAgIEludFR5cGUgYigpIGNvbnN0IHsgcmV0dXJuIF9tYXg7IH0KLSAgICAgICAgCi0KLSAgICAgICAgLyoqIFdyaXRlcyB0aGUgcGFyYW1ldGVycyB0byBhIEBjIHN0ZDo6b3N0cmVhbS4gKi8KLSAgICAgICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PU1RSRUFNX09QRVJBVE9SKG9zLCBwYXJhbV90eXBlLCBwYXJtKQotICAgICAgICB7Ci0gICAgICAgICAgICBvcyA8PCBwYXJtLl9taW4gPDwgIiAiIDw8IHBhcm0uX21heDsKLSAgICAgICAgICAgIHJldHVybiBvczsKLSAgICAgICAgfQotICAgIAotICAgICAgICAvKiogUmVhZHMgdGhlIHBhcmFtZXRlcnMgZnJvbSBhIEBjIHN0ZDo6aXN0cmVhbS4gKi8KLSAgICAgICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SKGlzLCBwYXJhbV90eXBlLCBwYXJtKQotICAgICAgICB7Ci0gICAgICAgICAgICBpcyA+PiBwYXJtLl9taW4gPj4gc3RkOjp3cyA+PiBwYXJtLl9tYXg7Ci0gICAgICAgICAgICByZXR1cm4gaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gc2V0cyBvZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbC4gKi8KLSAgICAgICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9FUVVBTElUWV9PUEVSQVRPUihwYXJhbV90eXBlLCBsaHMsIHJocykKLSAgICAgICAgeyByZXR1cm4gbGhzLl9taW4gPT0gcmhzLl9taW4gJiYgbGhzLl9tYXggPT0gcmhzLl9tYXg7IH0KLQotICAgICAgICAvKiogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gc2V0cyBvZiBwYXJhbWV0ZXJzIGFyZSBkaWZmZXJlbnQuICovCi0gICAgICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5FUVVBTElUWV9PUEVSQVRPUihwYXJhbV90eXBlKQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSW50VHlwZSBfbWluOwotICAgICAgICBJbnRUeXBlIF9tYXg7Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyB1bmlmb3JtX3NtYWxsaW50LiBAYyBtaW4gYW5kIEBjIG1heCBhcmUgdGhlCi0gICAgICogbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBvZiB0aGUgb3V0cHV0IHJhbmdlLCByZXNwZWN0aXZlbHkuCi0gICAgICovCi0gICAgZXhwbGljaXQgdW5pZm9ybV9zbWFsbGludChJbnRUeXBlIG1pbl9hcmcgPSAwLCBJbnRUeXBlIG1heF9hcmcgPSA5KQotICAgICAgOiBfbWluKG1pbl9hcmcpLCBfbWF4KG1heF9hcmcpIHt9Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgQGMgdW5pZm9ybV9zbWFsbGludCBmcm9tIGl0cyBwYXJhbWV0ZXJzLgotICAgICAqLwotICAgIGV4cGxpY2l0IHVuaWZvcm1fc21hbGxpbnQoY29uc3QgcGFyYW1fdHlwZSYgcGFybSkKLSAgICAgIDogX21pbihwYXJtLmEoKSksIF9tYXgocGFybS5iKCkpIHt9Ci0KLSAgICAvKiogUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHJlc3VsdF90eXBlIGEoKSBjb25zdCB7IHJldHVybiBfbWluOyB9Ci0gICAgLyoqIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICByZXN1bHRfdHlwZSBiKCkgY29uc3QgeyByZXR1cm4gX21heDsgfQotICAgIC8qKiBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBkaXN0cmlidXRpb24uICovCi0gICAgcmVzdWx0X3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIF9taW47IH0KLSAgICAvKiogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHJlc3VsdF90eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiBfbWF4OyB9Ci0KLSAgICAvKiogUmV0dXJucyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7IHJldHVybiBwYXJhbV90eXBlKF9taW4sIF9tYXgpOyB9Ci0gICAgLyoqIFNldHMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICB2b2lkIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIHBhcm0pCi0gICAgewotICAgICAgICBfbWluID0gcGFybS5hKCk7Ci0gICAgICAgIF9tYXggPSBwYXJtLmIoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBFZmZlY3RzOiBTdWJzZXF1ZW50IHVzZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbiBkbyBub3QgZGVwZW5kCi0gICAgICogb24gdmFsdWVzIHByb2R1Y2VkIGJ5IGFueSBlbmdpbmUgcHJpb3IgdG8gaW52b2tpbmcgcmVzZXQuCi0gICAgICovCi0gICAgdm9pZCByZXNldCgpIHsgfQotCi0gICAgLyoqIFJldHVybnMgYSB2YWx1ZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgaW4gdGhlIHJhbmdlIFttaW4oKSwgbWF4KCldLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nKSBjb25zdAotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICAgICAgICByZXR1cm4gZ2VuZXJhdGUoZW5nLCBuZG5ib29zdDo6aXNfaW50ZWdyYWw8YmFzZV9yZXN1bHQ+KCkpOwotICAgIH0KLQotICAgIC8qKiBSZXR1cm5zIGEgdmFsdWUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGluIHRoZSByYW5nZSBbcGFyYW0uYSgpLCBwYXJhbS5iKCldLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nLCBjb25zdCBwYXJhbV90eXBlJiBwYXJtKSBjb25zdAotICAgIHsgcmV0dXJuIHVuaWZvcm1fc21hbGxpbnQocGFybSkoZW5nKTsgfQotCi0gICAgLyoqIFdyaXRlcyB0aGUgZGlzdHJpYnV0aW9uIHRvIGEgQGMgc3RkOjpvc3RyZWFtLiAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1NUUkVBTV9PUEVSQVRPUihvcywgdW5pZm9ybV9zbWFsbGludCwgdWQpCi0gICAgewotICAgICAgICBvcyA8PCB1ZC5fbWluIDw8ICIgIiA8PCB1ZC5fbWF4OwotICAgICAgICByZXR1cm4gb3M7Ci0gICAgfQotICAgIAotICAgIC8qKiBSZWFkcyB0aGUgZGlzdHJpYnV0aW9uIGZyb20gYSBAYyBzdGQ6OmlzdHJlYW0uICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SKGlzLCB1bmlmb3JtX3NtYWxsaW50LCB1ZCkKLSAgICB7Ci0gICAgICAgIGlzID4+IHVkLl9taW4gPj4gc3RkOjp3cyA+PiB1ZC5fbWF4OwotICAgICAgICByZXR1cm4gaXM7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZGlzdHJpYnV0aW9ucyB3aWxsIHByb2R1Y2UgaWRlbnRpY2FsCi0gICAgICogc2VxdWVuY2VzIG9mIHZhbHVlcyBnaXZlbiBlcXVhbCBnZW5lcmF0b3JzLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IodW5pZm9ybV9zbWFsbGludCwgbGhzLCByaHMpCi0gICAgeyByZXR1cm4gbGhzLl9taW4gPT0gcmhzLl9taW4gJiYgbGhzLl9tYXggPT0gcmhzLl9tYXg7IH0KLSAgICAKLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBkaXN0cmlidXRpb25zIG1heSBwcm9kdWNlIGRpZmZlcmVudAotICAgICAqIHNlcXVlbmNlcyBvZiB2YWx1ZXMgZ2l2ZW4gZXF1YWwgZ2VuZXJhdG9ycy4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0lORVFVQUxJVFlfT1BFUkFUT1IodW5pZm9ybV9zbWFsbGludCkKLQotcHJpdmF0ZToKLSAgICAKLSAgICAvLyBcY29uZCBzaG93X3ByaXZhdGUKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gICAgcmVzdWx0X3R5cGUgZ2VuZXJhdGUoRW5naW5lJiBlbmcsIG5kbmJvb3N0OjptcGw6OnRydWVfKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gZXF1aXZhbGVudCB0byAoZW5nKCkgLSBlbmcubWluKCkpICUgKF9tYXggLSBfbWluICsgMSkgKyBfbWluLAotICAgICAgICAvLyBidXQgZ3VhcmFudGVlcyBubyBvdmVyZmxvdy4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPGJhc2VfcmVzdWx0Pjo6dHlwZSBiYXNlX3Vuc2lnbmVkOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPHJlc3VsdF90eXBlPjo6dHlwZSByYW5nZV90eXBlOwotICAgICAgICByYW5nZV90eXBlIHJhbmdlID0gcmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PHJlc3VsdF90eXBlPigpKF9tYXgsIF9taW4pOwotICAgICAgICBiYXNlX3Vuc2lnbmVkIGJhc2VfcmFuZ2UgPQotICAgICAgICAgICAgcmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PHJlc3VsdF90eXBlPigpKChlbmcubWF4KSgpLCAoZW5nLm1pbikoKSk7Ci0gICAgICAgIGJhc2VfdW5zaWduZWQgdmFsID0KLSAgICAgICAgICAgIHJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxiYXNlX3Jlc3VsdD4oKShlbmcoKSwgKGVuZy5taW4pKCkpOwotICAgICAgICBpZihyYW5nZSA+PSBiYXNlX3JhbmdlKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjphZGQ8cmFuZ2VfdHlwZSwgcmVzdWx0X3R5cGU+KCkoCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cmFuZ2VfdHlwZT4odmFsKSwgX21pbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBiYXNlX3Vuc2lnbmVkIG1vZHVsdXMgPSBzdGF0aWNfY2FzdDxiYXNlX3Vuc2lnbmVkPihyYW5nZSkgKyAxOwotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6YWRkPHJhbmdlX3R5cGUsIHJlc3VsdF90eXBlPigpKAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJhbmdlX3R5cGU+KHZhbCAlIG1vZHVsdXMpLCBfbWluKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gICAgcmVzdWx0X3R5cGUgZ2VuZXJhdGUoRW5naW5lJiBlbmcsIG5kbmJvb3N0OjptcGw6OmZhbHNlXykgY29uc3QKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBiYXNlX3Jlc3VsdDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxyZXN1bHRfdHlwZT46OnR5cGUgcmFuZ2VfdHlwZTsKLSAgICAgICAgcmFuZ2VfdHlwZSByYW5nZSA9IHJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxyZXN1bHRfdHlwZT4oKShfbWF4LCBfbWluKTsKLSAgICAgICAgYmFzZV9yZXN1bHQgdmFsID0gbmRuYm9vc3Q6OnVuaWZvcm1fMDE8YmFzZV9yZXN1bHQ+KCkoZW5nKTsKLSAgICAgICAgLy8gd2hhdCBpcyB0aGUgd29yc3QgdGhhdCBjYW4gcG9zc2libHkgaGFwcGVuIGhlcmU/Ci0gICAgICAgIC8vIGJhc2VfcmVzdWx0IG1heSBub3QgYmUgYWJsZSB0byByZXByZXNlbnQgYWxsIHRoZSB2YWx1ZXMgaW4gWzAsIHJhbmdlXQotICAgICAgICAvLyBleGFjdGx5LiAgSWYgdGhpcyBoYXBwZW5zLCBpdCB3aWxsIGNhdXNlIHJvdW5kIG9mZiBlcnJvciBhbmQgd2UKLSAgICAgICAgLy8gd29uJ3QgYmUgYWJsZSB0byBwcm9kdWNlIGFsbCB0aGUgdmFsdWVzIGluIHRoZSByYW5nZS4gIFdlIGRvbid0Ci0gICAgICAgIC8vIGNhcmUgYWJvdXQgdGhpcyBiZWNhdXNlIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHRvbGQgdXMgbm90IHRvIGJ5Ci0gICAgICAgIC8vIHVzaW5nIHVuaWZvcm1fc21hbGxpbnQuICBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvIGJlIGNhcmVmdWwKLSAgICAgICAgLy8gdG8gY2xhbXAgdGhlIHJlc3VsdCwgb3IgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgY2FuIHByb2R1Y2UKLSAgICAgICAgLy8gYW4gb3V0IG9mIHJhbmdlIHJlc3VsdC4KLSAgICAgICAgcmFuZ2VfdHlwZSBvZmZzZXQgPSBzdGF0aWNfY2FzdDxyYW5nZV90eXBlPih2YWwgKiAoc3RhdGljX2Nhc3Q8YmFzZV9yZXN1bHQ+KHJhbmdlKSArIDEpKTsKLSAgICAgICAgaWYob2Zmc2V0ID4gcmFuZ2UpIHJldHVybiBfbWF4OwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjphZGQ8cmFuZ2VfdHlwZSwgcmVzdWx0X3R5cGU+KCkob2Zmc2V0ICwgX21pbik7Ci0gICAgfQotICAgIC8vIFxlbmRjb25kCi0KLSAgICByZXN1bHRfdHlwZSBfbWluOwotICAgIHJlc3VsdF90eXBlIF9tYXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLQotdXNpbmcgcmFuZG9tOjp1bmlmb3JtX3NtYWxsaW50OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fU01BTExJTlRfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FsZ29yaXRobS9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FsZ29yaXRobS9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwOTEwMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hbGdvcml0aG0vZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0FMR09SSVRITV9FUVVBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQUxHT1JJVEhNX0VRVUFMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25jZXB0cy5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIGVxdWFsaXR5IGNvbXBhcmlzb24gdGhhdCBpcyBvcHRpbWl6ZWQgZm9yIGl0ZXJhdG9yCi0gICAgICAgIC8vIHRyYXZlcnNhbCBjYXRlZ29yaWVzIGxlc3MgdGhhbiBSYW5kb21BY2Nlc3NUcmF2ZXJzYWwuCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBJdGVyYXRvckNhdGVnb3J5VGFnMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcyID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWxfaW1wbCggU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGZpcnN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgZmlyc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgbGFzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNhdGVnb3J5VGFnMiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsZWZ0IHJhbmdlIHRoZW4gdGhpcyBpcwotICAgICAgICAgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxvb3AuIFRoZXkgYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHdlIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBzaW11bHRhbmVvdXNseSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHJpZ2h0IHJhbmdlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDEgPT0gbGFzdDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDIgPT0gbGFzdDI7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcmlnaHQgcmFuZ2UgYXQgdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgLy8gaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJpZ2h0IHJhbmdlIGlzIHNob3J0ZXIgdGhhbiB0aGUgbGVmdAotICAgICAgICAgICAgICAgIC8vIGFuZCBoZW5jZSB0aGUgcmVzdWx0IGlzIGZhbHNlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDIgPT0gbGFzdDIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIGxvb3BpbmcgaWYgYW5kIG9ubHkgaWYgdGhlIHZhbHVlcyBhcmUgZXF1YWwKLSAgICAgICAgICAgICAgICBpZiAoKmZpcnN0MSAhPSAqZmlyc3QyKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICsrZmlyc3QxOwotICAgICAgICAgICAgICAgICsrZmlyc3QyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBSZWFjaGluZyB0aGlzIGxpbmUgaW4gdGhlIGFsZ29yaXRobSBpbmRpY2F0ZXMgdGhhdCBhIHZhbHVlCi0gICAgICAgICAgICAvLyBpbmVxdWFsaXR5IGhhcyBiZWVuIGRldGVjdGVkLgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgSXRlcmF0b3JDYXRlZ29yeVRhZzIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBCaW5hcnlQcmVkaWNhdGUgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbF9pbXBsKCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5UHJlZGljYXRlICAgICAgICAgICAgICAgICAgICAgIHByZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNhdGVnb3J5VGFnMiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsZWZ0IHJhbmdlIHRoZW4gdGhpcyBpcwotICAgICAgICAgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxvb3AuIFRoZXkgYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHdlIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBzaW11bHRhbmVvdXNseSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHJpZ2h0IHJhbmdlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDEgPT0gbGFzdDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDIgPT0gbGFzdDI7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcmlnaHQgcmFuZ2UgYXQgdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgLy8gaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJpZ2h0IHJhbmdlIGlzIHNob3J0ZXIgdGhhbiB0aGUgbGVmdAotICAgICAgICAgICAgICAgIC8vIGFuZCBoZW5jZSB0aGUgcmVzdWx0IGlzIGZhbHNlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDIgPT0gbGFzdDIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIGxvb3BpbmcgaWYgYW5kIG9ubHkgaWYgdGhlIHZhbHVlcyBhcmUgZXF1YWwKLSAgICAgICAgICAgICAgICBpZiAoIXByZWQoKmZpcnN0MSwgKmZpcnN0MikpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgKytmaXJzdDE7Ci0gICAgICAgICAgICAgICAgKytmaXJzdDI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFJlYWNoaW5nIHRoaXMgbGluZSBpbiB0aGUgYWxnb3JpdGhtIGluZGljYXRlcyB0aGF0IGEgdmFsdWUKLSAgICAgICAgICAgIC8vIGluZXF1YWxpdHkgaGFzIGJlZW4gZGV0ZWN0ZWQuCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBlcXVhbGl0eSBjb21wYXJpc29uIHRoYXQgaXMgb3B0aW1pemVkIGZvcgotICAgICAgICAvLyByYW5kb20gYWNjZXNzIGl0ZXJhdG9ycy4KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbF9pbXBsKCBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgobGFzdDEgLSBmaXJzdDEpID09IChsYXN0MiAtIGZpcnN0MikpCi0gICAgICAgICAgICAgICAgJiYgc3RkOjplcXVhbChmaXJzdDEsIGxhc3QxLCBmaXJzdDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBCaW5hcnlQcmVkaWNhdGUgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbF9pbXBsKCBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlQcmVkaWNhdGUgICAgICAgICAgICAgICAgICAgICAgICBwcmVkICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgobGFzdDEgLSBmaXJzdDEpID09IChsYXN0MiAtIGZpcnN0MikpCi0gICAgICAgICAgICAgICAgJiYgc3RkOjplcXVhbChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIHByZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsKCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RkOjppdGVyYXRvcl90cmFpdHM8IFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSA+OjppdGVyYXRvcl9jYXRlZ29yeSB0YWcxOwotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czwgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyID46Oml0ZXJhdG9yX2NhdGVnb3J5IHRhZzI7Ci0KLSAgICAgICAgICAgIHJldHVybiBlcXVhbF9pbXBsKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIHRhZzEsIHRhZzIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEJpbmFyeVByZWRpY2F0ZSA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsKCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeVByZWRpY2F0ZSAgICAgICAgICAgICAgICAgICAgICBwcmVkICkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czwgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxID46Oml0ZXJhdG9yX2NhdGVnb3J5IHRhZzE7Ci0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgPjo6aXRlcmF0b3JfY2F0ZWdvcnkgdGFnMjsKLQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsX2ltcGwoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgcHJlZCwgdGFnMSwgdGFnMik7Ci0gICAgICAgIH0KLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotCi0gICAgbmFtZXNwYWNlIHJhbmdlCi0gICAgewotCi0gICAgICAgIC8vLyBcYnJpZWYgdGVtcGxhdGUgZnVuY3Rpb24gZXF1YWwKLSAgICAgICAgLy8vCi0gICAgICAgIC8vLyByYW5nZS1iYXNlZCB2ZXJzaW9uIG9mIHRoZSBlcXVhbCBzdGQgYWxnb3JpdGhtCi0gICAgICAgIC8vLwotICAgICAgICAvLy8gXHByZSBTaW5nbGVQYXNzUmFuZ2UxIGlzIGEgbW9kZWwgb2YgdGhlIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQKLSAgICAgICAgLy8vIFxwcmUgU2luZ2xlUGFzc1JhbmdlMiBpcyBhIG1vZGVsIG9mIHRoZSBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0Ci0gICAgICAgIC8vLyBccHJlIEJpbmFyeVByZWRpY2F0ZSBpcyBhIG1vZGVsIG9mIHRoZSBCaW5hcnlQcmVkaWNhdGVDb25jZXB0Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzUmFuZ2UxLCBjbGFzcyBTaW5nbGVQYXNzUmFuZ2UyID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTEmIHJuZzEsIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTImIHJuZzIgKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8Y29uc3QgU2luZ2xlUGFzc1JhbmdlMT4gKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8Y29uc3QgU2luZ2xlUGFzc1JhbmdlMj4gKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmVxdWFsKAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmJlZ2luKHJuZzEpLCA6Om5kbmJvb3N0OjplbmQocm5nMSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YmVnaW4ocm5nMiksIDo6bmRuYm9vc3Q6OmVuZChybmcyKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vIFxvdmVybG9hZAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgU2luZ2xlUGFzc1JhbmdlMSwgY2xhc3MgU2luZ2xlUGFzc1JhbmdlMiwgY2xhc3MgQmluYXJ5UHJlZGljYXRlID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTEmIHJuZzEsIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTImIHJuZzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlQcmVkaWNhdGUgcHJlZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCggU2luZ2xlUGFzc1JhbmdlQ29uY2VwdDxjb25zdCBTaW5nbGVQYXNzUmFuZ2UxPiApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCggU2luZ2xlUGFzc1JhbmdlQ29uY2VwdDxjb25zdCBTaW5nbGVQYXNzUmFuZ2UyPiApKTsKLQotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6ZXF1YWwoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YmVnaW4ocm5nMSksIDo6bmRuYm9vc3Q6OmVuZChybmcxKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpiZWdpbihybmcyKSwgOjpuZG5ib29zdDo6ZW5kKHJuZzIpLAotICAgICAgICAgICAgICAgIHByZWQpOwotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZQotICAgIHVzaW5nIDo6bmRuYm9vc3Q6OnJhbmdlOjplcXVhbDsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk3ZWQyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9BU19MSVRFUkFMX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9BU19MSVRFUkFMX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2FzX2xpdGVyYWwuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvc3RyX3R5cGVzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotI2luY2x1ZGUgPGN3Y2hhcj4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgbGVuZ3RoKCBjb25zdCBjaGFyKiBzICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cmxlbiggcyApOwotICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBsZW5ndGgoIGNvbnN0IHdjaGFyX3QqIHMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gd2NzbGVuKCBzICk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFJlbWFyazogdGhlIGNvbXBpbGVyIGNhbm5vdCBjaG9vc2UgYmV0d2VlbiBUKiBhbmQgVFtzel0KLSAgICAgICAgLy8gb3ZlcmxvYWRzLCBzbyB3ZSBtdXN0IHB1dCB0aGUgVCogaW50ZXJuYWwgdG8gdGhlCi0gICAgICAgIC8vIHVuY29uc3RyYWluZWQgdmVyc2lvbi4KLSAgICAgICAgLy8KLQotICAgICAgICBpbmxpbmUgYm9vbCBpc19jaGFyX3B0ciggY2hhciogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlubGluZSBib29sIGlzX2NoYXJfcHRyKCBjb25zdCBjaGFyKiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0gICAgICAgIGlubGluZSBib29sIGlzX2NoYXJfcHRyKCB3Y2hhcl90KiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIGJvb2wgaXNfY2hhcl9wdHIoIGNvbnN0IHdjaGFyX3QqICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICAgICAgaW5saW5lIGxvbmcgaXNfY2hhcl9wdHIoIGNvbnN0IFQmIC8qIHIgKi8gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMEw7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxUKj4KLSAgICAgICAgbWFrZV9yYW5nZSggVCogY29uc3QgciwgYm9vbCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTxUKj4oIHIsIHIgKyBsZW5ndGgocikgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGU+Ci0gICAgICAgIG1ha2VfcmFuZ2UoIFQmIHIsIGxvbmcgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Om1ha2VfaXRlcmF0b3JfcmFuZ2UoIHIgKTsKLSAgICAgICAgfQotCi0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGU+Ci0gICAgYXNfbGl0ZXJhbCggUmFuZ2UmIHIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6bWFrZV9yYW5nZSggciwgcmFuZ2VfZGV0YWlsOjppc19jaGFyX3B0cihyKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgUmFuZ2U+Ojp0eXBlPgotICAgIGFzX2xpdGVyYWwoIGNvbnN0IFJhbmdlJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2UoIHIsIHJhbmdlX2RldGFpbDo6aXNfY2hhcl9wdHIocikgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhciwgc3RkOjpzaXplX3Qgc3ogPgotICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxDaGFyKj4gYXNfbGl0ZXJhbCggQ2hhciAoJmFycilbc3pdICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2UoIGFyciwgcmFuZ2VfZGV0YWlsOjppc19jaGFyX3B0cihhcnIpICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIENoYXIsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8Y29uc3QgQ2hhcio+IGFzX2xpdGVyYWwoIGNvbnN0IENoYXIgKCZhcnIpW3N6XSApCi0gICAgewotICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlKCBhcnIsIHJhbmdlX2RldGFpbDo6aXNfY2hhcl9wdHIoYXJyKSApOwotICAgIH0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9iZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAwMWYzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9CRUdJTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQkVHSU5fSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2JlZ2luLmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLW5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLXsKLSNlbmRpZgotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHByaW1hcnkgdGVtcGxhdGUKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICByYW5nZV9iZWdpbiggQyYgYyApCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBJZiB5b3UgZ2V0IGEgY29tcGlsZS1lcnJvciBoZXJlLCBpdCBpcyBtb3N0IGxpa2VseSBiZWNhdXNlCi0gICAgICAgIC8vIHlvdSBoYXZlIG5vdCBpbXBsZW1lbnRlZCByYW5nZV9iZWdpbigpIHByb3Blcmx5IGluCi0gICAgICAgIC8vIHRoZSBuYW1lc3BhY2Ugb2YgQwotICAgICAgICAvLwotICAgICAgICByZXR1cm4gYy5iZWdpbigpOwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBwYWlyCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICBpbmxpbmUgSXRlcmF0b3IgcmFuZ2VfYmVnaW4oIGNvbnN0IHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4mIHAgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHAuZmlyc3Q7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICBpbmxpbmUgSXRlcmF0b3IgcmFuZ2VfYmVnaW4oIHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4mIHAgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHAuZmlyc3Q7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGFycmF5Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgLy8KLSAgICAvLyBNYXkgdGhpcyBiZSBkaXNjYXJkZWQ/IE9yIGlzIGl0IG5lZWRlZCBmb3IgYmFkIGNvbXBpbGVycz8KLSAgICAvLwotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgaW5saW5lIGNvbnN0IFQqIHJhbmdlX2JlZ2luKCBjb25zdCBUICgmYSlbc3pdICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgaW5saW5lIFQqIHJhbmdlX2JlZ2luKCBUICgmYSlbc3pdICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhOwotICAgIH0KLQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLX0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0jZW5kaWYKLQotLy8gVXNlIGEgQURMIG5hbWVzcGFjZSBiYXJyaWVyIHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIG90aGVyIHVucXVhbGlmaWVkCi0vLyBjYWxscy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdpdGggQysrMHggZW5jb3VyYWdpbmcKLS8vIHVucXVhbGlmaWVkIGNhbGxzIHRvIGJlZ2luL2VuZC4KLW5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotewotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxUPjo6dHlwZSBiZWdpbiggVCYgciApCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgcmV0dXJuIHJhbmdlX2JlZ2luKCByICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlIGJlZ2luKCBjb25zdCBUJiByICkKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9kZXRhaWw7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmFuZ2VfYmVnaW4oIHIgKTsKLX0KLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlCi0gICAgICAgIGNvbnN0X2JlZ2luKCBjb25zdCBUJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9hZGxfYmFycmllcjo6YmVnaW4oIHIgKTsKLSAgICAgICAgfQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXI7Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25jZXB0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmNlcHRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk5MGMxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmNlcHRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5IGNvbmNlcHQgY2hlY2tzCi0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAyMDA5LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uCi0vLyAgYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIENvcHlyaWdodCBEYW5pZWwgV2Fsa2VyIDIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24KLS8vICBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9DT05DRVBUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NvbmNlcHRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL21pc2NfY29uY2VwdC5ocHA+Ci0KLS8qIQotICogXGZpbGUKLSAqIFxicmllZiBDb25jZXB0IGNoZWNrcyBmb3IgdGhlIEJvb3N0IFJhbmdlIGxpYnJhcnkuCi0gKgotICogVGhlIHN0cnVjdHVyZXMgaW4gdGhpcyBmaWxlIG1heSBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gKiBCb29zdCBDb25jZXB0IENoZWNrIGxpYnJhcnkgdG8gaW5zdXJlIHRoYXQgdGhlIHR5cGUgb2YgYSBmdW5jdGlvbgotICogcGFyYW1ldGVyIGlzIGNvbXBhdGlibGUgd2l0aCBhIHJhbmdlIGNvbmNlcHQuIElmIG5vdCwgYSBtZWFuaW5nZnVsCi0gKiBjb21waWxlIHRpbWUgZXJyb3IgaXMgZ2VuZXJhdGVkLiBDaGVja3MgYXJlIHByb3ZpZGVkIGZvciB0aGUgcmFuZ2UKLSAqIGNvbmNlcHRzIHJlbGF0ZWQgdG8gaXRlcmF0b3IgdHJhdmVyc2FsIGNhdGVnb3JpZXMuIEZvciBleGFtcGxlLCB0aGUKLSAqIGZvbGxvd2luZyBsaW5lIGNoZWNrcyB0aGF0IHRoZSB0eXBlIFQgbW9kZWxzIHRoZSBGb3J3YXJkUmFuZ2UKLSAqIGNvbmNlcHQuCi0gKgotICogXGNvZGUKLSAqIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChGb3J3YXJkUmFuZ2VDb25jZXB0PFQ+KSk7Ci0gKiBcZW5kY29kZQotICoKLSAqIEEgZGlmZmVyZW50IGNvbmNlcHQgY2hlY2sgaXMgcmVxdWlyZWQgdG8gZW5zdXJlIHdyaXRlYWJsZSB2YWx1ZQotICogYWNjZXNzLiBGb3IgZXhhbXBsZSB0byBjaGVjayBmb3IgYSBGb3J3YXJkUmFuZ2UgdGhhdCBjYW4gYmUgd3JpdHRlbgotICogdG8sIHRoZSBmb2xsb3dpbmcgY29kZSBpcyByZXF1aXJlZC4KLSAqCi0gKiBcY29kZQotICogTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKFdyaXRlYWJsZUZvcndhcmRSYW5nZUNvbmNlcHQ8VD4pKTsKLSAqIFxlbmRjb2RlCi0gKgotICogXHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlL2RvYy9yYW5nZS5odG1sIGZvciBkZXRhaWxzCi0gKiBhYm91dCByYW5nZSBjb25jZXB0cy4KLSAqIFxzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pdGVyYXRvci9kb2MvaXRlcmF0b3JfY29uY2VwdHMuaHRtbAotICogZm9yIGRldGFpbHMgYWJvdXQgaXRlcmF0b3IgY29uY2VwdHMuCi0gKiBcc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29uY2VwdF9jaGVjay9jb25jZXB0X2NoZWNrLmh0bSBmb3IKLSAqIGRldGFpbHMgYWJvdXQgY29uY2VwdCBjaGVja3MuCi0gKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotCi0vLyBMaXN0IGJyb2tlbiBjb21waWxlciB2ZXJzaW9ucyBoZXJlOgotICAgICNpZmRlZiBfX0dOVUNfXwotICAgICAgICAvLyBHTlVDIDQuMiBoYXMgc3RyYW5nZSBpc3N1ZXMgY29ycmVjdGx5IGRldGVjdGluZyBjb21wbGlhbmNlIHdpdGggdGhlIENvbmNlcHRzCi0gICAgICAgIC8vIGhlbmNlIHRoZSBsZWFzdCBkaXNydXB0aXZlIGFwcHJvYWNoIGlzIHRvIHR1cm4tb2ZmIHRoZSBjb25jZXB0IGNoZWNraW5nIGZvcgotICAgICAgICAvLyB0aGlzIHZlcnNpb24gb2YgdGhlIGNvbXBpbGVyLgotICAgICAgICAjaWYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA9PSAyCi0gICAgICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVCAwCi0gICAgICAgICNlbmRpZgotICAgICNlbmRpZgotCi0gICAgI2lmZGVmIF9fQk9STEFORENfXwotICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVCAwCi0gICAgI2VuZGlmCi0KLSAgICAjaWZkZWYgX19QQVRIQ0NfXwotICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVCAwCi0gICAgI2VuZGlmCi0KLS8vIERlZmF1bHQgdG8gdXNpbmcgdGhlIGNvbmNlcHQgYXNzZXJ0cyB1bmxlc3Mgd2UgaGF2ZSBkZWZpbmVkIGl0IG9mZgotLy8gZHVyaW5nIHRoZSBzZWFyY2ggZm9yIGJsYWNrIGxpc3RlZCBjb21waWxlcnMuCi0gICAgI2lmbmRlZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQgMQotICAgICNlbmRpZgotCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoIHggKSBORE5CT09TVF9DT05DRVBUX0FTU0VSVCggeCApCi0jZWxzZQotICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoIHggKQotI2VuZGlmCi0KLSAgICAgICAgLy8gUmF0aW9uYWxlIGZvciB0aGUgaW5jbHVzaW9uIG9mIHJlZGVmaW5lZCBpdGVyYXRvciBjb25jZXB0Ci0gICAgICAgIC8vIGNsYXNzZXM6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoZSBSYW5nZSBhbGdvcml0aG1zIG9mdGVuIGRvIG5vdCByZXF1aXJlIHRoYXQgdGhlIGl0ZXJhdG9ycyBhcmUKLSAgICAgICAgLy8gQXNzaWduYWJsZSBvciBkZWZhdWx0IGNvbnN0cnVjdGFibGUsIGJ1dCB0aGUgY29ycmVjdCBzdGFuZGFyZAotICAgICAgICAvLyBjb25mb3JtYW50IGl0ZXJhdG9ycyBkbyByZXF1aXJlIHRoZSBpdGVyYXRvcnMgdG8gYmUgYSBtb2RlbCBvZiB0aGUKLSAgICAgICAgLy8gQXNzaWduYWJsZSBjb25jZXB0LgotICAgICAgICAvLyBJdGVyYXRvcnMgdGhhdCBjb250YWlucyBhIGZ1bmN0b3IgdGhhdCBpcyBub3QgYXNzaWduYWJsZSB0aGVyZWZvcmUKLSAgICAgICAgLy8gYXJlIG5vdCBjb3JyZWN0IG1vZGVscyBvZiB0aGUgc3RhbmRhcmQgaXRlcmF0b3IgY29uY2VwdHMsCi0gICAgICAgIC8vIGRlc3BpdGUgYmVpbmcgYWRlcXVhdGUgZm9yIG1vc3QgYWxnb3JpdGhtcy4gQW4gZXhhbXBsZSBvZiB0aGlzCi0gICAgICAgIC8vIHVzZSBjYXNlIGlzIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgbmRuYm9vc3Q6OmFkYXB0b3JzOjpmaWx0ZXJlZAotICAgICAgICAvLyBjbGFzcyB3aXRoIGEgbmRuYm9vc3Q6OmxhbWJkYTo6YmluZCBnZW5lcmF0ZWQgZnVuY3Rvci4KLSAgICAgICAgLy8gVWx0aW1hdGVseSBtb2RlbGluZyB0aGUgcmFuZ2UgY29uY2VwdHMgdXNpbmcgY29tcG9zaXRpb24KLSAgICAgICAgLy8gd2l0aCB0aGUgQm9vc3QuSXRlcmF0b3IgY29uY2VwdHMgd291bGQgcmVuZGVyIHRoZSBsaWJyYXJ5Ci0gICAgICAgIC8vIGluY29tcGF0aWJsZSB3aXRoIG1hbnkgY29tbW9uIEJvb3N0LkxhbWJkYSBleHByZXNzaW9ucy4KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgIHN0cnVjdCBJbmNyZW1lbnRhYmxlSXRlcmF0b3JDb25jZXB0IDogQ29weUNvbnN0cnVjdGlibGU8SXRlcmF0b3I+Ci0gICAgICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpdGVyYXRvcl90cmF2ZXJzYWw8SXRlcmF0b3I+Ojp0eXBlIHRyYXZlcnNhbF9jYXRlZ29yeTsKLQotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxfY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShJbmNyZW1lbnRhYmxlSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgICAgICAodm9pZClpKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBJdGVyYXRvciBpOwotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgIHN0cnVjdCBTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0Ci0gICAgICAgICAgICA6IEluY3JlbWVudGFibGVJdGVyYXRvckNvbmNlcHQ8SXRlcmF0b3I+Ci0gICAgICAgICAgICAsIEVxdWFsaXR5Q29tcGFyYWJsZTxJdGVyYXRvcj4KLSAgICAgICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQ6OnRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGkyKCsraSk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhpMik7Ci0KLSAgICAgICAgICAgICAgICAvLyBkZWxpYmVyYXRlbHkgd2UgYXJlIGxvb3NlIHdpdGggdGhlIHBvc3RmaXggdmVyc2lvbiBmb3IgdGhlIHNpbmdsZSBwYXNzCi0gICAgICAgICAgICAgICAgLy8gaXRlcmF0b3IgZHVlIHRvIHRoZSBjb21tb25seSBwb29yIGFkaGVyZW5jZSB0byB0aGUgc3BlY2lmaWNhdGlvbiBtZWFucyB0aGF0Ci0gICAgICAgICAgICAgICAgLy8gbWFueSBhbGdvcml0aG1zIHdvdWxkIGJlIHVudXNhYmxlLCB3aGVyZWFzIGFjdHVhbGx5IHdpdGhvdXQgdGhlIGNoZWNrIHRoZXkKLSAgICAgICAgICAgICAgICAvLyB3b3JrCi0gICAgICAgICAgICAgICAgKHZvaWQpKGkrKyk7Ci0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZSByMSgqaSk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyMSk7Ci0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZSByMigqKCsraSkpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocjIpOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSXRlcmF0b3IgaTsKLSNlbmRpZgotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPgotICAgICAgICBzdHJ1Y3QgRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdAotICAgICAgICAgICAgOiBTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0PEl0ZXJhdG9yPgotICAgICAgICAgICAgLCBEZWZhdWx0Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgICAgICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKGlzX2ludGVncmFsPGRpZmZlcmVuY2VfdHlwZT4pKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oc3RkOjpudW1lcmljX2xpbWl0czxkaWZmZXJlbmNlX3R5cGU+Ojppc19zaWduZWQsID09LCB0cnVlKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEZvcndhcmRJdGVyYXRvckNvbmNlcHQ6OnRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgZm9yd2FyZF90cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEZvcndhcmRJdGVyYXRvckNvbmNlcHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gU2VlIHRoZSBhYm92ZSBub3RlIGluIHRoZSBTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0IGFib3V0IHRoZSBoYW5kbGluZyBvZiB0aGUKLSAgICAgICAgICAgICAgICAvLyBwb3N0Zml4IGluY3JlbWVudC4gU2luY2Ugd2l0aCBmb3J3YXJkIGFuZCBiZXR0ZXIgaXRlcmF0b3JzIHRoZXJlIGlzIG5vIG5lZWQKLSAgICAgICAgICAgICAgICAvLyBmb3IgYSBwcm94eSwgd2UgY2FuIHNlbnNpYmx5IHJlcXVpcmUgdGhhdCB0aGUgZGVyZWZlcmVuY2UgcmVzdWx0Ci0gICAgICAgICAgICAgICAgLy8gaXMgY29udmVydGlibGUgdG8gcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGkyKGkrKyk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhpMik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UgcigqKGkrKykpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBJdGVyYXRvciBpOwotI2VuZGlmCi0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KLSAgICAgICAgIHN0cnVjdCBCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0Ci0gICAgICAgICAgICAgOiBGb3J3YXJkSXRlcmF0b3JDb25jZXB0PEl0ZXJhdG9yPgotICAgICAgICAgewotICNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0Ojp0cmF2ZXJzYWxfY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLS1pOwotICAgICAgICAgICAgICAgICAodm9pZClpLS07Ci0gICAgICAgICAgICAgfQotICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICBJdGVyYXRvciBpOwotICNlbmRpZgotICAgICAgICAgfTsKLQotICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgICBzdHJ1Y3QgUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0Ci0gICAgICAgICAgICAgOiBCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0PEl0ZXJhdG9yPgotICAgICAgICAgewotICNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ6OnRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGkgKz0gbjsKLSAgICAgICAgICAgICAgICAgaSA9IGkgKyBuOwotICAgICAgICAgICAgICAgICBpID0gbiArIGk7Ci0gICAgICAgICAgICAgICAgIGkgLT0gbjsKLSAgICAgICAgICAgICAgICAgaSA9IGkgLSBuOwotICAgICAgICAgICAgICAgICBuID0gaSAtIGo7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDo6ZGlmZmVyZW5jZV90eXBlIG47Ci0gICAgICAgICAgICAgSXRlcmF0b3IgaTsKLSAgICAgICAgICAgICBJdGVyYXRvciBqOwotICNlbmRpZgotICAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgU2luZ2xlUGFzc1JhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgU2luZ2xlUGFzc1JhbmdlQ29uY2VwdAotICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxUIGNvbnN0Pjo6dHlwZSAgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgICAgICAgIGl0ZXJhdG9yOwotCi0gICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0PGl0ZXJhdG9yPikpOwotICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6U2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdDxjb25zdF9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTaW5nbGVQYXNzUmFuZ2VDb25jZXB0KQotICAgICAgICAgewotICAgICAgICAgICAgLy8gVGhpcyBoYXMgYmVlbiBtb2RpZmllZCBmcm9tIGFzc2lnbmluZyB0byB0aGlzLT5pCi0gICAgICAgICAgICAvLyAod2hlcmUgaSB3YXMgYSBtZW1iZXIgdmFyaWFibGUpIHRvIGltcHJvdmUKLSAgICAgICAgICAgIC8vIGNvbXBhdGliaWxpdHkgd2l0aCBCb29zdC5MYW1iZGEKLSAgICAgICAgICAgIGl0ZXJhdG9yIGkxID0gbmRuYm9vc3Q6OmJlZ2luKCptX3JhbmdlKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIGkyID0gbmRuYm9vc3Q6OmVuZCgqbV9yYW5nZSk7Ci0KLSAgICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhpMSk7Ci0gICAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoaTIpOwotCi0gICAgICAgICAgICBjb25zdF9jb25zdHJhaW50cygqbV9yYW5nZSk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgVCYgY29uc3RfcmFuZ2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNpMSA9IG5kbmJvb3N0OjpiZWdpbihjb25zdF9yYW5nZSk7Ci0gICAgICAgICAgICBjb25zdF9pdGVyYXRvciBjaTIgPSBuZG5ib29zdDo6ZW5kKGNvbnN0X3JhbmdlKTsKLQotICAgICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGNpMSk7Ci0gICAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoY2kyKTsKLSAgICAgICAgfQotCi0gICAgICAgLy8gUmF0aW9uYWxlOgotICAgICAgIC8vIFRoZSB0eXBlIG9mIG1fcmFuZ2UgaXMgVCogcmF0aGVyIHRoYW4gVCBiZWNhdXNlIGl0IGFsbG93cwotICAgICAgIC8vIFQgdG8gYmUgYW4gYWJzdHJhY3QgY2xhc3MuIFRoZSBvdGhlciBvYnZpb3VzIGFsdGVybmF0aXZlIG9mCi0gICAgICAgLy8gVCYgcHJvZHVjZXMgYSB3YXJuaW5nIG9uIHNvbWUgY29tcGlsZXJzLgotICAgICAgIFQqIG1fcmFuZ2U7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgRm9yd2FyZFJhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgRm9yd2FyZFJhbmdlQ29uY2VwdCA6IFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OkZvcndhcmRJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBGb3J3YXJkUmFuZ2VDb25jZXB0OjppdGVyYXRvcj4pKTsKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6Rm9yd2FyZEl0ZXJhdG9yQ29uY2VwdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEZvcndhcmRSYW5nZUNvbmNlcHQ6OmNvbnN0X2l0ZXJhdG9yPikpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFJhbmdlPgotICAgIHN0cnVjdCBXcml0ZWFibGVSYW5nZUNvbmNlcHQKLSAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgaXRlcmF0b3I7Ci0KLSAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShXcml0ZWFibGVSYW5nZUNvbmNlcHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgICppID0gdjsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0gICAgICAgIGl0ZXJhdG9yIGk7Ci0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfdmFsdWU8UmFuZ2U+Ojp0eXBlIHY7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgV3JpdGVhYmxlRm9yd2FyZFJhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgV3JpdGVhYmxlRm9yd2FyZFJhbmdlQ29uY2VwdAotICAgICAgICA6IEZvcndhcmRSYW5nZUNvbmNlcHQ8VD4KLSAgICAgICAgLCBXcml0ZWFibGVSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIEJpZGlyZWN0aW9uYWxSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IEJpZGlyZWN0aW9uYWxSYW5nZUNvbmNlcHQgOiBGb3J3YXJkUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdDo6aXRlcmF0b3I+KSk7Ci0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OkJpZGlyZWN0aW9uYWxJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0Ojpjb25zdF9pdGVyYXRvcj4pKTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBXcml0ZWFibGVCaWRpcmVjdGlvbmFsUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBXcml0ZWFibGVCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0Ci0gICAgICAgIDogQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdDxUPgotICAgICAgICAsIFdyaXRlYWJsZVJhbmdlQ29uY2VwdDxUPgotICAgIHsKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgUmFuZG9tQWNjZXNzUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQgOiBCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQ6Oml0ZXJhdG9yPikpOwotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQ6OmNvbnN0X2l0ZXJhdG9yPikpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIFdyaXRlYWJsZVJhbmRvbUFjY2Vzc1JhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgV3JpdGVhYmxlUmFuZG9tQWNjZXNzUmFuZ2VDb25jZXB0Ci0gICAgICAgIDogUmFuZG9tQWNjZXNzUmFuZ2VDb25jZXB0PFQ+Ci0gICAgICAgICwgV3JpdGVhYmxlUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5HRV9DT05DRVBUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM3MmQ2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9DT05GSUdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0NPTkZJR19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRQotI2Vycm9yICJtYWNybyBhbHJlYWR5IGRlZmluZWQhIgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSMgZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgdHlwZW5hbWUKLSNlbHNlCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkgJiYgIWRlZmluZWQoX01TQ19FWFRFTlNJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgdHlwZW5hbWUKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotIyBlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SQU5HRV9OT19BUlJBWV9TVVBQT1JUCi0jZXJyb3IgIm1hY3JvIGFscmVhZHkgZGVmaW5lZCEiCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDwgMTMwMCApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fTVdFUktTX18sIDw9IDB4MzAwMyApCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX05PX0FSUkFZX1NVUFBPUlQgMQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SQU5HRV9OT19BUlJBWV9TVVBQT1JUCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpIChib29zdF9yYW5nZV9hcnJheSkKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfTk9fU1RBVElDX0FTU0VSVAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKCkgKCZib29zdF9yYW5nZV9hcnJheSkKLSNlbmRpZgotCi0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZWQzZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9DT05TVF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09OU1RfSVRFUkFUT1JfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29uc3RfaXRlcmF0b3IuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9leHRyYWN0X29wdGlvbmFsX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGRlZmF1bHQKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIAotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgewotICAgICAgICBORE5CT09TVF9SQU5HRV9FWFRSQUNUX09QVElPTkFMX1RZUEUoIGNvbnN0X2l0ZXJhdG9yICkKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yIDogcmFuZ2VfZGV0YWlsOjpleHRyYWN0X2NvbnN0X2l0ZXJhdG9yPEM+Ci0gICAge307Ci0gICAgCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBwYWlyCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yPCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgdHlwZTsKLSAgICB9OwotICAgIAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gYXJyYXkKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3I8IFRbc3pdID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2FzX2xpdGVyYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYXNfbGl0ZXJhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyM2FlMTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYXNfbGl0ZXJhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0FTX0xJVEVSQUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9BU19MSVRFUkFMX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9kZXRhaWxfc3RyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlPiAKLSAgICBhc19saXRlcmFsKCBSYW5nZSYgciApCi0gICAgewotICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6bWFrZV9pdGVyYXRvcl9yYW5nZSggOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfYmVnaW4ociksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQocikgKTsKLSAgICB9Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9iZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9iZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYjVlNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0JFR0lOX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfQkVHSU5fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGRlZmF1bHQKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSBmdW4oIEMmIGMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBjLmJlZ2luKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gcGFpcgotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxQPjo6dHlwZSBmdW4oIGNvbnN0IFAmIHAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwLmZpcnN0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gYXJyYXkKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPGFycmF5Xz4KLSAgICAgICAgewotICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgICAgIHN0YXRpYyBUKiBmdW4oIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYm9vc3RfcmFuZ2VfYXJyYXk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfdmFsdWU8VD46OnR5cGUqIGZ1bihUJiB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICAgICAgfQotICAgICAgICAjZW5kaWYKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgYmVnaW4oIEMmIGMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjpyYW5nZV9iZWdpbjwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlID46OmZ1biggYyApOwotICAgICAgICB9Ci0gICAgfQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZmY5ZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfQ09NTU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfQ09NTU9OX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NmaW5hZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1pc3NpbmcgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAgd29ya2Fyb3VuZC4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCAKLSAgICB7ICAgICAgICAKLSAgICAgICAgLy8gMSA9IHN0ZCBjb250YWluZXJzCi0gICAgICAgIC8vIDIgPSBzdGQ6OnBhaXIKLSAgICAgICAgLy8gMyA9IGNvbnN0IHN0ZDo6cGFpcgotICAgICAgICAvLyA0ID0gYXJyYXkKLSAgICAgICAgLy8gNSA9IGNvbnN0IGFycmF5Ci0gICAgICAgIC8vIDYgPSBjaGFyIGFycmF5Ci0gICAgICAgIC8vIDcgPSB3Y2hhcl90IGFycmF5Ci0gICAgICAgIC8vIDggPSBjaGFyKgotICAgICAgICAvLyA5ID0gY29uc3QgY2hhcioKLSAgICAgICAgLy8gMTAgPSB3aGFyX3QqCi0gICAgICAgIC8vIDExID0gY29uc3Qgd2NoYXJfdCoKLSAgICAgICAgLy8gMTIgPSBzdHJpbmcKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDE+Ojp0eXBlICAgIHN0ZF9jb250YWluZXJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwyPjo6dHlwZSAgICBzdGRfcGFpcl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDM+Ojp0eXBlICAgIGNvbnN0X3N0ZF9wYWlyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88ND46OnR5cGUgICAgYXJyYXlfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw1Pjo6dHlwZSAgICBjb25zdF9hcnJheV87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDY+Ojp0eXBlICAgIGNoYXJfYXJyYXlfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw3Pjo6dHlwZSAgICB3Y2hhcl90X2FycmF5XzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88OD46OnR5cGUgICAgY2hhcl9wdHJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw5Pjo6dHlwZSAgICBjb25zdF9jaGFyX3B0cl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDEwPjo6dHlwZSAgIHdjaGFyX3RfcHRyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88MTE+Ojp0eXBlICAgY29uc3Rfd2NoYXJfdF9wdHJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwxMj46OnR5cGUgICBzdHJpbmdfOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaGVscGVyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBDKiBjOwotICAgICAgICAgICAgc3RhdGljIEMgIHB0cjsKLQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19wYWlyXyAgICAgICAgICAgICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfcGFpcl9pbXBsKCBjICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfY2hhcl9wdHJfICAgICAgICAgICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX2NoYXJfcHRyX2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2NvbnN0X2NoYXJfcHRyXyAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc19jb25zdF9jaGFyX3B0cl9pbXBsKCBwdHIgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc193Y2hhcl90X3B0cl8gICAgICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfd2NoYXJfdF9wdHJfaW1wbCggcHRyICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfY29uc3Rfd2NoYXJfdF9wdHJfICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX2NvbnN0X3djaGFyX3RfcHRyX2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2NoYXJfYXJyYXlfICAgICAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc19jaGFyX2FycmF5X2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX3djaGFyX3RfYXJyYXlfICAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc193Y2hhcl90X2FycmF5X2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX3N0cmluZ18gICAgICAgICAgICAgID0gKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPGlzX2NvbnN0X2NoYXJfcHRyXywgaXNfY29uc3Rfd2NoYXJfdF9wdHJfPjo6dmFsdWUgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2FycmF5XyAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OmlzX2FycmF5PEM+Ojp2YWx1ZSApOwotICAgICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGNsYXNzIHJhbmdlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19wYWlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0ZF9wYWlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgPjo6dHlwZSBwYWlyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjphcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJfdCA+Ojp0eXBlIGFycmF5X3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfc3RyaW5nXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyaW5nXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdCA+Ojp0eXBlIHN0cmluZ190OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX2NvbnN0X2NoYXJfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6Y29uc3RfY2hhcl9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdCA+Ojp0eXBlIGNvbnN0X2NoYXJfcHRyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfY2hhcl9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpjaGFyX3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2NoYXJfcHRyX3QgPjo6dHlwZSBjaGFyX3B0cl90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX2NvbnN0X3djaGFyX3RfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6Y29uc3Rfd2NoYXJfdF9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3B0cl90ID46OnR5cGUgY29uc3Rfd2NoYXJfcHRyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfd2NoYXJfdF9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjp3Y2hhcl90X3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3djaGFyX3B0cl90ID46OnR5cGUgd2NoYXJfcHRyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfd2NoYXJfdF9hcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OndjaGFyX3RfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl9wdHJfdCA+Ojp0eXBlIHdjaGFyX2FycmF5X3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfY2hhcl9hcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmNoYXJfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl9hcnJheV90ID46OnR5cGUgY2hhcl9hcnJheV90OwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0Ojppc192b2lkPGNoYXJfYXJyYXlfdD46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdGRfY29udGFpbmVyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9hcnJheV90ID46OnR5cGUgdHlwZTsgIAotICAgICAgICB9OyAvLyBjbGFzcyAncmFuZ2UnIAotICAgIH0KLX0KLSAgICAgICAgCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29uc3RfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29uc3RfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjc1MjkyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbnN0X2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9DT05TVF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0NPTlNUX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1pc3NpbmcgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAgd29ya2Fyb3VuZC4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCAKLSAgICB7ICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3IgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPHN0ZF9wYWlyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBQOjpmaXJzdF90eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPGFycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gCi0gICAgCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGNsYXNzIHJhbmdlX2NvbnN0X2l0ZXJhdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSBjX3R5cGU7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZV9jb25zdF9pdGVyYXRvcl88Y190eXBlPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHB0czxDPjo6dHlwZSB0eXBlOyAKLSAgICB9OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZGV0YWlsX3N0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9kZXRhaWxfc3RyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FkMDc1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9kZXRhaWxfc3RyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3NiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfREVUQUlMX1NUUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0RFVEFJTF9TVFJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gaXRlcmF0b3IKLSAgICAgICAgLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxjaGFyX2FycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjaGFyKiB0eXBlOyAKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgY2hhciogdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgd2NoYXJfdCogdHlwZTsgCi0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB3Y2hhcl90KiB0eXBlOyAKLSAgICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gY29uc3QgaXRlcmF0b3IKLSAgICAgICAgLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88Y2hhcl9hcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBjaGFyKiB0eXBlOyAKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgY2hhciogdHlwZTsgCi0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHdjaGFyX3QqIHR5cGU7IAotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3Qgd2NoYXJfdCogdHlwZTsgCi0gICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC92YWx1ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIAotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIHN0cl9iZWdpbigpCi0gICAgICAgIC8vCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNoYXIqIGZ1biggY2hhciogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogZnVuKCBjb25zdCBjaGFyKiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdGF0aWMgd2NoYXJfdCogZnVuKCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90KiBmdW4oIGNvbnN0IHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSAKLSAgICAgICAgc3RyX2JlZ2luKCBDJiBjICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6cmFuZ2VfYmVnaW48IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSA+OjpmdW4oIGMgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHN0cl9lbmQoKQotICAgICAgICAvLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjaGFyX2FycmF5Xz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgICAgIHN0YXRpYyBUKiBmdW4oIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6YXJyYXlfZW5kKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHdjaGFyX3RfYXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICAgICAgc3RhdGljIFQqIGZ1biggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjphcnJheV9lbmQoIGJvb3N0X3JhbmdlX2FycmF5ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY2hhciogZnVuKCBjaGFyKiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmdW4oIGNvbnN0IGNoYXIqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIHdjaGFyX3QqIGZ1biggd2NoYXJfdCogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90KiBmdW4oIGNvbnN0IHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSAKLSAgICAgICAgc3RyX2VuZCggQyYgYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OnJhbmdlX2VuZDwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlID46OmZ1biggYyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gc2l6ZV90eXBlCi0gICAgICAgIC8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzxjaGFyX2FycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsgIAotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHZhbHVlX3R5cGUKLSAgICAgICAgLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPGNoYXJfYXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7IAotICAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBjaGFyIHR5cGU7Ci0gICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICB0eXBlZGVmIHdjaGFyX3QgdHlwZTsKLSAgICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB3Y2hhcl90IHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Zjg0OGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfRU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfRU5EX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTkROQk9PU1RfTVNWQwotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvdmM2L2VuZC5ocHA+Ci0jZWxzZQotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwPgotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgICAgICBmdW4oIEMmIGMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBjLmVuZCgpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFA+Ojp0eXBlCi0gICAgICAgICAgICBmdW4oIGNvbnN0IFAmIHAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwLnNlY29uZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGFycmF5Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8YXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICAgICAgc3RhdGljIFQqIGZ1biggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjphcnJheV9lbmQoIGJvb3N0X3JhbmdlX2FycmF5ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSogZnVuKFQmIHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHQgKyByZW1vdmVfZXh0ZW50PFQ+OjpzaXplOwotICAgICAgICAgICAgfQotICAgICAgICAjZW5kaWYKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgZW5kKCBDJiBjICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6cmFuZ2VfZW5kPCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgPjo6ZnVuKCBjICk7Ci0gICAgICAgIH0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSMgZW5kaWYgLy8gVkM2Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9leHRyYWN0X29wdGlvbmFsX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmE0N2I1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBBcm5vIFNjaG9lZGwgJiBOZWlsIEdyb3ZlcyAyMDA5LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfRVhUUkFDVF9PUFRJT05BTF9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfRVhUUkFDVF9PUFRJT05BTF9UWVBFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OX0lNUExJQ0lUX0RFRkFVTFRfQVJHUwotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRSggYV90eXBlZGVmICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZXh0cmFjdF8gIyMgYV90eXBlZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6YV90eXBlZGVmIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OwotCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBleGlzdHMgeyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLSAgICB9Ci19Ci0KLS8vIERlZmluZXMgZXh0cmFjdF9zb21lX3R5cGVkZWY8VD4gd2hpY2ggZXhwb3NlcyBUOjpzb21lX3R5cGVkZWYgYXMKLS8vIGV4dHJhY3Rfc29tZV90eXBlZGVmPFQ+Ojp0eXBlIGlmIFQ6OnNvbWVfdHlwZWRlZiBleGlzdHMuIE90aGVyd2lzZQotLy8gZXh0cmFjdF9zb21lX3R5cGVkZWY8VD4gaXMgZW1wdHkuCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRSggYV90eXBlZGVmICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGU9dm9pZCA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZXh0cmFjdF8gIyMgYV90eXBlZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZXh0cmFjdF8gIyMgYV90eXBlZGVmPCBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmV4aXN0czwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjphX3R5cGVkZWYgPjo6dHlwZSBcCi0gICAgPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6YV90eXBlZGVmIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMTBiNDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0lNUExFTUVOVEFUSU9OX0hFTFBfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9JTVBMRU1FTlRBVElPTl9IRUxQX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGJvb3N0X3JhbmdlX3NpbGVuY2Vfd2FybmluZyggY29uc3QgVCYgKSB7IH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZW5kKCkgaGVscAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICBpbmxpbmUgY29uc3QgY2hhciogc3RyX2VuZCggY29uc3QgY2hhciogcywgY29uc3QgY2hhciogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcyArIHN0cmxlbiggcyApOwotICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0gICAgICAgIGlubGluZSBjb25zdCB3Y2hhcl90KiBzdHJfZW5kKCBjb25zdCB3Y2hhcl90KiBzLCBjb25zdCB3Y2hhcl90KiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzICsgd2NzbGVuKCBzICk7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGlubGluZSBjb25zdCB3Y2hhcl90KiBzdHJfZW5kKCBjb25zdCB3Y2hhcl90KiBzLCBjb25zdCB3Y2hhcl90KiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCBzID09IDAgfHwgc1swXSA9PSAwICkKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIHdoaWxlKCAqKytzICE9IDAgKQotICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhciA+Ci0gICAgICAgIGlubGluZSBDaGFyKiBzdHJfZW5kKCBDaGFyKiBzICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q2hhcio+KCBzdHJfZW5kKCBzLCBzICkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIGlubGluZSBUKiBhcnJheV9lbmQoIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJvb3N0X3JhbmdlX2FycmF5ICsgc3o7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICBpbmxpbmUgY29uc3QgVCogYXJyYXlfZW5kKCBjb25zdCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBib29zdF9yYW5nZV9hcnJheSArIHN6OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHNpemUoKSBoZWxwCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBDaGFyID4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IHN0cl9zaXplKCBjb25zdCBDaGFyKiBjb25zdCYgcyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdHJfZW5kKCBzICkgLSBzOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGFycmF5X3NpemUoIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vc3RfcmFuZ2Vfc2lsZW5jZV93YXJuaW5nKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgcmV0dXJuIHN6OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGFycmF5X3NpemUoIGNvbnN0IFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vc3RfcmFuZ2Vfc2lsZW5jZV93YXJuaW5nKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgcmV0dXJuIHN6OwotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0N2I4M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtaXNzaW5nIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gIHdvcmthcm91bmQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgCi0gICAgeyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXyB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgUDo6Zmlyc3RfdHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88YXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSogdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgIH0gCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgY2xhc3MgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgY190eXBlOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByYW5nZV9kZXRhaWw6OnJhbmdlX2l0ZXJhdG9yXzxjX3R5cGU+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcHRzPEM+Ojp0eXBlIHR5cGU7IAotICAgIH07Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvbWlzY19jb25jZXB0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL21pc2NfY29uY2VwdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MGRlMzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvbWlzY19jb25jZXB0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkgY29uY2VwdCBjaGVja3MKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24KLS8vICBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9NSVNDX0NPTkNFUFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9NSVNDX0NPTkNFUFRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0X2NoZWNrLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgICAgICBjbGFzcyBTYW1lVHlwZUNvbmNlcHQKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNhbWVUeXBlQ29uY2VwdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzYW1lX3R5cGUoYSxiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2FtZV90eXBlKFQsVCkge30KLSAgICAgICAgICAgIFQxIGE7Ci0gICAgICAgICAgICBUMiBiOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZTBlMzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgSm9uYXRoYW4gVHVya2FuaXMgMjAwNS4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9SRU1PVkVfQk9VTkRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfUkVNT1ZFX0JPVU5EU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBNU1ZDLCBOT19JTlRSSU5TSUNfV0NIQVJfVCwgcHV0IHNpemVfdCBpbiBzdGQuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQ2FzZTEgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTEgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTIgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTIgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTMgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTMgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTQgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTQgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTUgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTUgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTYgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTYgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTcgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTcgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTggPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTggPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTkgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTkgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTEwID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTEgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTExID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxMiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTIgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTEzID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTQgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE0ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxNSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTUgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE2ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxNiA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTcgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE3ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxOCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTggPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE5ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxOSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMjAgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTIwID0gbXBsOjp2b2lkXz4KLSAgICAgICAgc3RydWN0IHNlbGVjdCB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxLCBtcGw6OmlkZW50aXR5PFR5cGUxPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTIsIG1wbDo6aWRlbnRpdHk8VHlwZTI+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMywgbXBsOjppZGVudGl0eTxUeXBlMz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U0LCBtcGw6OmlkZW50aXR5PFR5cGU0PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTUsIG1wbDo6aWRlbnRpdHk8VHlwZTU+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlNiwgbXBsOjppZGVudGl0eTxUeXBlNj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U3LCBtcGw6OmlkZW50aXR5PFR5cGU3PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTgsIG1wbDo6aWRlbnRpdHk8VHlwZTg+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlOSwgbXBsOjppZGVudGl0eTxUeXBlOT4sIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTEwLCBUeXBlMTAsIG1wbDo6dm9pZF8gPiA+ID4gPiA+ID4gPiA+ID4KLSAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSByZXN1bHQxOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTEsIG1wbDo6aWRlbnRpdHk8VHlwZTExPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTEyLCBtcGw6OmlkZW50aXR5PFR5cGUxMj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxMywgbXBsOjppZGVudGl0eTxUeXBlMTM+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTQsIG1wbDo6aWRlbnRpdHk8VHlwZTE0PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE1LCBtcGw6OmlkZW50aXR5PFR5cGUxNT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxNiwgbXBsOjppZGVudGl0eTxUeXBlMTY+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTcsIG1wbDo6aWRlbnRpdHk8VHlwZTE3PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE4LCBtcGw6OmlkZW50aXR5PFR5cGUxOD4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxOSwgbXBsOjppZGVudGl0eTxUeXBlMTk+LCBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UyMCwgVHlwZTIwLCBtcGw6OnZvaWRfID4gPiA+ID4gPiA+ID4gPiA+Ci0gICAgICAgICAgICAgICAgICAgID4gcmVzdWx0MjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgCi0gICAgICAgICAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8cmVzdWx0MSwgbXBsOjp2b2lkXz4sCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQyLAotICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxyZXN1bHQxPgotICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9leHRlbnQgewotICAgICAgICAgICAgc3RhdGljIFQqIGFyOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBzaXplID0gc2l6ZW9mKCphcikgLyBzaXplb2YoKCphcilbMF0pKTsKLQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgICAgICAgICBzZWxlY3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGJvb2xbc2l6ZV0+LCAgICAgICAgICAgICAgICAgIGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNoYXJbc2l6ZV0+LCAgICAgICAgICAgICAgICAgIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHNpZ25lZCBjaGFyW3NpemVdPiwgICAgICAgICAgIHNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCB1bnNpZ25lZCBjaGFyW3NpemVdPiwgICAgICAgICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHdjaGFyX3Rbc2l6ZV0+LCAgICAgICAgICAgICAgIHdjaGFyX3QsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBzaG9ydFtzaXplXT4sICAgICAgICAgICAgICAgICBzaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgdW5zaWduZWQgc2hvcnRbc2l6ZV0+LCAgICAgICAgdW5zaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGludFtzaXplXT4sICAgICAgICAgICAgICAgICAgIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgdW5zaWduZWQgaW50W3NpemVdPiwgICAgICAgICAgdW5zaWduZWQgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBsb25nW3NpemVdPiwgICAgICAgICAgICAgICAgICBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCB1bnNpZ25lZCBsb25nW3NpemVdPiwgICAgICAgICB1bnNpZ25lZCBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBmbG9hdFtzaXplXT4sICAgICAgICAgICAgICAgICBmbG9hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgZG91YmxlW3NpemVdPiwgICAgICAgICAgICAgICAgZG91YmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBsb25nIGRvdWJsZVtzaXplXT4sICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHJlc3VsdDE7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICAgICAgICAgIHNlbGVjdDwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgYm9vbFtzaXplXT4sICAgICAgICAgICAgY29uc3QgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgY2hhcltzaXplXT4sICAgICAgICAgICAgY29uc3QgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3Qgc2lnbmVkIGNoYXJbc2l6ZV0+LCAgICAgY29uc3Qgc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHVuc2lnbmVkIGNoYXJbc2l6ZV0+LCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3Qgd2NoYXJfdFtzaXplXT4sICAgICAgICAgY29uc3Qgd2NoYXJfdCwKLSAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHNob3J0W3NpemVdPiwgICAgICAgICAgIGNvbnN0IHNob3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCB1bnNpZ25lZCBzaG9ydFtzaXplXT4sICBjb25zdCB1bnNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgaW50W3NpemVdPiwgICAgICAgICAgICAgY29uc3QgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCB1bnNpZ25lZCBpbnRbc2l6ZV0+LCAgICBjb25zdCB1bnNpZ25lZCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGxvbmdbc2l6ZV0+LCAgICAgICAgICAgIGNvbnN0IGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHVuc2lnbmVkIGxvbmdbc2l6ZV0+LCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGZsb2F0W3NpemVdPiwgICAgICAgICAgIGNvbnN0IGZsb2F0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBkb3VibGVbc2l6ZV0+LCAgICAgICAgICBjb25zdCBkb3VibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGxvbmcgZG91YmxlW3NpemVdPiwgICAgIGNvbnN0IGxvbmcgZG91YmxlCi0gICAgICAgICAgICAgICAgICAgID4gcmVzdWx0MjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxyZXN1bHQxLCBtcGw6OnZvaWRfPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmlkZW50aXR5PHJlc3VsdDE+Ci0gICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NhZmVfYm9vbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zYWZlX2Jvb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWEwNzMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NhZmVfYm9vbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgVGhpcyBoZWFkZXIgaW50ZW50aW9uYWxseSBoYXMgbm8gaW5jbHVkZSBndWFyZHMuCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAxMCBOZWlsIEdyb3ZlcwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyBUaGlzIGNvZGUgdXRpbGlzZXMgdGhlIGV4cGVyaWVuY2UgZ2FpbmVkIGR1cmluZyB0aGUgZXZvbHV0aW9uIG9mCi0vLyA8bmRuYm9vc3Qvc21hcnRfcHRyL29wZXJhdG9yX2Jvb2wuaHBwPgotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9TQUZFX0JPT0xfSU5DTFVERURfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1NBRkVfQk9PTF9JTkNMVURFRF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLQotdGVtcGxhdGU8Y2xhc3MgRGF0YU1lbWJlclB0cj4KLWNsYXNzIHNhZmVfYm9vbAotewotcHVibGljOgotICAgIHR5cGVkZWYgc2FmZV9ib29sIHRoaXNfdHlwZTsKLQotI2lmIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8IDB4NTcwKSkgfHwgZGVmaW5lZChfX0NJTlRfKQotICAgIHR5cGVkZWYgYm9vbCB1bnNwZWNpZmllZF9ib29sX3R5cGU7Ci0gICAgc3RhdGljIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB0b191bnNwZWNpZmllZF9ib29sKGNvbnN0IGJvb2wgeCwgRGF0YU1lbWJlclB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4OwotICAgIH0KLSNlbGlmIGRlZmluZWQoX01BTkFHRUQpCi0gICAgc3RhdGljIHZvaWQgdW5zcGVjaWZpZWRfYm9vbCh0aGlzX3R5cGUqKiopCi0gICAgewotICAgIH0KLSAgICB0eXBlZGVmIHZvaWQoKnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkodGhpc190eXBlKioqKTsKLSAgICBzdGF0aWMgdW5zcGVjaWZpZWRfYm9vbF90eXBlIHRvX3Vuc3BlY2lmaWVkX2Jvb2woY29uc3QgYm9vbCB4LCBEYXRhTWVtYmVyUHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPyB1bnNwZWNpZmllZF9ib29sIDogMDsKLSAgICB9Ci0jZWxpZiBcCi0gICAgKCBkZWZpbmVkKF9fTVdFUktTX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPCAweDMyMDApICkgfHwgXAotICAgICggZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPCAzMDQpICkgfHwgXAotICAgICggZGVmaW5lZChfX1NVTlBST19DQykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgPD0gMHg1OTApICkKLQotICAgIHR5cGVkZWYgYm9vbCAodGhpc190eXBlOjoqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpIGNvbnN0OwotCi0gICAgc3RhdGljIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB0b191bnNwZWNpZmllZF9ib29sKGNvbnN0IGJvb2wgeCwgRGF0YU1lbWJlclB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4ID8gJnRoaXNfdHlwZTo6ZGV0YWlsX3NhZmVfYm9vbF9tZW1iZXJfZm4gOiAwOwotICAgIH0KLXByaXZhdGU6Ci0gICAgYm9vbCBkZXRhaWxfc2FmZV9ib29sX21lbWJlcl9mbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZWxzZQotICAgIHR5cGVkZWYgRGF0YU1lbWJlclB0ciB1bnNwZWNpZmllZF9ib29sX3R5cGU7Ci0gICAgc3RhdGljIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB0b191bnNwZWNpZmllZF9ib29sKGNvbnN0IGJvb2wgeCwgRGF0YU1lbWJlclB0ciBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPyBwIDogMDsKLSAgICB9Ci0jZW5kaWYKLXByaXZhdGU6Ci0gICAgc2FmZV9ib29sKCk7Ci0gICAgc2FmZV9ib29sKGNvbnN0IHNhZmVfYm9vbCYpOwotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IHNhZmVfYm9vbCYpOwotICAgIH5zYWZlX2Jvb2woKTsKLX07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zZmluYWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2ZpbmFlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFkMWMyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zZmluYWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NGSU5BRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NGSU5BRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsgICAgICAgICAgCi0gICAgICAgIHVzaW5nIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLSAgICAgICAgdXNpbmcgdHlwZV90cmFpdHM6Om5vX3R5cGU7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBzdHJpbmcKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAKLSAgICAgICAgeWVzX3R5cGUgaXNfc3RyaW5nX2ltcGwoIGNvbnN0IGNoYXIqIGNvbnN0ICk7Ci0gICAgICAgIHllc190eXBlIGlzX3N0cmluZ19pbXBsKCBjb25zdCB3Y2hhcl90KiBjb25zdCApOwotICAgICAgICBub190eXBlICBpc19zdHJpbmdfaW1wbCggLi4uICk7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICB5ZXNfdHlwZSBpc19jaGFyX2FycmF5X2ltcGwoIGNoYXIgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICk7Ci0gICAgICAgIHRlbXBsYXRlPCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIHllc190eXBlIGlzX2NoYXJfYXJyYXlfaW1wbCggY29uc3QgY2hhciBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfY2hhcl9hcnJheV9pbXBsKCAuLi4gKTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIHllc190eXBlIGlzX3djaGFyX3RfYXJyYXlfaW1wbCggd2NoYXJfdCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKTsKLSAgICAgICAgdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgeWVzX3R5cGUgaXNfd2NoYXJfdF9hcnJheV9pbXBsKCBjb25zdCB3Y2hhcl90IE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApOwotICAgICAgICBub190eXBlICBpc193Y2hhcl90X2FycmF5X2ltcGwoIC4uLiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICB5ZXNfdHlwZSBpc19jaGFyX3B0cl9pbXBsKCBjaGFyKiBjb25zdCApOwotICAgICAgICBub190eXBlICBpc19jaGFyX3B0cl9pbXBsKCAuLi4gKTsKLSAgICAgICAgCi0gICAgICAgIHllc190eXBlIGlzX2NvbnN0X2NoYXJfcHRyX2ltcGwoIGNvbnN0IGNoYXIqIGNvbnN0ICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX2NvbnN0X2NoYXJfcHRyX2ltcGwoIC4uLiApOwotCi0gICAgICAgIHllc190eXBlIGlzX3djaGFyX3RfcHRyX2ltcGwoIHdjaGFyX3QqIGNvbnN0ICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX3djaGFyX3RfcHRyX2ltcGwoIC4uLiApOwotICAgICAgICAKLSAgICAgICAgeWVzX3R5cGUgaXNfY29uc3Rfd2NoYXJfdF9wdHJfaW1wbCggY29uc3Qgd2NoYXJfdCogY29uc3QgKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfY29uc3Rfd2NoYXJfdF9wdHJfaW1wbCggLi4uICk7Ci0gICAgICAgIAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgICAgIHllc190eXBlIGlzX3BhaXJfaW1wbCggY29uc3Qgc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiogKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfcGFpcl9pbXBsKCAuLi4gKTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHRhZ3MKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHN0cnVjdCBjaGFyX29yX3djaGFyX3RfYXJyYXlfdGFnIHt9OwotICAgICAgICAKLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotICAgIAotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NpemVfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDQ0ZDA2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NpemVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfU0laRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfU0laRV9UWVBFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbWlzc2luZyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uICB3b3JrYXJvdW5kLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV8KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBDOjpzaXplX3R5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGNsYXNzIHJhbmdlX3NpemUKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSBjX3R5cGU7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJhbmdlX2RldGFpbDo6cmFuZ2Vfc2l6ZV90eXBlXzxjX3R5cGU+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcHRzPEM+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3N0cl90eXBlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zdHJfdHlwZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2VkMzExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3N0cl90eXBlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NUUl9UWVBFU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NUUl9UWVBFU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3NpemVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3I8VCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFQqIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3I8VCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGNvbnN0IFQqIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZTxUKj4KLSAgICB7Ci0gICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgIH07ICAgIAotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZhbHVlX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZWJlNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfVkFMVUVfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1ZBTFVFX1RZUEVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtaXNzaW5nIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gIHdvcmthcm91bmQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgCi0gICAgeyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfOwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIEM6OnZhbHVlX3R5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjppdGVyYXRvcl92YWx1ZTwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBQOjpmaXJzdF90eXBlID46OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88YXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAKLSAgICB9IAotICAgIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBjbGFzcyByYW5nZV92YWx1ZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgY190eXBlOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2VfdmFsdWVfdHlwZV88Y190eXBlPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHB0czxDPjo6dHlwZSB0eXBlOyAKLSAgICB9OwotCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC92YzYvZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZjNi9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDlhMWIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZjNi9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9WQzZfRU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfVkM2X0VORF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvcmVzdWx0X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXN1bHRfaXRlcmF0b3I8Qz46OnR5cGUgCi0gICAgICAgICAgICAgICAgZnVuKCBDJiBjICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjLmVuZCgpOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBwYWlyCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmVzdWx0X2l0ZXJhdG9yPFA+Ojp0eXBlIAotICAgICAgICAgICAgICAgIGZ1biggY29uc3QgUCYgcCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBhcnJheQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8YXJyYXlfPiAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSoKLSAgICAgICAgICAgICAgICBmdW4oVCYgdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICsgcmVtb3ZlX2V4dGVudDxUPjo6c2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjaGFyX2FycmF5Xz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKgotICAgICAgICAgICAgICAgIGZ1bihUJiB0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyByZW1vdmVfZXh0ZW50PFQ+OjpzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8d2NoYXJfdF9hcnJheV8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSoKLSAgICAgICAgICAgICAgICBmdW4oVCYgdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICsgcmVtb3ZlX2V4dGVudDxUPjo6c2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gc3RyaW5nCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNoYXIqIGZ1biggY2hhciogcyApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogZnVuKCBjb25zdCBjaGFyKiBzICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyB3Y2hhcl90KiBmdW4oIHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCogZnVuKCBjb25zdCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLSAgICAKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmVzdWx0X2l0ZXJhdG9yPEM+Ojp0eXBlIAotICAgIGVuZCggQyYgYyApCi0gICAgewotICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjpyYW5nZV9lbmQ8cmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZT46OmlubmVyPEM+OjpmdW4oIGMgKTsKLSAgICB9Ci0gICAgCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZTFjMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kaWZmZXJlbmNlX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRElGRkVSRU5DRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ESUZGRVJFTkNFX1RZUEVfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9kaWZmZXJlbmNlIDogaXRlcmF0b3JfZGlmZmVyZW5jZTwgdHlwZW5hbWUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgPgotICAgIHsgfTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Rpc3RhbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlzdGFuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDNhYWRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlzdGFuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRElTVEFOQ0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RJU1RBTkNFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFQ+Ojp0eXBlIAotICAgIGRpc3RhbmNlKCBjb25zdCBUJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKCBuZG5ib29zdDo6YmVnaW4oIHIgKSwgbmRuYm9vc3Q6OmVuZCggciApICk7Ci0gICAgfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMzZGZmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0VNUFRZX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTVBUWV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIGlubGluZSBib29sIGVtcHR5KCBjb25zdCBUJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6YmVnaW4oIHIgKSA9PSBuZG5ib29zdDo6ZW5kKCByICk7Ci0gICAgfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjN2Q1NGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0VORF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRU5EX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9lbmQuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi1uYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi17Ci0jZW5kaWYKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHByaW1hcnkgdGVtcGxhdGUKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgIHJhbmdlX2VuZCggQyYgYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBJZiB5b3UgZ2V0IGEgY29tcGlsZS1lcnJvciBoZXJlLCBpdCBpcyBtb3N0IGxpa2VseSBiZWNhdXNlCi0gICAgICAgICAgICAvLyB5b3UgaGF2ZSBub3QgaW1wbGVtZW50ZWQgcmFuZ2VfYmVnaW4oKSBwcm9wZXJseSBpbgotICAgICAgICAgICAgLy8gdGhlIG5hbWVzcGFjZSBvZiBDCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgcmV0dXJuIGMuZW5kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgICAgIGlubGluZSBJdGVyYXRvciByYW5nZV9lbmQoIGNvbnN0IHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4mIHAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcC5zZWNvbmQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgICAgICBpbmxpbmUgSXRlcmF0b3IgcmFuZ2VfZW5kKCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+JiBwICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHAuc2Vjb25kOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBhcnJheQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIGNvbnN0IFQqIHJhbmdlX2VuZCggY29uc3QgVCAoJmEpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OmFycmF5X2VuZDxULHN6PiggYSApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIFQqIHJhbmdlX2VuZCggVCAoJmEpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OmFycmF5X2VuZDxULHN6PiggYSApOwotICAgICAgICB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLSNlbmRpZgotCi1uYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgZW5kKCBUJiByICkKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9kZXRhaWw7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmFuZ2VfZW5kKCByICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlIGVuZCggY29uc3QgVCYgciApCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgcmV0dXJuIHJhbmdlX2VuZCggciApOwotfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZQotICAgICAgICBjb25zdF9lbmQoIGNvbnN0IFQmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2FkbF9iYXJyaWVyOjplbmQoIHIgKTsKLSAgICAgICAgfQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0gICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyOwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZnVuY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFhMjEyNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9GVU5DVElPTlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0ZVTkNUSU9OU19IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kaXN0YW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3JiZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvcmVuZC5ocHA+Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmExMTBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvbXV0YWJsZV9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsX3ZjN18xCi0gICAgewotICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBTaWcgPSB2b2lkKEMpID4KLSAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3IKLSAgICAgICB7Ci0gICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgbXBsOjpldmFsX2lmX2M8IGlzX2NvbnN0PEM+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjwgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0PEM+Ojp0eXBlID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjxDPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgfTsKLQotICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBUID4KLSAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3I8IEMsIHZvaWQoVFtdKSA+Ci0gICAgICAgewotICAgICAgICAgICB0eXBlZGVmIFQqIHR5cGU7Ci0gICAgICAgfTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcgotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICByYW5nZV9kZXRhaWxfdmM3XzE6OnJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlIHR5cGU7Ci0KLSNlbHNlCi0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICBtcGw6OmV2YWxfaWZfYzwgaXNfY29uc3Q8Qz46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPCB0eXBlbmFtZSByZW1vdmVfY29uc3Q8Qz46OnR5cGUgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPEM+ID46OnR5cGUgdHlwZTsKLQotI2VuZGlmCi0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMDhhYWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAyMDA5LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlICJuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9pby5ocHAiCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU5N2UyYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzICYgVGhvcnN0ZW4gT3R0b3NlbiAmIFBhdm9sIERyb2JhIDIwMDMtMjAwNC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfQ09SRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfQ09SRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIERlZmluZSBfX1NUTF9DT05GSUdfSCwgaWYgYXBwcm9wcmlhdGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTUwMCkpCi0gICAgI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSAgICAjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0OTk2ICkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2Z1bmN0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYWxnb3JpdGhtL2VxdWFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvc2FmZV9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLS8qISBcZmlsZQotICAgIERlZmluZXMgdGhlIFxjIGl0ZXJhdG9yX2NsYXNzIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KLSAgICBcYyBpdGVyYXRvcl9yYW5nZSBpcyBhIHNpbXBsZSB3cmFwcGVyIG9mIGl0ZXJhdG9yIHBhaXIgaWRpb20uIEl0IHByb3ZpZGVzCi0gICAgYSByaWNoIHN1YnNldCBvZiBDb250YWluZXIgaW50ZXJmYWNlLgotKi8KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgZnVuY3Rpb25zIGFkbF9iZWdpbiBhbmQgYWRsX2VuZCBhcmUgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZQotICAgICAgICAvLyBjbGFzcyBmb3IgZ2NjLTIuOXgKLSAgICAgICAgLy8KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3JUPgotICAgICAgICBzdHJ1Y3QgaXRlcmF0b3JfcmFuZ2VfaW1wbCB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgICAgIHN0YXRpYyBJdGVyYXRvclQgYWRsX2JlZ2luKCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRvclQ+KCBuZG5ib29zdDo6YmVnaW4oIHIgKSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgICAgIHN0YXRpYyBJdGVyYXRvclQgYWRsX2VuZCggRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlcmF0b3JUPiggbmRuYm9vc3Q6OmVuZCggciApICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0ID4KLSAgICAgICAgaW5saW5lIGJvb2wgbGVzc190aGFuKCBjb25zdCBMZWZ0JiBsLCBjb25zdCBSaWdodCYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlKCBuZG5ib29zdDo6YmVnaW4obCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmVuZChsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YmVnaW4ociksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmVuZChyKSApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBncmVhdGVyX3RoYW4oIGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxlc3NfdGhhbihyLGwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBsZXNzX29yX2VxdWFsX3RoYW4oIGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbihyLGwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBncmVhdGVyX29yX2VxdWFsX3RoYW4oIGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbihsLHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhpcyB2ZXJzaW9uIGlzIG1haW50YWluZWQgc2luY2UgaXQgaXMgdXNlZCBpbiBvdGhlciBib29zdCBsaWJyYXJpZXMKLSAgICAgICAgLy8gc3VjaCBhcyBCb29zdC5Bc3NpZ24KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0ID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgTGVmdCYgbCwgY29uc3QgUmlnaHQmIHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwobCwgcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdGFnIHsgfTsKLSAgICAgICAgc3RydWN0IGNvbnN0X3JhbmdlX3RhZyB7IH07Ci0gICAgfQotCi0vLyAgaXRlcmF0b3IgcmFuZ2UgdGVtcGxhdGUgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBpdGVyYXRvcl9yYW5nZSBjbGFzcwotICAgICAgICAvKiEKLSAgICAgICAgICAgIEFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRzIGEgcmFuZ2UgaW4gYSBzZXF1ZW5jZSBieSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpdGVyYXRvcnMuCi0gICAgICAgICAgICBBbiBpdGVyYXRvcl9yYW5nZSBjYW4gYmUgcGFzc2VkIHRvIGFuIGFsZ29yaXRobSB3aGljaCByZXF1aXJlcyBhIHNlcXVlbmNlIGFzIGFuIGlucHV0LgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBcYyB0b3VwcGVyKCkgZnVuY3Rpb24gbWF5IGJlIHVzZWQgbW9zdCBmcmVxdWVudGx5IG9uIHN0cmluZ3MsCi0gICAgICAgICAgICBidXQgY2FuIGFsc28gYmUgdXNlZCBvbiBpdGVyYXRvcl9yYW5nZXM6Ci0KLSAgICAgICAgICAgIFxjb2RlCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRvbG93ZXIoIGZpbmQoIHMsICJVUFBFUkNBU0UgU1RSSU5HIiApICk7Ci0gICAgICAgICAgICBcZW5kY29kZQotCi0gICAgICAgICAgICBNYW55IGFsZ29yaXRobXMgd29ya2luZyB3aXRoIHNlcXVlbmNlcyB0YWtlIGEgcGFpciBvZiBpdGVyYXRvcnMsCi0gICAgICAgICAgICBkZWxpbWl0aW5nIGEgd29ya2luZyByYW5nZSwgYXMgYW4gYXJndW1lbnRzLiBUaGUgXGMgaXRlcmF0b3JfcmFuZ2UgY2xhc3MgaXMgYW4KLSAgICAgICAgICAgIGVuY2Fwc3VsYXRpb24gb2YgYSByYW5nZSBpZGVudGlmaWVkIGJ5IGEgcGFpciBvZiBpdGVyYXRvcnMuCi0gICAgICAgICAgICBJdCBwcm92aWRlcyBhIGNvbGxlY3Rpb24gaW50ZXJmYWNlLAotICAgICAgICAgICAgc28gaXQgaXMgcG9zc2libGUgdG8gcGFzcyBhbiBpbnN0YW5jZSB0byBhbiBhbGdvcml0aG0gcmVxdWlyaW5nIGEgY29sbGVjdGlvbiBhcyBhbiBpbnB1dC4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3JUPgotICAgICAgICBjbGFzcyBpdGVyYXRvcl9yYW5nZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHJhbmdlX2RldGFpbDo6c2FmZV9ib29sPCBJdGVyYXRvclQgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPjo6KiA+IHNhZmVfYm9vbF90OwotICAgICAgICBwcm90ZWN0ZWQ6IC8vIFVzZWQgYnkgc3ViX3JhbmdlCi0gICAgICAgICAgICAvLyEgaW1wbGVtZW50YXRpb24gY2xhc3MKLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjppdGVyYXRvcl9yYW5nZV9pbXBsPEl0ZXJhdG9yVD4gaW1wbDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgLy8hIHRoaXMgdHlwZQotICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+IHR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc2FmZV9ib29sX3Q6OnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB1bnNwZWNpZmllZF9ib29sX3R5cGU7Ci0gICAgICAgICAgICAvL05ETkJPT1NUX0JST0tFTl9DT01QSUxFUl9UWVBFX1RSQUlUU19TUEVDSUFMSVpBVElPTih2YWx1ZV90eXBlKTsKLQotICAgICAgICAgICAgLy8hIEVuY2Fwc3VsYXRlZCB2YWx1ZSB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl92YWx1ZTxJdGVyYXRvclQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgICAgIC8vISBEaWZmZXJlbmNlIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2RpZmZlcmVuY2U8SXRlcmF0b3JUPjo6dHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgICAgIC8vISBTaXplIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOyAvLyBub3RlOiBtdXN0IGJlIHVuc2lnbmVkCi0KLSAgICAgICAgICAgIC8vISBUaGlzIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiB0aGlzX3R5cGU7Ci0KLSAgICAgICAgICAgIC8vISBSZWZlcmVuY2UgdHlwZQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIE5lZWRlZCBiZWNhdXNlIHZhbHVlLXR5cGUgaXMgdGhlIHNhbWUgZm9yCi0gICAgICAgICAgICAvLyBjb25zdCBhbmQgbm9uLWNvbnN0IGl0ZXJhdG9ycwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JlZmVyZW5jZTxJdGVyYXRvclQ+Ojp0eXBlIHJlZmVyZW5jZTsKLQotICAgICAgICAgICAgLy8hIGNvbnN0X2l0ZXJhdG9yIHR5cGUKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIFRoZXJlIGlzIG5vIGRpc3RpbmN0aW9uIGJldHdlZW4gY29uc3RfaXRlcmF0b3IgYW5kIGl0ZXJhdG9yLgotICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVkZWZzIGFyZSBwcm92aWRlcyB0byBmdWxmaWxsIGNvbnRhaW5lciBpbnRlcmZhY2UKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yVCBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgICAgIC8vISBpdGVyYXRvciB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yVCBpdGVyYXRvcjsKLQotICAgICAgICBwcml2YXRlOiAvLyBmb3IgcmV0dXJuIHZhbHVlIG9mIG9wZXJhdG9yKCkoKQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aWZfPCBuZG5ib29zdDo6bXBsOjpvcl88IG5kbmJvb3N0Ojppc19hYnN0cmFjdDwgdmFsdWVfdHlwZSA+LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PCB2YWx1ZV90eXBlID4gPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgdmFsdWVfdHlwZSA+Ojp0eXBlIGFic3RyYWN0X3ZhbHVlX3R5cGU7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoKSA6IG1fQmVnaW4oIGl0ZXJhdG9yKCkgKSwgbV9FbmQoIGl0ZXJhdG9yKCkgKQotICAgICAgICAgICAgeyB9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgcGFpciBvZiBpdGVyYXRvcnMKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvciA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggSXRlcmF0b3IgQmVnaW4sIEl0ZXJhdG9yIEVuZCApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKEJlZ2luKSwgbV9FbmQoRW5kKQotICAgICAgICAgICAge30KLQotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yIGZyb20gYSBSYW5nZQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlKCBjb25zdCBSYW5nZSYgciApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKCBpbXBsOjphZGxfYmVnaW4oIHIgKSApLCBtX0VuZCggaW1wbDo6YWRsX2VuZCggciApICkKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgUmFuZ2UKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIgKSA6Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiggaW1wbDo6YWRsX2JlZ2luKCByICkgKSwgbV9FbmQoIGltcGw6OmFkbF9lbmQoIHIgKSApCi0gICAgICAgICAgICB7fQotCi0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IgZnJvbSBhIFJhbmdlCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoIGNvbnN0IFJhbmdlJiByLCBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmNvbnN0X3JhbmdlX3RhZyApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKCBpbXBsOjphZGxfYmVnaW4oIHIgKSApLCBtX0VuZCggaW1wbDo6YWRsX2VuZCggciApICkKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgUmFuZ2UKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIsIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6cmFuZ2VfdGFnICkgOgotICAgICAgICAgICAgICAgIG1fQmVnaW4oIGltcGw6OmFkbF9iZWdpbiggciApICksIG1fRW5kKCBpbXBsOjphZGxfZW5kKCByICkgKQotICAgICAgICAgICAge30KLQotICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgIHRoaXNfdHlwZSYgb3BlcmF0b3I9KCBjb25zdCB0aGlzX3R5cGUmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fQmVnaW4gID0gci5iZWdpbigpOwotICAgICAgICAgICAgICAgIG1fRW5kICAgID0gci5lbmQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAjZW5kaWYKLQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBvcGVyYXRvcj0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yPiYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiAgPSByLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgbV9FbmQgICAgPSByLmVuZCgpOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSYgb3BlcmF0b3I9KCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fQmVnaW4gID0gaW1wbDo6YWRsX2JlZ2luKCByICk7Ci0gICAgICAgICAgICAgICAgbV9FbmQgICAgPSBpbXBsOjphZGxfZW5kKCByICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBvcGVyYXRvcj0oIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiAgPSBpbXBsOjphZGxfYmVnaW4oIHIgKTsKLSAgICAgICAgICAgICAgICBtX0VuZCAgICA9IGltcGw6OmFkbF9lbmQoIHIgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEl0ZXJhdG9yVCBiZWdpbigpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fQmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEl0ZXJhdG9yVCBlbmQoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0VuZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlIHNpemUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0VuZCAtIG1fQmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0JlZ2luID09IG1fRW5kOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzYWZlX2Jvb2xfdDo6dG9fdW5zcGVjaWZpZWRfYm9vbChtX0JlZ2luICE9IG1fRW5kLCAmaXRlcmF0b3JfcmFuZ2U6Om1fQmVnaW4pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgZXF1YWwoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9CZWdpbiA9PSByLm1fQmVnaW4gJiYgbV9FbmQgPT0gci5tX0VuZDsKLSAgICAgICAgICAgIH0KLQotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplcXVhbCggKnRoaXMsIHIgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KHIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbiggKnRoaXMsIHIgKTsKLSAgICAgICAgICAgfQotICAgICAgICAgICAKLSAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl90aGFuKCAqdGhpcywgciApOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIAotICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc19vcl9lcXVhbF90aGFuKCAqdGhpcywgciApOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIAotICAgICAgICAgICBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl9vcl9lcXVhbF90aGFuKCAqdGhpcywgciApOwotICAgICAgICAgICB9Ci0KLSNlbmRpZgotCi0gICAgICAgIHB1YmxpYzogLy8gY29udmVuaWVuY2UKLSAgICAgICAgICAgcmVmZXJlbmNlIGZyb250KCkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAhZW1wdHkoKSApOwotICAgICAgICAgICAgICAgcmV0dXJuICptX0JlZ2luOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgcmVmZXJlbmNlIGJhY2soKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoICFlbXB0eSgpICk7Ci0gICAgICAgICAgICAgICBJdGVyYXRvclQgbGFzdCggbV9FbmQgKTsKLSAgICAgICAgICAgICAgIHJldHVybiAqLS1sYXN0OwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgLy8gcG9wX2Zyb250KCkgLSBhZGRlZCB0byBtb2RlbCB0aGUgU2luZ2xlUGFzc1JhbmdlUHJpbWl0aXZlQ29uY2VwdAotICAgICAgICAgICB2b2lkIHBvcF9mcm9udCgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggIWVtcHR5KCkgKTsKLSAgICAgICAgICAgICAgICsrbV9CZWdpbjsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIC8vIHBvcF9iYWNrKCkgLSBhZGRlZCB0byBtb2RlbCB0aGUgQmlkaXJlY3Rpb25hbFJhbmdlUHJpbWl0aXZlQ29uY2VwdAotICAgICAgICAgICB2b2lkIHBvcF9iYWNrKCkKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAhZW1wdHkoKSApOwotICAgICAgICAgICAgICAgLS1tX0VuZDsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIHJlZmVyZW5jZSBvcGVyYXRvcltdKCBkaWZmZXJlbmNlX3R5cGUgYXQgKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIGF0ID49IDAgJiYgYXQgPCBzaXplKCkgKTsKLSAgICAgICAgICAgICAgIHJldHVybiBtX0JlZ2luW2F0XTsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIC8vCi0gICAgICAgICAgIC8vIFdoZW4gc3RvcmluZyB0cmFuc2Zvcm0gaXRlcmF0b3JzLCBvcGVyYXRvcltdKCkKLSAgICAgICAgICAgLy8gZmFpbHMgYmVjYXVzZSBpdCByZXR1cm5zIGJ5IHJlZmVyZW5jZS4gVGhlcmVmb3JlCi0gICAgICAgICAgIC8vIG9wZXJhdG9yKCkoKSBpcyBwcm92aWRlZCBmb3IgdGhlc2UgY2FzZXMuCi0gICAgICAgICAgIC8vCi0gICAgICAgICAgIGFic3RyYWN0X3ZhbHVlX3R5cGUgb3BlcmF0b3IoKSggZGlmZmVyZW5jZV90eXBlIGF0ICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBhdCA+PSAwICYmIGF0IDwgc2l6ZSgpICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gbV9CZWdpblthdF07Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSYgYWR2YW5jZV9iZWdpbiggZGlmZmVyZW5jZV90eXBlIG4gKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBzdGQ6OmFkdmFuY2UoIG1fQmVnaW4sIG4gKTsKLSAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBhZHZhbmNlX2VuZCggZGlmZmVyZW5jZV90eXBlIG4gKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBzdGQ6OmFkdmFuY2UoIG1fRW5kLCBuICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgLy8gYmVnaW4gYW5kIGVuZCBpdGVyYXRvcnMKLSAgICAgICAgICAgIEl0ZXJhdG9yVCBtX0JlZ2luOwotICAgICAgICAgICAgSXRlcmF0b3JUIG1fRW5kOwotCi0gICAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBBbGxvdyBzdWJjbGFzc2VzIGFuIGVhc3kgd2F5IHRvIGFjY2VzcyB0aGUKLSAgICAgICAgICAgIC8vIGJhc2UgdHlwZQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2UgaXRlcmF0b3JfcmFuZ2VfOwotICAgICAgICB9OwotCi0vLyAgaXRlcmF0b3IgcmFuZ2UgZnJlZS1zdGFuZGluZyBvcGVyYXRvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gY29tcGFyaXNvbiBvcGVyYXRvcnMKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPCggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc19vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPiggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl9vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jZWxzZQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjFUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIW5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvcjFULCBjbGFzcyBJdGVyYXRvcjJUID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc19vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3Nfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPiggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX29yX2VxdWFsX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotLy8gIGl0ZXJhdG9yIHJhbmdlIHV0aWxpdGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIGl0ZXJhdG9yX3JhbmdlIGNvbnN0cnVjdCBoZWxwZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZnJvbSBhIHBhaXIgb2YgaXRlcmF0b3JzCi0KLSAgICAgICAgICAgIFxwYXJhbSBCZWdpbiBBIGJlZ2luIGl0ZXJhdG9yCi0gICAgICAgICAgICBccGFyYW0gRW5kIEFuIGVuZCBpdGVyYXRvcgotICAgICAgICAgICAgXHJldHVybiBpdGVyYXRvcl9yYW5nZSBvYmplY3QKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yVCA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgSXRlcmF0b3JUID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggSXRlcmF0b3JUIEJlZ2luLCBJdGVyYXRvclQgRW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4oIEJlZ2luLCBFbmQgKTsKLSAgICAgICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgICAgICAgICAoIG5kbmJvb3N0OjpiZWdpbiggciApLCBuZG5ib29zdDo6ZW5kKCByICkgKTsKLSAgICAgICAgfQotCi0jZWxzZQotICAgICAgICAvLyEgaXRlcmF0b3JfcmFuZ2UgY29uc3RydWN0IGhlbHBlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCBhbiBcYyBpdGVyYXRvcl9yYW5nZSBmcm9tIGEgXGMgUmFuZ2UgY29udGFpbmluZyB0aGUgYmVnaW4KLSAgICAgICAgICAgIGFuZCBlbmQgaXRlcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEZvcndhcmRSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxGb3J3YXJkUmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgICAgICAgICAoIHIsIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6cmFuZ2VfdGFnKCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgRm9yd2FyZFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IEZvcndhcmRSYW5nZT46OnR5cGUgPgotICAgICAgICAgICAgICAgICggciwgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpjb25zdF9yYW5nZV90YWcoKSApOwotICAgICAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0gICAgICAgIG5hbWVzcGFjZSBpdGVyYXRvcl9yYW5nZV9kZXRhaWwKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgPgotICAgICAgICAgICAgbWFrZV9yYW5nZV9pbXBsKCBSYW5nZSYgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2JlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfZW5kICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIE5vdCB3b3J0aCB0aGUgZWZmb3J0Ci0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAvL2lmKCBhZHZhbmNlX2JlZ2luID09IDAgJiYgYWR2YW5jZV9lbmQgPT0gMCApCi0gICAgICAgICAgICAgICAgLy8gICAgcmV0dXJuIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIHIgKTsKLSAgICAgICAgICAgICAgICAvLwotCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgbmV3X2JlZ2luID0gbmRuYm9vc3Q6OmJlZ2luKCByICksCi0gICAgICAgICAgICAgICAgICAgIG5ld19lbmQgICA9IG5kbmJvb3N0OjplbmQoIHIgKTsKLSAgICAgICAgICAgICAgICBzdGQ6OmFkdmFuY2UoIG5ld19iZWdpbiwgYWR2YW5jZV9iZWdpbiApOwotICAgICAgICAgICAgICAgIHN0ZDo6YWR2YW5jZSggbmV3X2VuZCwgYWR2YW5jZV9lbmQgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9pdGVyYXRvcl9yYW5nZSggbmV3X2JlZ2luLCBuZXdfZW5kICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIFJhbmdlJiByLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9lbmQgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvL05ETkJPT1NUX0FTU0VSVCggYWR2YW5jZV9iZWdpbiAtIGFkdmFuY2VfZW5kIDw9IHNpemUocikgJiYgImNyZWF0aW5nIGludmFsaWQgcmFuZ2UiICk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlX2ltcGwoIHIsIGFkdmFuY2VfYmVnaW4sIGFkdmFuY2VfZW5kICk7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2VuZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vTkROQk9PU1RfQVNTRVJUKCBhZHZhbmNlX2JlZ2luIC0gYWR2YW5jZV9lbmQgPD0gc2l6ZShyKSAmJiAiY3JlYXRpbmcgaW52YWxpZCByYW5nZSIgKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2VfaW1wbCggciwgYWR2YW5jZV9iZWdpbiwgYWR2YW5jZV9lbmQgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBjb25zdCBSYW5nZSYgciwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2JlZ2luLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfZW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgLy9ORE5CT09TVF9BU1NFUlQoIGFkdmFuY2VfYmVnaW4gLSBhZHZhbmNlX2VuZCA8PSBzaXplKHIpICYmICJjcmVhdGluZyBpbnZhbGlkIHJhbmdlIiApOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bWFrZV9yYW5nZV9pbXBsKCByLCBhZHZhbmNlX2JlZ2luLCBhZHZhbmNlX2VuZCApOwotICAgICAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0gICAgICAgIC8vISBjb3B5IGEgcmFuZ2UgaW50byBhIHNlcXVlbmNlCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IGEgbmV3IHNlcXVlbmNlIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSBmcm9tIHRoZSBlbGVtZW50cwotICAgICAgICAgICAgaW4gdGhlIGdpdmVuIHJhbmdlCi0KLSAgICAgICAgICAgIFxwYXJhbSBSYW5nZSBBbiBpbnB1dCByYW5nZQotICAgICAgICAgICAgXHJldHVybiBOZXcgc2VxdWVuY2UKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcVQsIHR5cGVuYW1lIFJhbmdlID4KLSAgICAgICAgaW5saW5lIFNlcVQgY29weV9yYW5nZSggY29uc3QgUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU2VxVCggbmRuYm9vc3Q6OmJlZ2luKCByICksIG5kbmJvb3N0OjplbmQoIHIgKSApOwotICAgICAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE1MDApKQotICAgICNwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9pby5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2lvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc4NjYyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2lvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX1JBTkdFX0lPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9JT19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTUwMCkpCi0gICAgI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSAgICAjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0OTk2ICkKLSNlbmRpZgotCi0vLyBGcm9tIG5kbmJvb3N0L2R5bmFtaWNfYml0c2V0LmhwcDsgdGhhbmtzIHRvIE1hdHRoaWFzIFRyb3llciBmb3IgQ3JheSBYMSBwYXRjaC4KLSNpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUyAKLSMgaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkgJiYgXAotICAgICFkZWZpbmVkIChfX1NUTF9VU0VfTkVXX0lPU1RSRUFNUykgJiYgIWRlZmluZWQoX19jcmF5eDEpIFwKLSAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfT0xEX0lPU1RSRUFNUwotIyBlbmRpZgotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUwotCi0jaWZuZGVmIF9TVExQX05PX0lPU1RSRUFNUwotIyBpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUwotIyAgaW5jbHVkZSA8b3N0cmVhbT4KLSMgZWxzZQotIyAgaW5jbHVkZSA8b3N0cmVhbS5oPgotIyBlbmRpZgotI2VuZGlmIC8vIF9TVExQX05PX0lPU1RSRUFNUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWZuZGVmIF9TVExQX05PX0lPU1RSRUFNUwotIyBpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUyAgIAotCi0gICAgICAgIC8vISBpdGVyYXRvcl9yYW5nZSBvdXRwdXQgb3BlcmF0b3IKLSAgICAgICAgLyohCi0gICAgICAgICAgICBPdXRwdXQgdGhlIHJhbmdlIHRvIGFuIG9zdHJlYW0uIEVsZW1lbnRzIGFyZSBvdXRwdXR0ZWQKLSAgICAgICAgICAgIGluIGEgc2VxdWVuY2Ugd2l0aG91dCBzZXBhcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3JULCB0eXBlbmFtZSBFbGVtLCB0eXBlbmFtZSBUcmFpdHMgPgotICAgICAgICBpbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPEVsZW0sVHJhaXRzPiYgb3BlcmF0b3I8PCggCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxFbGVtLCBUcmFpdHM+JiBPcywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y29weSggci5iZWdpbigpLCByLmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3ZhbHVlPEl0ZXJhdG9yVD46OnR5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW0sIFRyYWl0cz4oT3MpICk7Ci0gICAgICAgICAgICByZXR1cm4gT3M7Ci0gICAgICAgIH0KLQotIyBlbHNlCi0KLSAgICAgICAgLy8hIGl0ZXJhdG9yX3JhbmdlIG91dHB1dCBvcGVyYXRvcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIE91dHB1dCB0aGUgcmFuZ2UgdG8gYW4gb3N0cmVhbS4gRWxlbWVudHMgYXJlIG91dHB1dHRlZAotICAgICAgICAgICAgaW4gYSBzZXF1ZW5jZSB3aXRob3V0IHNlcGFyYXRvcnMuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvclQgPgotICAgICAgICBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KCAKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtJiBPcywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y29weSggci5iZWdpbigpLCByLmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8Y2hhcj4oT3MpKTsKLSAgICAgICAgICAgIHJldHVybiBPczsKLSAgICAgICAgfQotCi0jIGVuZGlmCi0jZW5kaWYgLy8gX1NUTFBfTk9fSU9TVFJFQU1TCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSN1bmRlZiBORE5CT09TVF9PTERfSU9TVFJFQU1TCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxNTAwKSkKLSAgICAjcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL211dGFibGVfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9tdXRhYmxlX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUxODNiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL211dGFibGVfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfTVVUQUJMRV9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfTVVUQUJMRV9JVEVSQVRPUl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gZGVmYXVsdAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCB7Ci0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRSggaXRlcmF0b3IgKQotICAgIH0KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBzdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvciA6IHJhbmdlX2RldGFpbDo6ZXh0cmFjdF9pdGVyYXRvcjxDPgotICAgIHt9OwotICAgIAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gcGFpcgotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgIHN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBhcnJheQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgIHN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBUW3N6XSA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFQqIHR5cGU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JiZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JiZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ODU4ZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfUkJFR0lOX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9SQkVHSU5fSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9yZXZlcnNlX2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yYmVnaW4oIEMmIGMgKQotewotICAgIHJldHVybiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUoIG5kbmJvb3N0OjplbmQoIGMgKSApOwotfQotCi0jZWxzZQotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yYmVnaW4oIEMmIGMgKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgIGl0ZXJfdHlwZTsKLSAgICByZXR1cm4gaXRlcl90eXBlKCBuZG5ib29zdDo6ZW5kKCBjICkgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIEMgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBDPjo6dHlwZQotcmJlZ2luKCBjb25zdCBDJiBjICkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBDPjo6dHlwZQotICAgICAgICBpdGVyX3R5cGU7Ci0gICAgcmV0dXJuIGl0ZXJfdHlwZSggbmRuYm9vc3Q6OmVuZCggYyApICk7Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlCi1jb25zdF9yYmVnaW4oIGNvbnN0IFQmIHIgKQotewotICAgIHJldHVybiBuZG5ib29zdDo6cmJlZ2luKCByICk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JlbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjgwY2E2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9SRU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9SRU5EX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9yZXZlcnNlX2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yZW5kKCBDJiBjICkKLXsKLSAgICByZXR1cm4gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlKCBuZG5ib29zdDo6YmVnaW4oIGMgKSApOwotfQotCi0jZWxzZQotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yZW5kKCBDJiBjICkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgICAgICAgICAgICAgaXRlcl90eXBlOwotICAgIHJldHVybiBpdGVyX3R5cGUoIG5kbmJvb3N0OjpiZWdpbiggYyApICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBDID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Y29uc3QgQz46OnR5cGUKLXJlbmQoIGNvbnN0IEMmIGMgKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IEM+Ojp0eXBlCi0gICAgICAgIGl0ZXJfdHlwZTsKLSAgICByZXR1cm4gaXRlcl90eXBlKCBuZG5ib29zdDo6YmVnaW4oIGMgKSApOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZQotY29uc3RfcmVuZCggY29uc3QgVCYgciApCi17Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpyZW5kKCByICk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVzdWx0X2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVzdWx0X2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA2ZTc3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3Jlc3VsdF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9SRVNVTFRfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1JFU1VMVF9JVEVSQVRPUl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vCi0gICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZCwgdXNlIHJhbmdlX2l0ZXJhdG9yPFQ+Ci0gICAgLy8KLSAgICAKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgc3RydWN0IHJhbmdlX3Jlc3VsdF9pdGVyYXRvciA6IHJhbmdlX2l0ZXJhdG9yPEM+Ci0gICAgeyB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmV2ZXJzZV9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JldmVyc2VfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTBmNzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmV2ZXJzZV9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9SRVZFUlNFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9SRVZFUlNFX0lURVJBVE9SX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL3JldmVyc2VfaXRlcmF0b3IuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gZGVmYXVsdAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIHN0cnVjdCByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8IAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSA+IHR5cGU7Ci0gICAgfTsKLSAgICAKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTUyNTUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9TSVpFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9TSVpFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBTaW5nbGVQYXNzUmFuZ2U+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3NpemU8Y29uc3QgU2luZ2xlUGFzc1JhbmdlPjo6dHlwZQotICAgICAgICByYW5nZV9jYWxjdWxhdGVfc2l6ZShjb25zdCBTaW5nbGVQYXNzUmFuZ2UmIHJuZykKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAobmRuYm9vc3Q6OmVuZChybmcpIC0gbmRuYm9vc3Q6OmJlZ2luKHJuZykpID49IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWNoYWJpbGl0eSBpbnZhcmlhbnQgYnJva2VuISIgKTsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZW5kKHJuZykgLSBuZG5ib29zdDo6YmVnaW4ocm5nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFNpbmdsZVBhc3NSYW5nZT4KLSAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9zaXplPGNvbnN0IFNpbmdsZVBhc3NSYW5nZT46OnR5cGUKLSAgICBzaXplKGNvbnN0IFNpbmdsZVBhc3NSYW5nZSYgcm5nKQotICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgICAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgICAgIHJldHVybiByYW5nZV9jYWxjdWxhdGVfc2l6ZShybmcpOwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U0ODYzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9TSVpFX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1NJWkVfVFlQRV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgY2xhc3MgaGFzX3NpemVfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIgbm9fdHlwZTsKLSAgICAgICAgICAgIHN0cnVjdCB5ZXNfdHlwZSB7IGNoYXIgZHVtbXlbMl07IH07Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEM+Ci0gICAgICAgICAgICBzdGF0aWMgeWVzX3R5cGUgdGVzdChORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OnNpemVfdHlwZSB4KTsKLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgQXJnPgotICAgICAgICAgICAgc3RhdGljIG5vX3R5cGUgdGVzdChBcmcgeCk7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YodGVzdDxUPigwKSkgPT0gc2l6ZW9mKHllc190eXBlKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGVyPXZvaWQ+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtYWtlX3Vuc2lnbmVkPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxDPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEM+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplPAotICAgICAgICAgICAgQywKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZW5hYmxlX2lmPGhhc19zaXplX3R5cGU8Qz4sIHZvaWQ+Ojp0eXBlCi0gICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OnNpemVfdHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9zaXplIDoKLSAgICAgICAgZGV0YWlsOjpyYW5nZV9zaXplPFQ+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9zaXplPGNvbnN0IFQgPgotICAgICAgICA6IGRldGFpbDo6cmFuZ2Vfc2l6ZTxUPgotICAgIHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTVlYTYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9WQUxVRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9WQUxVRV9UWVBFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi0vLyNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0vLyNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHA+Ci0vLyNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX3ZhbHVlIDogaXRlcmF0b3JfdmFsdWU8IHR5cGVuYW1lIHJhbmdlX2l0ZXJhdG9yPFQ+Ojp0eXBlID4KLSAgICB7IH07Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTZlY2Q2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVGX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vCi0vLyAgcmVmLmhwcCAtIHJlZi9jcmVmLCB1c2VmdWwgaGVscGVyIGZ1bmN0aW9ucwotLy8KLS8vICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8gIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAoQykgMjAwMiBEYXZpZCBBYnJhaGFtcwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9yZWYuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyByZWZlcmVuY2Vfd3JhcHBlcgoteyAKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFQgdHlwZTsKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8IDEzMDAgKQotCi0gICAgZXhwbGljaXQgcmVmZXJlbmNlX3dyYXBwZXIoVCYgdCk6IHRfKCZ0KSB7fQotCi0jZWxzZQotCi0gICAgZXhwbGljaXQgcmVmZXJlbmNlX3dyYXBwZXIoVCYgdCk6IHRfKG5kbmJvb3N0OjphZGRyZXNzb2YodCkpIHt9Ci0KLSNlbmRpZgotCi0gICAgb3BlcmF0b3IgVCYgKCkgY29uc3QgeyByZXR1cm4gKnRfOyB9Ci0KLSAgICBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqdF87IH0KLQotICAgIFQqIGdldF9wb2ludGVyKCkgY29uc3QgeyByZXR1cm4gdF87IH0KLQotcHJpdmF0ZToKLQotICAgIFQqIHRfOwotfTsKLQotIyBpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkgKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFRl9DT05TVAotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUkVGX0NPTlNUIGNvbnN0Ci0jIGVuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSByZWZlcmVuY2Vfd3JhcHBlcjxUPiBORE5CT09TVF9SRUZfQ09OU1QgcmVmKFQgJiB0KQoteyAKLSAgICByZXR1cm4gcmVmZXJlbmNlX3dyYXBwZXI8VD4odCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSByZWZlcmVuY2Vfd3JhcHBlcjxUIGNvbnN0PiBORE5CT09TVF9SRUZfQ09OU1QgY3JlZihUIGNvbnN0ICYgdCkKLXsKLSAgICByZXR1cm4gcmVmZXJlbmNlX3dyYXBwZXI8VCBjb25zdD4odCk7Ci19Ci0KLSMgdW5kZWYgTkROQk9PU1RfUkVGX0NPTlNUCi0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGlzX3JlZmVyZW5jZV93cmFwcGVyCi0gICAgOiBwdWJsaWMgbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyB1bndyYXBfcmVmZXJlbmNlCi17Ci0gcHVibGljOgotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotIyAgZGVmaW5lIEFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRihYKSBcCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi1jbGFzcyBpc19yZWZlcmVuY2Vfd3JhcHBlcjwgWCA+IFwKLSAgICA6IHB1YmxpYyBtcGw6OnRydWVfIFwKLXsgXAotfTsgXAotXAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotY2xhc3MgdW53cmFwX3JlZmVyZW5jZTwgWCA+IFwKLXsgXAotIHB1YmxpYzogXAotICAgIHR5cGVkZWYgVCB0eXBlOyBcCi19OyBcCi0vKiovCi0KLUFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRihyZWZlcmVuY2Vfd3JhcHBlcjxUPikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMpCi1BVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QpCi1BVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYocmVmZXJlbmNlX3dyYXBwZXI8VD4gdm9sYXRpbGUpCi1BVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3Qgdm9sYXRpbGUpCi0jZW5kaWYKLQotIyAgdW5kZWYgQVVYX1JFRkVSRU5DRV9XUkFQUEVSX01FVEFGVU5DVElPTlNfREVGCi0KLSMgZWxzZSAvLyBubyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgdHlwZWRlZiBjaGFyICgmeWVzX3JlZmVyZW5jZV93cmFwcGVyX3QpWzFdOwotICB0eXBlZGVmIGNoYXIgKCZub19yZWZlcmVuY2Vfd3JhcHBlcl90KVsyXTsKLSAgICAgIAotICBub19yZWZlcmVuY2Vfd3JhcHBlcl90IGlzX3JlZmVyZW5jZV93cmFwcGVyX3Rlc3QoLi4uKTsKLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICB5ZXNfcmVmZXJlbmNlX3dyYXBwZXJfdCBpc19yZWZlcmVuY2Vfd3JhcHBlcl90ZXN0KHR5cGU8IHJlZmVyZW5jZV93cmFwcGVyPFQ+ID4pOwotCi0gIHRlbXBsYXRlPGJvb2wgd3JhcHBlZD4KLSAgc3RydWN0IHJlZmVyZW5jZV91bndyYXBwZXIKLSAgewotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgIH07Ci0gIH07Ci0KLSAgdGVtcGxhdGU8PgotICBzdHJ1Y3QgcmVmZXJlbmNlX3Vud3JhcHBlcjx0cnVlPgotICB7Ci0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBhcHBseQotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotICAgICAgfTsKLSAgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGlzX3JlZmVyZW5jZV93cmFwcGVyCi17Ci0gcHVibGljOgotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICAgc2l6ZW9mKGRldGFpbDo6aXNfcmVmZXJlbmNlX3dyYXBwZXJfdGVzdCh0eXBlPFQ+KCkpKQotICAgICAgICAgICAgPT0gc2l6ZW9mKGRldGFpbDo6eWVzX3JlZmVyZW5jZV93cmFwcGVyX3QpKSk7Ci0gICAgCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyB1bndyYXBfcmVmZXJlbmNlCi0gICAgOiBwdWJsaWMgZGV0YWlsOjpyZWZlcmVuY2VfdW53cmFwcGVyPAotICAgICAgICBpc19yZWZlcmVuY2Vfd3JhcHBlcjxUPjo6dmFsdWUKLSAgICAgID46OnRlbXBsYXRlIGFwcGx5PFQ+Ci17fTsKLQotIyBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgdW53cmFwX3JlZmVyZW5jZTxUPjo6dHlwZSYKLXVud3JhcF9yZWYoVCYgdCkKLXsKLSAgICByZXR1cm4gdDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIFQqIGdldF9wb2ludGVyKCByZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHIgKQotewotICAgIHJldHVybiByLmdldF9wb2ludGVyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1JFRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMWM3YTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yZWdleCBmb3IgZG9jdW1lbnRhdGlvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIG5kbmJvb3N0OjpiYXNpY19yZWdleDw+IGFuZCBhc3NvY2lhdGVkCi0gICogICAgICAgICAgICAgICAgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLiBUaGlzIGhlYWRlciBpcyB0aGUgbWFpbgotICAqICAgICAgICAgICAgICAgIGVudHJ5IHBvaW50IGZvciB0aGUgdGVtcGxhdGUgcmVnZXggY29kZS4KLSAgKi8KLQotCi0vKiBzdGFydCB3aXRoIEMgY29tcGF0aWJpbGl0eSBBUEkgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRV9SRUdFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVfUkVHRVhfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4LmhwcD4KLQotI2VuZGlmICAvLyBpbmNsdWRlCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxNjhiNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjb25maWcuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiByZWdleCBleHRlbmRlZCBjb25maWcgc2V0dXAuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0vKgotICogQm9ybGFuZCBDKysgRml4L2Vycm9yIGNoZWNrCi0gKiB0aGlzIGhhcyB0byBnbyAqYmVmb3JlKiB3ZSBpbmNsdWRlIGFueSBzdGQgbGliIGhlYWRlcnM6Ci0gKi8KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcD4KLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgSW5jbHVkZSBhbGwgdGhlIGhlYWRlcnMgd2UgbmVlZCBoZXJlOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1VTRVJfQ09ORklHCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFUl9DT05GSUcgPG5kbmJvb3N0L3JlZ2V4L3VzZXIuaHBwPgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSBORE5CT09TVF9SRUdFWF9VU0VSX0NPTkZJRwotCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jZWxzZQotICAgLyoKLSAgICAqIEMgYnVpbGQsCi0gICAgKiBkb24ndCBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiBiZWNhdXNlIHRoYXQgbWF5Ci0gICAgKiBkbyBDKysgc3BlY2lmaWMgdGhpbmdzIGluIGZ1dHVyZS4uLgotICAgICovCi0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLSMgIGluY2x1ZGUgPHN0ZGRlZi5oPgotIyAgaWZkZWYgX01TQ19WRVIKLSMgICAgIGRlZmluZSBORE5CT09TVF9NU1ZDIF9NU0NfVkVSCi0jICBlbmRpZgotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBCb2lsZXJwbGF0ZSByZWdleCBjb25maWcgb3B0aW9uczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogT2Jzb2xldGUgbWFjcm8sIHVzZSBORE5CT09TVF9WRVJTSU9OIGluc3RlYWQ6ICovCi0jZGVmaW5lIE5ETkJPT1NUX1JFX1ZFUlNJT04gMzIwCi0KLS8qIGZpeDogKi8KLSNpZiBkZWZpbmVkKF9VTklDT0RFKSAmJiAhZGVmaW5lZChVTklDT0RFKQotI2RlZmluZSBVTklDT0RFCi0jZW5kaWYKLQotLyoKLSAqIEZpeCBmb3IgZ2NjIHByaW9yIHRvIDMuNDogc3RkOjpjdHlwZTx3Y2hhcl90PiBkb2Vzbid0IGFsbG93Ci0gKiBtYXNrcyB0byBiZSBjb21iaW5lZCwgZm9yIGV4YW1wbGU6Ci0gKiBzdGQ6OnVzZV9mYWNldDxzdGQ6OmN0eXBlPHdjaGFyX3Q+ID4uaXMoc3RkOjpjdHlwZV9iYXNlOjpsb3dlcnxzdGQ6OmN0eXBlX2Jhc2U6OnVwcGVyLCBMJ2EnKTsKLSAqIHJldHVybnMgKmZhbHNlKi4KLSAqLwotI2lmZGVmIF9fR0xJQkNQUF9fCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSNlbmRpZgotCi0vKgotICogSW50ZWwgQysrIGJlZm9yZSA4LjAgZW5kcyB1cCB3aXRoIHVucmVzb2x2ZWQgZXh0ZXJuYWxzIHVubGVzcyB3ZSB0dXJuIG9mZgotICogZXh0ZXJuIHRlbXBsYXRlIHN1cHBvcnQ6Ci0gKi8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lOVEVMKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAoTkROQk9PU1RfSU5URUwgPD0gODAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotI2VuZGlmCi0vKgotICogVmlzdWFsIEMrKyBkb2Vzbid0IHN1cHBvcnQgZXh0ZXJuYWwgdGVtcGxhdGVzIHdpdGggQysrIGV4dGVuc2lvbnMgdHVybmVkIG9mZjoKLSAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLSNlbmRpZgotLyoKLSAqIFNoYXJlZCByZWdleCBsaWIgd2lsbCBjcmFzaCB3aXRob3V0IHRoaXMsIGZyYW5rbHkgaXQgbG9va3MgYSBsb3QgbGlrZSBhIGdjYyBidWc6Ci0gKi8KLSNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotI2VuZGlmCi0KLS8qCi0gKiBJZiB0aGVyZSBpc24ndCBnb29kIGVub3VnaCB3aWRlIGNoYXJhY3RlciBzdXBwb3J0IHRoZW4gdGhlcmUgd2lsbAotICogYmUgbm8gd2lkZSBjaGFyYWN0ZXIgcmVndWxhciBleHByZXNzaW9uczoKLSAqLwotI2lmIChkZWZpbmVkKE5ETkJPT1NUX05PX0NXQ0hBUikgfHwgZGVmaW5lZChORE5CT09TVF9OT19DV0NUWVBFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9XU1RSSU5HKSkKLSMgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19XUkVHRVgKLSMgIGVuZGlmCi0jZWxzZQotIyAgaWYgZGVmaW5lZChfX3NnaSkgJiYgKGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpCi0gICAgICAvKiBTVExQb3J0IG9uIElSSVggaXMgbWlzY29uZmlndXJlZDogPGN3Y3R5cGU+IGRvZXMgbm90IGNvbXBpbGUKLSAgICAgICAqIGFzIGEgdGVtcG9yYXJ5IGZpeCBpbmNsdWRlIDx3Y3R5cGUuaD4gaW5zdGVhZCBhbmQgcHJldmVudCBpbmNsdXNpb24KLSAgICAgICAqIG9mIFNUTFBvcnQgdmVyc2lvbiBvZiA8Y3djdHlwZT4gKi8KLSMgICAgIGluY2x1ZGUgPHdjdHlwZS5oPgotIyAgICAgZGVmaW5lIF9fU1RMUE9SVF9DV0NUWVBFCi0jICAgICBkZWZpbmUgX1NUTFBfQ1dDVFlQRQotIyAgZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0jICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcvY3djaGFyLmhwcD4KLSNlbmRpZgotCi0jZW5kaWYKLQotLyoKLSAqIElmIFdpbjMyIHN1cHBvcnQgaGFzIGJlZW4gZGlzYWJsZWQgZm9yIGJvb3N0IGluIGdlbmVyYWwsIHRoZW4KLSAqIGl0IGlzIGZvciByZWdleCBpbiBwYXJ0aWN1bGFyOgotICovCi0jaWYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVzMyCi0jZW5kaWYKLQotLyogZGlzYWJsZSBvdXIgb3duIGZpbGUtaXRlcmF0b3JzIGFuZCBtYXBmaWxlcyBpZiB3ZSBjYW4ndAotICogc3VwcG9ydCB0aGVtOiAqLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19ESVJFTlRfSCkgJiYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKSkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19GSUxFSVRFUgotI2VuZGlmCi0KLS8qIGJhY2t3YXJkcyBjb21wYXRpYml0aXR5OiAqLwotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVfTk9fTElCKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0xJQgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykpCi0vKiBnY2Mgb24gd2luMzIgaGFzIHByb2JsZW1zIGlmIHlvdSBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gICAoc3BvcmFkaWNhbGx5IGdlbmVyYXRlcyBiYWQgY29kZSkuICovCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVzMyCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQ09NT19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpICYmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19XMzIKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgV2lkZSBjaGFyYWN0ZXIgd29ya2Fyb3VuZHM6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1Qgd2hlbiB3Y2hhcl90IGlzIGEgbmF0aXZlIHR5cGUsIGJ1dCB0aGUgdXNlcnMKLSAqIGNvZGUgbWF5IGJlIGJ1aWx0IHdpdGggd2NoYXJfdCBhcyB1bnNpZ25lZCBzaG9ydDogYmFzaWNhbGx5IHdoZW4gd2UncmUgYnVpbGRpbmcKLSAqIHdpdGggTVNWQyBhbmQgdGhlIC9aYzp3Y2hhcl90IG9wdGlvbiB3ZSBwbGFjZSBzb21lIGV4dHJhIHVuc2lnbmVkIHNob3J0IHZlcnNpb25zCi0gKiBvZiB0aGUgbm9uLWlubGluZSBmdW5jdGlvbnMgaW4gdGhlIGxpYnJhcnksIHNvIHRoYXQgdXNlcnMgY2FuIHN0aWxsIGxpbmsgdG8gdGhlIGxpYiwKLSAqIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIHRoZWlyIG93biBjb2RlIGlzIGJ1aWx0IHdpdGggL1pjOndjaGFyX3QuCi0gKiBOb3RlIHRoYXQgdGhpcyBkb2VzIE5PVCBXT1JLIHdpdGggVkMxMCB3aGVuIHRoZSBDKysgbG9jYWxlIGlzIGluIGVmZmVjdCBhcwotICogdGhlIGxvY2FsZSdzIDx1bnNpZ25lZCBzaG9ydD4gZmFjZXRzIHNpbXBseSBkbyBub3QgY29tcGlsZSBpbiB0aGF0IGNhc2UuCi0gKi8KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBkZWZpbmVkKF9fSUNMKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpICYmIGRlZmluZWQoTkROQk9PU1RfV0lORE9XUykgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX1JXU1REX1ZFUikgJiYgKChfTVNDX1ZFUiA8IDE2MDApIHx8ICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKSkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotIyAgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEpCi0jICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotIyAgICAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLSMgIGlmIGRlZmluZWQoX0RMTCkgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDE2MDApCi0jICAgICBpbmNsdWRlIDxzdHJpbmc+Ci0gICAgICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PjsKLSMgIGVuZGlmCi0jICBpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jICBlbmRpZgotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFNldCB1cCBkbGwgaW1wb3J0L2V4cG9ydCBvcHRpb25zOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9SRUdFWF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9TVEFUSUNfTElOSykKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfU09VUkNFKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0JVSUxEX0RMTAotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZW5kaWYKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfREVDTAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19MSUIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1NPVVJDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF9yZWdleAotIyAgaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRFlOX0xJTksKLSMgIGVuZGlmCi0jICBpZmRlZiBORE5CT09TVF9SRUdFWF9ESUFHCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTElCX0RJQUdOT1NUSUMKLSMgIGVuZGlmCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgU2V0IHVwIGZ1bmN0aW9uIGNhbGwgdHlwZToKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPj0gMTIwMCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpCi0jaWYgZGVmaW5lZChfREVCVUcpIHx8IGRlZmluZWQoX19NU1ZDX1JVTlRJTUVfQ0hFQ0tTKSB8fCBkZWZpbmVkKF9NQU5BR0VEKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX0ZBU1RDQUxMKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NBTEwgX19jZGVjbAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9DQUxMIF9fZmFzdGNhbGwKLSNlbmRpZgotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NDQUxMIF9fY2RlY2wKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0FMTCBfX2Zhc3RjYWxsCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0NBTEwgX19zdGRjYWxsCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DQUxMCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0FMTAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NDQUxMCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NDQUxMCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFNldCB1cCBsb2NhbGlzYXRpb24gbW9kZWw6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiAqLwotI2lmZGVmIE5ETkJPT1NUX1JFX0xPQ0FMRV9DCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JFX0xPQ0FMRV9DUFAKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jZW5kaWYKLQotLyogV2luMzIgZGVmYXVsdHMgdG8gbmF0aXZlIFdpbjMyIGxvY2FsZTogKi8KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX1dJTjMyX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9XSU4zMl9MT0NBTEUKLSNlbmRpZgotLyogb3RoZXJ3aXNlIHVzZSBDKysgbG9jYWxlIGlmIHN1cHBvcnRlZDogKi8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfV0lOMzJfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFCi0jZW5kaWYKLS8qIG90aGVyd2lzZSB1c2UgQysgbG9jYWxlOiAqLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9XSU4zMl9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQgMTAwMDAwMDAwCi0jZW5kaWYKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgRXJyb3IgSGFuZGxpbmcgZm9yIGV4Y2VwdGlvbiBmcmVlIGNvbXBpbGVyczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLS8qCi0gKiBJZiB0aGVyZSBhcmUgbm8gZXhjZXB0aW9ucyB0aGVuIHdlIG11c3QgcmVwb3J0IGNyaXRpY2FsLWVycm9ycwotICogdGhlIG9ubHkgd2F5IHdlIGtub3cgaG93OyBieSB0ZXJtaW5hdGluZy4KLSAqLwotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PRUhfQVNTRVJUKHgpXAotaWYoMCA9PSAoeCkpXAote1wKLSAgIHN0ZDo6c3RyaW5nIHMoIkVycm9yOiBjcml0aWNhbCByZWdleCsrIGZhaWx1cmUgaW46ICIpO1wKLSAgIHMuYXBwZW5kKCN4KTtcCi0gICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZShzKTtcCi0gICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpO1wKLX0KLSNlbHNlCi0vKgotICogV2l0aCBleGNlcHRpb25zIHRoZW4gZXJyb3IgaGFuZGxpbmcgaXMgdGFrZW4gY2FyZSBvZiBhbmQKLSAqIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZXNlIGNoZWNrczoKLSAqLwotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PRUhfQVNTRVJUKHgpCi0jZW5kaWYKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgU3RhY2sgcHJvdGVjdGlvbiB1bmRlciBNUyBXaW5kb3dzOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9WMykKLSMgIGlmKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkgfHwgZGVmaW5lZChfV0lOQ0UpKSBcCi0gICAgICAgICYmICFkZWZpbmVkKF9fR05VQ19fKSBcCi0gICAgICAgICYmICEoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPj0gMHg2MDApKSBcCi0gICAgICAgICYmICEoZGVmaW5lZChfX01XRVJLU19fKSAmJiAoX19NV0VSS1NfXyA8PSAweDMwMDMpKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJEKQotIyAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJEKQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCByZXNldF9zdGFja19ndWFyZF9wYWdlKCk7Ci0KLX0KLX0KLQotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEFsZ29yaXRobSBzZWxlY3Rpb24gYW5kIGNvbmZpZ3VyYXRpb246Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUpCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRCkgJiYgIWRlZmluZWQoX1NUTFBfREVCVUcpICYmICFkZWZpbmVkKF9fU1RMX0RFQlVHKSAmJiAhKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPj0gMTQwMCkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotIyAgaWZkZWYgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0jICAgICBlcnJvciAiQ2FuJ3Qgc2V0IGJvdGggTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFIGFuZCBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFIgotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUgNDA5NgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSA8IDUxMgotIyAgICAgZXJyb3IgIk5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSBtdXN0IGJlIGF0IGxlYXN0IDUxMiIKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BWF9CTE9DS1MgMTAyNAotIyAgZW5kaWYKLSMgIGlmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotIyAgICAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BWF9DQUNIRV9CTE9DS1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQVhfQ0FDSEVfQkxPQ0tTIDE2Ci0jICBlbmRpZgotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIGhlbHBlciBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnM6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUpCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCogTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRfbWVtX2Jsb2NrKCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBwdXRfbWVtX2Jsb2NrKHZvaWQqKTsKLQotfX0gLyogbmFtZXNwYWNlcyAqLwotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBEaWFnbm9zdGljczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19JTkZPCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBwcmludF9yZWdleF9saWJyYXJ5X2luZm8oKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9ESUFHKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJORE5CT09TVF9SRUdFWF9ERUNMIiBORE5CT09TVF9TVFJJTkdJWkUoPU5ETkJPT1NUX1JFR0VYX0RFQ0wpKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJORE5CT09TVF9SRUdFWF9DQUxMIiBORE5CT09TVF9TVFJJTkdJWkUoPU5ETkJPT1NUX1JFR0VYX0NBTEwpKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJORE5CT09TVF9SRUdFWF9DQ0FMTCIgTkROQk9PU1RfU1RSSU5HSVpFKD1ORE5CT09TVF9SRUdFWF9DQ0FMTCkpCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jICBwcmFnbWEgbWVzc2FnZSAoIlVzaW5nIEMgbG9jYWxlIGluIHJlZ2V4IHRyYWl0cyBjbGFzcyIpCi0jZWxpZiBORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJVc2luZyBDKysgbG9jYWxlIGluIHJlZ2V4IHRyYWl0cyBjbGFzcyIpCi0jZWxzZQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJVc2luZyBXaW4zMiBsb2NhbGUgaW4gcmVnZXggdHJhaXRzIGNsYXNzIikKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJEeW5hbWljIGxpbmtpbmcgZW5hYmxlZCIpCi0jZW5kaWYKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX0xJQikgfHwgZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJBdXRvLWxpbmtpbmcgZGlzYWJsZWQiKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0jICBwcmFnbWEgbWVzc2FnZSAoIkV4dGVybiB0ZW1wbGF0ZXMgZGlzYWJsZWQiKQotI2VuZGlmCi0KLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcvYm9ybGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUyMDJlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgbmRuYm9vc3QvcmVnZXgvY29uZmlnL2JvcmxhbmQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiByZWdleCBib3JsYW5kLXNwZWNpZmljIGNvbmZpZyBzZXR1cC4KLSAgKi8KLQotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBpZiAoX19CT1JMQU5EQ19fID09IDB4NTUwKSB8fCAoX19CT1JMQU5EQ19fID09IDB4NTUxKQotICAgICAgLy8gcHJvYmxlbXMgd2l0aCBzdGQ6OmJhc2ljX3N0cmluZyBhbmQgZGxsIFJUTDoKLSMgICAgIGlmIGRlZmluZWQoX1JUTERMTCkgJiYgZGVmaW5lZChfUldTVERfQ09NUElMRV9JTlNUQU5USUFURSkKLSMgICAgICAgIGlmZGVmIE5ETkJPT1NUX1JFR0VYX0JVSUxEX0RMTAotIyAgICAgICAgICAgZXJyb3IgX1JXU1REX0NPTVBJTEVfSU5TVEFOVElBVEUgbXVzdCBub3QgYmUgZGVmaW5lZCB3aGVuIGJ1aWxkaW5nIHJlZ2V4KysgYXMgYSBETEwKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJEZWZpbmluZyBfUldTVERfQ09NUElMRV9JTlNUQU5USUFURSB3aGVuIGxpbmtpbmcgdG8gdGhlIERMTCB2ZXJzaW9uIG9mIHRoZSBSVEwgbWF5IHByb2R1Y2UgbWVtb3J5IGNvcnJ1cHRpb24gcHJvYmxlbXMgaW4gc3RkOjpiYXNpY19zdHJpbmcsIGFzIGEgcmVzdWx0IG9mIHNlcGFyYXRlIHZlcnNpb25zIG9mIGJhc2ljX3N0cmluZydzIHN0YXRpYyBkYXRhIGluIHRoZSBSVEwgYW5kIHlvdSdyZSBleGUvZGxsOiBiZSB3YXJuZWQhISIpCi0jICAgICAgICBlbmRpZgotIyAgICAgZW5kaWYKLSMgICAgIGlmbmRlZiBfUlRMRExMCi0gICAgICAgICAvLyB0aGlzIGlzIGhhcm1sZXNzIGZvciBhIHN0YWljIGxpbms6Ci0jICAgICAgICBkZWZpbmUgX1JXU1REX0NPTVBJTEVfSU5TVEFOVElBVEUKLSMgICAgIGVuZGlmCi0gICAgICAvLyBleHRlcm5hbCB0ZW1wbGF0ZXMgY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcmVhc29uOgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotIyAgZW5kaWYKLSMgIGlmIChfX0JPUkxBTkRDX18gPD0gMHg1NDApICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX0xJQikgJiYgIWRlZmluZWQoX05PX1ZDTCkKLSAgICAgIC8vIEMrKyBCdWlsZGVyIDQgYW5kIGVhcmxpZXIsIHdlIGNhbid0IHRlbGwgd2hldGhlciB3ZSBzaG91bGQgYmUgdXNpbmcKLSAgICAgIC8vIHRoZSBWQ0wgcnVudGltZSBvciBub3QsIGRvIGEgc3RhdGljIGxpbmsgaW5zdGVhZDoKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9TVEFUSUNfTElOSwotIyAgZW5kaWYKLSAgIC8vCi0gICAvLyBWQ0wgc3VwcG9ydDoKLSAgIC8vIGlmIHdlJ3JlIGJ1aWxkaW5nIGEgY29uc29sZSBhcHAgdGhlbiB0aGVyZSBjYW4ndCBiZSBhbnkgVkNMIChjYW4gdGhlcmU/KQotIyAgaWYgIWRlZmluZWQoX19DT05TT0xFX18pICYmICFkZWZpbmVkKF9OT19WQ0wpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX1ZDTAotIyAgZW5kaWYKLSAgIC8vCi0gICAvLyBpZiB0aGlzIGlzbid0IFdpbjMyIHRoZW4gZG9uJ3QgYXV0b21hdGljYWxseSBzZWxlY3QgbGluawotICAgLy8gbGlicmFyaWVzOgotICAgLy8KLSMgIGlmbmRlZiBfV2luZG93cwotIyAgICAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX05PX0xJQgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0xJQgotIyAgICAgZW5kaWYKLSMgICAgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9TVEFUSUNfTElOSwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19MSU5LCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotI2lmIF9fQk9STEFORENfXyA8IDB4NjAwCi0vLwotLy8gc3RyaW5nIHdvcmthcm91bmRzOgotLy8KLSNpbmNsdWRlIDxjc3RyaW5nPgotI3VuZGVmIHN0cmNtcAotI3VuZGVmIHN0cmNweQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2N3Y2hhci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9jd2NoYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTY1YzFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2N3Y2hhci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBuZG5ib29zdC9yZWdleC9jb25maWcvY3djaGFyLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogcmVnZXggd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIGZpeGVzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19DV0NIQVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19DV0NIQVJfSFBQCi0KLSNpbmNsdWRlIDxjd2NoYXI+Ci0jaW5jbHVkZSA8Y3djdHlwZT4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChfX1NURF9SV0NPTVBJTEVSX0hfXykgfHwgZGVmaW5lZChfUldTVERfVkVSKQotLy8gYXBwYXJlbnRseSB0aGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgUlcgU1RMIG9uIExpbnV4OgotI3VuZGVmIGlzd2FsbnVtCi0jdW5kZWYgaXN3YWxwaGEKLSN1bmRlZiBpc3dibGFuawotI3VuZGVmIGlzd2NudHJsCi0jdW5kZWYgaXN3ZGlnaXQKLSN1bmRlZiBpc3dncmFwaAotI3VuZGVmIGlzd2xvd2VyCi0jdW5kZWYgaXN3cHJpbnQKLSN1bmRlZiBpc3dwcmludAotI3VuZGVmIGlzd3B1bmN0Ci0jdW5kZWYgaXN3c3BhY2UKLSN1bmRlZiBpc3d1cHBlcgotI3VuZGVmIGlzd3hkaWdpdAotI3VuZGVmIGlzd2N0eXBlCi0jdW5kZWYgdG93bG93ZXIKLSN1bmRlZiB0b3d1cHBlcgotI3VuZGVmIHRvd2N0cmFucwotI3VuZGVmIHdjdHJhbnMKLSN1bmRlZiB3Y3R5cGUKLSNlbmRpZgotCi1uYW1lc3BhY2Ugc3RkewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1leHRlcm4gIkMiewotI2VuZGlmCi0KLSNpZmRlZiBpc3dhbG51bQotaW5saW5lIGludCAoaXN3YWxudW0pKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3YWxudW0oaSk7IH0KLSN1bmRlZiBpc3dhbG51bQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3YWxudW07Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2FscGhhCi1pbmxpbmUgaW50IChpc3dhbHBoYSkod2ludF90IGkpCi17IHJldHVybiBpc3dhbHBoYShpKTsgfQotI3VuZGVmIGlzd2FscGhhCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dhbHBoYTsKLSNlbmRpZgotCi0jaWZkZWYgaXN3Y250cmwKLWlubGluZSBpbnQgKGlzd2NudHJsKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2NudHJsKGkpOyB9Ci0jdW5kZWYgaXN3Y250cmwKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2NudHJsOwotI2VuZGlmCi0KLSNpZmRlZiBpc3dkaWdpdAotaW5saW5lIGludCAoaXN3ZGlnaXQpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3ZGlnaXQoaSk7IH0KLSN1bmRlZiBpc3dkaWdpdAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3ZGlnaXQ7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2dyYXBoCi1pbmxpbmUgaW50IChpc3dncmFwaCkod2ludF90IGkpCi17IHJldHVybiBpc3dncmFwaChpKTsgfQotI3VuZGVmIGlzd2dyYXBoCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dncmFwaDsKLSNlbmRpZgotCi0jaWZkZWYgaXN3bG93ZXIKLWlubGluZSBpbnQgKGlzd2xvd2VyKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2xvd2VyKGkpOyB9Ci0jdW5kZWYgaXN3bG93ZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2xvd2VyOwotI2VuZGlmCi0KLSNpZmRlZiBpc3dwcmludAotaW5saW5lIGludCAoaXN3cHJpbnQpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3cHJpbnQoaSk7IH0KLSN1bmRlZiBpc3dwcmludAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3cHJpbnQ7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd3B1bmN0Ci1pbmxpbmUgaW50IChpc3dwdW5jdCkod2ludF90IGkpCi17IHJldHVybiBpc3dwdW5jdChpKTsgfQotI3VuZGVmIGlzd3B1bmN0Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dwdW5jdDsKLSNlbmRpZgotCi0jaWZkZWYgaXN3c3BhY2UKLWlubGluZSBpbnQgKGlzd3NwYWNlKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd3NwYWNlKGkpOyB9Ci0jdW5kZWYgaXN3c3BhY2UKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd3NwYWNlOwotI2VuZGlmCi0KLSNpZmRlZiBpc3d1cHBlcgotaW5saW5lIGludCAoaXN3dXBwZXIpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3dXBwZXIoaSk7IH0KLSN1bmRlZiBpc3d1cHBlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3dXBwZXI7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd3hkaWdpdAotaW5saW5lIGludCAoaXN3eGRpZ2l0KSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd3hkaWdpdChpKTsgfQotI3VuZGVmIGlzd3hkaWdpdAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3eGRpZ2l0OwotI2VuZGlmCi0KLSNpZmRlZiB0b3dsb3dlcgotaW5saW5lIHdpbnRfdCAodG93bG93ZXIpKHdpbnRfdCBpKQoteyByZXR1cm4gdG93bG93ZXIoaSk7IH0KLSN1bmRlZiB0b3dsb3dlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6dG93bG93ZXI7Ci0jZW5kaWYKLQotI2lmZGVmIHRvd3VwcGVyCi1pbmxpbmUgd2ludF90ICh0b3d1cHBlcikod2ludF90IGkpCi17IHJldHVybiB0b3d1cHBlcihpKTsgfQotI3VuZGVmIHRvd3VwcGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjogdG93dXBwZXI7Ci0jZW5kaWYKLQotI2lmZGVmIHdjc2NtcAotaW5saW5lIGludCAod2NzY21wKShjb25zdCB3Y2hhcl90ICpwMSwgY29uc3Qgd2NoYXJfdCAqcDIpCi17IHJldHVybiB3Y3NjbXAocDEscDIpOyB9Ci0jdW5kZWYgd2NzY21wCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjp3Y3NjbXA7Ci0jZW5kaWYKLQotI2lmZGVmIHdjc2NvbGwKLWlubGluZSBpbnQgKHdjc2NvbGwpKGNvbnN0IHdjaGFyX3QgKnAxLCBjb25zdCB3Y2hhcl90ICpwMikKLXsgcmV0dXJuIHdjc2NvbGwocDEscDIpOyB9Ci0jdW5kZWYgd2NzY29sbAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkgJiYgIWRlZmluZWQoVU5ERVJfQ0UpCi11c2luZyA6Ondjc2NvbGw7Ci0jZW5kaWYKLQotI2lmZGVmIHdjc2NweQotaW5saW5lIHdjaGFyX3QgKih3Y3NjcHkpKHdjaGFyX3QgKnAxLCBjb25zdCB3Y2hhcl90ICpwMikKLXsgcmV0dXJuIHdjc2NweShwMSxwMik7IH0KLSN1bmRlZiB3Y3NjcHkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Ondjc2NweTsKLSNlbmRpZgotCi0jaWZkZWYgd2NzbGVuCi1pbmxpbmUgc2l6ZV90ICh3Y3NsZW4pKGNvbnN0IHdjaGFyX3QgKnApCi17IHJldHVybiB3Y3NsZW4ocCk7IH0KLSN1bmRlZiB3Y3NsZW4KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Ondjc2xlbjsKLSNlbmRpZgotCi0jaWZkZWYgd2NzeGZybQotc2l6ZV90IHdjc3hmcm0od2NoYXJfdCAqcDEsIGNvbnN0IHdjaGFyX3QgKnAyLCBzaXplX3QgcykKLXsgcmV0dXJuIHdjc3hmcm0ocDEscDIscyk7IH0KLSN1bmRlZiB3Y3N4ZnJtCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjp3Y3N4ZnJtOwotI2VuZGlmCi0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotfSAvLyBleHRlcm4gIkMiCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2Ugc3RkCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2ljdS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2ljdS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMjg1MjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9pY3UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzMSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGljdS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFVuaWNvZGUgcmVndWxhciBleHByZXNzaW9ucyBvbiB0b3Agb2YgdGhlIElDVSBMaWJyYXJ5LgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lDVV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSUNVX0hQUAotCi0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS9jb2xsLmg+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvdW5pY29kZV9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludF9md2QuaHBwPgotI2luY2x1ZGUgPGJpdHNldD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocHVzaCkKLSNwcmFnbWEgd2FybmluZyAoZGlzYWJsZTogNDI1MSkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vIAotLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsczoKLS8vCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24KLXsKLSAgIHR5cGVkZWYgVUNoYXIzMiAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+ICAgICAgIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlIGxvY2FsZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLXB1YmxpYzoKLSAgIGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSYgbCkKLSAgICAgIDogbV9sb2NhbGUobCkKLSAgIHsKLSAgICAgIFVFcnJvckNvZGUgc3VjY2VzcyA9IFVfWkVST19FUlJPUjsKLSAgICAgIG1fY29sbGF0b3IucmVzZXQoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yOjpjcmVhdGVJbnN0YW5jZShsLCBzdWNjZXNzKSk7Ci0gICAgICBpZihVX1NVQ0NFU1Moc3VjY2VzcykgPT0gMCkKLSAgICAgICAgIGluaXRfZXJyb3IoKTsKLSAgICAgIG1fY29sbGF0b3ItPnNldFN0cmVuZ3RoKFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcjo6SURFTlRJQ0FMKTsKLSAgICAgIHN1Y2Nlc3MgPSBVX1pFUk9fRVJST1I7Ci0gICAgICBtX3ByaW1hcnlfY29sbGF0b3IucmVzZXQoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yOjpjcmVhdGVJbnN0YW5jZShsLCBzdWNjZXNzKSk7Ci0gICAgICBpZihVX1NVQ0NFU1Moc3VjY2VzcykgPT0gMCkKLSAgICAgICAgIGluaXRfZXJyb3IoKTsKLSAgICAgIG1fcHJpbWFyeV9jb2xsYXRvci0+c2V0U3RyZW5ndGgoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yOjpQUklNQVJZKTsKLSAgIH0KLSAgIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUgZ2V0bG9jKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fbG9jYWxlOwotICAgfQotICAgc3RyaW5nX3R5cGUgZG9fdHJhbnNmb3JtKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIsIGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvciogcGNvbGwpIGNvbnN0OwotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gZG9fdHJhbnNmb3JtKHAxLCBwMiwgbV9jb2xsYXRvci5nZXQoKSk7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGRvX3RyYW5zZm9ybShwMSwgcDIsIG1fcHJpbWFyeV9jb2xsYXRvci5nZXQoKSk7Ci0gICB9Ci1wcml2YXRlOgotICAgdm9pZCBpbml0X2Vycm9yKCkKLSAgIHsKLSAgICAgIHN0ZDo6cnVudGltZV9lcnJvciBlKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSBJQ1UgcmVzb3VyY2VzIik7Ci0gICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgfQotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSBtX2xvY2FsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIElDVSBsb2NhbGUgdGhhdCB3ZSdyZSB1c2luZwotICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcj4gbV9jb2xsYXRvcjsgICAgICAgICAgLy8gVGhlIGZ1bGwgY29sbGF0aW9uIG9iamVjdAotICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcj4gbV9wcmltYXJ5X2NvbGxhdG9yOyAgLy8gVGhlIHByaW1hcnkgY29sbGF0aW9uIG9iamVjdAotfTsKLQotaW5saW5lIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24+IGdldF9pY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUmIGxvYykKLXsKLSAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxpY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPihuZXcgaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihsb2MpKTsKLX0KLQotfQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGljdV9yZWdleF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgVUNoYXIzMiAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+ICAgICAgIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlIGxvY2FsZV90eXBlOwotI2lmZGVmIE5ETkJPT1NUX05PX0lOVDY0X1QKLSAgIHR5cGVkZWYgc3RkOjpiaXRzZXQ8NjQ+ICAgICAgICAgICAgICBjaGFyX2NsYXNzX3R5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDY0X3QgICAgICAgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLSNlbmRpZgotCi0gICBzdHJ1Y3QgYm9vc3RfZXh0ZW5zaW9uc190YWd7fTsKLQotICAgaWN1X3JlZ2V4X3RyYWl0cygpCi0gICAgICA6IG1fcGltcGwocmVfZGV0YWlsOjpnZXRfaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlKCkpKQotICAgewotICAgfQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKTsKLQotICAgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuICgoYyA8IDB4N2YpICYmIChjID4gMCkpID8gcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9zeW50YXhfdHlwZShzdGF0aWNfY2FzdDxjaGFyPihjKSkgOiByZWdleF9jb25zdGFudHM6OnN5bnRheF9jaGFyOwotICAgfQotICAgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuICgoYyA8IDB4N2YpICYmIChjID4gMCkpID8gcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9lc2NhcGVfc3ludGF4X3R5cGUoc3RhdGljX2Nhc3Q8Y2hhcj4oYykpIDogcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2hhcjsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0cmFuc2xhdGUoY2hhcl90eXBlIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gYzsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0cmFuc2xhdGVfbm9jYXNlKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6dV90b2xvd2VyKGMpOwotICAgfQotICAgY2hhcl90eXBlIHRyYW5zbGF0ZShjaGFyX3R5cGUgYywgYm9vbCBpY2FzZSkgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBpY2FzZSA/IHRyYW5zbGF0ZV9ub2Nhc2UoYykgOiB0cmFuc2xhdGUoYyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdG9sb3dlcihjaGFyX3R5cGUgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6OnVfdG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0b3VwcGVyKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6dV90b3VwcGVyKGMpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+dHJhbnNmb3JtKHAxLCBwMik7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnRyYW5zZm9ybV9wcmltYXJ5KHAxLCBwMik7Ci0gICB9Ci0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdDsKLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdDsKLSAgIGJvb2wgaXNjdHlwZShjaGFyX3R5cGUgYywgY2hhcl9jbGFzc190eXBlIGYpIGNvbnN0OwotICAgaW50IHRvaShjb25zdCBjaGFyX3R5cGUqJiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMiwgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gcmVfZGV0YWlsOjpnbG9iYWxfdG9pKHAxLCBwMiwgcmFkaXgsICp0aGlzKTsKLSAgIH0KLSAgIGludCB2YWx1ZShjaGFyX3R5cGUgYywgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdV9kaWdpdChjLCBzdGF0aWNfY2FzdDwgOjppbnQ4X3Q+KHJhZGl4KSk7Ci0gICB9Ci0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgewotICAgICAgbG9jYWxlX3R5cGUgcmVzdWx0KG1fcGltcGwtPmdldGxvYygpKTsKLSAgICAgIG1fcGltcGwgPSByZV9kZXRhaWw6OmdldF9pY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGwpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBsb2NhbGVfdHlwZSgpOwotICAgfQotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBuKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIHJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKG4pOwotICAgfQotcHJpdmF0ZToKLSAgIGljdV9yZWdleF90cmFpdHMoY29uc3QgaWN1X3JlZ2V4X3RyYWl0cyYpOwotICAgaWN1X3JlZ2V4X3RyYWl0cyYgb3BlcmF0b3I9KGNvbnN0IGljdV9yZWdleF90cmFpdHMmKTsKLQotICAgLy8KLSAgIC8vIGRlZmluZSB0aGUgYml0bWFza3Mgb2Zmc2V0cyB3ZSBuZWVkIGZvciBhZGRpdGlvbmFsIGNoYXJhY3RlciBwcm9wZXJ0aWVzOgotICAgLy8KLSAgIGVudW17Ci0gICAgICBvZmZzZXRfYmxhbmsgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQsCi0gICAgICBvZmZzZXRfc3BhY2UgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrMSwKLSAgICAgIG9mZnNldF94ZGlnaXQgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrMiwKLSAgICAgIG9mZnNldF91bmRlcnNjb3JlID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzMsCi0gICAgICBvZmZzZXRfdW5pY29kZSA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs0LAotICAgICAgb2Zmc2V0X2FueSA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs1LAotICAgICAgb2Zmc2V0X2FzY2lpID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzYsCi0gICAgICBvZmZzZXRfaG9yaXpvbnRhbCA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs3LAotICAgICAgb2Zmc2V0X3ZlcnRpY2FsID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzgKLSAgIH07Ci0KLSAgIC8vCi0gICAvLyBhbmQgbm93IHRoZSBtYXNrczoKLSAgIC8vCi0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfYmxhbms7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfc3BhY2U7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfeGRpZ2l0OwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX3VuZGVyc2NvcmU7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfdW5pY29kZTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza19hbnk7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfYXNjaWk7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfaG9yaXpvbnRhbDsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza192ZXJ0aWNhbDsKLQotICAgc3RhdGljIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfaWN1X21hc2soY29uc3QgOjpVQ2hhcjMyKiBwMSwgY29uc3QgOjpVQ2hhcjMyKiBwMik7Ci0KLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24+IG1fcGltcGw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLwotLy8gdGVtcGxhdGUgaW5zdGFuY2VzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIFVDaGFyMzIKLSN1bmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfVAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCAsIGljdV9yZWdleF90cmFpdHMKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTkNFUwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5USUFURQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwPgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UCi0jdW5kZWYgTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTkNFUwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotLy8gdHlwZXM6Ci10eXBlZGVmIGJhc2ljX3JlZ2V4PCA6OlVDaGFyMzIsIGljdV9yZWdleF90cmFpdHM+IHUzMnJlZ2V4OwotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnN0IDo6VUNoYXIzMio+IHUzMm1hdGNoOwotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnN0IDo6VUNoYXIqPiB1MTZtYXRjaDsKLQotLy8KLS8vIENvbnN0cnVjdGlvbiBvZiAzMi1iaXQgcmVnZXggdHlwZXMgZnJvbSBVVEYtOCBhbmQgVVRGLTE2IHByaW1pdGl2ZXM6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDE+KikKLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJbnB1dEl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXgoY29udl90eXBlKGksIGksIGopLCBjb252X3R5cGUoaiwgaSwgaiksIG9wdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88Mj4qKQotewotICAgdHlwZWRlZiBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJbnB1dEl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXgoY29udl90eXBlKGksIGksIGopLCBjb252X3R5cGUoaiwgaSwgaiksIG9wdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88ND4qKQotewotICAgcmV0dXJuIHUzMnJlZ2V4KGksIGosIG9wdCk7Ci19Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggZG9fbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPiopCi17Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8SW5wdXRJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVQ2hhcjMyPiB2ZWN0b3JfdHlwZTsKLSAgIHZlY3Rvcl90eXBlIHY7Ci0gICBjb252X3R5cGUgYShpLCBpLCBqKSwgYihqLCBpLCBqKTsKLSAgIHdoaWxlKGEgIT0gYikKLSAgIHsKLSAgICAgIHYucHVzaF9iYWNrKCphKTsKLSAgICAgICsrYTsKLSAgIH0KLSAgIGlmKHYuc2l6ZSgpKQotICAgICAgcmV0dXJuIHUzMnJlZ2V4KCYqdi5iZWdpbigpLCB2LnNpemUoKSwgb3B0KTsKLSAgIHJldHVybiB1MzJyZWdleChzdGF0aWNfY2FzdDxVQ2hhcjMyIGNvbnN0Kj4oMCksIHN0YXRpY19jYXN0PHUzMnJlZ2V4OjpzaXplX3R5cGU+KDApLCBvcHQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDI+KikKLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8SW5wdXRJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVQ2hhcjMyPiB2ZWN0b3JfdHlwZTsKLSAgIHZlY3Rvcl90eXBlIHY7Ci0gICBjb252X3R5cGUgYShpLCBpLCBqKSwgYihqLCBpLCBqKTsKLSAgIHdoaWxlKGEgIT0gYikKLSAgIHsKLSAgICAgIHYucHVzaF9iYWNrKCphKTsKLSAgICAgICsrYTsKLSAgIH0KLSAgIGlmKHYuc2l6ZSgpKQotICAgICAgcmV0dXJuIHUzMnJlZ2V4KCYqdi5iZWdpbigpLCB2LnNpemUoKSwgb3B0KTsKLSAgIHJldHVybiB1MzJyZWdleChzdGF0aWNfY2FzdDxVQ2hhcjMyIGNvbnN0Kj4oMCksIHN0YXRpY19jYXN0PHUzMnJlZ2V4OjpzaXplX3R5cGU+KDApLCBvcHQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDQ+KikKLXsKLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VUNoYXIzMj4gdmVjdG9yX3R5cGU7Ci0gICB2ZWN0b3JfdHlwZSB2OwotICAgd2hpbGUoaSAhPSBqKQotICAgewotICAgICAgdi5wdXNoX2JhY2soKFVDaGFyMzIpKCppKSk7Ci0gICAgICArK2k7Ci0gICB9Ci0gICBpZih2LnNpemUoKSkKLSAgICAgIHJldHVybiB1MzJyZWdleCgmKnYuYmVnaW4oKSwgdi5zaXplKCksIG9wdCk7Ci0gICByZXR1cm4gdTMycmVnZXgoc3RhdGljX2Nhc3Q8VUNoYXIzMiBjb25zdCo+KDApLCBzdGF0aWNfY2FzdDx1MzJyZWdleDo6c2l6ZV90eXBlPigwKSwgb3B0KTsKLX0KLSNlbmRpZgotfQotCi0vLwotLy8gQ29uc3RydWN0aW9uIGZyb20gYW4gaXRlcmF0b3IgcGFpcjoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgoaSwgaiwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPHNpemVvZigqaSk+IGNvbnN0Kj4oMCkpOwotfQotLy8KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIFVURi04IG51bC10ZXJtaW5hdGVkIHN0cmluZ3M6Ci0vLwotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3QgY2hhciogcCwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHAsIHAgKyBzdGQ6OnN0cmxlbihwKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3QgdW5zaWduZWQgY2hhciogcCwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHAsIHAgKyBzdGQ6OnN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwKSksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLS8vCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBVVEYtMTYgbnVsLXRlcm1pbmF0ZWQgc3RyaW5nczoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3Qgd2NoYXJfdCogcCwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHAsIHAgKyBzdGQ6Ondjc2xlbihwKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKQotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3QgVUNoYXIqIHAsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChwLCBwICsgdV9zdHJsZW4ocCksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotLy8KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIGJhc2ljX3N0cmluZyBjbGFzcy10ZW1wbGF0ZToKLS8vCi10ZW1wbGF0ZTxjbGFzcyBDLCBjbGFzcyBULCBjbGFzcyBBPgotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8QywgVCwgQT4mIHMsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChzLmJlZ2luKCksIHMuZW5kKCksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzxzaXplb2YoQyk+IGNvbnN0Kj4oMCkpOwotfQotLy8KLS8vIENvbnN0cnVjdGlvbiBmcm9tIElDVSBzdHJpbmcgdHlwZToKLS8vCi1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0KLS8vCi0vLyByZWdleF9tYXRjaCBvdmVybG9hZHMgdGhhdCB3aWRlbiB0aGUgY2hhcmFjdGVyIHR5cGUgYXMgYXBwcm9wcmlhdGU6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlPGNsYXNzIE1SMSwgY2xhc3MgTVIyPgotdm9pZCBjb3B5X3Jlc3VsdHMoTVIxJiBvdXQsIE1SMiBjb25zdCYgaW4pCi17Ci0gICAvLyBjb3B5IHJlc3VsdHMgZnJvbSBhbiBhZGFwdGVkIE1SMiBtYXRjaF9yZXN1bHRzOgotICAgb3V0LnNldF9zaXplKGluLnNpemUoKSwgaW4ucHJlZml4KCkuZmlyc3QuYmFzZSgpLCBpbi5zdWZmaXgoKS5zZWNvbmQuYmFzZSgpKTsKLSAgIG91dC5zZXRfYmFzZShpbi5iYXNlKCkuYmFzZSgpKTsKLSAgIGZvcihpbnQgaSA9IDA7IGkgPCAoaW50KWluLnNpemUoKTsgKytpKQotICAgewotICAgICAgaWYoaW5baV0ubWF0Y2hlZCkKLSAgICAgIHsKLSAgICAgICAgIG91dC5zZXRfZmlyc3QoaW5baV0uZmlyc3QuYmFzZSgpLCBpKTsKLSAgICAgICAgIG91dC5zZXRfc2Vjb25kKGluW2ldLnNlY29uZC5iYXNlKCksIGkpOwotICAgICAgfQotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBkb19yZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50Xzw0PiBjb25zdCopCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6cmVnZXhfbWF0Y2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWJvb2wgZG9fcmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88Mj4gY29uc3QqKQotewotICAgdHlwZWRlZiB1MTZfdG9fdTMyX2l0ZXJhdG9yPEJpZGlJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnZfdHlwZT4gICAgICAgICAgICAgICAgICAgbWF0Y2hfdHlwZTsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF90eXBlOjphbGxvY2F0b3JfdHlwZSAgICAgICAgYWxsb2NfdHlwZTsKLSAgIG1hdGNoX3R5cGUgd2hhdDsKLSAgIGJvb2wgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVnZXhfbWF0Y2goY29udl90eXBlKGZpcnN0LCBmaXJzdCwgbGFzdCksIGNvbnZfdHlwZShsYXN0LCBmaXJzdCwgbGFzdCksIHdoYXQsIGUsIGZsYWdzKTsKLSAgIC8vIGNvcHkgcmVzdWx0cyBhY3Jvc3MgdG8gbToKLSAgIGlmKHJlc3VsdCkgY29weV9yZXN1bHRzKG0sIHdoYXQpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWJvb2wgZG9fcmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MT4gY29uc3QqKQotewotICAgdHlwZWRlZiB1OF90b191MzJfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yLCBVQ2hhcjMyPiAgY29udl90eXBlOwotICAgdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnZfdHlwZT4gICAgICAgICAgICAgICAgICAgbWF0Y2hfdHlwZTsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF90eXBlOjphbGxvY2F0b3JfdHlwZSAgICAgICAgYWxsb2NfdHlwZTsKLSAgIG1hdGNoX3R5cGUgd2hhdDsKLSAgIGJvb2wgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVnZXhfbWF0Y2goY29udl90eXBlKGZpcnN0LCBmaXJzdCwgbGFzdCksIGNvbnZfdHlwZShsYXN0LCBmaXJzdCwgbGFzdCksIHdoYXQsIGUsIGZsYWdzKTsKLSAgIC8vIGNvcHkgcmVzdWx0cyBhY3Jvc3MgdG8gbToKLSAgIGlmKHJlc3VsdCkgY29weV9yZXN1bHRzKG0sIHdoYXQpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBVQ2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArdV9zdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6Ondjc2xlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6c3RybGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgdW5zaWduZWQgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgdW5zaWduZWQgY2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6OnN0cmxlbigoY29uc3QgY2hhciopcCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotLy8KLS8vIHJlZ2V4X21hdGNoIG92ZXJsb2FkcyB0aGF0IGRvIG5vdCByZXR1cm4gd2hhdCBtYXRjaGVkOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBVQ2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCt1X3N0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArc3RkOjp3Y3NsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6c3RybGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgdW5zaWduZWQgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgdW5zaWduZWQgY2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6c3RybGVuKChjb25zdCBjaGFyKilwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0KLS8vCi0vLyByZWdleF9zZWFyY2ggb3ZlcmxvYWRzIHRoYXQgd2lkZW4gdGhlIGNoYXJhY3RlciB0eXBlIGFzIGFwcHJvcHJpYXRlOgotLy8KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBkb19yZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0OjpyZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBiYXNlKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWJvb2wgZG9fcmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgYmFzZSwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwyPiBjb25zdCopCi17Ci0gICB0eXBlZGVmIHUxNl90b191MzJfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29udl90eXBlPiAgICAgICAgICAgICAgICAgICBtYXRjaF90eXBlOwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3R5cGU6OmFsbG9jYXRvcl90eXBlICAgICAgICBhbGxvY190eXBlOwotICAgbWF0Y2hfdHlwZSB3aGF0OwotICAgYm9vbCByZXN1bHQgPSA6Om5kbmJvb3N0OjpyZWdleF9zZWFyY2goY29udl90eXBlKGZpcnN0LCBmaXJzdCwgbGFzdCksIGNvbnZfdHlwZShsYXN0LCBmaXJzdCwgbGFzdCksIHdoYXQsIGUsIGZsYWdzLCBjb252X3R5cGUoYmFzZSkpOwotICAgLy8gY29weSByZXN1bHRzIGFjcm9zcyB0byBtOgotICAgaWYocmVzdWx0KSBjb3B5X3Jlc3VsdHMobSwgd2hhdCk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotYm9vbCBkb19yZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDE+IGNvbnN0KikKLXsKLSAgIHR5cGVkZWYgdThfdG9fdTMyX2l0ZXJhdG9yPEJpZGlJdGVyYXRvciwgVUNoYXIzMj4gIGNvbnZfdHlwZTsKLSAgIHR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb252X3R5cGU+ICAgICAgICAgICAgICAgICAgIG1hdGNoX3R5cGU7Ci0gICAvL3R5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfdHlwZTo6YWxsb2NhdG9yX3R5cGUgICAgICAgIGFsbG9jX3R5cGU7Ci0gICBtYXRjaF90eXBlIHdoYXQ7Ci0gICBib29sIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OnJlZ2V4X3NlYXJjaChjb252X3R5cGUoZmlyc3QsIGZpcnN0LCBsYXN0KSwgY29udl90eXBlKGxhc3QsIGZpcnN0LCBsYXN0KSwgd2hhdCwgZSwgZmxhZ3MsIGNvbnZfdHlwZShiYXNlKSk7Ci0gICAvLyBjb3B5IHJlc3VsdHMgYWNyb3NzIHRvIG06Ci0gICBpZihyZXN1bHQpIGNvcHlfcmVzdWx0cyhtLCB3aGF0KTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBmaXJzdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGJhc2UpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBiYXNlLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IFVDaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArdV9zdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHdjaGFyX3QqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6d2NzbGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6OnN0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCB1bnNpZ25lZCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCB1bnNpZ25lZCBjaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6OnN0cmxlbigoY29uc3QgY2hhciopcCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgcy5iZWdpbigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgc3RkOjp3c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzLmJlZ2luKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIG0sIGUsIGZsYWdzLCBzLmdldEJ1ZmZlcigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgVUNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3Vfc3RybGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpOwotfQotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCB3Y2hhcl90KiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6d2NzbGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6c3RybGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHVuc2lnbmVkIGNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArc3RkOjpzdHJsZW4oKGNvbnN0IGNoYXIqKXApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzLmJlZ2luKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OndzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzLmJlZ2luKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBtLCBlLCBmbGFncywgcy5nZXRCdWZmZXIoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0KLS8vCi0vLyBvdmVybG9hZHMgZm9yIHJlZ2V4X3JlcGxhY2Ugd2l0aCB1dGYtOCBhbmQgdXRmLTE2IGRhdGEgdHlwZXM6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIDxjbGFzcyBJPgotaW5saW5lIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPiwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPiA+Ci0gICBtYWtlX3V0ZjMyX3NlcShJIGksIEkgaiwgbXBsOjppbnRfPDE+IGNvbnN0KikKLXsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4sIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4gPihuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+KGksIGksIGopLCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+KGosIGksIGopKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBJPgotaW5saW5lIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4sIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+ID4KLSAgIG1ha2VfdXRmMzJfc2VxKEkgaSwgSSBqLCBtcGw6OmludF88Mj4gY29uc3QqKQotewotICAgcmV0dXJuIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4sIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+ID4obmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4oaSwgaSwgaiksIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+KGosIGksIGopKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBJPgotaW5saW5lIHN0ZDo6cGFpcjwgSSwgSSA+Ci0gICBtYWtlX3V0ZjMyX3NlcShJIGksIEkgaiwgbXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IEksIEkgPihpLCBqKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+ID4KLSAgIG1ha2VfdXRmMzJfc2VxKGNvbnN0IGNoYXJUKiBwLCBtcGw6OmludF88MT4gY29uc3QqKQotewotICAgc3RkOjpzaXplX3QgbGVuID0gc3RkOjpzdHJsZW4oKGNvbnN0IGNoYXIqKXApOwotICAgcmV0dXJuIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+LCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4gPihuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4ocCwgcCwgcCtsZW4pLCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4ocCtsZW4sIHAsIHArbGVuKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpwYWlyPCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+LCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+ID4KLSAgIG1ha2VfdXRmMzJfc2VxKGNvbnN0IGNoYXJUKiBwLCBtcGw6OmludF88Mj4gY29uc3QqKQotewotICAgc3RkOjpzaXplX3QgbGVuID0gdV9zdHJsZW4oKGNvbnN0IFVDaGFyKilwKTsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4sIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4gPihuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+KHAsIHAsIHAgKyBsZW4pLCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+KHArbGVuLCBwLCBwICsgbGVuKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpwYWlyPCBjb25zdCBjaGFyVCosIGNvbnN0IGNoYXJUKiA+Ci0gICBtYWtlX3V0ZjMyX3NlcShjb25zdCBjaGFyVCogcCwgbXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IGNvbnN0IGNoYXJUKiwgY29uc3QgY2hhclQqID4ocCwgcCtpY3VfcmVnZXhfdHJhaXRzOjpsZW5ndGgoKFVDaGFyMzIgY29uc3QqKXApKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBtYWtlX3V0ZjMyX291dChPdXRwdXRJdGVyYXRvciBvLCBtcGw6OmludF88ND4gY29uc3QqKQotewotICAgcmV0dXJuIG87Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yPE91dHB1dEl0ZXJhdG9yPiBtYWtlX3V0ZjMyX291dChPdXRwdXRJdGVyYXRvciBvLCBtcGw6OmludF88Mj4gY29uc3QqKQotewotICAgcmV0dXJuIG87Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgdXRmOF9vdXRwdXRfaXRlcmF0b3I8T3V0cHV0SXRlcmF0b3I+IG1ha2VfdXRmMzJfb3V0KE91dHB1dEl0ZXJhdG9yIG8sIG1wbDo6aW50XzwxPiBjb25zdCopCi17Ci0gICByZXR1cm4gbzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJMSwgY2xhc3MgSTI+Ci1PdXRwdXRJdGVyYXRvciBkb19yZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxJMSwgSTE+IGNvbnN0JiBpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6cGFpcjxJMiwgSTI+JiBmbXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi17Ci0gICAvLyB1bmZvcnR1bmF0ZWx5IHdlIGhhdmUgdG8gY29weSB0aGUgZm9ybWF0IHN0cmluZyBpbiBvcmRlciB0byBwYXNzIGluIG9ud2FyZDoKLSAgIHN0ZDo6dmVjdG9yPFVDaGFyMzI+IGY7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSAgIGYuYXNzaWduKGZtdC5maXJzdCwgZm10LnNlY29uZCk7Ci0jZWxzZQotICAgZi5jbGVhcigpOwotICAgSTIgcG9zID0gZm10LmZpcnN0OwotICAgd2hpbGUocG9zICE9IGZtdC5zZWNvbmQpCi0gICAgICBmLnB1c2hfYmFjaygqcG9zKyspOwotI2VuZGlmCi0gICAKLSAgIHJlZ2V4X2l0ZXJhdG9yPEkxLCBVQ2hhcjMyLCBpY3VfcmVnZXhfdHJhaXRzPiBpKGluLmZpcnN0LCBpbi5zZWNvbmQsIGUsIGZsYWdzKTsKLSAgIHJlZ2V4X2l0ZXJhdG9yPEkxLCBVQ2hhcjMyLCBpY3VfcmVnZXhfdHJhaXRzPiBqOwotICAgaWYoaSA9PSBqKQotICAgewotICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGluLmZpcnN0LCBpbi5zZWNvbmQsIG91dCk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBJMSBsYXN0X20gPSBpbi5maXJzdDsKLSAgICAgIHdoaWxlKGkgIT0gaikKLSAgICAgIHsKLSAgICAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShpLT5wcmVmaXgoKS5maXJzdCwgaS0+cHJlZml4KCkuc2Vjb25kLCBvdXQpOyAKLSAgICAgICAgIGlmKGYuc2l6ZSgpKQotICAgICAgICAgICAgb3V0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpyZWdleF9mb3JtYXRfaW1wKG91dCwgKmksICYqZi5iZWdpbigpLCAmKmYuYmVnaW4oKSArIGYuc2l6ZSgpLCBmbGFncywgZS5nZXRfdHJhaXRzKCkpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpyZWdleF9mb3JtYXRfaW1wKG91dCwgKmksIHN0YXRpY19jYXN0PFVDaGFyMzIgY29uc3QqPigwKSwgc3RhdGljX2Nhc3Q8VUNoYXIzMiBjb25zdCo+KDApLCBmbGFncywgZS5nZXRfdHJhaXRzKCkpOwotICAgICAgICAgbGFzdF9tID0gKCppKVswXS5zZWNvbmQ7Ci0gICAgICAgICBpZihmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2ZpcnN0X29ubHkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICsraTsKLSAgICAgIH0KLSAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShsYXN0X20sIGluLnNlY29uZCwgb3V0KTsKLSAgIH0KLSAgIHJldHVybiBvdXQ7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotaW5saW5lIGNvbnN0IEJhc2VJdGVyYXRvciYgZXh0cmFjdF9vdXRwdXRfYmFzZShjb25zdCBCYXNlSXRlcmF0b3ImIGIpCi17Ci0gICByZXR1cm4gYjsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1pbmxpbmUgQmFzZUl0ZXJhdG9yIGV4dHJhY3Rfb3V0cHV0X2Jhc2UoY29uc3QgdXRmOF9vdXRwdXRfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yPiYgYikKLXsKLSAgIHJldHVybiBiLmJhc2UoKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1pbmxpbmUgQmFzZUl0ZXJhdG9yIGV4dHJhY3Rfb3V0cHV0X2Jhc2UoY29uc3QgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yPEJhc2VJdGVyYXRvcj4mIGIpCi17Ci0gICByZXR1cm4gYi5iYXNlKCk7Ci19Ci19ICAvLyByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNsYXNzIGNoYXJUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHUzMnJlZ2V4X3JlcGxhY2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIGZtdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmV4dHJhY3Rfb3V0cHV0X2Jhc2UKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICA8T3V0cHV0SXRlcmF0b3I+Ci0jZW5kaWYKLSAgICAoCi0gICAgICByZV9kZXRhaWw6OmRvX3JlZ2V4X3JlcGxhY2UoCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfb3V0KG91dCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZmlyc3QsIGxhc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICBlLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmbXQsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZtdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZmxhZ3MpCi0gICAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBjaGFyVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciB1MzJyZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZXh0cmFjdF9vdXRwdXRfYmFzZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgIDxPdXRwdXRJdGVyYXRvcj4KLSNlbmRpZgotICAgICgKLSAgICAgIHJlX2RldGFpbDo6ZG9fcmVnZXhfcmVwbGFjZSgKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9vdXQob3V0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmaXJzdCwgbGFzdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGUsCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZtdC5iZWdpbigpLCBmbXQuZW5kKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoY2hhclQpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGZsYWdzKQotICAgICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciB1MzJyZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpleHRyYWN0X291dHB1dF9iYXNlCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgPE91dHB1dEl0ZXJhdG9yPgotI2VuZGlmCi0gICAoCi0gICAgICByZV9kZXRhaWw6OmRvX3JlZ2V4X3JlcGxhY2UoCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfb3V0KG91dCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZmlyc3QsIGxhc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICBlLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmbXQuZ2V0QnVmZmVyKCksIGZtdC5nZXRCdWZmZXIoKSArIGZtdC5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZmxhZ3MpCi0gICAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gdTMycmVnZXhfcmVwbGFjZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZXN1bHQ7Ci0gICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+ID4gaShyZXN1bHQpOwotICAgdTMycmVnZXhfcmVwbGFjZShpLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZtdCwgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHUzMnJlZ2V4X3JlcGxhY2UoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlc3VsdDsKLSAgIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gPiBpKHJlc3VsdCk7Ci0gICB1MzJyZWdleF9yZXBsYWNlKGksIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZm10LmNfc3RyKCksIGZsYWdzKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLWNsYXNzIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvcgotewotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcqIG91dDsKLXB1YmxpYzoKLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvcihVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcykgOiBvdXQoJnMpIHt9Ci0gICB1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQotICAgdW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3I9KFVDaGFyIHYpIAotICAgeyAKLSAgICAgICpvdXQgKz0gdjsgCi0gICAgICByZXR1cm4gKnRoaXM7IAotICAgfQotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIFVDaGFyIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHZhbHVlX3R5cGUqIHBvaW50ZXI7Ci0gICB0eXBlZGVmIHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotfQotCi1pbmxpbmUgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcgdTMycmVnZXhfcmVwbGFjZShjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcgcmVzdWx0OwotICAgcmVfZGV0YWlsOjp1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3IgaShyZXN1bHQpOwotICAgdTMycmVnZXhfcmVwbGFjZShpLCBzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpK3MubGVuZ3RoKCksIGUsIGZtdCwgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW5saW5lIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nIHUzMnJlZ2V4X3JlcGxhY2UoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nIHJlc3VsdDsKLSAgIHJlX2RldGFpbDo6dW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yIGkocmVzdWx0KTsKLSAgIHJlX2RldGFpbDo6ZG9fcmVnZXhfcmVwbGFjZSgKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9vdXQoaSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpK3MubGVuZ3RoKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGUsCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZtdC5nZXRCdWZmZXIoKSwgZm10LmdldEJ1ZmZlcigpICsgZm10Lmxlbmd0aCgpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSksCi0gICAgICAgICBmbGFncyk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdC4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC91MzJyZWdleF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGF0dGVybl9leGNlcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYzBkNDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBwYXR0ZXJuX2V4Y2VwdC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHBhdHRlcm4tbWF0Y2hpbmcgZXhjZXB0aW9uIGNsYXNzZXMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNzUpCi0jZW5kaWYKLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnZXhfZXJyb3IgOiBwdWJsaWMgc3RkOjpydW50aW1lX2Vycm9yCi17Ci1wdWJsaWM6Ci0gICBleHBsaWNpdCByZWdleF9lcnJvcihjb25zdCBzdGQ6OnN0cmluZyYgcywgcmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVyciA9IHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdW5rbm93biwgc3RkOjpwdHJkaWZmX3QgcG9zID0gMCk7Ci0gICBleHBsaWNpdCByZWdleF9lcnJvcihyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyKTsKLSAgIH5yZWdleF9lcnJvcigpIHRocm93KCk7Ci0gICByZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgY29kZSgpY29uc3QKLSAgIHsgcmV0dXJuIG1fZXJyb3JfY29kZTsgfQotICAgc3RkOjpwdHJkaWZmX3QgcG9zaXRpb24oKWNvbnN0Ci0gICB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Ci0gICB2b2lkIHJhaXNlKCljb25zdDsKLXByaXZhdGU6Ci0gICByZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbV9lcnJvcl9jb2RlOwotICAgc3RkOjpwdHJkaWZmX3QgbV9wb3NpdGlvbjsKLX07Ci0KLXR5cGVkZWYgcmVnZXhfZXJyb3IgYmFkX3BhdHRlcm47Ci10eXBlZGVmIHJlZ2V4X2Vycm9yIGJhZF9leHByZXNzaW9uOwotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCByYWlzZV9ydW50aW1lX2Vycm9yKGNvbnN0IHN0ZDo6cnVudGltZV9lcnJvciYgZXgpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzPgotdm9pZCByYWlzZV9lcnJvcihjb25zdCB0cmFpdHMmIHQsIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBjb2RlKQotewotICAgKHZvaWQpdDsgIC8vIHdhcm5pbmcgc3VwcHJlc3Npb24KLSAgIHN0ZDo6cnVudGltZV9lcnJvciBlKHQuZXJyb3Jfc3RyaW5nKGNvZGUpKTsKLSAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlKTsKLX0KLQotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvb2JqZWN0X2NhY2hlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhMDg4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvb2JqZWN0X2NhY2hlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG9iamVjdF9jYWNoZS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEltcGxlbWVudHMgYSBnZW5lcmljIG9iamVjdCBjYWNoZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9PQkpFQ1RfQ0FDSEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX09CSkVDVF9DQUNIRV9IUFAKLQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIE9iamVjdD4KLWNsYXNzIG9iamVjdF9jYWNoZQotewotcHVibGljOgotICAgdHlwZWRlZiBzdGQ6OnBhaXI8IDo6bmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiwgS2V5IGNvbnN0Kj4gdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpsaXN0PHZhbHVlX3R5cGU+IGxpc3RfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdF90eXBlOjppdGVyYXRvciBsaXN0X2l0ZXJhdG9yOwotICAgdHlwZWRlZiBzdGQ6Om1hcDxLZXksIGxpc3RfaXRlcmF0b3I+IG1hcF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBfdHlwZTo6aXRlcmF0b3IgbWFwX2l0ZXJhdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0X3R5cGU6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICBzdGF0aWMgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiBnZXQoY29uc3QgS2V5JiBrLCBzaXplX3R5cGUgbF9tYXhfY2FjaGVfc2l6ZSk7Ci0KLXByaXZhdGU6Ci0gICBzdGF0aWMgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiBkb19nZXQoY29uc3QgS2V5JiBrLCBzaXplX3R5cGUgbF9tYXhfY2FjaGVfc2l6ZSk7Ci0KLSAgIHN0cnVjdCBkYXRhCi0gICB7Ci0gICAgICBsaXN0X3R5cGUgICBjb250OwotICAgICAgbWFwX3R5cGUgICAgaW5kZXg7Ci0gICB9OwotCi0gICAvLyBOZWVkZWQgYnkgY29tcGlsZXJzIG5vdCBpbXBsZW1lbnRpbmcgdGhlIHJlc29sdXRpb24gdG8gRFI0NS4gRm9yIHJlZmVyZW5jZSwKLSAgIC8vIHNlZSBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL2N3Z19kZWZlY3RzLmh0bWwjNDUuCi0gICBmcmllbmQgc3RydWN0IGRhdGE7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBPYmplY3Q+Ci1uZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+IG9iamVjdF9jYWNoZTxLZXksIE9iamVjdD46OmdldChjb25zdCBLZXkmIGssIHNpemVfdHlwZSBsX21heF9jYWNoZV9zaXplKQotewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWMgbmRuYm9vc3Q6OnN0YXRpY19tdXRleCBtdXQgPSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVDsKLQotICAgbmRuYm9vc3Q6OnN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbChtdXQpOwotICAgaWYobCkKLSAgIHsKLSAgICAgIHJldHVybiBkb19nZXQoaywgbF9tYXhfY2FjaGVfc2l6ZSk7Ci0gICB9Ci0gICAvLwotICAgLy8gd2hhdCBkbyB3ZSBkbyBpZiB0aGUgbG9jayBmYWlscz8KLSAgIC8vIGZvciBub3cganVzdCB0aHJvdywgYnV0IHdlIHNob3VsZCBuZXZlciByZWFsbHkgZ2V0IGhlcmUuLi4KLSAgIC8vCi0gICA6Om5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpydW50aW1lX2Vycm9yKCJFcnJvciBpbiB0aHJlYWQgc2FmZXR5IGNvZGU6IGNvdWxkIG5vdCBhY3F1aXJlIGEgbG9jayIpKTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04pIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3Q+KCk7Ci0jZW5kaWYKLSNlbHNlCi0gICByZXR1cm4gZG9fZ2V0KGssIGxfbWF4X2NhY2hlX3NpemUpOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIE9iamVjdD4KLW5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdCBjb25zdD4gb2JqZWN0X2NhY2hlPEtleSwgT2JqZWN0Pjo6ZG9fZ2V0KGNvbnN0IEtleSYgaywgc2l6ZV90eXBlIGxfbWF4X2NhY2hlX3NpemUpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG9iamVjdF9jYWNoZTxLZXksIE9iamVjdD46OmRhdGEgb2JqZWN0X2RhdGE7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1hcF90eXBlOjpzaXplX3R5cGUgbWFwX3NpemVfdHlwZTsKLSAgIHN0YXRpYyBvYmplY3RfZGF0YSBzX2RhdGE7Ci0KLSAgIC8vCi0gICAvLyBzZWUgaWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5IGluIHRoZSBjYWNoZToKLSAgIC8vCi0gICBtYXBfaXRlcmF0b3IgbXBvcyA9IHNfZGF0YS5pbmRleC5maW5kKGspOwotICAgaWYobXBvcyAhPSBzX2RhdGEuaW5kZXguZW5kKCkpCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gRXVyZWthISAKLSAgICAgIC8vIFdlIGhhdmUgYSBjYWNoZWQgaXRlbSwgYnVtcCBpdCB1cCB0aGUgbGlzdCBhbmQgcmV0dXJuIGl0OgotICAgICAgLy8KLSAgICAgIGlmKC0tKHNfZGF0YS5jb250LmVuZCgpKSAhPSBtcG9zLT5zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBzcGxpY2Ugb3V0IHRoZSBpdGVtIHdlIHdhbnQgdG8gbW92ZToKLSAgICAgICAgIGxpc3RfdHlwZSB0ZW1wOwotICAgICAgICAgdGVtcC5zcGxpY2UodGVtcC5lbmQoKSwgc19kYXRhLmNvbnQsIG1wb3MtPnNlY29uZCk7Ci0gICAgICAgICAvLyBhbmQgbm93IHBsYWNlIGl0IGF0IHRoZSBlbmQgb2YgdGhlIGxpc3Q6Ci0gICAgICAgICBzX2RhdGEuY29udC5zcGxpY2Uoc19kYXRhLmNvbnQuZW5kKCksIHRlbXAsIHRlbXAuYmVnaW4oKSk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoKihzX2RhdGEuY29udC5iYWNrKCkuc2Vjb25kKSA9PSBrKTsKLSAgICAgICAgIC8vIHVwZGF0ZSBpbmRleCB3aXRoIG5ldyBwb3NpdGlvbjoKLSAgICAgICAgIG1wb3MtPnNlY29uZCA9IC0tKHNfZGF0YS5jb250LmVuZCgpKTsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCgmKG1wb3MtPmZpcnN0KSA9PSBtcG9zLT5zZWNvbmQtPnNlY29uZCk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoJihtcG9zLT5maXJzdCkgPT0gc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gc19kYXRhLmNvbnQuYmFjaygpLmZpcnN0OwotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGdldCBoZXJlIHRoZW4gdGhlIGl0ZW0gaXMgbm90IGluIHRoZSBjYWNoZSwKLSAgIC8vIHNvIGNyZWF0ZSBpdDoKLSAgIC8vCi0gICBuZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+IHJlc3VsdChuZXcgT2JqZWN0KGspKTsKLSAgIC8vCi0gICAvLyBBZGQgaXQgdG8gdGhlIGxpc3QsIGFuZCBpbmRleCBpdDoKLSAgIC8vCi0gICBzX2RhdGEuY29udC5wdXNoX2JhY2sodmFsdWVfdHlwZShyZXN1bHQsIHN0YXRpY19jYXN0PEtleSBjb25zdCo+KDApKSk7Ci0gICBzX2RhdGEuaW5kZXguaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGssIC0tKHNfZGF0YS5jb250LmVuZCgpKSkpOwotICAgc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCA9ICYoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0KTsKLSAgIG1hcF9zaXplX3R5cGUgcyA9IHNfZGF0YS5pbmRleC5zaXplKCk7Ci0gICBORE5CT09TVF9BU1NFUlQoc19kYXRhLmluZGV4W2tdLT5maXJzdC5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOwotICAgTkROQk9PU1RfQVNTRVJUKCYoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0KSA9PSBzX2RhdGEuY29udC5iYWNrKCkuc2Vjb25kKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChzX2RhdGEuaW5kZXguZmluZChrKS0+Zmlyc3QgPT0gayk7Ci0gICBpZihzID4gbF9tYXhfY2FjaGVfc2l6ZSkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBXZSBoYXZlIHRvbyBtYW55IGl0ZW1zIGluIHRoZSBsaXN0LCBzbyB3ZSBuZWVkIHRvIHN0YXJ0Ci0gICAgICAvLyBwb3BwaW5nIHRoZW0gb2ZmIHRoZSBiYWNrIG9mIHRoZSBsaXN0LCBidXQgb25seSBpZiB0aGV5J3JlCi0gICAgICAvLyBiZWluZyBoZWxkIHVuaXF1ZWx5IGJ5IHVzOgotICAgICAgLy8KLSAgICAgIGxpc3RfaXRlcmF0b3IgcG9zID0gc19kYXRhLmNvbnQuYmVnaW4oKTsKLSAgICAgIGxpc3RfaXRlcmF0b3IgbGFzdCA9IHNfZGF0YS5jb250LmVuZCgpOwotICAgICAgd2hpbGUoKHBvcyAhPSBsYXN0KSAmJiAocyA+IGxfbWF4X2NhY2hlX3NpemUpKQotICAgICAgewotICAgICAgICAgaWYocG9zLT5maXJzdC51bmlxdWUoKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxpc3RfaXRlcmF0b3IgY29uZGVtbWVkKHBvcyk7Ci0gICAgICAgICAgICArK3BvczsKLSAgICAgICAgICAgIC8vIG5vdyByZW1vdmUgdGhlIGl0ZW1zIGZyb20gb3VyIGNvbnRhaW5lcnMsIAotICAgICAgICAgICAgLy8gdGhlbiBvcmRlciBoYXMgdG8gYmUgYXMgZm9sbG93czoKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChzX2RhdGEuaW5kZXguZmluZCgqKGNvbmRlbW1lZC0+c2Vjb25kKSkgIT0gc19kYXRhLmluZGV4LmVuZCgpKTsKLSAgICAgICAgICAgIHNfZGF0YS5pbmRleC5lcmFzZSgqKGNvbmRlbW1lZC0+c2Vjb25kKSk7Ci0gICAgICAgICAgICBzX2RhdGEuY29udC5lcmFzZShjb25kZW1tZWQpOyAKLSAgICAgICAgICAgIC0tczsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICsrcG9zOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQVNTRVJUKHNfZGF0YS5pbmRleFtrXS0+Zmlyc3QuZ2V0KCkgPT0gcmVzdWx0LmdldCgpKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgmKHNfZGF0YS5pbmRleC5maW5kKGspLT5maXJzdCkgPT0gc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0ID09IGspOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZDI2NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgc3RhdGljX211dGV4LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgc3RhdGljX211dGV4IGxvY2sgdHlwZSwgdGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudAotICAqICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uczogUE9TSVggcHRocmVhZHMsIFdJTjMyIHRocmVhZHMsIGFuZCBwb3J0YWJsZSwKLSAgKiAgICAgICAgICAgICAgICB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGJlbG93LgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19NVVRFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfU1RBVElDX01VVEVYX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPiAvLyBkbGwgaW1wb3J0L2V4cG9ydCBvcHRpb25zLgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykgJiYgZGVmaW5lZChQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSKQotLy8KLS8vIHB0aHJlYWRzIHZlcnNpb246Ci0vLyBzaW1wbGUgd3JhcCBhcm91bmQgYSBwdGhyZWFkX211dGV4X3QgaW5pdGlhbGl6ZWQgd2l0aAotLy8gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUi4KLS8vCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLWNsYXNzIHN0YXRpY19tdXRleDsKLQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVCB7IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIH0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2sKLXsKLXB1YmxpYzoKLSAgIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayhzdGF0aWNfbXV0ZXgmIG11dCwgYm9vbCBsayA9IHRydWUpOwotICAgfnNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jaygpOwotICAgaW5saW5lIGJvb2wgbG9ja2VkKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1faGF2ZV9sb2NrOwotICAgfQotICAgaW5saW5lIG9wZXJhdG9yIHZvaWQgY29uc3QqKCljb25zdAotICAgewotICAgICAgcmV0dXJuIGxvY2tlZCgpID8gdGhpcyA6IDA7Ci0gICB9Ci0gICB2b2lkIGxvY2soKTsKLSAgIHZvaWQgdW5sb2NrKCk7Ci1wcml2YXRlOgotICAgc3RhdGljX211dGV4JiBtX211dGV4OwotICAgYm9vbCBtX2hhdmVfbG9jazsKLX07Ci0KLWNsYXNzIHN0YXRpY19tdXRleAotewotcHVibGljOgotICAgdHlwZWRlZiBzY29wZWRfc3RhdGljX211dGV4X2xvY2sgc2NvcGVkX2xvY2s7Ci0gICBwdGhyZWFkX211dGV4X3QgbV9tdXRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKQotLy8KLS8vIFdpbjMyIHZlcnNpb246Ci0vLyBVc2UgYSAzMi1iaXQgaW50IGFzIGEgbG9jaywgYWxvbmcgd2l0aCBhIHRlc3QtYW5kLXNldAotLy8gaW1wbGVtZW50YXRpb24gdXNpbmcgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UuCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2s7Ci0KLWNsYXNzIHN0YXRpY19tdXRleAotewotcHVibGljOgotICAgdHlwZWRlZiBzY29wZWRfc3RhdGljX211dGV4X2xvY2sgc2NvcGVkX2xvY2s7Ci0gICBuZG5ib29zdDo6aW50MzJfdCBtX211dGV4OwotfTsKLQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVCB7IDAsIH0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2sKLXsKLXB1YmxpYzoKLSAgIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayhzdGF0aWNfbXV0ZXgmIG11dCwgYm9vbCBsayA9IHRydWUpOwotICAgfnNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jaygpOwotICAgb3BlcmF0b3Igdm9pZCBjb25zdCooKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbG9ja2VkKCkgPyB0aGlzIDogMDsKLSAgIH0KLSAgIGJvb2wgbG9ja2VkKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1faGF2ZV9sb2NrOwotICAgfQotICAgdm9pZCBsb2NrKCk7Ci0gICB2b2lkIHVubG9jaygpOwotcHJpdmF0ZToKLSAgIHN0YXRpY19tdXRleCYgbV9tdXRleDsKLSAgIGJvb2wgbV9oYXZlX2xvY2s7Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2soY29uc3Qgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrJik7Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2smIG9wZXJhdG9yPShjb25zdCBzY29wZWRfc3RhdGljX211dGV4X2xvY2smKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbHNlCi0vLwotLy8gUG9ydGFibGUgdmVyc2lvbiBvZiBhIHN0YXRpYyBtdXRleCBiYXNlZCBvbiBCb29zdC5UaHJlYWQgbGlicmFyeToKLS8vIFRoaXMgaGFzIHRvIHVzZSBhIHNpbmdsZSBtdXRleCBzaGFyZWQgYnkgYWxsIGluc3RhbmNlcyBvZiBzdGF0aWNfbXV0ZXgKLS8vIGJlY2F1c2UgbmRuYm9vc3Q6OmNhbGxfb25jZSBkb2Vzbid0IGFsb3cgdXMgdG8gcGFzcyBpbnN0YW5jZSBpbmZvcm1hdGlvbgotLy8gZG93biB0byB0aGUgaW5pdGlhbGlzYXRpb24gcHJvY2VlZHVyZS4gIEluIGZhY3QgdGhlIGluaXRpYWxpc2F0aW9uIHJvdXRpbmUKLS8vIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSAtIGJ1dCBvbmx5IG9uY2UgcGVyIGluc3RhbmNlLgotLy8KLS8vIFNpbmNlIHRoaXMgcHJlcHJvY2Vzc29yIHBhdGggaXMgYWxtb3N0IG5ldmVyIHRha2VuLCB3ZSBoaWRlIHRoZXNlIGhlYWRlcgotLy8gZGVwZW5kZW5jaWVzIHNvIHRoYXQgYnVpbGQgdG9vbHMgZG9uJ3QgZmluZCB0aGVtLgotLy8KLSNkZWZpbmUgQjEgPG5kbmJvb3N0L3RocmVhZC9vbmNlLmhwcD4KLSNkZWZpbmUgQjIgPG5kbmJvb3N0L3RocmVhZC9yZWN1cnNpdmVfbXV0ZXguaHBwPgotI2luY2x1ZGUgQjEKLSNpbmNsdWRlIEIyCi0jdW5kZWYgQjEKLSN1bmRlZiBCMgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrOwotZXh0ZXJuICJDIiBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgbmRuYm9vc3RfcmVnZXhfZnJlZV9zdGF0aWNfbXV0ZXgoKTsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzdGF0aWNfbXV0ZXgKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrIHNjb3BlZF9sb2NrOwotICAgc3RhdGljIHZvaWQgaW5pdCgpOwotICAgc3RhdGljIG5kbmJvb3N0OjpyZWN1cnNpdmVfbXV0ZXgqIG1fcG11dGV4OwotICAgc3RhdGljIG5kbmJvb3N0OjpvbmNlX2ZsYWcgbV9vbmNlOwotfTsKLQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVCB7ICB9Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrCi17Ci1wdWJsaWM6Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2soc3RhdGljX211dGV4JiBtdXQsIGJvb2wgbGsgPSB0cnVlKTsKLSAgIH5zY29wZWRfc3RhdGljX211dGV4X2xvY2soKTsKLSAgIG9wZXJhdG9yIHZvaWQgY29uc3QqKCljb25zdDsKLSAgIGJvb2wgbG9ja2VkKCljb25zdDsKLSAgIHZvaWQgbG9jaygpOwotICAgdm9pZCB1bmxvY2soKTsKLXByaXZhdGU6Ci0gICBuZG5ib29zdDo6cmVjdXJzaXZlX211dGV4OjpzY29wZWRfbG9jayogbV9wbG9jazsKLSAgIGJvb2wgbV9oYXZlX2xvY2s7Ci19OwotCi1pbmxpbmUgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrOjpvcGVyYXRvciB2b2lkIGNvbnN0KigpY29uc3QKLXsKLSAgIHJldHVybiBsb2NrZWQoKSA/IHRoaXMgOiAwOwotfQotCi1pbmxpbmUgYm9vbCBzY29wZWRfc3RhdGljX211dGV4X2xvY2s6OmxvY2tlZCgpY29uc3QKLXsKLSAgIHJldHVybiBtX2hhdmVfbG9jazsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3VuaWNvZGVfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3VuaWNvZGVfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjZkM2I5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy91bmljb2RlX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICB1bmljb2RlX2l0ZXJhdG9yLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSXRlcmF0b3IgYWRhcHRlcnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBkaWZmZXJlbnQgVW5pY29kZSBlbmNvZGluZ3MuCi0gICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLUNvbnRlbnRzOgotfn5+fn5+fn5+Ci0KLTEpIFJlYWQgT25seSwgSW5wdXQgQWRhcHRlcnM6Ci1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVOFR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50OF90PgotY2xhc3MgdTMyX3RvX3U4X2l0ZXJhdG9yOwotCi1BZGFwdHMgc2VxdWVuY2Ugb2YgVVRGLTMyIGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTguCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUzMlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MzJfdD4KLWNsYXNzIHU4X3RvX3UzMl9pdGVyYXRvcjsKLQotQWRhcHRzIHNlcXVlbmNlIG9mIFVURi04IGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTMyLgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMTZUeXBlID0gOjpuZG5ib29zdDo6dWludDE2X3Q+Ci1jbGFzcyB1MzJfdG9fdTE2X2l0ZXJhdG9yOwotCi1BZGFwdHMgc2VxdWVuY2Ugb2YgVVRGLTMyIGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTE2LgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMzJUeXBlID0gOjpuZG5ib29zdDo6dWludDMyX3Q+Ci1jbGFzcyB1MTZfdG9fdTMyX2l0ZXJhdG9yOwotCi1BZGFwdHMgc2VxdWVuY2Ugb2YgVVRGLTE2IGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTMyLgotCi0yKSBTaW5nbGUgcGFzcyBvdXRwdXQgaXRlcmF0b3IgYWRhcHRlcnM6Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGY4X291dHB1dF9pdGVyYXRvcjsKLQotQWNjZXB0cyBVVEYtMzIgY29kZSBwb2ludHMgYW5kIGZvcndhcmRzIHRoZW0gb24gYXMgVVRGLTggY29kZSBwb2ludHMuCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGYxNl9vdXRwdXRfaXRlcmF0b3I7Ci0KLUFjY2VwdHMgVVRGLTMyIGNvZGUgcG9pbnRzIGFuZCBmb3J3YXJkcyB0aGVtIG9uIGFzIFVURi0xNiBjb2RlIHBvaW50cy4KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9VTklDT0RFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9VTklDT0RFX0lURVJBVE9SX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zPgotI2VuZGlmCi0jaW5jbHVkZSA8bGltaXRzLmg+IC8vIENIQVJfQklUCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotc3RhdGljIGNvbnN0IDo6bmRuYm9vc3Q6OnVpbnQxNl90IGhpZ2hfc3Vycm9nYXRlX2Jhc2UgPSAweEQ3QzB1Owotc3RhdGljIGNvbnN0IDo6bmRuYm9vc3Q6OnVpbnQxNl90IGxvd19zdXJyb2dhdGVfYmFzZSA9IDB4REMwMHU7Ci1zdGF0aWMgY29uc3QgOjpuZG5ib29zdDo6dWludDMyX3QgdGVuX2JpdF9tYXNrID0gMHgzRkZ1OwotCi1pbmxpbmUgYm9vbCBpc19oaWdoX3N1cnJvZ2F0ZSg6Om5kbmJvb3N0Ojp1aW50MTZfdCB2KQotewotICAgcmV0dXJuICh2ICYgMHhGRkZGRkMwMHUpID09IDB4ZDgwMHU7Ci19Ci1pbmxpbmUgYm9vbCBpc19sb3dfc3Vycm9nYXRlKDo6bmRuYm9vc3Q6OnVpbnQxNl90IHYpCi17Ci0gICByZXR1cm4gKHYgJiAweEZGRkZGQzAwdSkgPT0gMHhkYzAwdTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGJvb2wgaXNfc3Vycm9nYXRlKFQgdikKLXsKLSAgIHJldHVybiAodiAmIDB4RkZGRkY4MDB1KSA9PSAweGQ4MDA7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCB1dGY4X2J5dGVfY291bnQobmRuYm9vc3Q6OnVpbnQ4X3QgYykKLXsKLSAgIC8vIGlmIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCB3aXRoIGEgemVybyBpbiBpdCBpcyBpbiBwb3NpdGlvbgotICAgLy8gOC1OIHRoZW4gdGhlcmUgYXJlIE4gYnl0ZXMgaW4gdGhpcyBVVEYtOCBzZXF1ZW5jZToKLSAgIG5kbmJvb3N0Ojp1aW50OF90IG1hc2sgPSAweDgwdTsKLSAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICB3aGlsZShjICYgbWFzaykKLSAgIHsKLSAgICAgICsrcmVzdWx0OwotICAgICAgbWFzayA+Pj0gMTsKLSAgIH0KLSAgIHJldHVybiAocmVzdWx0ID09IDApID8gMSA6ICgocmVzdWx0ID4gNCkgPyA0IDogcmVzdWx0KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIHV0ZjhfdHJhaWxpbmdfYnl0ZV9jb3VudChuZG5ib29zdDo6dWludDhfdCBjKQotewotICAgcmV0dXJuIHV0ZjhfYnl0ZV9jb3VudChjKSAtIDE7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCi0jZW5kaWYKLWlubGluZSB2b2lkIGludmFsaWRfdXRmMzJfY29kZV9wb2ludCg6Om5kbmJvb3N0Ojp1aW50MzJfdCB2YWwpCi17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgc3MgPDwgIkludmFsaWQgVVRGLTMyIGNvZGUgcG9pbnQgVSsiIDw8IHN0ZDo6c2hvd2Jhc2UgPDwgc3RkOjpoZXggPDwgdmFsIDw8ICIgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMTYgc2VxdWVuY2UiOwotICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZShzcy5zdHIoKSk7Ci0jZWxzZQotICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZSgiSW52YWxpZCBVVEYtMzIgY29kZSBwb2ludCBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gZW5jb2RlIFVURi0xNiBzZXF1ZW5jZSIpOwotI2VuZGlmCi0gICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTE2VHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQxNl90PgotY2xhc3MgdTMyX3RvX3UxNl9pdGVyYXRvcgotICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1MzJfdG9fdTE2X2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVTE2VHlwZT4sIFUxNlR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFUxNlR5cGU+Ci17Ci0gICB0eXBlZGVmIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTMyX3RvX3UxNl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUxNlR5cGU+LCBVMTZUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMTZUeXBlPiBiYXNlX3R5cGU7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxCYXNlSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGJhc2VfdmFsdWVfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoYmFzZV92YWx1ZV90eXBlKSpDSEFSX0JJVCA9PSAzMik7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihVMTZUeXBlKSpDSEFSX0JJVCA9PSAxNik7Ci0jZW5kaWYKLQotcHVibGljOgotICAgdHlwZW5hbWUgYmFzZV90eXBlOjpyZWZlcmVuY2UKLSAgICAgIGRlcmVmZXJlbmNlKCljb25zdAotICAgewotICAgICAgaWYobV9jdXJyZW50ID09IDIpCi0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIHJldHVybiBtX3ZhbHVlc1ttX2N1cnJlbnRdOwotICAgfQotICAgYm9vbCBlcXVhbChjb25zdCB1MzJfdG9fdTE2X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoYXQubV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIC8vIEJvdGggbV9jdXJyZW50cyBtdXN0IGJlIGVxdWFsLCBvciBib3RoIGV2ZW4KLSAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgc2F5aW5nIHRoZWlyIHN1bSBtdXN0IGJlIGV2ZW46Ci0gICAgICAgICByZXR1cm4gKG1fY3VycmVudCArIHRoYXQubV9jdXJyZW50KSAmIDF1ID8gZmFsc2UgOiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gaWYgd2UgaGF2ZSBhIHBlbmRpbmcgcmVhZCB0aGVuIHJlYWQgbm93LCBzbyB0aGF0IHdlIGtub3cgd2hldGhlcgotICAgICAgLy8gdG8gc2tpcCBhIHBvc2l0aW9uLCBvciBtb3ZlIHRvIGEgbG93LXN1cnJvZ2F0ZToKLSAgICAgIGlmKG1fY3VycmVudCA9PSAyKQotICAgICAgewotICAgICAgICAgLy8gcGVuZGluZyByZWFkOgotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICB9Ci0gICAgICAvLyBtb3ZlIHRvIHRoZSBuZXh0IHN1cnJvZ2F0ZSBwb3NpdGlvbjoKLSAgICAgICsrbV9jdXJyZW50OwotICAgICAgLy8gaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIHNraXAgYSBwb3NpdGlvbjoKLSAgICAgIGlmKG1fdmFsdWVzW21fY3VycmVudF0gPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fY3VycmVudCA9IDI7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkIGRlY3JlbWVudCgpCi0gICB7Ci0gICAgICBpZihtX2N1cnJlbnQgIT0gMSkKLSAgICAgIHsKLSAgICAgICAgIC8vIGRlY3JlbWVudGluZyBhbiBpdGVyYXRvciBhbHdheXMgbGVhZHMgdG8gYSB2YWxpZCBwb3NpdGlvbjoKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgICAgbV9jdXJyZW50ID0gbV92YWx1ZXNbMV0gPyAxIDogMDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIG1fY3VycmVudCA9IDA7Ci0gICAgICB9Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotICAgLy8gY29uc3RydWN0OgotICAgdTMyX3RvX3UxNl9pdGVyYXRvcigpIDogbV9wb3NpdGlvbigpLCBtX2N1cnJlbnQoMCkKLSAgIHsKLSAgICAgIG1fdmFsdWVzWzBdID0gMDsKLSAgICAgIG1fdmFsdWVzWzFdID0gMDsKLSAgICAgIG1fdmFsdWVzWzJdID0gMDsKLSAgIH0KLSAgIHUzMl90b191MTZfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIpIDogbV9wb3NpdGlvbihiKSwgbV9jdXJyZW50KDIpCi0gICB7Ci0gICAgICBtX3ZhbHVlc1swXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1sxXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1syXSA9IDA7Ci0gICB9Ci1wcml2YXRlOgotCi0gICB2b2lkIGV4dHJhY3RfY3VycmVudCgpY29uc3QKLSAgIHsKLSAgICAgIC8vIGJlZ2luIGJ5IGNoZWNraW5nIGZvciBhIGNvZGUgcG9pbnQgb3V0IG9mIHJhbmdlOgotICAgICAgOjpuZG5ib29zdDo6dWludDMyX3QgdiA9ICptX3Bvc2l0aW9uOwotICAgICAgaWYodiA+PSAweDEwMDAwdSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHYgPiAweDEwRkZGRnUpCi0gICAgICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICAvLyBzcGxpdCBpbnRvIHR3byBzdXJyb2dhdGVzOgotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDxVMTZUeXBlPih2ID4+IDEwKSArIGRldGFpbDo6aGlnaF9zdXJyb2dhdGVfYmFzZTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8VTE2VHlwZT4odiAmIGRldGFpbDo6dGVuX2JpdF9tYXNrKSArIGRldGFpbDo6bG93X3N1cnJvZ2F0ZV9iYXNlOwotICAgICAgICAgbV9jdXJyZW50ID0gMDsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChkZXRhaWw6OmlzX2hpZ2hfc3Vycm9nYXRlKG1fdmFsdWVzWzBdKSk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoZGV0YWlsOjppc19sb3dfc3Vycm9nYXRlKG1fdmFsdWVzWzFdKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyAxNi1iaXQgY29kZSBwb2ludDoKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8VTE2VHlwZT4oKm1fcG9zaXRpb24pOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgICAgbV9jdXJyZW50ID0gMDsKLSAgICAgICAgIC8vIHZhbHVlIG11c3Qgbm90IGJlIGEgc3Vycm9nYXRlOgotICAgICAgICAgaWYoZGV0YWlsOjppc19zdXJyb2dhdGUobV92YWx1ZXNbMF0pKQotICAgICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQoKm1fcG9zaXRpb24pOwotICAgICAgfQotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFUxNlR5cGUgbV92YWx1ZXNbM107Ci0gICBtdXRhYmxlIHVuc2lnbmVkIG1fY3VycmVudDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUzMlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MzJfdD4KLWNsYXNzIHUxNl90b191MzJfaXRlcmF0b3IKLSAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTE2X3RvX3UzMl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUzMlR5cGU+LCBVMzJUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMzJUeXBlPgotewotICAgdHlwZWRlZiBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHUxNl90b191MzJfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVMzJUeXBlPiwgVTMyVHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVTMyVHlwZT4gYmFzZV90eXBlOwotICAgLy8gc3BlY2lhbCB2YWx1ZXMgZm9yIHBlbmRpbmcgaXRlcmF0b3IgcmVhZHM6Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVTMyVHlwZSwgcGVuZGluZ19yZWFkID0gMHhmZmZmZmZmZnUpOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8QmFzZUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBiYXNlX3ZhbHVlX3R5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGJhc2VfdmFsdWVfdHlwZSkqQ0hBUl9CSVQgPT0gMTYpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoVTMyVHlwZSkqQ0hBUl9CSVQgPT0gMzIpOwotI2VuZGlmCi0KLXB1YmxpYzoKLSAgIHR5cGVuYW1lIGJhc2VfdHlwZTo6cmVmZXJlbmNlCi0gICAgICBkZXJlZmVyZW5jZSgpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fdmFsdWUgPT0gcGVuZGluZ19yZWFkKQotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICByZXR1cm4gbV92YWx1ZTsKLSAgIH0KLSAgIGJvb2wgZXF1YWwoY29uc3QgdTE2X3RvX3UzMl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0gdGhhdC5tX3Bvc2l0aW9uOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gc2tpcCBoaWdoIHN1cnJvZ2F0ZSBmaXJzdCBpZiB0aGVyZSBpcyBvbmU6Ci0gICAgICBpZihkZXRhaWw6OmlzX2hpZ2hfc3Vycm9nYXRlKCptX3Bvc2l0aW9uKSkgKyttX3Bvc2l0aW9uOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIHZvaWQgZGVjcmVtZW50KCkKLSAgIHsKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIC8vIGlmIHdlIGhhdmUgYSBsb3cgc3Vycm9nYXRlIHRoZW4gZ28gYmFjayBvbmUgbW9yZToKLSAgICAgIGlmKGRldGFpbDo6aXNfbG93X3N1cnJvZ2F0ZSgqbV9wb3NpdGlvbikpIAotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci0gICAvLyBjb25zdHJ1Y3Q6Ci0gICB1MTZfdG9fdTMyX2l0ZXJhdG9yKCkgOiBtX3Bvc2l0aW9uKCkKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICB1MTZfdG9fdTMyX2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiKSA6IG1fcG9zaXRpb24oYikKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICAvLwotICAgLy8gUmFuZ2UgY2hlY2tlZCB2ZXJzaW9uOgotICAgLy8KLSAgIHUxNl90b191MzJfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIsIEJhc2VJdGVyYXRvciBzdGFydCwgQmFzZUl0ZXJhdG9yIGVuZCkgOiBtX3Bvc2l0aW9uKGIpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgICAgLy8KLSAgICAgIC8vIFRoZSByYW5nZSBtdXN0IG5vdCBzdGFydCB3aXRoIGEgbG93IHN1cnJvZ2F0ZSwgb3IgZW5kIGluIGEgaGlnaCBzdXJyb2dhdGUsCi0gICAgICAvLyBvdGhlcndpc2Ugd2UgcnVuIHRoZSByaXNrIG9mIHJ1bm5pbmcgb3V0c2lkZSB0aGUgdW5kZXJseWluZyBpbnB1dCByYW5nZS4KLSAgICAgIC8vIExpa2V3aXNlIGIgbXVzdCBub3QgYmUgbG9jYXRlZCBhdCBhIGxvdyBzdXJyb2dhdGUuCi0gICAgICAvLwotICAgICAgbmRuYm9vc3Q6OnVpbnQxNl90IHZhbDsKLSAgICAgIGlmKHN0YXJ0ICE9IGVuZCkKLSAgICAgIHsKLSAgICAgICAgIGlmKChiICE9IHN0YXJ0KSAmJiAoYiAhPSBlbmQpKQotICAgICAgICAgewotICAgICAgICAgICAgdmFsID0gKmI7Ci0gICAgICAgICAgICBpZihkZXRhaWw6OmlzX3N1cnJvZ2F0ZSh2YWwpICYmICgodmFsICYgMHhGQzAwdSkgPT0gMHhEQzAwdSkpCi0gICAgICAgICAgICAgICBpbnZhbGlkX2NvZGVfcG9pbnQodmFsKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHZhbCA9ICpzdGFydDsKLSAgICAgICAgIGlmKGRldGFpbDo6aXNfc3Vycm9nYXRlKHZhbCkgJiYgKCh2YWwgJiAweEZDMDB1KSA9PSAweERDMDB1KSkKLSAgICAgICAgICAgIGludmFsaWRfY29kZV9wb2ludCh2YWwpOwotICAgICAgICAgdmFsID0gKi0tZW5kOwotICAgICAgICAgaWYoZGV0YWlsOjppc19oaWdoX3N1cnJvZ2F0ZSh2YWwpKQotICAgICAgICAgICAgaW52YWxpZF9jb2RlX3BvaW50KHZhbCk7Ci0gICAgICB9Ci0gICB9Ci1wcml2YXRlOgotICAgc3RhdGljIHZvaWQgaW52YWxpZF9jb2RlX3BvaW50KDo6bmRuYm9vc3Q6OnVpbnQxNl90IHZhbCkKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgICBzcyA8PCAiTWlzcGxhY2VkIFVURi0xNiBzdXJyb2dhdGUgVSsiIDw8IHN0ZDo6c2hvd2Jhc2UgPDwgc3RkOjpoZXggPDwgdmFsIDw8ICIgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMzIgc2VxdWVuY2UiOwotICAgICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZShzcy5zdHIoKSk7Ci0jZWxzZQotICAgICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZSgiTWlzcGxhY2VkIFVURi0xNiBzdXJyb2dhdGUgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMzIgc2VxdWVuY2UiKTsKLSNlbmRpZgotICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSAgIH0KLSAgIHZvaWQgZXh0cmFjdF9jdXJyZW50KCljb25zdAotICAgewotICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PFUzMlR5cGU+KHN0YXRpY19jYXN0PCA6Om5kbmJvb3N0Ojp1aW50MTZfdD4oKm1fcG9zaXRpb24pKTsKLSAgICAgIC8vIGlmIHRoZSBsYXN0IHZhbHVlIGlzIGEgaGlnaCBzdXJyb2dhdGUgdGhlbiBhZGp1c3QgbV9wb3NpdGlvbiBhbmQgbV92YWx1ZSBhcyBuZWVkZWQ6Ci0gICAgICBpZihkZXRhaWw6OmlzX2hpZ2hfc3Vycm9nYXRlKCptX3Bvc2l0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHByZWNvbmRpdGlvbjsgbmV4dCB2YWx1ZSBtdXN0IGhhdmUgYmUgYSBsb3ctc3Vycm9nYXRlOgotICAgICAgICAgQmFzZUl0ZXJhdG9yIG5leHQobV9wb3NpdGlvbik7Ci0gICAgICAgICA6Om5kbmJvb3N0Ojp1aW50MTZfdCB0ID0gKisrbmV4dDsKLSAgICAgICAgIGlmKCh0ICYgMHhGQzAwdSkgIT0gMHhEQzAwdSkKLSAgICAgICAgICAgIGludmFsaWRfY29kZV9wb2ludCh0KTsKLSAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZSAtIGRldGFpbDo6aGlnaF9zdXJyb2dhdGVfYmFzZSkgPDwgMTA7Ci0gICAgICAgICBtX3ZhbHVlIHw9IChzdGF0aWNfY2FzdDxVMzJUeXBlPihzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6dWludDE2X3Q+KHQpKSAmIGRldGFpbDo6dGVuX2JpdF9tYXNrKTsKLSAgICAgIH0KLSAgICAgIC8vIHBvc3Rjb25kaXRpb247IHJlc3VsdCBtdXN0IG5vdCBiZSBhIHN1cnJvZ2F0ZToKLSAgICAgIGlmKGRldGFpbDo6aXNfc3Vycm9nYXRlKG1fdmFsdWUpKQotICAgICAgICAgaW52YWxpZF9jb2RlX3BvaW50KHN0YXRpY19jYXN0PCA6Om5kbmJvb3N0Ojp1aW50MTZfdD4obV92YWx1ZSkpOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFUzMlR5cGUgbV92YWx1ZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFU4VHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQ4X3Q+Ci1jbGFzcyB1MzJfdG9fdThfaXRlcmF0b3IKLSAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTMyX3RvX3U4X2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVThUeXBlPiwgVThUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVOFR5cGU+Ci17Ci0gICB0eXBlZGVmIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTMyX3RvX3U4X2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVThUeXBlPiwgVThUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVOFR5cGU+IGJhc2VfdHlwZTsKLSAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEJhc2VJdGVyYXRvcj46OnZhbHVlX3R5cGUgYmFzZV92YWx1ZV90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihiYXNlX3ZhbHVlX3R5cGUpKkNIQVJfQklUID09IDMyKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFU4VHlwZSkqQ0hBUl9CSVQgPT0gOCk7Ci0jZW5kaWYKLQotcHVibGljOgotICAgdHlwZW5hbWUgYmFzZV90eXBlOjpyZWZlcmVuY2UKLSAgICAgIGRlcmVmZXJlbmNlKCljb25zdAotICAgewotICAgICAgaWYobV9jdXJyZW50ID09IDQpCi0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIHJldHVybiBtX3ZhbHVlc1ttX2N1cnJlbnRdOwotICAgfQotICAgYm9vbCBlcXVhbChjb25zdCB1MzJfdG9fdThfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gdGhhdC5tX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgLy8gZWl0aGVyIHRoZSBtX2N1cnJlbnQncyBtdXN0IGJlIGVxdWFsLCBvciBvbmUgbXVzdCBiZSAwIGFuZCAKLSAgICAgICAgIC8vIHRoZSBvdGhlciA0OiB3aGljaCBtZWFucyBuZWl0aGVyIG11c3QgaGF2ZSBiaXRzIDEgb3IgMiBzZXQ6Ci0gICAgICAgICByZXR1cm4gKG1fY3VycmVudCA9PSB0aGF0Lm1fY3VycmVudCkKLSAgICAgICAgICAgIHx8ICgoKG1fY3VycmVudCB8IHRoYXQubV9jdXJyZW50KSAmIDMpID09IDApOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gaWYgd2UgaGF2ZSBhIHBlbmRpbmcgcmVhZCB0aGVuIHJlYWQgbm93LCBzbyB0aGF0IHdlIGtub3cgd2hldGhlcgotICAgICAgLy8gdG8gc2tpcCBhIHBvc2l0aW9uLCBvciBtb3ZlIHRvIGEgbG93LXN1cnJvZ2F0ZToKLSAgICAgIGlmKG1fY3VycmVudCA9PSA0KQotICAgICAgewotICAgICAgICAgLy8gcGVuZGluZyByZWFkOgotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICB9Ci0gICAgICAvLyBtb3ZlIHRvIHRoZSBuZXh0IHN1cnJvZ2F0ZSBwb3NpdGlvbjoKLSAgICAgICsrbV9jdXJyZW50OwotICAgICAgLy8gaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIHNraXAgYSBwb3NpdGlvbjoKLSAgICAgIGlmKG1fdmFsdWVzW21fY3VycmVudF0gPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fY3VycmVudCA9IDQ7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkIGRlY3JlbWVudCgpCi0gICB7Ci0gICAgICBpZigobV9jdXJyZW50ICYgMykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgICAgbV9jdXJyZW50ID0gMzsKLSAgICAgICAgIHdoaWxlKG1fY3VycmVudCAmJiAobV92YWx1ZXNbbV9jdXJyZW50XSA9PSAwKSkKLSAgICAgICAgICAgIC0tbV9jdXJyZW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgLS1tX2N1cnJlbnQ7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotICAgLy8gY29uc3RydWN0OgotICAgdTMyX3RvX3U4X2l0ZXJhdG9yKCkgOiBtX3Bvc2l0aW9uKCksIG1fY3VycmVudCgwKQotICAgewotICAgICAgbV92YWx1ZXNbMF0gPSAwOwotICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgbV92YWx1ZXNbMl0gPSAwOwotICAgICAgbV92YWx1ZXNbM10gPSAwOwotICAgICAgbV92YWx1ZXNbNF0gPSAwOwotICAgfQotICAgdTMyX3RvX3U4X2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiKSA6IG1fcG9zaXRpb24oYiksIG1fY3VycmVudCg0KQotICAgewotICAgICAgbV92YWx1ZXNbMF0gPSAwOwotICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgbV92YWx1ZXNbMl0gPSAwOwotICAgICAgbV92YWx1ZXNbM10gPSAwOwotICAgICAgbV92YWx1ZXNbNF0gPSAwOwotICAgfQotcHJpdmF0ZToKLQotICAgdm9pZCBleHRyYWN0X2N1cnJlbnQoKWNvbnN0Ci0gICB7Ci0gICAgICBuZG5ib29zdDo6dWludDMyX3QgYyA9ICptX3Bvc2l0aW9uOwotICAgICAgaWYoYyA+IDB4MTBGRkZGdSkKLSAgICAgICAgIGRldGFpbDo6aW52YWxpZF91dGYzMl9jb2RlX3BvaW50KGMpOwotICAgICAgaWYoYyA8IDB4ODB1KQotICAgICAgewotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHUpOwotICAgICAgICAgbV92YWx1ZXNbMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoYyA8IDB4ODAwdSkKLSAgICAgIHsKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhDMHUgKyAoYyA+PiA2KSk7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgICAgbV92YWx1ZXNbMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoYyA8IDB4MTAwMDB1KQotICAgICAgewotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEUwdSArIChjID4+IDEyKSk7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDYpICYgMHgzRnUpKTsKLSAgICAgICAgIG1fdmFsdWVzWzJdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhGMHUgKyAoYyA+PiAxOCkpOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiAxMikgJiAweDNGdSkpOwotICAgICAgICAgbV92YWx1ZXNbMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiA2KSAmIDB4M0Z1KSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgfQotICAgICAgbV9jdXJyZW50PSAwOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFU4VHlwZSBtX3ZhbHVlc1s1XTsKLSAgIG11dGFibGUgdW5zaWduZWQgbV9jdXJyZW50OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTMyVHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQzMl90PgotY2xhc3MgdThfdG9fdTMyX2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHU4X3RvX3UzMl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUzMlR5cGU+LCBVMzJUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMzJUeXBlPgotewotICAgdHlwZWRlZiBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHU4X3RvX3UzMl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUzMlR5cGU+LCBVMzJUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMzJUeXBlPiBiYXNlX3R5cGU7Ci0gICAvLyBzcGVjaWFsIHZhbHVlcyBmb3IgcGVuZGluZyBpdGVyYXRvciByZWFkczoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChVMzJUeXBlLCBwZW5kaW5nX3JlYWQgPSAweGZmZmZmZmZmdSk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxCYXNlSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGJhc2VfdmFsdWVfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoYmFzZV92YWx1ZV90eXBlKSpDSEFSX0JJVCA9PSA4KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFUzMlR5cGUpKkNIQVJfQklUID09IDMyKTsKLSNlbmRpZgotCi1wdWJsaWM6Ci0gICB0eXBlbmFtZSBiYXNlX3R5cGU6OnJlZmVyZW5jZQotICAgICAgZGVyZWZlcmVuY2UoKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3ZhbHVlID09IHBlbmRpbmdfcmVhZCkKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICB9Ci0gICBib29sIGVxdWFsKGNvbnN0IHU4X3RvX3UzMl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0gdGhhdC5tX3Bvc2l0aW9uOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gV2UgbXVzdCBub3Qgc3RhcnQgd2l0aCBhIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXI6Ci0gICAgICBpZigoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KCptX3Bvc2l0aW9uKSAmIDB4QzApID09IDB4ODApCi0gICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAvLyBza2lwIGhpZ2ggc3Vycm9nYXRlIGZpcnN0IGlmIHRoZXJlIGlzIG9uZToKLSAgICAgIHVuc2lnbmVkIGMgPSBkZXRhaWw6OnV0ZjhfYnl0ZV9jb3VudCgqbV9wb3NpdGlvbik7Ci0gICAgICBpZihtX3ZhbHVlID09IHBlbmRpbmdfcmVhZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFNpbmNlIHdlIGhhdmVuJ3QgcmVhZCBpbiBhIHZhbHVlLCB3ZSBuZWVkIHRvIHZhbGlkYXRlIHRoZSBjb2RlIHBvaW50czoKLSAgICAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IGM7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIC8vIFdlIG11c3QgaGF2ZSBhIGNvbnRpbnVhdGlvbiBieXRlOgotICAgICAgICAgICAgaWYoKGkgIT0gYyAtIDEpICYmICgoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KCptX3Bvc2l0aW9uKSAmIDB4QzApICE9IDB4ODApKQotICAgICAgICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjphZHZhbmNlKG1fcG9zaXRpb24sIGMpOwotICAgICAgfQotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIHZvaWQgZGVjcmVtZW50KCkKLSAgIHsKLSAgICAgIC8vIEtlZXAgYmFja3RyYWNraW5nIHVudGlsIHdlIGRvbid0IGhhdmUgYSB0cmFpbGluZyBjaGFyYWN0ZXI6Ci0gICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgICB3aGlsZSgoKi0tbV9wb3NpdGlvbiAmIDB4QzB1KSA9PSAweDgwdSkgKytjb3VudDsKLSAgICAgIC8vIG5vdyBjaGVjayB0aGF0IHRoZSBzZXF1ZW5jZSB3YXMgdmFsaWQ6Ci0gICAgICBpZihjb3VudCAhPSBkZXRhaWw6OnV0ZjhfdHJhaWxpbmdfYnl0ZV9jb3VudCgqbV9wb3NpdGlvbikpCi0gICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgIH0KLSAgIC8vIGNvbnN0cnVjdDoKLSAgIHU4X3RvX3UzMl9pdGVyYXRvcigpIDogbV9wb3NpdGlvbigpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgdThfdG9fdTMyX2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiKSA6IG1fcG9zaXRpb24oYikKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICAvLwotICAgLy8gQ2hlY2tlZCBjb25zdHJ1Y3RvcjoKLSAgIC8vCi0gICB1OF90b191MzJfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIsIEJhc2VJdGVyYXRvciBzdGFydCwgQmFzZUl0ZXJhdG9yIGVuZCkgOiBtX3Bvc2l0aW9uKGIpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgICAgLy8KLSAgICAgIC8vIFdlIG11c3Qgbm90IHN0YXJ0IHdpdGggYSBjb250aW51YXRpb24gY2hhcmFjdGVyLCBvciBlbmQgd2l0aCBhIAotICAgICAgLy8gdHJ1bmNhdGVkIFVURi04IHNlcXVlbmNlIG90aGVyd2lzZSB3ZSBydW4gdGhlIHJpc2sgb2YgZ29pbmcgcGFzdAotICAgICAgLy8gdGhlIHN0YXJ0L2VuZCBvZiB0aGUgdW5kZXJseWluZyBzZXF1ZW5jZToKLSAgICAgIC8vCi0gICAgICBpZihzdGFydCAhPSBlbmQpCi0gICAgICB7Ci0gICAgICAgICB1bnNpZ25lZCBjaGFyIHYgPSAqc3RhcnQ7Ci0gICAgICAgICBpZigodiAmIDB4QzB1KSA9PSAweDgwdSkKLSAgICAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgICAgIGlmKChiICE9IHN0YXJ0KSAmJiAoYiAhPSBlbmQpICYmICgoKmIgJiAweEMwdSkgPT0gMHg4MHUpKQotICAgICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgICAgQmFzZUl0ZXJhdG9yIHBvcyA9IGVuZDsKLSAgICAgICAgIGRvCi0gICAgICAgICB7Ci0gICAgICAgICAgICB2ID0gKi0tcG9zOwotICAgICAgICAgfQotICAgICAgICAgd2hpbGUoKHN0YXJ0ICE9IHBvcykgJiYgKCh2ICYgMHhDMHUpID09IDB4ODB1KSk7Ci0gICAgICAgICBzdGQ6OnB0cmRpZmZfdCBleHRyYSA9IGRldGFpbDo6dXRmOF9ieXRlX2NvdW50KHYpOwotICAgICAgICAgaWYoc3RkOjpkaXN0YW5jZShwb3MsIGVuZCkgPCBleHRyYSkKLSAgICAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgIH0KLSAgIH0KLXByaXZhdGU6Ci0gICBzdGF0aWMgdm9pZCBpbnZhbGlkX3NlcXVlbmNlKCkKLSAgIHsKLSAgICAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoIkludmFsaWQgVVRGLTggc2VxdWVuY2UgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMzIgY2hhcmFjdGVyIik7Ci0gICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgfQotICAgdm9pZCBleHRyYWN0X2N1cnJlbnQoKWNvbnN0Ci0gICB7Ci0gICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VTMyVHlwZT4oc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnVpbnQ4X3Q+KCptX3Bvc2l0aW9uKSk7Ci0gICAgICAvLyB3ZSBtdXN0IG5vdCBoYXZlIGEgY29udGludWF0aW9uIGNoYXJhY3RlcjoKLSAgICAgIGlmKChtX3ZhbHVlICYgMHhDMHUpID09IDB4ODB1KQotICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgLy8gc2VlIGhvdyBtYW55IGV4dHJhIGJ5dGVzIHdlIGhhdmU6Ci0gICAgICB1bnNpZ25lZCBleHRyYSA9IGRldGFpbDo6dXRmOF90cmFpbGluZ19ieXRlX2NvdW50KCptX3Bvc2l0aW9uKTsKLSAgICAgIC8vIGV4dHJhY3QgdGhlIGV4dHJhIGJpdHMsIDYgZnJvbSBlYWNoIGV4dHJhIGJ5dGU6Ci0gICAgICBCYXNlSXRlcmF0b3IgbmV4dChtX3Bvc2l0aW9uKTsKLSAgICAgIGZvcih1bnNpZ25lZCBjID0gMDsgYyA8IGV4dHJhOyArK2MpCi0gICAgICB7Ci0gICAgICAgICArK25leHQ7Ci0gICAgICAgICBtX3ZhbHVlIDw8PSA2OwotICAgICAgICAgLy8gV2UgbXVzdCBoYXZlIGEgY29udGludWF0aW9uIGJ5dGU6Ci0gICAgICAgICBpZigoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KCpuZXh0KSAmIDB4QzApICE9IDB4ODApCi0gICAgICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAgICBtX3ZhbHVlICs9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50OF90PigqbmV4dCkgJiAweDNGdTsKLSAgICAgIH0KLSAgICAgIC8vIHdlIG5vdyBuZWVkIHRvIHJlbW92ZSBhIGZldyBvZiB0aGUgbGVmdG1vc3QgYml0cywgYnV0IGhvdyBtYW55IGRlcGVuZHMKLSAgICAgIC8vIHVwb24gaG93IG1hbnkgZXh0cmEgYnl0ZXMgd2UndmUgZXh0cmFjdGVkOgotICAgICAgc3RhdGljIGNvbnN0IG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrc1s0XSA9IAotICAgICAgewotICAgICAgICAgMHg3RnUsCi0gICAgICAgICAweDdGRnUsCi0gICAgICAgICAweEZGRkZ1LAotICAgICAgICAgMHgxRkZGRkZ1LAotICAgICAgfTsKLSAgICAgIG1fdmFsdWUgJj0gbWFza3NbZXh0cmFdOwotICAgICAgLy8gY2hlY2sgdGhlIHJlc3VsdDoKLSAgICAgIGlmKG1fdmFsdWUgPiBzdGF0aWNfY2FzdDxVMzJUeXBlPigweDEwRkZGRnUpKQotICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFUzMlR5cGUgbV92YWx1ZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGYxNl9vdXRwdXRfaXRlcmF0b3IKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QqICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QmICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3IoY29uc3QgQmFzZUl0ZXJhdG9yJiBiKQotICAgICAgOiBtX3Bvc2l0aW9uKGIpe30KLSAgIHV0ZjE2X291dHB1dF9pdGVyYXRvcihjb25zdCB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IG1fcG9zaXRpb24odGhhdC5tX3Bvc2l0aW9uKXt9Ci0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uID0gdGhhdC5tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgY29uc3QgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB2b2lkIG9wZXJhdG9yPShuZG5ib29zdDo6dWludDMyX3QgdmFsKWNvbnN0Ci0gICB7Ci0gICAgICBwdXNoKHZhbCk7Ci0gICB9Ci0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci1wcml2YXRlOgotICAgdm9pZCBwdXNoKG5kbmJvb3N0Ojp1aW50MzJfdCB2KWNvbnN0Ci0gICB7Ci0gICAgICBpZih2ID49IDB4MTAwMDB1KQotICAgICAgewotICAgICAgICAgLy8gYmVnaW4gYnkgY2hlY2tpbmcgZm9yIGEgY29kZSBwb2ludCBvdXQgb2YgcmFuZ2U6Ci0gICAgICAgICBpZih2ID4gMHgxMEZGRkZ1KQotICAgICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQodik7Ci0gICAgICAgICAvLyBzcGxpdCBpbnRvIHR3byBzdXJyb2dhdGVzOgotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4odiA+PiAxMCkgKyBkZXRhaWw6OmhpZ2hfc3Vycm9nYXRlX2Jhc2U7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90Pih2ICYgZGV0YWlsOjp0ZW5fYml0X21hc2spICsgZGV0YWlsOjpsb3dfc3Vycm9nYXRlX2Jhc2U7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyAxNi1iaXQgY29kZSBwb2ludDoKLSAgICAgICAgIC8vIHZhbHVlIG11c3Qgbm90IGJlIGEgc3Vycm9nYXRlOgotICAgICAgICAgaWYoZGV0YWlsOjppc19zdXJyb2dhdGUodikpCi0gICAgICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludCh2KTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KHYpOwotICAgICAgfQotICAgfQotICAgbXV0YWJsZSBCYXNlSXRlcmF0b3IgbV9wb3NpdGlvbjsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGY4X291dHB1dF9pdGVyYXRvcgotewotcHVibGljOgotICAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCYgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yKGNvbnN0IEJhc2VJdGVyYXRvciYgYikKLSAgICAgIDogbV9wb3NpdGlvbihiKXt9Ci0gICB1dGY4X291dHB1dF9pdGVyYXRvcihjb25zdCB1dGY4X291dHB1dF9pdGVyYXRvciYgdGhhdCkKLSAgICAgIDogbV9wb3NpdGlvbih0aGF0Lm1fcG9zaXRpb24pe30KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uID0gdGhhdC5tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgY29uc3QgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHZvaWQgb3BlcmF0b3I9KG5kbmJvb3N0Ojp1aW50MzJfdCB2YWwpY29uc3QKLSAgIHsKLSAgICAgIHB1c2godmFsKTsKLSAgIH0KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci1wcml2YXRlOgotICAgdm9pZCBwdXNoKG5kbmJvb3N0Ojp1aW50MzJfdCBjKWNvbnN0Ci0gICB7Ci0gICAgICBpZihjID4gMHgxMEZGRkZ1KQotICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQoYyk7Ci0gICAgICBpZihjIDwgMHg4MHUpCi0gICAgICB7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKGMgPCAweDgwMHUpCi0gICAgICB7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhDMHUgKyAoYyA+PiA2KSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKGMgPCAweDEwMDAwdSkKLSAgICAgIHsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEUwdSArIChjID4+IDEyKSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoKGMgPj4gNikgJiAweDNGdSkpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4RjB1ICsgKGMgPj4gMTgpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiAxMikgJiAweDNGdSkpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDYpICYgMHgzRnUpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArIChjICYgMHgzRnUpKTsKLSAgICAgIH0KLSAgIH0KLSAgIG11dGFibGUgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVU5JQ09ERV9JVEVSQVRPUl9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9yZWdleF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmRiODc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfdHJhaXRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHRyYWl0cyBjbGFzc2VzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0cy5ocHA+Ci0jICBlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdXNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3VzZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTUxZmMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdXNlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHVzZXIuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBVc2VyIHNldHRhYmxlIG9wdGlvbnMuCi0gICovCi0KLS8vIGRlZmluZSBpZiB5b3Ugd2FudCB0aGUgcmVnZXggbGlicmFyeSB0byB1c2UgdGhlIEMgbG9jYWxlCi0vLyBldmVuIG9uIFdpbjMyOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUKLQotLy8gZGVmaW5lIHRoaXMgaXMgeW91IHdhbnQgdGhlIHJlZ2V4IGxpYnJhcnkgdG8gdXNlIHRoZSBDKysKLS8vIGxvY2FsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUKLQotLy8gZGVmaW5lIHRoaXMgaWYgdGhlIHJ1bnRpbWUgbGlicmFyeSBpcyBhIGRsbCwgYW5kIHlvdQotLy8gd2FudCBORE5CT09TVF9SRUdFWF9EWU5fTElOSyB0byBzZXQgdXAgZGxsIGV4cG9ydHMvaW1wb3J0cwotLy8gd2l0aCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkvX19kZWNsc3BlYyhkbGxpbXBvcnQuKQotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9IQVNfRExMX1JVTlRJTUUKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gZHluYW1pY2FsbHkgbGluayB0byByZWdleCwKLS8vIGlmIHRoZSBydW50aW1lIGxpYnJhcnkgaXMgYWxzbyBhIGRsbCAoUHJvYmFibHkgV2luMzIgc3BlY2lmaWMsCi0vLyBhbmQgaGFzIG5vIGVmZmVjdCB1bmxlc3MgTkROQk9PU1RfUkVHRVhfSEFTX0RMTF9SVU5USU1FIGlzIHNldCk6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0RZTl9MSU5LCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSBkb24ndCB3YW50IHRoZSBsaWIgdG8gYXV0b21hdGljYWxseQotLy8gc2VsZWN0IGl0cyBsaW5rIGxpYnJhcmllczoKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fTElCCi0KLS8vIGRlZmluZSB0aGlzIGlmIHRlbXBsYXRlcyB3aXRoIHN3aXRjaCBzdGF0ZW1lbnRzIGNhdXNlIHByb2JsZW1zOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19URU1QTEFURV9TV0lUQ0hfTUVSR0UKLSAKLS8vIGRlZmluZSB0aGlzIHRvIGRpc2FibGUgV2luMzIgc3VwcG9ydCB3aGVuIGF2YWlsYWJsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVzMyCi0KLS8vIGRlZmluZSB0aGlzIGlmIGJvb2wgaXMgbm90IGEgcmVhbCB0eXBlOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19CT09MCi0KLS8vIGRlZmluZSB0aGlzIGlmIG5vIHRlbXBsYXRlIGluc3RhbmNlcyBhcmUgdG8gYmUgcGxhY2VkIGluCi0vLyB0aGUgbGlicmFyeSByYXRoZXIgdGhhbiB1c2VycyBvYmplY3QgZmlsZXM6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotCi0vLyBkZWZpbmUgdGhpcyBpZiB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgaW4gcmVnZXhfZndkLmhwcAotLy8gY2F1c2UgbW9yZSBwcm9ibGVtcyB0aGFuIHRoZXkgYXJlIHdvcnRoOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19GV0QKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91ciBjb21waWxlciBzdXBwb3J0cyBNUyBXaW5kb3dzIHN0cnVjdHVyZWQKLS8vIGV4Y2VwdGlvbiBoYW5kbGluZy4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobQotLy8gZXZlbiBpZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQgaXMgbm90IGRlZmluZWQuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRQotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIG5vbi1yZWN1cnNpdmUKLS8vIGFsZ29yaXRobSwgZXZlbiBpZiB0aGUgcmVjdXJzaXZlIHZlcnNpb24gd291bGQgYmUgdGhlIGRlZmF1bHQuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gc2V0IHRoZSBzaXplIG9mIHRoZSBtZW1vcnkgYmxvY2tzCi0vLyB1c2VkIGJ5IHRoZSBub24tcmVjdXJzaXZlIGFsZ29yaXRobS4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFIDQwOTYKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gc2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZW1vcnkgYmxvY2tzCi0vLyB1c2VkIGJ5IHRoZSBub24tcmVjdXJzaXZlIGFsZ29yaXRobS4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUyAxMDI0Ci0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgbWVtb3J5IGJsb2NrcwotLy8gY2FjaGVkIGJ5IHRoZSBub24tcmVjdXJzaXZlIGFsZ29yaXRobTogTm9ybWFsbHkgdGhpcyBpcyAxNiwgYnV0IGNhbiBiZSAKLS8vIGhpZ2hlciBpZiB5b3UgaGF2ZSBtdWx0aXBsZSB0aHJlYWRzIGFsbCB1c2luZyBib29zdC5yZWdleCwgb3IgbG93ZXIgCi0vLyBpZiB5b3UgZG9uJ3Qgd2FudCBib29zdC5yZWdleCB0byBjYWNoZSBtZW1vcnkuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BWF9DQUNIRV9CTE9DS1MgMTYKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgZXh0ZW5kZWQgY2FwdHVyZQotLy8gaW5mb3JtYXRpb24gaW4geW91ciBzdWJfbWF0Y2gncyAoY2F1dGlvbiB0aGlzIHdpbGwgc2xvdyB0aGluZ3MKLS8vIGRvd24gcXVpdGUgYSBiaXQpLgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVW5pY29kZSB2aWEgSUNVLgotLy8gI2RlZmluZSBORE5CT09TVF9IQVNfSUNVCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHJlZ2V4IHRvIHVzZSBfX2NkZWNsIGNhbGxpbmcgY29udmVuc2lvbnMsIGV2ZW4gd2hlbiBfX2Zhc3RjYWxsIGlzIGF2YWlsYWJsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRkFTVENBTEwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZTRlYTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3ODIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCBKb2huIE1hZGRvY2sKLSAqIENvcHlyaWdodCAyMDExIEdhcm1pbiBMdGQuIG9yIGl0cyBzdWJzaWRpYXJpZXMKLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0gKiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgYmFzaWNfcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19yZWdleC4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2guaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSA0MjMxIDQ4MDApCi0jaWYgTkROQk9PU1RfTVNWQyA8IDE2MDAKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDY2MCkKLSNlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uLCB3ZSB3aWxsIG5lZWQgdGhpcyBvbmUgbGF0ZXI6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9wYXJzZXI7Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotdm9pZCBidWJibGVfZG93bl9vbmUoSSBmaXJzdCwgSSBsYXN0KQotewotICAgaWYoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIEkgbmV4dCA9IGxhc3QgLSAxOwotICAgICAgd2hpbGUoKG5leHQgIT0gZmlyc3QpICYmICgqbmV4dCA8ICoobmV4dC0xKSkpCi0gICAgICB7Ci0gICAgICAgICAobmV4dC0xKS0+c3dhcCgqbmV4dCk7Ci0gICAgICAgICAtLW5leHQ7Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLWlubGluZSBpbnQgaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShJdGVyYXRvciBpLCBJdGVyYXRvciBqKQotewotICAgc3RkOjpzaXplX3QgciA9IG5kbmJvb3N0OjpoYXNoX3JhbmdlKGksIGopOwotICAgciAlPSAoKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KSgpIC0gMTAwMDEpOwotICAgciArPSAxMDAwMDsKLSAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHIpOwotfQotCi1jbGFzcyBuYW1lZF9zdWJleHByZXNzaW9ucwotewotcHVibGljOgotICAgc3RydWN0IG5hbWUKLSAgIHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgICAgIG5hbWUoY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqLCBpbnQgaWR4KQotICAgICAgICAgOiBpbmRleChpZHgpIAotICAgICAgeyAKLSAgICAgICAgIGhhc2ggPSBoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKGksIGopOyAKLSAgICAgIH0KLSAgICAgIG5hbWUoaW50IGgsIGludCBpZHgpCi0gICAgICAgICA6IGluZGV4KGlkeCksIGhhc2goaCkKLSAgICAgIHsgCi0gICAgICB9Ci0gICAgICBpbnQgaW5kZXg7Ci0gICAgICBpbnQgaGFzaDsKLSAgICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgbmFtZSYgb3RoZXIpY29uc3QKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBoYXNoIDwgb3RoZXIuaGFzaDsKLSAgICAgIH0KLSAgICAgIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IG5hbWUmIG90aGVyKWNvbnN0Ci0gICAgICB7Ci0gICAgICAgICByZXR1cm4gaGFzaCA9PSBvdGhlci5oYXNoOyAKLSAgICAgIH0KLSAgICAgIHZvaWQgc3dhcChuYW1lJiBvdGhlcikKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c3dhcChpbmRleCwgb3RoZXIuaW5kZXgpOwotICAgICAgICAgc3RkOjpzd2FwKGhhc2gsIG90aGVyLmhhc2gpOwotICAgICAgfQotICAgfTsKLQotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxuYW1lPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IHJhbmdlX3R5cGU7Ci0KLSAgIG5hbWVkX3N1YmV4cHJlc3Npb25zKCl7fQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICB2b2lkIHNldF9uYW1lKGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogaiwgaW50IGluZGV4KQotICAgewotICAgICAgbV9zdWJfbmFtZXMucHVzaF9iYWNrKG5hbWUoaSwgaiwgaW5kZXgpKTsKLSAgICAgIGJ1YmJsZV9kb3duX29uZShtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBpbnQgZ2V0X2lkKGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogailjb25zdAotICAgewotICAgICAgbmFtZSB0KGksIGosIDApOwotICAgICAgdHlwZW5hbWUgc3RkOjp2ZWN0b3I8bmFtZT46OmNvbnN0X2l0ZXJhdG9yIHBvcyA9IHN0ZDo6bG93ZXJfYm91bmQobV9zdWJfbmFtZXMuYmVnaW4oKSwgbV9zdWJfbmFtZXMuZW5kKCksIHQpOwotICAgICAgaWYoKHBvcyAhPSBtX3N1Yl9uYW1lcy5lbmQoKSkgJiYgKCpwb3MgPT0gdCkpCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gcG9zLT5pbmRleDsKLSAgICAgIH0KLSAgICAgIHJldHVybiAtMTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIHJhbmdlX3R5cGUgZXF1YWxfcmFuZ2UoY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqKWNvbnN0Ci0gICB7Ci0gICAgICBuYW1lIHQoaSwgaiwgMCk7Ci0gICAgICByZXR1cm4gc3RkOjplcXVhbF9yYW5nZShtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSwgdCk7Ci0gICB9Ci0gICBpbnQgZ2V0X2lkKGludCBoKWNvbnN0Ci0gICB7Ci0gICAgICBuYW1lIHQoaCwgMCk7Ci0gICAgICBzdGQ6OnZlY3RvcjxuYW1lPjo6Y29uc3RfaXRlcmF0b3IgcG9zID0gc3RkOjpsb3dlcl9ib3VuZChtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSwgdCk7Ci0gICAgICBpZigocG9zICE9IG1fc3ViX25hbWVzLmVuZCgpKSAmJiAoKnBvcyA9PSB0KSkKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBwb3MtPmluZGV4OwotICAgICAgfQotICAgICAgcmV0dXJuIC0xOwotICAgfQotICAgcmFuZ2VfdHlwZSBlcXVhbF9yYW5nZShpbnQgaCljb25zdAotICAgewotICAgICAgbmFtZSB0KGgsIDApOwotICAgICAgcmV0dXJuIHN0ZDo6ZXF1YWxfcmFuZ2UobV9zdWJfbmFtZXMuYmVnaW4oKSwgbV9zdWJfbmFtZXMuZW5kKCksIHQpOwotICAgfQotcHJpdmF0ZToKLSAgIHN0ZDo6dmVjdG9yPG5hbWU+IG1fc3ViX25hbWVzOwotfTsKLQotLy8KLS8vIGNsYXNzIHJlZ2V4X2RhdGE6Ci0vLyByZXByZXNlbnRzIHRoZSBkYXRhIHdlIHdpc2ggdG8gZXhwb3NlIHRvIHRoZSBtYXRjaGluZyBhbGdvcml0aG1zLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotc3RydWN0IHJlZ2V4X2RhdGEgOiBwdWJsaWMgbmFtZWRfc3ViZXhwcmVzc2lvbnMKLXsKLSAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgICBmbGFnX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOyAgCi0KLSAgIHJlZ2V4X2RhdGEoY29uc3QgOjpuZG5ib29zdDo6c2hhcmVkX3B0cjwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4gPiYgdCkgCi0gICAgICA6IG1fcHRyYWl0cyh0KSwgbV9leHByZXNzaW9uKDApLCBtX2V4cHJlc3Npb25fbGVuKDApIHt9Ci0gICByZWdleF9kYXRhKCkgCi0gICAgICA6IG1fcHRyYWl0cyhuZXcgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPigpKSwgbV9leHByZXNzaW9uKDApLCBtX2V4cHJlc3Npb25fbGVuKDApIHt9Ci0KLSAgIDo6bmRuYm9vc3Q6OnNoYXJlZF9wdHI8Ci0gICAgICA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+Ci0gICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgbV9wdHJhaXRzOyAgICAgICAgICAgICAgICAgLy8gdHJhaXRzIGNsYXNzIGluc3RhbmNlCi0gICBmbGFnX3R5cGUgICAgICAgICAgICAgICAgICAgbV9mbGFnczsgICAgICAgICAgICAgICAgICAgLy8gZmxhZ3Mgd2l0aCB3aGljaCB3ZSB3ZXJlIGNvbXBpbGVkCi0gICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXM7ICAgICAgICAgICAgICAgICAgLy8gZXJyb3IgY29kZSAoMCBpbXBsaWVzIE9LKS4KLSAgIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb247ICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbgotICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgIG1fZXhwcmVzc2lvbl9sZW47ICAgICAgICAgIC8vIHRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIGV4cHJlc3Npb24KLSAgIHNpemVfdHlwZSAgICAgICAgICAgICAgICAgICBtX21hcmtfY291bnQ7ICAgICAgICAgICAgICAvLyB0aGUgbnVtYmVyIG9mIG1hcmtlZCBzdWItZXhwcmVzc2lvbnMKLSAgIHJlX2RldGFpbDo6cmVfc3ludGF4X2Jhc2UqICBtX2ZpcnN0X3N0YXRlOyAgICAgICAgICAgICAvLyB0aGUgZmlyc3Qgc3RhdGUgb2YgdGhlIG1hY2hpbmUKLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICBtX3Jlc3RhcnRfdHlwZTsgICAgICAgICAgICAvLyBzZWFyY2ggb3B0aW1pc2F0aW9uIHR5cGUKLSAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICBtX3N0YXJ0bWFwWzEgPDwgQ0hBUl9CSVRdOyAvLyB3aGljaCBjaGFyYWN0ZXJzIGNhbiBzdGFydCBhIG1hdGNoCi0gICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgbV9jYW5fYmVfbnVsbDsgICAgICAgICAgICAgLy8gd2hldGhlciB3ZSBjYW4gbWF0Y2ggYSBudWxsIHN0cmluZwotICAgcmVfZGV0YWlsOjpyYXdfc3RvcmFnZSAgICAgIG1fZGF0YTsgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBidWZmZXIgaW4gd2hpY2ggb3VyIHN0YXRlcyBhcmUgY29uc3RydWN0ZWQKLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlICAgIG1fd29yZF9tYXNrOyAgICAgICAvLyBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIHN0ZDo6dmVjdG9yPAotICAgICAgc3RkOjpwYWlyPAotICAgICAgc3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PiA+IG1fc3ViczsgICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9uIG9mIHN1Yi1leHByZXNzaW9ucyB3aXRoaW4gdGhlICpzdHJpbmcqLgotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzX3JlY3Vyc2lvbnM7ICAgICAgICAgIC8vIHdoZXRoZXIgd2UgaGF2ZSByZWN1cnNpdmUgZXhwcmVzc2lvbnM7Ci19OwotLy8KLS8vIGNsYXNzIGJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uCi0vLyBwaW1wbCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgYmFzaWNfcmVnZXguCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbgotICAgOiBwdWJsaWMgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPgotewotcHVibGljOgotICAgdHlwZWRlZiByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSAgIGZsYWdfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpsb2NhbGVfdHlwZSAgICAgICAgICBsb2NhbGVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLQotICAgYmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb24oKXt9Ci0gICBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbihjb25zdCA6Om5kbmJvb3N0OjpzaGFyZWRfcHRyPAotICAgICAgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPiA+JiB0KQotICAgICAgOiByZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KHQpIHt9Ci0gICB2b2lkIGFzc2lnbihjb25zdCBjaGFyVCogYXJnX2ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogYXJnX2xhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmKQotICAgewotICAgICAgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogcGRhdCA9IHRoaXM7Ci0gICAgICBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz4gcGFyc2VyKHBkYXQpOwotICAgICAgcGFyc2VyLnBhcnNlKGFyZ19maXJzdCwgYXJnX2xhc3QsIGYpOwotICAgfQotCi0gICBsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7IAotICAgICAgcmV0dXJuIHRoaXMtPm1fcHRyYWl0cy0+aW1idWUobCk7IAotICAgfQotICAgbG9jYWxlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRsb2MoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIHRoaXMtPm1fcHRyYWl0cy0+Z2V0bG9jKCk7IAotICAgfQotICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IE5ETkJPT1NUX1JFR0VYX0NBTEwgc3RyKCljb25zdAotICAgewotICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlc3VsdDsKLSAgICAgIGlmKHRoaXMtPm1fc3RhdHVzID09IDApCi0gICAgICAgICByZXN1bHQgPSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4odGhpcy0+bV9leHByZXNzaW9uLCB0aGlzLT5tX2V4cHJlc3Npb25fbGVuKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGV4cHJlc3Npb24oKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9leHByZXNzaW9uOwotICAgfQotICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gTkROQk9PU1RfUkVHRVhfQ0FMTCBzdWJleHByZXNzaW9uKHN0ZDo6c2l6ZV90IG4pY29uc3QKLSAgIHsKLSAgICAgIGlmKG4gPT0gMCkKLSAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpvdXRfb2ZfcmFuZ2UoIjAgaXMgbm90IGEgdmFsaWQgc3ViZXhwcmVzc2lvbiBpbmRleC4iKSk7Ci0gICAgICBjb25zdCBzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PiYgcGkgPSB0aGlzLT5tX3N1YnMuYXQobiAtIDEpOwotICAgICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gcChleHByZXNzaW9uKCkgKyBwaS5maXJzdCwgZXhwcmVzc2lvbigpICsgcGkuc2Vjb25kKTsKLSAgICAgIHJldHVybiBwOwotICAgfQotICAgLy8KLSAgIC8vIGJlZ2luLCBlbmQ6Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGJlZ2luKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAodGhpcy0+bV9zdGF0dXMgPyAwIDogdGhpcy0+bV9leHByZXNzaW9uKTsgCi0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGVuZCgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKHRoaXMtPm1fc3RhdHVzID8gMCA6IHRoaXMtPm1fZXhwcmVzc2lvbiArIHRoaXMtPm1fZXhwcmVzc2lvbl9sZW4pOyAKLSAgIH0KLSAgIGZsYWdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGZsYWdzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fZmxhZ3M7Ci0gICB9Ci0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBzaXplKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fZXhwcmVzc2lvbl9sZW47Ci0gICB9Ci0gICBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzdGF0dXMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9zdGF0dXM7Ci0gICB9Ci0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBtYXJrX2NvdW50KCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fbWFya19jb3VudDsKLSAgIH0KLSAgIGNvbnN0IHJlX2RldGFpbDo6cmVfc3ludGF4X2Jhc2UqIGdldF9maXJzdF9zdGF0ZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX2ZpcnN0X3N0YXRlOwotICAgfQotICAgdW5zaWduZWQgZ2V0X3Jlc3RhcnRfdHlwZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3Jlc3RhcnRfdHlwZTsKLSAgIH0KLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGdldF9tYXAoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9zdGFydG1hcDsKLSAgIH0KLSAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4mIGdldF90cmFpdHMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKih0aGlzLT5tX3B0cmFpdHMpOwotICAgfQotICAgYm9vbCBjYW5fYmVfbnVsbCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX2Nhbl9iZV9udWxsOwotICAgfQotICAgY29uc3QgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiYgZ2V0X2RhdGEoKWNvbnN0Ci0gICB7Ci0gICAgICBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiBjb25zdCogcCA9IHRoaXM7Ci0gICAgICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qPihwKTsKLSAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotLy8KLS8vIGNsYXNzIGJhc2ljX3JlZ2V4OgotLy8gcmVwcmVzZW50cyB0aGUgY29tcGlsZWQKLS8vIHJlZ3VsYXIgZXhwcmVzc2lvbjoKLS8vCi0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT19GV0QKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID0gcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPgotI2VuZGlmCi1jbGFzcyBiYXNpY19yZWdleCA6IHB1YmxpYyByZWdiYXNlCi17Ci1wdWJsaWM6Ci0gICAvLyB0eXBlZGVmczoKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfc2l6ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlICAgICAgICAgIHRyYWl0c19zdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHRyYWl0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0KLSAgIHR5cGVkZWYgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBjaGFyVCYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhclQmICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICB0eXBlZGVmIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsgICAKLSAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgICBmbGFnX3R5cGU7Ci0gICAvLyBsb2NhbGVfdHlwZQotICAgLy8gcGxhY2Vob2xkZXIgZm9yIGFjdHVhbCBsb2NhbGUgdHlwZSB1c2VkIGJ5IHRoZQotICAgLy8gdHJhaXRzIGNsYXNzIHRvIGxvY2FsaXNlICp0aGlzLgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmxvY2FsZV90eXBlICAgICAgICAgIGxvY2FsZV90eXBlOwotICAgCi1wdWJsaWM6Ci0gICBleHBsaWNpdCBiYXNpY19yZWdleCgpe30KLSAgIGV4cGxpY2l0IGJhc2ljX3JlZ2V4KGNvbnN0IGNoYXJUKiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgYXNzaWduKHAsIGYpOwotICAgfQotICAgYmFzaWNfcmVnZXgoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICBhc3NpZ24ocDEsIHAyLCBmKTsKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4KGNvbnN0IGNoYXJUKiBwLCBzaXplX3R5cGUgbGVuLCBmbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIGFzc2lnbihwLCBsZW4sIGYpOwotICAgfQotICAgYmFzaWNfcmVnZXgoY29uc3QgYmFzaWNfcmVnZXgmIHRoYXQpCi0gICAgICA6IG1fcGltcGwodGhhdC5tX3BpbXBsKSB7fQotICAgfmJhc2ljX3JlZ2V4KCl7fQotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3JlZ2V4JiB0aGF0KQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbih0aGF0KTsKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBjaGFyVCogcHRyKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihwdHIpOwotICAgfQotCi0gICAvLwotICAgLy8gYXNzaWduOgotICAgYmFzaWNfcmVnZXgmIGFzc2lnbihjb25zdCBiYXNpY19yZWdleCYgdGhhdCkKLSAgIHsgCi0gICAgICBtX3BpbXBsID0gdGhhdC5tX3BpbXBsOwotICAgICAgcmV0dXJuICp0aGlzOyAKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4JiBhc3NpZ24oY29uc3QgY2hhclQqIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHAsIHAgKyB0cmFpdHM6Omxlbmd0aChwKSwgZik7Ci0gICB9Ci0gICBiYXNpY19yZWdleCYgYXNzaWduKGNvbnN0IGNoYXJUKiBwLCBzaXplX3R5cGUgbGVuLCBmbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocCwgcCArIGxlbiwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgYmFzaWNfcmVnZXgmIGRvX2Fzc2lnbihjb25zdCBjaGFyVCogcDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGYpOwotcHVibGljOgotICAgYmFzaWNfcmVnZXgmIGFzc2lnbihjb25zdCBjaGFyVCogcDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHJldHVybiBkb19hc3NpZ24ocDEsIHAyLCBmKTsKLSAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgdW5zaWduZWQgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2V4cHJlc3Npb24oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7IAotICAgICAgcmV0dXJuIHNldF9leHByZXNzaW9uKHAuZGF0YSgpLCBwLmRhdGEoKSArIHAuc2l6ZSgpLCBmKTsgCi0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0E+Ci0gICBleHBsaWNpdCBiYXNpY19yZWdleChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsgCi0gICAgICBhc3NpZ24ocCwgZik7IAotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgIGJhc2ljX3JlZ2V4KElucHV0SXRlcmF0b3IgYXJnX2ZpcnN0LCBJbnB1dEl0ZXJhdG9yIGFyZ19sYXN0LCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlIHNlcV90eXBlOwotICAgICAgc2VxX3R5cGUgYShhcmdfZmlyc3QsIGFyZ19sYXN0KTsKLSAgICAgIGlmKGEuc2l6ZSgpKQotICAgICAgICAgYXNzaWduKHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oJiphLmJlZ2luKCkpLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KCYqYS5iZWdpbigpICsgYS5zaXplKCkpLCBmKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIGFzc2lnbihzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KDApLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KDApLCBmKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQT4KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocC5kYXRhKCksIHAuZGF0YSgpICsgcC5zaXplKCksIHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIHN0cmluZ190cmFpdHMsIGNsYXNzIEE+Ci0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBhc3NpZ24oCi0gICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIHN0cmluZ190cmFpdHMsIEE+JiBzLAotICAgICAgIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHMuZGF0YSgpLCBzLmRhdGEoKSArIHMuc2l6ZSgpLCBmKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBhc3NpZ24oSW5wdXRJdGVyYXRvciBhcmdfZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgYXJnX2xhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgc2VxX3R5cGU7Ci0gICAgICBzZXFfdHlwZSBhKGFyZ19maXJzdCwgYXJnX2xhc3QpOwotICAgICAgaWYoYS5zaXplKCkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyVCogcDEgPSAmKmEuYmVnaW4oKTsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBwMiA9ICYqYS5iZWdpbigpICsgYS5zaXplKCk7Ci0gICAgICAgICByZXR1cm4gYXNzaWduKHAxLCBwMiwgZik7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gYXNzaWduKHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oMCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oMCksIGYpOwotICAgfQotI2Vsc2UKLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9leHByZXNzaW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsgCi0gICAgICByZXR1cm4gc2V0X2V4cHJlc3Npb24ocC5kYXRhKCksIHAuZGF0YSgpICsgcC5zaXplKCksIGYpOyAKLSAgIH0KLQotICAgYmFzaWNfcmVnZXgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgeyAKLSAgICAgIGFzc2lnbihwLCBmKTsgCi0gICB9Ci0KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHApCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHAuZGF0YSgpLCBwLmRhdGEoKSArIHAuc2l6ZSgpLCByZWdleF9jb25zdGFudHM6Om5vcm1hbCk7Ci0gICB9Ci0KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIGFzc2lnbigKLSAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocy5kYXRhKCksIHMuZGF0YSgpICsgcy5zaXplKCksIGYpOwotICAgfQotCi0jZW5kaWYKLQotICAgLy8KLSAgIC8vIGxvY2FsZToKLSAgIGxvY2FsZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgaW1idWUobG9jYWxlX3R5cGUgbCk7Ci0gICBsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldGxvYygpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gbV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPmdldGxvYygpIDogbG9jYWxlX3R5cGUoKTsgCi0gICB9Ci0gICAvLwotICAgLy8gZ2V0ZmxhZ3M6Ci0gICAvLyByZXRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seSwgImZsYWdzIgotICAgLy8gaXMgbm93IHRoZSBwcmVmZXJyZWQgbmFtZToKLSAgIGZsYWdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldGZsYWdzKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBmbGFncygpOwotICAgfQotICAgZmxhZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZmxhZ3MoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5mbGFncygpIDogMDsKLSAgIH0KLSAgIC8vCi0gICAvLyBzdHI6Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gTkROQk9PU1RfUkVHRVhfQ0FMTCBzdHIoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPnN0cigpIDogc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+KCk7Ci0gICB9Ci0gICAvLwotICAgLy8gYmVnaW4sIGVuZCwgc3ViZXhwcmVzc2lvbjoKLSAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IE5ETkJPT1NUX1JFR0VYX0NBTEwgc3ViZXhwcmVzc2lvbihzdGQ6OnNpemVfdCBuKWNvbnN0Ci0gICB7Ci0gICAgICBpZighbV9waW1wbC5nZXQoKSkKLSAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpsb2dpY19lcnJvcigiQ2FuJ3QgYWNjZXNzIHN1YmV4cHJlc3Npb25zIGluIGFuIGludmFsaWQgcmVnZXguIikpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPnN1YmV4cHJlc3Npb24obik7Ci0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGJlZ2luKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPmJlZ2luKCkgOiAwKTsgCi0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGVuZCgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5lbmQoKSA6IDApOyAKLSAgIH0KLSAgIC8vCi0gICAvLyBzd2FwOgotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHN3YXAoYmFzaWNfcmVnZXgmIHRoYXQpdGhyb3coKQotICAgewotICAgICAgbV9waW1wbC5zd2FwKHRoYXQubV9waW1wbCk7Ci0gICB9Ci0gICAvLwotICAgLy8gc2l6ZToKLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHNpemUoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+c2l6ZSgpIDogMCk7IAotICAgfQotICAgLy8KLSAgIC8vIG1heF9zaXplOgotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbWF4X3NpemUoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIFVJTlRfTUFYOyAKLSAgIH0KLSAgIC8vCi0gICAvLyBlbXB0eToKLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBlbXB0eSgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyAwICE9IG1fcGltcGwtPnN0YXR1cygpIDogdHJ1ZSk7IAotICAgfQotCi0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBtYXJrX2NvdW50KCljb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5tYXJrX2NvdW50KCkgOiAwKTsgCi0gICB9Ci0KLSAgIGludCBzdGF0dXMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5zdGF0dXMoKSA6IHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZW1wdHkpOwotICAgfQotCi0gICBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBjb21wYXJlKGNvbnN0IGJhc2ljX3JlZ2V4JiB0aGF0KSBjb25zdAotICAgewotICAgICAgaWYobV9waW1wbC5nZXQoKSA9PSB0aGF0Lm1fcGltcGwuZ2V0KCkpCi0gICAgICAgICByZXR1cm4gMDsKLSAgICAgIGlmKCFtX3BpbXBsLmdldCgpKQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgaWYoIXRoYXQubV9waW1wbC5nZXQoKSkKLSAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYoc3RhdHVzKCkgIT0gdGhhdC5zdGF0dXMoKSkKLSAgICAgICAgIHJldHVybiBzdGF0dXMoKSAtIHRoYXQuc3RhdHVzKCk7Ci0gICAgICBpZihmbGFncygpICE9IHRoYXQuZmxhZ3MoKSkKLSAgICAgICAgIHJldHVybiBmbGFncygpIC0gdGhhdC5mbGFncygpOwotICAgICAgcmV0dXJuIHN0cigpLmNvbXBhcmUodGhhdC5zdHIoKSk7Ci0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9PShjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpID09IDA7IAotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yICE9IChjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpICE9IDA7IAotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPChjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpIDwgMDsgCi0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I+KGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgPiAwOyAKLSAgIH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcjw9KGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgPD0gMDsgCi0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I+PShjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpID49IDA7IAotICAgfQotCi0gICAvLwotICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVwcmVjYXRlZCBhcyBwdWJsaWMgaW50ZXJmYWNlcwotICAgLy8gYnV0IGFyZSBhdmFpbGFibGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zLgotICAgY29uc3QgY2hhclQqIE5ETkJPT1NUX1JFR0VYX0NBTEwgZXhwcmVzc2lvbigpY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpICYmICFtX3BpbXBsLT5zdGF0dXMoKSA/IG1fcGltcGwtPmV4cHJlc3Npb24oKSA6IDApOyAKLSAgIH0KLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9leHByZXNzaW9uKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgYXNzaWduKHAxLCBwMiwgZiB8IHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KTsKLSAgICAgIHJldHVybiBzdGF0dXMoKTsKLSAgIH0KLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9leHByZXNzaW9uKGNvbnN0IGNoYXJUKiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKSAKLSAgIHsgCi0gICAgICBhc3NpZ24ocCwgZiB8IHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KTsgCi0gICAgICByZXR1cm4gc3RhdHVzKCk7Ci0gICB9Ci0gICB1bnNpZ25lZCBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBlcnJvcl9jb2RlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0YXR1cygpOwotICAgfQotICAgLy8KLSAgIC8vIHByaXZhdGUgYWNjZXNzIG1ldGhvZHM6Ci0gICAvLwotICAgY29uc3QgcmVfZGV0YWlsOjpyZV9zeW50YXhfYmFzZSogZ2V0X2ZpcnN0X3N0YXRlKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Z2V0X2ZpcnN0X3N0YXRlKCk7Ci0gICB9Ci0gICB1bnNpZ25lZCBnZXRfcmVzdGFydF90eXBlKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Z2V0X3Jlc3RhcnRfdHlwZSgpOwotICAgfQotICAgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0X21hcCgpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwICE9IG1fcGltcGwuZ2V0KCkpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPmdldF9tYXAoKTsKLSAgIH0KLSAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4mIGdldF90cmFpdHMoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5nZXRfdHJhaXRzKCk7Ci0gICB9Ci0gICBib29sIGNhbl9iZV9udWxsKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Y2FuX2JlX251bGwoKTsKLSAgIH0KLSAgIGNvbnN0IHJlX2RldGFpbDo6cmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiYgZ2V0X2RhdGEoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5nZXRfZGF0YSgpOwotICAgfQotICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8cmVfZGV0YWlsOjpuYW1lZF9zdWJleHByZXNzaW9ucyA+IGdldF9uYW1lZF9zdWJzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGw7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPiBtX3BpbXBsOwotfTsKLQotLy8KLS8vIG91dCBvZiBsaW5lIG1lbWJlcnM7Ci0vLyB0aGVzZSBhcmUgdGhlIG9ubHkgbWVtYmVycyB0aGF0IG11dGF0ZSB0aGUgYmFzaWNfcmVnZXggb2JqZWN0LAotLy8gYW5kIGFyZSBkZXNpZ25lZCB0byBwcm92aWRlIHRoZSBzdHJvbmcgZXhjZXB0aW9uIGd1YXJlbnRlZQotLy8gKGluIHRoZSBldmVudCBvZiBhIHRocm93LCB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdCByZW1haW5zIHVuY2hhbmdlZCkuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1iYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz46OmRvX2Fzc2lnbihjb25zdCBjaGFyVCogcDEsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogcDIsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZikKLXsKLSAgIHNoYXJlZF9wdHI8cmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiA+IHRlbXA7Ci0gICBpZighbV9waW1wbC5nZXQoKSkKLSAgIHsKLSAgICAgIHRlbXAgPSBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPihuZXcgcmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPigpKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRlbXAgPSBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPihuZXcgcmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPihtX3BpbXBsLT5tX3B0cmFpdHMpKTsKLSAgIH0KLSAgIHRlbXAtPmFzc2lnbihwMSwgcDIsIGYpOwotICAgdGVtcC5zd2FwKG1fcGltcGwpOwotICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXR5cGVuYW1lIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+Ojpsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+OjppbWJ1ZShsb2NhbGVfdHlwZSBsKQoteyAKLSAgIHNoYXJlZF9wdHI8cmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiA+IHRlbXAobmV3IHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4oKSk7Ci0gICBsb2NhbGVfdHlwZSByZXN1bHQgPSB0ZW1wLT5pbWJ1ZShsKTsKLSAgIHRlbXAuc3dhcChtX3BpbXBsKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBub24tbWVtYmVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgc3dhcChiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZTEsIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlMikKLXsKLSAgIGUxLnN3YXAoZTIpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyB0cmFpdHMyPgotc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JiAKLSAgIG9wZXJhdG9yIDw8IChzdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mIG9zLCAKLSAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzMj4mIGUpCi17Ci0gICByZXR1cm4gKG9zIDw8IGUuc3RyKCkpOwotfQotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHM+Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8IChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBiYXNpY19yZWdleDxjaGFyLCB0cmFpdHM+JiBlKQotewotICAgcmV0dXJuIChvcyA8PCBlLnN0cigpKTsKLX0KLSNlbmRpZgotCi0vLwotLy8gY2xhc3MgcmVnX2V4cHJlc3Npb246Ci0vLyB0aGlzIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvbmx5LAotLy8gaXQgaXMgZGVwcmVjYXRlZCwgbm8gbm90IHVzZSEKLS8vCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fRldECi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cyA9IHJlZ2V4X3RyYWl0czxjaGFyVD4gPgotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID4KLSNlbmRpZgotY2xhc3MgcmVnX2V4cHJlc3Npb24gOiBwdWJsaWMgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz46OmZsYWdfdHlwZSBmbGFnX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+OjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgZXhwbGljaXQgcmVnX2V4cHJlc3Npb24oKXt9Ci0gICBleHBsaWNpdCByZWdfZXhwcmVzc2lvbihjb25zdCBjaGFyVCogcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgICAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4ocCwgZil7fQotICAgcmVnX2V4cHJlc3Npb24oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICAgICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHAxLCBwMiwgZil7fQotICAgcmVnX2V4cHJlc3Npb24oY29uc3QgY2hhclQqIHAsIHNpemVfdHlwZSBsZW4sIGZsYWdfdHlwZSBmKQotICAgICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihwLCBsZW4sIGYpe30KLSAgIHJlZ19leHByZXNzaW9uKGNvbnN0IHJlZ19leHByZXNzaW9uJiB0aGF0KQotICAgICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPih0aGF0KSB7fQotICAgfnJlZ19leHByZXNzaW9uKCl7fQotICAgcmVnX2V4cHJlc3Npb24mIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IHJlZ19leHByZXNzaW9uJiB0aGF0KQotICAgewotICAgICAgcmV0dXJuIHRoaXMtPmFzc2lnbih0aGF0KTsKLSAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgZXhwbGljaXQgcmVnX2V4cHJlc3Npb24oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHAsIGYpCi0gICB7IAotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgIHJlZ19leHByZXNzaW9uKElucHV0SXRlcmF0b3IgYXJnX2ZpcnN0LCBJbnB1dEl0ZXJhdG9yIGFyZ19sYXN0LCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihhcmdfZmlyc3QsIGFyZ19sYXN0LCBmKQotICAgewotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgcmVnX2V4cHJlc3Npb24mIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwKQotICAgewotICAgICAgdGhpcy0+YXNzaWduKHApOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotI2Vsc2UKLSAgIGV4cGxpY2l0IHJlZ19leHByZXNzaW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4ocCwgZikKLSAgIHsgCi0gICB9Ci0KLSAgIHJlZ19leHByZXNzaW9uJiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHApCi0gICB7Ci0gICAgICB0aGlzLT5hc3NpZ24ocCk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0jZW5kaWYKLQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfY3JlYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X2NyZWF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGIwNGU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfY3JlYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgYmFzaWNfcmVnZXhfY3JlYXRvci5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3JlZ2V4X2NyZWF0b3Igd2hpY2ggZmlsbHMgaW4KLSAgKiAgICAgICAgICAgICAgICB0aGUgZGF0YSBtZW1iZXJzIG9mIGEgcmVnZXhfZGF0YSBvYmplY3QuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfQ1JFQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfQ1JFQVRPUl9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgZGlncmFwaCA6IHB1YmxpYyBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPgotewotICAgZGlncmFwaCgpIDogc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4oMCwgMCl7fQotICAgZGlncmFwaChjaGFyVCBjMSkgOiBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPihjMSwgMCl7fQotICAgZGlncmFwaChjaGFyVCBjMSwgY2hhclQgYzIpIDogc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4oYzEsIGMyKQotICAge30KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICBkaWdyYXBoKGNvbnN0IGRpZ3JhcGg8Y2hhclQ+JiBkKSA6IHN0ZDo6cGFpcjxjaGFyVCwgY2hhclQ+KGQuZmlyc3QsIGQuc2Vjb25kKXt9Ci0jZW5kaWYKLSAgIHRlbXBsYXRlIDxjbGFzcyBTZXE+Ci0gICBkaWdyYXBoKGNvbnN0IFNlcSYgcykgOiBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPigpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQocy5zaXplKCkgPD0gMik7Ci0gICAgICBORE5CT09TVF9BU1NFUlQocy5zaXplKCkpOwotICAgICAgdGhpcy0+Zmlyc3QgPSBzWzBdOwotICAgICAgdGhpcy0+c2Vjb25kID0gKHMuc2l6ZSgpID4gMSkgPyBzWzFdIDogMDsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotY2xhc3MgYmFzaWNfY2hhcl9zZXQKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgZGlncmFwaDxjaGFyVD4gICAgICAgICAgICAgICAgICAgZGlncmFwaF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlICAgICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotCi0gICBiYXNpY19jaGFyX3NldCgpCi0gICB7Ci0gICAgICBtX25lZ2F0ZSA9IGZhbHNlOwotICAgICAgbV9oYXNfZGlncmFwaHMgPSBmYWxzZTsKLSAgICAgIG1fY2xhc3NlcyA9IDA7Ci0gICAgICBtX25lZ2F0ZWRfY2xhc3NlcyA9IDA7Ci0gICAgICBtX2VtcHR5ID0gdHJ1ZTsKLSAgIH0KLQotICAgdm9pZCBhZGRfc2luZ2xlKGNvbnN0IGRpZ3JhcGhfdHlwZSYgcykKLSAgIHsKLSAgICAgIG1fc2luZ2xlcy5pbnNlcnQobV9zaW5nbGVzLmVuZCgpLCBzKTsKLSAgICAgIGlmKHMuc2Vjb25kKQotICAgICAgICAgbV9oYXNfZGlncmFwaHMgPSB0cnVlOwotICAgICAgbV9lbXB0eSA9IGZhbHNlOwotICAgfQotICAgdm9pZCBhZGRfcmFuZ2UoY29uc3QgZGlncmFwaF90eXBlJiBmaXJzdCwgY29uc3QgZGlncmFwaF90eXBlJiBlbmQpCi0gICB7Ci0gICAgICBtX3Jhbmdlcy5pbnNlcnQobV9yYW5nZXMuZW5kKCksIGZpcnN0KTsKLSAgICAgIG1fcmFuZ2VzLmluc2VydChtX3Jhbmdlcy5lbmQoKSwgZW5kKTsKLSAgICAgIGlmKGZpcnN0LnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIG1faGFzX2RpZ3JhcGhzID0gdHJ1ZTsKLSAgICAgICAgIGFkZF9zaW5nbGUoZmlyc3QpOwotICAgICAgfQotICAgICAgaWYoZW5kLnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIG1faGFzX2RpZ3JhcGhzID0gdHJ1ZTsKLSAgICAgICAgIGFkZF9zaW5nbGUoZW5kKTsKLSAgICAgIH0KLSAgICAgIG1fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgYWRkX2NsYXNzKG1fdHlwZSBtKQotICAgewotICAgICAgbV9jbGFzc2VzIHw9IG07Ci0gICAgICBtX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIGFkZF9uZWdhdGVkX2NsYXNzKG1fdHlwZSBtKQotICAgewotICAgICAgbV9uZWdhdGVkX2NsYXNzZXMgfD0gbTsKLSAgICAgIG1fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgYWRkX2VxdWl2YWxlbnQoY29uc3QgZGlncmFwaF90eXBlJiBzKQotICAgewotICAgICAgbV9lcXVpdmFsZW50cy5pbnNlcnQobV9lcXVpdmFsZW50cy5lbmQoKSwgcyk7Ci0gICAgICBpZihzLnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIG1faGFzX2RpZ3JhcGhzID0gdHJ1ZTsKLSAgICAgICAgIGFkZF9zaW5nbGUocyk7Ci0gICAgICB9Ci0gICAgICBtX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIG5lZ2F0ZSgpCi0gICB7IAotICAgICAgbV9uZWdhdGUgPSB0cnVlOwotICAgICAgLy9tX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0KLSAgIC8vCi0gICAvLyBhY2Nlc3NvciBmdW5jdGlvbnM6Ci0gICAvLwotICAgYm9vbCBoYXNfZGlncmFwaHMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9oYXNfZGlncmFwaHM7Ci0gICB9Ci0gICBib29sIGlzX25lZ2F0ZWQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9uZWdhdGU7Ci0gICB9Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPGRpZ3JhcGhfdHlwZT46OmNvbnN0X2l0ZXJhdG9yICBsaXN0X2l0ZXJhdG9yOwotICAgbGlzdF9pdGVyYXRvciBzaW5nbGVzX2JlZ2luKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fc2luZ2xlcy5iZWdpbigpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciBzaW5nbGVzX2VuZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3NpbmdsZXMuZW5kKCk7Ci0gICB9Ci0gICBsaXN0X2l0ZXJhdG9yIHJhbmdlc19iZWdpbigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Jhbmdlcy5iZWdpbigpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciByYW5nZXNfZW5kKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcmFuZ2VzLmVuZCgpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciBlcXVpdmFsZW50c19iZWdpbigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2VxdWl2YWxlbnRzLmJlZ2luKCk7Ci0gICB9Ci0gICBsaXN0X2l0ZXJhdG9yIGVxdWl2YWxlbnRzX2VuZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2VxdWl2YWxlbnRzLmVuZCgpOwotICAgfQotICAgbV90eXBlIGNsYXNzZXMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jbGFzc2VzOwotICAgfQotICAgbV90eXBlIG5lZ2F0ZWRfY2xhc3NlcygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX25lZ2F0ZWRfY2xhc3NlczsKLSAgIH0KLSAgIGJvb2wgZW1wdHkoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9lbXB0eTsKLSAgIH0KLXByaXZhdGU6Ci0gICBzdGQ6OnZlY3RvcjxkaWdyYXBoX3R5cGU+IG1fc2luZ2xlczsgICAgICAgICAvLyBhIGxpc3Qgb2Ygc2luZ2xlIGNoYXJhY3RlcnMgdG8gbWF0Y2gKLSAgIHN0ZDo6dmVjdG9yPGRpZ3JhcGhfdHlwZT4gbV9yYW5nZXM7ICAgICAgICAgIC8vIGEgbGlzdCBvZiBlbmQgcG9pbnRzIG9mIG91ciByYW5nZXMKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgbV9uZWdhdGU7ICAgICAgICAgIC8vIHRydWUgaWYgdGhlIHNldCBpcyB0byBiZSBuZWdhdGVkCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgIG1faGFzX2RpZ3JhcGhzOyAgICAvLyB0cnVlIGlmIHdlIGhhdmUgZGlncmFwaHMgcHJlc2VudAotICAgbV90eXBlICAgICAgICAgICAgICAgICAgICBtX2NsYXNzZXM7ICAgICAgICAgLy8gY2hhcmFjdGVyIGNsYXNzZXMgdG8gbWF0Y2gKLSAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgbV9uZWdhdGVkX2NsYXNzZXM7IC8vIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzZXMgdG8gbWF0Y2gKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgbV9lbXB0eTsgICAgICAgICAgIC8vIHdoZXRoZXIgd2UndmUgYWRkZWQgYW55dGhpbmcgeWV0Ci0gICBzdGQ6OnZlY3RvcjxkaWdyYXBoX3R5cGU+IG1fZXF1aXZhbGVudHM7ICAgICAvLyBhIGxpc3Qgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcwotfTsKLSAgIAotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9jcmVhdG9yCi17Ci1wdWJsaWM6Ci0gICBiYXNpY19yZWdleF9jcmVhdG9yKHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qIGRhdGEpOwotICAgc3RkOjpwdHJkaWZmX3QgZ2V0b2Zmc2V0KHZvaWQqIGFkZHIpCi0gICB7Ci0gICAgICByZXR1cm4gZ2V0b2Zmc2V0KGFkZHIsIG1fcGRhdGEtPm1fZGF0YS5kYXRhKCkpOwotICAgfQotICAgc3RkOjpwdHJkaWZmX3QgZ2V0b2Zmc2V0KGNvbnN0IHZvaWQqIGFkZHIsIGNvbnN0IHZvaWQqIGJhc2UpCi0gICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFkZHIpIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpOwotICAgfQotICAgcmVfc3ludGF4X2Jhc2UqIGdldGFkZHJlc3Moc3RkOjpwdHJkaWZmX3Qgb2ZmKQotICAgewotICAgICAgcmV0dXJuIGdldGFkZHJlc3Mob2ZmLCBtX3BkYXRhLT5tX2RhdGEuZGF0YSgpKTsKLSAgIH0KLSAgIHJlX3N5bnRheF9iYXNlKiBnZXRhZGRyZXNzKHN0ZDo6cHRyZGlmZl90IG9mZiwgdm9pZCogYmFzZSkKLSAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxyZV9zeW50YXhfYmFzZSo+KHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZSkgKyBvZmYpKTsKLSAgIH0KLSAgIHZvaWQgaW5pdCh1bnNpZ25lZCBsX2ZsYWdzKQotICAgewotICAgICAgbV9wZGF0YS0+bV9mbGFncyA9IGxfZmxhZ3M7Ci0gICAgICBtX2ljYXNlID0gbF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6aWNhc2U7Ci0gICB9Ci0gICByZWdiYXNlOjpmbGFnX3R5cGUgZmxhZ3MoKQotICAgewotICAgICAgcmV0dXJuIG1fcGRhdGEtPm1fZmxhZ3M7Ci0gICB9Ci0gICB2b2lkIGZsYWdzKHJlZ2Jhc2U6OmZsYWdfdHlwZSBmKQotICAgewotICAgICAgbV9wZGF0YS0+bV9mbGFncyA9IGY7Ci0gICAgICBpZihtX2ljYXNlICE9IHN0YXRpY19jYXN0PGJvb2w+KGYgJiByZWdiYXNlOjppY2FzZSkpCi0gICAgICB7Ci0gICAgICAgICBtX2ljYXNlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZiAmIHJlZ2Jhc2U6OmljYXNlKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJlX3N5bnRheF9iYXNlKiBhcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdHlwZSB0LCBzdGQ6OnNpemVfdCBzID0gc2l6ZW9mKHJlX3N5bnRheF9iYXNlKSk7Ci0gICByZV9zeW50YXhfYmFzZSogaW5zZXJ0X3N0YXRlKHN0ZDo6cHRyZGlmZl90IHBvcywgc3ludGF4X2VsZW1lbnRfdHlwZSB0LCBzdGQ6OnNpemVfdCBzID0gc2l6ZW9mKHJlX3N5bnRheF9iYXNlKSk7Ci0gICByZV9saXRlcmFsKiBhcHBlbmRfbGl0ZXJhbChjaGFyVCBjKTsKLSAgIHJlX3N5bnRheF9iYXNlKiBhcHBlbmRfc2V0KGNvbnN0IGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCk7Ci0gICByZV9zeW50YXhfYmFzZSogYXBwZW5kX3NldChjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQsIG1wbDo6ZmFsc2VfKik7Ci0gICByZV9zeW50YXhfYmFzZSogYXBwZW5kX3NldChjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQsIG1wbDo6dHJ1ZV8qKTsKLSAgIHZvaWQgZmluYWxpemUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpOwotcHJvdGVjdGVkOgotICAgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogICAgbV9wZGF0YTsgICAgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gdGhlIGJhc2ljX3JlZ2V4X2RhdGEgc3RydWN0IHdlIGFyZSBmaWxsaW5nIGluCi0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+JiAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RyYWl0czsgICAgICAgICAgICAgLy8gY29udmVuaWVuY2UgcmVmZXJlbmNlIHRvIHRyYWl0cyBjbGFzcwotICAgcmVfc3ludGF4X2Jhc2UqICAgICAgICAgICAgICAgbV9sYXN0X3N0YXRlOyAgICAgICAgIC8vIHRoZSBsYXN0IHN0YXRlIHdlIGFkZGVkCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ljYXNlOyAgICAgICAgICAgICAgLy8gdHJ1ZSBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGVzCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICBtX3JlcGVhdGVyX2lkOyAgICAgICAgLy8gdGhlIHN0YXRlX2lkIG9mIHRoZSBuZXh0IHJlcGVhdGVyCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc19iYWNrcmVmczsgICAgICAgLy8gdHJ1ZSBpZiB0aGVyZSBhcmUgYWN0dWFsbHkgYW55IGJhY2tyZWZzCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICBtX2JhY2tyZWZzOyAgICAgICAgICAgLy8gYml0bWFzayBvZiBwZXJtaXR0ZWQgYmFja3JlZnMKLSAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgICAgICAgICAgICAgIG1fYmFkX3JlcGVhdHM7ICAgICAgICAvLyBiaXRtYXNrIG9mIHJlcGVhdHMgd2UgY2FuJ3QgZGVkdWNlIGEgc3RhcnRtYXAgZm9yOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNfcmVjdXJzaW9uczsgICAgIC8vIHNldCB3aGVuIHdlIGhhdmUgcmVjdXJzaXZlIGV4cHJlc2lzb25zIHRvIGZpeHVwCi0gICBzdGQ6OnZlY3Rvcjxib29sPiAgICAgICAgICAgICBtX3JlY3Vyc2lvbl9jaGVja3M7ICAgLy8gbm90ZXMgd2hpY2ggcmVjdXJzaW9ucyB3ZSd2ZSBmb2xsb3dlZCB3aGlsZSBhbmFseXNpbmcgdGhpcyBleHByZXNzaW9uCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3dvcmRfbWFzazsgICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhIHdvcmQgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX21hc2tfc3BhY2U7ICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhIHdvcmQgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX2xvd2VyX21hc2s7ICAgICAgIC8vIG1hc2sgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYSBsb3dlcmNhc2UgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3VwcGVyX21hc2s7ICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhbiB1cHBlcmNhc2UgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX2FscGhhX21hc2s7ICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhbiBhbHBoYWJldGljIGNoYXJhY3RlcgotcHJpdmF0ZToKLSAgIGJhc2ljX3JlZ2V4X2NyZWF0b3ImIG9wZXJhdG9yPShjb25zdCBiYXNpY19yZWdleF9jcmVhdG9yJik7Ci0gICBiYXNpY19yZWdleF9jcmVhdG9yKGNvbnN0IGJhc2ljX3JlZ2V4X2NyZWF0b3ImKTsKLQotICAgdm9pZCBmaXh1cF9wb2ludGVycyhyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotICAgdm9pZCBmaXh1cF9yZWN1cnNpb25zKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIGNyZWF0ZV9zdGFydG1hcHMocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIGludCBjYWxjdWxhdGVfYmFja3N0ZXAocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIHZvaWQgY3JlYXRlX3N0YXJ0bWFwKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSwgdW5zaWduZWQgY2hhciogbF9tYXAsIHVuc2lnbmVkIGludCogcG51bGwsIHVuc2lnbmVkIGNoYXIgbWFzayk7Ci0gICB1bnNpZ25lZCBnZXRfcmVzdGFydF90eXBlKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIHNldF9hbGxfbWFza3ModW5zaWduZWQgY2hhciogYml0cywgdW5zaWduZWQgY2hhcik7Ci0gICBib29sIGlzX2JhZF9yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHB0KTsKLSAgIHZvaWQgc2V0X2JhZF9yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHB0KTsKLSAgIHN5bnRheF9lbGVtZW50X3R5cGUgZ2V0X3JlcGVhdF90eXBlKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIHByb2JlX2xlYWRpbmdfcmVwZWF0KHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmJhc2ljX3JlZ2V4X2NyZWF0b3IocmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogZGF0YSkKLSAgIDogbV9wZGF0YShkYXRhKSwgbV90cmFpdHMoKihkYXRhLT5tX3B0cmFpdHMpKSwgbV9sYXN0X3N0YXRlKDApLCBtX3JlcGVhdGVyX2lkKDApLCBtX2hhc19iYWNrcmVmcyhmYWxzZSksIG1fYmFja3JlZnMoMCksIG1faGFzX3JlY3Vyc2lvbnMoZmFsc2UpCi17Ci0gICBtX3BkYXRhLT5tX2RhdGEuY2xlYXIoKTsKLSAgIG1fcGRhdGEtPm1fc3RhdHVzID0gOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9vazsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCB3ID0gJ3cnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIHMgPSAncyc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgbFs1XSA9IHsgJ2wnLCAnbycsICd3JywgJ2UnLCAncicsIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgdVs1XSA9IHsgJ3UnLCAncCcsICdwJywgJ2UnLCAncicsIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgYVs1XSA9IHsgJ2EnLCAnbCcsICdwJywgJ2gnLCAnYScsIH07Ci0gICBtX3dvcmRfbWFzayA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUoJncsICZ3ICsxKTsKLSAgIG1fbWFza19zcGFjZSA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUoJnMsICZzICsxKTsKLSAgIG1fbG93ZXJfbWFzayA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobCwgbCArIDUpOwotICAgbV91cHBlcl9tYXNrID0gbV90cmFpdHMubG9va3VwX2NsYXNzbmFtZSh1LCB1ICsgNSk7Ci0gICBtX2FscGhhX21hc2sgPSBtX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKGEsIGEgKyA1KTsKLSAgIG1fcGRhdGEtPm1fd29yZF9tYXNrID0gbV93b3JkX21hc2s7Ci0gICBORE5CT09TVF9BU1NFUlQobV93b3JkX21hc2sgIT0gMCk7IAotICAgTkROQk9PU1RfQVNTRVJUKG1fbWFza19zcGFjZSAhPSAwKTsgCi0gICBORE5CT09TVF9BU1NFUlQobV9sb3dlcl9tYXNrICE9IDApOyAKLSAgIE5ETkJPT1NUX0FTU0VSVChtX3VwcGVyX21hc2sgIT0gMCk7IAotICAgTkROQk9PU1RfQVNTRVJUKG1fYWxwaGFfbWFzayAhPSAwKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90eXBlIHQsIHN0ZDo6c2l6ZV90IHMpCi17Ci0gICAvLyBpZiB0aGUgc3RhdGUgaXMgYSBiYWNrcmVmIHRoZW4gbWFrZSBhIG5vdGUgb2YgaXQ6Ci0gICBpZih0ID09IHN5bnRheF9lbGVtZW50X2JhY2tyZWYpCi0gICAgICB0aGlzLT5tX2hhc19iYWNrcmVmcyA9IHRydWU7Ci0gICAvLyBhcHBlbmQgYSBuZXcgc3RhdGUsIHN0YXJ0IGJ5IGFsaWduaW5nIG91ciBsYXN0IG9uZToKLSAgIG1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgLy8gc2V0IHRoZSBvZmZzZXQgdG8gdGhlIG5leHQgc3RhdGUgaW4gb3VyIGxhc3Qgb25lOgotICAgaWYobV9sYXN0X3N0YXRlKQotICAgICAgbV9sYXN0X3N0YXRlLT5uZXh0LmkgPSBtX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gZ2V0b2Zmc2V0KG1fbGFzdF9zdGF0ZSk7Ci0gICAvLyBub3cgYWN0dWFsbHkgZXh0ZW50IG91ciBkYXRhOgotICAgbV9sYXN0X3N0YXRlID0gc3RhdGljX2Nhc3Q8cmVfc3ludGF4X2Jhc2UqPihtX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHMpKTsKLSAgIC8vIGZpbGwgaW4gYm9pbGVycGxhdGUgb3B0aW9ucyBpbiB0aGUgbmV3IHN0YXRlOgotICAgbV9sYXN0X3N0YXRlLT5uZXh0LmkgPSAwOwotICAgbV9sYXN0X3N0YXRlLT50eXBlID0gdDsKLSAgIHJldHVybiBtX2xhc3Rfc3RhdGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46Omluc2VydF9zdGF0ZShzdGQ6OnB0cmRpZmZfdCBwb3MsIHN5bnRheF9lbGVtZW50X3R5cGUgdCwgc3RkOjpzaXplX3QgcykKLXsKLSAgIC8vIGFwcGVuZCBhIG5ldyBzdGF0ZSwgc3RhcnQgYnkgYWxpZ25pbmcgb3VyIGxhc3Qgb25lOgotICAgbV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAvLyBzZXQgdGhlIG9mZnNldCB0byB0aGUgbmV4dCBzdGF0ZSBpbiBvdXIgbGFzdCBvbmU6Ci0gICBpZihtX2xhc3Rfc3RhdGUpCi0gICAgICBtX2xhc3Rfc3RhdGUtPm5leHQuaSA9IG1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSBnZXRvZmZzZXQobV9sYXN0X3N0YXRlKTsKLSAgIC8vIHJlbWVtYmVyIHRoZSBsYXN0IHN0YXRlIHBvc2l0aW9uOgotICAgc3RkOjpwdHJkaWZmX3Qgb2ZmID0gZ2V0b2Zmc2V0KG1fbGFzdF9zdGF0ZSkgKyBzOwotICAgLy8gbm93IGFjdHVhbGx5IGluc2VydCBvdXIgZGF0YToKLSAgIHJlX3N5bnRheF9iYXNlKiBuZXdfc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9zeW50YXhfYmFzZSo+KG1fcGRhdGEtPm1fZGF0YS5pbnNlcnQocG9zLCBzKSk7Ci0gICAvLyBmaWxsIGluIGJvaWxlcnBsYXRlIG9wdGlvbnMgaW4gdGhlIG5ldyBzdGF0ZToKLSAgIG5ld19zdGF0ZS0+bmV4dC5pID0gczsKLSAgIG5ld19zdGF0ZS0+dHlwZSA9IHQ7Ci0gICBtX2xhc3Rfc3RhdGUgPSBnZXRhZGRyZXNzKG9mZik7Ci0gICByZXR1cm4gbmV3X3N0YXRlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlX2xpdGVyYWwqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9saXRlcmFsKGNoYXJUIGMpCi17Ci0gICByZV9saXRlcmFsKiByZXN1bHQ7Ci0gICAvLyBzdGFydCBieSBzZWVpbmcgaWYgd2UgaGF2ZSBhbiBleGlzdGluZyByZV9saXRlcmFsIHdlIGNhbiBleHRlbmQ6Ci0gICBpZigoMCA9PSBtX2xhc3Rfc3RhdGUpIHx8IChtX2xhc3Rfc3RhdGUtPnR5cGUgIT0gc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCkpCi0gICB7Ci0gICAgICAvLyBubyBleGlzdGluZyByZV9saXRlcmFsLCBjcmVhdGUgYSBuZXcgb25lOgotICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KGFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9saXRlcmFsLCBzaXplb2YocmVfbGl0ZXJhbCkgKyBzaXplb2YoY2hhclQpKSk7Ci0gICAgICByZXN1bHQtPmxlbmd0aCA9IDE7Ci0gICAgICAqc3RhdGljX2Nhc3Q8Y2hhclQqPihzdGF0aWNfY2FzdDx2b2lkKj4ocmVzdWx0KzEpKSA9IG1fdHJhaXRzLnRyYW5zbGF0ZShjLCBtX2ljYXNlKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIHdlIGhhdmUgYW4gZXhpc3RpbmcgcmVfbGl0ZXJhbCwgZXh0ZW5kIGl0OgotICAgICAgc3RkOjpwdHJkaWZmX3Qgb2ZmID0gZ2V0b2Zmc2V0KG1fbGFzdF9zdGF0ZSk7Ci0gICAgICBtX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHNpemVvZihjaGFyVCkpOwotICAgICAgbV9sYXN0X3N0YXRlID0gcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KGdldGFkZHJlc3Mob2ZmKSk7Ci0gICAgICBjaGFyVCogY2hhcmFjdGVycyA9IHN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KHJlc3VsdCsxKSk7Ci0gICAgICBjaGFyYWN0ZXJzW3Jlc3VsdC0+bGVuZ3RoXSA9IG1fdHJhaXRzLnRyYW5zbGF0ZShjLCBtX2ljYXNlKTsKLSAgICAgICsrKHJlc3VsdC0+bGVuZ3RoKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHJlX3N5bnRheF9iYXNlKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjphcHBlbmRfc2V0KAotICAgY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KQotewotICAgdHlwZWRlZiBtcGw6OmJvb2xfPCAoc2l6ZW9mKGNoYXJUKSA9PSAxKSA+IHRydXRoX3R5cGU7Ci0gICByZXR1cm4gY2hhcl9zZXQuaGFzX2RpZ3JhcGhzKCkgCi0gICAgICA/IGFwcGVuZF9zZXQoY2hhcl9zZXQsIHN0YXRpY19jYXN0PG1wbDo6ZmFsc2VfKj4oMCkpCi0gICAgICA6IGFwcGVuZF9zZXQoY2hhcl9zZXQsIHN0YXRpY19jYXN0PHRydXRoX3R5cGUqPigwKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9zZXQoCi0gICBjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQsIG1wbDo6ZmFsc2VfKikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz46Omxpc3RfaXRlcmF0b3IgaXRlbV9pdGVyYXRvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgCi0gICByZV9zZXRfbG9uZzxtX3R5cGU+KiByZXN1bHQgPSBzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oYXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2xvbmdfc2V0LCBzaXplb2YocmVfc2V0X2xvbmc8bV90eXBlPikpKTsKLSAgIC8vCi0gICAvLyBmaWxsIGluIHRoZSBiYXNpY3M6Ci0gICAvLwotICAgcmVzdWx0LT5jc2luZ2xlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShjaGFyX3NldC5zaW5nbGVzX2JlZ2luKCksIGNoYXJfc2V0LnNpbmdsZXNfZW5kKCkpKTsKLSAgIHJlc3VsdC0+Y3JhbmdlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShjaGFyX3NldC5yYW5nZXNfYmVnaW4oKSwgY2hhcl9zZXQucmFuZ2VzX2VuZCgpKSkgLyAyOwotICAgcmVzdWx0LT5jZXF1aXZhbGVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoY2hhcl9zZXQuZXF1aXZhbGVudHNfYmVnaW4oKSwgY2hhcl9zZXQuZXF1aXZhbGVudHNfZW5kKCkpKTsKLSAgIHJlc3VsdC0+Y2NsYXNzZXMgPSBjaGFyX3NldC5jbGFzc2VzKCk7Ci0gICByZXN1bHQtPmNuY2xhc3NlcyA9IGNoYXJfc2V0Lm5lZ2F0ZWRfY2xhc3NlcygpOwotICAgaWYoZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlKQotICAgewotICAgICAgLy8gYWRqdXN0IGNsYXNzZXMgYXMgbmVlZGVkOgotICAgICAgaWYoKChyZXN1bHQtPmNjbGFzc2VzICYgbV9sb3dlcl9tYXNrKSA9PSBtX2xvd2VyX21hc2spIHx8ICgocmVzdWx0LT5jY2xhc3NlcyAmIG1fdXBwZXJfbWFzaykgPT0gbV91cHBlcl9tYXNrKSkKLSAgICAgICAgIHJlc3VsdC0+Y2NsYXNzZXMgfD0gbV9hbHBoYV9tYXNrOwotICAgICAgaWYoKChyZXN1bHQtPmNuY2xhc3NlcyAmIG1fbG93ZXJfbWFzaykgPT0gbV9sb3dlcl9tYXNrKSB8fCAoKHJlc3VsdC0+Y25jbGFzc2VzICYgbV91cHBlcl9tYXNrKSA9PSBtX3VwcGVyX21hc2spKQotICAgICAgICAgcmVzdWx0LT5jbmNsYXNzZXMgfD0gbV9hbHBoYV9tYXNrOwotICAgfQotCi0gICByZXN1bHQtPmlzbm90ID0gY2hhcl9zZXQuaXNfbmVnYXRlZCgpOwotICAgcmVzdWx0LT5zaW5nbGV0b24gPSAhY2hhcl9zZXQuaGFzX2RpZ3JhcGhzKCk7Ci0gICAvLwotICAgLy8gcmVtZW1iZXIgd2hlcmUgdGhlIHN0YXRlIGlzIGZvciBsYXRlcjoKLSAgIC8vCi0gICBzdGQ6OnB0cmRpZmZfdCBvZmZzZXQgPSBnZXRvZmZzZXQocmVzdWx0KTsKLSAgIC8vCi0gICAvLyBub3cgZXh0ZW5kIHdpdGggYWxsIHRoZSBzaW5nbGVzOgotICAgLy8KLSAgIGl0ZW1faXRlcmF0b3IgZmlyc3QsIGxhc3Q7Ci0gICBmaXJzdCA9IGNoYXJfc2V0LnNpbmdsZXNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5zaW5nbGVzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIGNoYXJUKiBwID0gc3RhdGljX2Nhc3Q8Y2hhclQqPih0aGlzLT5tX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHNpemVvZihjaGFyVCkgKiAoZmlyc3QtPnNlY29uZCA/IDMgOiAyKSkpOwotICAgICAgcFswXSA9IG1fdHJhaXRzLnRyYW5zbGF0ZShmaXJzdC0+Zmlyc3QsIG1faWNhc2UpOwotICAgICAgaWYoZmlyc3QtPnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHBbMV0gPSBtX3RyYWl0cy50cmFuc2xhdGUoZmlyc3QtPnNlY29uZCwgbV9pY2FzZSk7Ci0gICAgICAgICBwWzJdID0gMDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHBbMV0gPSAwOwotICAgICAgKytmaXJzdDsKLSAgIH0KLSAgIC8vCi0gICAvLyBub3cgZXh0ZW5kIHdpdGggYWxsIHRoZSByYW5nZXM6Ci0gICAvLwotICAgZmlyc3QgPSBjaGFyX3NldC5yYW5nZXNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5yYW5nZXNfZW5kKCk7Ci0gICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgLy8gZmlyc3QgZ3JhYiB0aGUgZW5kcG9pbnRzIG9mIHRoZSByYW5nZToKLSAgICAgIGRpZ3JhcGg8Y2hhclQ+IGMxID0gKmZpcnN0OwotICAgICAgYzEuZmlyc3QgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoYzEuZmlyc3QsIHRoaXMtPm1faWNhc2UpOwotICAgICAgYzEuc2Vjb25kID0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGMxLnNlY29uZCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICArK2ZpcnN0OwotICAgICAgZGlncmFwaDxjaGFyVD4gYzIgPSAqZmlyc3Q7Ci0gICAgICBjMi5maXJzdCA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShjMi5maXJzdCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICBjMi5zZWNvbmQgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoYzIuc2Vjb25kLCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBzdHJpbmdfdHlwZSBzMSwgczI7Ci0gICAgICAvLyBkaWZmZXJlbnQgYWN0aW9ucyBub3cgZGVwZW5kaW5nIHVwb24gd2hldGhlciBjb2xsYXRpb24gaXMgdHVybmVkIG9uOgotICAgICAgaWYoZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6Y29sbGF0ZSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHdlIG5lZWQgdG8gdHJhbnNmb3JtIG91ciByYW5nZSBpbnRvIHNvcnQga2V5czoKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpCi0gICAgICAgICBzdHJpbmdfdHlwZSBpbigzLCBjaGFyVCgwKSk7Ci0gICAgICAgICBpblswXSA9IGMxLmZpcnN0OwotICAgICAgICAgaW5bMV0gPSBjMS5zZWNvbmQ7Ci0gICAgICAgICBzMSA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShpbi5jX3N0cigpLCAoaW5bMV0gPyBpbi5jX3N0cigpKzIgOiBpbi5jX3N0cigpKzEpKTsKLSAgICAgICAgIGluWzBdID0gYzIuZmlyc3Q7Ci0gICAgICAgICBpblsxXSA9IGMyLnNlY29uZDsKLSAgICAgICAgIHMyID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGluLmNfc3RyKCksIChpblsxXSA/IGluLmNfc3RyKCkrMiA6IGluLmNfc3RyKCkrMSkpOwotI2Vsc2UKLSAgICAgICAgIGNoYXJUIGExWzNdID0geyBjMS5maXJzdCwgYzEuc2Vjb25kLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIGNoYXJUIGEyWzNdID0geyBjMi5maXJzdCwgYzIuc2Vjb25kLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIHMxID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGExLCAoYTFbMV0gPyBhMSsyIDogYTErMSkpOwotICAgICAgICAgczIgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oYTIsIChhMlsxXSA/IGEyKzIgOiBhMisxKSk7Ci0jZW5kaWYKLSAgICAgICAgIGlmKHMxLnNpemUoKSA9PSAwKQotICAgICAgICAgICAgczEgPSBzdHJpbmdfdHlwZSgxLCBjaGFyVCgwKSk7Ci0gICAgICAgICBpZihzMi5zaXplKCkgPT0gMCkKLSAgICAgICAgICAgIHMyID0gc3RyaW5nX3R5cGUoMSwgY2hhclQoMCkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgaWYoYzEuc2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgczEuaW5zZXJ0KHMxLmVuZCgpLCBjMS5maXJzdCk7Ci0gICAgICAgICAgICBzMS5pbnNlcnQoczEuZW5kKCksIGMxLnNlY29uZCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBzMSA9IHN0cmluZ190eXBlKDEsIGMxLmZpcnN0KTsKLSAgICAgICAgIGlmKGMyLnNlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHMyLmluc2VydChzMi5lbmQoKSwgYzIuZmlyc3QpOwotICAgICAgICAgICAgczIuaW5zZXJ0KHMyLmVuZCgpLCBjMi5zZWNvbmQpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgczIuaW5zZXJ0KHMyLmVuZCgpLCBjMi5maXJzdCk7Ci0gICAgICB9Ci0gICAgICBpZihzMSA+IHMyKQotICAgICAgewotICAgICAgICAgLy8gT29wcyBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgICAgY2hhclQqIHAgPSBzdGF0aWNfY2FzdDxjaGFyVCo+KHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5leHRlbmQoc2l6ZW9mKGNoYXJUKSAqIChzMS5zaXplKCkgKyBzMi5zaXplKCkgKyAyKSApICk7Ci0gICAgICByZV9kZXRhaWw6OmNvcHkoczEuYmVnaW4oKSwgczEuZW5kKCksIHApOwotICAgICAgcFtzMS5zaXplKCldID0gY2hhclQoMCk7Ci0gICAgICBwICs9IHMxLnNpemUoKSArIDE7Ci0gICAgICByZV9kZXRhaWw6OmNvcHkoczIuYmVnaW4oKSwgczIuZW5kKCksIHApOwotICAgICAgcFtzMi5zaXplKCldID0gY2hhclQoMCk7Ci0gICB9Ci0gICAvLwotICAgLy8gbm93IHByb2Nlc3MgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXM6Ci0gICAvLwotICAgZmlyc3QgPSBjaGFyX3NldC5lcXVpdmFsZW50c19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LmVxdWl2YWxlbnRzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIHN0cmluZ190eXBlIHM7Ci0gICAgICBpZihmaXJzdC0+c2Vjb25kKQotICAgICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLSAgICAgICAgIHN0cmluZ190eXBlIGluKDMsIGNoYXJUKDApKTsKLSAgICAgICAgIGluWzBdID0gZmlyc3QtPmZpcnN0OwotICAgICAgICAgaW5bMV0gPSBmaXJzdC0+c2Vjb25kOwotICAgICAgICAgcyA9IG1fdHJhaXRzLnRyYW5zZm9ybV9wcmltYXJ5KGluLmNfc3RyKCksIGluLmNfc3RyKCkrMik7Ci0jZWxzZQotICAgICAgICAgY2hhclQgY3NbM10gPSB7IGZpcnN0LT5maXJzdCwgZmlyc3QtPnNlY29uZCwgY2hhclQoMCksIH07Ci0gICAgICAgICBzID0gbV90cmFpdHMudHJhbnNmb3JtX3ByaW1hcnkoY3MsIGNzKzIpOwotI2VuZGlmCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICBzID0gbV90cmFpdHMudHJhbnNmb3JtX3ByaW1hcnkoJmZpcnN0LT5maXJzdCwgJmZpcnN0LT5maXJzdCsxKTsKLSAgICAgIGlmKHMuZW1wdHkoKSkKLSAgICAgICAgIHJldHVybiAwOyAgLy8gaW52YWxpZCBvciB1bnN1cHBvcnRlZCBlcXVpdmFsZW5jZSBjbGFzcwotICAgICAgY2hhclQqIHAgPSBzdGF0aWNfY2FzdDxjaGFyVCo+KHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5leHRlbmQoc2l6ZW9mKGNoYXJUKSAqIChzLnNpemUoKSsxKSApICk7Ci0gICAgICByZV9kZXRhaWw6OmNvcHkocy5iZWdpbigpLCBzLmVuZCgpLCBwKTsKLSAgICAgIHBbcy5zaXplKCldID0gY2hhclQoMCk7Ci0gICAgICArK2ZpcnN0OwotICAgfQotICAgLy8KLSAgIC8vIGZpbmFsbHkgcmVzZXQgdGhlIGFkZHJlc3Mgb2Ygb3VyIGxhc3Qgc3RhdGU6Ci0gICAvLwotICAgbV9sYXN0X3N0YXRlID0gcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KGdldGFkZHJlc3Mob2Zmc2V0KSk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgY2hhcl9sZXNzKFQgdDEsIFQgdDIpCi17Ci0gICByZXR1cm4gdDEgPCB0MjsKLX0KLWlubGluZSBib29sIGNoYXJfbGVzcyhjaGFyIHQxLCBjaGFyIHQyKQotewotICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHQxKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHQyKTsKLX0KLWlubGluZSBib29sIGNoYXJfbGVzcyhzaWduZWQgY2hhciB0MSwgc2lnbmVkIGNoYXIgdDIpCi17Ci0gICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odDEpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odDIpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlX3N5bnRheF9iYXNlKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjphcHBlbmRfc2V0KAotICAgY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0LCBtcGw6OnRydWVfKikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz46Omxpc3RfaXRlcmF0b3IgaXRlbV9pdGVyYXRvcjsKLSAgIAotICAgcmVfc2V0KiByZXN1bHQgPSBzdGF0aWNfY2FzdDxyZV9zZXQqPihhcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc2V0LCBzaXplb2YocmVfc2V0KSkpOwotICAgYm9vbCBuZWdhdGUgPSBjaGFyX3NldC5pc19uZWdhdGVkKCk7Ci0gICBzdGQ6Om1lbXNldChyZXN1bHQtPl9tYXAsIDAsIHNpemVvZihyZXN1bHQtPl9tYXApKTsKLSAgIC8vCi0gICAvLyBoYW5kbGUgc2luZ2xlcyBmaXJzdDoKLSAgIC8vCi0gICBpdGVtX2l0ZXJhdG9yIGZpcnN0LCBsYXN0OwotICAgZmlyc3QgPSBjaGFyX3NldC5zaW5nbGVzX2JlZ2luKCk7Ci0gICBsYXN0ID0gY2hhcl9zZXQuc2luZ2xlc19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDEgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCB0aGlzLT5tX2ljYXNlKQotICAgICAgICAgICAgPT0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGZpcnN0LT5maXJzdCwgdGhpcy0+bV9pY2FzZSkpCi0gICAgICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSB0cnVlOwotICAgICAgfQotICAgICAgKytmaXJzdDsKLSAgIH0KLSAgIC8vCi0gICAvLyBPSyBub3cgaGFuZGxlIHJhbmdlczoKLSAgIC8vCi0gICBmaXJzdCA9IGNoYXJfc2V0LnJhbmdlc19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LnJhbmdlc19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyBmaXJzdCBncmFiIHRoZSBlbmRwb2ludHMgb2YgdGhlIHJhbmdlOgotICAgICAgY2hhclQgYzEgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoZmlyc3QtPmZpcnN0LCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBjaGFyVCBjMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShmaXJzdC0+Zmlyc3QsIHRoaXMtPm1faWNhc2UpOwotICAgICAgKytmaXJzdDsKLSAgICAgIC8vIGRpZmZlcmVudCBhY3Rpb25zIG5vdyBkZXBlbmRpbmcgdXBvbiB3aGV0aGVyIGNvbGxhdGlvbiBpcyB0dXJuZWQgb246Ci0gICAgICBpZihmbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpjb2xsYXRlKQotICAgICAgewotICAgICAgICAgLy8gd2UgbmVlZCB0byB0cmFuc2Zvcm0gb3VyIHJhbmdlIGludG8gc29ydCBrZXlzOgotICAgICAgICAgY2hhclQgYzNbMl0gPSB7IGMxLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIHN0cmluZ190eXBlIHMxID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGMzLCBjMysxKTsKLSAgICAgICAgIGMzWzBdID0gYzI7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShjMywgYzMrMSk7Ci0gICAgICAgICBpZihzMSA+IHMyKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gT29wcyBlcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgfQotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGMzWzFdID09IGNoYXJUKDApKTsKLSAgICAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGMzWzBdID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpOwotICAgICAgICAgICAgc3RyaW5nX3R5cGUgczMgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oYzMsIGMzICsxKTsKLSAgICAgICAgICAgIGlmKChzMSA8PSBzMykgJiYgKHMzIDw9IHMyKSkKLSAgICAgICAgICAgICAgIHJlc3VsdC0+X21hcFtpXSA9IHRydWU7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBpZihjaGFyX2xlc3MoYzIsIGMxKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIE9vcHMgZXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgaW4gcmFuZ2UgbWF0Y2hlczoKLSAgICAgICAgIHN0ZDo6bWVtc2V0KHJlc3VsdC0+X21hcCArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMxKSwgdHJ1ZSwgMSArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMyKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMxKSk7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gYW5kIG5vdyB0aGUgY2xhc3NlczoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIG1fdHlwZSBtID0gY2hhcl9zZXQuY2xhc3NlcygpOwotICAgaWYoZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlKQotICAgewotICAgICAgLy8gYWRqdXN0IG0gYXMgbmVlZGVkOgotICAgICAgaWYoKChtICYgbV9sb3dlcl9tYXNrKSA9PSBtX2xvd2VyX21hc2spIHx8ICgobSAmIG1fdXBwZXJfbWFzaykgPT0gbV91cHBlcl9tYXNrKSkKLSAgICAgICAgIG0gfD0gbV9hbHBoYV9tYXNrOwotICAgfQotICAgaWYobSAhPSAwKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgewotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuaXNjdHlwZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIG0pKQotICAgICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBhbmQgbm93IHRoZSBuZWdhdGVkIGNsYXNzZXM6Ci0gICAvLwotICAgbSA9IGNoYXJfc2V0Lm5lZ2F0ZWRfY2xhc3NlcygpOwotICAgaWYoZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlKQotICAgewotICAgICAgLy8gYWRqdXN0IG0gYXMgbmVlZGVkOgotICAgICAgaWYoKChtICYgbV9sb3dlcl9tYXNrKSA9PSBtX2xvd2VyX21hc2spIHx8ICgobSAmIG1fdXBwZXJfbWFzaykgPT0gbV91cHBlcl9tYXNrKSkKLSAgICAgICAgIG0gfD0gbV9hbHBoYV9tYXNrOwotICAgfQotICAgaWYobSAhPSAwKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgewotICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbSkpCi0gICAgICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSB0cnVlOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIG5vdyBwcm9jZXNzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzOgotICAgLy8KLSAgIGZpcnN0ID0gY2hhcl9zZXQuZXF1aXZhbGVudHNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5lcXVpdmFsZW50c19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICBzdHJpbmdfdHlwZSBzOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHN0YXRpY19jYXN0PGNoYXJUPigwKSA9PSBmaXJzdC0+c2Vjb25kKTsKLSAgICAgIHMgPSBtX3RyYWl0cy50cmFuc2Zvcm1fcHJpbWFyeSgmZmlyc3QtPmZpcnN0LCAmZmlyc3QtPmZpcnN0KzEpOwotICAgICAgaWYocy5lbXB0eSgpKQotICAgICAgICAgcmV0dXJuIDA7ICAvLyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIGVxdWl2YWxlbmNlIGNsYXNzCi0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBjaGFyVCBjWzJdID0geyAoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpKSwgY2hhclQoMCksIH07Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybV9wcmltYXJ5KGMsIGMrMSk7Ci0gICAgICAgICBpZihzID09IHMyKQotICAgICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgICsrZmlyc3Q7Ci0gICB9Ci0gICBpZihuZWdhdGUpCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSAhKHJlc3VsdC0+X21hcFtpXSk7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6ZmluYWxpemUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpCi17Ci0gICBpZih0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykKLSAgICAgIHJldHVybjsKLSAgIC8vIHdlJ3ZlIGFkZGVkIGFsbCB0aGUgc3RhdGVzIHdlIG5lZWQsIG5vdyBmaW5pc2ggdGhpbmdzIG9mZi4KLSAgIC8vIHN0YXJ0IGJ5IGFkZGluZyBhIHRlcm1pbmF0aW5nIHN0YXRlOgotICAgYXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X21hdGNoKTsKLSAgIC8vIGV4dGVuZCBzdG9yYWdlIHRvIHN0b3JlIG9yaWdpbmFsIGV4cHJlc3Npb246Ci0gICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSBwMiAtIHAxOwotICAgbV9wZGF0YS0+bV9leHByZXNzaW9uX2xlbiA9IGxlbjsKLSAgIGNoYXJUKiBwcyA9IHN0YXRpY19jYXN0PGNoYXJUKj4obV9wZGF0YS0+bV9kYXRhLmV4dGVuZChzaXplb2YoY2hhclQpICogKDEgKyAocDIgLSBwMSkpKSk7Ci0gICBtX3BkYXRhLT5tX2V4cHJlc3Npb24gPSBwczsKLSAgIHJlX2RldGFpbDo6Y29weShwMSwgcDIsIHBzKTsKLSAgIHBzW3AyIC0gcDFdID0gMDsKLSAgIC8vIGZpbGwgaW4gb3VyIG90aGVyIGRhdGEuLi4KLSAgIC8vIHN1Y2Nlc3NmdWwgcGFyc2luZyBpbXBsaWVzIGEgemVybyBzdGF0dXM6Ci0gICBtX3BkYXRhLT5tX3N0YXR1cyA9IDA7Ci0gICAvLyBnZXQgdGhlIGZpcnN0IHN0YXRlIG9mIHRoZSBtYWNoaW5lOgotICAgbV9wZGF0YS0+bV9maXJzdF9zdGF0ZSA9IHN0YXRpY19jYXN0PHJlX3N5bnRheF9iYXNlKj4obV9wZGF0YS0+bV9kYXRhLmRhdGEoKSk7Ci0gICAvLyBmaXh1cCBwb2ludGVycyBpbiB0aGUgbWFjaGluZToKLSAgIGZpeHVwX3BvaW50ZXJzKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotICAgaWYobV9oYXNfcmVjdXJzaW9ucykKLSAgIHsKLSAgICAgIG1fcGRhdGEtPm1faGFzX3JlY3Vyc2lvbnMgPSB0cnVlOwotICAgICAgZml4dXBfcmVjdXJzaW9ucyhtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlKTsKLSAgICAgIGlmKHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKQotICAgICAgICAgcmV0dXJuOwotICAgfQotICAgZWxzZQotICAgICAgbV9wZGF0YS0+bV9oYXNfcmVjdXJzaW9ucyA9IGZhbHNlOwotICAgLy8gY3JlYXRlIG5lc3RlZCBzdGFydG1hcHM6Ci0gICBjcmVhdGVfc3RhcnRtYXBzKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotICAgLy8gY3JlYXRlIG1haW4gc3RhcnRtYXA6Ci0gICBzdGQ6Om1lbXNldChtX3BkYXRhLT5tX3N0YXJ0bWFwLCAwLCBzaXplb2YobV9wZGF0YS0+bV9zdGFydG1hcCkpOwotICAgbV9wZGF0YS0+bV9jYW5fYmVfbnVsbCA9IDA7Ci0KLSAgIG1fYmFkX3JlcGVhdHMgPSAwOwotICAgaWYobV9oYXNfcmVjdXJzaW9ucykKLSAgICAgIG1fcmVjdXJzaW9uX2NoZWNrcy5hc3NpZ24oMSArIG1fcGRhdGEtPm1fbWFya19jb3VudCwgZmFsc2UpOwotICAgY3JlYXRlX3N0YXJ0bWFwKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUsIG1fcGRhdGEtPm1fc3RhcnRtYXAsICYobV9wZGF0YS0+bV9jYW5fYmVfbnVsbCksIG1hc2tfYWxsKTsKLSAgIC8vIGdldCB0aGUgcmVzdGFydCB0eXBlOgotICAgbV9wZGF0YS0+bV9yZXN0YXJ0X3R5cGUgPSBnZXRfcmVzdGFydF90eXBlKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotICAgLy8gb3B0aW1pc2UgYSBsZWFkaW5nIHJlcGVhdCBpZiB0aGVyZSBpcyBvbmU6Ci0gICBwcm9iZV9sZWFkaW5nX3JlcGVhdChtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmZpeHVwX3BvaW50ZXJzKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZWN1cnNlOgotICAgICAgICAgbV9oYXNfcmVjdXJzaW9ucyA9IHRydWU7Ci0gICAgICAgICBpZihzdGF0ZS0+bmV4dC5pKQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IGdldGFkZHJlc3Moc3RhdGUtPm5leHQuaSwgc3RhdGUpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IDA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgICAgLy8gc2V0IHRoZSBzdGF0ZV9pZCBvZiB0aGlzIHJlcGVhdDoKLSAgICAgICAgIHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHN0YXRlKS0+c3RhdGVfaWQgPSBtX3JlcGVhdGVyX2lkKys7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgICAgc3RkOjptZW1zZXQoc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5fbWFwLCAwLCBzaXplb2Yoc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5fbWFwKSk7Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmNhbl9iZV9udWxsID0gMDsKLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9qdW1wOgotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0LnAgPSBnZXRhZGRyZXNzKHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5pLCBzdGF0ZSk7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBpZihzdGF0ZS0+bmV4dC5pKQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IGdldGFkZHJlc3Moc3RhdGUtPm5leHQuaSwgc3RhdGUpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IDA7Ci0gICAgICB9Ci0gICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpmaXh1cF9yZWN1cnNpb25zKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHJlX3N5bnRheF9iYXNlKiBiYXNlID0gc3RhdGU7Ci0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWY6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBqdXN0IGNoZWNrIHRoYXQgdGhlIGluZGV4IGlzIHZhbGlkOgotICAgICAgICAgICAgaW50IGlkeCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleDsKLSAgICAgICAgICAgIGlmKGlkeCA8IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZHggPSAtaWR4LTE7Ci0gICAgICAgICAgICAgICBpZihpZHggPj0gMTAwMDApCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZHggPSBtX3BkYXRhLT5nZXRfaWQoaWR4KTsKLSAgICAgICAgICAgICAgICAgIGlmKGlkeCA8PSAwKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgb2Ygc3ViLWV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGV4aXN0OgotICAgICAgICAgICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybjsKLSAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciB0aGUgZXhwcmVzc2lvbiwgd2Ugc2hvdWxkIGJlIGVtcHR5OgotICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gMDsKLSAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhyb3cgaWYgcmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiRW5jb3VudGVyZWQgYSBmb3J3YXJkIHJlZmVyZW5jZSB0byBhIG1hcmtlZCBzdWItZXhwcmVzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0LiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlLnJhaXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVjdXJzZToKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgIHJlX3N5bnRheF9iYXNlKiBwID0gYmFzZTsKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGlkeCA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5pOwotICAgICAgICAgICAgaWYoaWR4ID4gMTAwMDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gVGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgY2FwdHVyZSBncm91cCB3aXRoIHRoaXMgaGFzaCwganVzdCBkbyB3aGF0IFBlcmwKLSAgICAgICAgICAgICAgIC8vIGRvZXMgYW5kIHJlY3Vyc2UgdG8gdGhlIGxlZnRtb3N0OgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIGlkeCA9IG1fcGRhdGEtPmdldF9pZChzdGF0aWNfY2FzdDxpbnQ+KGlkeCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUocCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKChwLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaykgJiYgKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4ocCktPmluZGV4ID09IGlkeCkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgLy8gV2UndmUgZm91bmQgdGhlIHRhcmdldCBvZiB0aGUgcmVjdXJzaW9uLCBzZXQgdGhlIGp1bXAgdGFyZ2V0OgotICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5wID0gcDsKLSAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIC8vIAotICAgICAgICAgICAgICAgICAgLy8gTm93IHNjYW4gdGhlIHRhcmdldCBmb3IgbmVzdGVkIHJlcGVhdHM6Ci0gICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgcCA9IHAtPm5leHQucDsKLSAgICAgICAgICAgICAgICAgIGludCBuZXh0X3JlcF9pZCA9IDA7Ci0gICAgICAgICAgICAgICAgICB3aGlsZShwKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHAtPnR5cGUpCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfcmVwX2lkID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4ocCktPnN0YXRlX2lkOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHApLT5pbmRleCA9PSBpZHgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3JlcF9pZCA9IC0xOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgaWYobmV4dF9yZXBfaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIHAgPSBwLT5uZXh0LnA7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBpZihuZXh0X3JlcF9pZCA+IDApCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxyZV9yZWN1cnNlKj4oc3RhdGUpLT5zdGF0ZV9pZCA9IG5leHRfcmVwX2lkIC0gMTsKLSAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBwID0gcC0+bmV4dC5wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYoIW9rKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gcmVjdXJzaW9uIHRvIHN1Yi1leHByZXNzaW9uIHRoYXQgZG9lc24ndCBleGlzdDoKLSAgICAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpIC8vIHVwZGF0ZSB0aGUgZXJyb3IgY29kZSBpZiBub3QgYWxyZWFkeSBzZXQKLSAgICAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm47Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGV4cHJlc3Npb24sIHdlIHNob3VsZCBiZSBlbXB0eToKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb24gPSAwOwotICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uX2xlbiA9IDA7Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gYW5kIHRocm93IGlmIHJlcXVpcmVkOgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlID0gIkVuY291bnRlcmVkIGEgZm9yd2FyZCByZWZlcmVuY2UgdG8gYSByZWN1cnNpdmUgc3ViLWV4cHJlc3Npb24gdGhhdCBkb2VzIG5vdCBleGlzdC4iOwotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2Vycm9yIGUobWVzc2FnZSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIDApOwotICAgICAgICAgICAgICAgICAgZS5yYWlzZSgpOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpjcmVhdGVfc3RhcnRtYXBzKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIC8vIG5vbi1yZWN1cnNpdmUgaW1wbGVtZW50YXRpb246Ci0gICAvLyBjcmVhdGUgdGhlIGxhc3QgbWFwIGluIHRoZSBtYWNoaW5lIGZpcnN0LCBzbyB0aGF0IGVhcmxpZXIgbWFwcwotICAgLy8gY2FuIG1ha2UgdXNlIG9mIHRoZSByZXN1bHQuLi4KLSAgIC8vCi0gICAvLyBUaGlzIHdhcyBvcmlnaW5hbGx5IGEgcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uLCBidXQgdGhhdCBjYXVzZWQgc3RhY2sKLSAgIC8vIG92ZXJmbG93cyB3aXRoIGNvbXBsZXggZXhwcmVzc2lvbnMgb24gc21hbGwgc3RhY2tzICh0aGluayBDT00rKS4KLQotICAgLy8gc3RhcnQgYnkgc2F2aW5nIHRoZSBjYXNlIHNldHRpbmc6Ci0gICBib29sIGxfaWNhc2UgPSBtX2ljYXNlOwotICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGJvb2wsIHJlX3N5bnRheF9iYXNlKj4gPiB2OwotCi0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2U6Ci0gICAgICAgICAvLyB3ZSBuZWVkIHRvIHRyYWNrIGNhc2UgY2hhbmdlcyBoZXJlOgotICAgICAgICAgbV9pY2FzZSA9IHN0YXRpY19jYXN0PHJlX2Nhc2UqPihzdGF0ZSktPmljYXNlOwotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgY29udGludWU7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2FsdDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgICAgLy8ganVzdCBwdXNoIHRoZSBzdGF0ZSBvbnRvIG91ciBzdGFjayBmb3Igbm93OgotICAgICAgICAgdi5wdXNoX2JhY2soc3RkOjpwYWlyPGJvb2wsIHJlX3N5bnRheF9iYXNlKj4obV9pY2FzZSwgc3RhdGUpKTsKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrc3RlcDoKLSAgICAgICAgIC8vIHdlIG5lZWQgdG8gY2FsY3VsYXRlIGhvdyBiaWcgdGhlIGJhY2tzdGVwIGlzOgotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4Ci0gICAgICAgICAgICA9IHRoaXMtPmNhbGN1bGF0ZV9iYWNrc3RlcChzdGF0ZS0+bmV4dC5wKTsKLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA8IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBPb3BzIGVycm9yOgotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybjsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBjbGVhciB0aGUgZXhwcmVzc2lvbiwgd2Ugc2hvdWxkIGJlIGVtcHR5OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IDA7Ci0gICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gMDsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhbmQgdGhyb3cgaWYgcmVxdWlyZWQ6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiSW52YWxpZCBsb29rYmVoaW5kIGFzc2VydGlvbiBlbmNvdW50ZXJlZCBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uLiI7Ci0gICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgMCk7Ci0gICAgICAgICAgICAgICBlLnJhaXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICB9Ci0gICB9Ci0KLSAgIC8vIG5vdyB3b3JrIHRocm91Z2ggb3VyIGxpc3QsIGJ1aWxkaW5nIGFsbCB0aGUgbWFwcyBhcyB3ZSBnbzoKLSAgIHdoaWxlKHYuc2l6ZSgpKQotICAgewotICAgICAgLy8gSW5pdGlhbGl6ZSBtX3JlY3Vyc2lvbl9jaGVja3MgaWYgd2UgbmVlZCBpdDoKLSAgICAgIGlmKG1faGFzX3JlY3Vyc2lvbnMpCi0gICAgICAgICBtX3JlY3Vyc2lvbl9jaGVja3MuYXNzaWduKDEgKyBtX3BkYXRhLT5tX21hcmtfY291bnQsIGZhbHNlKTsKLQotICAgICAgY29uc3Qgc3RkOjpwYWlyPGJvb2wsIHJlX3N5bnRheF9iYXNlKj4mIHAgPSB2LmJhY2soKTsKLSAgICAgIG1faWNhc2UgPSBwLmZpcnN0OwotICAgICAgc3RhdGUgPSBwLnNlY29uZDsKLSAgICAgIHYucG9wX2JhY2soKTsKLQotICAgICAgLy8gQnVpbGQgbWFwczoKLSAgICAgIG1fYmFkX3JlcGVhdHMgPSAwOwotICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRlLT5uZXh0LnAsIHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+X21hcCwgJnN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+Y2FuX2JlX251bGwsIG1hc2tfdGFrZSk7Ci0gICAgICBtX2JhZF9yZXBlYXRzID0gMDsKLQotICAgICAgaWYobV9oYXNfcmVjdXJzaW9ucykKLSAgICAgICAgIG1fcmVjdXJzaW9uX2NoZWNrcy5hc3NpZ24oMSArIG1fcGRhdGEtPm1fbWFya19jb3VudCwgZmFsc2UpOwotICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+YWx0LnAsIHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+X21hcCwgJnN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+Y2FuX2JlX251bGwsIG1hc2tfc2tpcCk7Ci0gICAgICAvLyBhZGp1c3QgdGhlIHR5cGUgb2YgdGhlIHN0YXRlIHRvIGFsbG93IGZvciBmYXN0ZXIgbWF0Y2hpbmc6Ci0gICAgICBzdGF0ZS0+dHlwZSA9IHRoaXMtPmdldF9yZXBlYXRfdHlwZShzdGF0ZSk7Ci0gICB9Ci0gICAvLyByZXN0b3JlIGNhc2Ugc2Vuc2l0aXZpdHk6Ci0gICBtX2ljYXNlID0gbF9pY2FzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbnQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Y2FsY3VsYXRlX2JhY2tzdGVwKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgaW50IHJlc3VsdCA9IDA7Ci0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgICAgaWYoKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMSkKLSAgICAgICAgICAgIHx8IChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTIpKQotICAgICAgICAgewotICAgICAgICAgICAgc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0zKQotICAgICAgICAgewotICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRtYXJrOgotICAgICAgICAgaWYoKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMSkKLSAgICAgICAgICAgIHx8IChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTIpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9saXRlcmFsOgotICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPihzdGF0ZSktPmxlbmd0aDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93aWxkOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zZXQ6Ci0gICAgICAgICByZXN1bHQgKz0gMTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYmFja3JlZjoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jb21iaW5pbmc6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYmFja3N0ZXA6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PHJlX3JlcGVhdCAqPihzdGF0ZSk7Ci0gICAgICAgICAgICAvLyBhZGp1c3QgdGhlIHR5cGUgb2YgdGhlIHN0YXRlIHRvIGFsbG93IGZvciBmYXN0ZXIgbWF0Y2hpbmc6Ci0gICAgICAgICAgICBzdGF0ZS0+dHlwZSA9IHRoaXMtPmdldF9yZXBlYXRfdHlwZShzdGF0ZSk7Ci0gICAgICAgICAgICBpZigoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfZG90X3JlcCkgCi0gICAgICAgICAgICAgICB8fCAoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfY2hhcl9yZXApCi0gICAgICAgICAgICAgICB8fCAoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihyZXAtPm1heCAhPSByZXAtPm1pbikKLSAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDxpbnQ+KHJlcC0+bWluKTsKLSAgICAgICAgICAgICAgIHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZihzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQpOwotICAgICAgICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KHJlcC0+bmV4dC5wKS0+c2luZ2xldG9uID09IDApCi0gICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICBpZihyZXAtPm1heCAhPSByZXAtPm1pbikKLSAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDxpbnQ+KHJlcC0+bWluKTsKLSAgICAgICAgICAgICAgIHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldDoKLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX3NldF9sb25nPG1fdHlwZT4qPihzdGF0ZSktPnNpbmdsZXRvbiA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgcmVzdWx0ICs9IDE7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfanVtcDoKLSAgICAgICAgIHN0YXRlID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0LnA7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgICAgewotICAgICAgICAgICAgaW50IHIxID0gY2FsY3VsYXRlX2JhY2tzdGVwKHN0YXRlLT5uZXh0LnApOwotICAgICAgICAgICAgaW50IHIyID0gY2FsY3VsYXRlX2JhY2tzdGVwKHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+YWx0LnApOwotICAgICAgICAgICAgaWYoKHIxIDwgMCkgfHwgKHIxICE9IHIyKSkKLSAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyByMTsKLSAgICAgICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgIH0KLSAgIHJldHVybiAtMTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmNyZWF0ZV9zdGFydG1hcChyZV9zeW50YXhfYmFzZSogc3RhdGUsIHVuc2lnbmVkIGNoYXIqIGxfbWFwLCB1bnNpZ25lZCBpbnQqIHBudWxsLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICBpbnQgbm90X2xhc3RfanVtcCA9IDE7Ci0gICByZV9zeW50YXhfYmFzZSogcmVjdXJzaW9uX3N0YXJ0ID0gMDsKLSAgIGludCByZWN1cnNpb25fc3ViID0gMDsKLSAgIHJlX3N5bnRheF9iYXNlKiByZWN1cnNpb25fcmVzdGFydCA9IDA7Ci0KLSAgIC8vIHRyYWNrIGNhc2Ugc2Vuc2l0aXZpdHk6Ci0gICBib29sIGxfaWNhc2UgPSBtX2ljYXNlOwotCi0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2U6Ci0gICAgICAgICBsX2ljYXNlID0gc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KHN0YXRlKS0+aWNhc2U7Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbGl0ZXJhbDoKLSAgICAgIHsKLSAgICAgICAgIC8vIGRvbid0IHNldCBhbnl0aGluZyBpbiAqcG51bGwsIHNldCBlYWNoIGVsZW1lbnQgaW4gbF9tYXAKLSAgICAgICAgIC8vIHRoYXQgY291bGQgbWF0Y2ggdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbDoKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgY2hhclQgZmlyc3RfY2hhciA9ICpzdGF0aWNfY2FzdDxjaGFyVCo+KHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4oc3RhdGUpICsgMSkpOwotICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKG1fdHJhaXRzLnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIGxfaWNhc2UpID09IGZpcnN0X2NoYXIpCi0gICAgICAgICAgICAgICAgICBsX21hcFtpXSB8PSBtYXNrOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRfbGluZToKLSAgICAgIHsKLSAgICAgICAgIC8vIG5leHQgY2hhcmFjdGVyIG11c3QgYmUgYSBsaW5lIHNlcGFyYXRvciAoaWYgdGhlcmUgaXMgb25lKToKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdcbicpXSB8PSBtYXNrOwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdccicpXSB8PSBtYXNrOwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdcZicpXSB8PSBtYXNrOwotICAgICAgICAgICAgbF9tYXBbMHg4NV0gfD0gbWFzazsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIG5vdyBmaWd1cmUgb3V0IGlmIHdlIGNhbiBtYXRjaCBhIE5VTEwgc3RyaW5nIGF0IHRoaXMgcG9pbnQ6Ci0gICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChzdGF0ZS0+bmV4dC5wLCAwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlY3Vyc2U6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspCi0gICAgICAgICAgICAgICByZWN1cnNpb25fc3ViID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3N1YiA9IDA7Ci0gICAgICAgICAgICBpZihtX3JlY3Vyc2lvbl9jaGVja3NbcmVjdXJzaW9uX3N1Yl0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBJbmZpbml0ZSByZWN1cnNpb24hIQotICAgICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybjsKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAvLyBjbGVhciB0aGUgZXhwcmVzc2lvbiwgd2Ugc2hvdWxkIGJlIGVtcHR5OgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IDA7Ci0gICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gMDsKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAvLyBhbmQgdGhyb3cgaWYgcmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiRW5jb3VudGVyZWQgYW4gaW5maW5pdGUgcmVjdXJzaW9uLiI7Ci0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgMCk7Ci0gICAgICAgICAgICAgICAgICBlLnJhaXNlKCk7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKHJlY3Vyc2lvbl9zdGFydCA9PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3N0YXJ0ID0gc3RhdGU7Ci0gICAgICAgICAgICAgICByZWN1cnNpb25fcmVzdGFydCA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5wOwotICAgICAgICAgICAgICAgbV9yZWN1cnNpb25fY2hlY2tzW3JlY3Vyc2lvbl9zdWJdID0gdHJ1ZTsKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9yZWN1cnNpb25fY2hlY2tzW3JlY3Vyc2lvbl9zdWJdID0gdHJ1ZTsKLSAgICAgICAgICAgIC8vIGNhbid0IGhhbmRsZSBuZXN0ZWQgcmVjdXJzaW9uIGhlcmUuLi4KLSAgICAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrcmVmOgotICAgICAgICAgLy8gY2FuIGJlIG51bGwsIGFuZCBhbnkgY2hhcmFjdGVyIGNhbiBtYXRjaDoKLSAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd2lsZDoKLSAgICAgIHsKLSAgICAgICAgIC8vIGNhbid0IGJlIG51bGwsIGFueSBjaGFyYWN0ZXIgY2FuIG1hdGNoOgotICAgICAgICAgc2V0X2FsbF9tYXNrcyhsX21hcCwgbWFzayk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X21hdGNoOgotICAgICAgewotICAgICAgICAgLy8gbXVzdCBiZSBudWxsLCBhbnkgY2hhcmFjdGVyIGNhbiBtYXRjaDoKLSAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydDoKLSAgICAgIHsKLSAgICAgICAgIC8vIHJlY3Vyc2UsIHRoZW4gQU5EIHdpdGggYWxsIHRoZSB3b3JkIGNoYXJhY3RlcnM6Ci0gICAgICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGUtPm5leHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKCFtX3RyYWl0cy5pc2N0eXBlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbV93b3JkX21hc2spKQotICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gJj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ofm1hc2spOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX2VuZDoKLSAgICAgIHsKLSAgICAgICAgIC8vIHJlY3Vyc2UsIHRoZW4gQU5EIHdpdGggYWxsIHRoZSB3b3JkIGNoYXJhY3RlcnM6Ci0gICAgICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGUtPm5leHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKG1fdHJhaXRzLmlzY3R5cGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICAgICAgICAgICBsX21hcFtpXSAmPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih+bWFzayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyB3ZSAqbXVzdCBiZSBudWxsKiA6Ci0gICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldDoKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oc3RhdGUpLT5zaW5nbGV0b24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2hhclQgYyA9IHN0YXRpY19jYXN0PGNoYXJUPihpKTsKLSAgICAgICAgICAgICAgICAgIGlmKCZjICE9IHJlX2lzX3NldF9tZW1iZXIoJmMsICZjICsgMSwgc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KHN0YXRlKSwgKm1fcGRhdGEsIGxfaWNhc2UpKQotICAgICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gfD0gbWFzazsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zZXQ6Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9zZXQqPihzdGF0ZSktPl9tYXBbCi0gICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3RyYWl0cy50cmFuc2xhdGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBsX2ljYXNlKSldKQotICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gfD0gbWFzazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfanVtcDoKLSAgICAgICAgIC8vIHRha2UgdGhlIGp1bXA6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+YWx0LnA7Ci0gICAgICAgICBub3RfbGFzdF9qdW1wID0gLTE7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICByZV9hbHQqIHJlcCA9IHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKTsKLSAgICAgICAgICAgIGlmKHJlcC0+X21hcFswXSAmIG1hc2tfaW5pdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgLy8gY29weSBwcmV2aW91cyByZXN1bHRzOgotICAgICAgICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8PSBVQ0hBUl9NQVg7ICsraSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIGlmKHJlcC0+X21hcFtpXSAmIG1hc2tfYW55KQotICAgICAgICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gfD0gbWFzazsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgaWYocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfYW55KQotICAgICAgICAgICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyB3ZSBoYXZlbid0IGNyZWF0ZWQgYSBzdGFydG1hcCBmb3IgdGhpcyBhbHRlcm5hdGl2ZSB5ZXQKLSAgICAgICAgICAgICAgIC8vIHNvIHRha2UgdGhlIHVuaW9uIG9mIHRoZSB0d28gb3B0aW9uczoKLSAgICAgICAgICAgICAgIGlmKGlzX2JhZF9yZXBlYXQoc3RhdGUpKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgc2V0X2FsbF9tYXNrcyhsX21hcCwgbWFzayk7Ci0gICAgICAgICAgICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgc2V0X2JhZF9yZXBlYXQoc3RhdGUpOwotICAgICAgICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRlLT5uZXh0LnAsIGxfbWFwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICAgICAgICBpZigoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYWx0KQotICAgICAgICAgICAgICAgICAgfHwgKHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHN0YXRlKS0+bWluID09IDApCi0gICAgICAgICAgICAgICAgICB8fCAobm90X2xhc3RfanVtcCA9PSAwKSkKLSAgICAgICAgICAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChyZXAtPmFsdC5wLCBsX21hcCwgcG51bGwsIG1hc2spOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zb2Z0X2J1ZmZlcl9lbmQ6Ci0gICAgICAgICAvLyBtYXRjaCBuZXdsaW5lIG9yIG51bGw6Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGxfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPignXG4nKV0gfD0gbWFzazsKLSAgICAgICAgICAgIGxfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPignXHInKV0gfD0gbWFzazsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICAgICAvLyBuZWVkIHRvIGhhbmRsZSBpbmRlcGVuZGVudCBzdWJzIGFzIGEgc3BlY2lhbCBjYXNlOgotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4IDwgMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGNhbiBiZSBudWxsLCBhbnkgY2hhcmFjdGVyIGNhbiBtYXRjaDoKLSAgICAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYocmVjdXJzaW9uX3N0YXJ0ICYmIChyZWN1cnNpb25fc3ViICE9IDApICYmIChyZWN1cnNpb25fc3ViID09IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyByZWN1cnNpb24gdGVybWluYXRpb246Ci0gICAgICAgICAgICByZWN1cnNpb25fc3RhcnQgPSAwOwotICAgICAgICAgICAgc3RhdGUgPSByZWN1cnNpb25fcmVzdGFydDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotCi0gICAgICAgICAvLwotICAgICAgICAgLy8gTm9ybWFsbHkgd2UganVzdCBnbyB0byB0aGUgbmV4dCBzdGF0ZS4uLiBidXQgaWYgdGhpcyBzdWItZXhwcmVzc2lvbiBpcwotICAgICAgICAgLy8gdGhlIHRhcmdldCBvZiBhIHJlY3Vyc2lvbiwgdGhlbiB3ZSBtaWdodCBiZSBlbmRpbmcgYSByZWN1cnNpb24sIGluIHdoaWNoCi0gICAgICAgICAvLyBjYXNlIHdlIHNob3VsZCBjaGVjayB3aGF0ZXZlciBmb2xsb3dzIHRoYXQgcmVjdXJzaW9uLCBhcyB3ZWxsIGFzIHdoYXRldmVyCi0gICAgICAgICAvLyBmb2xsb3dzIHRoaXMgc3RhdGU6Ci0gICAgICAgICAvLwotICAgICAgICAgaWYobV9wZGF0YS0+bV9oYXNfcmVjdXJzaW9ucyAmJiBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgICAgICAgICByZV9zeW50YXhfYmFzZSogcCA9IG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGU7Ci0gICAgICAgICAgICB3aGlsZShwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYocC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9yZWN1cnNlKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgcmVfYnJhY2UqIHAyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0aWNfY2FzdDxyZV9qdW1wKj4ocCktPmFsdC5wKTsKLSAgICAgICAgICAgICAgICAgIGlmKChwMi0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspICYmIChwMi0+aW5kZXggPT0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4KSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgcCA9IHAtPm5leHQucDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKG9rKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHAtPm5leHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyazoKLSAgICAgICAgIC8vIG5lZWQgdG8gaGFuZGxlIGluZGVwZW5kZW50IHN1YnMgYXMgYSBzcGVjaWFsIGNhc2U6Ci0gICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTMpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgfQotICAgICAgKytub3RfbGFzdF9qdW1wOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXVuc2lnbmVkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmdldF9yZXN0YXJ0X3R5cGUocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgLy8KLSAgIC8vIGZpbmQgb3V0IGhvdyB0aGUgbWFjaGluZSBzdGFydHMsIHNvIHdlIGNhbiBvcHRpbWlzZSB0aGUgc2VhcmNoOgotICAgLy8KLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydG1hcms6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZToKLSAgICAgICAgIHJldHVybiByZWdiYXNlOjpyZXN0YXJ0X2xpbmU7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQ6Ci0gICAgICAgICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF93b3JkOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQ6Ci0gICAgICAgICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF9idWY7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWU6Ci0gICAgICAgICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF9jb250aW51ZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBzdGF0ZSA9IDA7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiByZWdiYXNlOjpyZXN0YXJ0X2FueTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OnNldF9hbGxfbWFza3ModW5zaWduZWQgY2hhciogYml0cywgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgLy8KLSAgIC8vIHNldCBtYXNrIGluIGFsbCBvZiBiaXRzIGVsZW1lbnRzLCAKLSAgIC8vIGlmIGJpdHNbMF0gaGFzIG1hc2tfaW5pdCBub3Qgc2V0IHRoZW4gd2UgY2FuIAotICAgLy8gb3B0aW1pc2UgdGhpcyB0byBhIGNhbGwgdG8gbWVtc2V0OgotICAgLy8KLSAgIGlmKGJpdHMpCi0gICB7Ci0gICAgICBpZihiaXRzWzBdID09IDApCi0gICAgICAgICAoc3RkOjptZW1zZXQpKGJpdHMsIG1hc2ssIDF1IDw8IENIQVJfQklUKTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIGJpdHNbaV0gfD0gbWFzazsKLSAgICAgIH0KLSAgICAgIGJpdHNbMF0gfD0gbWFza19pbml0OwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6aXNfYmFkX3JlcGVhdChyZV9zeW50YXhfYmFzZSogcHQpCi17Ci0gICBzd2l0Y2gocHQtPnR5cGUpCi0gICB7Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgIHsKLSAgICAgICAgIHVuc2lnbmVkIHN0YXRlX2lkID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4ocHQpLT5zdGF0ZV9pZDsKLSAgICAgICAgIGlmKHN0YXRlX2lkID4gc2l6ZW9mKG1fYmFkX3JlcGVhdHMpICogQ0hBUl9CSVQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIHJ1biBvdXQgb2YgYml0cywgYXNzdW1lIHdlIGNhbid0IHRyYXZlcnNlIHRoaXMgb25lLgotICAgICAgICAgc3RhdGljIGNvbnN0IG5kbmJvb3N0Ojp1aW50bWF4X3Qgb25lID0gMXVMOwotICAgICAgICAgcmV0dXJuIG1fYmFkX3JlcGVhdHMgJiAob25lIDw8IHN0YXRlX2lkKTsKLSAgICAgIH0KLSAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpzZXRfYmFkX3JlcGVhdChyZV9zeW50YXhfYmFzZSogcHQpCi17Ci0gICBzd2l0Y2gocHQtPnR5cGUpCi0gICB7Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgIHsKLSAgICAgICAgIHVuc2lnbmVkIHN0YXRlX2lkID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4ocHQpLT5zdGF0ZV9pZDsKLSAgICAgICAgIHN0YXRpYyBjb25zdCBuZG5ib29zdDo6dWludG1heF90IG9uZSA9IDF1TDsKLSAgICAgICAgIGlmKHN0YXRlX2lkIDw9IHNpemVvZihtX2JhZF9yZXBlYXRzKSAqIENIQVJfQklUKQotICAgICAgICAgICAgbV9iYWRfcmVwZWF0cyB8PSAob25lIDw8IHN0YXRlX2lkKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXN5bnRheF9lbGVtZW50X3R5cGUgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Z2V0X3JlcGVhdF90eXBlKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgaWYoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfcmVwKQotICAgewotICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSByZXBlYXRpbmcgYSBzaW5nbGUgc3RhdGU6Ci0gICAgICBpZihzdGF0ZS0+bmV4dC5wLT5uZXh0LnAtPm5leHQucCA9PSBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmFsdC5wKQotICAgICAgewotICAgICAgICAgc3dpdGNoKHN0YXRlLT5uZXh0LnAtPnR5cGUpCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfd2lsZDoKLSAgICAgICAgICAgIHJldHVybiByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2RvdF9yZXA7Ci0gICAgICAgICBjYXNlIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfbGl0ZXJhbDoKLSAgICAgICAgICAgIHJldHVybiByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2NoYXJfcmVwOwotICAgICAgICAgY2FzZSByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X3NldDoKLSAgICAgICAgICAgIHJldHVybiByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA7Ci0gICAgICAgICBjYXNlIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfbG9uZ19zZXQ6Ci0gICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9kZXRhaWw6OnJlX3NldF9sb25nPG1fdHlwZT4qPihzdGF0ZS0+bmV4dC5wKS0+c2luZ2xldG9uKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gc3RhdGUtPnR5cGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+Ojpwcm9iZV9sZWFkaW5nX3JlcGVhdChyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICAvLyBlbnVtZXJhdGUgb3VyIHN0YXRlcywgYW5kIHNlZSBpZiB3ZSBoYXZlIGEgbGVhZGluZyByZXBlYXQgCi0gICAvLyBmb3Igd2hpY2ggZmFpbGVkIHNlYXJjaCByZXN0YXJ0cyBjYW4gYmUgb3B0aW1pc2VkOwotICAgZG8KLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID49IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTEpCi0gICAgICAgICAgICB8fCAoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0yKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHNraXAgcGFzdCB0aGUgemVybyB3aWR0aCBhc3NlcnRpb246Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0zKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gSGF2ZSB0byBza2lwIHRoZSBsZWFkaW5nIGp1bXAgc3RhdGU6Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRtYXJrOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRfbGluZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfZW5kOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWU6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgICAgIGlmKHRoaXMtPm1faGFzX2JhY2tyZWZzID09IDApCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPihzdGF0ZSktPmxlYWRpbmcgPSB0cnVlOwotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgfXdoaWxlKHN0YXRlKTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X3BhcnNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X3BhcnNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNzJlNDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9wYXJzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg3NCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGJhc2ljX3JlZ2V4X3BhcnNlci5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3JlZ2V4X3BhcnNlci4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9QQVJTRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX1BBUlNFUl9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0IDQ4MDApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9wYXJzZXIgOiBwdWJsaWMgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPgotewotcHVibGljOgotICAgYmFzaWNfcmVnZXhfcGFyc2VyKHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qIGRhdGEpOwotICAgdm9pZCBwYXJzZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMiwgdW5zaWduZWQgZmxhZ3MpOwotICAgdm9pZCBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnJvcl9jb2RlLCBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbik7Ci0gICB2b2lkIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uLCBzdGQ6OnN0cmluZyBtZXNzYWdlLCBzdGQ6OnB0cmRpZmZfdCBzdGFydF9wb3MpOwotICAgdm9pZCBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnJvcl9jb2RlLCBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbiwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpCi0gICB7Ci0gICAgICBmYWlsKGVycm9yX2NvZGUsIHBvc2l0aW9uLCBtZXNzYWdlLCBwb3NpdGlvbik7Ci0gICB9Ci0KLSAgIGJvb2wgcGFyc2VfYWxsKCk7Ci0gICBib29sIHBhcnNlX2Jhc2ljKCk7Ci0gICBib29sIHBhcnNlX2V4dGVuZGVkKCk7Ci0gICBib29sIHBhcnNlX2xpdGVyYWwoKTsKLSAgIGJvb2wgcGFyc2Vfb3Blbl9wYXJlbigpOwotICAgYm9vbCBwYXJzZV9iYXNpY19lc2NhcGUoKTsKLSAgIGJvb2wgcGFyc2VfZXh0ZW5kZWRfZXNjYXBlKCk7Ci0gICBib29sIHBhcnNlX21hdGNoX2FueSgpOwotICAgYm9vbCBwYXJzZV9yZXBlYXQoc3RkOjpzaXplX3QgbG93ID0gMCwgc3RkOjpzaXplX3QgaGlnaCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KSgpKTsKLSAgIGJvb2wgcGFyc2VfcmVwZWF0X3JhbmdlKGJvb2wgaXNiYXNpYyk7Ci0gICBib29sIHBhcnNlX2FsdCgpOwotICAgYm9vbCBwYXJzZV9zZXQoKTsKLSAgIGJvb2wgcGFyc2VfYmFja3JlZigpOwotICAgdm9pZCBwYXJzZV9zZXRfbGl0ZXJhbChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpOwotICAgYm9vbCBwYXJzZV9pbm5lcl9zZXQoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KTsKLSAgIGJvb2wgcGFyc2VfUUUoKTsKLSAgIGJvb2wgcGFyc2VfcGVybF9leHRlbnNpb24oKTsKLSAgIGJvb2wgYWRkX2VtYWNzX2NvZGUoYm9vbCBuZWdhdGUpOwotICAgYm9vbCB1bndpbmRfYWx0cyhzdGQ6OnB0cmRpZmZfdCBsYXN0X3BhcmVuX3N0YXJ0KTsKLSAgIGRpZ3JhcGg8Y2hhclQ+IGdldF9uZXh0X3NldF9saXRlcmFsKGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCk7Ci0gICBjaGFyVCB1bmVzY2FwZV9jaGFyYWN0ZXIoKTsKLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIHBhcnNlX29wdGlvbnMoKTsKLQotcHJpdmF0ZToKLSAgIHR5cGVkZWYgYm9vbCAoYmFzaWNfcmVnZXhfcGFyc2VyOjoqcGFyc2VyX3Byb2NfdHlwZSkoKTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgcGFyc2VyX3Byb2NfdHlwZSAgICAgICAgICAgbV9wYXJzZXJfcHJvYzsgICAgLy8gdGhlIG1haW4gcGFyc2VyIHRvIHVzZQotICAgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgbV9iYXNlOyAgICAgICAgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgYmVpbmcgcGFyc2VkCi0gICBjb25zdCBjaGFyVCogICAgICAgICAgICAgICBtX2VuZDsgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYmVpbmcgcGFyc2VkCi0gICBjb25zdCBjaGFyVCogICAgICAgICAgICAgICBtX3Bvc2l0aW9uOyAgICAgICAvLyBvdXIgY3VycmVudCBwYXJzZXIgcG9zaXRpb24KLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgIG1fbWFya19jb3VudDsgICAgIC8vIGhvdyBtYW55IHN1Yi1leHByZXNzaW9ucyB3ZSBoYXZlCi0gICBpbnQgICAgICAgICAgICAgICAgICAgICAgICBtX21hcmtfcmVzZXQ7ICAgICAvLyB1c2VkIHRvIGluZGljYXRlIHRoYXQgd2UncmUgaW5zaWRlIGEgKD98Li4uKSBibG9jay4KLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgIG1fbWF4X21hcms7ICAgICAgIC8vIGxhcmdlc3QgbWFyayBjb3VudCBzZWVuIGluc2lkZSBhICg/fC4uLikgYmxvY2suCi0gICBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICBtX3BhcmVuX3N0YXJ0OyAgICAvLyB3aGVyZSB0aGUgbGFzdCBzZWVuICcpJyBiZWdhbiAod2hlcmUgcmVwZWF0cyBhcmUgaW5zZXJ0ZWQpLgotICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgbV9hbHRfaW5zZXJ0X3BvaW50OyAvLyB3aGVyZSB0byBpbnNlcnQgdGhlIG5leHQgYWx0ZXJuYXRpdmUKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgIG1faGFzX2Nhc2VfY2hhbmdlOyAvLyB0cnVlIGlmIHNvbWV3aGVyZSBpbiB0aGUgY3VycmVudCBibG9jayB0aGUgY2FzZSBoYXMgY2hhbmdlZAotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgZGVmaW5lZChfTV9JWDg2KQotICAgLy8gVGhpcyBpcyBhbiB1Z2x5IHdhcm5pbmcgc3VwcHJlc3Npb24gd29ya2Fyb3VuZCAoZm9yIHdhcm5pbmdzICppbnNpZGUqIHN0ZDo6dmVjdG9yCi0gICAvLyB0aGF0IGNhbiBub3Qgb3RoZXJ3aXNlIGJlIHN1cHByZXNzZWQpLi4uCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihsb25nKSA+PSBzaXplb2Yodm9pZCopKTsKLSAgIHN0ZDo6dmVjdG9yPGxvbmc+ICAgICAgICAgICBtX2FsdF9qdW1wczsgICAgICAvLyBsaXN0IG9mIGFsdGVybmF0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLgotI2Vsc2UKLSAgIHN0ZDo6dmVjdG9yPHN0ZDo6cHRyZGlmZl90PiBtX2FsdF9qdW1wczsgICAgICAvLyBsaXN0IG9mIGFsdGVybmF0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLgotI2VuZGlmCi0KLSAgIGJhc2ljX3JlZ2V4X3BhcnNlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3JlZ2V4X3BhcnNlciYpOwotICAgYmFzaWNfcmVnZXhfcGFyc2VyKGNvbnN0IGJhc2ljX3JlZ2V4X3BhcnNlciYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1iYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmJhc2ljX3JlZ2V4X3BhcnNlcihyZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KiBkYXRhKQotICAgOiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+KGRhdGEpLCBtX21hcmtfY291bnQoMCksIG1fbWFya19yZXNldCgtMSksIG1fbWF4X21hcmsoMCksIG1fcGFyZW5fc3RhcnQoMCksIG1fYWx0X2luc2VydF9wb2ludCgwKSwgbV9oYXNfY2FzZV9jaGFuZ2UoZmFsc2UpCi17Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyLCB1bnNpZ25lZCBsX2ZsYWdzKQotewotICAgLy8gcGFzcyBsX2ZsYWdzIG9uIHRvIGJhc2UgY2xhc3M6Ci0gICB0aGlzLT5pbml0KGxfZmxhZ3MpOwotICAgLy8gc2V0IHVwIHBvaW50ZXJzOgotICAgbV9wb3NpdGlvbiA9IG1fYmFzZSA9IHAxOwotICAgbV9lbmQgPSBwMjsKLSAgIC8vIGVtcHR5IHN0cmluZ3MgYXJlIGVycm9yczoKLSAgIGlmKChwMSA9PSBwMikgJiYgCi0gICAgICAoCi0gICAgICAgICAoKGxfZmxhZ3MgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSAhPSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cCkKLSAgICAgICAgIHx8IChsX2ZsYWdzICYgcmVnYmFzZTo6bm9fZW1wdHlfZXhwcmVzc2lvbnMpCi0gICAgICApCi0gICAgICkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSwgMCk7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICAvLyBzZWxlY3Qgd2hpY2ggcGFyc2VyIHRvIHVzZToKLSAgIHN3aXRjaChsX2ZsYWdzICYgcmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSkKLSAgIHsKLSAgIGNhc2UgcmVnYmFzZTo6cGVybF9zeW50YXhfZ3JvdXA6Ci0gICAgICB7Ci0gICAgICAgICBtX3BhcnNlcl9wcm9jID0gJmJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfZXh0ZW5kZWQ7Ci0gICAgICAgICAvLwotICAgICAgICAgLy8gQWRkIGEgbGVhZGluZyBwYXJlbiB3aXRoIGluZGV4IHplcm8gdG8gZ2l2ZSByZWN1cnNpb25zIGEgdGFyZ2V0OgotICAgICAgICAgLy8KLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgYnItPmluZGV4ID0gMDsKLSAgICAgICAgIGJyLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSByZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXA6Ci0gICAgICBtX3BhcnNlcl9wcm9jID0gJmJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYmFzaWM7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnYmFzZTo6bGl0ZXJhbDoKLSAgICAgIG1fcGFyc2VyX3Byb2MgPSAmYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9saXRlcmFsOwotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgLy8gT29vcHMsIHNvbWVvbmUgaGFzIG1hbmFnZWQgdG8gc2V0IG1vcmUgdGhhbiBvbmUgb2YgdGhlIG1haW4gb3B0aW9uIGZsYWdzLCAKLSAgICAgIC8vIHNvIHRoaXMgbXVzdCBiZSBhbiBlcnJvcjoKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl91bmtub3duLCAwLCAiQW4gaW52YWxpZCBjb21iaW5hdGlvbiBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4IGZsYWdzIHdhcyB1c2VkLiIpOwotICAgICAgcmV0dXJuOwotICAgfQotCi0gICAvLyBwYXJzZSBhbGwgb3VyIGNoYXJhY3RlcnM6Ci0gICBib29sIHJlc3VsdCA9IHBhcnNlX2FsbCgpOwotICAgLy8KLSAgIC8vIFVud2luZCBvdXIgYWx0ZXJuYXRpdmVzOgotICAgLy8KLSAgIHVud2luZF9hbHRzKC0xKTsKLSAgIC8vIHJlc2V0IGxfZmxhZ3MgYXMgYSBnbG9iYWwgc2NvcGUgKD9pbXN4KSBtYXkgaGF2ZSBhbHRlcmVkIHRoZW06Ci0gICB0aGlzLT5mbGFncyhsX2ZsYWdzKTsKLSAgIC8vIGlmIHdlIGhhdmVuJ3QgZ29iYmxlZCB1cCBhbGwgdGhlIGNoYXJhY3RlcnMgdGhlbiB3ZSBtdXN0Ci0gICAvLyBoYXZlIGhhZCBhbiB1bmV4cGVjdGVkICcpJyA6Ci0gICBpZighcmVzdWx0KQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbiksICJGb3VuZCBhIGNsb3NpbmcgKSB3aXRoIG5vIGNvcnJlc3BvbmRpbmcgb3BlbmVuaW5nIHBhcmVudGhlc2lzLiIpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgLy8gaWYgYW4gZXJyb3IgaGFzIGJlZW4gc2V0IHRoZW4gZ2l2ZSB1cCBub3c6Ci0gICBpZih0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykKLSAgICAgIHJldHVybjsKLSAgIC8vIGZpbGwgaW4gb3VyIHN1Yi1leHByZXNzaW9uIGNvdW50OgotICAgdGhpcy0+bV9wZGF0YS0+bV9tYXJrX2NvdW50ID0gMSArIG1fbWFya19jb3VudDsKLSAgIHRoaXMtPmZpbmFsaXplKHAxLCBwMik7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uKQotewotICAgLy8gZ2V0IHRoZSBlcnJvciBtZXNzYWdlOgotICAgc3RkOjpzdHJpbmcgbWVzc2FnZSA9IHRoaXMtPm1fcGRhdGEtPm1fcHRyYWl0cy0+ZXJyb3Jfc3RyaW5nKGVycm9yX2NvZGUpOwotICAgZmFpbChlcnJvcl9jb2RlLCBwb3NpdGlvbiwgbWVzc2FnZSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uLCBzdGQ6OnN0cmluZyBtZXNzYWdlLCBzdGQ6OnB0cmRpZmZfdCBzdGFydF9wb3MpCi17Ci0gICBpZigwID09IHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKSAvLyB1cGRhdGUgdGhlIGVycm9yIGNvZGUgaWYgbm90IGFscmVhZHkgc2V0Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cyA9IGVycm9yX2NvZGU7Ci0gICBtX3Bvc2l0aW9uID0gbV9lbmQ7IC8vIGRvbid0IGJvdGhlciBwYXJzaW5nIGFueXRoaW5nIGVsc2UKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0gICAvLwotICAgLy8gQXVnbWVudCBlcnJvciBtZXNzYWdlIHdpdGggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXh0OgotICAgLy8KLSAgIGlmKHN0YXJ0X3BvcyA9PSBwb3NpdGlvbikKLSAgICAgIHN0YXJ0X3BvcyA9IChzdGQ6Om1heCkoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDApLCBwb3NpdGlvbiAtIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigxMCkpOwotICAgc3RkOjpwdHJkaWZmX3QgZW5kX3BvcyA9IChzdGQ6Om1pbikocG9zaXRpb24gKyBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMTApLCBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4obV9lbmQgLSBtX2Jhc2UpKTsKLSAgIGlmKGVycm9yX2NvZGUgIT0gcmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSkKLSAgIHsKLSAgICAgIGlmKChzdGFydF9wb3MgIT0gMCkgfHwgKGVuZF9wb3MgIT0gKG1fZW5kIC0gbV9iYXNlKSkpCi0gICAgICAgICBtZXNzYWdlICs9ICIgIFRoZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gZnJhZ21lbnQ6ICciOwotICAgICAgZWxzZQotICAgICAgICAgbWVzc2FnZSArPSAiICBUaGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcGFyc2luZyB0aGUgcmVndWxhciBleHByZXNzaW9uOiAnIjsKLSAgICAgIGlmKHN0YXJ0X3BvcyAhPSBlbmRfcG9zKQotICAgICAgewotICAgICAgICAgbWVzc2FnZSArPSBzdGQ6OnN0cmluZyhtX2Jhc2UgKyBzdGFydF9wb3MsIG1fYmFzZSArIHBvc2l0aW9uKTsKLSAgICAgICAgIG1lc3NhZ2UgKz0gIj4+PkhFUkU+Pj4iOwotICAgICAgICAgbWVzc2FnZSArPSBzdGQ6OnN0cmluZyhtX2Jhc2UgKyBwb3NpdGlvbiwgbV9iYXNlICsgZW5kX3Bvcyk7Ci0gICAgICB9Ci0gICAgICBtZXNzYWdlICs9ICInLiI7Ci0gICB9Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpKQotICAgewotICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2Vycm9yIGUobWVzc2FnZSwgZXJyb3JfY29kZSwgcG9zaXRpb24pOwotICAgICAgZS5yYWlzZSgpOwotICAgfQotI2Vsc2UKLSAgICh2b2lkKXBvc2l0aW9uOyAvLyBzdXBwcmVzcyB3YXJuaW5ncy4KLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9hbGwoKQotewotICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgd2hpbGUocmVzdWx0ICYmIChtX3Bvc2l0aW9uICE9IG1fZW5kKSkKLSAgIHsKLSAgICAgIHJlc3VsdCA9ICh0aGlzLT4qbV9wYXJzZXJfcHJvYykoKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ3MDIpCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2Jhc2ljKCkKLXsKLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZToKLSAgICAgIHJldHVybiBwYXJzZV9iYXNpY19lc2NhcGUoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG90OgotICAgICAgcmV0dXJuIHBhcnNlX21hdGNoX2FueSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jYXJldDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb2xsYXI6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfZW5kX2xpbmUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3N0YXI6Ci0gICAgICBpZighKHRoaXMtPm1fbGFzdF9zdGF0ZSkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKSkKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KCk7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICBpZighKHRoaXMtPm1fbGFzdF9zdGF0ZSkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKSB8fCAhKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgxKTsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb246Ci0gICAgICBpZighKHRoaXMtPm1fbGFzdF9zdGF0ZSkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKSB8fCAhKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgwLCAxKTsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9zZXQ6Ci0gICAgICByZXR1cm4gcGFyc2Vfc2V0KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25ld2xpbmU6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bmV3bGluZV9hbHQpCi0gICAgICAgICByZXR1cm4gcGFyc2VfYWx0KCk7Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfZXh0ZW5kZWQoKQotewotICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrOgotICAgICAgcmV0dXJuIHBhcnNlX29wZW5fcGFyZW4oKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyazoKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlOgotICAgICAgcmV0dXJuIHBhcnNlX2V4dGVuZGVkX2VzY2FwZSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb3Q6Ci0gICAgICByZXR1cm4gcGFyc2VfbWF0Y2hfYW55KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NhcmV0OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKAotICAgICAgICAgKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX21vZF9tID8gc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0IDogc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvbGxhcjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZSgKLSAgICAgICAgICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19tb2RfbSA/IHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQgOiBzeW50YXhfZWxlbWVudF9lbmRfbGluZSkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3N0YXI6Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoaXMtPm1fYmFzZSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIDAsICJUaGUgcmVwZWF0IG9wZXJhdG9yIFwiKlwiIGNhbm5vdCBzdGFydCBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb246Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoaXMtPm1fYmFzZSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIDAsICJUaGUgcmVwZWF0IG9wZXJhdG9yIFwiP1wiIGNhbm5vdCBzdGFydCBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMCwxKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1czoKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gdGhpcy0+bV9iYXNlKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgMCwgIlRoZSByZXBlYXQgb3BlcmF0b3IgXCIrXCIgY2Fubm90IHN0YXJ0IGEgcmVndWxhciBleHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgxKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZToKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXRfcmFuZ2UoZmFsc2UpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZToKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgIkZvdW5kIGEgY2xvc2luZyByZXBldGl0aW9uIG9wZXJhdG9yIH0gd2l0aCBubyBjb3JyZXNwb25kaW5nIHsuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29yOgotICAgICAgcmV0dXJuIHBhcnNlX2FsdCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX3NldDoKLSAgICAgIHJldHVybiBwYXJzZV9zZXQoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbmV3bGluZToKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpuZXdsaW5lX2FsdCkKLSAgICAgICAgIHJldHVybiBwYXJzZV9hbHQoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2hhc2g6Ci0gICAgICAvLwotICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1vZF94IGZsYWcgc2V0LCB0aGVuIHNraXAgdW50aWwKLSAgICAgIC8vIHdlIGdldCB0byBhIG5ld2xpbmUgY2hhcmFjdGVyOgotICAgICAgLy8KLSAgICAgIGlmKCh0aGlzLT5mbGFncygpIAotICAgICAgICAgJiAocmVnYmFzZTo6bm9fcGVybF9leHxyZWdiYXNlOjptb2RfeCkpCi0gICAgICAgICA9PSByZWdiYXNlOjptb2RfeCkKLSAgICAgIHsKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAhaXNfc2VwYXJhdG9yKCptX3Bvc2l0aW9uKyspKXt9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgZGVmYXVsdDoKLSAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2xpdGVyYWwoKQotewotICAgLy8gYXBwZW5kIHRoaXMgYXMgYSBsaXRlcmFsIHByb3ZpZGVkIGl0J3Mgbm90IGEgc3BhY2UgY2hhcmFjdGVyCi0gICAvLyBvciB0aGUgcGVybCBvcHRpb24gcmVnYmFzZTo6bW9kX3ggaXMgbm90IHNldDoKLSAgIGlmKAotICAgICAgKCh0aGlzLT5mbGFncygpIAotICAgICAgICAgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZXxyZWdiYXNlOjptb2RfeHxyZWdiYXNlOjpub19wZXJsX2V4KSkgCi0gICAgICAgICAgICAhPSByZWdiYXNlOjptb2RfeCkKLSAgICAgIHx8ICF0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwoKm1fcG9zaXRpb24pOwotICAgKyttX3Bvc2l0aW9uOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX29wZW5fcGFyZW4oKQotewotICAgLy8KLSAgIC8vIHNraXAgdGhlICcoJyBhbmQgZXJyb3IgY2hlY2s6Ci0gICAvLwotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vCi0gICAvLyBiZWdpbiBieSBjaGVja2luZyBmb3IgYSBwZXJsLXN0eWxlICg/Li4uKSBleHRlbnNpb246Ci0gICAvLwotICAgaWYoCi0gICAgICAgICAoKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSA9PSAwKQotICAgICAgICAgfHwgKCh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjplbWFjc19leCkpID09IChyZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXB8cmVnYmFzZTo6ZW1hY3NfZXgpKQotICAgICApCi0gICB7Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb24pCi0gICAgICAgICByZXR1cm4gcGFyc2VfcGVybF9leHRlbnNpb24oKTsKLSAgIH0KLSAgIC8vCi0gICAvLyB1cGRhdGUgb3VyIG1hcmsgY291bnQsIGFuZCBhcHBlbmQgdGhlIHJlcXVpcmVkIHN0YXRlOgotICAgLy8KLSAgIHVuc2lnbmVkIG1hcmtpZCA9IDA7Ci0gICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9zdWJzKSkKLSAgIHsKLSAgICAgIG1hcmtpZCA9ICsrbV9tYXJrX2NvdW50OwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pCi0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMucHVzaF9iYWNrKHN0ZDo6cGFpcjxzdGQ6OnNpemVfdCwgc3RkOjpzaXplX3Q+KHN0ZDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKSAtIDEsIDApKTsKLSNlbHNlCi0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLnB1c2hfYmFjayhzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PigobV9wb3NpdGlvbiAtIG1fYmFzZSkgLSAxLCAwKSk7Ci0jZW5kaWYKLSAgIH0KLSAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgcGItPmluZGV4ID0gbWFya2lkOwotICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgc3RkOjpwdHJkaWZmX3QgbGFzdF9wYXJlbl9zdGFydCA9IHRoaXMtPmdldG9mZnNldChwYik7Ci0gICAvLyBiYWNrIHVwIGluc2VydGlvbiBwb2ludCBmb3IgYWx0ZXJuYXRpb25zLCBhbmQgc2V0IG5ldyBwb2ludDoKLSAgIHN0ZDo6cHRyZGlmZl90IGxhc3RfYWx0X3BvaW50ID0gbV9hbHRfaW5zZXJ0X3BvaW50OwotICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgLy8KLSAgIC8vIGJhY2sgdXAgdGhlIGN1cnJlbnQgZmxhZ3MgaW4gY2FzZSB3ZSBoYXZlIGEgbmVzdGVkICg/aW1zeCkgZ3JvdXA6Ci0gICAvLwotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0cyA9IHRoaXMtPmZsYWdzKCk7Ci0gICBib29sIG9sZF9jYXNlX2NoYW5nZSA9IG1faGFzX2Nhc2VfY2hhbmdlOwotICAgbV9oYXNfY2FzZV9jaGFuZ2UgPSBmYWxzZTsgLy8gbm8gY2hhbmdlcyB0byB0aGlzIHNjb3BlIGFzIHlldC4uLgotICAgLy8KLSAgIC8vIEJhY2sgdXAgYnJhbmNoIHJlc2V0IGRhdGEgaW4gY2FzZSB3ZSBoYXZlIGEgbmVzdGVkICg/fC4uLikKLSAgIC8vCi0gICBpbnQgbWFya19yZXNldCA9IG1fbWFya19yZXNldDsKLSAgIG1fbWFya19yZXNldCA9IC0xOwotICAgLy8KLSAgIC8vIG5vdyByZWN1cnNpdmVseSBhZGQgbW9yZSBzdGF0ZXMsIHRoaXMgd2lsbCB0ZXJtaW5hdGUgd2hlbiB3ZSBnZXQgdG8gYQotICAgLy8gbWF0Y2hpbmcgJyknIDoKLSAgIC8vCi0gICBwYXJzZV9hbGwoKTsKLSAgIC8vCi0gICAvLyBVbndpbmQgcHVzaGVkIGFsdGVybmF0aXZlczoKLSAgIC8vCi0gICBpZigwID09IHVud2luZF9hbHRzKGxhc3RfcGFyZW5fc3RhcnQpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgLy8KLSAgIC8vIHJlc3RvcmUgZmxhZ3M6Ci0gICAvLwotICAgaWYobV9oYXNfY2FzZV9jaGFuZ2UpCi0gICB7Ci0gICAgICAvLyB0aGUgY2FzZSBoYXMgY2hhbmdlZCBpbiBvbmUgb3IgbW9yZSBvZiB0aGUgYWx0ZXJuYXRpdmVzCi0gICAgICAvLyB3aXRoaW4gdGhlIHNjb3BlZCAoLi4uKSBibG9jazogd2UgaGF2ZSB0byBhZGQgYSBzdGF0ZQotICAgICAgLy8gdG8gcmVzZXQgdGhlIGNhc2Ugc2Vuc2l0aXZpdHk6Ci0gICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICktPmljYXNlID0gb3B0cyAmIHJlZ2Jhc2U6OmljYXNlOwotICAgfQotICAgdGhpcy0+ZmxhZ3Mob3B0cyk7Ci0gICBtX2hhc19jYXNlX2NoYW5nZSA9IG9sZF9jYXNlX2NoYW5nZTsKLSAgIC8vCi0gICAvLyByZXN0b3JlIGJyYW5jaCByZXNldDoKLSAgIC8vCi0gICBtX21hcmtfcmVzZXQgPSBtYXJrX3Jlc2V0OwotICAgLy8KLSAgIC8vIHdlIGVpdGhlciBoYXZlIGEgJyknIG9yIHdlIGhhdmUgcnVuIG91dCBvZiBjaGFyYWN0ZXJzIHByZW1hdHVyZWx5OgotICAgLy8KLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICB0aGlzLT5mYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9iYXNlLCBtX2VuZCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgTkROQk9PU1RfQVNTRVJUKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi0gICBpZihtYXJraWQgJiYgKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pKQotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLmF0KG1hcmtpZCAtIDEpLnNlY29uZCA9IHN0ZDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKTsKLSNlbHNlCi0gICBpZihtYXJraWQgJiYgKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pKQotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLmF0KG1hcmtpZCAtIDEpLnNlY29uZCA9IChtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSNlbmRpZgotICAgKyttX3Bvc2l0aW9uOwotICAgLy8KLSAgIC8vIGFwcGVuZCBjbG9zaW5nIHBhcmVudGhlc2lzIHN0YXRlOgotICAgLy8KLSAgIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfZW5kbWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgcGItPmluZGV4ID0gbWFya2lkOwotICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgdGhpcy0+bV9wYXJlbl9zdGFydCA9IGxhc3RfcGFyZW5fc3RhcnQ7Ci0gICAvLwotICAgLy8gcmVzdG9yZSB0aGUgYWx0ZXJuYXRlIGluc2VydGlvbiBwb2ludDoKLSAgIC8vCi0gICB0aGlzLT5tX2FsdF9pbnNlcnRfcG9pbnQgPSBsYXN0X2FsdF9wb2ludDsKLSAgIC8vCi0gICAvLyBhbGxvdyBiYWNrcmVmcyB0byB0aGlzIG1hcms6Ci0gICAvLwotICAgaWYoKG1hcmtpZCA+IDApICYmIChtYXJraWQgPCBzaXplb2YodW5zaWduZWQpICogQ0hBUl9CSVQpKQotICAgICAgdGhpcy0+bV9iYWNrcmVmcyB8PSAxdSA8PCAobWFya2lkIC0gMSk7Ci0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9iYXNpY19lc2NhcGUoKQotewotICAgKyttX3Bvc2l0aW9uOwotICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyazoKLSAgICAgIHJldHVybiBwYXJzZV9vcGVuX3BhcmVuKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcms6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpia19wbHVzX3FtKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgxKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6YmtfcGx1c19xbSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMCwgMSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX2ludGVydmFscykKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfcmVwZWF0X3JhbmdlKHRydWUpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZToKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19pbnRlcnZhbHMpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCAiRm91bmQgYSBjbG9zaW5nIHJlcGV0aXRpb24gb3BlcmF0b3IgfSB3aXRoIG5vIGNvcnJlc3BvbmRpbmcgey4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3I6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6YmtfdmJhcikKLSAgICAgICAgIHJldHVybiBwYXJzZV9hbHQoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kaWdpdDoKLSAgICAgIHJldHVybiBwYXJzZV9iYWNrcmVmKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfc3RhcnRfYnVmZmVyOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lbmRfYnVmZmVyOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfd29yZF9hc3NlcnQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3Rfd29yZF9hc3NlcnQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcmlnaHRfd29yZDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX2VuZCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICBib29sIG5lZ2F0ZSA9IHRydWU7Ci0gICAgICAgICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlICd3JzoKLSAgICAgICAgICAgIG5lZ2F0ZSA9IGZhbHNlOwotICAgICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICAgICBjYXNlICdXJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+IGNoYXJfc2V0OwotICAgICAgICAgICAgaWYobmVnYXRlKQotICAgICAgICAgICAgICAgY2hhcl9zZXQubmVnYXRlKCk7Ci0gICAgICAgICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV93b3JkX21hc2spOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgbmVnYXRlID0gZmFsc2U7Ci0gICAgICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgcmV0dXJuIGFkZF9lbWFjc19jb2RlKG5lZ2F0ZSk7Ci0gICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgIGNhc2UgJ0MnOgotICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZCB5ZXQ6Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiVGhlIFxcYyBhbmQgXFxDIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgUE9TSVggYmFzaWMgcmVndWxhciBleHByZXNzaW9uczogdHJ5IHRoZSBQZXJsIHN5bnRheCBpbnN0ZWFkLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9leHRlbmRlZF9lc2NhcGUoKQotewotICAgKyttX3Bvc2l0aW9uOwotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZSBmb3VuZC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGJvb2wgbmVnYXRlID0gZmFsc2U7IC8vIGluIGNhc2UgdGhpcyBpcyBhIGNoYXJhY3RlciBjbGFzcyBlc2NhcGU6IFx3IFxkIGV0YwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X2NsYXNzOgotICAgICAgbmVnYXRlID0gdHJ1ZTsKLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NsYXNzOgotICAgICAgewotZXNjYXBlX3R5cGVfY2xhc3NfanVtcDoKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgICAgICAgbV90eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG1fcG9zaXRpb24sIG1fcG9zaXRpb24rMSk7Ci0gICAgICAgICBpZihtICE9IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLSAgICAgICAgICAgIGlmKG5lZ2F0ZSkKLSAgICAgICAgICAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotICAgICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vCi0gICAgICAgICAvLyBub3QgYSBjbGFzcywganVzdCBhIHJlZ3VsYXIgdW5rbm93biBlc2NhcGU6Ci0gICAgICAgICAvLwotICAgICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwodW5lc2NhcGVfY2hhcmFjdGVyKCkpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RpZ2l0OgotICAgICAgcmV0dXJuIHBhcnNlX2JhY2tyZWYoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQ6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfZW5kKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3N0YXJ0X2J1ZmZlcjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZW5kX2J1ZmZlcjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3dvcmRfYXNzZXJ0OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X3dvcmRfYXNzZXJ0OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX1o6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc29mdF9idWZmZXJfZW5kKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX1E6Ci0gICAgICByZXR1cm4gcGFyc2VfUUUoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9DOgotICAgICAgcmV0dXJuIHBhcnNlX21hdGNoX2FueSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX1g6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfY29tYmluaW5nKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX0c6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3RfcHJvcGVydHk6Ci0gICAgICBuZWdhdGUgPSB0cnVlOwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcHJvcGVydHk6Ci0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBjaGFyX2NsYXNzX3R5cGUgbTsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSW5jb21wbGV0ZSBwcm9wZXJ0eSBlc2NhcGUgZm91bmQuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBtYXliZSBoYXZlIFxwe2RkZH0KLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKQotICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgICAgLy8gc2tpcCBmb3J3YXJkIHVudGlsIHdlIGZpbmQgZW5jbG9zaW5nIGJyYWNlOgotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2UpKQotICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJDbG9zaW5nIH0gbWlzc2luZyBmcm9tIHByb3BlcnR5IGVzY2FwZSBzZXF1ZW5jZS4iKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKCsrYmFzZSwgbV9wb3NpdGlvbisrKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG1fcG9zaXRpb24sIG1fcG9zaXRpb24rMSk7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihtICE9IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLSAgICAgICAgICAgIGlmKG5lZ2F0ZSkKLSAgICAgICAgICAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotICAgICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkVzY2FwZSBzZXF1ZW5jZSB3YXMgbmVpdGhlciBhIHZhbGlkIHByb3BlcnR5IG5vciBhIHZhbGlkIGNoYXJhY3RlciBjbGFzcyBuYW1lLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3Jlc2V0X3N0YXJ0X21hcms6Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICB7Ci0gICAgICAgICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zdGFydG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIHBiLT5pbmRleCA9IC01OwotICAgICAgICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGdvdG8gZXNjYXBlX3R5cGVfY2xhc3NfanVtcDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9saW5lX2VuZGluZzoKLSAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBlID0gZ2V0X2VzY2FwZV9SX3N0cmluZzxjaGFyVD4oKTsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBvbGRfcG9zaXRpb24gPSBtX3Bvc2l0aW9uOwotICAgICAgICAgY29uc3QgY2hhclQqIG9sZF9lbmQgPSBtX2VuZDsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBvbGRfYmFzZSA9IG1fYmFzZTsKLSAgICAgICAgIG1fcG9zaXRpb24gPSBlOwotICAgICAgICAgbV9iYXNlID0gZTsKLSAgICAgICAgIG1fZW5kID0gZSArIHRyYWl0czo6bGVuZ3RoKGUpOwotICAgICAgICAgYm9vbCByID0gcGFyc2VfYWxsKCk7Ci0gICAgICAgICBtX3Bvc2l0aW9uID0gKytvbGRfcG9zaXRpb247Ci0gICAgICAgICBtX2VuZCA9IG9sZF9lbmQ7Ci0gICAgICAgICBtX2Jhc2UgPSBvbGRfYmFzZTsKLSAgICAgICAgIHJldHVybiByOwotICAgICAgfQotICAgICAgZ290byBlc2NhcGVfdHlwZV9jbGFzc19qdW1wOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2V4dGVuZGVkX2JhY2tyZWY6Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICB7Ci0gICAgICAgICBib29sIGhhdmVfYnJhY2UgPSBmYWxzZTsKLSAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKLSAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmNvbXBsZXRlX21lc3NhZ2UgPSAiSW5jb21wbGV0ZSBcXGcgZXNjYXBlIGZvdW5kLiI7Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgLy8gbWF5YmUgaGF2ZSBcZ3tkZGR9Ci0gICAgICAgICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5biA9IHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKTsKLSAgICAgICAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3luX2VuZCA9IDA7Ci0gICAgICAgICBpZigoc3luID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIAotICAgICAgICAgICAgfHwgKHN5biA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZCkKLSAgICAgICAgICAgIHx8IChzeW4gPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lbmRfYnVmZmVyKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBoYXZlX2JyYWNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHN3aXRjaChzeW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2U6Ci0gICAgICAgICAgICAgICBzeW5fZW5kID0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2U7Ci0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQ6Ci0gICAgICAgICAgICAgICBzeW5fZW5kID0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgc3luX2VuZCA9IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZW5kX2J1ZmZlcjsKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgbmVnYXRpdmUgPSAoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCctJykpOwotICAgICAgICAgaWYoKG5lZ2F0aXZlKSAmJiAoKyttX3Bvc2l0aW9uID09IG1fZW5kKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBjb25zdCBjaGFyVCogcGMgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgaW50IGkgPSB0aGlzLT5tX3RyYWl0cy50b2kocGMsIG1fZW5kLCAxMCk7Ci0gICAgICAgICBpZigoaSA8IDApICYmIHN5bl9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDaGVjayBmb3IgYSBuYW1lZCBjYXB0dXJlLCBnZXQgdGhlIGxlZnRtb3N0IG9uZSBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lOgotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gc3luX2VuZCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpID0gaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKTsKLSAgICAgICAgICAgIHBjID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKG5lZ2F0aXZlKQotICAgICAgICAgICAgaSA9IDEgKyBtX21hcmtfY291bnQgLSBpOwotICAgICAgICAgaWYoKChpID4gMCkgJiYgKHRoaXMtPm1fYmFja3JlZnMgJiAoMXUgPDwgKGktMSkpKSkgfHwgKChpID4gMTAwMDApICYmICh0aGlzLT5tX3BkYXRhLT5nZXRfaWQoaSkgPiAwKSAmJiAodGhpcy0+bV9iYWNrcmVmcyAmICgxdSA8PCAodGhpcy0+bV9wZGF0YS0+Z2V0X2lkKGkpLTEpKSkpKQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiA9IHBjOwotICAgICAgICAgICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgICAgcGItPmluZGV4ID0gaTsKLSAgICAgICAgICAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWNrcmVmLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIG1fcG9zaXRpb24gPSBwYzsKLSAgICAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZigobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSBzeW5fZW5kKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGdvdG8gZXNjYXBlX3R5cGVfY2xhc3NfanVtcDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX3Y6Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICAgICBnb3RvIGVzY2FwZV90eXBlX2NsYXNzX2p1bXA7Ci0gICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgIGRlZmF1bHQ6Ci0gICAgICB0aGlzLT5hcHBlbmRfbGl0ZXJhbCh1bmVzY2FwZV9jaGFyYWN0ZXIoKSk7Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9tYXRjaF9hbnkoKQotewotICAgLy8KLSAgIC8vIHdlIGhhdmUgYSAnLicgdGhhdCBjYW4gbWF0Y2ggYW55IGNoYXJhY3RlcjoKLSAgIC8vCi0gICArK21fcG9zaXRpb247Ci0gICBzdGF0aWNfY2FzdDxyZV9kb3QqPigKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93aWxkLCBzaXplb2YocmVfZG90KSkKLSAgICAgICktPm1hc2sgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9fbW9kX3MgCi0gICAgICA/IHJlX2RldGFpbDo6Zm9yY2Vfbm90X25ld2xpbmUgCi0gICAgICAgICA6IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptb2RfcyA/Ci0gICAgICAgICAgICByZV9kZXRhaWw6OmZvcmNlX25ld2xpbmUgOiByZV9kZXRhaWw6OmRvbnRfY2FyZSk7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfcmVwZWF0KHN0ZDo6c2l6ZV90IGxvdywgc3RkOjpzaXplX3QgaGlnaCkKLXsKLSAgIGJvb2wgZ3JlZWR5ID0gdHJ1ZTsKLSAgIGJvb2wgcG9jZXNzaXZlID0gZmFsc2U7Ci0gICBzdGQ6OnNpemVfdCBpbnNlcnRfcG9pbnQ7Ci0gICAvLyAKLSAgIC8vIHdoZW4gd2UgZ2V0IHRvIGhlcmUgd2UgbWF5IGhhdmUgYSBub24tZ3JlZWR5ID8gbWFyayBzdGlsbCB0byBjb21lOgotICAgLy8KLSAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICYmICgKLSAgICAgICAgICAgICgwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICAgICAgICB8fCAoKHJlZ2Jhc2U6OmJhc2ljX3N5bnRheF9ncm91cHxyZWdiYXNlOjplbWFjc19leCkgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6OmVtYWNzX2V4KSkpCi0gICAgICAgICApCi0gICAgICApCi0gICB7Ci0gICAgICAvLyBPSyB3ZSBoYXZlIGEgcGVybCBvciBlbWFjcyByZWdleCwgY2hlY2sgZm9yIGEgJz8nOgotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uKQotICAgICAgewotICAgICAgICAgZ3JlZWR5ID0gZmFsc2U7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICAvLyBmb3IgcGVybCByZWdleGVzIG9ubHkgY2hlY2sgZm9yIHBvY2Vzc2l2ZSArKyByZXBlYXRzLgotICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICAgICAgICAmJiAoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1cykpCi0gICAgICB7Ci0gICAgICAgICBwb2Nlc3NpdmUgPSB0cnVlOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgfQotICAgaWYoMCA9PSB0aGlzLT5tX2xhc3Rfc3RhdGUpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbiksICJOb3RoaW5nIHRvIHJlcGVhdC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGlmKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9lbmRtYXJrKQotICAgewotICAgICAgLy8gaW5zZXJ0IGEgcmVwZWF0IGJlZm9yZSB0aGUgJygnIG1hdGNoaW5nIHRoZSBsYXN0ICcpJzoKLSAgICAgIGluc2VydF9wb2ludCA9IHRoaXMtPm1fcGFyZW5fc3RhcnQ7Ci0gICB9Ci0gICBlbHNlIGlmKCh0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCkgJiYgKHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPih0aGlzLT5tX2xhc3Rfc3RhdGUpLT5sZW5ndGggPiAxKSkKLSAgIHsKLSAgICAgIC8vIHRoZSBsYXN0IHN0YXRlIHdhcyBhIGxpdGVyYWwgd2l0aCBtb3JlIHRoYW4gb25lIGNoYXJhY3Rlciwgc3BsaXQgaXQgaW4gdHdvOgotICAgICAgcmVfbGl0ZXJhbCogbGl0ID0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KHRoaXMtPm1fbGFzdF9zdGF0ZSk7Ci0gICAgICBjaGFyVCBjID0gKHN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KGxpdCsxKSkpW2xpdC0+bGVuZ3RoIC0gMV07Ci0gICAgICAtLShsaXQtPmxlbmd0aCk7Ci0gICAgICAvLyBub3cgYXBwZW5kIG5ldyBzdGF0ZToKLSAgICAgIGxpdCA9IHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCwgc2l6ZW9mKHJlX2xpdGVyYWwpICsgc2l6ZW9mKGNoYXJUKSkpOwotICAgICAgbGl0LT5sZW5ndGggPSAxOwotICAgICAgKHN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KGxpdCsxKSkpWzBdID0gYzsKLSAgICAgIGluc2VydF9wb2ludCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5tX2xhc3Rfc3RhdGUpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gcmVwZWF0IHRoZSBsYXN0IHN0YXRlIHdoYXRldmVyIGl0IHdhcywgbmVlZCB0byBhZGQgc29tZSBlcnJvciBjaGVja2luZyBoZXJlOgotICAgICAgc3dpdGNoKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kX2xpbmU6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnk6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX2VuZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9hbHQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3NvZnRfYnVmZmVyX2VuZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfanVtcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrc3RlcDoKLSAgICAgICAgIC8vIGNhbid0IGxlZ2FsbHkgcmVwZWF0IGFueSBvZiB0aGUgYWJvdmU6Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAvLyBkbyBub3RoaW5nLi4uCi0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGluc2VydF9wb2ludCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5tX2xhc3Rfc3RhdGUpOwotICAgfQotICAgLy8KLSAgIC8vIE9LIHdlIG5vdyBrbm93IHdoYXQgdG8gcmVwZWF0LCBzbyBpbnNlcnQgdGhlIHJlcGVhdCBhcm91bmQgaXQ6Ci0gICAvLwotICAgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPih0aGlzLT5pbnNlcnRfc3RhdGUoaW5zZXJ0X3BvaW50LCBzeW50YXhfZWxlbWVudF9yZXAsIHJlX3JlcGVhdGVyX3NpemUpKTsKLSAgIHJlcC0+bWluID0gbG93OwotICAgcmVwLT5tYXggPSBoaWdoOwotICAgcmVwLT5ncmVlZHkgPSBncmVlZHk7Ci0gICByZXAtPmxlYWRpbmcgPSBmYWxzZTsKLSAgIC8vIHN0b3JlIG91ciByZXBlYXRlciBwb3NpdGlvbiBmb3IgbGF0ZXI6Ci0gICBzdGQ6OnB0cmRpZmZfdCByZXBfb2ZmID0gdGhpcy0+Z2V0b2Zmc2V0KHJlcCk7Ci0gICAvLyBhbmQgYXBwZW5kIGEgYmFjayBqdW1wIHRvIHRoZSByZXBlYXQ6Ci0gICByZV9qdW1wKiBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgam1wLT5hbHQuaSA9IHJlcF9vZmYgLSB0aGlzLT5nZXRvZmZzZXQoam1wKTsKLSAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgLy8gbm93IGZpbGwgaW4gdGhlIGFsdCBqdW1wIGZvciB0aGUgcmVwZWF0OgotICAgcmVwID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4odGhpcy0+Z2V0YWRkcmVzcyhyZXBfb2ZmKSk7Ci0gICByZXAtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHJlcF9vZmY7Ci0gICAvLwotICAgLy8gSWYgdGhlIHJlcGVhdCBpcyBwb2Nlc3NpdmUgdGhlbiBicmFja2V0IHRoZSByZXBlYXQgd2l0aCBhICg/Pi4uLikKLSAgIC8vIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uIGNvbnN0cnVjdDoKLSAgIC8vCi0gICBpZihwb2Nlc3NpdmUpCi0gICB7Ci0gICAgICBpZihtX3Bvc2l0aW9uICE9IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8KLSAgICAgICAgIC8vIENoZWNrIGZvciBpbGxlZ2FsIGZvbGxvd2luZyBxdWFudGlmaWVyLCB3ZSBoYXZlIHRvIGRvIHRoaXMgaGVyZSwgYmVjYXVzZQotICAgICAgICAgLy8gdGhlIGV4dHJhIHN0YXRlcyB3ZSBpbnNlcnQgYmVsb3cgY2lyY3VtdmVudHMgb3VyIHVzdWFsIGVycm9yIGNoZWNraW5nIDotKAotICAgICAgICAgLy8KLSAgICAgICAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3N0YXI6Ci0gICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uOgotICAgICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlOgotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmluc2VydF9zdGF0ZShpbnNlcnRfcG9pbnQsIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgcGItPmluZGV4ID0gLTM7Ci0gICAgICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+aW5zZXJ0X3N0YXRlKGluc2VydF9wb2ludCArIHNpemVvZihyZV9icmFjZSksIHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBqbXAtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHRoaXMtPmdldG9mZnNldChqbXApOwotICAgICAgcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9lbmRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICBwYi0+aW5kZXggPSAtMzsKLSAgICAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9yZXBlYXRfcmFuZ2UoYm9vbCBpc2Jhc2ljKQotewotICAgc3RhdGljIGNvbnN0IGNoYXIqIGluY29tcGxldGVfbWVzc2FnZSA9ICJNaXNzaW5nIH0gaW4gcXVhbnRpZmllZCByZXBldGl0aW9uLiI7Ci0gICAvLwotICAgLy8gcGFyc2UgYSByZXBlYXQtcmFuZ2U6Ci0gICAvLwotICAgc3RkOjpzaXplX3QgbWluLCBtYXg7Ci0gICBpbnQgdjsKLSAgIC8vIHNraXAgd2hpdGVzcGFjZToKLSAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgaWYodGhpcy0+bV9wb3NpdGlvbiA9PSB0aGlzLT5tX2VuZCkKLSAgIHsKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gVHJlYXQgdGhlIG9wZW5pbmcgJ3snIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHJld2luZCB0byBzdGFydCBvZiBlcnJvcjoKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAtLW1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgfQotICAgLy8gZ2V0IG1pbjoKLSAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgIC8vIHNraXAgd2hpdGVzcGFjZToKLSAgIGlmKHYgPCAwKQotICAgewotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgdGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV9tYXNrX3NwYWNlKSkKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICB7Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIH0KLSAgIG1pbiA9IHY7Ci0gICAvLyBzZWUgaWYgd2UgaGF2ZSBhIGNvbW1hOgotICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbW1hKQotICAgewotICAgICAgLy8gbW92ZSBvbiBhbmQgZXJyb3IgY2hlY2s6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICAvLyBza2lwIHdoaXRlc3BhY2U6Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgdGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV9tYXNrX3NwYWNlKSkKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICAgICB7Ci0gICAgICAgICBpZih0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIH0KLSAgICAgIC8vIGdldCB0aGUgdmFsdWUgaWYgYW55OgotICAgICAgdiA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgbWF4ID0gKHYgPj0gMCkgPyAoc3RkOjpzaXplX3QpdiA6IChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KSgpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm8gY29tbWEsIG1heCA9IG1pbjoKLSAgICAgIG1heCA9IG1pbjsKLSAgIH0KLSAgIC8vIHNraXAgd2hpdGVzcGFjZToKLSAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgLy8gT0sgbm93IGNoZWNrIHRyYWlsaW5nIH06Ci0gICBpZih0aGlzLT5tX3Bvc2l0aW9uID09IHRoaXMtPm1fZW5kKQotICAgewotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICBpZihpc2Jhc2ljKQotICAgewotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2UpCi0gICAgICArK21fcG9zaXRpb247Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICAvLwotICAgLy8gZmluYWxseSBnbyBhbmQgYWRkIHRoZSByZXBlYXQsIHVubGVzcyBlcnJvcjoKLSAgIC8vCi0gICBpZihtaW4gPiBtYXgpCi0gICB7Ci0gICAgICAvLyBCYWNrdHJhY2sgdG8gZXJyb3IgbG9jYXRpb246Ci0gICAgICBtX3Bvc2l0aW9uIC09IDI7Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX3dvcmRfbWFzaykpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRicmFjZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICByZXR1cm4gcGFyc2VfcmVwZWF0KG1pbiwgbWF4KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYWx0KCkKLXsKLSAgIC8vCi0gICAvLyBlcnJvciBjaGVjazogaWYgdGhlcmUgaGF2ZSBiZWVuIG5vIHByZXZpb3VzIHN0YXRlcywKLSAgIC8vIG9yIGlmIHRoZSBsYXN0IHN0YXRlIHdhcyBhICcoJyB0aGVuIGVycm9yOgotICAgLy8KLSAgIGlmKAotICAgICAgKCh0aGlzLT5tX2xhc3Rfc3RhdGUgPT0gMCkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspKQotICAgICAgJiYKLSAgICAgICEoCi0gICAgICAgICAoKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSA9PSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cCkKLSAgICAgICAgICAgJiYKLSAgICAgICAgICgodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX2VtcHR5X2V4cHJlc3Npb25zKSA9PSAwKQotICAgICAgICApCi0gICAgICApCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZW1wdHksIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsICJBIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYW4gc3RhcnQgd2l0aCB0aGUgYWx0ZXJuYXRpb24gb3BlcmF0b3IgfC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vCi0gICAvLyBSZXNldCBtYXJrIGNvdW50IGlmIHJlcXVpcmVkOgotICAgLy8KLSAgIGlmKG1fbWF4X21hcmsgPCBtX21hcmtfY291bnQpCi0gICAgICBtX21heF9tYXJrID0gbV9tYXJrX2NvdW50OwotICAgaWYobV9tYXJrX3Jlc2V0ID49IDApCi0gICAgICBtX21hcmtfY291bnQgPSBtX21hcmtfcmVzZXQ7Ci0KLSAgICsrbV9wb3NpdGlvbjsKLSAgIC8vCi0gICAvLyB3ZSBuZWVkIHRvIGFwcGVuZCBhIHRyYWlsaW5nIGp1bXA6IAotICAgLy8KLSAgIHJlX3N5bnRheF9iYXNlKiBwaiA9IHRoaXMtPmFwcGVuZF9zdGF0ZShyZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBqdW1wX29mZnNldCA9IHRoaXMtPmdldG9mZnNldChwaik7Ci0gICAvLwotICAgLy8gbm93IGluc2VydCB0aGUgYWx0ZXJuYXRpdmU6Ci0gICAvLwotICAgcmVfYWx0KiBwYWx0ID0gc3RhdGljX2Nhc3Q8cmVfYWx0Kj4odGhpcy0+aW5zZXJ0X3N0YXRlKHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCwgc3ludGF4X2VsZW1lbnRfYWx0LCByZV9hbHRfc2l6ZSkpOwotICAganVtcF9vZmZzZXQgKz0gcmVfYWx0X3NpemU7Ci0gICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIHBhbHQtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHRoaXMtPmdldG9mZnNldChwYWx0KTsKLSAgIC8vCi0gICAvLyB1cGRhdGUgbV9hbHRfaW5zZXJ0X3BvaW50IHNvIHRoYXQgdGhlIG5leHQgYWx0ZXJuYXRlIGdldHMKLSAgIC8vIGluc2VydGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgc2Vjb25kIG9mIHRoZSB0d28gd2UndmUganVzdCBjcmVhdGVkOgotICAgLy8KLSAgIHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAvLwotICAgLy8gdGhlIHN0YXJ0IG9mIHRoaXMgYWx0ZXJuYXRpdmUgbXVzdCBoYXZlIGEgY2FzZSBjaGFuZ2VzIHN0YXRlCi0gICAvLyBpZiB0aGUgY3VycmVudCBibG9jayBoYXMgbWVzc2VkIGFyb3VuZCB3aXRoIGNhc2UgY2hhbmdlczoKLSAgIC8vCi0gICBpZihtX2hhc19jYXNlX2NoYW5nZSkKLSAgIHsKLSAgICAgIHN0YXRpY19jYXN0PHJlX2Nhc2UqPigKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSwgc2l6ZW9mKHJlX2Nhc2UpKQotICAgICAgICAgKS0+aWNhc2UgPSB0aGlzLT5tX2ljYXNlOwotICAgfQotICAgLy8KLSAgIC8vIHB1c2ggdGhlIGFsdGVybmF0aXZlIG9udG8gb3VyIHN0YWNrLCBhIHJlY3Vyc2l2ZQotICAgLy8gaW1wbGVtZW50YXRpb24gaGVyZSBpcyBlYXNpZXIgdG8gdW5kZXJzdGFuZCAoYW5kIGZhc3RlcgotICAgLy8gYXMgaXQgaGFwcGVucyksIGJ1dCBjYXVzZXMgYWxsIGtpbmRzIG9mIHN0YWNrIG92ZXJmbG93IHByb2JsZW1zCi0gICAvLyBvbiBwcm9ncmFtcyB3aXRoIHNtYWxsIHN0YWNrcyAoQ09NKykuCi0gICAvLwotICAgbV9hbHRfanVtcHMucHVzaF9iYWNrKGp1bXBfb2Zmc2V0KTsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9zZXQoKQotewotICAgc3RhdGljIGNvbnN0IGNoYXIqIGluY29tcGxldGVfbWVzc2FnZSA9ICJDaGFyYWN0ZXIgc2V0IGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHdpdGggWyB0ZXJtaW5hdGVkIHByZW1hdHVyZWx5IC0gZWl0aGVyIG5vIF0gd2FzIGZvdW5kIG9yIHRoZSBzZXQgaGFkIG5vIGNvbnRlbnQuIjsKLSAgICsrbV9wb3NpdGlvbjsKLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLQotICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOyAgLy8gd2hlcmUgdGhlICdbJyB3YXMKLSAgIGNvbnN0IGNoYXJUKiBpdGVtX2Jhc2UgPSBtX3Bvc2l0aW9uOyAgLy8gd2hlcmUgdGhlICdbJyBvciAnXicgd2FzCi0KLSAgIHdoaWxlKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICB7Ci0gICAgICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgICAgewotICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jYXJldDoKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gYmFzZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaXRlbV9iYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQ6Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IGl0ZW1fYmFzZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9zZXQ6Ci0gICAgICAgICBpZihwYXJzZV9pbm5lcl9zZXQoY2hhcl9zZXQpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlOgotICAgICAgICAgewotICAgICAgICAgICAgLy8gCi0gICAgICAgICAgICAvLyBsb29rIGFoZWFkIGFuZCBzZWUgaWYgdGhpcyBpcyBhIGNoYXJhY3RlciBjbGFzcyBzaG9ydGN1dAotICAgICAgICAgICAgLy8gXGQgXHcgXHMgZXRjLi4uCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCptX3Bvc2l0aW9uKQotICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jbGFzcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGNoYXJfY2xhc3NfdHlwZSBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKzEpOwotICAgICAgICAgICAgICAgaWYobSAhPSAwKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikKLSAgICAgICAgICAgICAgID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X2NsYXNzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gbmVnYXRlZCBjaGFyYWN0ZXIgY2xhc3M6Ci0gICAgICAgICAgICAgICBjaGFyX2NsYXNzX3R5cGUgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobV9wb3NpdGlvbiwgbV9wb3NpdGlvbisxKTsKLSAgICAgICAgICAgICAgIGlmKG0gIT0gMCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNoYXJfc2V0LmFkZF9uZWdhdGVkX2NsYXNzKG0pOwotICAgICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBub3QgYSBjaGFyYWN0ZXIgY2xhc3MsIGp1c3QgYSByZWd1bGFyIGVzY2FwZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIG1fcG9zaXRpb24gIT0gbV9lbmQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2lubmVyX3NldChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpCi17Ci0gICBzdGF0aWMgY29uc3QgY2hhciogaW5jb21wbGV0ZV9tZXNzYWdlID0gIkNoYXJhY3RlciBjbGFzcyBkZWNsYXJhdGlvbiBzdGFydGluZyB3aXRoIFsgdGVybWluYXRlZCBwcmVtYXR1cmVseSAtIGVpdGhlciBubyBdIHdhcyBmb3VuZCBvciB0aGUgc2V0IGhhZCBubyBjb250ZW50LiI7Ci0gICAvLwotICAgLy8gd2UgaGF2ZSBlaXRoZXIgYSBjaGFyYWN0ZXIgY2xhc3MgWzpuYW1lOl0KLSAgIC8vIGEgY29sbGF0aW5nIGVsZW1lbnQgWy5uYW1lLl0KLSAgIC8vIG9yIGFuIGVxdWl2YWxlbmNlIGNsYXNzIFs9bmFtZT1dCi0gICAvLwotICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG90OgotICAgICAgLy8KLSAgICAgIC8vIGEgY29sbGF0aW5nIGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhIGxpdGVyYWw6Ci0gICAgICAvLwotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbG9uOgotICAgICAgewotICAgICAgLy8gY2hlY2sgdGhhdCBjaGFyYWN0ZXIgY2xhc3NlcyBhcmUgYWN0dWFsbHkgZW5hYmxlZDoKLSAgICAgIGlmKCh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19jaGFyX2NsYXNzZXMpKSAKLSAgICAgICAgID09IChyZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXAgIHwgcmVnYmFzZTo6bm9fY2hhcl9jbGFzc2VzKSkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgLy8gc2tpcCB0aGUgJzonCi0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9maXJzdCA9IG1fcG9zaXRpb247Ci0gICAgICAvLyBza2lwIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIHRoZW4gZmluZCB0aGUgbWF0Y2hpbmcgJzpdJwotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jb2xvbikpIAotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgY29uc3QgY2hhclQqIG5hbWVfbGFzdCA9IG1fcG9zaXRpb247Ci0gICAgICBpZihtX2VuZCA9PSBtX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgaWYoKG1fZW5kID09ICsrbV9wb3NpdGlvbikgCi0gICAgICAgICB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLwotICAgICAgLy8gY2hlY2sgZm9yIG5lZ2F0ZWQgY2xhc3M6Ci0gICAgICAvLwotICAgICAgYm9vbCBuZWdhdGVkID0gZmFsc2U7Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbmFtZV9maXJzdCkgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2FyZXQpCi0gICAgICB7Ci0gICAgICAgICArK25hbWVfZmlyc3Q7Ci0gICAgICAgICBuZWdhdGVkID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgICAgbV90eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG5hbWVfZmlyc3QsIG5hbWVfbGFzdCk7Ci0gICAgICBpZihtID09IDApCi0gICAgICB7Ci0gICAgICAgICBpZihjaGFyX3NldC5lbXB0eSgpICYmIChuYW1lX2xhc3QgLSBuYW1lX2ZpcnN0ID09IDEpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gbWF5YmUgYSBzcGVjaWFsIGNhc2U6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZiggKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAKLSAgICAgICAgICAgICAgICAgID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm5hbWVfZmlyc3QpIAotICAgICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm5hbWVfZmlyc3QpIAotICAgICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfZW5kKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbmFtZV9maXJzdCAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBpZihuZWdhdGVkID09IGZhbHNlKQotICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgZWxzZQotICAgICAgICAgY2hhcl9zZXQuYWRkX25lZ2F0ZWRfY2xhc3MobSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWw6Ci0gICAgICB7Ci0gICAgICAvLyBza2lwIHRoZSAnPScKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNvbnN0IGNoYXJUKiBuYW1lX2ZpcnN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIC8vIHNraXAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgdGhlbiBmaW5kIHRoZSBtYXRjaGluZyAnPV0nCi0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsKSkgCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9sYXN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fZW5kID09IG1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBpZigobV9lbmQgPT0gKyttX3Bvc2l0aW9uKSAKLSAgICAgICAgIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHN0cmluZ190eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY29sbGF0ZW5hbWUobmFtZV9maXJzdCwgbmFtZV9sYXN0KTsKLSAgICAgIGlmKCgwID09IG0uc2l6ZSgpKSB8fCAobS5zaXplKCkgPiAyKSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGRpZ3JhcGg8Y2hhclQ+IGQ7Ci0gICAgICBkLmZpcnN0ID0gbVswXTsKLSAgICAgIGlmKG0uc2l6ZSgpID4gMSkKLSAgICAgICAgIGQuc2Vjb25kID0gbVsxXTsKLSAgICAgIGVsc2UKLSAgICAgICAgIGQuc2Vjb25kID0gMDsKLSAgICAgIGNoYXJfc2V0LmFkZF9lcXVpdmFsZW50KGQpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICBkZWZhdWx0OgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2Vfc2V0X2xpdGVyYWwoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KQotewotICAgZGlncmFwaDxjaGFyVD4gc3RhcnRfcmFuZ2UoZ2V0X25leHRfc2V0X2xpdGVyYWwoY2hhcl9zZXQpKTsKLSAgIGlmKG1fZW5kID09IG1fcG9zaXRpb24pCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Rhc2gpCi0gICB7Ci0gICAgICAvLyB3ZSBoYXZlIGEgcmFuZ2U6Ci0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkKLSAgICAgIHsKLSAgICAgICAgIGRpZ3JhcGg8Y2hhclQ+IGVuZF9yYW5nZSA9IGdldF9uZXh0X3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIGNoYXJfc2V0LmFkZF9yYW5nZShzdGFydF9yYW5nZSwgZW5kX3JhbmdlKTsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kYXNoKQotICAgICAgICAgewotICAgICAgICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyB0cmFpbGluZyAtIDoKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9yYW5nZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICB9Ci0gICBjaGFyX3NldC5hZGRfc2luZ2xlKHN0YXJ0X3JhbmdlKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1kaWdyYXBoPGNoYXJUPiBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmdldF9uZXh0X3NldF9saXRlcmFsKGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCkKLXsKLSAgIGRpZ3JhcGg8Y2hhclQ+IHJlc3VsdDsKLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Rhc2g6Ci0gICAgICBpZighY2hhcl9zZXQuZW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHNlZSBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgc2V0OgotICAgICAgICAgaWYoKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpKQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3JhbmdlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICB9Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICByZXN1bHQuZmlyc3QgPSAqbV9wb3NpdGlvbisrOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlOgotICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIGVzY2FwZXMgYXJlIHN1cHBvcnRlZCBmaXJzdDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2VzY2FwZV9pbl9saXN0cykKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdCA9ICptX3Bvc2l0aW9uKys7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJlc3VsdCA9IHVuZXNjYXBlX2NoYXJhY3RlcigpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fc2V0OgotICAgewotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb3QpCi0gICAgICB7Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICByZXN1bHQuZmlyc3QgPSAqbV9wb3NpdGlvbjsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY29uc3QgY2hhclQqIG5hbWVfZmlyc3QgPSBtX3Bvc2l0aW9uOwotICAgICAgLy8gc2tpcCBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCB0aGVuIGZpbmQgdGhlIG1hdGNoaW5nICc6XScKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvdCkpIAotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgY29uc3QgY2hhclQqIG5hbWVfbGFzdCA9IG1fcG9zaXRpb247Ci0gICAgICBpZihtX2VuZCA9PSBtX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGlmKChtX2VuZCA9PSArK21fcG9zaXRpb24pIAotICAgICAgICAgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHN0cmluZ190eXBlIHMgPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY29sbGF0ZW5hbWUobmFtZV9maXJzdCwgbmFtZV9sYXN0KTsKLSAgICAgIGlmKHMuZW1wdHkoKSB8fCAocy5zaXplKCkgPiAyKSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICByZXN1bHQuZmlyc3QgPSBzWzBdOwotICAgICAgaWYocy5zaXplKCkgPiAxKQotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IHNbMV07Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQuc2Vjb25kID0gMDsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBkZWZhdWx0OgotICAgICAgcmVzdWx0ID0gKm1fcG9zaXRpb24rKzsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBkb2VzIGEgdmFsdWUgZml0IGluIHRoZSBzcGVjaWZpZWQgY2hhclQgdHlwZT8KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1ib29sIHZhbGlkX3ZhbHVlKGNoYXJULCBpbnQgdiwgY29uc3QgbXBsOjp0cnVlXyYpCi17Ci0gICByZXR1cm4gKHYgPj4gKHNpemVvZihjaGFyVCkgKiBDSEFSX0JJVCkpID09IDA7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1ib29sIHZhbGlkX3ZhbHVlKGNoYXJULCBpbnQsIGNvbnN0IG1wbDo6ZmFsc2VfJikKLXsKLSAgIHJldHVybiB0cnVlOyAvLyB2IHdpbGwgYWxzd2F5cyBmaXQgaW4gYSBjaGFyVAotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotYm9vbCB2YWxpZF92YWx1ZShjaGFyVCBjLCBpbnQgdikKLXsKLSAgIHJldHVybiB2YWxpZF92YWx1ZShjLCB2LCBtcGw6OmJvb2xfPChzaXplb2YoY2hhclQpIDwgc2l6ZW9mKGludCkpPigpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jaGFyVCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnVuZXNjYXBlX2NoYXJhY3RlcigpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICBjaGFyVCByZXN1bHQoMCk7Ci0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkVzY2FwZSBzZXF1ZW5jZSB0ZXJtaW5hdGVkIHByZW1hdHVyZWx5LiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF9hOgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xhJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lOgotICAgICAgcmVzdWx0ID0gY2hhclQoMjcpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF9mOgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xmJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX246Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXG4nKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfcjoKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdccicpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF90OgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1x0Jyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX3Y6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXHYnKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3dvcmRfYXNzZXJ0OgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xiJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9hc2NpaV9jb250cm9sOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQVNDSUkgZXNjYXBlIHNlcXVlbmNlIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIik7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCptX3Bvc2l0aW9uICUgMzIpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfaGV4OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIik7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgLy8gbWF5YmUgaGF2ZSBceHtkZGR9Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIk1pc3NpbmcgfSBpbiBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2UuIik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgfQotICAgICAgICAgaW50IGkgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDE2KTsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgfHwgKGkgPCAwKQotICAgICAgICAgICAgfHwgKChzdGQ6Om51bWVyaWNfbGltaXRzPGNoYXJUPjo6aXNfc3BlY2lhbGl6ZWQpICYmIChpID4gKGludCkoc3RkOjpudW1lcmljX2xpbWl0czxjaGFyVD46Om1heCkoKSkpCi0gICAgICAgICAgICB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkYnJhY2UsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJIZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2Ugd2FzIGludmFsaWQuIik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgfQotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmVzdWx0ID0gY2hhclQoaSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigyKSwgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KG1fZW5kIC0gbV9wb3NpdGlvbikpOwotICAgICAgICAgaW50IGkgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgMTYpOwotICAgICAgICAgaWYoKGkgPCAwKQotICAgICAgICAgICAgfHwgIXZhbGlkX3ZhbHVlKGNoYXJUKDApLCBpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiRXNjYXBlIHNlcXVlbmNlIGRpZCBub3QgZW5jb2RlIGEgdmFsaWQgY2hhcmFjdGVyLiIpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgIH0KLSAgICAgICAgIHJlc3VsdCA9IGNoYXJUKGkpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGlnaXQ6Ci0gICAgICB7Ci0gICAgICAvLyBhbiBvY3RhbCBlc2NhcGUgc2VxdWVuY2UsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIHplcm8KLSAgICAgIC8vIGZvbGxvd2VkIGJ5IHVwIHRvIDMgb2N0YWwgZGlnaXRzOgotICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gKHN0ZDo6bWluKSg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKSwgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDQpKTsKLSAgICAgIGNvbnN0IGNoYXJUKiBicCA9IG1fcG9zaXRpb247Ci0gICAgICBpbnQgdmFsID0gdGhpcy0+bV90cmFpdHMudG9pKGJwLCBicCArIDEsIDgpOwotICAgICAgaWYodmFsICE9IDApCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgLy8gT29wcyBub3QgYW4gb2N0YWwgZXNjYXBlIGFmdGVyIGFsbDoKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbnZhbGlkIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZS4iKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICB2YWwgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgOCk7Ci0gICAgICBpZih2YWwgPCAwKSAKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiT2N0YWwgZXNjYXBlIHNlcXVlbmNlIGlzIGludmFsaWQuIik7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJUPih2YWwpOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25hbWVkX2NoYXI6Ci0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgLy8gbWF5YmUgaGF2ZSBcTntuYW1lfQotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICAgICAvLyBza2lwIGZvcndhcmQgdW50aWwgd2UgZmluZCBlbmNsb3NpbmcgYnJhY2U6Ci0gICAgICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZSkpCi0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyaW5nX3R5cGUgcyA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jb2xsYXRlbmFtZSgrK2Jhc2UsIG1fcG9zaXRpb24rKyk7Ci0gICAgICAgICAgICBpZihzLmVtcHR5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYocy5zaXplKCkgPT0gMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBzWzBdOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgLy8gZmFsbCB0aHJvdWdoIGlzIGEgZmFpbHVyZToKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIGRlZmF1bHQ6Ci0gICAgICByZXN1bHQgPSAqbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgfQotICAgKyttX3Bvc2l0aW9uOwotICAgcmV0dXJuIHJlc3VsdDsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2JhY2tyZWYoKQotewotICAgTkROQk9PU1RfQVNTRVJUKG1fcG9zaXRpb24gIT0gbV9lbmQpOwotICAgY29uc3QgY2hhclQqIHBjID0gbV9wb3NpdGlvbjsKLSAgIGludCBpID0gdGhpcy0+bV90cmFpdHMudG9pKHBjLCBwYyArIDEsIDEwKTsKLSAgIGlmKChpID09IDApIHx8ICgoKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSA9PSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cCkgJiYgKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19ia19yZWZzKSkpCi0gICB7Ci0gICAgICAvLyBub3QgYSBiYWNrcmVmIGF0IGFsbCBidXQgYW4gb2N0YWwgZXNjYXBlIHNlcXVlbmNlOgotICAgICAgY2hhclQgYyA9IHVuZXNjYXBlX2NoYXJhY3RlcigpOwotICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwoYyk7Ci0gICB9Ci0gICBlbHNlIGlmKChpID4gMCkgJiYgKHRoaXMtPm1fYmFja3JlZnMgJiAoMXUgPDwgKGktMSkpKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gPSBwYzsKLSAgICAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgIHBiLT5pbmRleCA9IGk7Ci0gICAgICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhY2tyZWYsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX1FFKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIC8vCi0gICAvLyBwYXJzZSBhIFxRLi4uXEUgc2VxdWVuY2U6Ci0gICAvLwotICAgKyttX3Bvc2l0aW9uOyAvLyBza2lwIHRoZSBRCi0gICBjb25zdCBjaGFyVCogc3RhcnQgPSBtX3Bvc2l0aW9uOwotICAgY29uc3QgY2hhclQqIGVuZDsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkpCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gIGEgXFEuLi5cRSBzZXF1ZW5jZSBtYXkgdGVybWluYXRlIHdpdGggdGhlIGVuZCBvZiB0aGUgZXhwcmVzc2lvbjoKLSAgICAgICAgIGVuZCA9IG1fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsgIAotICAgICAgfQotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKSAvLyBza2lwIHRoZSBlc2NhcGUKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJVbnRlcm1pbmF0ZWQgXFxRLi4uXFxFIHNlcXVlbmNlLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSBcRToKLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9FKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZW5kID0gbV9wb3NpdGlvbiAtIDI7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIG90aGVyd2lzZSBnbyByb3VuZCBhZ2FpbjoKLSAgIH13aGlsZSh0cnVlKTsKLSAgIC8vCi0gICAvLyBub3cgYWRkIGFsbCB0aGUgY2hhcmFjdGVyIGJldHdlZW4gdGhlIHR3byBlc2NhcGVzIGFzIGxpdGVyYWxzOgotICAgLy8KLSAgIHdoaWxlKHN0YXJ0ICE9IGVuZCkKLSAgIHsKLSAgICAgIHRoaXMtPmFwcGVuZF9saXRlcmFsKCpzdGFydCk7Ci0gICAgICArK3N0YXJ0OwotICAgfQotICAgcmV0dXJuIHRydWU7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9wZXJsX2V4dGVuc2lvbigpCi17Ci0gICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgLy8KLSAgIC8vIHRyZWF0IGNvbW1lbnRzIGFzIGEgc3BlY2lhbCBjYXNlLCBhcyB0aGVzZQotICAgLy8gYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGEgbGVhZGluZwotICAgLy8gc3RhcnRtYXJrIHN0YXRlOgotICAgLy8KLSAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9oYXNoKQotICAgewotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKyspICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspKQotICAgICAge30gICAgICAKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgLy8KLSAgIC8vIGJhY2t1cCBzb21lIHN0YXRlLCBhbmQgcHJlcGFyZSB0aGUgd2F5OgotICAgLy8KLSAgIGludCBtYXJraWQgPSAwOwotICAgc3RkOjpwdHJkaWZmX3QganVtcF9vZmZzZXQgPSAwOwotICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICBzdGQ6OnB0cmRpZmZfdCBsYXN0X3BhcmVuX3N0YXJ0ID0gdGhpcy0+Z2V0b2Zmc2V0KHBiKTsKLSAgIC8vIGJhY2sgdXAgaW5zZXJ0aW9uIHBvaW50IGZvciBhbHRlcm5hdGlvbnMsIGFuZCBzZXQgbmV3IHBvaW50OgotICAgc3RkOjpwdHJkaWZmX3QgbGFzdF9hbHRfcG9pbnQgPSBtX2FsdF9pbnNlcnRfcG9pbnQ7Ci0gICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBleHBlY3RlZF9hbHRfcG9pbnQgPSBtX2FsdF9pbnNlcnRfcG9pbnQ7Ci0gICBib29sIHJlc3RvcmVfZmxhZ3MgPSB0cnVlOwotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb2xkX2ZsYWdzID0gdGhpcy0+ZmxhZ3MoKTsKLSAgIGJvb2wgb2xkX2Nhc2VfY2hhbmdlID0gbV9oYXNfY2FzZV9jaGFuZ2U7Ci0gICBtX2hhc19jYXNlX2NoYW5nZSA9IGZhbHNlOwotICAgY2hhclQgbmFtZV9kZWxpbTsKLSAgIGludCBtYXJrX3Jlc2V0ID0gbV9tYXJrX3Jlc2V0OwotICAgaW50IG1heF9tYXJrID0gbV9tYXhfbWFyazsKLSAgIG1fbWFya19yZXNldCA9IC0xOwotICAgbV9tYXhfbWFyayA9IG1fbWFya19jb3VudDsKLSAgIGludCB2OwotICAgLy8KLSAgIC8vIHNlbGVjdCB0aGUgYWN0dWFsIGV4dGVuc2lvbiB1c2VkOgotICAgLy8KLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29yOgotICAgICAgbV9tYXJrX3Jlc2V0ID0gbV9tYXJrX2NvdW50OwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbG9uOgotICAgICAgLy8KLSAgICAgIC8vIGEgbm9uLWNhcHR1cmluZyBtYXJrOgotICAgICAgLy8KLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IDA7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGlnaXQ6Ci0gICAgICB7Ci0gICAgICAvLwotICAgICAgLy8gYSByZWN1cnNpdmUgc3ViZXhwcmVzc2lvbjoKLSAgICAgIC8vCi0gICAgICB2ID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICBpZigodiA8IDApIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJUaGUgcmVjdXJzaXZlIHN1Yi1leHByZXNzaW9uIHJlZmVycyB0byBhbiBpbnZhbGlkIG1hcmtpbmcgZ3JvdXAsIG9yIGlzIHVudGVybWluYXRlZC4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLWluc2VydF9yZWN1cnNpb246Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAwOwotICAgICAgcmVfcmVjdXJzZSogcHIgPSBzdGF0aWNfY2FzdDxyZV9yZWN1cnNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3JlY3Vyc2UsIHNpemVvZihyZV9yZWN1cnNlKSkpOwotICAgICAgcHItPmFsdC5pID0gdjsKLSAgICAgIHByLT5zdGF0ZV9pZCA9IDA7Ci0gICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICAgICktPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICAvLwotICAgICAgLy8gQSBmb3J3YXJkLXJlbGF0aXZlIHJlY3Vyc2l2ZSBzdWJleHByZXNzaW9uOgotICAgICAgLy8KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKCh2IDw9IDApIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJBbiBpbnZhbGlkIG9yIHVudGVybWluYXRlZCByZWN1cnNpdmUgc3ViLWV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB2ICs9IG1fbWFya19jb3VudDsKLSAgICAgIGdvdG8gaW5zZXJ0X3JlY3Vyc2lvbjsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGFzaDoKLSAgICAgIC8vCi0gICAgICAvLyBQb3NzaWJseSBhIGJhY2t3YXJkLXJlbGF0aXZlIHJlY3Vyc2l2ZSBzdWJleHByZXNzaW9uOgotICAgICAgLy8KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKHYgPD0gMCkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIC8vIE9vcHMgbm90IGEgcmVsYXRpdmUgcmVjdXJzaW9uIGF0IGFsbCwgYnV0IGEgKD8taW1zeCkgZ3JvdXA6Ci0gICAgICAgICBnb3RvIG9wdGlvbl9ncm91cF9qdW1wOwotICAgICAgfQotICAgICAgdiA9IG1fbWFya19jb3VudCArIDEgLSB2OwotICAgICAgaWYodiA8PSAwKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQW4gaW52YWxpZCBvciB1bnRlcm1pbmF0ZWQgcmVjdXJzaXZlIHN1Yi1leHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZ290byBpbnNlcnRfcmVjdXJzaW9uOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lcXVhbDoKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0xOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25vdDoKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0yOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkOgotICAgICAgewotICAgICAgICAgLy8gYSBsb29rYmVoaW5kIGFzc2VydGlvbjoKLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHQgPSB0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbik7Ci0gICAgICAgICBpZih0ID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25vdCkKLSAgICAgICAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0yOwotICAgICAgICAgZWxzZSBpZih0ID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsKQotICAgICAgICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gLTE7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBQcm9iYWJseSBhIG5hbWVkIGNhcHR1cmUgd2hpY2ggYWxzbyBzdGFydHMgKD88IDoKLSAgICAgICAgICAgIG5hbWVfZGVsaW0gPSAnPic7Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBnb3RvIG5hbWVkX2NhcHR1cmVfanVtcDsKLSAgICAgICAgIH0KLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGp1bXBfb2Zmc2V0ID0gdGhpcy0+Z2V0b2Zmc2V0KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpKTsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9iYWNrc3RlcCwgc2l6ZW9mKHJlX2JyYWNlKSk7Ci0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgICAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkOgotICAgICAgLy8KLSAgICAgIC8vIGFuIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uOgotICAgICAgLy8KLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0zOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyazoKLSAgICAgIHsKLSAgICAgIC8vIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbjoKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC00OwotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJ1InKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnJicpKQotICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSArK21fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdiA9IC1zdGF0aWNfY2FzdDxpbnQ+KGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoYmFzZSwgbV9wb3NpdGlvbikpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgdiA9IC10aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBici0+aW5kZXggPSB2IDwgMCA/ICh2IC0gMSkgOiAwOwotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKCptX3Bvc2l0aW9uID09IGNoYXJUKCdcJycpKSB8fCAoKm1fcG9zaXRpb24gPT0gY2hhclQoJzwnKSkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9ICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gIT0gY2hhclQoJz4nKSkgJiYgKCptX3Bvc2l0aW9uICE9IGNoYXJUKCdcJycpKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgdiA9IHN0YXRpY19jYXN0PGludD4oaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICByZV9icmFjZSogYnIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgYnItPmluZGV4ID0gdjsKLSAgICAgICAgIGlmKCgoKm1fcG9zaXRpb24gIT0gY2hhclQoJz4nKSkgJiYgKCptX3Bvc2l0aW9uICE9IGNoYXJUKCdcJycpKSkgfHwgKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJVbnRlcm1pbmF0ZWQgbmFtZWQgY2FwdHVyZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCdEJykpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyKiBkZWYgPSAiREVGSU5FIjsKLSAgICAgICAgIHdoaWxlKCpkZWYgJiYgKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSBjaGFyVCgqZGVmKSkpCi0gICAgICAgICAgICArK21fcG9zaXRpb24sICsrZGVmOwotICAgICAgICAgaWYoKG1fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICpkZWYpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgcmVfYnJhY2UqIGJyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIGJyLT5pbmRleCA9IDk5OTk7IC8vIHNwZWNpYWwgbWFnaWMgdmFsdWUhCi0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZih2ID4gMCkKLSAgICAgIHsKLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBici0+aW5kZXggPSB2OwotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIHZlcmlmeSB0aGF0IHdlIGhhdmUgYSBsb29rYWhlYWQgb3IgbG9va2JlaGluZCBhc3NlcnQ6Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb24pCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZigodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsKQotICAgICAgICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9ub3QpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gMzsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWwpCi0gICAgICAgICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25vdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAyOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcms6Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2VuZF9idWZmZXI6Ci0gICAgICB7Ci0gICAgICBuYW1lX2RlbGltID0gKm1fcG9zaXRpb247Ci1uYW1lZF9jYXB0dXJlX2p1bXA6Ci0gICAgICBtYXJraWQgPSAwOwotICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vc3VicykpCi0gICAgICB7Ci0gICAgICAgICBtYXJraWQgPSArK21fbWFya19jb3VudDsKLSAgICNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi0gICAgICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLnB1c2hfYmFjayhzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PihzdGQ6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbikgLSAyLCAwKSk7Ci0gICAjZWxzZQotICAgICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5wdXNoX2JhY2soc3RkOjpwYWlyPHN0ZDo6c2l6ZV90LCBzdGQ6OnNpemVfdD4oKG1fcG9zaXRpb24gLSBtX2Jhc2UpIC0gMiwgMCkpOwotICAgI2VuZGlmCi0gICAgICB9Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQ7Ci0gICAgICBjb25zdCBjaGFyVCogYmFzZSA9ICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiAhPSBuYW1lX2RlbGltKSkKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgdGhpcy0+bV9wZGF0YS0+c2V0X25hbWUoYmFzZSwgbV9wb3NpdGlvbiwgbWFya2lkKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCdSJykpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB2ID0gMDsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGdvdG8gaW5zZXJ0X3JlY3Vyc2lvbjsKLSAgICAgIH0KLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCcmJykpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgdiA9IHN0YXRpY19jYXN0PGludD4oaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICBnb3RvIGluc2VydF9yZWN1cnNpb247Ci0gICAgICB9Ci0gICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnUCcpKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnPicpKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHYgPSBzdGF0aWNfY2FzdDxpbnQ+KGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoYmFzZSwgbV9wb3NpdGlvbikpOwotICAgICAgICAgICAgZ290byBpbnNlcnRfcmVjdXJzaW9uOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIGxldHMgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhICg/aW1zeCkgZ3JvdXAgYW5kIHRyeSBhbmQgcGFyc2UgaXQ6Ci0gICAgICAvLwotb3B0aW9uX2dyb3VwX2p1bXA6Ci0gICAgICByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHRzID0gcGFyc2Vfb3B0aW9ucygpOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBtYWtlIGEgbm90ZSBvZiB3aGV0aGVyIHdlIGhhdmUgYSBjYXNlIGNoYW5nZToKLSAgICAgIG1faGFzX2Nhc2VfY2hhbmdlID0gKChvcHRzICYgcmVnYmFzZTo6aWNhc2UpICE9ICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2UpKTsKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IDA7Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgIHsKLSAgICAgICAgIC8vIHVwZGF0ZSBmbGFncyBhbmQgY2Fycnkgb24gYXMgbm9ybWFsOgotICAgICAgICAgdGhpcy0+ZmxhZ3Mob3B0cyk7Ci0gICAgICAgICByZXN0b3JlX2ZsYWdzID0gZmFsc2U7Ci0gICAgICAgICBvbGRfY2FzZV9jaGFuZ2UgfD0gbV9oYXNfY2FzZV9jaGFuZ2U7IC8vIGRlZmVyIGVuZCBvZiBzY29wZSBieSBvbmUgJyknCi0gICAgICB9Ci0gICAgICBlbHNlIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jb2xvbikKLSAgICAgIHsKLSAgICAgICAgIC8vIHVwZGF0ZSBmbGFncyBhbmQgY2Fycnkgb24gdW50aWwgdGhlIG1hdGNoaW5nICcpJyBpcyBmb3VuZDoKLSAgICAgICAgIHRoaXMtPmZsYWdzKG9wdHMpOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgLy8gZmluYWxseSBhcHBlbmQgYSBjYXNlIGNoYW5nZSBzdGF0ZSBpZiB3ZSBuZWVkIGl0OgotICAgICAgaWYobV9oYXNfY2FzZV9jaGFuZ2UpCi0gICAgICB7Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICAgICktPmljYXNlID0gb3B0cyAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgfQotCi0gICB9Ci0gICAvLwotICAgLy8gbm93IHJlY3Vyc2l2ZWx5IGFkZCBtb3JlIHN0YXRlcywgdGhpcyB3aWxsIHRlcm1pbmF0ZSB3aGVuIHdlIGdldCB0byBhCi0gICAvLyBtYXRjaGluZyAnKScgOgotICAgLy8KLSAgIHBhcnNlX2FsbCgpOwotICAgLy8KLSAgIC8vIFVud2luZCBhbHRlcm5hdGl2ZXM6Ci0gICAvLwotICAgaWYoMCA9PSB1bndpbmRfYWx0cyhsYXN0X3BhcmVuX3N0YXJ0KSkKLSAgIHsKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkludmFsaWQgYWx0ZXJuYXRpb24gb3BlcmF0b3JzIHdpdGhpbiAoPy4uLikgYmxvY2suIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICAvLwotICAgLy8gd2UgZWl0aGVyIGhhdmUgYSAnKScgb3Igd2UgaGF2ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMgcHJlbWF0dXJlbHk6Ci0gICAvLwotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX2Jhc2UsIG1fZW5kKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBORE5CT09TVF9BU1NFUlQodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspOwotICAgKyttX3Bvc2l0aW9uOwotICAgLy8KLSAgIC8vIHJlc3RvcmUgdGhlIGZsYWdzOgotICAgLy8KLSAgIGlmKHJlc3RvcmVfZmxhZ3MpCi0gICB7Ci0gICAgICAvLyBhcHBlbmQgYSBjYXNlIGNoYW5nZSBzdGF0ZSBpZiB3ZSBuZWVkIGl0OgotICAgICAgaWYobV9oYXNfY2FzZV9jaGFuZ2UpCi0gICAgICB7Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICAgICktPmljYXNlID0gb2xkX2ZsYWdzICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICB9Ci0gICAgICB0aGlzLT5mbGFncyhvbGRfZmxhZ3MpOwotICAgfQotICAgLy8KLSAgIC8vIHNldCB1cCB0aGUganVtcCBwb2ludGVyIGlmIHdlIGhhdmUgb25lOgotICAgLy8KLSAgIGlmKGp1bXBfb2Zmc2V0KQotICAgewotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICByZV9qdW1wKiBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+Z2V0YWRkcmVzcyhqdW1wX29mZnNldCkpOwotICAgICAgam1wLT5hbHQuaSA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSB0aGlzLT5nZXRvZmZzZXQoam1wKTsKLSAgICAgIGlmKCh0aGlzLT5tX2xhc3Rfc3RhdGUgPT0gam1wKSAmJiAobWFya2lkICE9IC0yKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIE9vcHMuLi4gd2UgZGlkbid0IGhhdmUgYW55dGhpbmcgaW5zaWRlIHRoZSBhc3NlcnRpb24uCi0gICAgICAgICAvLyBOb3RlIHdlIGRvbid0IGdldCBoZXJlIGZvciBuZWdhdGVkIGZvcndhcmQgbG9va2FoZWFkIGFzICg/ISkKLSAgICAgICAgIC8vIGRvZXMgaGF2ZSBzb21lIHVzZXMuCi0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbnZhbGlkIG9yIGVtcHR5IHplcm8gd2lkdGggYXNzZXJ0aW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIHZlcmlmeSB0aGF0IGlmIHRoaXMgaXMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiwgdGhhdCB3ZSBkbyBoYXZlCi0gICAvLyBhbiBhbHRlcm5hdGl2ZSwgaWYgbm90IGFkZCBvbmU6Ci0gICAvLwotICAgaWYobWFya2lkID09IC00KQotICAgewotICAgICAgcmVfc3ludGF4X2Jhc2UqIGIgPSB0aGlzLT5nZXRhZGRyZXNzKGV4cGVjdGVkX2FsdF9wb2ludCk7Ci0gICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBleGFjdGx5IG9uZSBhbHRlcm5hdGl2ZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZToKLSAgICAgIGlmKGItPnR5cGUgIT0gc3ludGF4X2VsZW1lbnRfYWx0KQotICAgICAgewotICAgICAgICAgcmVfYWx0KiBhbHQgPSBzdGF0aWNfY2FzdDxyZV9hbHQqPih0aGlzLT5pbnNlcnRfc3RhdGUoZXhwZWN0ZWRfYWx0X3BvaW50LCBzeW50YXhfZWxlbWVudF9hbHQsIHNpemVvZihyZV9hbHQpKSk7Ci0gICAgICAgICBhbHQtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHRoaXMtPmdldG9mZnNldChhbHQpOwotICAgICAgfQotICAgICAgZWxzZSBpZih0aGlzLT5nZXRhZGRyZXNzKHN0YXRpY19jYXN0PHJlX2FsdCo+KGIpLT5hbHQuaSwgYiktPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYWx0KQotICAgICAgewotICAgICAgICAgLy8gQ2FuJ3QgaGF2ZSBzZWVuIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmU6Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJNb3JlIHRoYW4gb25lIGFsdGVybmF0aW9uIG9wZXJhdG9yIHwgd2FzIGVuY291bnRlcmVkIGluc2lkZSBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyBXZSBtdXN0ICpub3QqIGhhdmUgc2VlbiBhbiBhbHRlcm5hdGl2ZSBpbnNpZGUgYSAoREVGSU5FKSBibG9jazoKLSAgICAgICAgIGIgPSB0aGlzLT5nZXRhZGRyZXNzKGItPm5leHQuaSwgYik7Ci0gICAgICAgICBpZigoYi0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZikgJiYgKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oYiktPmluZGV4ID09IDk5OTkpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQWx0ZXJuYXRpb24gb3BlcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBpbnNpZGUgYSBERUZJTkUgYmxvY2suIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBjaGVjayBmb3IgaW52YWxpZCByZXBldGl0aW9uIG9mIG5leHQgc3RhdGU6Ci0gICAgICBiID0gdGhpcy0+Z2V0YWRkcmVzcyhleHBlY3RlZF9hbHRfcG9pbnQpOwotICAgICAgYiA9IHRoaXMtPmdldGFkZHJlc3Moc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oYiktPm5leHQuaSwgYik7Ci0gICAgICBpZigoYi0+dHlwZSAhPSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZikKLSAgICAgICAgICYmIChiLT50eXBlICE9IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaykpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQSByZXBldGl0aW9uIG9wZXJhdG9yIGNhbm5vdCBiZSBhcHBsaWVkIHRvIGEgemVyby13aWR0aCBhc3NlcnRpb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gYXBwZW5kIGNsb3NpbmcgcGFyZW50aGVzaXMgc3RhdGU6Ci0gICAvLwotICAgcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9lbmRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICBwYi0+aW5kZXggPSBtYXJraWQ7Ci0gICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICB0aGlzLT5tX3BhcmVuX3N0YXJ0ID0gbGFzdF9wYXJlbl9zdGFydDsKLSAgIC8vCi0gICAvLyByZXN0b3JlIHRoZSBhbHRlcm5hdGUgaW5zZXJ0aW9uIHBvaW50OgotICAgLy8KLSAgIHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCA9IGxhc3RfYWx0X3BvaW50OwotICAgLy8KLSAgIC8vIGFuZCB0aGUgY2FzZSBjaGFuZ2UgZGF0YToKLSAgIC8vCi0gICBtX2hhc19jYXNlX2NoYW5nZSA9IG9sZF9jYXNlX2NoYW5nZTsKLSAgIC8vCi0gICAvLyBBbmQgdGhlIG1hcmtfcmVzZXQgZGF0YToKLSAgIC8vCi0gICBpZihtX21heF9tYXJrID4gbV9tYXJrX2NvdW50KQotICAgewotICAgICAgbV9tYXJrX2NvdW50ID0gbV9tYXhfbWFyazsKLSAgIH0KLSAgIG1fbWFya19yZXNldCA9IG1hcmtfcmVzZXQ7Ci0gICBtX21heF9tYXJrID0gbWF4X21hcms7Ci0KLQotICAgaWYobWFya2lkID4gMCkKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLmF0KG1hcmtpZCAtIDEpLnNlY29uZCA9IHN0ZDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKSAtIDE7Ci0jZWxzZQotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5hdChtYXJraWQgLSAxKS5zZWNvbmQgPSAobV9wb3NpdGlvbiAtIG1fYmFzZSkgLSAxOwotI2VuZGlmCi0gICAgICAvLwotICAgICAgLy8gYWxsb3cgYmFja3JlZnMgdG8gdGhpcyBtYXJrOgotICAgICAgLy8KLSAgICAgIGlmKChtYXJraWQgPiAwKSAmJiAobWFya2lkIDwgKGludCkoc2l6ZW9mKHVuc2lnbmVkKSAqIENIQVJfQklUKSkpCi0gICAgICAgICB0aGlzLT5tX2JhY2tyZWZzIHw9IDF1IDw8IChtYXJraWQgLSAxKTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjphZGRfZW1hY3NfY29kZShib29sIG5lZ2F0ZSkKLXsKLSAgIC8vCi0gICAvLyBwYXJzZXMgYW4gZW1hY3Mgc3R5bGUgXHN4IG9yIFxTeCBjb25zdHJ1Y3QuCi0gICAvLwotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIHNlcXVlbmNlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLSAgIGlmKG5lZ2F0ZSkKLSAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotCi0gICBzdGF0aWMgY29uc3QgY2hhclQgc19wdW5jdFs1XSA9IHsgJ3AnLCAndScsICduJywgJ2MnLCAndCcsIH07Ci0KLSAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgIHsKLSAgIGNhc2UgJ3MnOgotICAgY2FzZSAnICc6Ci0gICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV9tYXNrX3NwYWNlKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAndyc6Ci0gICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV93b3JkX21hc2spOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdfJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyQnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyYnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyonKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJysnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJy0nKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ18nKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJzwnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJz4nKSkpOyAKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnLic6Ci0gICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShzX3B1bmN0LCBzX3B1bmN0KzUpKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnKCc6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcoJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdbJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCd7JykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJyknOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnKScpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnXScpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnfScpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICciJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyInKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1wnJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdgJykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJ1wnJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1wnJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcsJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcjJykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJzwnOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnOycpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICc+JzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1xuJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdcZicpKSk7IAotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGlmKDAgPT0gdGhpcy0+YXBwZW5kX3NldChjaGFyX3NldCkpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgKyttX3Bvc2l0aW9uOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9vcHRpb25zKCkKLXsKLSAgIC8vIHdlIGhhdmUgYSAoP2ltc3gtaW1zeCkgZ3JvdXAsIGNvbnZlcnQgaXQgaW50byBhIHNldCBvZiBmbGFnczoKLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIGYgPSB0aGlzLT5mbGFncygpOwotICAgYm9vbCBicmVha291dCA9IGZhbHNlOwotICAgZG8KLSAgIHsKLSAgICAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1vZF9zOwotICAgICAgICAgZiAmPSB+cmVnZXhfY29uc3RhbnRzOjpub19tb2RfczsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnbSc6Ci0gICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6Om5vX21vZF9tOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdpJzoKLSAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjppY2FzZTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAneCc6Ci0gICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bW9kX3g7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICB3aGlsZSghYnJlYWtvdXQpOwotICAgCi0gICBicmVha291dCA9IGZhbHNlOwotCi0gICBpZigqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oJy0nKSkKLSAgIHsKLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgICAgewotICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6Om1vZF9zOwotICAgICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om5vX21vZF9zOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdtJzoKLSAgICAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjpub19tb2RfbTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6OmljYXNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGYgJj0gfnJlZ2V4X2NvbnN0YW50czo6bW9kX3g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICB3aGlsZSghYnJlYWtvdXQpOwotICAgfQotICAgcmV0dXJuIGY7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnVud2luZF9hbHRzKHN0ZDo6cHRyZGlmZl90IGxhc3RfcGFyZW5fc3RhcnQpCi17Ci0gICAvLwotICAgLy8gSWYgd2UgZGlkbid0IGFjdHVhbGx5IGFkZCBhbnkgc3RhdGVzIGFmdGVyIHRoZSBsYXN0IAotICAgLy8gYWx0ZXJuYXRpdmUgdGhlbiB0aGF0J3MgYW4gZXJyb3I6Ci0gICAvLwotICAgaWYoKHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCA9PSBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4odGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSkpCi0gICAgICAmJiBtX2FsdF9qdW1wcy5zaXplKCkgJiYgKG1fYWx0X2p1bXBzLmJhY2soKSA+IGxhc3RfcGFyZW5fc3RhcnQpCi0gICAgICAmJgotICAgICAgISgKLSAgICAgICAgICgodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpID09IHJlZ2Jhc2U6OnBlcmxfc3ludGF4X2dyb3VwKQotICAgICAgICAgICAmJgotICAgICAgICAgKCh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9fZW1wdHlfZXhwcmVzc2lvbnMpID09IDApCi0gICAgICAgICkKLSAgICAgICkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgIkNhbid0IHRlcm1pbmF0ZSBhIHN1Yi1leHByZXNzaW9uIHdpdGggYW4gYWx0ZXJuYXRpb24gb3BlcmF0b3IgfC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vIAotICAgLy8gRml4IHVwIG91ciBhbHRlcm5hdGl2ZXM6Ci0gICAvLwotICAgd2hpbGUobV9hbHRfanVtcHMuc2l6ZSgpICYmIChtX2FsdF9qdW1wcy5iYWNrKCkgPiBsYXN0X3BhcmVuX3N0YXJ0KSkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBmaXggdXAgdGhlIGp1bXAgdG8gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgc3RhdGVzCi0gICAgICAvLyB0aGF0IHdlJ3ZlIGp1c3QgYWRkZWQ6Ci0gICAgICAvLwotICAgICAgc3RkOjpwdHJkaWZmX3QganVtcF9vZmZzZXQgPSBtX2FsdF9qdW1wcy5iYWNrKCk7Ci0gICAgICBtX2FsdF9qdW1wcy5wb3BfYmFjaygpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICByZV9qdW1wKiBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+Z2V0YWRkcmVzcyhqdW1wX29mZnNldCkpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGptcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9qdW1wKTsKLSAgICAgIGptcC0+YWx0LmkgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0ganVtcF9vZmZzZXQ7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jX3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NfcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJhZGQ5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NfcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjX3JlZ2V4X3RyYWl0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFpdHMgY2xhc3MgdGhhdCB3cmFwcyB0aGUgZ2xvYmFsIEMgbG9jYWxlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9DX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9XT1JLQVJPVU5EX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjY3R5cGU+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZHsKLSAgIHVzaW5nIDo6c3RybGVuOyB1c2luZyA6OnRvbG93ZXI7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCBjX3JlZ2V4X3RyYWl0czsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1JFR0VYX0RFQ0wgY19yZWdleF90cmFpdHM8Y2hhcj4KLXsKLSAgIGNfcmVnZXhfdHJhaXRzKCl7fQotICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnN0cmluZyBzdHJpbmdfdHlwZTsKLSAgIHN0cnVjdCBsb2NhbGVfdHlwZXt9OwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QgY2hhcl9jbGFzc190eXBlOwotCi0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApIAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjpzdHJsZW4pKHApOyAKLSAgIH0KLQotICAgY2hhciB0cmFuc2xhdGUoY2hhciBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gYzsgCi0gICB9Ci0gICBjaGFyIHRyYW5zbGF0ZV9ub2Nhc2UoY2hhciBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4oKHN0ZDo6dG9sb3dlcikoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYykpKTsgCi0gICB9Ci0KLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybShjb25zdCBjaGFyKiBwMSwgY29uc3QgY2hhciogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIqIHAyKTsKLQotICAgc3RhdGljIGNoYXJfY2xhc3NfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyKiBwMSwgY29uc3QgY2hhciogcDIpOwotCi0gICBzdGF0aWMgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzY3R5cGUoY2hhciwgY2hhcl9jbGFzc190eXBlKTsKLSAgIHN0YXRpYyBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCB2YWx1ZShjaGFyLCBpbnQpOwotCi0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgeyByZXR1cm4gbDsgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgeyByZXR1cm4gbG9jYWxlX3R5cGUoKTsgfQotCi1wcml2YXRlOgotICAgLy8gdGhpcyB0eXBlIGlzIG5vdCBjb3B5YWJsZToKLSAgIGNfcmVnZXhfdHJhaXRzKGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci0gICBjX3JlZ2V4X3RyYWl0cyYgb3BlcmF0b3I9KGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1JFR0VYX0RFQ0wgY19yZWdleF90cmFpdHM8d2NoYXJfdD4KLXsKLSAgIGNfcmVnZXhfdHJhaXRzKCl7fQotICAgdHlwZWRlZiB3Y2hhcl90IGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OndzdHJpbmcgc3RyaW5nX3R5cGU7Ci0gICBzdHJ1Y3QgbG9jYWxlX3R5cGV7fTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90IGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKSAKLSAgIHsgCi0gICAgICByZXR1cm4gKHN0ZDo6d2NzbGVuKShwKTsgCi0gICB9Ci0KLSAgIHdjaGFyX3QgdHJhbnNsYXRlKHdjaGFyX3QgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIGM7IAotICAgfQotICAgd2NoYXJfdCB0cmFuc2xhdGVfbm9jYXNlKHdjaGFyX3QgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIChzdGQ6OnRvd2xvd2VyKShjKTsgCi0gICB9Ci0KLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybShjb25zdCB3Y2hhcl90KiBwMSwgY29uc3Qgd2NoYXJfdCogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLQotICAgc3RhdGljIGNoYXJfY2xhc3NfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jbGFzc25hbWUoY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCB3Y2hhcl90KiBwMSwgY29uc3Qgd2NoYXJfdCogcDIpOwotCi0gICBzdGF0aWMgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzY3R5cGUod2NoYXJfdCwgY2hhcl9jbGFzc190eXBlKTsKLSAgIHN0YXRpYyBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCB2YWx1ZSh3Y2hhcl90LCBpbnQpOwotCi0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgeyByZXR1cm4gbDsgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgeyByZXR1cm4gbG9jYWxlX3R5cGUoKTsgfQotCi1wcml2YXRlOgotICAgLy8gdGhpcyB0eXBlIGlzIG5vdCBjb3B5YWJsZToKLSAgIGNfcmVnZXhfdHJhaXRzKGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci0gICBjX3JlZ2V4X3RyYWl0cyYgb3BlcmF0b3I9KGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLS8vCi0vLyBQcm92aWRlIGFuIHVuc2lnbmVkIHNob3J0IHZlcnNpb24gYXMgd2VsbCwgc28gdGhlIHVzZXIgY2FuIGxpbmsgdG8gdGhpcwotLy8gbm8gbWF0dGVyIHdoZXRoZXIgdGhleSBidWlsZCB3aXRoIC9aYzp3Y2hhcl90IG9yIG5vdCAoTVNWQyBzcGVjaWZpYykuCi0vLwotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1JFR0VYX0RFQ0wgY19yZWdleF90cmFpdHM8dW5zaWduZWQgc2hvcnQ+Ci17Ci0gICBjX3JlZ2V4X3RyYWl0cygpe30KLSAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PiBzdHJpbmdfdHlwZTsKLSAgIHN0cnVjdCBsb2NhbGVfdHlwZXt9OwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QgY2hhcl9jbGFzc190eXBlOwotCi0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApIAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjp3Y3NsZW4pKChjb25zdCB3Y2hhcl90KilwKTsgCi0gICB9Ci0KLSAgIHVuc2lnbmVkIHNob3J0IHRyYW5zbGF0ZSh1bnNpZ25lZCBzaG9ydCBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gYzsgCi0gICB9Ci0gICB1bnNpZ25lZCBzaG9ydCB0cmFuc2xhdGVfbm9jYXNlKHVuc2lnbmVkIHNob3J0IGMpIGNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjp0b3dsb3dlcikoKHdjaGFyX3QpYyk7IAotICAgfQotCi0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB0cmFuc2Zvcm0oY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotCi0gICBzdGF0aWMgY2hhcl9jbGFzc190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2NsYXNzbmFtZShjb25zdCB1bnNpZ25lZCBzaG9ydCogcDEsIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMik7Ci0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotCi0gICBzdGF0aWMgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzY3R5cGUodW5zaWduZWQgc2hvcnQsIGNoYXJfY2xhc3NfdHlwZSk7Ci0gICBzdGF0aWMgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgdmFsdWUodW5zaWduZWQgc2hvcnQsIGludCk7Ci0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7IHJldHVybiBsOyB9Ci0gICBsb2NhbGVfdHlwZSBnZXRsb2MoKWNvbnN0Ci0gICB7IHJldHVybiBsb2NhbGVfdHlwZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAvLyB0aGlzIHR5cGUgaXMgbm90IGNvcHlhYmxlOgotICAgY19yZWdleF90cmFpdHMoY29uc3QgY19yZWdleF90cmFpdHMmKTsKLSAgIGNfcmVnZXhfdHJhaXRzJiBvcGVyYXRvcj0oY29uc3QgY19yZWdleF90cmFpdHMmKTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fV1JFR0VYCi0KLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY2hhcl9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jaGFyX3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZTUyMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jaGFyX3JlZ2V4X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjaGFyX3JlZ2V4X3RyYWl0cy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIGRlcHJlY2F0ZWQgdHJhaXRzIGNsYXNzZXMgY2hhcl9yZWdleF90cmFpdHM8Pi4KLSAgKi8KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0NIQVJfUkVHRVhfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9DSEFSX1JFR0VYX1RSQUlUU19IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSBkZXByZWNhdGVkewotLy8KLS8vIGNsYXNzIGNoYXJfcmVnZXhfdHJhaXRzX2kKLS8vIHByb3ZpZGVzIGNhc2UgaW5zZW5zaXRpdmUgdHJhaXRzIGNsYXNzZXMgKGRlcHJlY2F0ZWQpOgotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY2hhcl9yZWdleF90cmFpdHNfaSA6IHB1YmxpYyByZWdleF90cmFpdHM8Y2hhclQ+IHt9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBjaGFyX3JlZ2V4X3RyYWl0c19pPGNoYXI+IDogcHVibGljIHJlZ2V4X3RyYWl0czxjaGFyPgotewotcHVibGljOgotICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90eXBlOwotICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90eXBlOwotICAgdHlwZWRlZiByZWdleF90cmFpdHM8Y2hhcj4gYmFzZV90eXBlOwotCi19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGU8PgotY2xhc3MgY2hhcl9yZWdleF90cmFpdHNfaTx3Y2hhcl90PiA6IHB1YmxpYyByZWdleF90cmFpdHM8d2NoYXJfdD4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgd2NoYXJfdCBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHJlZ2V4X3RyYWl0czx3Y2hhcl90PiBiYXNlX3R5cGU7Ci0KLX07Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIGRlcHJlY2F0ZWQKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3BwX3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlYzg2NTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOTkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgSm9obiBNYWRkb2NrCi0gKiBDb3B5cmlnaHQgMjAxMSBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjcHBfcmVnZXhfdHJhaXRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHRyYWl0cyBjbGFzcyBjcHBfcmVnZXhfdHJhaXRzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NQUF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0NQUF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLQotI2lmbmRlZiBORE5CT09TVF9SRV9QQVRfRVhDRVBUX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcD4KLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcHJpbWFyeV90cmFuc2Zvcm0uaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX09CSkVDVF9DQUNIRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGlzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zPgotI2luY2x1ZGUgPGNsaW1pdHM+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDc4NiA0MjUxKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgCi0KLS8vCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uIGlzIG5lZWRlZCBieSBzb21lIGNvbXBpbGVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjcHBfcmVnZXhfdHJhaXRzOwotICAgCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vLwotLy8gY2xhc3MgcGFyc2VyX2J1ZjoKLS8vIGFjdHMgYXMgYSBzdHJlYW0gYnVmZmVyIHdoaWNoIHdyYXBzIGFyb3VuZCBhIHBhaXIgb2YgcG9pbnRlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULAotICAgICAgICAgIGNsYXNzIHRyYWl0cyA9IDo6c3RkOjpjaGFyX3RyYWl0czxjaGFyVD4gPgotY2xhc3MgcGFyc2VyX2J1ZiA6IHB1YmxpYyA6OnN0ZDo6YmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+Ci17Ci0gICB0eXBlZGVmIDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Y2hhclQsIHRyYWl0cz4gYmFzZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmludF90eXBlIGludF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6cG9zX3R5cGUgcG9zX3R5cGU7Ci0gICB0eXBlZGVmIDo6c3RkOjpzdHJlYW1zaXplIHN0cmVhbXNpemU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6b2ZmX3R5cGUgb2ZmX3R5cGU7Ci1wdWJsaWM6Ci0gICBwYXJzZXJfYnVmKCkgOiBiYXNlX3R5cGUoKSB7IHNldGJ1ZigwLCAwKTsgfQotICAgY29uc3QgY2hhclQqIGdldG5leHQoKSB7IHJldHVybiB0aGlzLT5ncHRyKCk7IH0KLXByb3RlY3RlZDoKLSAgIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+KiBzZXRidWYoY2hhcl90eXBlKiBzLCBzdHJlYW1zaXplIG4pOwotICAgdHlwZW5hbWUgcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6cG9zX3R5cGUgc2Vla3Bvcyhwb3NfdHlwZSBzcCwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCk7Ci0gICB0eXBlbmFtZSBwYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+Ojpwb3NfdHlwZSBzZWVrb2ZmKG9mZl90eXBlIG9mZiwgOjpzdGQ6Omlvc19iYXNlOjpzZWVrZGlyIHdheSwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCk7Ci1wcml2YXRlOgotICAgcGFyc2VyX2J1ZiYgb3BlcmF0b3I9KGNvbnN0IHBhcnNlcl9idWYmKTsKLSAgIHBhcnNlcl9idWYoY29uc3QgcGFyc2VyX2J1ZiYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXN0ZDo6YmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+KgotcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6c2V0YnVmKGNoYXJfdHlwZSogcywgc3RyZWFtc2l6ZSBuKQotewotICAgdGhpcy0+c2V0ZyhzLCBzLCBzICsgbik7Ci0gICByZXR1cm4gdGhpczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXR5cGVuYW1lIHBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnBvc190eXBlCi1wYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+OjpzZWVrb2ZmKG9mZl90eXBlIG9mZiwgOjpzdGQ6Omlvc19iYXNlOjpzZWVrZGlyIHdheSwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmludF90PHNpemVvZih3YXkpICogQ0hBUl9CSVQ+OjpsZWFzdCBjYXN0X3R5cGU7Ci0KLSAgIGlmKHdoaWNoICYgOjpzdGQ6Omlvc19iYXNlOjpvdXQpCi0gICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgIHN0ZDo6cHRyZGlmZl90IHNpemUgPSB0aGlzLT5lZ3B0cigpIC0gdGhpcy0+ZWJhY2soKTsKLSAgIHN0ZDo6cHRyZGlmZl90IHBvcyA9IHRoaXMtPmdwdHIoKSAtIHRoaXMtPmViYWNrKCk7Ci0gICBjaGFyVCogZyA9IHRoaXMtPmViYWNrKCk7Ci0gICBzd2l0Y2goc3RhdGljX2Nhc3Q8Y2FzdF90eXBlPih3YXkpKQotICAgewotICAgY2FzZSA6OnN0ZDo6aW9zX2Jhc2U6OmJlZzoKLSAgICAgIGlmKChvZmYgPCAwKSB8fCAob2ZmID4gc2l6ZSkpCi0gICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHRoaXMtPnNldGcoZywgZyArIG9mZiwgZyArIHNpemUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIDo6c3RkOjppb3NfYmFzZTo6ZW5kOgotICAgICAgaWYoKG9mZiA8IDApIHx8IChvZmYgPiBzaXplKSkKLSAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgZWxzZQotICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgc2l6ZSAtIG9mZiwgZyArIHNpemUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIDo6c3RkOjppb3NfYmFzZTo6Y3VyOgotICAgewotICAgICAgc3RkOjpwdHJkaWZmX3QgbmV3cG9zID0gc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHBvcyArIG9mZik7Ci0gICAgICBpZigobmV3cG9zIDwgMCkgfHwgKG5ld3BvcyA+IHNpemUpKQotICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICBlbHNlCi0gICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBuZXdwb3MsIGcgKyBzaXplKTsKLSAgICAgIGJyZWFrOwotICAgfQotICAgZGVmYXVsdDogOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkKLSNlbmRpZgotICAgcmV0dXJuIHN0YXRpY19jYXN0PHBvc190eXBlPih0aGlzLT5ncHRyKCkgLSB0aGlzLT5lYmFjaygpKTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci10eXBlbmFtZSBwYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+Ojpwb3NfdHlwZQotcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6c2Vla3Bvcyhwb3NfdHlwZSBzcCwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgIGlmKHdoaWNoICYgOjpzdGQ6Omlvc19iYXNlOjpvdXQpCi0gICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgIG9mZl90eXBlIHNpemUgPSBzdGF0aWNfY2FzdDxvZmZfdHlwZT4odGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmViYWNrKCkpOwotICAgY2hhclQqIGcgPSB0aGlzLT5lYmFjaygpOwotICAgaWYob2ZmX3R5cGUoc3ApIDw9IHNpemUpCi0gICB7Ci0gICAgICB0aGlzLT5zZXRnKGcsIGcgKyBvZmZfdHlwZShzcCksIGcgKyBzaXplKTsKLSAgIH0KLSAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotfQotCi0vLwotLy8gY2xhc3MgY3BwX3JlZ2V4X3RyYWl0c19iYXNlOgotLy8gYWN0cyBhcyBhIGNvbnRhaW5lciBmb3IgbG9jYWxlIGFuZCB0aGUgZmFjZXRzIHdlIGFyZSB1c2luZy4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlCi17Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2Jhc2UoY29uc3Qgc3RkOjpsb2NhbGUmIGwpCi0gICB7IGltYnVlKGwpOyB9Ci0gICBzdGQ6OmxvY2FsZSBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbCk7Ci0KLSAgIHN0ZDo6bG9jYWxlIG1fbG9jYWxlOwotICAgc3RkOjpjdHlwZTxjaGFyVD4gY29uc3QqIG1fcGN0eXBlOwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgIHN0ZDo6bWVzc2FnZXM8Y2hhclQ+IGNvbnN0KiBtX3BtZXNzYWdlczsKLSNlbmRpZgotICAgc3RkOjpjb2xsYXRlPGNoYXJUPiBjb25zdCogbV9wY29sbGF0ZTsKLQotICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlJiBiKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3BjdHlwZSA9PSBiLm1fcGN0eXBlKQotICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgICAgICAgIGlmKG1fcG1lc3NhZ2VzID09IGIubV9wbWVzc2FnZXMpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9wY29sbGF0ZSA8IGIubV9wY29sbGF0ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBtX3BtZXNzYWdlcyA8IGIubV9wbWVzc2FnZXM7Ci0jZWxzZQotICAgICAgICAgcmV0dXJuIG1fcGNvbGxhdGUgPCBiLm1fcGNvbGxhdGU7Ci0jZW5kaWYKLSAgICAgIH0KLSAgICAgIHJldHVybiBtX3BjdHlwZSA8IGIubV9wY3R5cGU7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yPT0oY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlJiBiKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKG1fcGN0eXBlID09IGIubV9wY3R5cGUpIAotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgICAgICAgICYmIChtX3BtZXNzYWdlcyA9PSBiLm1fcG1lc3NhZ2VzKSAKLSNlbmRpZgotICAgICAgICAgJiYgKG1fcGNvbGxhdGUgPT0gYi5tX3Bjb2xsYXRlKTsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6bG9jYWxlIGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD46OmltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotewotICAgc3RkOjpsb2NhbGUgcmVzdWx0KG1fbG9jYWxlKTsKLSAgIG1fbG9jYWxlID0gbDsKLSAgIG1fcGN0eXBlID0gJk5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6OmN0eXBlPGNoYXJUPiwgbCk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotICAgbV9wbWVzc2FnZXMgPSBORE5CT09TVF9IQVNfRkFDRVQoc3RkOjptZXNzYWdlczxjaGFyVD4sIGwpID8gJk5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6Om1lc3NhZ2VzPGNoYXJUPiwgbCkgOiAwOwotI2VuZGlmCi0gICBtX3Bjb2xsYXRlID0gJk5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6OmNvbGxhdGU8Y2hhclQ+LCBsKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBjbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI6Ci0vLyBpbXBsZW1lbnRzIG1ldGhvZHMgdGhhdCByZXF1aXJlIHNwZWNpYWxpc2F0aW9uIGZvciBuYXJyb3cgY2hhcmFjdGVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIgOiBwdWJsaWMgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPgotewotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6bWFwPGNoYXJULCByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlPiBtYXBfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwX3R5cGU6OmNvbnN0X2l0ZXJhdG9yIG1hcF9pdGVyYXRvcl90eXBlOwotcHVibGljOgotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotICAgICAgOiBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPiYgYikKLSAgICAgIDogY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPihiKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotICAgdm9pZCBpbml0KCk7Ci0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhclQgYyljb25zdAotICAgewotICAgICAgbWFwX2l0ZXJhdG9yX3R5cGUgaSA9IG1fY2hhcl9tYXAuZmluZChjKTsKLSAgICAgIHJldHVybiAoKGkgPT0gbV9jaGFyX21hcC5lbmQoKSkgPyAwIDogaS0+c2Vjb25kKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgbWFwX2l0ZXJhdG9yX3R5cGUgaSA9IG1fY2hhcl9tYXAuZmluZChjKTsKLSAgICAgIGlmKGkgPT0gbV9jaGFyX21hcC5lbmQoKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlX2Jhc2U6Omxvd2VyLCBjKSkgcmV0dXJuIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY2xhc3M7Ci0gICAgICAgICBpZih0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZV9iYXNlOjp1cHBlciwgYykpIHJldHVybiByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF9jbGFzczsKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgICAgcmV0dXJuIGktPnNlY29uZDsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIHN0cmluZ190eXBlIGdldF9kZWZhdWx0X21lc3NhZ2UocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSk7Ci0gICAvLyBUT0RPOiB1c2UgYSBoYXNoIHRhYmxlIHdoZW4gYXZhaWxhYmxlIQotICAgbWFwX3R5cGUgbV9jaGFyX21hcDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXZvaWQgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6aW5pdCgpCi17Ci0gICAvLyB3ZSBuZWVkIHRvIHN0YXJ0IGJ5IGluaXRpYWxpc2luZyBvdXIgc3ludGF4IG1hcCBzbyB3ZSBrbm93IHdoaWNoCi0gICAvLyBjaGFyYWN0ZXIgaXMgdXNlZCBmb3Igd2hpY2ggcHVycG9zZToKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0jaWZuZGVmIF9fSUJNQ1BQX18KLSAgIHR5cGVuYW1lIHN0ZDo6bWVzc2FnZXM8Y2hhclQ+OjpjYXRhbG9nIGNhdCA9IHN0YXRpY19jYXN0PHN0ZDo6bWVzc2FnZXM8Y2hhcj46OmNhdGFsb2c+KC0xKTsKLSNlbHNlCi0gICB0eXBlbmFtZSBzdGQ6Om1lc3NhZ2VzPGNoYXJUPjo6Y2F0YWxvZyBjYXQgPSByZWludGVycHJldF9jYXN0PHN0ZDo6bWVzc2FnZXM8Y2hhcj46OmNhdGFsb2c+KC0xKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgY2F0X25hbWUoY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWUoKSk7Ci0gICBpZihjYXRfbmFtZS5zaXplKCkgJiYgKHRoaXMtPm1fcG1lc3NhZ2VzICE9IDApKQotICAgewotICAgICAgY2F0ID0gdGhpcy0+bV9wbWVzc2FnZXMtPm9wZW4oCi0gICAgICAgICBjYXRfbmFtZSwgCi0gICAgICAgICB0aGlzLT5tX2xvY2FsZSk7Ci0gICAgICBpZigoaW50KWNhdCA8IDApCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN0cmluZyBtKCJVbmFibGUgdG8gb3BlbiBtZXNzYWdlIGNhdGFsb2c6ICIpOwotICAgICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGVycihtICsgY2F0X25hbWUpOwotICAgICAgICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlcnIpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGhhdmUgYSB2YWxpZCBjYXRhbG9nIHRoZW4gbG9hZCBvdXIgbWVzc2FnZXM6Ci0gICAvLwotICAgaWYoKGludCljYXQgPj0gMCkKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgICAgdHJ5ewotI2VuZGlmCi0gICAgICAgICBmb3IocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpID0gMTsgaSA8IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X21heDsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgc3RyaW5nX3R5cGUgbXNzID0gdGhpcy0+bV9wbWVzc2FnZXMtPmdldChjYXQsIDAsIGksIGdldF9kZWZhdWx0X21lc3NhZ2UoaSkpOwotICAgICAgICAgICAgZm9yKHR5cGVuYW1lIHN0cmluZ190eXBlOjpzaXplX3R5cGUgaiA9IDA7IGogPCBtc3Muc2l6ZSgpOyArK2opCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBtX2NoYXJfbWFwW21zc1tqXV0gPSBpOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgdGhpcy0+bV9wbWVzc2FnZXMtPmNsb3NlKGNhdCk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICAgIH0KLSAgICAgIGNhdGNoKC4uLikKLSAgICAgIHsKLSAgICAgICAgIGlmKHRoaXMtPm1fcG1lc3NhZ2VzKQotICAgICAgICAgICAgdGhpcy0+bV9wbWVzc2FnZXMtPmNsb3NlKGNhdCk7Ci0gICAgICAgICB0aHJvdzsKLSAgICAgIH0KLSNlbmRpZgotICAgfQotICAgZWxzZQotICAgewotI2VuZGlmCi0gICAgICBmb3IocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpID0gMTsgaSA8IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X21heDsgKytpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogcHRyID0gZ2V0X2RlZmF1bHRfc3ludGF4KGkpOwotICAgICAgICAgd2hpbGUocHRyICYmICpwdHIpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX2NoYXJfbWFwW3RoaXMtPm1fcGN0eXBlLT53aWRlbigqcHRyKV0gPSBpOwotICAgICAgICAgICAgKytwdHI7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotICAgfQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6Z2V0X2RlZmF1bHRfbWVzc2FnZShyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkpCi17Ci0gICBjb25zdCBjaGFyKiBwdHIgPSBnZXRfZGVmYXVsdF9zeW50YXgoaSk7Ci0gICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICB3aGlsZShwdHIgJiYgKnB0cikKLSAgIHsKLSAgICAgIHJlc3VsdC5hcHBlbmQoMSwgdGhpcy0+bV9wY3R5cGUtPndpZGVuKCpwdHIpKTsKLSAgICAgICsrcHRyOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIHNwZWNpYWxpc2VkIHZlcnNpb24gZm9yIG5hcnJvdyBjaGFyYWN0ZXJzOgotLy8KLXRlbXBsYXRlIDw+Ci1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyPiA6IHB1YmxpYyBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4KLXsKLSAgIHR5cGVkZWYgc3RkOjpzdHJpbmcgc3RyaW5nX3R5cGU7Ci1wdWJsaWM6Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3Qgc3RkOjpsb2NhbGUmIGwpCi0gICA6IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyPihsKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKGNvbnN0IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyPiYgbCkKLSAgIDogY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhciBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jaGFyX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhciBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fY2hhcl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOwotICAgfQotCi1wcml2YXRlOgotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBtX2NoYXJfbWFwWzF1IDw8IENIQVJfQklUXTsKLSAgIHZvaWQgaW5pdCgpOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi1lbnVtCi17Ci0gICBjaGFyX2NsYXNzX3NwYWNlPTE8PDAsIAotICAgY2hhcl9jbGFzc19wcmludD0xPDwxLCAKLSAgIGNoYXJfY2xhc3NfY250cmw9MTw8MiwgCi0gICBjaGFyX2NsYXNzX3VwcGVyPTE8PDMsIAotICAgY2hhcl9jbGFzc19sb3dlcj0xPDw0LAotICAgY2hhcl9jbGFzc19hbHBoYT0xPDw1LCAKLSAgIGNoYXJfY2xhc3NfZGlnaXQ9MTw8NiwgCi0gICBjaGFyX2NsYXNzX3B1bmN0PTE8PDcsIAotICAgY2hhcl9jbGFzc194ZGlnaXQ9MTw8OCwKLSAgIGNoYXJfY2xhc3NfYWxudW09Y2hhcl9jbGFzc19hbHBoYXxjaGFyX2NsYXNzX2RpZ2l0LCAKLSAgIGNoYXJfY2xhc3NfZ3JhcGg9Y2hhcl9jbGFzc19hbG51bXxjaGFyX2NsYXNzX3B1bmN0LAotICAgY2hhcl9jbGFzc19ibGFuaz0xPDw5LAotICAgY2hhcl9jbGFzc193b3JkPTE8PDEwLAotICAgY2hhcl9jbGFzc191bmljb2RlPTE8PDExLAotICAgY2hhcl9jbGFzc19ob3Jpem9udGFsX3NwYWNlPTE8PDEyLAotICAgY2hhcl9jbGFzc192ZXJ0aWNhbF9zcGFjZT0xPDwxMwotfTsKLQotI2VuZGlmCi0KLS8vCi0vLyBjbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uOgotLy8gcHJvdmlkZXMgcGltcGwgaW1wbGVtZW50YXRpb24gZm9yIGNwcF9yZWdleF90cmFpdHMuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmN0eXBlPGNoYXJUPjo6bWFzayAgICAgICAgICAgICAgICAgIG5hdGl2ZV9tYXNrX3R5cGU7Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX2JsYW5rID0gMXUgPDwgMjQpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza193b3JkID0gMXUgPDwgMjUpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza191bmljb2RlID0gMXUgPDwgMjYpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza19ob3Jpem9udGFsID0gMXUgPDwgMjcpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza192ZXJ0aWNhbCA9IDF1IDw8IDI4KTsKLSNlbmRpZgotCi0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgY2hhclQgY2hhcl90eXBlOwotICAgLy9jcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKCk7Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotICAgICAgOiBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGNvbnN0IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4mIGwpCi0gICAgICA6IGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD4obCkKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIGlmKCFtX2Vycm9yX3N0cmluZ3MuZW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwID0gbV9lcnJvcl9zdHJpbmdzLmZpbmQobik7Ci0gICAgICAgICByZXR1cm4gKHAgPT0gbV9lcnJvcl9zdHJpbmdzLmVuZCgpKSA/IHN0ZDo6c3RyaW5nKGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhuKSkgOiBwLT5zZWNvbmQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKG4pOwotICAgfQotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICBjaGFyX2NsYXNzX3R5cGUgcmVzdWx0ID0gbG9va3VwX2NsYXNzbmFtZV9pbXAocDEsIHAyKTsKLSAgICAgIGlmKHJlc3VsdCA9PSAwKQotICAgICAgewotICAgICAgICAgc3RyaW5nX3R5cGUgdGVtcChwMSwgcDIpOwotICAgICAgICAgdGhpcy0+bV9wY3R5cGUtPnRvbG93ZXIoJip0ZW1wLmJlZ2luKCksICYqdGVtcC5iZWdpbigpICsgdGVtcC5zaXplKCkpOwotICAgICAgICAgcmVzdWx0ID0gbG9va3VwX2NsYXNzbmFtZV9pbXAoJip0ZW1wLmJlZ2luKCksICYqdGVtcC5iZWdpbigpICsgdGVtcC5zaXplKCkpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotcHJpdmF0ZToKLSAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+ICAgICBtX2Vycm9yX3N0cmluZ3M7ICAgLy8gZXJyb3IgbWVzc2FnZXMgaW5kZXhlZCBieSBudW1iZXJpYyBJRAotICAgc3RkOjptYXA8c3RyaW5nX3R5cGUsIGNoYXJfY2xhc3NfdHlwZT4gIG1fY3VzdG9tX2NsYXNzX25hbWVzOyAvLyBjaGFyYWN0ZXIgY2xhc3MgbmFtZXMKLSAgIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBzdHJpbmdfdHlwZT4gICAgICBtX2N1c3RvbV9jb2xsYXRlX25hbWVzOyAvLyBjb2xsYXRpbmcgZWxlbWVudCBuYW1lcwotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV90eXBlOyAgICAvLyB0aGUgZm9ybSBvZiB0aGUgY29sbGF0aW9uIHN0cmluZwotICAgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV9kZWxpbTsgICAvLyB0aGUgY29sbGF0aW9uIGdyb3VwIGRlbGltaXRlcgotICAgLy8KLSAgIC8vIGhlbHBlcnM6Ci0gICAvLwotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLSAgIHZvaWQgaW5pdCgpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi1wdWJsaWM6Ci0gICBib29sIGlzY3R5cGUoY2hhclQgYywgY2hhcl9jbGFzc190eXBlIG0pY29uc3Q7Ci0jZW5kaWYKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ibGFuazsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZDsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZTsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWw7Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNvbnN0IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWw7Ci0KLSNlbmRpZgotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojp0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIC8vCi0gICAvLyBQUkVDT05ESVRJT05TOgotICAgLy8KLSAgIC8vIEEgYnVnIGluIGdjYyAzLjIgKGFuZCBtYXliZSBvdGhlciB2ZXJzaW9ucyBhcyB3ZWxsKSB0cmVhdHMKLSAgIC8vIHAxIGFzIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZywgZm9yIGVmZmljaWVuY3kgcmVhc29ucyAKLSAgIC8vIHdlIHdvcmsgYXJvdW5kIHRoaXMgZWxzZXdoZXJlLCBidXQganVzdCBhc3NlcnQgaGVyZSB0aGF0Ci0gICAvLyB3ZSBhZGhlcmUgdG8gZ2NjJ3MgKGJ1Z2d5KSBwcmVjb25kaXRpb25zLi4uCi0gICAvLwotICAgTkROQk9PU1RfQVNTRVJUKCpwMiA9PSAwKTsKLQotICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgLy8KLSAgIC8vIHN3YWxsb3dpbmcgYWxsIGV4Y2VwdGlvbnMgaGVyZSBpcyBhIGJhZCBpZGVhCi0gICAvLyBob3dldmVyIGF0IGxlYXN0IG9uZSBzdGQgbGliIHdpbGwgYWx3YXlzIHRocm93Ci0gICAvLyBzdGQ6OmJhZF9hbGxvYyBmb3IgY2VydGFpbiBhcmd1bWVudHMuLi4KLSAgIC8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIHRyeXsKLSNlbmRpZgotICAgICAgLy8KLSAgICAgIC8vIFdoYXQgd2UgZG8gaGVyZSBkZXBlbmRzIHVwb24gdGhlIGZvcm1hdCBvZiB0aGUgc29ydCBrZXkgcmV0dXJuZWQgYnkKLSAgICAgIC8vIHNvcnQga2V5IHJldHVybmVkIGJ5IHRoaXMtPnRyYW5zZm9ybToKLSAgICAgIC8vCi0gICAgICBzd2l0Y2gobV9jb2xsYXRlX3R5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHNvcnRfQzoKLSAgICAgIGNhc2Ugc29ydF91bmtub3duOgotICAgICAgICAgLy8gdGhlIGJlc3Qgd2UgY2FuIGRvIGlzIHRyYW5zbGF0ZSB0byBsb3dlciBjYXNlLCB0aGVuIGdldCBhIHJlZ3VsYXIgc29ydCBrZXk6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuYXNzaWduKHAxLCBwMik7Ci0gICAgICAgICAgICB0aGlzLT5tX3BjdHlwZS0+dG9sb3dlcigmKnJlc3VsdC5iZWdpbigpLCAmKnJlc3VsdC5iZWdpbigpICsgcmVzdWx0LnNpemUoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSB0aGlzLT5tX3Bjb2xsYXRlLT50cmFuc2Zvcm0oJipyZXN1bHQuYmVnaW4oKSwgJipyZXN1bHQuYmVnaW4oKSArIHJlc3VsdC5zaXplKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICBjYXNlIHNvcnRfZml4ZWQ6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBnZXQgYSByZWd1bGFyIHNvcnQga2V5LCBhbmQgdGhlbiB0cnVuY2F0ZSBpdDoKLSAgICAgICAgICAgIHJlc3VsdC5hc3NpZ24odGhpcy0+bV9wY29sbGF0ZS0+dHJhbnNmb3JtKHAxLCBwMikpOwotICAgICAgICAgICAgcmVzdWx0LmVyYXNlKHRoaXMtPm1fY29sbGF0ZV9kZWxpbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgIGNhc2Ugc29ydF9kZWxpbToKLSAgICAgICAgICAgIC8vIGdldCBhIHJlZ3VsYXIgc29ydCBrZXksIGFuZCB0aGVuIHRydW5jYXRlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRlbGltOgotICAgICAgICAgICAgcmVzdWx0LmFzc2lnbih0aGlzLT5tX3Bjb2xsYXRlLT50cmFuc2Zvcm0ocDEsIHAyKSk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpOwotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYocmVzdWx0W2ldID09IG1fY29sbGF0ZV9kZWxpbSkKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzdWx0LmVyYXNlKGkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIH1jYXRjaCguLi4pe30KLSNlbmRpZgotICAgd2hpbGUocmVzdWx0LnNpemUoKSAmJiAoY2hhclQoMCkgPT0gKnJlc3VsdC5yYmVnaW4oKSkpCi0gICAgICByZXN1bHQuZXJhc2UocmVzdWx0LnNpemUoKSAtIDEpOwotICAgaWYocmVzdWx0LmVtcHR5KCkpCi0gICB7Ci0gICAgICAvLyBjaGFyYWN0ZXIgaXMgaWdub3JhYmxlIGF0IHRoZSBwcmltYXJ5IGxldmVsOgotICAgICAgcmVzdWx0ID0gc3RyaW5nX3R5cGUoMSwgY2hhclQoMCkpOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnRyYW5zZm9ybShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIC8vCi0gICAvLyBQUkVDT05ESVRJT05TOgotICAgLy8KLSAgIC8vIEEgYnVnIGluIGdjYyAzLjIgKGFuZCBtYXliZSBvdGhlciB2ZXJzaW9ucyBhcyB3ZWxsKSB0cmVhdHMKLSAgIC8vIHAxIGFzIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZywgZm9yIGVmZmljaWVuY3kgcmVhc29ucyAKLSAgIC8vIHdlIHdvcmsgYXJvdW5kIHRoaXMgZWxzZXdoZXJlLCBidXQganVzdCBhc3NlcnQgaGVyZSB0aGF0Ci0gICAvLyB3ZSBhZGhlcmUgdG8gZ2NjJ3MgKGJ1Z2d5KSBwcmVjb25kaXRpb25zLi4uCi0gICAvLwotICAgTkROQk9PU1RfQVNTRVJUKCpwMiA9PSAwKTsKLSAgIC8vCi0gICAvLyBzd2FsbG93aW5nIGFsbCBleGNlcHRpb25zIGhlcmUgaXMgYSBiYWQgaWRlYQotICAgLy8gaG93ZXZlciBhdCBsZWFzdCBvbmUgc3RkIGxpYiB3aWxsIGFsd2F5cyB0aHJvdwotICAgLy8gc3RkOjpiYWRfYWxsb2MgZm9yIGNlcnRhaW4gYXJndW1lbnRzLi4uCi0gICAvLwotICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICB0cnl7Ci0jZW5kaWYKLSAgICAgIHJlc3VsdCA9IHRoaXMtPm1fcGNvbGxhdGUtPnRyYW5zZm9ybShwMSwgcDIpOwotICAgICAgLy8KLSAgICAgIC8vIEJvcmxhbmQncyBTVExQb3J0IHZlcnNpb24gcmV0dXJucyBhIE5VTEwtdGVybWluYXRlZAotICAgICAgLy8gc3RyaW5nIHRoYXQgaGFzIGdhcmJhZ2UgYXQgdGhlIGVuZCAtIGVhY2ggY2FsbCB0bwotICAgICAgLy8gc3RkOjpjb2xsYXRlPHdjaGFyX3Q+Ojp0cmFuc2Zvcm0gcmV0dXJucyBhIGRpZmZlcmVudCBzdHJpbmchCi0gICAgICAvLyBTbyBhcyBhIHdvcmthcm91bmQsIHdlJ2xsIHRydW5jYXRlIHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IE5VTEwKLSAgICAgIC8vIHdoaWNoIF9zZWVtc18gdG8gd29yay4uLi4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDU4MCkKLSAgICAgIHJlc3VsdC5lcmFzZShyZXN1bHQuZmluZChjaGFyVCgwKSkpOwotI2Vsc2UKLSAgICAgIC8vCi0gICAgICAvLyBzb21lIGltcGxlbWVudGF0aW9ucyAoRGlua3Vtd2FyZSkgYXBwZW5kIHVubmVjZXNzYXJ5IHRyYWlsaW5nIFwwJ3M6Ci0gICAgICB3aGlsZShyZXN1bHQuc2l6ZSgpICYmIChjaGFyVCgwKSA9PSAqcmVzdWx0LnJiZWdpbigpKSkKLSAgICAgICAgIHJlc3VsdC5lcmFzZShyZXN1bHQuc2l6ZSgpIC0gMSk7Ci0jZW5kaWYKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzdGQ6OmZpbmQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgY2hhclQoMCkpID09IHJlc3VsdC5lbmQoKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIH0KLSAgIGNhdGNoKC4uLikKLSAgIHsKLSAgIH0KLSNlbmRpZgotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1hcDxzdHJpbmdfdHlwZSwgc3RyaW5nX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICBpZihtX2N1c3RvbV9jb2xsYXRlX25hbWVzLnNpemUoKSkKLSAgIHsKLSAgICAgIGl0ZXJfdHlwZSBwb3MgPSBtX2N1c3RvbV9jb2xsYXRlX25hbWVzLmZpbmQoc3RyaW5nX3R5cGUocDEsIHAyKSk7Ci0gICAgICBpZihwb3MgIT0gbV9jdXN0b21fY29sbGF0ZV9uYW1lcy5lbmQoKSkKLSAgICAgICAgIHJldHVybiBwb3MtPnNlY29uZDsKLSAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMClcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSkKLSAgIHN0ZDo6c3RyaW5nIG5hbWUocDEsIHAyKTsKLSNlbHNlCi0gICBzdGQ6OnN0cmluZyBuYW1lOwotICAgY29uc3QgY2hhclQqIHAwID0gcDE7Ci0gICB3aGlsZShwMCAhPSBwMikKLSAgICAgIG5hbWUuYXBwZW5kKDEsIGNoYXIoKnAwKyspKTsKLSNlbmRpZgotICAgbmFtZSA9IGxvb2t1cF9kZWZhdWx0X2NvbGxhdGVfbmFtZShuYW1lKTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMClcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSkKLSAgIGlmKG5hbWUuc2l6ZSgpKQotICAgICAgcmV0dXJuIHN0cmluZ190eXBlKG5hbWUuYmVnaW4oKSwgbmFtZS5lbmQoKSk7Ci0jZWxzZQotICAgaWYobmFtZS5zaXplKCkpCi0gICB7Ci0gICAgICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICAgICB0eXBlZGVmIHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpdGVyOwotICAgICAgaXRlciBiID0gbmFtZS5iZWdpbigpOwotICAgICAgaXRlciBlID0gbmFtZS5lbmQoKTsKLSAgICAgIHdoaWxlKGIgIT0gZSkKLSAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSwgY2hhclQoKmIrKykpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSNlbmRpZgotICAgaWYocDIgLSBwMSA9PSAxKQotICAgICAgcmV0dXJuIHN0cmluZ190eXBlKDEsICpwMSk7Ci0gICByZXR1cm4gc3RyaW5nX3R5cGUoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdm9pZCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6aW5pdCgpCi17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotI2lmbmRlZiBfX0lCTUNQUF9fCi0gICB0eXBlbmFtZSBzdGQ6Om1lc3NhZ2VzPGNoYXJUPjo6Y2F0YWxvZyBjYXQgPSBzdGF0aWNfY2FzdDxzdGQ6Om1lc3NhZ2VzPGNoYXI+OjpjYXRhbG9nPigtMSk7Ci0jZWxzZQotICAgdHlwZW5hbWUgc3RkOjptZXNzYWdlczxjaGFyVD46OmNhdGFsb2cgY2F0ID0gcmVpbnRlcnByZXRfY2FzdDxzdGQ6Om1lc3NhZ2VzPGNoYXI+OjpjYXRhbG9nPigtMSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIGNhdF9uYW1lKGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lKCkpOwotICAgaWYoY2F0X25hbWUuc2l6ZSgpICYmICh0aGlzLT5tX3BtZXNzYWdlcyAhPSAwKSkKLSAgIHsKLSAgICAgIGNhdCA9IHRoaXMtPm1fcG1lc3NhZ2VzLT5vcGVuKAotICAgICAgICAgY2F0X25hbWUsIAotICAgICAgICAgdGhpcy0+bV9sb2NhbGUpOwotICAgICAgaWYoKGludCljYXQgPCAwKQotICAgICAgewotICAgICAgICAgc3RkOjpzdHJpbmcgbSgiVW5hYmxlIHRvIG9wZW4gbWVzc2FnZSBjYXRhbG9nOiAiKTsKLSAgICAgICAgIHN0ZDo6cnVudGltZV9lcnJvciBlcnIobSArIGNhdF9uYW1lKTsKLSAgICAgICAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OnJhaXNlX3J1bnRpbWVfZXJyb3IoZXJyKTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBpZiB3ZSBoYXZlIGEgdmFsaWQgY2F0YWxvZyB0aGVuIGxvYWQgb3VyIG1lc3NhZ2VzOgotICAgLy8KLSAgIGlmKChpbnQpY2F0ID49IDApCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gRXJyb3IgbWVzc2FnZXM6Ci0gICAgICAvLwotICAgICAgZm9yKG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgaSA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGU+KDApOyAKLSAgICAgICAgIGkgPD0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdW5rbm93bjsgCi0gICAgICAgICBpID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZT4oaSArIDEpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogcCA9IGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhpKTsKLSAgICAgICAgIHN0cmluZ190eXBlIGRlZmF1bHRfbWVzc2FnZTsKLSAgICAgICAgIHdoaWxlKCpwKQotICAgICAgICAgewotICAgICAgICAgICAgZGVmYXVsdF9tZXNzYWdlLmFwcGVuZCgxLCB0aGlzLT5tX3BjdHlwZS0+d2lkZW4oKnApKTsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgIH0KLSAgICAgICAgIHN0cmluZ190eXBlIHMgPSB0aGlzLT5tX3BtZXNzYWdlcy0+Z2V0KGNhdCwgMCwgaSsyMDAsIGRlZmF1bHRfbWVzc2FnZSk7Ci0gICAgICAgICBzdGQ6OnN0cmluZyByZXN1bHQ7Ci0gICAgICAgICBmb3Ioc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBqID0gMDsgaiA8IHMuc2l6ZSgpOyArK2opCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEsIHRoaXMtPm1fcGN0eXBlLT5uYXJyb3coc1tqXSwgMCkpOwotICAgICAgICAgfQotICAgICAgICAgbV9lcnJvcl9zdHJpbmdzW2ldID0gcmVzdWx0OwotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIEN1c3RvbSBjbGFzcyBuYW1lczoKLSAgICAgIC8vCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0gICAgICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzE2XSA9IAotICAgICAgewotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmFsbnVtLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmFscGhhLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmNudHJsLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmRpZ2l0LAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmdyYXBoLAotICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+Ojpsb3dlciwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwcmludCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwdW5jdCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+Ojp1cHBlciwKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OnhkaWdpdCwKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2JsYW5rLAotICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUsCi0gICAgICB9OwotI2Vsc2UKLSAgICAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza3NbMTZdID0gCi0gICAgICB7Ci0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxudW0sCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxwaGEsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfY250cmwsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZGlnaXQsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZ3JhcGgsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfaG9yaXpvbnRhbF9zcGFjZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlciwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wcmludCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wdW5jdCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191cHBlciwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc192ZXJ0aWNhbF9zcGFjZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc194ZGlnaXQsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYmxhbmssCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfd29yZCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191bmljb2RlLAotICAgICAgfTsKLSNlbmRpZgotICAgICAgc3RhdGljIGNvbnN0IHN0cmluZ190eXBlIG51bGxfc3RyaW5nOwotICAgICAgZm9yKHVuc2lnbmVkIGludCBqID0gMDsgaiA8PSAxMzsgKytqKQotICAgICAgewotICAgICAgICAgc3RyaW5nX3R5cGUgcyh0aGlzLT5tX3BtZXNzYWdlcy0+Z2V0KGNhdCwgMCwgaiszMDAsIG51bGxfc3RyaW5nKSk7Ci0gICAgICAgICBpZihzLnNpemUoKSkKLSAgICAgICAgICAgIHRoaXMtPm1fY3VzdG9tX2NsYXNzX25hbWVzW3NdID0gbWFza3Nbal07Ci0gICAgICB9Ci0gICB9Ci0jZW5kaWYKLSAgIC8vCi0gICAvLyBnZXQgdGhlIGNvbGxhdGlvbiBmb3JtYXQgdXNlZCBieSBtX3Bjb2xsYXRlOgotICAgLy8KLSAgIG1fY29sbGF0ZV90eXBlID0gcmVfZGV0YWlsOjpmaW5kX3NvcnRfc3ludGF4KHRoaXMsICZtX2NvbGxhdGVfZGVsaW0pOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Omxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrc1syMl0gPSAKLSAgIHsKLSAgICAgIDAsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjphbG51bSwgCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjphbHBoYSwKLSAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2JsYW5rLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6Y250cmwsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpkaWdpdCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmRpZ2l0LAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6Z3JhcGgsCi0gICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6bG93ZXIsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+Ojpsb3dlciwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnByaW50LAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6cHVuY3QsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpzcGFjZSwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnNwYWNlLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6dXBwZXIsCi0gICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6dXBwZXIsCi0gICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmFsbnVtIHwgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwgCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjphbG51bSB8IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQsIAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6eGRpZ2l0LAotICAgfTsKLSNlbHNlCi0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzIyXSA9IAotICAgewotICAgICAgMCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbG51bSwgCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxwaGEsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYmxhbmssCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfY250cmwsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZGlnaXQsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZGlnaXQsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZ3JhcGgsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfaG9yaXpvbnRhbF9zcGFjZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlciwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlciwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wcmludCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wdW5jdCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191cHBlciwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191bmljb2RlLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VwcGVyLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3ZlcnRpY2FsX3NwYWNlLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FsbnVtIHwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3dvcmQsIAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FsbnVtIHwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3dvcmQsIAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3hkaWdpdCwKLSAgIH07Ci0jZW5kaWYKLSAgIGlmKG1fY3VzdG9tX2NsYXNzX25hbWVzLnNpemUoKSkKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYXA8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+LCBjaGFyX2NsYXNzX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBtYXBfaXRlcjsKLSAgICAgIG1hcF9pdGVyIHBvcyA9IG1fY3VzdG9tX2NsYXNzX25hbWVzLmZpbmQoc3RyaW5nX3R5cGUocDEsIHAyKSk7Ci0gICAgICBpZihwb3MgIT0gbV9jdXN0b21fY2xhc3NfbmFtZXMuZW5kKCkpCi0gICAgICAgICByZXR1cm4gcG9zLT5zZWNvbmQ7Ci0gICB9Ci0gICBzdGQ6OnNpemVfdCBzdGF0ZV9pZCA9IDEgKyByZV9kZXRhaWw6OmdldF9kZWZhdWx0X2NsYXNzX2lkKHAxLCBwMik7Ci0gICBORE5CT09TVF9BU1NFUlQoc3RhdGVfaWQgPCBzaXplb2YobWFza3MpIC8gc2l6ZW9mKG1hc2tzWzBdKSk7Ci0gICByZXR1cm4gbWFza3Nbc3RhdGVfaWRdOwotfQotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWJvb2wgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmlzY3R5cGUoY29uc3QgY2hhclQgYywgY2hhcl9jbGFzc190eXBlIG1hc2spIGNvbnN0Ci17Ci0gICByZXR1cm4KLSAgICAgICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wcmludCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6cHJpbnQsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19jbnRybCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6Y250cmwsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191cHBlcikgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6dXBwZXIsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlcikgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6bG93ZXIsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbHBoYSkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6YWxwaGEsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19kaWdpdCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6ZGlnaXQsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wdW5jdCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6cHVuY3QsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc194ZGlnaXQpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnhkaWdpdCwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2JsYW5rKSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSwgYykpICYmICE6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmlzX3NlcGFyYXRvcihjKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc193b3JkKSAmJiAoYyA9PSAnXycpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VuaWNvZGUpICYmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6aXNfZXh0ZW5kZWQoYykpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdmVydGljYWxfc3BhY2UpICYmIChpc19zZXBhcmF0b3IoYykgfHwgKGMgPT0gJ1x2JykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2hvcml6b250YWxfc3BhY2UpICYmIHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UsIGMpICYmICEoaXNfc2VwYXJhdG9yKGMpIHx8IChjID09ICdcdicpKSk7Ci19Ci0jZW5kaWYKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8Y29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPiBjcmVhdGVfY3BwX3JlZ2V4X3RyYWl0cyhjb25zdCBzdGQ6OmxvY2FsZSYgbCBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRShjaGFyVCkpCi17Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+IGtleShsKTsKLSAgIHJldHVybiA6Om5kbmJvb3N0OjpvYmplY3RfY2FjaGU8Y3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPiwgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPjo6Z2V0KGtleSwgNSk7Ci19Ci0KLX0gLy8gcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIGNwcF9yZWdleF90cmFpdHMKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHN0ZDo6Y3R5cGU8Y2hhclQ+ICAgICAgICAgICAgY3R5cGVfdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+IHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBzdGQ6OmxvY2FsZSAgICAgICAgICAgICAgICAgIGxvY2FsZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RydWN0IGJvb3N0X2V4dGVuc2lvbnNfdGFne307Ci0KLSAgIGNwcF9yZWdleF90cmFpdHMoKQotICAgICAgOiBtX3BpbXBsKHJlX2RldGFpbDo6Y3JlYXRlX2NwcF9yZWdleF90cmFpdHM8Y2hhclQ+KHN0ZDo6bG9jYWxlKCkpKQotICAgeyB9Ci0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApCi0gICB7Ci0gICAgICByZXR1cm4gc3RkOjpjaGFyX3RyYWl0czxjaGFyVD46Omxlbmd0aChwKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhclQgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnN5bnRheF90eXBlKGMpOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+ZXNjYXBlX3N5bnRheF90eXBlKGMpOwotICAgfQotICAgY2hhclQgdHJhbnNsYXRlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gYzsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZV9ub2Nhc2UoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX3BjdHlwZS0+dG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZShjaGFyVCBjLCBib29sIGljYXNlKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGljYXNlID8gbV9waW1wbC0+bV9wY3R5cGUtPnRvbG93ZXIoYykgOiBjOwotICAgfQotICAgY2hhclQgdG9sb3dlcihjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPm1fcGN0eXBlLT50b2xvd2VyKGMpOwotICAgfQotICAgY2hhclQgdG91cHBlcihjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPm1fcGN0eXBlLT50b3VwcGVyKGMpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnRyYW5zZm9ybShwMSwgcDIpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+dHJhbnNmb3JtX3ByaW1hcnkocDEsIHAyKTsKLSAgIH0KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmxvb2t1cF9jbGFzc25hbWUocDEsIHAyKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5sb29rdXBfY29sbGF0ZW5hbWUocDEsIHAyKTsKLSAgIH0KLSAgIGJvb2wgaXNjdHlwZShjaGFyVCBjLCBjaGFyX2NsYXNzX3R5cGUgZikgY29uc3QKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjdHlwZTxjaGFyVD46Om1hc2sgY3R5cGVfbWFzazsKLQotICAgICAgc3RhdGljIGNvbnN0IGN0eXBlX21hc2sgbWFza19iYXNlID0gCi0gICAgICAgICBzdGF0aWNfY2FzdDxjdHlwZV9tYXNrPigKLSAgICAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjphbG51bSAKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OmFscGhhCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpjbnRybAotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6ZGlnaXQKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OmdyYXBoCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+Ojpsb3dlcgotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6cHJpbnQKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OnB1bmN0Ci0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZQotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6dXBwZXIKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OnhkaWdpdCk7Ci0KLSAgICAgIGlmKChmICYgbWFza19iYXNlKSAKLSAgICAgICAgICYmIChtX3BpbXBsLT5tX3BjdHlwZS0+aXMoCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxjdHlwZV9tYXNrPihmICYgbWFza19iYXNlKSwgYykpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlKSAmJiByZV9kZXRhaWw6OmlzX2V4dGVuZGVkKGMpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkKSAmJiAoYyA9PSAnXycpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ibGFuaykgCi0gICAgICAgICAmJiBtX3BpbXBsLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlLCBjKQotICAgICAgICAgJiYgIXJlX2RldGFpbDo6aXNfc2VwYXJhdG9yKGMpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCkgCi0gICAgICAgICAmJiAoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjppc19zZXBhcmF0b3IoYykgfHwgKGMgPT0gJ1x2JykpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsKSAKLSAgICAgICAgICYmIHRoaXMtPmlzY3R5cGUoYywgc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlKSAmJiAhdGhpcy0+aXNjdHlwZShjLCByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKLSAgICAgIHJldHVybiBtX3BpbXBsLT5pc2N0eXBlKGMsIGYpOwotI2VuZGlmCi0gICB9Ci0gICBpbnQgdG9pKGNvbnN0IGNoYXJUKiYgcDEsIGNvbnN0IGNoYXJUKiBwMiwgaW50IHJhZGl4KWNvbnN0OwotICAgaW50IHZhbHVlKGNoYXJUIGMsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgY29uc3QgY2hhclQqIHBjID0gJmM7Ci0gICAgICByZXR1cm4gdG9pKHBjLCBwYyArIDEsIHJhZGl4KTsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7Ci0gICAgICBzdGQ6OmxvY2FsZSByZXN1bHQoZ2V0bG9jKCkpOwotICAgICAgbV9waW1wbCA9IHJlX2RldGFpbDo6Y3JlYXRlX2NwcF9yZWdleF90cmFpdHM8Y2hhclQ+KGwpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX2xvY2FsZTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5lcnJvcl9zdHJpbmcobik7Ci0gICB9Ci0KLSAgIC8vCi0gICAvLyBleHRlbnNpb246Ci0gICAvLyBzZXQgdGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZyBpbiB1c2UgKGRlZmF1bHRzIHRvICJib29zdF9yZWdleCIpLgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBjYXRhbG9nX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotICAgc3RhdGljIHN0ZDo6c3RyaW5nIGdldF9jYXRhbG9nX25hbWUoKTsKLQotcHJpdmF0ZToKLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGNvbnN0IHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPiBtX3BpbXBsOwotICAgLy8KLSAgIC8vIGNhdGFsb2cgbmFtZSBoYW5kbGVyOgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyYgZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCk7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljIHN0YXRpY19tdXRleCYgZ2V0X211dGV4X2luc3QoKTsKLSNlbmRpZgotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbnQgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OnRvaShjb25zdCBjaGFyVComIGZpcnN0LCBjb25zdCBjaGFyVCogbGFzdCwgaW50IHJhZGl4KWNvbnN0Ci17Ci0gICByZV9kZXRhaWw6OnBhcnNlcl9idWY8Y2hhclQ+ICAgc2J1ZjsgICAgICAgICAgICAvLyBidWZmZXIgZm9yIHBhcnNpbmcgbnVtYmVycy4KLSAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxjaGFyVD4gICAgICBpcygmc2J1Zik7ICAgICAgIC8vIHN0cmVhbSBmb3IgcGFyc2luZyBudW1iZXJzLgotCi0gICAvLyB3ZSBkbyBOT1Qgd2FudCB0byBwYXJzZSBhbnkgdGhvdXNhbmRzIHNlcGFyYXRvcnMgaW5zaWRlIHRoZSBzdHJlYW06Ci0gICBsYXN0ID0gc3RkOjpmaW5kKGZpcnN0LCBsYXN0LCBORE5CT09TVF9VU0VfRkFDRVQoc3RkOjpudW1wdW5jdDxjaGFyVD4sIGlzLmdldGxvYygpKS50aG91c2FuZHNfc2VwKCkpOwotCi0gICBzYnVmLnB1YnNldGJ1Zihjb25zdF9jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPihmaXJzdCkpLCBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGxhc3QtZmlyc3QpKTsKLSAgIGlzLmNsZWFyKCk7Ci0gICBpZihzdGQ6OmFicyhyYWRpeCkgPT0gMTYpIGlzID4+IHN0ZDo6aGV4OwotICAgZWxzZSBpZihzdGQ6OmFicyhyYWRpeCkgPT0gOCkgaXMgPj4gc3RkOjpvY3Q7Ci0gICBlbHNlIGlzID4+IHN0ZDo6ZGVjOwotICAgaW50IHZhbDsKLSAgIGlmKGlzID4+IHZhbCkKLSAgIHsKLSAgICAgIGZpcnN0ID0gZmlyc3QgKyAoKGxhc3QgLSBmaXJzdCkgLSBzYnVmLmluX2F2YWlsKCkpOwotICAgICAgcmV0dXJuIHZhbDsKLSAgIH0KLSAgIGVsc2UKLSAgICAgIHJldHVybiAtMTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljX211dGV4OjpzY29wZWRfbG9jayBsayhnZXRfbXV0ZXhfaW5zdCgpKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgcmVzdWx0KGdldF9jYXRhbG9nX25hbWVfaW5zdCgpKTsKLSAgIGdldF9jYXRhbG9nX25hbWVfaW5zdCgpID0gbmFtZTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nJiBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBzX25hbWU7Ci0gICByZXR1cm4gc19uYW1lOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbGsoZ2V0X211dGV4X2luc3QoKSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIHJlc3VsdChnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0YXRpY19tdXRleCYgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9tdXRleF9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGF0aWNfbXV0ZXggc19tdXRleCA9IE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUOwotICAgcmV0dXJuIHNfbXV0ZXg7Ci19Ci0jZW5kaWYKLQotCi19IC8vIGJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3JlZ2V4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3JlZ2V4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZlNjFmMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NyZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzAgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBQT1NJWCBBUEkgZnVuY3Rpb25zCi0gICogICAgICAgICAgICAgICAgKyBuZG5ib29zdDo6UmVnRXggaGlnaCBsZXZlbCB3cmFwcGVyLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX0NSRUdFWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVfQ1JFR0VYX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfZmxhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjc3RkZGVmPgotI2Vsc2UKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8qIGluY2x1ZGUgdGhlc2UgZGVmcyBvbmx5IGZvciBQT1NJWCBjb21wYXRhYmxpdHkgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0ewotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCByZWdvZmZfdDsKLXR5cGVkZWYgc3RkOjpzaXplX3QgcmVnc2l6ZV90OwotI2Vsc2UKLXR5cGVkZWYgcHRyZGlmZl90IHJlZ29mZl90OwotdHlwZWRlZiBzaXplX3QgcmVnc2l6ZV90OwotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICB1bnNpZ25lZCBpbnQgcmVfbWFnaWM7Ci0jaWZkZWYgX19jcGx1c3BsdXMKLSAgIHN0ZDo6c2l6ZV90ICByZV9uc3ViOyAgICAgIC8qIG51bWJlciBvZiBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zICovCi0jZWxzZQotICAgc2l6ZV90IHJlX25zdWI7IAotI2VuZGlmCi0gICBjb25zdCBjaGFyKiAgcmVfZW5kcDsgICAgICAgLyogZW5kIHBvaW50ZXIgZm9yIFJFR19QRU5EICovCi0gICB2b2lkKiBndXRzOyAgICAgICAgICAgICAgICAvKiBub25lIG9mIHlvdXIgYnVzaW5lc3MgOi0pICovCi0gICBtYXRjaF9mbGFnX3R5cGUgZWZsYWdzOyAgICAgICAgLyogbm9uZSBvZiB5b3VyIGJ1c2luZXNzIDotKSAqLwotfSByZWdleF90QTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgc3RydWN0Ci17Ci0gICB1bnNpZ25lZCBpbnQgcmVfbWFnaWM7Ci0jaWZkZWYgX19jcGx1c3BsdXMKLSAgIHN0ZDo6c2l6ZV90ICByZV9uc3ViOyAgICAgICAgIC8qIG51bWJlciBvZiBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zICovCi0jZWxzZQotICAgc2l6ZV90IHJlX25zdWI7Ci0jZW5kaWYKLSAgIGNvbnN0IHdjaGFyX3QqIHJlX2VuZHA7ICAgICAgIC8qIGVuZCBwb2ludGVyIGZvciBSRUdfUEVORCAqLwotICAgdm9pZCogZ3V0czsgICAgICAgICAgICAgICAgICAgLyogbm9uZSBvZiB5b3VyIGJ1c2luZXNzIDotKSAqLwotICAgbWF0Y2hfZmxhZ190eXBlIGVmbGFnczsgICAgICAgICAgIC8qIG5vbmUgb2YgeW91ciBidXNpbmVzcyA6LSkgKi8KLX0gcmVnZXhfdFc7Ci0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgIHJlZ29mZl90IHJtX3NvOyAgICAgIC8qIHN0YXJ0IG9mIG1hdGNoICovCi0gICByZWdvZmZfdCBybV9lbzsgICAgICAvKiBlbmQgb2YgbWF0Y2ggKi8KLX0gcmVnbWF0Y2hfdDsKLQotLyogcmVnY29tcCgpIGZsYWdzICovCi10eXBlZGVmIGVudW17Ci0gICBSRUdfQkFTSUMgPSAwMDAwLAotICAgUkVHX0VYVEVOREVEID0gMDAwMSwKLSAgIFJFR19JQ0FTRSA9IDAwMDIsCi0gICBSRUdfTk9TVUIgPSAwMDA0LAotICAgUkVHX05FV0xJTkUgPSAwMDEwLAotICAgUkVHX05PU1BFQyA9IDAwMjAsCi0gICBSRUdfUEVORCA9IDAwNDAsCi0gICBSRUdfRFVNUCA9IDAyMDAsCi0gICBSRUdfTk9DT0xMQVRFID0gMDQwMCwKLSAgIFJFR19FU0NBUEVfSU5fTElTVFMgPSAwMTAwMCwKLSAgIFJFR19ORVdMSU5FX0FMVCA9IDAyMDAwLAotICAgUkVHX1BFUkxFWCA9IDA0MDAwLAotCi0gICBSRUdfUEVSTCA9IFJFR19FWFRFTkRFRCB8IFJFR19OT0NPTExBVEUgfCBSRUdfRVNDQVBFX0lOX0xJU1RTIHwgUkVHX1BFUkxFWCwKLSAgIFJFR19BV0sgPSBSRUdfRVhURU5ERUQgfCBSRUdfRVNDQVBFX0lOX0xJU1RTLAotICAgUkVHX0dSRVAgPSBSRUdfQkFTSUMgfCBSRUdfTkVXTElORV9BTFQsCi0gICBSRUdfRUdSRVAgPSBSRUdfRVhURU5ERUQgfCBSRUdfTkVXTElORV9BTFQsCi0KLSAgIFJFR19BU1NFUlQgPSAxNSwKLSAgIFJFR19JTlZBUkcgPSAxNiwKLSAgIFJFR19BVE9JID0gMjU1LCAgIC8qIGNvbnZlcnQgbmFtZSB0byBudW1iZXIgKCEpICovCi0gICBSRUdfSVRPQSA9IDA0MDAgICAvKiBjb252ZXJ0IG51bWJlciB0byBuYW1lICghKSAqLwotfSByZWdfY29tcF9mbGFnczsKLQotLyogcmVnZXhlYygpIGZsYWdzICovCi10eXBlZGVmIGVudW17Ci0gICBSRUdfTk9UQk9MID0gICAgMDAwMDEsCi0gICBSRUdfTk9URU9MID0gICAgMDAwMDIsCi0gICBSRUdfU1RBUlRFTkQgPSAgMDAwMDQKLX0gcmVnX2V4ZWNfZmxhZ3M7Ci0KLS8qCi0gKiBQT1NJWCBlcnJvciBjb2RlczoKLSAqLwotdHlwZWRlZiB1bnNpZ25lZCByZWdfZXJyb3JfdDsKLXR5cGVkZWYgcmVnX2Vycm9yX3QgcmVnX2VycmNvZGVfdDsgIC8qIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCi0KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfTk9FUlJPUiA9IDA7ICAgLyogU3VjY2Vzcy4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX05PTUFUQ0ggPSAxOyAgIC8qIERpZG4ndCBmaW5kIGEgbWF0Y2ggKGZvciByZWdleGVjKS4gICovCi0KLSAgLyogUE9TSVggcmVnY29tcCByZXR1cm4gZXJyb3IgY29kZXMuICAoSW4gdGhlIG9yZGVyIGxpc3RlZCBpbiB0aGUKLSAgICAgc3RhbmRhcmQuKSAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfQkFEUEFUID0gMjsgICAgLyogSW52YWxpZCBwYXR0ZXJuLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUNPTExBVEUgPSAzOyAgLyogVW5kZWZpbmVkIGNvbGxhdGluZyBlbGVtZW50LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUNUWVBFID0gNDsgICAgLyogSW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MgbmFtZS4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VFU0NBUEUgPSA1OyAgIC8qIFRyYWlsaW5nIGJhY2tzbGFzaC4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VTVUJSRUcgPSA2OyAgIC8qIEludmFsaWQgYmFjayByZWZlcmVuY2UuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FQlJBQ0sgPSA3OyAgICAvKiBVbm1hdGNoZWQgbGVmdCBicmFja2V0LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVBBUkVOID0gODsgICAgLyogUGFyZW50aGVzaXMgaW1iYWxhbmNlLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUJSQUNFID0gOTsgICAgLyogVW5tYXRjaGVkIFx7LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfQkFEQlIgPSAxMDsgICAgLyogSW52YWxpZCBjb250ZW50cyBvZiBce1x9LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVJBTkdFID0gMTE7ICAgLyogSW52YWxpZCByYW5nZSBlbmQuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FU1BBQ0UgPSAxMjsgICAvKiBSYW4gb3V0IG9mIG1lbW9yeS4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0JBRFJQVCA9IDEzOyAgIC8qIE5vIHByZWNlZGluZyByZSBmb3IgcmVwZXRpdGlvbiBvcC4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VFTkQgPSAxNDsgICAgIC8qIHVuZXhwZWN0ZWQgZW5kIG9mIGV4cHJlc3Npb24gKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVNJWkUgPSAxNTsgICAgLyogZXhwcmVzc2lvbiB0b28gYmlnICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VSUEFSRU4gPSA4OyAgIC8qID0gUkVHX0VQQVJFTiA6IHVubWF0Y2hlZCByaWdodCBwYXJlbnRoZXNpcyAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FTVBUWSA9IDE3OyAgICAvKiBlbXB0eSBleHByZXNzaW9uICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VfTUVNT1JZID0gMTU7IC8qID0gUkVHX0VTSVpFIDogb3V0IG9mIG1lbW9yeSAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FQ09NUExFWElUWSA9IDE4OyAvKiBjb21wbGV4aXR5IHRvbyBoaWdoICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VTVEFDSyA9IDE5OyAgIC8qIG91dCBvZiBzdGFjayBzcGFjZSAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FX1BFUkwgPSAyMDsgICAvKiBQZXJsICg/Li4uKSBlcnJvciAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FX1VOS05PV04gPSAyMTsgLyogdW5rbm93biBlcnJvciAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FTk9TWVMgPSAyMTsgICAvKiA9IFJFR19FX1VOS05PV04gOiBSZXNlcnZlZC4gKi8KLQotTkROQk9PU1RfUkVHRVhfREVDTCBpbnQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnY29tcEEocmVnZXhfdEEqLCBjb25zdCBjaGFyKiwgaW50KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnc2l6ZV90IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2Vycm9yQShpbnQsIGNvbnN0IHJlZ2V4X3RBKiwgY2hhciosIHJlZ3NpemVfdCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIGludCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdleGVjQShjb25zdCByZWdleF90QSosIGNvbnN0IGNoYXIqLCByZWdzaXplX3QsIHJlZ21hdGNoX3QqLCBpbnQpOwotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2ZyZWVBKHJlZ2V4X3RBKik7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIGludCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdjb21wVyhyZWdleF90VyosIGNvbnN0IHdjaGFyX3QqLCBpbnQpOwotTkROQk9PU1RfUkVHRVhfREVDTCByZWdzaXplX3QgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZXJyb3JXKGludCwgY29uc3QgcmVnZXhfdFcqLCB3Y2hhcl90KiwgcmVnc2l6ZV90KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgaW50IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2V4ZWNXKGNvbnN0IHJlZ2V4X3RXKiwgY29uc3Qgd2NoYXJfdCosIHJlZ3NpemVfdCwgcmVnbWF0Y2hfdCosIGludCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZnJlZVcocmVnZXhfdFcqKTsKLSNlbmRpZgotCi0jaWZkZWYgVU5JQ09ERQotI2RlZmluZSByZWdjb21wIHJlZ2NvbXBXCi0jZGVmaW5lIHJlZ2Vycm9yIHJlZ2Vycm9yVwotI2RlZmluZSByZWdleGVjIHJlZ2V4ZWNXCi0jZGVmaW5lIHJlZ2ZyZWUgcmVnZnJlZVcKLSNkZWZpbmUgcmVnZXhfdCByZWdleF90VwotI2Vsc2UKLSNkZWZpbmUgcmVnY29tcCByZWdjb21wQQotI2RlZmluZSByZWdlcnJvciByZWdlcnJvckEKLSNkZWZpbmUgcmVnZXhlYyByZWdleGVjQQotI2RlZmluZSByZWdmcmVlIHJlZ2ZyZWVBCi0jZGVmaW5lIHJlZ2V4X3QgcmVnZXhfdEEKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfSAvKiBleHRlcm4gIkMiICovCi19IC8qIG5hbWVzcGFjZSAqLwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotLyoKLSAqIEMrKyBoaWdoIGxldmVsIHdyYXBwZXIgZ29lcyBoZXJlOgotICovCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1jbGFzcyBSZWdFeDsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotY2xhc3MgUmVnRXhEYXRhOwotc3RydWN0IHByZWQxOwotc3RydWN0IHByZWQyOwotc3RydWN0IHByZWQzOwotc3RydWN0IHByZWQ0OwotCi19ICAvKiBuYW1lc3BhY2UgcmVfZGV0YWlsICovCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpCi10eXBlZGVmIGJvb2wgKF9fY2RlY2wgKkdyZXBDYWxsYmFjaykoY29uc3QgUmVnRXgmIGV4cHJlc3Npb24pOwotdHlwZWRlZiBib29sIChfX2NkZWNsICpHcmVwRmlsZUNhbGxiYWNrKShjb25zdCBjaGFyKiBmaWxlLCBjb25zdCBSZWdFeCYgZXhwcmVzc2lvbik7Ci10eXBlZGVmIGJvb2wgKF9fY2RlY2wgKkZpbmRGaWxlc0NhbGxiYWNrKShjb25zdCBjaGFyKiBmaWxlKTsKLSNlbHNlCi10eXBlZGVmIGJvb2wgKCpHcmVwQ2FsbGJhY2spKGNvbnN0IFJlZ0V4JiBleHByZXNzaW9uKTsKLXR5cGVkZWYgYm9vbCAoKkdyZXBGaWxlQ2FsbGJhY2spKGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IFJlZ0V4JiBleHByZXNzaW9uKTsKLXR5cGVkZWYgYm9vbCAoKkZpbmRGaWxlc0NhbGxiYWNrKShjb25zdCBjaGFyKiBmaWxlKTsKLSNlbmRpZgotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIFJlZ0V4Ci17Ci1wcml2YXRlOgotICAgcmVfZGV0YWlsOjpSZWdFeERhdGEqIHBkYXRhOwotcHVibGljOgotICAgUmVnRXgoKTsKLSAgIFJlZ0V4KGNvbnN0IFJlZ0V4JiBvKTsKLSAgIH5SZWdFeCgpOwotICAgZXhwbGljaXQgUmVnRXgoY29uc3QgY2hhciogYywgYm9vbCBpY2FzZSA9IGZhbHNlKTsKLSAgIGV4cGxpY2l0IFJlZ0V4KGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBib29sIGljYXNlID0gZmFsc2UpOwotICAgUmVnRXgmIG9wZXJhdG9yPShjb25zdCBSZWdFeCYgbyk7Ci0gICBSZWdFeCYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHApOwotICAgUmVnRXgmIG9wZXJhdG9yPShjb25zdCBzdGQ6OnN0cmluZyYgcyl7IHJldHVybiB0aGlzLT5vcGVyYXRvcj0ocy5jX3N0cigpKTsgfQotICAgdW5zaWduZWQgaW50IFNldEV4cHJlc3Npb24oY29uc3QgY2hhciogcCwgYm9vbCBpY2FzZSA9IGZhbHNlKTsKLSAgIHVuc2lnbmVkIGludCBTZXRFeHByZXNzaW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBib29sIGljYXNlID0gZmFsc2UpeyByZXR1cm4gU2V0RXhwcmVzc2lvbihzLmNfc3RyKCksIGljYXNlKTsgfQotICAgc3RkOjpzdHJpbmcgRXhwcmVzc2lvbigpY29uc3Q7Ci0gICB1bnNpZ25lZCBpbnQgZXJyb3JfY29kZSgpY29uc3Q7Ci0gICAvKgotICAgICogbm93IG1hdGNoaW5nIG9wZXJhdG9yczoKLSAgICAqLwotICAgYm9vbCBNYXRjaChjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIGJvb2wgTWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIE1hdGNoKHMuY19zdHIoKSwgZmxhZ3MpOyB9Ci0gICBib29sIFNlYXJjaChjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIGJvb2wgU2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBTZWFyY2gocy5jX3N0cigpLCBmbGFncyk7IH0KLSAgIHVuc2lnbmVkIGludCBHcmVwKEdyZXBDYWxsYmFjayBjYiwgY29uc3QgY2hhciogcCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChHcmVwQ2FsbGJhY2sgY2IsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBHcmVwKGNiLCBzLmNfc3RyKCksIGZsYWdzKTsgfQotICAgdW5zaWduZWQgaW50IEdyZXAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB2LCBjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIHVuc2lnbmVkIGludCBHcmVwKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdiwgY29uc3Qgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIEdyZXAodiwgcy5jX3N0cigpLCBmbGFncyk7IH0KLSAgIHVuc2lnbmVkIGludCBHcmVwKHN0ZDo6dmVjdG9yPHN0ZDo6c2l6ZV90PiYgdiwgY29uc3QgY2hhciogcCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChzdGQ6OnZlY3RvcjxzdGQ6OnNpemVfdD4mIHYsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBHcmVwKHYsIHMuY19zdHIoKSwgZmxhZ3MpOyB9Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZJTEVJVEVSCi0gICB1bnNpZ25lZCBpbnQgR3JlcEZpbGVzKEdyZXBGaWxlQ2FsbGJhY2sgY2IsIGNvbnN0IGNoYXIqIGZpbGVzLCBib29sIHJlY3Vyc2UgPSBmYWxzZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgR3JlcEZpbGVzKEdyZXBGaWxlQ2FsbGJhY2sgY2IsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlcywgYm9vbCByZWN1cnNlID0gZmFsc2UsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIEdyZXBGaWxlcyhjYiwgZmlsZXMuY19zdHIoKSwgcmVjdXJzZSwgZmxhZ3MpOyB9Ci0gICB1bnNpZ25lZCBpbnQgRmluZEZpbGVzKEZpbmRGaWxlc0NhbGxiYWNrIGNiLCBjb25zdCBjaGFyKiBmaWxlcywgYm9vbCByZWN1cnNlID0gZmFsc2UsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgdW5zaWduZWQgaW50IEZpbmRGaWxlcyhGaW5kRmlsZXNDYWxsYmFjayBjYiwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVzLCBib29sIHJlY3Vyc2UgPSBmYWxzZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gRmluZEZpbGVzKGNiLCBmaWxlcy5jX3N0cigpLCByZWN1cnNlLCBmbGFncyk7IH0KLSNlbmRpZgotCi0gICBzdGQ6OnN0cmluZyBNZXJnZShjb25zdCBzdGQ6OnN0cmluZyYgaW4sIGNvbnN0IHN0ZDo6c3RyaW5nJiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29weSA9IHRydWUsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgc3RkOjpzdHJpbmcgTWVyZ2UoY29uc3QgY2hhciogaW4sIGNvbnN0IGNoYXIqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb3B5ID0gdHJ1ZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0KLSAgIHN0ZDo6c2l6ZV90IFNwbGl0KHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdiwgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQsIHVuc2lnbmVkIG1heF9jb3VudCA9IH4wKTsKLSAgIC8qCi0gICAgKiBub3cgb3BlcmF0b3JzIGZvciByZXR1cm5pbmcgd2hhdCBtYXRjaGVkIGluIG1vcmUgZGV0YWlsOgotICAgICovCi0gICBzdGQ6OnNpemVfdCBQb3NpdGlvbihpbnQgaSA9IDApY29uc3Q7Ci0gICBzdGQ6OnNpemVfdCBMZW5ndGgoaW50IGkgPSAwKWNvbnN0OwotICAgYm9vbCBNYXRjaGVkKGludCBpID0gMCljb25zdDsKLSAgIHN0ZDo6c2l6ZV90IE1hcmtzKCljb25zdDsKLSAgIHN0ZDo6c3RyaW5nIFdoYXQoaW50IGkgPSAwKWNvbnN0OwotICAgc3RkOjpzdHJpbmcgb3BlcmF0b3JbXShpbnQgaSljb25zdCB7IHJldHVybiBXaGF0KGkpOyB9Ci0KLSAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBucG9zOwotCi0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDE7Ci0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDI7Ci0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDM7Ci0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDQ7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLyogbmFtZXNwYWNlIG5kbmJvb3N0ICovCi0KLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotCi0jZW5kaWYgLyogaW5jbHVkZSBndWFyZCAqLwotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0ZTljMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNQotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgZXJyb3JfdHlwZS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBlcnJvciB0eXBlIGVudW1lcmF0b3IuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRVJST1JfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRVJST1JfVFlQRV9IUFAKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzewotCi1lbnVtIGVycm9yX3R5cGV7Ci0KLSAgIGVycm9yX29rID0gMCwgICAgICAgICAvKiBub3QgdXNlZCAqLwotICAgZXJyb3Jfbm9fbWF0Y2ggPSAxLCAgIC8qIG5vdCB1c2VkICovCi0gICBlcnJvcl9iYWRfcGF0dGVybiA9IDIsCi0gICBlcnJvcl9jb2xsYXRlID0gMywKLSAgIGVycm9yX2N0eXBlID0gNCwKLSAgIGVycm9yX2VzY2FwZSA9IDUsCi0gICBlcnJvcl9iYWNrcmVmID0gNiwKLSAgIGVycm9yX2JyYWNrID0gNywKLSAgIGVycm9yX3BhcmVuID0gOCwKLSAgIGVycm9yX2JyYWNlID0gOSwKLSAgIGVycm9yX2JhZGJyYWNlID0gMTAsCi0gICBlcnJvcl9yYW5nZSA9IDExLAotICAgZXJyb3Jfc3BhY2UgPSAxMiwKLSAgIGVycm9yX2JhZHJlcGVhdCA9IDEzLAotICAgZXJyb3JfZW5kID0gMTQsICAgIC8qIG5vdCB1c2VkICovCi0gICBlcnJvcl9zaXplID0gMTUsCi0gICBlcnJvcl9yaWdodF9wYXJlbiA9IDE2LCAgLyogbm90IHVzZWQgKi8KLSAgIGVycm9yX2VtcHR5ID0gMTcsCi0gICBlcnJvcl9jb21wbGV4aXR5ID0gMTgsCi0gICBlcnJvcl9zdGFjayA9IDE5LAotICAgZXJyb3JfcGVybF9leHRlbnNpb24gPSAyMCwKLSAgIGVycm9yX3Vua25vd24gPSAyMQotfTsKLQotfQotfQotI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9maWxlaXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2ZpbGVpdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzViOTlmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2ZpbGVpdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1NSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGZpbGVpdGVyLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdmFyaW91cyBwbGF0Zm9ybSBpbmRlcGVuZGVudCBmaWxlIGFuZAotICAqICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpdGVyYXRvcnMsIHBsdXMgYmluYXJ5IGZpbGUgaW5wdXQgaW4KLSAgKiAgICAgICAgICAgICAgICB0aGUgZm9ybSBvZiBjbGFzcyBtYXBfZmlsZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRV9GSUxFSVRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVfRklMRUlURVJfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZJTEVJVEVSCi0KLSNpZiAoZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOMzJfXykpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLSNlcnJvciAiU29ycnksIGNhbid0IG1peCA8d2luZG93cy5oPiB3aXRoIFNUTCBjb2RlIGFuZCBnY2MgY29tcGlsZXI6IGlmIHlvdSByYW4gY29uZmlndXJlLCB0cnkgYWdhaW4gd2l0aCBjb25maWd1cmUgLS1kaXNhYmxlLW1zLXdpbmRvd3MiCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX01BUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9QT1NJWF9ESVIKLSNlbGlmIChkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoV0lOMzIpKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX01BUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9ESVIKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1BPU0lYX01BUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9QT1NJWF9ESVIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9NQVApfHxkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX0RJUikKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfRElSKQotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19BTlNJX0FQSVMKLXR5cGVkZWYgV0lOMzJfRklORF9EQVRBQSBfZmlfZmluZF9kYXRhOwotI2Vsc2UKLXR5cGVkZWYgV0lOMzJfRklORF9EQVRBVyBfZmlfZmluZF9kYXRhOwotI2VuZGlmCi10eXBlZGVmIEhBTkRMRSBfZmlfZmluZF9oYW5kbGU7Ci0KLSAgIH0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIF9maV9pbnZhbGlkX2hhbmRsZSBJTlZBTElEX0hBTkRMRV9WQUxVRQotI2RlZmluZSBfZmlfZGlyIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0ZJX1BPU0lYX0RJUikKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGNjdHlwZT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQotdXNpbmcgc3RkOjpsaXN0OwotI2VuZGlmCi0KLSNpZm5kZWYgTUFYX1BBVEgKLSNkZWZpbmUgTUFYX1BBVEggMjU2Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotc3RydWN0IF9maV9maW5kX2RhdGEKLXsKLSAgIHVuc2lnbmVkIGR3RmlsZUF0dHJpYnV0ZXM7Ci0gICBjaGFyIGNGaWxlTmFtZVtNQVhfUEFUSF07Ci19OwotCi1zdHJ1Y3QgX2ZpX3ByaXZfZGF0YTsKLQotdHlwZWRlZiBfZmlfcHJpdl9kYXRhKiBfZmlfZmluZF9oYW5kbGU7Ci0jZGVmaW5lIF9maV9pbnZhbGlkX2hhbmRsZSAwCi0jZGVmaW5lIF9maV9kaXIgMQotCi1fZmlfZmluZF9oYW5kbGUgX2ZpX0ZpbmRGaXJzdEZpbGUoY29uc3QgY2hhciogbHBGaWxlTmFtZSwgX2ZpX2ZpbmRfZGF0YSogbHBGaW5kRmlsZURhdGEpOwotYm9vbCBfZmlfRmluZE5leHRGaWxlKF9maV9maW5kX2hhbmRsZSBoRmluZEZpbGUsICAgX2ZpX2ZpbmRfZGF0YSogbHBGaW5kRmlsZURhdGEpOwotYm9vbCBfZmlfRmluZENsb3NlKF9maV9maW5kX2hhbmRsZSBoRmluZEZpbGUpOwotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi0gICB9IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBGaW5kRmlyc3RGaWxlCi0gI3VuZGVmIEZpbmRGaXJzdEZpbGUKLSNlbmRpZgotI2lmZGVmIEZpbmROZXh0RmlsZQotICN1bmRlZiBGaW5kTmV4dEZpbGUKLSNlbmRpZgotI2lmZGVmIEZpbmRDbG9zZQotICN1bmRlZiBGaW5kQ2xvc2UKLSNlbmRpZgotCi0jZGVmaW5lIEZpbmRGaXJzdEZpbGVBIF9maV9GaW5kRmlyc3RGaWxlCi0jZGVmaW5lIEZpbmROZXh0RmlsZUEgX2ZpX0ZpbmROZXh0RmlsZQotI2RlZmluZSBGaW5kQ2xvc2UgX2ZpX0ZpbmRDbG9zZQotCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX01BUCAvLyB3aW4zMiBtYXBmaWxlCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgbWFwZmlsZQotewotICAgSEFORExFIGhmaWxlOwotICAgSEFORExFIGhtYXA7Ci0gICBjb25zdCBjaGFyKiBfZmlyc3Q7Ci0gICBjb25zdCBjaGFyKiBfbGFzdDsKLXB1YmxpYzoKLQotICAgdHlwZWRlZiBjb25zdCBjaGFyKiBpdGVyYXRvcjsKLQotICAgbWFwZmlsZSgpeyBoZmlsZSA9IGhtYXAgPSAwOyBfZmlyc3QgPSBfbGFzdCA9IDA7IH0KLSAgIG1hcGZpbGUoY29uc3QgY2hhciogZmlsZSl7IGhmaWxlID0gaG1hcCA9IDA7IF9maXJzdCA9IF9sYXN0ID0gMDsgb3BlbihmaWxlKTsgfQotICAgfm1hcGZpbGUoKXsgY2xvc2UoKTsgfQotICAgdm9pZCBvcGVuKGNvbnN0IGNoYXIqIGZpbGUpOwotICAgdm9pZCBjbG9zZSgpOwotICAgY29uc3QgY2hhciogYmVnaW4oKXsgcmV0dXJuIF9maXJzdDsgfQotICAgY29uc3QgY2hhciogZW5kKCl7IHJldHVybiBfbGFzdDsgfQotICAgc2l6ZV90IHNpemUoKXsgcmV0dXJuIF9sYXN0IC0gX2ZpcnN0OyB9Ci0gICBib29sIHZhbGlkKCl7IHJldHVybiAoaGZpbGUgIT0gMCkgJiYgKGhmaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotfTsKLQotCi0jZWxzZQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIG1hcGZpbGVfaXRlcmF0b3I7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgbWFwZmlsZQotewotICAgdHlwZWRlZiBjaGFyKiBwb2ludGVyOwotICAgc3RkOjpGSUxFKiBoZmlsZTsKLSAgIGxvbmcgaW50IF9zaXplOwotICAgcG9pbnRlciogX2ZpcnN0OwotICAgcG9pbnRlciogX2xhc3Q7Ci0gICBtdXRhYmxlIHN0ZDo6bGlzdDxwb2ludGVyKj4gY29uZGVtZWQ7Ci0gICBlbnVtIHNpemVzCi0gICB7Ci0gICAgICBidWZfc2l6ZSA9IDQwOTYKLSAgIH07Ci0gICB2b2lkIGxvY2socG9pbnRlciogbm9kZSljb25zdDsKLSAgIHZvaWQgdW5sb2NrKHBvaW50ZXIqIG5vZGUpY29uc3Q7Ci1wdWJsaWM6Ci0KLSAgIHR5cGVkZWYgbWFwZmlsZV9pdGVyYXRvciBpdGVyYXRvcjsKLQotICAgbWFwZmlsZSgpeyBoZmlsZSA9IDA7IF9zaXplID0gMDsgX2ZpcnN0ID0gX2xhc3QgPSAwOyB9Ci0gICBtYXBmaWxlKGNvbnN0IGNoYXIqIGZpbGUpeyBoZmlsZSA9IDA7IF9zaXplID0gMDsgX2ZpcnN0ID0gX2xhc3QgPSAwOyBvcGVuKGZpbGUpOyB9Ci0gICB+bWFwZmlsZSgpeyBjbG9zZSgpOyB9Ci0gICB2b2lkIG9wZW4oY29uc3QgY2hhciogZmlsZSk7Ci0gICB2b2lkIGNsb3NlKCk7Ci0gICBpdGVyYXRvciBiZWdpbigpY29uc3Q7Ci0gICBpdGVyYXRvciBlbmQoKWNvbnN0OwotICAgdW5zaWduZWQgbG9uZyBzaXplKCljb25zdHsgcmV0dXJuIF9zaXplOyB9Ci0gICBib29sIHZhbGlkKCljb25zdHsgcmV0dXJuIGhmaWxlICE9IDA7IH0KLSAgIGZyaWVuZCBjbGFzcyBtYXBmaWxlX2l0ZXJhdG9yOwotfTsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBtYXBmaWxlX2l0ZXJhdG9yCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SKSB8fCBkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBjaGFyPgotI2VuZGlmCi17Ci0gICB0eXBlZGVmIG1hcGZpbGU6OnBvaW50ZXIgaW50ZXJuYWxfcG9pbnRlcjsKLSAgIGludGVybmFsX3BvaW50ZXIqIG5vZGU7Ci0gICBjb25zdCBtYXBmaWxlKiBmaWxlOwotICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICBsb25nIHBvc2l0aW9uKCljb25zdAotICAgewotICAgICAgcmV0dXJuIGZpbGUgPyAoKG5vZGUgLSBmaWxlLT5fZmlyc3QpICogbWFwZmlsZTo6YnVmX3NpemUgKyBvZmZzZXQpIDogMDsKLSAgIH0KLSAgIHZvaWQgcG9zaXRpb24obG9uZyBwb3MpCi0gICB7Ci0gICAgICBpZihmaWxlKQotICAgICAgewotICAgICAgICAgbm9kZSA9IGZpbGUtPl9maXJzdCArIChwb3MgLyBtYXBmaWxlOjpidWZfc2l6ZSk7Ci0gICAgICAgICBvZmZzZXQgPSBwb3MgJSBtYXBmaWxlOjpidWZfc2l6ZTsKLSAgICAgIH0KLSAgIH0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhciogICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBjb25zdCBjaGFyJiAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgbWFwZmlsZV9pdGVyYXRvcigpIHsgbm9kZSA9IDA7IGZpbGUgPSAwOyBvZmZzZXQgPSAwOyB9Ci0gICBtYXBmaWxlX2l0ZXJhdG9yKGNvbnN0IG1hcGZpbGUqIGYsIGxvbmcgYXJnX3Bvc2l0aW9uKQotICAgewotICAgICAgZmlsZSA9IGY7Ci0gICAgICBub2RlID0gZi0+X2ZpcnN0ICsgYXJnX3Bvc2l0aW9uIC8gbWFwZmlsZTo6YnVmX3NpemU7Ci0gICAgICBvZmZzZXQgPSBhcmdfcG9zaXRpb24gJSBtYXBmaWxlOjpidWZfc2l6ZTsKLSAgICAgIGlmKGZpbGUpCi0gICAgICAgICBmaWxlLT5sb2NrKG5vZGUpOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvcihjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpKQotICAgewotICAgICAgZmlsZSA9IGkuZmlsZTsKLSAgICAgIG5vZGUgPSBpLm5vZGU7Ci0gICAgICBvZmZzZXQgPSBpLm9mZnNldDsKLSAgICAgIGlmKGZpbGUpCi0gICAgICAgICBmaWxlLT5sb2NrKG5vZGUpOwotICAgfQotICAgfm1hcGZpbGVfaXRlcmF0b3IoKQotICAgewotICAgICAgaWYoZmlsZSAmJiBub2RlKQotICAgICAgICAgZmlsZS0+dW5sb2NrKG5vZGUpOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IgPSAoY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSk7Ci0gICBjaGFyIG9wZXJhdG9yKiAoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobm9kZSA+PSBmaWxlLT5fZmlyc3QpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGUgPCBmaWxlLT5fbGFzdCk7Ci0gICAgICByZXR1cm4gZmlsZSA/ICooKm5vZGUgKyBzaXplb2YoaW50KSArIG9mZnNldCkgOiBjaGFyKDApOwotICAgfQotICAgY2hhciBvcGVyYXRvcltdIChsb25nIG9mZiljb25zdAotICAgewotICAgICAgbWFwZmlsZV9pdGVyYXRvciB0bXAoKnRoaXMpOwotICAgICAgdG1wICs9IG9mZjsKLSAgICAgIHJldHVybiAqdG1wOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IrKyAoKTsKLSAgIG1hcGZpbGVfaXRlcmF0b3Igb3BlcmF0b3IrKyAoaW50KTsKLSAgIG1hcGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yLS0gKCk7Ci0gICBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yLS0gKGludCk7Ci0KLSAgIG1hcGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yICs9IChsb25nIG9mZikKLSAgIHsKLSAgICAgIHBvc2l0aW9uKHBvc2l0aW9uKCkgKyBvZmYpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IgLT0gKGxvbmcgb2ZmKQotICAgewotICAgICAgcG9zaXRpb24ocG9zaXRpb24oKSAtIG9mZik7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gKGkuZmlsZSA9PSBqLmZpbGUpICYmIChpLm5vZGUgPT0gai5ub2RlKSAmJiAoaS5vZmZzZXQgPT0gai5vZmZzZXQpOwotICAgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuICEoaSA9PSBqKTsKLSAgIH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSA8IGoucG9zaXRpb24oKTsKLSAgIH0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiBpLnBvc2l0aW9uKCkgPiBqLnBvc2l0aW9uKCk7Ci0gICB9Ci0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSA8PSBqLnBvc2l0aW9uKCk7Ci0gICB9Ci0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSA+PSBqLnBvc2l0aW9uKCk7Ci0gICB9Ci0KLSAgIGZyaWVuZCBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yICsgKGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGxvbmcgb2ZmKTsKLSAgIGZyaWVuZCBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yICsgKGxvbmcgb2ZmLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpKQotICAgewotICAgICAgbWFwZmlsZV9pdGVyYXRvciB0bXAoaSk7Ci0gICAgICByZXR1cm4gdG1wICs9IG9mZjsKLSAgIH0KLSAgIGZyaWVuZCBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yIC0gKGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGxvbmcgb2ZmKTsKLSAgIGZyaWVuZCBpbmxpbmUgbG9uZyBvcGVyYXRvciAtIChjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSAtIGoucG9zaXRpb24oKTsKLSAgIH0KLX07Ci0KLSNlbmRpZgotCi0vLyBfZmlfc2VwIGRldGVybWluZXMgdGhlIGRpcmVjdG9yeSBzZXBhcmF0b3IsIGVpdGhlciAnXFwnIG9yICcvJwotTkROQk9PU1RfUkVHRVhfREVDTCBleHRlcm4gY29uc3QgY2hhciogX2ZpX3NlcDsKLQotc3RydWN0IGZpbGVfaXRlcmF0b3JfcmVmCi17Ci0gICBfZmlfZmluZF9oYW5kbGUgaGY7Ci0gICBfZmlfZmluZF9kYXRhIF9kYXRhOwotICAgbG9uZyBjb3VudDsKLX07Ci0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBmaWxlX2l0ZXJhdG9yIAotewotICAgY2hhciogX3Jvb3Q7Ci0gICBjaGFyKiBfcGF0aDsKLSAgIGNoYXIqIHB0cjsKLSAgIGZpbGVfaXRlcmF0b3JfcmVmKiByZWY7Ci0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhcioqICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiYgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcgICBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgZmlsZV9pdGVyYXRvcigpOwotICAgZmlsZV9pdGVyYXRvcihjb25zdCBjaGFyKiB3aWxkKTsKLSAgIH5maWxlX2l0ZXJhdG9yKCk7Ci0gICBmaWxlX2l0ZXJhdG9yKGNvbnN0IGZpbGVfaXRlcmF0b3ImKTsKLSAgIGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBmaWxlX2l0ZXJhdG9yJik7Ci0gICBjb25zdCBjaGFyKiByb290KCljb25zdCB7IHJldHVybiBfcm9vdDsgfQotICAgY29uc3QgY2hhciogcGF0aCgpY29uc3QgeyByZXR1cm4gX3BhdGg7IH0KLSAgIGNvbnN0IGNoYXIqIG5hbWUoKWNvbnN0IHsgcmV0dXJuIHB0cjsgfQotICAgX2ZpX2ZpbmRfZGF0YSogZGF0YSgpIHsgcmV0dXJuICYocmVmLT5fZGF0YSk7IH0KLSAgIHZvaWQgbmV4dCgpOwotICAgZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgbmV4dCgpOyByZXR1cm4gKnRoaXM7IH0KLSAgIGZpbGVfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpOwotICAgY29uc3QgY2hhciogb3BlcmF0b3IqKCkgeyByZXR1cm4gcGF0aCgpOyB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgZmlsZV9pdGVyYXRvciYgZjEsIGNvbnN0IGZpbGVfaXRlcmF0b3ImIGYyKQotICAgewotICAgICAgcmV0dXJuICgoZjEucmVmLT5oZiA9PSBfZmlfaW52YWxpZF9oYW5kbGUpICYmIChmMi5yZWYtPmhmID09IF9maV9pbnZhbGlkX2hhbmRsZSkpOwotICAgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IGZpbGVfaXRlcmF0b3ImIGYxLCBjb25zdCBmaWxlX2l0ZXJhdG9yJiBmMikKLSAgIHsKLSAgICAgIHJldHVybiAhKGYxID09IGYyKTsKLSAgIH0KLQotfTsKLQotLy8gZHdhIDkvMTMvMDAgLSBzdXBwcmVzcyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcKLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IGZpbGVfaXRlcmF0b3ImLCBjb25zdCBmaWxlX2l0ZXJhdG9yJikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGRpcmVjdG9yeV9pdGVyYXRvcgotewotICAgY2hhciogX3Jvb3Q7Ci0gICBjaGFyKiBfcGF0aDsKLSAgIGNoYXIqIHB0cjsKLSAgIGZpbGVfaXRlcmF0b3JfcmVmKiByZWY7Ci0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhcioqICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiYgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcgICBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgZGlyZWN0b3J5X2l0ZXJhdG9yKCk7Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgY2hhciogd2lsZCk7Ci0gICB+ZGlyZWN0b3J5X2l0ZXJhdG9yKCk7Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBvdGhlcik7Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIG90aGVyKTsKLQotICAgY29uc3QgY2hhciogcm9vdCgpY29uc3QgeyByZXR1cm4gX3Jvb3Q7IH0KLSAgIGNvbnN0IGNoYXIqIHBhdGgoKWNvbnN0IHsgcmV0dXJuIF9wYXRoOyB9Ci0gICBjb25zdCBjaGFyKiBuYW1lKCljb25zdCB7IHJldHVybiBwdHI7IH0KLSAgIF9maV9maW5kX2RhdGEqIGRhdGEoKSB7IHJldHVybiAmKHJlZi0+X2RhdGEpOyB9Ci0gICB2b2lkIG5leHQoKTsKLSAgIGRpcmVjdG9yeV9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgbmV4dCgpOyByZXR1cm4gKnRoaXM7IH0KLSAgIGRpcmVjdG9yeV9pdGVyYXRvciBvcGVyYXRvcisrKGludCk7Ci0gICBjb25zdCBjaGFyKiBvcGVyYXRvciooKSB7IHJldHVybiBwYXRoKCk7IH0KLQotICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcGFyYXRvcigpIHsgcmV0dXJuIF9maV9zZXA7IH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIGYxLCBjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIGYyKQotICAgewotICAgICAgcmV0dXJuICgoZjEucmVmLT5oZiA9PSBfZmlfaW52YWxpZF9oYW5kbGUpICYmIChmMi5yZWYtPmhmID09IF9maV9pbnZhbGlkX2hhbmRsZSkpOwotICAgfQotCi0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBmMSwgY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBmMikKLSAgIHsKLSAgICAgIHJldHVybiAhKGYxID09IGYyKTsKLSAgIH0KLQotICAgfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiwgY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLXVzaW5nIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcjsKLXVzaW5nIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmZpbGVfaXRlcmF0b3I7Ci11c2luZyBuZG5ib29zdDo6cmVfZGV0YWlsOjptYXBmaWxlOwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAgICAvLyBORE5CT09TVF9SRUdFWF9OT19GSUxFSVRFUgotI2VuZGlmICAgICAvLyBORE5CT09TVF9SRV9GSUxFSVRFUl9IUFAKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0ZTAxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBpbnN0YW5jZXMuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWZpbmVzIHRob3NlIHRlbXBsYXRlIGluc3RhbmNlcyB0aGF0IGFyZSBwbGFjZWQgaW4gdGhlCi0gICogICAgICAgICAgICAgICAgbGlicmFyeSByYXRoZXIgdGhhbiBpbiB0aGUgdXNlcnMgb2JqZWN0IGZpbGVzLgotICAqLwotCi0vLwotLy8gbm90ZSBubyBpbmNsdWRlIGd1YXJkLCB3ZSBtYXkgaW5jbHVkZSB0aGlzIG11bHRpcGxlIHRpbWVzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotLy8KLS8vIHRoaXMgaGVhZGVyIGNhbiBiZSBpbmNsdWRlZCBtdWx0aXBsZSB0aW1lcywgZWFjaCB0aW1lIHdpdGgKLS8vIGEgZGlmZmVyZW50IGNoYXJhY3RlciB0eXBlLCBORE5CT09TVF9SRUdFWF9DSEFSX1QgbXVzdCBiZSBkZWZpbmVkCi0vLyBmaXJzdDoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotIyAgZXJyb3IgIk5ETkJPT1NUX1JFR0VYX0NIQVJfVCBub3QgZGVmaW5lZCIKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgLCBuZG5ib29zdDo6cmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCA+Ci0jZW5kaWYKLQotLy8KLS8vIHdoYXQgZm9sbG93cyBpcyBjb21waWxlciBzcGVjaWZpYzoKLS8vCi0KLSNpZiAgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICAgICBwcmFnbWEgb3B0aW9uIHB1c2ggLUpneAotIyAgZW5kaWYKLQotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBiYXNpY19yZWdleDwgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID47Ci10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxORE5CT09TVF9SRUdFWF9DSEFSX1QgY29uc3QgKiwgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OjphbGxvY2F0b3JfdHlwZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OwotI2VuZGlmCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgICAgcHJhZ21hIG9wdGlvbiBwb3AKLSMgIGVuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgZGVmaW5lZChfX0lDTCkKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICAgICBpZmRlZiBfX0dOVUNfXwotIyAgICAgICAgZGVmaW5lIHRlbXBsYXRlIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIHRlbXBsYXRlCi0jICAgICBlbHNlCi0jICAgICAgICBpZiBORE5CT09TVF9NU1ZDID4gMTMxMAotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wKLSMgICAgICAgIGVuZGlmCi0jICAgICAgICBkZWZpbmUgdGVtcGxhdGUgZXh0ZXJuIHRlbXBsYXRlCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCBORE5CT09TVF9SRUdFWF9ERUNMCi0jZW5kaWYKLQotIyAgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEpCi0jICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotIyAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCBiYXNpY19yZWdleDwgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID47Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjsKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID47Ci0jZW5kaWYKLSNpZiAhKGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpICYmIChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiA8PSAxKSlcCi0gICAmJiAhKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA4MDApKVwKLSAgICYmICEoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSlcCi0gICAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOQ0VTKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wgbWF0Y2hfcmVzdWx0czwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IgPjsKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cGVybF9tYXRjaGVyPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciwgbWF0Y2hfcmVzdWx0czwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IgPjo6YWxsb2NhdG9yX3R5cGUsIG5kbmJvb3N0OjpyZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UID4gPjsKLSNlbmRpZgotI2VuZGlmCi0KLQotIyAgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgICAgcHJhZ21hIHdhcm5pbmcocG9wKQotIyAgZW5kaWYKLQotIyAgaWZkZWYgdGVtcGxhdGUKLSMgICAgIHVuZGVmIHRlbXBsYXRlCi0jICBlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTAotCi0jZWxpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKSB8fCAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUpCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgICAgaWZkZWYgX19HTlVDX18KLSMgICAgICAgIGRlZmluZSB0ZW1wbGF0ZSBfX2V4dGVuc2lvbl9fIGV4dGVybiB0ZW1wbGF0ZQotIyAgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIHRlbXBsYXRlIGV4dGVybiB0ZW1wbGF0ZQotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOQ0VTKQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXN0ZDo6bG9jYWxlIGNwcF9yZWdleF90cmFpdHNfYmFzZTxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbCk7Ci0KLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIpIGNvbnN0OwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6dHJhbnNmb3JtKGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIpIGNvbnN0OwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6bG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIpIGNvbnN0OwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotdm9pZCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmluaXQoKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y2hhcl9jbGFzc190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpsb29rdXBfY2xhc3NuYW1lX2ltcChjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAxLCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAyKSBjb25zdDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotYm9vbCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmlzY3R5cGUoY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIGMsIGNoYXJfY2xhc3NfdHlwZSBtYXNrKSBjb25zdDsKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWludCBjcHBfcmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnRvaShjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqJiBmaXJzdCwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBsYXN0LCBpbnQgcmFkaXgpY29uc3Q7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGQ6OnN0cmluZyBjcHBfcmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGQ6OnN0cmluZyYgY3BwX3JlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpnZXRfY2F0YWxvZ19uYW1lX2luc3QoKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXN0ZDo6c3RyaW5nIGNwcF9yZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Z2V0X2NhdGFsb2dfbmFtZSgpOwotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGF0aWNfbXV0ZXgmIGNwcF9yZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Z2V0X211dGV4X2luc3QoKTsKLSNlbmRpZgotI2VuZGlmCi0KLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID4mIAotICAgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmRvX2Fzc2lnbigKLSAgICAgIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIAotICAgICAgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMiwgCi0gICAgICBmbGFnX3R5cGUgZik7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+Ojpsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIAotICAgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmltYnVlKGxvY2FsZV90eXBlIGwpOwotCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCAKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKj46Om1heWJlX2Fzc2lnbigKLSAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8Y29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKj4mIG0pOwotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIHBlcmxfbWF0Y2hlcjxORE5CT09TVF9SRUdFWF9DSEFSX1QgY29uc3QgKiwgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OjphbGxvY2F0b3JfdHlwZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+Ojpjb25zdHJ1Y3RfaW5pdCgKLSAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+JiBlLCBtYXRjaF9mbGFnX3R5cGUgZik7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgcGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46Om1hdGNoKCk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgcGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmZpbmQoKTsKLX0gLy8gbmFtZXNwYWNlCi0KLSNpZiAoZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykpIFwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5DRVMpXAotICAgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpXAotICAgJiYgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLS8vIHN0ZDpiYXNpY19zdHJpbmc8Pjo6Y29uc3RfaXRlcmF0b3IgaW5zdGFuY2VzIGFzIHdlbGw6Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCAKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3I+OjptYXliZV9hc3NpZ24oCi0gICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yPiYgbSk7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgcGVybF9tYXRjaGVyPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yLCBtYXRjaF9yZXN1bHRzPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciA+OjphbGxvY2F0b3JfdHlwZSwgbmRuYm9vc3Q6OnJlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1QgPiA+Ojpjb25zdHJ1Y3RfaW5pdCgKLSAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVD4mIGUsIG1hdGNoX2ZsYWdfdHlwZSBmKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBwZXJsX21hdGNoZXI8c3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IsIG1hdGNoX3Jlc3VsdHM8IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yID46OmFsbG9jYXRvcl90eXBlLCBuZG5ib29zdDo6cmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCA+ID46Om1hdGNoKCk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgcGVybF9tYXRjaGVyPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yLCBtYXRjaF9yZXN1bHRzPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciA+OjphbGxvY2F0b3JfdHlwZSwgbmRuYm9vc3Q6OnJlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1QgPiA+OjpmaW5kKCk7Ci19IC8vIG5hbWVzcGFjZQotI2VuZGlmCi0KLSMgIGlmZGVmIHRlbXBsYXRlCi0jICAgICB1bmRlZiB0ZW1wbGF0ZQotIyAgZW5kaWYKLQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfY2F0ZWdvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl9jYXRlZ29yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MDQxN2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl9jYXRlZ29yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X21hdGNoLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSXRlcmF0b3IgdHJhaXRzIGZvciBzZWxlY3RpbmcgYW4gaXRlcmF0b3IgdHlwZSBhcwotICAqICAgICAgICAgICAgICAgIGFuIGludGVncmFsIGNvbnN0YW50IGV4cHJlc3Npb24uCi0gICovCi0KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9JVEVSQVRPUl9DQVRFR09SWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSVRFUkFUT1JfQ0FURUdPUllfSFBQCi0KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotc3RydWN0IGlzX3JhbmRvbV9pbXAKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUwotcHJpdmF0ZToKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8ST46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdDsKLXB1YmxpYzoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxjYXQqLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKj46OnZhbHVlKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19yYW5kb21fcG9pbnRlcl9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgaXNfcG9pbnRlcl90eXBlPgotc3RydWN0IGlzX3JhbmRvbV9pbXBfc2VsZWN0b3IKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19yYW5kb21faW1wPEk+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19yYW5kb21faW1wX3NlbGVjdG9yPHRydWU+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfcmFuZG9tX3BvaW50ZXJfaW1wPEk+IHR5cGU7Ci0gICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiBkZXRhaWw6OmlzX3JhbmRvbV9pbXBfc2VsZWN0b3I8IDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8ST46OnZhbHVlPiBzZWxlY3RvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxJPiBib3VuZF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBib3VuZF90eXBlOjp0eXBlIGFuc3dlcjsKLXB1YmxpYzoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGFuc3dlcjo6dmFsdWUpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotdGVtcGxhdGUgPGNsYXNzIEk+Ci1jb25zdCBib29sIGlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8ST46OnZhbHVlOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc5NWIzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGl0ZXJhdG9yX3RyYWl0cy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIGl0ZXJhdG9yIHRyYWl0cyB3b3JrYXJvdW5kcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9JVEVSQVRPUl9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X0lURVJBVE9SX1RSQUlUU19IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0cyAKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90eXBlOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUikKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjpkaWZmZXJlbmNlX3R5cGUgICBkaWZmZXJlbmNlX3R5cGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVDo6cG9pbnRlciAgICAgICAgICAgcG9pbnRlcjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjpyZWZlcmVuY2UgICAgICAgICByZWZlcmVuY2U7Ci0jZWxzZQotICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICB0eXBlZGVmIHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHMKLXsKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQqIHBvaW50ZXI7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0cwotewotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgVCogcG9pbnRlcjsKLSAgIHR5cGVkZWYgY29uc3QgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjaGFyKj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCBjaGFyKj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Kj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Pnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCB3Y2hhcl90Kj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Pnt9OwotLy8KLS8vIHRoZSBmb2xsd29pbmcgYXJlIG5lZWRlZCBmb3IgSUNVIHN1cHBvcnQ6Ci0vLwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czx1bnNpZ25lZCBjaGFyKj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCB1bnNpZ25lZCBjaGFyKj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxpbnQqPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGludD57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8Y29uc3QgaW50Kj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxpbnQ+e307Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czx1bnNpZ25lZCBzaG9ydCo+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx1bnNpZ25lZCBzaG9ydD57fTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgZGVmaW5lZChfX1NUTF9ERUJVRykKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8c3RkOjpzdHJpbmc6Oml0ZXJhdG9yPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGNoYXI+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxzdGQ6OndzdHJpbmc6Oml0ZXJhdG9yPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPHdjaGFyX3Q+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8d2NoYXJfdD57fTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19XU1RSSU5HCi0jZW5kaWYgLy8gc3Rwb3J0Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0cyA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxUPiB7fTsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9mbGFncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX2ZsYWdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM1MmQwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX2ZsYWdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG1hdGNoX2ZsYWdzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgbWF0Y2hfZmxhZ3MgdHlwZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9GTEFHUwotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9GTEFHUwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50c3sKLSNlbmRpZgotCi10eXBlZGVmIGVudW0gX21hdGNoX2ZsYWdzCi17Ci0gICBtYXRjaF9kZWZhdWx0ID0gMCwKLSAgIG1hdGNoX25vdF9ib2wgPSAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZmlyc3QgaXMgbm90IHN0YXJ0IG9mIGxpbmUgKi8KLSAgIG1hdGNoX25vdF9lb2wgPSBtYXRjaF9ub3RfYm9sIDw8IDEsICAgICAgICAgICAgICAgLyogbGFzdCBpcyBub3QgZW5kIG9mIGxpbmUgKi8KLSAgIG1hdGNoX25vdF9ib2IgPSBtYXRjaF9ub3RfZW9sIDw8IDEsICAgICAgICAgICAgICAgLyogZmlyc3QgaXMgbm90IHN0YXJ0IG9mIGJ1ZmZlciAqLwotICAgbWF0Y2hfbm90X2VvYiA9IG1hdGNoX25vdF9ib2IgPDwgMSwgICAgICAgICAgICAgICAvKiBsYXN0IGlzIG5vdCBlbmQgb2YgYnVmZmVyICovCi0gICBtYXRjaF9ub3RfYm93ID0gbWF0Y2hfbm90X2VvYiA8PCAxLCAgICAgICAgICAgICAgIC8qIGZpcnN0IGlzIG5vdCBzdGFydCBvZiB3b3JkICovCi0gICBtYXRjaF9ub3RfZW93ID0gbWF0Y2hfbm90X2JvdyA8PCAxLCAgICAgICAgICAgICAgIC8qIGxhc3QgaXMgbm90IGVuZCBvZiB3b3JkICovCi0gICBtYXRjaF9ub3RfZG90X25ld2xpbmUgPSBtYXRjaF9ub3RfZW93IDw8IDEsICAgICAgIC8qIFxuIGlzIG5vdCBtYXRjaGVkIGJ5ICcuJyAqLwotICAgbWF0Y2hfbm90X2RvdF9udWxsID0gbWF0Y2hfbm90X2RvdF9uZXdsaW5lIDw8IDEsICAvKiAnXDAnIGlzIG5vdCBtYXRjaGVkIGJ5ICcuJyAqLwotICAgbWF0Y2hfcHJldl9hdmFpbCA9IG1hdGNoX25vdF9kb3RfbnVsbCA8PCAxLCAgICAgICAvKiAqLS1maXJzdCBpcyBhIHZhbGlkIGV4cHJlc3Npb24gKi8KLSAgIG1hdGNoX2luaXQgPSBtYXRjaF9wcmV2X2F2YWlsIDw8IDEsICAgICAgICAgICAgICAgLyogaW50ZXJuYWwgdXNlICovCi0gICBtYXRjaF9hbnkgPSBtYXRjaF9pbml0IDw8IDEsICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbid0IGNhcmUgd2hhdCB3ZSBtYXRjaCAqLwotICAgbWF0Y2hfbm90X251bGwgPSBtYXRjaF9hbnkgPDwgMSwgICAgICAgICAgICAgICAgICAvKiBzdHJpbmcgY2FuJ3QgYmUgbnVsbCAqLwotICAgbWF0Y2hfY29udGludW91cyA9IG1hdGNoX25vdF9udWxsIDw8IDEsICAgICAgICAgICAvKiBlYWNoIGdyZXAgbWF0Y2ggbXVzdCBjb250aW51ZSBmcm9tICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVuaW50ZXJ1cHRlZCBmcm9tIHRoZSBwcmV2aW91cyBvbmUgKi8KLSAgIG1hdGNoX3BhcnRpYWwgPSBtYXRjaF9jb250aW51b3VzIDw8IDEsICAgICAgICAgICAgLyogZmluZCBwYXJ0aWFsIG1hdGNoZXMgKi8KLSAgIAotICAgbWF0Y2hfc3RvcCA9IG1hdGNoX3BhcnRpYWwgPDwgMSwgICAgICAgICAgICAgICAgICAvKiBzdG9wIGFmdGVyIGZpcnN0IG1hdGNoIChncmVwKSBWMyBvbmx5ICovCi0gICBtYXRjaF9ub3RfaW5pdGlhbF9udWxsID0gbWF0Y2hfc3RvcCwgICAgICAgICAgICAgIC8qIGRvbid0IG1hdGNoIGluaXRpYWwgbnVsbCwgVjQgb25seSAqLwotICAgbWF0Y2hfYWxsID0gbWF0Y2hfc3RvcCA8PCAxLCAgICAgICAgICAgICAgICAgICAgICAvKiBtdXN0IGZpbmQgdGhlIHdob2xlIG9mIGlucHV0IGV2ZW4gaWYgbWF0Y2hfYW55IGlzIHNldCAqLwotICAgbWF0Y2hfcGVybCA9IG1hdGNoX2FsbCA8PCAxLCAgICAgICAgICAgICAgICAgICAgICAvKiBVc2UgcGVybCBtYXRjaGluZyBydWxlcyAqLwotICAgbWF0Y2hfcG9zaXggPSBtYXRjaF9wZXJsIDw8IDEsICAgICAgICAgICAgICAgICAgICAvKiBVc2UgUE9TSVggbWF0Y2hpbmcgcnVsZXMgKi8KLSAgIG1hdGNoX25vc3VicyA9IG1hdGNoX3Bvc2l4IDw8IDEsICAgICAgICAgICAgICAgICAgLyogZG9uJ3QgdHJhcCBtYXJrZWQgc3VicyAqLwotICAgbWF0Y2hfZXh0cmEgPSBtYXRjaF9ub3N1YnMgPDwgMSwgICAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIGZ1bGwgY2FwdHVyZSBpbmZvcm1hdGlvbiBmb3IgcmVwZWF0ZWQgY2FwdHVyZXMgKi8KLSAgIG1hdGNoX3NpbmdsZV9saW5lID0gbWF0Y2hfZXh0cmEgPDwgMSwgICAgICAgICAgICAgLyogdHJlYXQgdGV4dCBhcyBzaW5nbGUgbGluZSBhbmQgaWdub3IgYW55IFxuJ3Mgd2hlbiBtYXRjaGluZyBeIGFuZCAkLiAqLwotICAgbWF0Y2hfdW51c2VkMSA9IG1hdGNoX3NpbmdsZV9saW5lIDw8IDEsICAgICAgICAgICAvKiB1bnVzZWQgKi8KLSAgIG1hdGNoX3VudXNlZDIgPSBtYXRjaF91bnVzZWQxIDw8IDEsICAgICAgICAgICAgICAgLyogdW51c2VkICovCi0gICBtYXRjaF91bnVzZWQzID0gbWF0Y2hfdW51c2VkMiA8PCAxLCAgICAgICAgICAgICAgIC8qIHVudXNlZCAqLwotICAgbWF0Y2hfbWF4ID0gbWF0Y2hfdW51c2VkMywKLQotICAgZm9ybWF0X3BlcmwgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwZXJsIHN0eWxlIHJlcGxhY2VtZW50ICovCi0gICBmb3JtYXRfZGVmYXVsdCA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRpdHRvLiAqLwotICAgZm9ybWF0X3NlZCA9IG1hdGNoX21heCA8PCAxLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWQgc3R5bGUgcmVwbGFjZW1lbnQuICovCi0gICBmb3JtYXRfYWxsID0gZm9ybWF0X3NlZCA8PCAxLCAgICAgICAgICAgICAgICAgICAgIC8qIGVuYWJsZSBhbGwgZXh0ZW50aW9ucyB0byBzeXRheC4gKi8KLSAgIGZvcm1hdF9ub19jb3B5ID0gZm9ybWF0X2FsbCA8PCAxLCAgICAgICAgICAgICAgICAgLyogZG9uJ3QgY29weSBub24tbWF0Y2hpbmcgc2VnbWVudHMuICovCi0gICBmb3JtYXRfZmlyc3Rfb25seSA9IGZvcm1hdF9ub19jb3B5IDw8IDEsICAgICAgICAgIC8qIE9ubHkgcmVwbGFjZSBmaXJzdCBvY2N1cmFuY2UuICovCi0gICBmb3JtYXRfaXNfaWYgPSBmb3JtYXRfZmlyc3Rfb25seSA8PCAxLCAgICAgICAgICAgIC8qIGludGVybmFsIHVzZSBvbmx5LiAqLwotICAgZm9ybWF0X2xpdGVyYWwgPSBmb3JtYXRfaXNfaWYgPDwgMSAgICAgICAgICAgICAgICAvKiB0cmVhdCBzdHJpbmcgYXMgYSBsaXRlcmFsICovCi0KLX0gbWF0Y2hfZmxhZ3M7Ci0KLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwgMTMwMCkpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIG1hdGNoX2ZsYWdfdHlwZTsKLSNlbHNlCi10eXBlZGVmIG1hdGNoX2ZsYWdzIG1hdGNoX2ZsYWdfdHlwZTsKLQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWlubGluZSBtYXRjaF9mbGFncyBvcGVyYXRvciYobWF0Y2hfZmxhZ3MgbTEsIG1hdGNoX2ZsYWdzIG0yKQoteyByZXR1cm4gc3RhdGljX2Nhc3Q8bWF0Y2hfZmxhZ3M+KHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMSkgJiBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTIpKTsgfQotaW5saW5lIG1hdGNoX2ZsYWdzIG9wZXJhdG9yfChtYXRjaF9mbGFncyBtMSwgbWF0Y2hfZmxhZ3MgbTIpCi17IHJldHVybiBzdGF0aWNfY2FzdDxtYXRjaF9mbGFncz4oc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0xKSB8IHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMikpOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3Mgb3BlcmF0b3JeKG1hdGNoX2ZsYWdzIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgcmV0dXJuIHN0YXRpY19jYXN0PG1hdGNoX2ZsYWdzPihzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTEpIF4gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0yKSk7IH0KLWlubGluZSBtYXRjaF9mbGFncyBvcGVyYXRvcn4obWF0Y2hfZmxhZ3MgbTEpCi17IHJldHVybiBzdGF0aWNfY2FzdDxtYXRjaF9mbGFncz4ofnN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMSkpOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3MmIG9wZXJhdG9yJj0obWF0Y2hfZmxhZ3MmIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgbTEgPSBtMSZtMjsgcmV0dXJuIG0xOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3MmIG9wZXJhdG9yfD0obWF0Y2hfZmxhZ3MmIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgbTEgPSBtMXxtMjsgcmV0dXJuIG0xOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3MmIG9wZXJhdG9yXj0obWF0Y2hfZmxhZ3MmIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgbTEgPSBtMV5tMjsgcmV0dXJuIG0xOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0gLyogbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50cyAqLwotLyoKLSAqIGltcG9ydCBuYW1lcyBpbnRvIGJvb3N0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJsaXR5OgotICovCi11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2VvbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvYjsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2VvYjsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvdzsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2VvdzsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2RvdF9uZXdsaW5lOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfZG90X251bGw7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3ByZXZfYXZhaWw7Ci0vKiB1c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2luaXQ7ICovCi11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X251bGw7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2NvbnRpbnVvdXM7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3BhcnRpYWw7Ci0vKnVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfc3RvcDsgKi8KLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYWxsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9wZXJsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9wb3NpeDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm9zdWJzOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9leHRyYTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfc2luZ2xlX2xpbmU7Ci0vKnVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbWF4OyAqLwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfcGVybDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2RlZmF1bHQ7Ci11c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZmlyc3Rfb25seTsKLS8qdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfaXNfaWY7Ki8KLQotfSAvKiBuYW1lc3BhY2UgbmRuYm9vc3QgKi8KLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotI2VuZGlmIC8qIGluY2x1ZGUgZ3VhcmQgKi8KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9yZXN1bHRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfcmVzdWx0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYjk4MWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9yZXN1bHRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwMiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgbWF0Y2hfcmVzdWx0cy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIG1hdGNoX3Jlc3VsdHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfUkVTVUxUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfUkVTVUxUU19IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEgNDIzMSkKLSMgIGlmIE5ETkJPT1NUX01TVkMgPCAxNjAwCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDY2MCkKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotY2xhc3MgbmFtZWRfc3ViZXhwcmVzc2lvbnM7Ci0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotY2xhc3MgbWF0Y2hfcmVzdWx0cwoteyAKLXByaXZhdGU6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjp2ZWN0b3I8c3ViX21hdGNoPEJpZGlJdGVyYXRvcj4sIEFsbG9jYXRvcj4gdmVjdG9yX3R5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OnZlY3RvcjxzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiA+ICAgICAgICAgICB2ZWN0b3JfdHlwZTsKLSNlbmRpZgotcHVibGljOiAKLSAgIHR5cGVkZWYgICAgICAgICAgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSNpZiAgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUikgJiYgIShkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpCi0gICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jYXRvcjo6Y29uc3RfcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwotI2Vsc2UKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3RfcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcl90eXBlOjpjb25zdF9pdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2NhdG9yOjpzaXplX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIEFsbG9jYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgcmVfZGV0YWlsOjpuYW1lZF9zdWJleHByZXNzaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZF9zdWJfdHlwZTsKLQotICAgLy8gY29uc3RydWN0L2NvcHkvZGVzdHJveToKLSAgIGV4cGxpY2l0IG1hdGNoX3Jlc3VsdHMoY29uc3QgQWxsb2NhdG9yJiBhID0gQWxsb2NhdG9yKCkpCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICAgIDogbV9zdWJzKGEpLCBtX2Jhc2UoKSwgbV9sYXN0X2Nsb3NlZF9wYXJlbigwKSwgbV9pc19zaW5ndWxhcih0cnVlKSB7fQotI2Vsc2UKLSAgICAgIDogbV9zdWJzKCksIG1fYmFzZSgpLCBtX2xhc3RfY2xvc2VkX3BhcmVuKDApLCBtX2lzX3Npbmd1bGFyKHRydWUpIHsgKHZvaWQpYTsgfQotI2VuZGlmCi0gICBtYXRjaF9yZXN1bHRzKGNvbnN0IG1hdGNoX3Jlc3VsdHMmIG0pCi0gICAgICA6IG1fc3VicyhtLm1fc3VicyksIG1fbmFtZWRfc3VicyhtLm1fbmFtZWRfc3VicyksIG1fbGFzdF9jbG9zZWRfcGFyZW4obS5tX2xhc3RfY2xvc2VkX3BhcmVuKSwgbV9pc19zaW5ndWxhcihtLm1faXNfc2luZ3VsYXIpIAotICAgewotICAgICAgaWYoIW1faXNfc2luZ3VsYXIpCi0gICAgICB7Ci0gICAgICAgICBtX2Jhc2UgPSBtLm1fYmFzZTsKLSAgICAgICAgIG1fbnVsbCA9IG0ubV9udWxsOwotICAgICAgfQotICAgfQotICAgbWF0Y2hfcmVzdWx0cyYgb3BlcmF0b3I9KGNvbnN0IG1hdGNoX3Jlc3VsdHMmIG0pCi0gICB7Ci0gICAgICBtX3N1YnMgPSBtLm1fc3ViczsKLSAgICAgIG1fbmFtZWRfc3VicyA9IG0ubV9uYW1lZF9zdWJzOwotICAgICAgbV9sYXN0X2Nsb3NlZF9wYXJlbiA9IG0ubV9sYXN0X2Nsb3NlZF9wYXJlbjsKLSAgICAgIG1faXNfc2luZ3VsYXIgPSBtLm1faXNfc2luZ3VsYXI7Ci0gICAgICBpZighbV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIG1fYmFzZSA9IG0ubV9iYXNlOwotICAgICAgICAgbV9udWxsID0gbS5tX251bGw7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB+bWF0Y2hfcmVzdWx0cygpe30KLQotICAgLy8gc2l6ZToKLSAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QKLSAgIHsgcmV0dXJuIGVtcHR5KCkgPyAwIDogbV9zdWJzLnNpemUoKSAtIDI7IH0KLSAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0Ci0gICB7IHJldHVybiBtX3N1YnMubWF4X3NpemUoKTsgfQotICAgYm9vbCBlbXB0eSgpIGNvbnN0Ci0gICB7IHJldHVybiBtX3N1YnMuc2l6ZSgpIDwgMjsgfQotICAgLy8gZWxlbWVudCBhY2Nlc3M6Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuZ3RoKGludCBzdWIgPSAwKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdWIgKz0gMjsKLSAgICAgIGlmKChzdWIgPCAoaW50KW1fc3Vicy5zaXplKCkpICYmIChzdWIgPiAwKSkKLSAgICAgICAgIHJldHVybiBtX3N1YnNbc3ViXS5sZW5ndGgoKTsKLSAgICAgIHJldHVybiAwOwotICAgfQotICAgZGlmZmVyZW5jZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgY29uc3QgY2hhcl90eXBlKiBzdWJfZW5kID0gc3ViOwotICAgICAgd2hpbGUoKnN1Yl9lbmQpICsrc3ViX2VuZDsKLSAgICAgIHJldHVybiBsZW5ndGgobmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChzdWIsIHN1Yl9lbmQpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW5ndGgoY29uc3QgY2hhclQqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgY29uc3QgY2hhclQqIHN1Yl9lbmQgPSBzdWI7Ci0gICAgICB3aGlsZSgqc3ViX2VuZCkgKytzdWJfZW5kOwotICAgICAgcmV0dXJuIGxlbmd0aChuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN1Yiwgc3ViX2VuZCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEE+Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuZ3RoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEE+JiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbGVuZ3RoKHN1Yi5jX3N0cigpKTsKLSAgIH0KLSAgIGRpZmZlcmVuY2VfdHlwZSBwb3NpdGlvbihzaXplX3R5cGUgc3ViID0gMCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgc3ViICs9IDI7Ci0gICAgICBpZihzdWIgPCBtX3N1YnMuc2l6ZSgpKQotICAgICAgewotICAgICAgICAgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIHMgPSBtX3N1YnNbc3ViXTsKLSAgICAgICAgIGlmKHMubWF0Y2hlZCB8fCAoc3ViID09IDIpKQotICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoKEJpZGlJdGVyYXRvcikobV9iYXNlKSwgKEJpZGlJdGVyYXRvcikocy5maXJzdCkpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIH5zdGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KDApOwotICAgfQotICAgZGlmZmVyZW5jZV90eXBlIHBvc2l0aW9uKGNvbnN0IGNoYXJfdHlwZSogc3ViKSBjb25zdAotICAgewotICAgICAgY29uc3QgY2hhcl90eXBlKiBzdWJfZW5kID0gc3ViOwotICAgICAgd2hpbGUoKnN1Yl9lbmQpICsrc3ViX2VuZDsKLSAgICAgIHJldHVybiBwb3NpdGlvbihuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN1Yiwgc3ViX2VuZCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgZGlmZmVyZW5jZV90eXBlIHBvc2l0aW9uKGNvbnN0IGNoYXJUKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICBjb25zdCBjaGFyVCogc3ViX2VuZCA9IHN1YjsKLSAgICAgIHdoaWxlKCpzdWJfZW5kKSArK3N1Yl9lbmQ7Ci0gICAgICByZXR1cm4gcG9zaXRpb24obmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChzdWIsIHN1Yl9lbmQpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgZGlmZmVyZW5jZV90eXBlIHBvc2l0aW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEE+JiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gcG9zaXRpb24oc3ViLmNfc3RyKCkpOwotICAgfQotICAgc3RyaW5nX3R5cGUgc3RyKGludCBzdWIgPSAwKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdWIgKz0gMjsKLSAgICAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgICAgIGlmKHN1YiA8IChpbnQpbV9zdWJzLnNpemUoKSAmJiAoc3ViID4gMCkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgcyA9IG1fc3Vic1tzdWJdOwotICAgICAgICAgaWYocy5tYXRjaGVkKQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0ID0gcy5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBzdHIoY29uc3QgY2hhcl90eXBlKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKVtzdWJdLnN0cigpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIHN0cmluZ190eXBlIHN0cihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGUsIFRyYWl0cywgQT4mIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpW3N1Yl0uc3RyKCk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBzdHJpbmdfdHlwZSBzdHIoY29uc3QgY2hhclQqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpW3N1Yl0uc3RyKCk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIHN0cmluZ190eXBlIHN0cihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBPiYgc3ViKSBjb25zdAotICAgewotICAgICAgcmV0dXJuICgqdGhpcylbc3ViXS5zdHIoKTsKLSAgIH0KLSAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKGludCBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyICYmIG1fc3Vicy5lbXB0eSgpKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHN1YiArPSAyOwotICAgICAgaWYoc3ViIDwgKGludCltX3N1YnMuc2l6ZSgpICYmIChzdWIgPj0gMCkpCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gbV9zdWJzW3N1Yl07Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbV9udWxsOwotICAgfQotICAgLy8KLSAgIC8vIE5hbWVkIHN1Yi1leHByZXNzaW9uczoKLSAgIC8vCi0gICBjb25zdF9yZWZlcmVuY2UgbmFtZWRfc3ViZXhwcmVzc2lvbihjb25zdCBjaGFyX3R5cGUqIGksIGNvbnN0IGNoYXJfdHlwZSogaikgY29uc3QKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBTY2FuIGZvciB0aGUgbGVmdG1vc3QgKm1hdGNoZWQqIHN1YmV4cHJlc3Npb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVkOgotICAgICAgLy8KLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmVfZGV0YWlsOjpuYW1lZF9zdWJleHByZXNzaW9uczo6cmFuZ2VfdHlwZSByID0gbV9uYW1lZF9zdWJzLT5lcXVhbF9yYW5nZShpLCBqKTsKLSAgICAgIHdoaWxlKChyLmZpcnN0ICE9IHIuc2Vjb25kKSAmJiAoKCp0aGlzKVtyLmZpcnN0LT5pbmRleF0ubWF0Y2hlZCA9PSBmYWxzZSkpCi0gICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICByZXR1cm4gci5maXJzdCAhPSByLnNlY29uZCA/ICgqdGhpcylbci5maXJzdC0+aW5kZXhdIDogbV9udWxsOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgY29uc3RfcmVmZXJlbmNlIG5hbWVkX3N1YmV4cHJlc3Npb24oY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqKSBjb25zdAotICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoY2hhclQpIDw9IHNpemVvZihjaGFyX3R5cGUpKTsKLSAgICAgIGlmKGkgPT0gaikKLSAgICAgICAgIHJldHVybiBtX251bGw7Ci0gICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHM7Ci0gICAgICB3aGlsZShpICE9IGopCi0gICAgICAgICBzLmluc2VydChzLmVuZCgpLCAqaSsrKTsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uKCYqcy5iZWdpbigpLCAmKnMuYmVnaW4oKSArIHMuc2l6ZSgpKTsKLSAgIH0KLSAgIGludCBuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KGNvbnN0IGNoYXJfdHlwZSogaSwgY29uc3QgY2hhcl90eXBlKiBqKSBjb25zdAotICAgewotICAgICAgLy8KLSAgICAgIC8vIFNjYW4gZm9yIHRoZSBsZWZ0bW9zdCAqbWF0Y2hlZCogc3ViZXhwcmVzc2lvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZWQuCi0gICAgICAvLyBJZiBub25lIGZvdW5kIHRoZW4gcmV0dXJuIHRoZSBsZWZ0bW9zdCBleHByZXNzaW9uIHdpdGggdGhhdCBuYW1lLAotICAgICAgLy8gb3RoZXJ3aXNlIGFuIGludmFsaWQgaW5kZXg6Ci0gICAgICAvLwotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZV9kZXRhaWw6Om5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHMsIHI7Ci0gICAgICBzID0gciA9IG1fbmFtZWRfc3Vicy0+ZXF1YWxfcmFuZ2UoaSwgaik7Ci0gICAgICB3aGlsZSgoci5maXJzdCAhPSByLnNlY29uZCkgJiYgKCgqdGhpcylbci5maXJzdC0+aW5kZXhdLm1hdGNoZWQgPT0gZmFsc2UpKQotICAgICAgICAgKytyLmZpcnN0OwotICAgICAgaWYoci5maXJzdCA9PSByLnNlY29uZCkKLSAgICAgICAgIHIgPSBzOwotICAgICAgcmV0dXJuIHIuZmlyc3QgIT0gci5zZWNvbmQgPyByLmZpcnN0LT5pbmRleCA6IC0yMDsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGludCBuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogaikgY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGNoYXJUKSA8PSBzaXplb2YoY2hhcl90eXBlKSk7Ci0gICAgICBpZihpID09IGopCi0gICAgICAgICByZXR1cm4gLTIwOwotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiBzOwotICAgICAgd2hpbGUoaSAhPSBqKQotICAgICAgICAgcy5pbnNlcnQocy5lbmQoKSwgKmkrKyk7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleCgmKnMuYmVnaW4oKSwgJipzLmJlZ2luKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlLCBUcmFpdHMsIEE+JiBzKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb24ocy5jX3N0cigpLCBzLmNfc3RyKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0gICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShjb25zdCBjaGFyX3R5cGUqIHApIGNvbnN0Ci0gICB7Ci0gICAgICBjb25zdCBjaGFyX3R5cGUqIGUgPSBwOwotICAgICAgd2hpbGUoKmUpICsrZTsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uKHAsIGUpOwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShjb25zdCBjaGFyVCogcCkgY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGNoYXJUKSA8PSBzaXplb2YoY2hhcl90eXBlKSk7Ci0gICAgICBpZigqcCA9PSAwKQotICAgICAgICAgcmV0dXJuIG1fbnVsbDsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gczsKLSAgICAgIHdoaWxlKCpwKQotICAgICAgICAgcy5pbnNlcnQocy5lbmQoKSwgKnArKyk7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbigmKnMuYmVnaW4oKSwgJipzLmJlZ2luKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEE+JiBucykgY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGNoYXJUKSA8PSBzaXplb2YoY2hhcl90eXBlKSk7Ci0gICAgICBpZihucy5lbXB0eSgpKQotICAgICAgICAgcmV0dXJuIG1fbnVsbDsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gczsKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IG5zLnNpemUoKTsgKytpKQotICAgICAgICAgcy5pbnNlcnQocy5lbmQoKSwgbnNbaV0pOwotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb24oJipzLmJlZ2luKCksICYqcy5iZWdpbigpICsgcy5zaXplKCkpOwotICAgfQotCi0gICBjb25zdF9yZWZlcmVuY2UgcHJlZml4KCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmV0dXJuICgqdGhpcylbLTFdOwotICAgfQotCi0gICBjb25zdF9yZWZlcmVuY2Ugc3VmZml4KCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmV0dXJuICgqdGhpcylbLTJdOwotICAgfQotICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIChtX3N1YnMuc2l6ZSgpID4gMikgPyAobV9zdWJzLmJlZ2luKCkgKyAyKSA6IG1fc3Vicy5lbmQoKTsKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9zdWJzLmVuZCgpOwotICAgfQotICAgLy8gZm9ybWF0OgotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBGdW5jdG9yPgotICAgT3V0cHV0SXRlcmF0b3IgZm9ybWF0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdG9yIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBmb3JtYXRfZGVmYXVsdCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OmNvbXB1dGVfZnVuY3Rvcl90eXBlPEZ1bmN0b3IsIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+LCBPdXRwdXRJdGVyYXRvcj46OnR5cGUgRjsKLSAgICAgIEYgZnVuYyhmbXQpOwotICAgICAgcmV0dXJuIGZ1bmMoKnRoaXMsIG91dCwgZmxhZ3MpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIEZ1bmN0b3I+Ci0gICBzdHJpbmdfdHlwZSBmb3JtYXQoRnVuY3RvciBmbXQsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IGZvcm1hdF9kZWZhdWx0KSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+IHJlc3VsdDsKLSAgICAgIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ID4gaShyZXN1bHQpOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6Y29tcHV0ZV9mdW5jdG9yX3R5cGU8RnVuY3RvciwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4sIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ID4gPjo6dHlwZSBGOwotICAgICAgRiBmdW5jKGZtdCk7Ci0KLSAgICAgIGZ1bmMoKnRoaXMsIGksIGZsYWdzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICAvLyBmb3JtYXQgd2l0aCBsb2NhbGU6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEZ1bmN0b3IsIGNsYXNzIFJlZ2V4VD4KLSAgIE91dHB1dEl0ZXJhdG9yIGZvcm1hdChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3RvciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2V4VCYgcmUpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHlwZW5hbWUgUmVnZXhUOjp0cmFpdHNfdHlwZT4gdHJhaXRzX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6Y29tcHV0ZV9mdW5jdG9yX3R5cGU8RnVuY3RvciwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4sIE91dHB1dEl0ZXJhdG9yLCB0cmFpdHNfdHlwZT46OnR5cGUgRjsKLSAgICAgIEYgZnVuYyhmbXQpOwotICAgICAgcmV0dXJuIGZ1bmMoKnRoaXMsIG91dCwgZmxhZ3MsIHJlLmdldF90cmFpdHMoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUmVnZXhULCBjbGFzcyBGdW5jdG9yPgotICAgc3RyaW5nX3R5cGUgZm9ybWF0KEZ1bmN0b3IgZm10LAotICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdleFQmIHJlKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHR5cGVuYW1lIFJlZ2V4VDo6dHJhaXRzX3R5cGU+IHRyYWl0c190eXBlOwotICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiByZXN1bHQ7Ci0gICAgICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiA+IGkocmVzdWx0KTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OmNvbXB1dGVfZnVuY3Rvcl90eXBlPEZ1bmN0b3IsIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+LCByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiA+LCB0cmFpdHNfdHlwZSA+Ojp0eXBlIEY7Ci0gICAgICBGIGZ1bmMoZm10KTsKLQotICAgICAgZnVuYygqdGhpcywgaSwgZmxhZ3MsIHJlLmdldF90cmFpdHMoKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotCi0gICBjb25zdF9yZWZlcmVuY2UgZ2V0X2xhc3RfY2xvc2VkX3BhcmVuKCljb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZXR1cm4gbV9sYXN0X2Nsb3NlZF9wYXJlbiA9PSAwID8gbV9udWxsIDogKCp0aGlzKVttX2xhc3RfY2xvc2VkX3BhcmVuXTsKLSAgIH0KLQotICAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0Ci0gICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICAgIHJldHVybiBtX3N1YnMuZ2V0X2FsbG9jYXRvcigpOwotI2Vsc2UKLSAgICAgcmV0dXJuIGFsbG9jYXRvcl90eXBlKCk7Ci0jZW5kaWYKLSAgIH0KLSAgIHZvaWQgc3dhcChtYXRjaF9yZXN1bHRzJiB0aGF0KQotICAgewotICAgICAgc3RkOjpzd2FwKG1fc3VicywgdGhhdC5tX3N1YnMpOwotICAgICAgc3RkOjpzd2FwKG1fbmFtZWRfc3VicywgdGhhdC5tX25hbWVkX3N1YnMpOwotICAgICAgc3RkOjpzd2FwKG1fbGFzdF9jbG9zZWRfcGFyZW4sIHRoYXQubV9sYXN0X2Nsb3NlZF9wYXJlbik7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgaWYoIXRoYXQubV9pc19zaW5ndWxhcikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYmFzZSA9IHRoYXQubV9iYXNlOwotICAgICAgICAgICAgbV9udWxsID0gdGhhdC5tX251bGw7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHRoYXQubV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIHRoYXQubV9iYXNlID0gbV9iYXNlOwotICAgICAgICAgdGhhdC5tX251bGwgPSBtX251bGw7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN3YXAobV9iYXNlLCB0aGF0Lm1fYmFzZSk7Ci0gICAgICAgICBzdGQ6OnN3YXAobV9udWxsLCB0aGF0Lm1fbnVsbCk7Ci0gICAgICB9Ci0gICAgICBzdGQ6OnN3YXAobV9pc19zaW5ndWxhciwgdGhhdC5tX2lzX3Npbmd1bGFyKTsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtYXRjaF9yZXN1bHRzJiB0aGF0KWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgcmV0dXJuIHRoYXQubV9pc19zaW5ndWxhcjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodGhhdC5tX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgcmV0dXJuIChtX3N1YnMgPT0gdGhhdC5tX3N1YnMpICYmIChtX2Jhc2UgPT0gdGhhdC5tX2Jhc2UpICYmIChtX2xhc3RfY2xvc2VkX3BhcmVuID09IHRoYXQubV9sYXN0X2Nsb3NlZF9wYXJlbik7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yIT0oY29uc3QgbWF0Y2hfcmVzdWx0cyYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46OmNhcHR1cmVfc2VxdWVuY2VfdHlwZSBjYXB0dXJlX3NlcXVlbmNlX3R5cGU7Ci0KLSAgIGNvbnN0IGNhcHR1cmVfc2VxdWVuY2VfdHlwZSYgY2FwdHVyZXMoaW50IGkpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmV0dXJuICgqdGhpcylbaV0uY2FwdHVyZXMoKTsKLSAgIH0KLSNlbmRpZgotCi0gICAvLwotICAgLy8gcHJpdmF0ZSBhY2Nlc3MgZnVuY3Rpb25zOgotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9zZWNvbmQoQmlkaUl0ZXJhdG9yIGkpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobV9zdWJzLnNpemUoKSA+IDIpOwotICAgICAgbV9zdWJzWzJdLnNlY29uZCA9IGk7Ci0gICAgICBtX3N1YnNbMl0ubWF0Y2hlZCA9IHRydWU7Ci0gICAgICBtX3N1YnNbMF0uZmlyc3QgPSBpOwotICAgICAgbV9zdWJzWzBdLm1hdGNoZWQgPSAobV9zdWJzWzBdLmZpcnN0ICE9IG1fc3Vic1swXS5zZWNvbmQpOwotICAgICAgbV9udWxsLmZpcnN0ID0gaTsKLSAgICAgIG1fbnVsbC5zZWNvbmQgPSBpOwotICAgICAgbV9udWxsLm1hdGNoZWQgPSBmYWxzZTsKLSAgICAgIG1faXNfc2luZ3VsYXIgPSBmYWxzZTsKLSAgIH0KLQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9zZWNvbmQoQmlkaUl0ZXJhdG9yIGksIHNpemVfdHlwZSBwb3MsIGJvb2wgbSA9IHRydWUsIGJvb2wgZXNjYXBlX2sgPSBmYWxzZSkKLSAgIHsKLSAgICAgIGlmKHBvcykKLSAgICAgICAgIG1fbGFzdF9jbG9zZWRfcGFyZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KHBvcyk7Ci0gICAgICBwb3MgKz0gMjsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChtX3N1YnMuc2l6ZSgpID4gcG9zKTsKLSAgICAgIG1fc3Vic1twb3NdLnNlY29uZCA9IGk7Ci0gICAgICBtX3N1YnNbcG9zXS5tYXRjaGVkID0gbTsKLSAgICAgIGlmKChwb3MgPT0gMikgJiYgIWVzY2FwZV9rKQotICAgICAgewotICAgICAgICAgbV9zdWJzWzBdLmZpcnN0ID0gaTsKLSAgICAgICAgIG1fc3Vic1swXS5tYXRjaGVkID0gKG1fc3Vic1swXS5maXJzdCAhPSBtX3N1YnNbMF0uc2Vjb25kKTsKLSAgICAgICAgIG1fbnVsbC5maXJzdCA9IGk7Ci0gICAgICAgICBtX251bGwuc2Vjb25kID0gaTsKLSAgICAgICAgIG1fbnVsbC5tYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgICBtX2lzX3Npbmd1bGFyID0gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X3NpemUoc2l6ZV90eXBlIG4sIEJpZGlJdGVyYXRvciBpLCBCaWRpSXRlcmF0b3IgaikKLSAgIHsKLSAgICAgIHZhbHVlX3R5cGUgdihqKTsKLSAgICAgIHNpemVfdHlwZSBsZW4gPSBtX3N1YnMuc2l6ZSgpOwotICAgICAgaWYobGVuID4gbiArIDIpCi0gICAgICB7Ci0gICAgICAgICBtX3N1YnMuZXJhc2UobV9zdWJzLmJlZ2luKCkrbisyLCBtX3N1YnMuZW5kKCkpOwotICAgICAgICAgc3RkOjpmaWxsKG1fc3Vicy5iZWdpbigpLCBtX3N1YnMuZW5kKCksIHYpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjpmaWxsKG1fc3Vicy5iZWdpbigpLCBtX3N1YnMuZW5kKCksIHYpOwotICAgICAgICAgaWYobisyICE9IGxlbikKLSAgICAgICAgICAgIG1fc3Vicy5pbnNlcnQobV9zdWJzLmVuZCgpLCBuKzItbGVuLCB2KTsKLSAgICAgIH0KLSAgICAgIG1fc3Vic1sxXS5maXJzdCA9IGk7Ci0gICAgICBtX2xhc3RfY2xvc2VkX3BhcmVuID0gMDsKLSAgIH0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfYmFzZShCaWRpSXRlcmF0b3IgcG9zKQotICAgewotICAgICAgbV9iYXNlID0gcG9zOwotICAgfQotICAgQmlkaUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9iYXNlOwotICAgfQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9maXJzdChCaWRpSXRlcmF0b3IgaSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChtX3N1YnMuc2l6ZSgpID4gMik7Ci0gICAgICAvLyBzZXQgdXAgcHJlZml4OgotICAgICAgbV9zdWJzWzFdLnNlY29uZCA9IGk7Ci0gICAgICBtX3N1YnNbMV0ubWF0Y2hlZCA9IChtX3N1YnNbMV0uZmlyc3QgIT0gaSk7Ci0gICAgICAvLyBzZXQgdXAgJDA6Ci0gICAgICBtX3N1YnNbMl0uZmlyc3QgPSBpOwotICAgICAgLy8gemVybyBvdXQgZXZlcnl0aGluZyBlbHNlOgotICAgICAgZm9yKHNpemVfdHlwZSBuID0gMzsgbiA8IG1fc3Vicy5zaXplKCk7ICsrbikKLSAgICAgIHsKLSAgICAgICAgIG1fc3Vic1tuXS5maXJzdCA9IG1fc3Vic1tuXS5zZWNvbmQgPSBtX3N1YnNbMF0uc2Vjb25kOwotICAgICAgICAgbV9zdWJzW25dLm1hdGNoZWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfZmlyc3QoQmlkaUl0ZXJhdG9yIGksIHNpemVfdHlwZSBwb3MsIGJvb2wgZXNjYXBlX2sgPSBmYWxzZSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChwb3MrMiA8IG1fc3Vicy5zaXplKCkpOwotICAgICAgaWYocG9zIHx8IGVzY2FwZV9rKQotICAgICAgewotICAgICAgICAgbV9zdWJzW3BvcysyXS5maXJzdCA9IGk7Ci0gICAgICAgICBpZihlc2NhcGVfaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fc3Vic1sxXS5zZWNvbmQgPSBpOwotICAgICAgICAgICAgbV9zdWJzWzFdLm1hdGNoZWQgPSAobV9zdWJzWzFdLmZpcnN0ICE9IG1fc3Vic1sxXS5zZWNvbmQpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgc2V0X2ZpcnN0KGkpOwotICAgfQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIG1heWJlX2Fzc2lnbihjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSk7Ci0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfbmFtZWRfc3VicyhuZG5ib29zdDo6c2hhcmVkX3B0cjxuYW1lZF9zdWJfdHlwZT4gc3VicykKLSAgIHsKLSAgICAgIG1fbmFtZWRfc3VicyA9IHN1YnM7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICAvLwotICAgLy8gRXJyb3IgaGFuZGxlciBjYWxsZWQgd2hlbiBhbiB1bmluaXRpYWxpemVkIG1hdGNoX3Jlc3VsdHMgaXMgYWNjZXNzZWQ6Ci0gICAvLwotICAgc3RhdGljIHZvaWQgcmFpc2VfbG9naWNfZXJyb3IoKQotICAgewotICAgICAgc3RkOjpsb2dpY19lcnJvciBlKCJBdHRlbXB0IHRvIGFjY2VzcyBhbiB1bmluaXRpYWx6ZWQgbmRuYm9vc3Q6Om1hdGNoX3Jlc3VsdHM8PiBjbGFzcy4iKTsKLSAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci0gICB9Ci0KLQotICAgdmVjdG9yX3R5cGUgICAgICAgICAgICBtX3N1YnM7ICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YmV4cHJlc3Npb25zCi0gICBCaWRpSXRlcmF0b3IgICBtX2Jhc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgdGhlIHNlYXJjaCBzdGFydGVkIGZyb20KLSAgIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+IG1fbnVsbDsgICAgICAgICAgICAgICAgICAgICAvLyBhIG51bGwgbWF0Y2gKLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPG5hbWVkX3N1Yl90eXBlPiBtX25hbWVkX3N1YnM7ICAgICAvLyBTaGFyZWQgY29weSBvZiBuYW1lZCBzdWJzIGluIHRoZSByZWdleCBvYmplY3QKLSAgIGludCBtX2xhc3RfY2xvc2VkX3BhcmVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMYXN0ICkgdG8gYmUgc2VlbiAtIHVzZWQgZm9yIGZvcm1hdHRpbmcKLSAgIGJvb2wgbV9pc19zaW5ndWxhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcnVlIGlmIG91ciBzdG9yZWQgaXRlcmF0b3JzIGFyZSBzaW5ndWxhcgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+OjptYXliZV9hc3NpZ24oY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0pCi17Ci0gICBpZihtX2lzX3Npbmd1bGFyKQotICAgewotICAgICAgKnRoaXMgPSBtOwotICAgICAgcmV0dXJuOwotICAgfQotICAgY29uc3RfaXRlcmF0b3IgcDEsIHAyOwotICAgcDEgPSBiZWdpbigpOwotICAgcDIgPSBtLmJlZ2luKCk7Ci0gICAvLwotICAgLy8gRGlzdGFuY2VzIGFyZSBtZWFzdXJlZCBmcm9tIHRoZSBzdGFydCBvZiAqdGhpcyogbWF0Y2gsIHVubGVzcyB0aGlzIGlzbid0Ci0gICAvLyBhIHZhbGlkIG1hdGNoIGluIHdoaWNoIGNhc2Ugd2UgdXNlIHRoZSBzdGFydCBvZiB0aGUgd2hvbGUgc2VxdWVuY2UuICBOb3RlIHRoYXQKLSAgIC8vIG5vIHN1YnNlcXVlbnQgbWF0Y2gtY2FuZGlkYXRlIGNhbiBldmVyIGJlIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBtYXRjaCBmb3VuZC4KLSAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gd2UgYXJlIHVzaW5nIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3JzLCB0aGF0IGRpc3RhbmNlcyAKLSAgIC8vIG1lYXN1cmVkIGFyZSBhcyBzaG9ydCBhcyBwb3NzaWJsZSwgYW5kIHRoZXJlZm9yZSBhcyBlZmZpY2llbnQgYXMgcG9zc2libGUKLSAgIC8vIHRvIGNvbXB1dGUuICBGaW5hbGx5IG5vdGUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlICJtYXRjaGVkIiBkYXRhIG1lbWJlciB0byB0ZXN0Ci0gICAvLyB3aGV0aGVyIGEgc3ViLWV4cHJlc3Npb24gaXMgYSB2YWxpZCBtYXRjaCwgYmVjYXVzZSBwYXJ0aWFsIG1hdGNoZXMgc2V0IHRoaXMKLSAgIC8vIHRvIGZhbHNlIGZvciBzdWItZXhwcmVzc2lvbiAwLgotICAgLy8KLSAgIEJpZGlJdGVyYXRvciBsX2VuZCA9IHRoaXMtPnN1ZmZpeCgpLnNlY29uZDsKLSAgIEJpZGlJdGVyYXRvciBsX2Jhc2UgPSAocDEtPmZpcnN0ID09IGxfZW5kKSA/IHRoaXMtPnByZWZpeCgpLmZpcnN0IDogKCp0aGlzKVswXS5maXJzdDsKLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW4xID0gMDsKLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW4yID0gMDsKLSAgIGRpZmZlcmVuY2VfdHlwZSBiYXNlMSA9IDA7Ci0gICBkaWZmZXJlbmNlX3R5cGUgYmFzZTIgPSAwOwotICAgc3RkOjpzaXplX3QgaTsKLSAgIGZvcihpID0gMDsgaSA8IHNpemUoKTsgKytpLCArK3AxLCArK3AyKQotICAgewotICAgICAgLy8KLSAgICAgIC8vIExlZnRtb3N0IHRha2VzIHByaW9yaXR5IG92ZXIgbG9uZ2VzdDsgaGFuZGxlIHNwZWNpYWwgY2FzZXMKLSAgICAgIC8vIHdoZXJlIGRpc3RhbmNlcyBuZWVkIG5vdCBiZSBjb21wdXRlZCBmaXJzdCAoYW4gb3B0aW1pc2F0aW9uCi0gICAgICAvLyBmb3IgYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnM6IGVuc3VyZSB0aGF0IHdlIGRvbid0IGFjY2lkZW50bHkKLSAgICAgIC8vIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGFzIHRoaXMgY2FuIGJlIHJlYWxseQotICAgICAgLy8gZXhwZW5zaXZlKS4KLSAgICAgIC8vCi0gICAgICBpZihwMS0+Zmlyc3QgPT0gbF9lbmQpCi0gICAgICB7Ci0gICAgICAgICBpZihwMi0+Zmlyc3QgIT0gbF9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBwMiBtdXN0IGJlIGJldHRlciB0aGFuIHAxLCBhbmQgbm8gbmVlZCB0byBjYWxjdWxhdGUKLSAgICAgICAgICAgIC8vIGFjdHVhbCBkaXN0YW5jZXM6Ci0gICAgICAgICAgICBiYXNlMSA9IDE7Ci0gICAgICAgICAgICBiYXNlMiA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vICpwMSBhbmQgKnAyIGFyZSBlaXRoZXIgdW5tYXRjaGVkIG9yIG1hdGNoIGVuZC1vZiBzZXF1ZW5jZSwKLSAgICAgICAgICAgIC8vIGVpdGhlciB3YXkgbm8gbmVlZCB0byBjYWxjdWxhdGUgZGlzdGFuY2VzOgotICAgICAgICAgICAgaWYoKHAxLT5tYXRjaGVkID09IGZhbHNlKSAmJiAocDItPm1hdGNoZWQgPT0gdHJ1ZSkpCi0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmKChwMS0+bWF0Y2hlZCA9PSB0cnVlKSAmJiAocDItPm1hdGNoZWQgPT0gZmFsc2UpKQotICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHAyLT5maXJzdCA9PSBsX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHAxIGJldHRlciB0aGFuIHAyLCBhbmQgbm8gbmVlZCB0byBjYWxjdWxhdGUgZGlzdGFuY2VzOgotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgYmFzZTEgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGxfYmFzZSwgcDEtPmZpcnN0KTsKLSAgICAgIGJhc2UyID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShsX2Jhc2UsIHAyLT5maXJzdCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoYmFzZTEgPj0gMCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoYmFzZTIgPj0gMCk7Ci0gICAgICBpZihiYXNlMSA8IGJhc2UyKSByZXR1cm47Ci0gICAgICBpZihiYXNlMiA8IGJhc2UxKSBicmVhazsKLQotICAgICAgbGVuMSA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoKEJpZGlJdGVyYXRvcilwMS0+Zmlyc3QsIChCaWRpSXRlcmF0b3IpcDEtPnNlY29uZCk7Ci0gICAgICBsZW4yID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZSgoQmlkaUl0ZXJhdG9yKXAyLT5maXJzdCwgKEJpZGlJdGVyYXRvcilwMi0+c2Vjb25kKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChsZW4xID49IDApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGxlbjIgPj0gMCk7Ci0gICAgICBpZigobGVuMSAhPSBsZW4yKSB8fCAoKHAxLT5tYXRjaGVkID09IGZhbHNlKSAmJiAocDItPm1hdGNoZWQgPT0gdHJ1ZSkpKQotICAgICAgICAgYnJlYWs7Ci0gICAgICBpZigocDEtPm1hdGNoZWQgPT0gdHJ1ZSkgJiYgKHAyLT5tYXRjaGVkID09IGZhbHNlKSkKLSAgICAgICAgIHJldHVybjsKLSAgIH0KLSAgIGlmKGkgPT0gc2l6ZSgpKQotICAgICAgcmV0dXJuOwotICAgaWYoYmFzZTIgPCBiYXNlMSkKLSAgICAgICp0aGlzID0gbTsKLSAgIGVsc2UgaWYoKGxlbjIgPiBsZW4xKSB8fCAoKHAxLT5tYXRjaGVkID09IGZhbHNlKSAmJiAocDItPm1hdGNoZWQgPT0gdHJ1ZSkpICkKLSAgICAgICp0aGlzID0gbTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotdm9pZCBzd2FwKG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBhLCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgYikKLXsKLSAgIGEuc3dhcChiKTsKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1zdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mCi0gICBvcGVyYXRvciA8PCAoc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JiBvcywKLSAgICAgICAgICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgcykKLXsKLSAgIHJldHVybiAob3MgPDwgcy5zdHIoKSk7Ci19Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoc3RkOjpvc3RyZWFtJiBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBzKQotewotICAgcmV0dXJuIChvcyA8PCBzLnN0cigpKTsKLX0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21lbV9ibG9ja19jYWNoZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21lbV9ibG9ja19jYWNoZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNzFhM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tZW1fYmxvY2tfY2FjaGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBtZW1fYmxvY2tfY2FjaGUuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBtZW1vcnkgYmxvY2sgY2FjaGUgdXNlZCBieSB0aGUgbm9uLXJlY3Vyc2l2ZSBtYXRjaGVyLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X01FTV9CTE9DS19DQUNIRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfTUVNX0JMT0NLX0NBQ0hFX0hQUAotCi0jaW5jbHVkZSA8bmV3PgotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXN0cnVjdCBtZW1fYmxvY2tfbm9kZQotewotICAgbWVtX2Jsb2NrX25vZGUqIG5leHQ7Ci19OwotCi1zdHJ1Y3QgbWVtX2Jsb2NrX2NhY2hlCi17Ci0gICAvLyB0aGlzIG1lbWJlciBoYXMgdG8gYmUgc3RhdGljYWxseSBpbml0aWFsc2VkOgotICAgbWVtX2Jsb2NrX25vZGUqIG5leHQ7Ci0gICB1bnNpZ25lZCBjYWNoZWRfYmxvY2tzOwotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBuZG5ib29zdDo6c3RhdGljX211dGV4IG11dDsKLSNlbmRpZgotCi0gICB+bWVtX2Jsb2NrX2NhY2hlKCkKLSAgIHsKLSAgICAgIHdoaWxlKG5leHQpCi0gICAgICB7Ci0gICAgICAgICBtZW1fYmxvY2tfbm9kZSogb2xkID0gbmV4dDsKLSAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0OwotICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUob2xkKTsKLSAgICAgIH0KLSAgIH0KLSAgIHZvaWQqIGdldCgpCi0gICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgIG5kbmJvb3N0OjpzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGcobXV0KTsKLSNlbmRpZgotICAgICBpZihuZXh0KQotICAgICAgewotICAgICAgICAgbWVtX2Jsb2NrX25vZGUqIHJlc3VsdCA9IG5leHQ7Ci0gICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dDsKLSAgICAgICAgIC0tY2FjaGVkX2Jsb2NrczsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gOjpvcGVyYXRvciBuZXcoTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFKTsKLSAgIH0KLSAgIHZvaWQgcHV0KHZvaWQqIHApCi0gICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgIG5kbmJvb3N0OjpzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGcobXV0KTsKLSNlbmRpZgotICAgICAgaWYoY2FjaGVkX2Jsb2NrcyA+PSBORE5CT09TVF9SRUdFWF9NQVhfQ0FDSEVfQkxPQ0tTKQotICAgICAgewotICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUocCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBtZW1fYmxvY2tfbm9kZSogb2xkID0gc3RhdGljX2Nhc3Q8bWVtX2Jsb2NrX25vZGUqPihwKTsKLSAgICAgICAgIG9sZC0+bmV4dCA9IG5leHQ7Ci0gICAgICAgICBuZXh0ID0gb2xkOwotICAgICAgICAgKytjYWNoZWRfYmxvY2tzOwotICAgICAgfQotICAgfQotfTsKLQotZXh0ZXJuIG1lbV9ibG9ja19jYWNoZSBibG9ja19jYWNoZTsKLQotfQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRjZjBhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1ODcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFUQ0hFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX2NhdGVnb3J5LmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8KLS8vIGVycm9yIGNoZWNraW5nIEFQSToKLS8vCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCB2ZXJpZnlfb3B0aW9ucyhuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgZWYsIG1hdGNoX2ZsYWdfdHlwZSBtZik7Ci0vLwotLy8gZnVuY3Rpb24gY2FuX3N0YXJ0OgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBib29sIGNhbl9zdGFydChjaGFyVCBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiAoKGMgPCBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpID8gdHJ1ZSA6ICgoYyA+PSBzdGF0aWNfY2FzdDxjaGFyVD4oMSA8PCBDSEFSX0JJVCkpID8gdHJ1ZSA6IG1hcFtjXSAmIG1hc2spKTsKLX0KLWlubGluZSBib29sIGNhbl9zdGFydChjaGFyIGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuIG1hcFsodW5zaWduZWQgY2hhciljXSAmIG1hc2s7Ci19Ci1pbmxpbmUgYm9vbCBjYW5fc3RhcnQoc2lnbmVkIGNoYXIgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gbWFwWyh1bnNpZ25lZCBjaGFyKWNdICYgbWFzazsKLX0KLWlubGluZSBib29sIGNhbl9zdGFydCh1bnNpZ25lZCBjaGFyIGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuIG1hcFtjXSAmIG1hc2s7Ci19Ci1pbmxpbmUgYm9vbCBjYW5fc3RhcnQodW5zaWduZWQgc2hvcnQgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gKChjID49ICgxIDw8IENIQVJfQklUKSkgPyB0cnVlIDogbWFwW2NdICYgbWFzayk7Ci19Ci0jaWYgIWRlZmluZWQoX19ocHV4KSAmJiAhZGVmaW5lZChfX1dJTlNDV19fKS8vIFdDSEFSX01JTiBub3QgdXNhYmxlIGluIHBwLWRpcmVjdGl2ZXMuCi0jaWYgZGVmaW5lZChXQ0hBUl9NSU4pICYmIChXQ0hBUl9NSU4gPT0gMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi1pbmxpbmUgYm9vbCBjYW5fc3RhcnQod2NoYXJfdCBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiAoKGMgPj0gc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMXUgPDwgQ0hBUl9CSVQpKSA/IHRydWUgOiBtYXBbY10gJiBtYXNrKTsKLX0KLSNlbmRpZgotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi1pbmxpbmUgYm9vbCBjYW5fc3RhcnQodW5zaWduZWQgaW50IGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuICgoKGMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigxdSA8PCBDSEFSX0JJVCkpID8gdHJ1ZSA6IG1hcFtjXSAmIG1hc2spKTsKLX0KLSNlbmRpZgotCi0KLS8vCi0vLyBVbmZvcnR1bmF0ZWx5IFJvZ3VlIFdhdmVzIHN0YW5kYXJkIGxpYnJhcnkgYXBwZWFycyB0byBoYXZlIGEgYnVnCi0vLyBpbiBzdGQ6OmJhc2ljX3N0cmluZzo6Y29tcGFyZSB0aGF0IHJlc3VsdHMgaW4gZXJvbmVvdXMgYW5zd2VycwotLy8gaW4gc29tZSBjYXNlcyAodGVzdGVkIHdpdGggQm9ybGFuZCBDKysgNS4xLCBSb2d1ZSBXYXZlIGxpYiB2ZXJzaW9uCi0vLyAweDAyMDEwMSkgdGhlIHRlc3QgY2FzZSB3YXM6Ci0vLyB7MzkxMzUsMH0gPCB7MHhmZiwwfQotLy8gd2hpY2ggc3VjY2VlZHMgd2hlbiBpdCBzaG91bGQgbm90LgotLy8KLSNpZm5kZWYgX1JXU1REX1ZFUgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLXRlbXBsYXRlIDxjbGFzcyBDLCBjbGFzcyBULCBjbGFzcyBBPgotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDLFQsQT4mIHMsIGNvbnN0IEMqIHApCi17IAotICAgaWYoMCA9PSAqcCkKLSAgIHsKLSAgICAgIGlmKHMuZW1wdHkoKSB8fCAoKHMuc2l6ZSgpID09IDEpICYmIChzWzBdID09IDApKSkKLSAgICAgICAgIHJldHVybiAwOwotICAgfQotICAgcmV0dXJuIHMuY29tcGFyZShwKTsgCi19Ci0jZW5kaWYKLSNlbHNlCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotdGVtcGxhdGUgPGNsYXNzIEMsIGNsYXNzIFQsIGNsYXNzIEE+Ci1pbmxpbmUgaW50IHN0cmluZ19jb21wYXJlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPEMsVCxBPiYgcywgY29uc3QgQyogcCkKLXsgCi0gICBpZigwID09ICpwKQotICAgewotICAgICAgaWYocy5lbXB0eSgpIHx8ICgocy5zaXplKCkgPT0gMSkgJiYgKHNbMF0gPT0gMCkpKQotICAgICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gICByZXR1cm4gcy5jb21wYXJlKHApOyAKLX0KLSNlbmRpZgotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBzdGQ6OnN0cmluZyYgcywgY29uc3QgY2hhciogcCkKLXsgcmV0dXJuIHN0ZDo6c3RyY21wKHMuY19zdHIoKSwgcCk7IH0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBzdGQ6OndzdHJpbmcmIHMsIGNvbnN0IHdjaGFyX3QqIHApCi17IHJldHVybiBzdGQ6Ondjc2NtcChzLmNfc3RyKCksIHApOyB9Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFNlcSwgY2xhc3MgQz4KLWlubGluZSBpbnQgc3RyaW5nX2NvbXBhcmUoY29uc3QgU2VxJiBzLCBjb25zdCBDKiBwKQotewotICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICB3aGlsZSgoaSA8IHMuc2l6ZSgpKSAmJiAocFtpXSA9PSBzW2ldKSkKLSAgIHsKLSAgICAgICsraTsKLSAgIH0KLSAgIHJldHVybiAoaSA9PSBzLnNpemUoKSkgPyAtcFtpXSA6IHNbaV0gLSBwW2ldOwotfQotIyBkZWZpbmUgU1RSX0NPTVAocyxwKSBzdHJpbmdfY29tcGFyZShzLHApCi0KLXRlbXBsYXRlPGNsYXNzIGNoYXJUPgotaW5saW5lIGNvbnN0IGNoYXJUKiByZV9za2lwX3Bhc3RfbnVsbChjb25zdCBjaGFyVCogcCkKLXsKLSAgd2hpbGUgKCpwICE9IHN0YXRpY19jYXN0PGNoYXJUPigwKSkgKytwOwotICByZXR1cm4gKytwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgaXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHNfdHlwZSwgY2xhc3MgY2hhcl9jbGFzc1Q+Ci1pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIHJlX2lzX3NldF9tZW1iZXIoaXRlcmF0b3IgbmV4dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZV9zZXRfbG9uZzxjaGFyX2NsYXNzVD4qIHNldF8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleF9kYXRhPGNoYXJULCB0cmFpdHNfdHlwZT4mIGUsIGJvb2wgaWNhc2UpCi17ICAgCi0gICBjb25zdCBjaGFyVCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhclQqPihzZXRfKzEpOwotICAgaXRlcmF0b3IgcHRyOwotICAgdW5zaWduZWQgaW50IGk7Ci0gICAvL2Jvb2wgaWNhc2UgPSBlLm1fZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmljYXNlOwotCi0gICBpZihuZXh0ID09IGxhc3QpIHJldHVybiBuZXh0OwotCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpzdHJpbmdfdHlwZSB0cmFpdHNfc3RyaW5nX3R5cGU7Ci0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHNfdHlwZT4mIHRyYWl0c19pbnN0ID0gKihlLm1fcHRyYWl0cyk7Ci0gICAKLSAgIC8vIGR3YSA5LzEzLzAwIHN1cHByZXNzIGluY29ycmVjdCBNU1ZDIHdhcm5pbmcgLSBpdCBjbGFpbXMgdGhpcyBpcyBuZXZlcgotICAgLy8gcmVmZXJlbmNlZAotICAgKHZvaWQpdHJhaXRzX2luc3Q7Ci0KLSAgIC8vIHRyeSBhbmQgbWF0Y2ggYSBzaW5nbGUgY2hhcmFjdGVyLCBjb3VsZCBiZSBhIG11bHRpLWNoYXJhY3RlcgotICAgLy8gY29sbGF0aW5nIGVsZW1lbnQuLi4KLSAgIGZvcihpID0gMDsgaSA8IHNldF8tPmNzaW5nbGVzOyArK2kpCi0gICB7Ci0gICAgICBwdHIgPSBuZXh0OwotICAgICAgaWYoKnAgPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKQotICAgICAgewotICAgICAgICAgLy8gdHJlYXQgbnVsbCBzdHJpbmcgYXMgc3BlY2lhbCBjYXNlOgotICAgICAgICAgaWYodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwdHIsIGljYXNlKSAhPSAqcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlKCpwID09IHN0YXRpY19jYXN0PGNoYXJUPigwKSkrK3A7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiAocHRyID09IG5leHQpID8gKytuZXh0IDogcHRyOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgd2hpbGUoKnAgJiYgKHB0ciAhPSBsYXN0KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcHRyLCBpY2FzZSkgIT0gKnApCi0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgICsrcHRyOwotICAgICAgICAgfQotCi0gICAgICAgICBpZigqcCA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpIC8vIGlmIG51bGwgd2UndmUgbWF0Y2hlZAotICAgICAgICAgICAgcmV0dXJuIHNldF8tPmlzbm90ID8gbmV4dCA6IChwdHIgPT0gbmV4dCkgPyArK25leHQgOiBwdHI7Ci0KLSAgICAgICAgIHAgPSByZV9za2lwX3Bhc3RfbnVsbChwKTsgICAgIC8vIHNraXAgbnVsbAotICAgICAgfQotICAgfQotCi0gICBjaGFyVCBjb2wgPSB0cmFpdHNfaW5zdC50cmFuc2xhdGUoKm5leHQsIGljYXNlKTsKLQotCi0gICBpZihzZXRfLT5jcmFuZ2VzIHx8IHNldF8tPmNlcXVpdmFsZW50cykKLSAgIHsKLSAgICAgIHRyYWl0c19zdHJpbmdfdHlwZSBzMTsKLSAgICAgIC8vCi0gICAgICAvLyB0cnkgYW5kIG1hdGNoIGEgcmFuZ2UsIE5CIG9ubHkgYSBzaW5nbGUgY2hhcmFjdGVyIGNhbiBtYXRjaAotICAgICAgaWYoc2V0Xy0+Y3JhbmdlcykKLSAgICAgIHsKLSAgICAgICAgIGlmKChlLm1fZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmNvbGxhdGUpID09IDApCi0gICAgICAgICAgICBzMS5hc3NpZ24oMSwgY29sKTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXJUIGFbMl0gPSB7IGNvbCwgY2hhclQoMCksIH07Ci0gICAgICAgICAgICBzMSA9IHRyYWl0c19pbnN0LnRyYW5zZm9ybShhLCBhICsgMSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBmb3IoaSA9IDA7IGkgPCBzZXRfLT5jcmFuZ2VzOyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihTVFJfQ09NUChzMSwgcCkgPj0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGRveyArK3A7IH13aGlsZSgqcCk7Ci0gICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAgICBpZihTVFJfQ09NUChzMSwgcCkgPD0gMCkKLSAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiArK25leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBza2lwIGZpcnN0IHN0cmluZwotICAgICAgICAgICAgICAgZG97ICsrcDsgfXdoaWxlKCpwKTsKLSAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIHNraXAgc2Vjb25kIHN0cmluZwotICAgICAgICAgICAgZG97ICsrcDsgfXdoaWxlKCpwKTsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vCi0gICAgICAvLyB0cnkgYW5kIG1hdGNoIGFuIGVxdWl2YWxlbmNlIGNsYXNzLCBOQiBvbmx5IGEgc2luZ2xlIGNoYXJhY3RlciBjYW4gbWF0Y2gKLSAgICAgIGlmKHNldF8tPmNlcXVpdmFsZW50cykKLSAgICAgIHsKLSAgICAgICAgIGNoYXJUIGFbMl0gPSB7IGNvbCwgY2hhclQoMCksIH07Ci0gICAgICAgICBzMSA9IHRyYWl0c19pbnN0LnRyYW5zZm9ybV9wcmltYXJ5KGEsIGEgKzEpOwotICAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2V0Xy0+Y2VxdWl2YWxlbnRzOyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihTVFJfQ09NUChzMSwgcCkgPT0gMCkKLSAgICAgICAgICAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiArK25leHQ7Ci0gICAgICAgICAgICAvLyBza2lwIHN0cmluZwotICAgICAgICAgICAgZG97ICsrcDsgfXdoaWxlKCpwKTsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLSAgIGlmKHRyYWl0c19pbnN0LmlzY3R5cGUoY29sLCBzZXRfLT5jY2xhc3NlcykgPT0gdHJ1ZSkKLSAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiArK25leHQ7Ci0gICBpZigoc2V0Xy0+Y25jbGFzc2VzICE9IDApICYmICh0cmFpdHNfaW5zdC5pc2N0eXBlKGNvbCwgc2V0Xy0+Y25jbGFzc2VzKSA9PSBmYWxzZSkpCi0gICAgICByZXR1cm4gc2V0Xy0+aXNub3QgPyBuZXh0IDogKytuZXh0OwotICAgcmV0dXJuIHNldF8tPmlzbm90ID8gKytuZXh0IDogbmV4dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLWNsYXNzIHJlcGVhdGVyX2NvdW50Ci17Ci0gICByZXBlYXRlcl9jb3VudCoqIHN0YWNrOwotICAgcmVwZWF0ZXJfY291bnQqIG5leHQ7Ci0gICBpbnQgc3RhdGVfaWQ7Ci0gICBzdGQ6OnNpemVfdCBjb3VudDsgICAgICAgIC8vIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBzbyBmYXIKLSAgIEJpZGlJdGVyYXRvciBzdGFydF9wb3M7ICAgLy8gd2hlcmUgdGhlIGxhc3QgcmVwZWF0IHN0YXJ0ZWQKLXB1YmxpYzoKLSAgIHJlcGVhdGVyX2NvdW50KHJlcGVhdGVyX2NvdW50KiogcykKLSAgIHsKLSAgICAgIHN0YWNrID0gczsKLSAgICAgIG5leHQgPSAwOwotICAgICAgc3RhdGVfaWQgPSAtMTsKLSAgICAgIGNvdW50ID0gMDsKLSAgIH0KLSAgIHJlcGVhdGVyX2NvdW50KGludCBpLCByZXBlYXRlcl9jb3VudCoqIHMsIEJpZGlJdGVyYXRvciBzdGFydCkKLSAgICAgIDogc3RhcnRfcG9zKHN0YXJ0KQotICAgewotICAgICAgc3RhdGVfaWQgPSBpOwotICAgICAgc3RhY2sgPSBzOwotICAgICAgbmV4dCA9ICpzdGFjazsKLSAgICAgICpzdGFjayA9IHRoaXM7Ci0gICAgICBpZihzdGF0ZV9pZCA+IG5leHQtPnN0YXRlX2lkKQotICAgICAgICAgY291bnQgPSAwOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmVwZWF0ZXJfY291bnQqIHAgPSBuZXh0OwotICAgICAgICAgd2hpbGUocCAmJiAocC0+c3RhdGVfaWQgIT0gc3RhdGVfaWQpKQotICAgICAgICAgICAgcCA9IHAtPm5leHQ7Ci0gICAgICAgICBpZihwKQotICAgICAgICAgewotICAgICAgICAgICAgY291bnQgPSBwLT5jb3VudDsKLSAgICAgICAgICAgIHN0YXJ0X3BvcyA9IHAtPnN0YXJ0X3BvczsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvdW50ID0gMDsKLSAgICAgIH0KLSAgIH0KLSAgIH5yZXBlYXRlcl9jb3VudCgpCi0gICB7Ci0gICAgICBpZihuZXh0KQotICAgICAgICAgKnN0YWNrID0gbmV4dDsKLSAgIH0KLSAgIHN0ZDo6c2l6ZV90IGdldF9jb3VudCgpIHsgcmV0dXJuIGNvdW50OyB9Ci0gICBpbnQgZ2V0X2lkKCkgeyByZXR1cm4gc3RhdGVfaWQ7IH0KLSAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKysoKSB7IHJldHVybiArK2NvdW50OyB9Ci0gICBib29sIGNoZWNrX251bGxfcmVwZWF0KGNvbnN0IEJpZGlJdGVyYXRvciYgcG9zLCBzdGQ6OnNpemVfdCBtYXgpCi0gICB7Ci0gICAgICAvLyB0aGlzIGlzIGNhbGxlZCB3aGVuIHdlIGFyZSBhYm91dCB0byBzdGFydCBhIG5ldyByZXBlYXQsCi0gICAgICAvLyBpZiB0aGUgbGFzdCBvbmUgd2FzIE5VTEwgbW92ZSBvdXIgY291bnQgdG8gbWF4LAotICAgICAgLy8gb3RoZXJ3aXNlIHNhdmUgdGhlIGN1cnJlbnQgcG9zaXRpb24uCi0gICAgICBib29sIHJlc3VsdCA9IChjb3VudCA9PSAwKSA/IGZhbHNlIDogKHBvcyA9PSBzdGFydF9wb3MpOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICAgY291bnQgPSBtYXg7Ci0gICAgICBlbHNlCi0gICAgICAgICBzdGFydF9wb3MgPSBwb3M7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotfTsKLQotc3RydWN0IHNhdmVkX3N0YXRlOwotCi1lbnVtIHNhdmVkX3N0YXRlX3R5cGUKLXsKLSAgIHNhdmVkX3R5cGVfZW5kID0gMCwKLSAgIHNhdmVkX3R5cGVfcGFyZW4gPSAxLAotICAgc2F2ZWRfdHlwZV9yZWN1cnNlID0gMiwKLSAgIHNhdmVkX3R5cGVfYXNzZXJ0aW9uID0gMywKLSAgIHNhdmVkX3N0YXRlX2FsdCA9IDQsCi0gICBzYXZlZF9zdGF0ZV9yZXBlYXRlcl9jb3VudCA9IDUsCi0gICBzYXZlZF9zdGF0ZV9leHRyYV9ibG9jayA9IDYsCi0gICBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCA9IDcsCi0gICBzYXZlZF9zdGF0ZV9yZXBfc2xvd19kb3QgPSA4LAotICAgc2F2ZWRfc3RhdGVfcmVwX2Zhc3RfZG90ID0gOSwKLSAgIHNhdmVkX3N0YXRlX3JlcF9jaGFyID0gMTAsCi0gICBzYXZlZF9zdGF0ZV9yZXBfc2hvcnRfc2V0ID0gMTEsCi0gICBzYXZlZF9zdGF0ZV9yZXBfbG9uZ19zZXQgPSAxMiwKLSAgIHNhdmVkX3N0YXRlX25vbl9ncmVlZHlfbG9uZ19yZXBlYXQgPSAxMywgCi0gICBzYXZlZF9zdGF0ZV9jb3VudCA9IDE0Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0cz4KLXN0cnVjdCByZWN1cnNpb25faW5mbwotewotICAgdHlwZWRlZiB0eXBlbmFtZSBSZXN1bHRzOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHZhbHVlX3R5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgaW50IGlkeDsKLSAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcmV0dXJuX2FkZHJlc3M7Ci0gICBSZXN1bHRzIHJlc3VsdHM7Ci0gICByZXBlYXRlcl9jb3VudDxpdGVyYXRvcj4qIHJlcGVhdGVyX3N0YWNrOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEpCi0jICBpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotIyAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jICBlbmRpZgotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotY2xhc3MgcGVybF9tYXRjaGVyCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+IHNlbGZfdHlwZTsKLSAgIHR5cGVkZWYgYm9vbCAoc2VsZl90eXBlOjoqbWF0Y2hlcl9wcm9jX3R5cGUpKHZvaWQpOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0cmFpdHNfc2l6ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBpc19ieXRlPGNoYXJfdHlwZT46OndpZHRoX3R5cGUgd2lkdGhfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+IHJlc3VsdHNfdHlwZTsKLQotICAgcGVybF9tYXRjaGVyKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGVuZCwgCi0gICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgd2hhdCwgCi0gICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz4mIGUsCi0gICAgICBtYXRjaF9mbGFnX3R5cGUgZiwKLSAgICAgIEJpZGlJdGVyYXRvciBsX2Jhc2UpCi0gICAgICA6ICBtX3Jlc3VsdCh3aGF0KSwgYmFzZShmaXJzdCksIGxhc3QoZW5kKSwgCi0gICAgICAgICBwb3NpdGlvbihmaXJzdCksIGJhY2tzdG9wKGxfYmFzZSksIHJlKGUpLCB0cmFpdHNfaW5zdChlLmdldF90cmFpdHMoKSksIAotICAgICAgICAgbV9pbmRlcGVuZGVudChmYWxzZSksIG5leHRfY291bnQoJnJlcF9vYmopLCByZXBfb2JqKCZuZXh0X2NvdW50KQotICAgewotICAgICAgY29uc3RydWN0X2luaXQoZSwgZik7Ci0gICB9Ci0KLSAgIGJvb2wgbWF0Y2goKTsKLSAgIGJvb2wgZmluZCgpOwotCi0gICB2b2lkIHNldGYobWF0Y2hfZmxhZ190eXBlIGYpCi0gICB7IG1fbWF0Y2hfZmxhZ3MgfD0gZjsgfQotICAgdm9pZCB1bnNldGYobWF0Y2hfZmxhZ190eXBlIGYpCi0gICB7IG1fbWF0Y2hfZmxhZ3MgJj0gfmY7IH0KLQotcHJpdmF0ZToKLSAgIHZvaWQgY29uc3RydWN0X2luaXQoY29uc3QgYmFzaWNfcmVnZXg8Y2hhcl90eXBlLCB0cmFpdHM+JiBlLCBtYXRjaF9mbGFnX3R5cGUgZik7Ci0KLSAgIGJvb2wgZmluZF9pbXAoKTsKLSAgIGJvb2wgbWF0Y2hfaW1wKCk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0gICB0eXBlZGVmIGJvb2wgKHBlcmxfbWF0Y2hlcjo6KnByb3RlY3RlZF9wcm9jX3R5cGUpKCk7Ci0gICBib29sIHByb3RlY3RlZF9jYWxsKHByb3RlY3RlZF9wcm9jX3R5cGUpOwotI2VuZGlmCi0gICB2b2lkIGVzdGltYXRlX21heF9zdGF0ZV9jb3VudChzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKik7Ci0gICB2b2lkIGVzdGltYXRlX21heF9zdGF0ZV9jb3VudCh2b2lkKik7Ci0gICBib29sIG1hdGNoX3ByZWZpeCgpOwotICAgYm9vbCBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0KLSAgIC8vIG1hdGNoIHByb2NzLCBzdG9yZWQgaW4gc19tYXRjaF92dGFibGU6Ci0gICBib29sIG1hdGNoX3N0YXJ0bWFyaygpOwotICAgYm9vbCBtYXRjaF9lbmRtYXJrKCk7Ci0gICBib29sIG1hdGNoX2xpdGVyYWwoKTsKLSAgIGJvb2wgbWF0Y2hfc3RhcnRfbGluZSgpOwotICAgYm9vbCBtYXRjaF9lbmRfbGluZSgpOwotICAgYm9vbCBtYXRjaF93aWxkKCk7Ci0gICBib29sIG1hdGNoX21hdGNoKCk7Ci0gICBib29sIG1hdGNoX3dvcmRfYm91bmRhcnkoKTsKLSAgIGJvb2wgbWF0Y2hfd2l0aGluX3dvcmQoKTsKLSAgIGJvb2wgbWF0Y2hfd29yZF9zdGFydCgpOwotICAgYm9vbCBtYXRjaF93b3JkX2VuZCgpOwotICAgYm9vbCBtYXRjaF9idWZmZXJfc3RhcnQoKTsKLSAgIGJvb2wgbWF0Y2hfYnVmZmVyX2VuZCgpOwotICAgYm9vbCBtYXRjaF9iYWNrcmVmKCk7Ci0gICBib29sIG1hdGNoX2xvbmdfc2V0KCk7Ci0gICBib29sIG1hdGNoX3NldCgpOwotICAgYm9vbCBtYXRjaF9qdW1wKCk7Ci0gICBib29sIG1hdGNoX2FsdCgpOwotICAgYm9vbCBtYXRjaF9yZXAoKTsKLSAgIGJvb2wgbWF0Y2hfY29tYmluaW5nKCk7Ci0gICBib29sIG1hdGNoX3NvZnRfYnVmZmVyX2VuZCgpOwotICAgYm9vbCBtYXRjaF9yZXN0YXJ0X2NvbnRpbnVlKCk7Ci0gICBib29sIG1hdGNoX2xvbmdfc2V0X3JlcGVhdCgpOwotICAgYm9vbCBtYXRjaF9zZXRfcmVwZWF0KCk7Ci0gICBib29sIG1hdGNoX2NoYXJfcmVwZWF0KCk7Ci0gICBib29sIG1hdGNoX2RvdF9yZXBlYXRfZmFzdCgpOwotICAgYm9vbCBtYXRjaF9kb3RfcmVwZWF0X3Nsb3coKTsKLSAgIGJvb2wgbWF0Y2hfZG90X3JlcGVhdF9kaXNwYXRjaCgpCi0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSA/IG1hdGNoX2RvdF9yZXBlYXRfZmFzdCgpIDogbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICB9Ci0gICBib29sIG1hdGNoX2JhY2tzdGVwKCk7Ci0gICBib29sIG1hdGNoX2Fzc2VydF9iYWNrcmVmKCk7Ci0gICBib29sIG1hdGNoX3RvZ2dsZV9jYXNlKCk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0gICBib29sIGJhY2t0cmFja190aWxsX21hdGNoKHN0ZDo6c2l6ZV90IGNvdW50KTsKLSNlbmRpZgotICAgYm9vbCBtYXRjaF9yZWN1cnNpb24oKTsKLQotICAgLy8gZmluZCBwcm9jcyBzdG9yZWQgaW4gc19maW5kX3Z0YWJsZToKLSAgIGJvb2wgZmluZF9yZXN0YXJ0X2FueSgpOwotICAgYm9vbCBmaW5kX3Jlc3RhcnRfd29yZCgpOwotICAgYm9vbCBmaW5kX3Jlc3RhcnRfbGluZSgpOwotICAgYm9vbCBmaW5kX3Jlc3RhcnRfYnVmKCk7Ci0gICBib29sIGZpbmRfcmVzdGFydF9saXQoKTsKLQotcHJpdmF0ZToKLSAgIC8vIGZpbmFsIHJlc3VsdCBzdHJ1Y3R1cmUgdG8gYmUgZmlsbGVkIGluOgotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG1fcmVzdWx0OwotICAgLy8gdGVtcG9yYXJ5IHJlc3VsdCBmb3IgUE9TSVggbWF0Y2hlczoKLSAgIHNjb3BlZF9wdHI8bWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4gPiBtX3RlbXBfbWF0Y2g7Ci0gICAvLyBwb2ludGVyIHRvIGFjdHVhbCByZXN1bHQgc3RydWN0dXJlIHRvIGZpbGwgaW46Ci0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiogbV9wcmVzdWx0OwotICAgLy8gc3RhcnQgb2Ygc2VxdWVuY2UgYmVpbmcgc2VhcmNoZWQ6Ci0gICBCaWRpSXRlcmF0b3IgYmFzZTsKLSAgIC8vIGVuZCBvZiBzZXF1ZW5jZSBiZWluZyBzZWFyY2hlZDoKLSAgIEJpZGlJdGVyYXRvciBsYXN0OyAKLSAgIC8vIGN1cnJlbnQgY2hhcmFjdGVyIGJlaW5nIGV4YW1pbmVkOgotICAgQmlkaUl0ZXJhdG9yIHBvc2l0aW9uOwotICAgLy8gd2hlcmUgdG8gcmVzdGFydCBuZXh0IHNlYXJjaCBhZnRlciBmYWlsZWQgbWF0Y2ggYXR0ZW1wdDoKLSAgIEJpZGlJdGVyYXRvciByZXN0YXJ0OwotICAgLy8gd2hlcmUgdGhlIGN1cnJlbnQgc2VhcmNoIHN0YXJ0ZWQgZnJvbSwgYWN0cyBhcyBiYXNlIGZvciAkYCBkdXJpbmcgZ3JlcDoKLSAgIEJpZGlJdGVyYXRvciBzZWFyY2hfYmFzZTsKLSAgIC8vIGhvdyBmYXIgd2UgY2FuIGdvIGJhY2sgd2hlbiBtYXRjaGluZyBsb29rYmVoaW5kOgotICAgQmlkaUl0ZXJhdG9yIGJhY2tzdG9wOwotICAgLy8gdGhlIGV4cHJlc3Npb24gYmVpbmcgZXhhbWluZWQ6Ci0gICBjb25zdCBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz4mIHJlOwotICAgLy8gdGhlIGV4cHJlc3Npb24ncyB0cmFpdHMgY2xhc3M6Ci0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+JiB0cmFpdHNfaW5zdDsKLSAgIC8vIHRoZSBuZXh0IHN0YXRlIGluIHRoZSBtYWNoaW5lIGJlaW5nIG1hdGNoZWQ6Ci0gICBjb25zdCByZV9zeW50YXhfYmFzZSogcHN0YXRlOwotICAgLy8gbWF0Y2hpbmcgZmxhZ3MgaW4gdXNlOgotICAgbWF0Y2hfZmxhZ190eXBlIG1fbWF0Y2hfZmxhZ3M7Ci0gICAvLyBob3cgbWFueSBzdGF0ZXMgd2UgaGF2ZSBleGFtaW5lZCBzbyBmYXI6Ci0gICBzdGQ6OnB0cmRpZmZfdCBzdGF0ZV9jb3VudDsKLSAgIC8vIG1heCBudW1iZXIgb2Ygc3RhdGVzIHRvIGV4YW1pbmUgYmVmb3JlIGdpdmluZyB1cDoKLSAgIHN0ZDo6cHRyZGlmZl90IG1heF9zdGF0ZV9jb3VudDsKLSAgIC8vIHdoZXRoZXIgd2Ugc2hvdWxkIGlnbm9yZSBjYXNlIG9yIG5vdDoKLSAgIGJvb2wgaWNhc2U7Ci0gICAvLyBzZXQgdG8gdHJ1ZSB3aGVuIChwb3NpdGlvbiA9PSBsYXN0KSwgaW5kaWNhdGVzIHRoYXQgd2UgbWF5IGhhdmUgYSBwYXJ0aWFsIG1hdGNoOgotICAgYm9vbCBtX2hhc19wYXJ0aWFsX21hdGNoOwotICAgLy8gc2V0IHRvIHRydWUgd2hlbmV2ZXIgd2UgZ2V0IGEgbWF0Y2g6Ci0gICBib29sIG1faGFzX2ZvdW5kX21hdGNoOwotICAgLy8gc2V0IHRvIHRydWUgd2hlbmV2ZXIgd2UncmUgaW5zaWRlIGFuIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uOgotICAgYm9vbCBtX2luZGVwZW5kZW50OwotICAgLy8gdGhlIGN1cnJlbnQgcmVwZWF0IGJlaW5nIGV4YW1pbmVkOgotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiogbmV4dF9jb3VudDsKLSAgIC8vIHRoZSBmaXJzdCByZXBlYXQgYmVpbmcgZXhhbWluZWQgKHRvcCBvZiBsaW5rZWQgbGlzdCk6Ci0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+IHJlcF9vYmo7Ci0gICAvLyB0aGUgbWFzayB0byBwYXNzIHdoZW4gbWF0Y2hpbmcgd29yZCBib3VuZGFyaWVzOgotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV93b3JkX21hc2s7Ci0gICAvLyB0aGUgYml0bWFzayB0byB1c2Ugd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgbWF0Y2hfYW55IG1hdGNoZXMgYSBuZXdsaW5lIG9yIG5vdDoKLSAgIHVuc2lnbmVkIGNoYXIgbWF0Y2hfYW55X21hc2s7Ci0gICAvLyByZWN1cnNpb24gaW5mb3JtYXRpb246Ci0gICBzdGQ6OnZlY3RvcjxyZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+ID4gcmVjdXJzaW9uX3N0YWNrOwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotICAgLy8KLSAgIC8vIGFkZGl0aW9uYWwgbWVtYmVycyBmb3Igbm9uLXJlY3Vyc2l2ZSB2ZXJzaW9uOgotICAgLy8KLSAgIHR5cGVkZWYgYm9vbCAoc2VsZl90eXBlOjoqdW53aW5kX3Byb2NfdHlwZSkoYm9vbCk7Ci0KLSAgIHZvaWQgZXh0ZW5kX3N0YWNrKCk7Ci0gICBib29sIHVud2luZChib29sKTsKLSAgIGJvb2wgdW53aW5kX2VuZChib29sKTsKLSAgIGJvb2wgdW53aW5kX3BhcmVuKGJvb2wpOwotICAgYm9vbCB1bndpbmRfcmVjdXJzaW9uX3N0b3BwZXIoYm9vbCk7Ci0gICBib29sIHVud2luZF9hc3NlcnRpb24oYm9vbCk7Ci0gICBib29sIHVud2luZF9hbHQoYm9vbCk7Ci0gICBib29sIHVud2luZF9yZXBlYXRlcl9jb3VudGVyKGJvb2wpOwotICAgYm9vbCB1bndpbmRfZXh0cmFfYmxvY2soYm9vbCk7Ci0gICBib29sIHVud2luZF9ncmVlZHlfc2luZ2xlX3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX3Nsb3dfZG90X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX2Zhc3RfZG90X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX2NoYXJfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfc2hvcnRfc2V0X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX2xvbmdfc2V0X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX25vbl9ncmVlZHlfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfcmVjdXJzaW9uKGJvb2wpOwotICAgYm9vbCB1bndpbmRfcmVjdXJzaW9uX3BvcChib29sKTsKLSAgIHZvaWQgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICB2b2lkIHB1c2hfbWF0Y2hlZF9wYXJlbihpbnQgaW5kZXgsIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBzdWIpOwotICAgdm9pZCBwdXNoX3JlY3Vyc2lvbl9zdG9wcGVyKCk7Ci0gICB2b2lkIHB1c2hfYXNzZXJ0aW9uKGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcywgYm9vbCBwb3NpdGl2ZSk7Ci0gICB2b2lkIHB1c2hfYWx0KGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcyk7Ci0gICB2b2lkIHB1c2hfcmVwZWF0ZXJfY291bnQoaW50IGksIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4qKiBzKTsKLSAgIHZvaWQgcHVzaF9zaW5nbGVfcmVwZWF0KHN0ZDo6c2l6ZV90IGMsIGNvbnN0IHJlX3JlcGVhdCogciwgQmlkaUl0ZXJhdG9yIGxhc3RfcG9zaXRpb24sIGludCBzdGF0ZV9pZCk7Ci0gICB2b2lkIHB1c2hfbm9uX2dyZWVkeV9yZXBlYXQoY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzKTsKLSAgIHZvaWQgcHVzaF9yZWN1cnNpb24oaW50IGlkeCwgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHAsIHJlc3VsdHNfdHlwZSogcHJlc3VsdHMpOwotICAgdm9pZCBwdXNoX3JlY3Vyc2lvbl9wb3AoKTsKLQotICAgLy8gcG9pbnRlciB0byBiYXNlIG9mIHN0YWNrOgotICAgc2F2ZWRfc3RhdGUqIG1fc3RhY2tfYmFzZTsKLSAgIC8vIHBvaW50ZXIgdG8gY3VycmVudCBzdGFjayBwb3NpdGlvbjoKLSAgIHNhdmVkX3N0YXRlKiBtX2JhY2t1cF9zdGF0ZTsKLSAgIC8vIGRldGVybWluZXMgd2hhdCB2YWx1ZSB0byByZXR1cm4gd2hlbiB1bndpbmRpbmcgZnJvbSByZWN1cnNpb24sCi0gICAvLyBhbGxvd3MgZm9yIG1peGVkIHJlY3Vyc2l2ZS9ub24tcmVjdXJzaXZlIGFsZ29yaXRobToKLSAgIGJvb2wgbV9yZWN1cnNpdmVfcmVzdWx0OwotICAgLy8gaG93IG1hbnkgbWVtb3J5IGJsb2NrcyBoYXZlIHdlIHVzZWQgdXA/OgotICAgdW5zaWduZWQgdXNlZF9ibG9ja19jb3VudDsKLSNlbmRpZgotCi0gICAvLyB0aGVzZSBvcGVyYXRpb25zIGFyZW4ndCBhbGxvd2VkLCBzbyBhcmUgZGVjbGFyZWQgcHJpdmF0ZSwKLSAgIC8vIGJvZGllcyBhcmUgcHJvdmlkZWQgdG8ga2VlcCBleHBsaWNpdC1pbnN0YW50aWF0aW9uIHJlcXVlc3RzIGhhcHB5OgotICAgcGVybF9tYXRjaGVyJiBvcGVyYXRvcj0oY29uc3QgcGVybF9tYXRjaGVyJikKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHBlcmxfbWF0Y2hlcihjb25zdCBwZXJsX21hdGNoZXImIHRoYXQpCi0gICAgICA6IG1fcmVzdWx0KHRoYXQubV9yZXN1bHQpLCByZSh0aGF0LnJlKSwgdHJhaXRzX2luc3QodGhhdC50cmFpdHNfaW5zdCksIHJlcF9vYmooMCkge30KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy8KLS8vIGluY2x1ZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHBlcmxfbWF0Y2hlcjoKLS8vCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX3JlY3Vyc2l2ZS5ocHA+Ci0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9ub25fcmVjdXJzaXZlLmhwcD4KLSNlbmRpZgotLy8gdGhpcyBvbmUgaGFzIHRvIGJlIGxhc3Q6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX2NvbW1vbi5ocHA+Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9jb21tb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfY29tbW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ1ZmVkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9jb21tb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTk2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcGVybF9tYXRjaGVyX2NvbW1vbi5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlZmluaXRpb25zIG9mIHBlcmxfbWF0Y2hlciBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIAotICAqICAgICAgICAgICAgICAgIGNvbW1vbiB0byBib3RoIHRoZSByZWN1cnNpdmUgYW5kIG5vbi1yZWN1cnNpdmUgdmVyc2lvbnMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX0NPTU1PTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX0NPTU1PTl9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jICBwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLXZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojpjb25zdHJ1Y3RfaW5pdChjb25zdCBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz4mIGUsIG1hdGNoX2ZsYWdfdHlwZSBmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdGVnb3J5OwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz46OmZsYWdfdHlwZSBleHByZXNzaW9uX2ZsYWdfdHlwZTsKLSAgIAotICAgaWYoZS5lbXB0eSgpKQotICAgewotICAgICAgLy8gcHJlY29uZGl0aW9uIGZhaWx1cmU6IGUgaXMgbm90IGEgdmFsaWQgcmVnZXguCi0gICAgICBzdGQ6OmludmFsaWRfYXJndW1lbnQgZXgoIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCIpOwotICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihleCk7Ci0gICB9Ci0gICBwc3RhdGUgPSAwOwotICAgbV9tYXRjaF9mbGFncyA9IGY7Ci0gICBlc3RpbWF0ZV9tYXhfc3RhdGVfY291bnQoc3RhdGljX2Nhc3Q8Y2F0ZWdvcnkqPigwKSk7Ci0gICBleHByZXNzaW9uX2ZsYWdfdHlwZSByZV9mID0gcmUuZmxhZ3MoKTsKLSAgIGljYXNlID0gcmVfZiAmIHJlZ2V4X2NvbnN0YW50czo6aWNhc2U7Ci0gICBpZighKG1fbWF0Y2hfZmxhZ3MgJiAobWF0Y2hfcGVybHxtYXRjaF9wb3NpeCkpKQotICAgewotICAgICAgaWYoKHJlX2YgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZXxyZWdiYXNlOjpub19wZXJsX2V4KSkgPT0gMCkKLSAgICAgICAgIG1fbWF0Y2hfZmxhZ3MgfD0gbWF0Y2hfcGVybDsKLSAgICAgIGVsc2UgaWYoKHJlX2YgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZXxyZWdiYXNlOjplbWFjc19leCkpID09IChyZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXB8cmVnYmFzZTo6ZW1hY3NfZXgpKQotICAgICAgICAgbV9tYXRjaF9mbGFncyB8PSBtYXRjaF9wZXJsOwotICAgICAgZWxzZSBpZigocmVfZiAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlfHJlZ2Jhc2U6OmxpdGVyYWwpKSA9PSAocmVnYmFzZTo6bGl0ZXJhbCkpCi0gICAgICAgICBtX21hdGNoX2ZsYWdzIHw9IG1hdGNoX3Blcmw7Ci0gICAgICBlbHNlCi0gICAgICAgICBtX21hdGNoX2ZsYWdzIHw9IG1hdGNoX3Bvc2l4OwotICAgfQotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KQotICAgewotICAgICAgbV90ZW1wX21hdGNoLnJlc2V0KG5ldyBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPigpKTsKLSAgICAgIG1fcHJlc3VsdCA9IG1fdGVtcF9tYXRjaC5nZXQoKTsKLSAgIH0KLSAgIGVsc2UKLSAgICAgIG1fcHJlc3VsdCA9ICZtX3Jlc3VsdDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0gICBtX3N0YWNrX2Jhc2UgPSAwOwotICAgbV9iYWNrdXBfc3RhdGUgPSAwOwotI2VuZGlmCi0gICAvLyBmaW5kIHRoZSB2YWx1ZSB0byB1c2UgZm9yIG1hdGNoaW5nIHdvcmQgYm91bmRhcmllczoKLSAgIG1fd29yZF9tYXNrID0gcmUuZ2V0X2RhdGEoKS5tX3dvcmRfbWFzazsgCi0gICAvLyBmaW5kIGJpdG1hc2sgdG8gdXNlIGZvciBtYXRjaGluZyAnLic6Ci0gICBtYXRjaF9hbnlfbWFzayA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KChmICYgbWF0Y2hfbm90X2RvdF9uZXdsaW5lKSA/IHJlX2RldGFpbDo6dGVzdF9ub3RfbmV3bGluZSA6IHJlX2RldGFpbDo6dGVzdF9uZXdsaW5lKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci12b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZXN0aW1hdGVfbWF4X3N0YXRlX2NvdW50KHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcqKQotewotICAgLy8KLSAgIC8vIEhvdyBtYW55IHN0YXRlcyBzaG91bGQgd2UgYWxsb3cgb3VyIG1hY2hpbmUgdG8gdmlzaXQgYmVmb3JlIGdpdmluZyB1cD8KLSAgIC8vIFRoaXMgaXMgYSBoZXVyaXN0aWM6IGl0IHRha2VzIHRoZSBncmVhdGVyIG9mIE8oTl4yKSBhbmQgTyhOU14yKQotICAgLy8gd2hlcmUgTiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIGFuZCBTIGlzIHRoZSBudW1iZXIgb2Ygc3RhdGVzCi0gICAvLyBpbiB0aGUgbWFjaGluZS4gIEl0J3MgdGVtcHRpbmcgdG8gdXAgdGhpcyB0byBPKE5eMlMpIG9yIGV2ZW4gTyhOXjJTXjIpCi0gICAvLyBidXQgdGhlc2UgdGFrZSB1bnJlYXNvbmFibHkgYW1vdW50cyBvZiB0aW1lIHRvIGJhbGUgb3V0IGluIHBhdGhvbG9naWNhbAotICAgLy8gY2FzZXMuCi0gICAvLwotICAgLy8gQ2FsY3VsYXRlIE5TXjIgZmlyc3Q6Ci0gICAvLwotICAgc3RhdGljIGNvbnN0IHN0ZDo6cHRyZGlmZl90IGsgPSAxMDAwMDA7Ci0gICBzdGQ6OnB0cmRpZmZfdCBkaXN0ID0gbmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoYmFzZSwgbGFzdCk7Ci0gICBpZihkaXN0ID09IDApCi0gICAgICBkaXN0ID0gMTsKLSAgIHN0ZDo6cHRyZGlmZl90IHN0YXRlcyA9IHJlLnNpemUoKTsKLSAgIGlmKHN0YXRlcyA9PSAwKQotICAgICAgc3RhdGVzID0gMTsKLSAgIHN0YXRlcyAqPSBzdGF0ZXM7Ci0gICBpZigoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAvIGRpc3QgPCBzdGF0ZXMpCi0gICB7Ci0gICAgICBtYXhfc3RhdGVfY291bnQgPSAoc3RkOjptaW4pKChzdGQ6OnB0cmRpZmZfdClORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQsIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gMik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBzdGF0ZXMgKj0gZGlzdDsKLSAgIGlmKChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gayA8IHN0YXRlcykKLSAgIHsKLSAgICAgIG1heF9zdGF0ZV9jb3VudCA9IChzdGQ6Om1pbikoKHN0ZDo6cHRyZGlmZl90KU5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLSAyKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIHN0YXRlcyArPSBrOwotCi0gICBtYXhfc3RhdGVfY291bnQgPSBzdGF0ZXM7Ci0KLSAgIC8vCi0gICAvLyBOb3cgY2FsY3VsYXRlIE5eMjoKLSAgIC8vCi0gICBzdGF0ZXMgPSBkaXN0OwotICAgaWYoKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLyBkaXN0IDwgc3RhdGVzKQotICAgewotICAgICAgbWF4X3N0YXRlX2NvdW50ID0gKHN0ZDo6bWluKSgoc3RkOjpwdHJkaWZmX3QpTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5ULCAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIDIpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgc3RhdGVzICo9IGRpc3Q7Ci0gICBpZigoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIGsgPCBzdGF0ZXMpCi0gICB7Ci0gICAgICBtYXhfc3RhdGVfY291bnQgPSAoc3RkOjptaW4pKChzdGQ6OnB0cmRpZmZfdClORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQsIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gMik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBzdGF0ZXMgKz0gazsKLSAgIC8vCi0gICAvLyBOXjIgY2FuIGJlIGEgdmVyeSBsYXJnZSBudW1iZXIgaW5kZWVkLCB0byBwcmV2ZW50IHRoaW5ncyBnZXR0aW5nIG91dAotICAgLy8gb2YgY29udHJvbCwgY2FwIHRoZSBtYXggc3RhdGVzOgotICAgLy8KLSAgIGlmKHN0YXRlcyA+IE5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCkKLSAgICAgIHN0YXRlcyA9IE5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVDsKLSAgIC8vCi0gICAvLyBJZiAodGhlIHBvc3NpYmx5IGNhcHBlZCkgTl4yIGlzIGxhcmdlciB0aGFuIG91ciBmaXJzdCBlc3RpbWF0ZSwKLSAgIC8vIHVzZSB0aGlzIGluc3RlYWQ6Ci0gICAvLwotICAgaWYoc3RhdGVzID4gbWF4X3N0YXRlX2NvdW50KQotICAgICAgbWF4X3N0YXRlX2NvdW50ID0gc3RhdGVzOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZXN0aW1hdGVfbWF4X3N0YXRlX2NvdW50KHZvaWQqKQotewotICAgLy8gd2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgc2VxdWVuY2UgaXM6Ci0gICBtYXhfc3RhdGVfY291bnQgPSBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQ7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojpwcm90ZWN0ZWRfY2FsbCgKLSAgIHByb3RlY3RlZF9wcm9jX3R5cGUgcHJvYykKLXsKLSAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y29uY3JldGVfcHJvdGVjdGVkX2NhbGwKLSAgICAgIDxwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz4gPgotICAgICAgb2JqKHRoaXMsIHByb2MpOwotICAgcmV0dXJuIG9iai5leGVjdXRlKCk7Ci0KLX0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2goKQotewotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotICAgcmV0dXJuIHByb3RlY3RlZF9jYWxsKCZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2ltcCk7Ci0jZWxzZQotICAgcmV0dXJuIG1hdGNoX2ltcCgpOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2ltcCgpCi17Ci0gICAvLyBpbml0aWFsaXNlIG91ciBzdGFjayBpZiB3ZSBhcmUgbm9uLXJlY3Vyc2l2ZToKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0gICBzYXZlX3N0YXRlX2luaXQgaW5pdCgmbV9zdGFja19iYXNlLCAmbV9iYWNrdXBfc3RhdGUpOwotICAgdXNlZF9ibG9ja19jb3VudCA9IE5ETkJPT1NUX1JFR0VYX01BWF9CTE9DS1M7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIHRyeXsKLSNlbmRpZgotI2VuZGlmCi0KLSAgIC8vIHJlc2V0IG91ciBzdGF0ZSBtYWNoaW5lOgotICAgcG9zaXRpb24gPSBiYXNlOwotICAgc2VhcmNoX2Jhc2UgPSBiYXNlOwotICAgc3RhdGVfY291bnQgPSAwOwotICAgbV9tYXRjaF9mbGFncyB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX2FsbDsKLSAgIG1fcHJlc3VsdC0+c2V0X3NpemUoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID8gMSA6IHJlLm1hcmtfY291bnQoKSwgc2VhcmNoX2Jhc2UsIGxhc3QpOwotICAgbV9wcmVzdWx0LT5zZXRfYmFzZShiYXNlKTsKLSAgIG1fcHJlc3VsdC0+c2V0X25hbWVkX3N1YnModGhpcy0+cmUuZ2V0X25hbWVkX3N1YnMoKSk7Ci0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpCi0gICAgICBtX3Jlc3VsdCA9ICptX3ByZXN1bHQ7Ci0gICB2ZXJpZnlfb3B0aW9ucyhyZS5mbGFncygpLCBtX21hdGNoX2ZsYWdzKTsKLSAgIGlmKDAgPT0gbWF0Y2hfcHJlZml4KCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICByZXR1cm4gKG1fcmVzdWx0WzBdLnNlY29uZCA9PSBsYXN0KSAmJiAobV9yZXN1bHRbMF0uZmlyc3QgPT0gYmFzZSk7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICB9Ci0gICBjYXRjaCguLi4pCi0gICB7Ci0gICAgICAvLyB1bndpbmQgYWxsIHB1c2hlZCBzdGF0ZXMsIGFwYXJ0IGZyb20gYW55dGhpbmcgZWxzZSB0aGlzCi0gICAgICAvLyBlbnN1cmVzIHRoYXQgYWxsIHRoZSBzdGF0ZXMgYXJlIGNvcnJlY3RseSBkZXN0cnVjdGVkCi0gICAgICAvLyBub3QganVzdCB0aGUgbWVtb3J5IGZyZWVkLgotICAgICAgd2hpbGUodW53aW5kKHRydWUpKXt9Ci0gICAgICB0aHJvdzsKLSAgIH0KLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0gICByZXR1cm4gcHJvdGVjdGVkX2NhbGwoJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9pbXApOwotI2Vsc2UKLSAgIHJldHVybiBmaW5kX2ltcCgpOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfaW1wKCkKLXsKLSAgIHN0YXRpYyBtYXRjaGVyX3Byb2NfdHlwZSBjb25zdCBzX2ZpbmRfdnRhYmxlWzddID0gCi0gICB7Ci0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfYW55LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X3dvcmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9idWYsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9wcmVmaXgsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGl0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2xpdCwKLSAgIH07Ci0KLSAgIC8vIGluaXRpYWxpc2Ugb3VyIHN0YWNrIGlmIHdlIGFyZSBub24tcmVjdXJzaXZlOgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLSAgIHNhdmVfc3RhdGVfaW5pdCBpbml0KCZtX3N0YWNrX2Jhc2UsICZtX2JhY2t1cF9zdGF0ZSk7Ci0gICB1c2VkX2Jsb2NrX2NvdW50ID0gTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUzsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgdHJ5ewotI2VuZGlmCi0jZW5kaWYKLQotICAgc3RhdGVfY291bnQgPSAwOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2luaXQpID09IDApCi0gICB7Ci0gICAgICAvLyByZXNldCBvdXIgc3RhdGUgbWFjaGluZToKLSAgICAgIHNlYXJjaF9iYXNlID0gcG9zaXRpb24gPSBiYXNlOwotICAgICAgcHN0YXRlID0gcmUuZ2V0X2ZpcnN0X3N0YXRlKCk7Ci0gICAgICBtX3ByZXN1bHQtPnNldF9zaXplKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA/IDEgOiByZS5tYXJrX2NvdW50KCksIGJhc2UsIGxhc3QpOwotICAgICAgbV9wcmVzdWx0LT5zZXRfYmFzZShiYXNlKTsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X25hbWVkX3N1YnModGhpcy0+cmUuZ2V0X25hbWVkX3N1YnMoKSk7Ci0gICAgICBtX21hdGNoX2ZsYWdzIHw9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfaW5pdDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIHN0YXJ0IGFnYWluOgotICAgICAgc2VhcmNoX2Jhc2UgPSBwb3NpdGlvbiA9IG1fcmVzdWx0WzBdLnNlY29uZDsKLSAgICAgIC8vIElmIGxhc3QgbWF0Y2ggd2FzIG51bGwgYW5kIG1hdGNoX25vdF9udWxsIHdhcyBub3Qgc2V0IHRoZW4gaW5jcmVtZW50Ci0gICAgICAvLyBvdXIgc3RhcnQgcG9zaXRpb24sIG90aGVyd2lzZSB3ZSBnbyBpbnRvIGFuIGluZmluaXRlIGxvb3A6Ci0gICAgICBpZigoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfbnVsbCkgPT0gMCkgJiYgKG1fcmVzdWx0Lmxlbmd0aCgpID09IDApKQotICAgICAgewotICAgICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgLy8gcmVzZXQgJGAgc3RhcnQ6Ci0gICAgICBtX3ByZXN1bHQtPnNldF9zaXplKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA/IDEgOiByZS5tYXJrX2NvdW50KCksIHNlYXJjaF9iYXNlLCBsYXN0KTsKLSAgICAgIC8vaWYoKGJhc2UgIT0gc2VhcmNoX2Jhc2UpICYmIChiYXNlID09IGJhY2tzdG9wKSkKLSAgICAgIC8vICAgbV9tYXRjaF9mbGFncyB8PSBtYXRjaF9wcmV2X2F2YWlsOwotICAgfQotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KQotICAgewotICAgICAgbV9yZXN1bHQuc2V0X3NpemUocmUubWFya19jb3VudCgpLCBiYXNlLCBsYXN0KTsKLSAgICAgIG1fcmVzdWx0LnNldF9iYXNlKGJhc2UpOwotICAgfQotCi0gICB2ZXJpZnlfb3B0aW9ucyhyZS5mbGFncygpLCBtX21hdGNoX2ZsYWdzKTsKLSAgIC8vIGZpbmQgb3V0IHdoYXQga2luZCBvZiBleHByZXNzaW9uIHdlIGhhdmU6Ci0gICB1bnNpZ25lZCB0eXBlID0gKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9jb250aW51b3VzKSA/IAotICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZWdiYXNlOjpyZXN0YXJ0X2NvbnRpbnVlKSAKLSAgICAgICAgIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZS5nZXRfcmVzdGFydF90eXBlKCkpOwotCi0gICAvLyBjYWxsIHRoZSBhcHByb3ByaWF0ZSBzZWFyY2ggcm91dGluZToKLSAgIG1hdGNoZXJfcHJvY190eXBlIHByb2MgPSBzX2ZpbmRfdnRhYmxlW3R5cGVdOwotICAgcmV0dXJuICh0aGlzLT4qcHJvYykoKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIH0KLSAgIGNhdGNoKC4uLikKLSAgIHsKLSAgICAgIC8vIHVud2luZCBhbGwgcHVzaGVkIHN0YXRlcywgYXBhcnQgZnJvbSBhbnl0aGluZyBlbHNlIHRoaXMKLSAgICAgIC8vIGVuc3VyZXMgdGhhdCBhbGwgdGhlIHN0YXRlcyBhcmUgY29ycmVjdGx5IGRlc3RydWN0ZWQKLSAgICAgIC8vIG5vdCBqdXN0IHRoZSBtZW1vcnkgZnJlZWQuCi0gICAgICB3aGlsZSh1bndpbmQodHJ1ZSkpe30KLSAgICAgIHRocm93OwotICAgfQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3ByZWZpeCgpCi17Ci0gICBtX2hhc19wYXJ0aWFsX21hdGNoID0gZmFsc2U7Ci0gICBtX2hhc19mb3VuZF9tYXRjaCA9IGZhbHNlOwotICAgcHN0YXRlID0gcmUuZ2V0X2ZpcnN0X3N0YXRlKCk7Ci0gICBtX3ByZXN1bHQtPnNldF9maXJzdChwb3NpdGlvbik7Ci0gICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICBpZighbV9oYXNfZm91bmRfbWF0Y2ggJiYgbV9oYXNfcGFydGlhbF9tYXRjaCAmJiAobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpKQotICAgewotICAgICAgbV9oYXNfZm91bmRfbWF0Y2ggPSB0cnVlOwotICAgICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKGxhc3QsIDAsIGZhbHNlKTsKLSAgICAgIHBvc2l0aW9uID0gbGFzdDsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpID09IG1hdGNoX3Bvc2l4KQotICAgICAgewotICAgICAgICAgbV9yZXN1bHQubWF5YmVfYXNzaWduKCptX3ByZXN1bHQpOwotICAgICAgfQotICAgfQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICBpZihtX2hhc19mb3VuZF9tYXRjaCAmJiAobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKSkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyB3ZSBoYXZlIGEgbWF0Y2gsIHJldmVyc2UgdGhlIGNhcHR1cmUgaW5mb3JtYXRpb246Ci0gICAgICAvLwotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVzdWx0LT5zaXplKCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHR5cGVuYW1lIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpjYXB0dXJlX3NlcXVlbmNlX3R5cGUgJiBzZXEgPSAoKCptX3ByZXN1bHQpW2ldKS5nZXRfY2FwdHVyZXMoKTsKLSAgICAgICAgIHN0ZDo6cmV2ZXJzZShzZXEuYmVnaW4oKSwgc2VxLmVuZCgpKTsKLSAgICAgIH0KLSAgIH0KLSNlbmRpZgotICAgaWYoIW1faGFzX2ZvdW5kX21hdGNoKQotICAgICAgcG9zaXRpb24gPSByZXN0YXJ0OyAvLyByZXNldCBzZWFyY2ggcG9zdGlvbgotICAgcmV0dXJuIG1faGFzX2ZvdW5kX21hdGNoOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9saXRlcmFsKCkKLXsKLSAgIHVuc2lnbmVkIGludCBsZW4gPSBzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocHN0YXRlKS0+bGVuZ3RoOwotICAgY29uc3QgY2hhcl90eXBlKiB3aGF0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyX3R5cGUqPihzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocHN0YXRlKSArIDEpOwotICAgLy8KLSAgIC8vIGNvbXBhcmUgc3RyaW5nIHdpdGggd2hhdCB3ZSBzdG9yZWQgaW4KLSAgIC8vIG91ciByZWNvcmRzOgotICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbjsgKytpLCArK3Bvc2l0aW9uKQotICAgewotICAgICAgaWYoKHBvc2l0aW9uID09IGxhc3QpIHx8ICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgIT0gd2hhdFtpXSkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydF9saW5lKCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGJhY2tzdG9wKQotICAgewotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSA9PSAwKQotICAgICAgewotICAgICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm9sKSA9PSAwKQotICAgICAgICAgewotICAgICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3NpbmdsZV9saW5lKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAvLyBjaGVjayB0aGUgcHJldmlvdXMgdmFsdWUgY2hhcmFjdGVyOgotICAgQmlkaUl0ZXJhdG9yIHQocG9zaXRpb24pOwotICAgLS10OwotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIGlmKGlzX3NlcGFyYXRvcigqdCkgJiYgISgoKnQgPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHInKSkgJiYgKCpwb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcbicpKSkgKQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UgaWYoaXNfc2VwYXJhdG9yKCp0KSkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZF9saW5lKCkKLXsKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfc2luZ2xlX2xpbmUpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAvLyB3ZSdyZSBub3QgeWV0IGF0IHRoZSBlbmQgc28gKmZpcnN0IGlzIGFsd2F5cyB2YWxpZDoKLSAgICAgIGlmKGlzX3NlcGFyYXRvcigqcG9zaXRpb24pKQotICAgICAgewotICAgICAgICAgaWYoKHBvc2l0aW9uICE9IGJhY2tzdG9wKSB8fCAobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCB3ZSdyZSBub3QgaW4gdGhlIG1pZGRsZSBvZiBcclxuIHNlcXVlbmNlCi0gICAgICAgICAgICBCaWRpSXRlcmF0b3IgdChwb3NpdGlvbik7Ci0gICAgICAgICAgICAtLXQ7Ci0gICAgICAgICAgICBpZigoKnQgPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHInKSkgJiYgKCpwb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcbicpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvbCkgPT0gMCkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpbGQoKQotewotICAgaWYocG9zaXRpb24gPT0gbGFzdCkgCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZihpc19zZXBhcmF0b3IoKnBvc2l0aW9uKSAmJiAoKG1hdGNoX2FueV9tYXNrICYgc3RhdGljX2Nhc3Q8Y29uc3QgcmVfZG90Kj4ocHN0YXRlKS0+bWFzaykgPT0gMCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigoKnBvc2l0aW9uID09IGNoYXJfdHlwZSgwKSkgJiYgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZG90X251bGwpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICArK3Bvc2l0aW9uOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfYm91bmRhcnkoKQotewotICAgYm9vbCBiOyAvLyBpbmRjYXRlcyB3aGV0aGVyIG5leHQgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyBwcmV2IGFuZCB0aGlzIGNoYXJhY3RlciBtdXN0IGJlIG9wcG9zaXRlczoKLSAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRSkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID09IDIpICYmIChfX0dOVUNfTUlOT1JfXyA8IDk1KQotICAgICAgYiA9IHRyYWl0czo6aXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICNlbHNlCi0gICAgICBiID0gdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICNlbmRpZgotICAgfQotICAgZWxzZQotICAgewotICAgICAgYiA9IChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvdykgPyB0cnVlIDogZmFsc2U7Ci0gICB9Ci0gICBpZigocG9zaXRpb24gPT0gYmFja3N0b3ApICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApKQotICAgewotICAgICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9ib3cpCi0gICAgICAgICBiIF49IHRydWU7Ci0gICAgICBlbHNlCi0gICAgICAgICBiIF49IGZhbHNlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLS1wb3NpdGlvbjsKLSAgICAgIGIgXj0gdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICAgICsrcG9zaXRpb247Ci0gICB9Ci0gICBpZihiKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsgLy8gbm8gbWF0Y2ggaWYgd2UgZ2V0IHRvIGhlcmUuLi4KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd2l0aGluX3dvcmQoKQotewotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIC8vIGJvdGggcHJldiBhbmQgdGhpcyBjaGFyYWN0ZXIgbXVzdCBiZSBtX3dvcmRfbWFzazoKLSAgIGJvb2wgcHJldiA9IHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzayk7Ci0gICB7Ci0gICAgICBib29sIGI7Ci0gICAgICBpZigocG9zaXRpb24gPT0gYmFja3N0b3ApICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApKSAKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC0tcG9zaXRpb247Ci0gICAgICAgICBiID0gdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBpZihiID09IHByZXYpCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX3N0YXJ0KCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7IC8vIGNhbid0IGJlIHN0YXJ0aW5nIGEgd29yZCBpZiB3ZSdyZSBhbHJlYWR5IGF0IHRoZSBlbmQgb2YgaW5wdXQKLSAgIGlmKCF0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spKQotICAgICAgcmV0dXJuIGZhbHNlOyAvLyBuZXh0IGNoYXJhY3RlciBpc24ndCBhIHdvcmQgY2hhcmFjdGVyCi0gICBpZigocG9zaXRpb24gPT0gYmFja3N0b3ApICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApKQotICAgewotICAgICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9ib3cpCi0gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5vIHByZXZpb3VzIGlucHV0Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBvdGhlcndpc2UgaW5zaWRlIGJ1ZmZlcjoKLSAgICAgIEJpZGlJdGVyYXRvciB0KHBvc2l0aW9uKTsKLSAgICAgIC0tdDsKLSAgICAgIGlmKHRyYWl0c19pbnN0LmlzY3R5cGUoKnQsIG1fd29yZF9tYXNrKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gcHJldmlvdXMgY2hhcmFjdGVyIG5vdCBub24td29yZAotICAgfQotICAgLy8gT0sgd2UgaGF2ZSBhIG1hdGNoOgotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9lbmQoKQotewotICAgaWYoKHBvc2l0aW9uID09IGJhY2tzdG9wKSAmJiAoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSA9PSAwKSkKLSAgICAgIHJldHVybiBmYWxzZTsgIC8vIHN0YXJ0IG9mIGJ1ZmZlciBjYW4ndCBiZSBlbmQgb2Ygd29yZAotICAgQmlkaUl0ZXJhdG9yIHQocG9zaXRpb24pOwotICAgLS10OwotICAgaWYodHJhaXRzX2luc3QuaXNjdHlwZSgqdCwgbV93b3JkX21hc2spID09IGZhbHNlKQotICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gcHJldmlvdXMgY2hhcmFjdGVyIHdhc24ndCBhIHdvcmQgY2hhcmFjdGVyCi0KLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvdykKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gZW5kIG9mIGJ1ZmZlciBidXQgbm90IGVuZCBvZiB3b3JkCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBvdGhlcndpc2UgaW5zaWRlIGJ1ZmZlcjoKLSAgICAgIGlmKHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5leHQgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIH0KLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7ICAgICAgLy8gaWYgd2UgZmFsbCB0aHJvdWdoIHRvIGhlcmUgdGhlbiB3ZSd2ZSBzdWNjZWVkZWQKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX3N0YXJ0KCkKLXsKLSAgIGlmKChwb3NpdGlvbiAhPSBiYWNrc3RvcCkgfHwgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm9iKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIC8vIE9LIG1hdGNoOgotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX2VuZCgpCi17Ci0gICBpZigocG9zaXRpb24gIT0gbGFzdCkgfHwgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZW9iKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIC8vIE9LIG1hdGNoOgotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYmFja3JlZigpCi17Ci0gICAvLwotICAgLy8gQ29tcGFyZSB3aXRoIHdoYXQgd2UgcHJldmlvdXNseSBtYXRjaGVkLgotICAgLy8gTm90ZSB0aGF0IHRoaXMgc3VjY2VlZHMgaWYgdGhlIGJhY2tyZWYgZGlkIG5vdCBwYXJ0aXNpcGF0ZQotICAgLy8gaW4gdGhlIG1hdGNoLCB0aGlzIGlzIGluIGxpbmUgd2l0aCBFQ01BU2NyaXB0LCBidXQgbm90IFBlcmwKLSAgIC8vIG9yIFBDUkUuCi0gICAvLwotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGlmKGluZGV4ID49IDEwMDAwKQotICAgewotICAgICAgbmFtZWRfc3ViZXhwcmVzc2lvbnM6OnJhbmdlX3R5cGUgciA9IHJlLmdldF9kYXRhKCkuZXF1YWxfcmFuZ2UoaW5kZXgpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHIuZmlyc3QgIT0gci5zZWNvbmQpOwotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGluZGV4ID0gci5maXJzdC0+aW5kZXg7Ci0gICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICB9d2hpbGUoKHIuZmlyc3QgIT0gci5zZWNvbmQpICYmICgoKm1fcHJlc3VsdClbaW5kZXhdLm1hdGNoZWQgIT0gdHJ1ZSkpOwotICAgfQotCi0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BlcmwpICYmICEoKm1fcHJlc3VsdClbaW5kZXhdLm1hdGNoZWQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIEJpZGlJdGVyYXRvciBpID0gKCptX3ByZXN1bHQpW2luZGV4XS5maXJzdDsKLSAgIEJpZGlJdGVyYXRvciBqID0gKCptX3ByZXN1bHQpW2luZGV4XS5zZWNvbmQ7Ci0gICB3aGlsZShpICE9IGopCi0gICB7Ci0gICAgICBpZigocG9zaXRpb24gPT0gbGFzdCkgfHwgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSAhPSB0cmFpdHNfaW5zdC50cmFuc2xhdGUoKmksIGljYXNlKSkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICArK2k7Ci0gICAgICArK3Bvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXQoKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBjaGFyX2NsYXNzX3R5cGU7Ci0gICAvLyBsZXQgdGhlIHRyYWl0cyBjbGFzcyBkbyB0aGUgd29yazoKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBCaWRpSXRlcmF0b3IgdCA9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldF9sb25nPGNoYXJfY2xhc3NfdHlwZT4qPihwc3RhdGUpLCByZS5nZXRfZGF0YSgpLCBpY2FzZSk7Ci0gICBpZih0ICE9IHBvc2l0aW9uKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICBwb3NpdGlvbiA9IHQ7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0KCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZihzdGF0aWNfY2FzdDxjb25zdCByZV9zZXQqPihwc3RhdGUpLT5fbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICArK3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2p1bXAoKQotewotICAgcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZSktPmFsdC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NvbWJpbmluZygpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoaXNfY29tYmluaW5nKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICArK3Bvc2l0aW9uOwotICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmIGlzX2NvbWJpbmluZyh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpKQotICAgICAgKytwb3NpdGlvbjsKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NvZnRfYnVmZmVyX2VuZCgpCi17Ci0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvYikKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIEJpZGlJdGVyYXRvciBwKHBvc2l0aW9uKTsKLSAgIHdoaWxlKChwICE9IGxhc3QpICYmIGlzX3NlcGFyYXRvcih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnAsIGljYXNlKSkpKytwOwotICAgaWYocCAhPSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVzdGFydF9jb250aW51ZSgpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBzZWFyY2hfYmFzZSkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2JhY2tzdGVwKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGlmKCA6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgc3RkOjpwdHJkaWZmX3QgbWF4bGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShiYWNrc3RvcCwgcG9zaXRpb24pOwotICAgICAgaWYobWF4bGVuIDwgc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgLXN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXgpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgaW50IGMgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgICAgd2hpbGUoYy0tKQotICAgICAgewotICAgICAgICAgaWYocG9zaXRpb24gPT0gYmFja3N0b3ApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAtLXBvc2l0aW9uOwotICAgICAgfQotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hc3NlcnRfYmFja3JlZigpCi17Ci0gICAvLyByZXR1cm4gdHJ1ZSBpZiBtYXJrZWQgc3ViLWV4cHJlc3Npb24gTiBoYXMgYmVlbiBtYXRjaGVkOgotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICBpZihpbmRleCA9PSA5OTk5KQotICAgewotICAgICAgLy8gTWFnaWMgdmFsdWUgZm9yIGEgKERFRklORSkgYmxvY2s6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBlbHNlIGlmKGluZGV4ID4gMCkKLSAgIHsKLSAgICAgIC8vIEhhdmUgd2UgbWF0Y2hlZCBzdWJleHByZXNzaW9uICJpbmRleCI/Ci0gICAgICAvLyBDaGVjayBpZiBpbmRleCBpcyBhIGhhc2ggdmFsdWU6Ci0gICAgICBpZihpbmRleCA+PSAxMDAwMCkKLSAgICAgIHsKLSAgICAgICAgIG5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHIgPSByZS5nZXRfZGF0YSgpLmVxdWFsX3JhbmdlKGluZGV4KTsKLSAgICAgICAgIHdoaWxlKHIuZmlyc3QgIT0gci5zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZigoKm1fcHJlc3VsdClbci5maXJzdC0+aW5kZXhdLm1hdGNoZWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQgPSAoKm1fcHJlc3VsdClbaW5kZXhdLm1hdGNoZWQ7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIEhhdmUgd2UgcmVjdXJzZWQgaW50byBzdWJleHByZXNzaW9uICJpbmRleCI/Ci0gICAgICAvLyBJZiBpbmRleCA9PSAwIHRoZW4gY2hlY2sgZm9yIGFueSByZWN1cnNpb24gYXQgYWxsLCBvdGhlcndpc2UgZm9yIHJlY3Vyc2lvbiB0byAtaW5kZXgtMS4KLSAgICAgIGludCBpZHggPSAtaW5kZXgtMTsKLSAgICAgIGlmKGlkeCA+PSAxMDAwMCkKLSAgICAgIHsKLSAgICAgICAgIG5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHIgPSByZS5nZXRfZGF0YSgpLmVxdWFsX3JhbmdlKGlkeCk7Ci0gICAgICAgICBpbnQgc3RhY2tfaW5kZXggPSByZWN1cnNpb25fc3RhY2suZW1wdHkoKSA/IC0xIDogcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHg7Ci0gICAgICAgICB3aGlsZShyLmZpcnN0ICE9IHIuc2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0IHw9IChzdGFja19pbmRleCA9PSByLmZpcnN0LT5pbmRleCk7Ci0gICAgICAgICAgICBpZihyZXN1bHQpYnJlYWs7Ci0gICAgICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQgPSAhcmVjdXJzaW9uX3N0YWNrLmVtcHR5KCkgJiYgKChyZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCA9PSBpZHgpIHx8IChpbmRleCA9PSAwKSk7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3RvZ2dsZV9jYXNlKCkKLXsKLSAgIC8vIGNoYW5nZSBvdXIgY2FzZSBzZW5zaXRpdml0eToKLSAgIHRoaXMtPmljYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfY2FzZSo+KHBzdGF0ZSktPmljYXNlOwotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfYW55KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9tYXAgPSByZS5nZXRfbWFwKCk7Ci0gICB3aGlsZSh0cnVlKQotICAgewotICAgICAgLy8gc2tpcCBldmVyeXRoaW5nIHdlIGNhbid0IG1hdGNoOgotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCBfbWFwLCAodW5zaWduZWQgY2hhciltYXNrX2FueSkgKQotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIHRyeSBhIG51bGwgbWF0Y2ggaWYgcG9zc2libGU6Ci0gICAgICAgICBpZihyZS5jYW5fYmVfbnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoX3ByZWZpeCgpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICAvLyBub3cgdHJ5IGFuZCBvYnRhaW4gYSBtYXRjaDoKLSAgICAgIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgKytwb3NpdGlvbjsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF93b3JkKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIC8vIGRvIHNlYXJjaCBvcHRpbWlzZWQgZm9yIHdvcmQgc3RhcnRzOgotICAgY29uc3QgdW5zaWduZWQgY2hhciogX21hcCA9IHJlLmdldF9tYXAoKTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkgfHwgKHBvc2l0aW9uICE9IGJhc2UpKQotICAgICAgLS1wb3NpdGlvbjsKLSAgIGVsc2UgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKSkKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgIXRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIGJyZWFrOwotCi0gICAgICBpZihjYW5fc3RhcnQoKnBvc2l0aW9uLCBfbWFwLCAodW5zaWduZWQgY2hhciltYXNrX2FueSkgKQotICAgICAgewotICAgICAgICAgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICBicmVhazsKLSAgIH0gd2hpbGUodHJ1ZSk7Ci0gICByZXR1cm4gZmFsc2U7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGluZSgpCi17Ci0gICAvLyBkbyBzZWFyY2ggb3B0aW1pc2VkIGZvciBsaW5lIHN0YXJ0czoKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9tYXAgPSByZS5nZXRfbWFwKCk7Ci0gICBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgd2hpbGUocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhaXNfc2VwYXJhdG9yKCpwb3NpdGlvbikpCi0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICsrcG9zaXRpb247Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgewotICAgICAgICAgaWYocmUuY2FuX2JlX251bGwoKSAmJiBtYXRjaF9wcmVmaXgoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotCi0gICAgICBpZiggY2FuX3N0YXJ0KCpwb3NpdGlvbiwgX21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19hbnkpICkKLSAgICAgIHsKLSAgICAgICAgIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgLy8rK3Bvc2l0aW9uOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfYnVmKCkKLXsKLSAgIGlmKChwb3NpdGlvbiA9PSBiYXNlKSAmJiAoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm9iKSA9PSAwKSkKLSAgICAgIHJldHVybiBtYXRjaF9wcmVmaXgoKTsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2xpdCgpCi17Ci0jaWYgMAotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FuJ3QgcG9zc2libHkgbWF0Y2ggaWYgd2UncmUgYXQgdGhlIGVuZCBhbHJlYWR5Ci0KLSAgIHVuc2lnbmVkIHR5cGUgPSAobV9tYXRjaF9mbGFncyAmIG1hdGNoX2NvbnRpbnVvdXMpID8gCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlZ2Jhc2U6OnJlc3RhcnRfY29udGludWUpIAotICAgICAgICAgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlLmdldF9yZXN0YXJ0X3R5cGUoKSk7Ci0KLSAgIGNvbnN0IGttcF9pbmZvPGNoYXJfdHlwZT4qIGluZm8gPSBhY2Nlc3M6OmdldF9rbXAocmUpOwotICAgaW50IGxlbiA9IGluZm8tPmxlbjsKLSAgIGNvbnN0IGNoYXJfdHlwZSogeCA9IGluZm8tPnBzdHI7Ci0gICBpbnQgaiA9IDA7IAotICAgd2hpbGUgKHBvc2l0aW9uICE9IGxhc3QpIAotICAgewotICAgICAgd2hpbGUoKGogPiAtMSkgJiYgKHhbal0gIT0gdHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKSkgCi0gICAgICAgICBqID0gaW5mby0+a21wX25leHRbal07Ci0gICAgICArK3Bvc2l0aW9uOwotICAgICAgKytqOwotICAgICAgaWYoaiA+PSBsZW4pIAotICAgICAgewotICAgICAgICAgaWYodHlwZSA9PSByZWdiYXNlOjpyZXN0YXJ0X2ZpeGVkX2xpdCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgLWopOwotICAgICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgICAgICAgc3RkOjphZHZhbmNlKHJlc3RhcnQsIGxlbik7Ci0gICAgICAgICAgICBtX3Jlc3VsdC5zZXRfZmlyc3QocG9zaXRpb24pOwotICAgICAgICAgICAgbV9yZXN1bHQuc2V0X3NlY29uZChyZXN0YXJ0KTsKLSAgICAgICAgICAgIHBvc2l0aW9uID0gcmVzdGFydDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgICAgICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCAtaik7Ci0gICAgICAgICAgICBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZm9yKGludCBrID0gMDsgKHJlc3RhcnQgIT0gcG9zaXRpb24pICYmIChrIDwgaik7ICsraywgLS1yZXN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAge30gLy8gZHdhIDEwLzIwLzIwMDAgLSB3YXJuaW5nIHN1cHByZXNzaW9uIGZvciBNV0NXCi0gICAgICAgICAgICAgICBpZihyZXN0YXJ0ICE9IGxhc3QpCi0gICAgICAgICAgICAgICAgICArK3Jlc3RhcnQ7Ci0gICAgICAgICAgICAgICBwb3NpdGlvbiA9IHJlc3RhcnQ7Ci0gICAgICAgICAgICAgICBqID0gMDsgIC8vd2UgY291bGQgZG8gYmV0dGVyIHRoYW4gdGhpcy4uLgotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgfQotICAgfQotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgaikKLSAgIHsKLSAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGEgcGFydGlhbCBtYXRjaDoKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgLWopOwotICAgICAgcmV0dXJuIG1hdGNoX3ByZWZpeCgpOwotICAgfQotI2VuZGlmCi0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgIHByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX25vbl9yZWN1cnNpdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfbm9uX3JlY3Vyc2l2ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODg1NmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfbm9uX3JlY3Vyc2l2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcGVybF9tYXRjaGVyX2NvbW1vbi5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlZmluaXRpb25zIG9mIHBlcmxfbWF0Y2hlciBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIAotICAqICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSBub24tcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1BFUkxfTUFUQ0hFUl9OT05fUkVDVVJTSVZFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9QRVJMX01BVENIRVJfTk9OX1JFQ1VSU0lWRV9IUFAKLQotI2luY2x1ZGUgPG5ldz4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIHZvaWQgaW5wbGFjZV9kZXN0cm95KFQqIHApCi17Ci0gICAodm9pZClwOyAgLy8gd2FybmluZyBzdXBwcmVzc2lvbgotICAgcC0+flQoKTsKLX0KLQotc3RydWN0IHNhdmVkX3N0YXRlCi17Ci0gICB1bmlvbnsKLSAgICAgIHVuc2lnbmVkIGludCBzdGF0ZV9pZDsKLSAgICAgIC8vIHRoaXMgcGFkZGluZyBlbnN1cmVzIGNvcnJlY3QgYWxpZ25tZW50IG9uIDY0LWJpdCBwbGF0Zm9ybXM6Ci0gICAgICBzdGQ6OnNpemVfdCBwYWRkaW5nMTsKLSAgICAgIHN0ZDo6cHRyZGlmZl90IHBhZGRpbmcyOwotICAgICAgdm9pZCogcGFkZGluZzM7Ci0gICB9OwotICAgc2F2ZWRfc3RhdGUodW5zaWduZWQgaSkgOiBzdGF0ZV9pZChpKSB7fQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9tYXRjaGVkX3BhcmVuIDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBpbnQgaW5kZXg7Ci0gICBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiBzdWI7Ci0gICBzYXZlZF9tYXRjaGVkX3BhcmVuKGludCBpLCBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgcykgOiBzYXZlZF9zdGF0ZSgxKSwgaW5kZXgoaSksIHN1YihzKXt9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9wb3NpdGlvbiA6IHB1YmxpYyBzYXZlZF9zdGF0ZQotewotICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzdGF0ZTsKLSAgIEJpZGlJdGVyYXRvciBwb3NpdGlvbjsKLSAgIHNhdmVkX3Bvc2l0aW9uKGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcywgQmlkaUl0ZXJhdG9yIHBvcywgaW50IGkpIDogc2F2ZWRfc3RhdGUoaSksIHBzdGF0ZShwcyksIHBvc2l0aW9uKHBvcyl7fTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc2F2ZWRfYXNzZXJ0aW9uIDogcHVibGljIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4KLXsKLSAgIGJvb2wgcG9zaXRpdmU7Ci0gICBzYXZlZF9hc3NlcnRpb24oYm9vbCBwLCBjb25zdCByZV9zeW50YXhfYmFzZSogcHMsIEJpZGlJdGVyYXRvciBwb3MpIAotICAgICAgOiBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KHBzLCBwb3MsIHNhdmVkX3R5cGVfYXNzZXJ0aW9uKSwgcG9zaXRpdmUocCl7fTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc2F2ZWRfcmVwZWF0ZXIgOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4gY291bnQ7Ci0gICBzYXZlZF9yZXBlYXRlcihpbnQgaSwgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPioqIHMsIEJpZGlJdGVyYXRvciBzdGFydCkgCi0gICAgICA6IHNhdmVkX3N0YXRlKHNhdmVkX3N0YXRlX3JlcGVhdGVyX2NvdW50KSwgY291bnQoaSxzLHN0YXJ0KXt9Ci19OwotCi1zdHJ1Y3Qgc2F2ZWRfZXh0cmFfYmxvY2sgOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIHNhdmVkX3N0YXRlICpiYXNlLCAqZW5kOwotICAgc2F2ZWRfZXh0cmFfYmxvY2soc2F2ZWRfc3RhdGUqIGIsIHNhdmVkX3N0YXRlKiBlKSAKLSAgICAgIDogc2F2ZWRfc3RhdGUoc2F2ZWRfc3RhdGVfZXh0cmFfYmxvY2spLCBiYXNlKGIpLCBlbmQoZSkge30KLX07Ci0KLXN0cnVjdCBzYXZlX3N0YXRlX2luaXQKLXsKLSAgIHNhdmVkX3N0YXRlKiogc3RhY2s7Ci0gICBzYXZlX3N0YXRlX2luaXQoc2F2ZWRfc3RhdGUqKiBiYXNlLCBzYXZlZF9zdGF0ZSoqIGVuZCkKLSAgICAgIDogc3RhY2soYmFzZSkKLSAgIHsKLSAgICAgICpiYXNlID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihnZXRfbWVtX2Jsb2NrKCkpOwotICAgICAgKmVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2F2ZWRfc3RhdGUqPihyZWludGVycHJldF9jYXN0PGNoYXIqPigqYmFzZSkrTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFKTsKLSAgICAgIC0tKCplbmQpOwotICAgICAgKHZvaWQpIG5ldyAoKmVuZClzYXZlZF9zdGF0ZSgwKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgqZW5kID4gKmJhc2UpOwotICAgfQotICAgfnNhdmVfc3RhdGVfaW5pdCgpCi0gICB7Ci0gICAgICBwdXRfbWVtX2Jsb2NrKCpzdGFjayk7Ci0gICAgICAqc3RhY2sgPSAwOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9zaW5nbGVfcmVwZWF0IDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBzdGQ6OnNpemVfdCBjb3VudDsKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwOwotICAgQmlkaUl0ZXJhdG9yIGxhc3RfcG9zaXRpb247Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0KHN0ZDo6c2l6ZV90IGMsIGNvbnN0IHJlX3JlcGVhdCogciwgQmlkaUl0ZXJhdG9yIGxwLCBpbnQgYXJnX2lkKSAKLSAgICAgIDogc2F2ZWRfc3RhdGUoYXJnX2lkKSwgY291bnQoYyksIHJlcChyKSwgbGFzdF9wb3NpdGlvbihscCl7fQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdHM+Ci1zdHJ1Y3Qgc2F2ZWRfcmVjdXJzaW9uIDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBzYXZlZF9yZWN1cnNpb24oaW50IGlkeCwgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHAsIFJlc3VsdHMqIHByKSAKLSAgICAgIDogc2F2ZWRfc3RhdGUoMTQpLCByZWN1cnNpb25faWQoaWR4KSwgcHJldHVybl9hZGRyZXNzKHApLCByZXN1bHRzKCpwcikKLSAgIHt9Ci0gICBpbnQgcmVjdXJzaW9uX2lkOwotICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHByZXR1cm5fYWRkcmVzczsKLSAgIFJlc3VsdHMgcmVzdWx0czsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsbF9zdGF0ZXMoKQotewotICAgc3RhdGljIG1hdGNoZXJfcHJvY190eXBlIGNvbnN0IHNfbWF0Y2hfdnRhYmxlWzMwXSA9IAotICAgewotICAgICAgKCZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0bWFyayksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbGl0ZXJhbCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0X2xpbmUsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpbGQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9tYXRjaCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfYm91bmRhcnksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aXRoaW5fd29yZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfc3RhcnQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9zdGFydCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9qdW1wLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWx0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVwLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY29tYmluaW5nLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc29mdF9idWZmZXJfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVzdGFydF9jb250aW51ZSwKLSAgICAgIC8vIEFsdGhvdWdoIHRoaXMgbmV4dCBsaW5lICpzaG91bGQqIGJlIGV2YWx1YXRlZCBhdCBjb21waWxlIHRpbWUsIGluIHByYWN0aWNlCi0gICAgICAvLyBzb21lIGNvbXBpbGVycyAoVkMrKykgZW1pdCBydW4tdGltZSBpbml0aWFsaXNhdGlvbiB3aGljaCBicmVha3MgdGhyZWFkCi0gICAgICAvLyBzYWZldHksIHNvIHVzZSBhIGRpc3BhdGNoIGZ1bmN0aW9uIGluc3RlYWQ6Ci0gICAgICAvLyg6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlID8gJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0IDogJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9zbG93KSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZGlzcGF0Y2gsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jaGFyX3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrc3RlcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2Fzc2VydF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfdG9nZ2xlX2Nhc2UsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZWN1cnNpb24sCi0gICB9OwotCi0gICBwdXNoX3JlY3Vyc2lvbl9zdG9wcGVyKCk7Ci0gICBkb3sKLSAgICAgIHdoaWxlKHBzdGF0ZSkKLSAgICAgIHsKLSAgICAgICAgIG1hdGNoZXJfcHJvY190eXBlIHByb2MgPSBzX21hdGNoX3Z0YWJsZVtwc3RhdGUtPnR5cGVdOwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIGlmKCEodGhpcy0+KnByb2MpKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihzdGF0ZV9jb3VudCA+IG1heF9zdGF0ZV9jb3VudCkKLSAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKHRyYWl0c19pbnN0LCByZWdleF9jb25zdGFudHM6OmVycm9yX2NvbXBsZXhpdHkpOwotICAgICAgICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgYm9vbCBzdWNjZXNzZnVsX3Vud2luZCA9IHVud2luZChmYWxzZSk7Ci0gICAgICAgICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBpZihmYWxzZSA9PSBzdWNjZXNzZnVsX3Vud2luZCkKLSAgICAgICAgICAgICAgIHJldHVybiBtX3JlY3Vyc2l2ZV9yZXN1bHQ7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9d2hpbGUodW53aW5kKHRydWUpKTsKLSAgIHJldHVybiBtX3JlY3Vyc2l2ZV9yZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmV4dGVuZF9zdGFjaygpCi17Ci0gICBpZih1c2VkX2Jsb2NrX2NvdW50KQotICAgewotICAgICAgLS11c2VkX2Jsb2NrX2NvdW50OwotICAgICAgc2F2ZWRfc3RhdGUqIHN0YWNrX2Jhc2U7Ci0gICAgICBzYXZlZF9zdGF0ZSogYmFja3VwX3N0YXRlOwotICAgICAgc3RhY2tfYmFzZSA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4oZ2V0X21lbV9ibG9jaygpKTsKLSAgICAgIGJhY2t1cF9zdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2F2ZWRfc3RhdGUqPihyZWludGVycHJldF9jYXN0PGNoYXIqPihzdGFja19iYXNlKStORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUpOwotICAgICAgc2F2ZWRfZXh0cmFfYmxvY2sqIGJsb2NrID0gc3RhdGljX2Nhc3Q8c2F2ZWRfZXh0cmFfYmxvY2sqPihiYWNrdXBfc3RhdGUpOwotICAgICAgLS1ibG9jazsKLSAgICAgICh2b2lkKSBuZXcgKGJsb2NrKSBzYXZlZF9leHRyYV9ibG9jayhtX3N0YWNrX2Jhc2UsIG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIG1fc3RhY2tfYmFzZSA9IHN0YWNrX2Jhc2U7Ci0gICAgICBtX2JhY2t1cF9zdGF0ZSA9IGJsb2NrOwotICAgfQotICAgZWxzZQotICAgICAgcmFpc2VfZXJyb3IodHJhaXRzX2luc3QsIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3Jfc3RhY2spOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9tYXRjaGVkX3BhcmVuKGludCBpbmRleCwgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIHN1YikKLXsKLSAgIC8vTkROQk9PU1RfQVNTRVJUKGluZGV4KTsKLSAgIHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPihpbmRleCwgc3ViKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9yZWN1cnNpb25fc3RvcHBlcigpCi17Ci0gICBzYXZlZF9zdGF0ZSogcG1wID0gbV9iYWNrdXBfc3RhdGU7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gbV9iYWNrdXBfc3RhdGU7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9zdGF0ZShzYXZlZF90eXBlX3JlY3Vyc2UpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX2Fzc2VydGlvbihjb25zdCByZV9zeW50YXhfYmFzZSogcHMsIGJvb2wgcG9zaXRpdmUpCi17Ci0gICBzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPihwb3NpdGl2ZSwgcHMsIHBvc2l0aW9uKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9hbHQoY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPihwcywgcG9zaXRpb24sIHNhdmVkX3N0YXRlX2FsdCk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfbm9uX2dyZWVkeV9yZXBlYXQoY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPihwcywgcG9zaXRpb24sIHNhdmVkX3N0YXRlX25vbl9ncmVlZHlfbG9uZ19yZXBlYXQpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3JlcGVhdGVyX2NvdW50KGludCBpLCByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+KiogcykKLXsKLSAgIHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4oaSwgcywgcG9zaXRpb24pOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3NpbmdsZV9yZXBlYXQoc3RkOjpzaXplX3QgYywgY29uc3QgcmVfcmVwZWF0KiByLCBCaWRpSXRlcmF0b3IgbGFzdF9wb3NpdGlvbiwgaW50IHN0YXRlX2lkKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KGMsIHIsIGxhc3RfcG9zaXRpb24sIHN0YXRlX2lkKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9yZWN1cnNpb24oaW50IGlkeCwgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHAsIHJlc3VsdHNfdHlwZSogcHJlc3VsdHMpCi17Ci0gICBzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPihpZHgsIHAsIHByZXN1bHRzKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydG1hcmsoKQotewotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGljYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pY2FzZTsKLSAgIHN3aXRjaChpbmRleCkKLSAgIHsKLSAgIGNhc2UgMDoKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIC0xOgotICAgY2FzZSAtMjoKLSAgICAgIHsKLSAgICAgICAgIC8vIGZvcndhcmQgbG9va2FoZWFkIGFzc2VydDoKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgcHVzaF9hc3NlcnRpb24obmV4dF9wc3RhdGUsIGluZGV4ID09IC0xKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSAtMzoKLSAgICAgIHsKLSAgICAgICAgIC8vIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uLCBjdXJyZW50bHkgdGhpcyBpcyBhbHdheXMgcmVjdXJzaXZlOgotICAgICAgICAgYm9vbCBvbGRfaW5kZXBlbmRlbnQgPSBtX2luZGVwZW5kZW50OwotICAgICAgICAgbV9pbmRlcGVuZGVudCA9IHRydWU7Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIGJvb2wgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIHBzdGF0ZSA9IG5leHRfcHN0YXRlOwotICAgICAgICAgbV9pbmRlcGVuZGVudCA9IG9sZF9pbmRlcGVuZGVudDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgICAgaWYociAmJiAobV9tYXRjaF9mbGFncyAmIG1hdGNoX2V4dHJhKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBvdXIgY2FwdHVyZXMgaGF2ZSBiZWVuIHN0b3JlZCBpbiAqbV9wcmVzdWx0Ci0gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHVucGFjayB0aGVtLCBhbmQgaW5zZXJ0IHRoZW0KLSAgICAgICAgICAgIC8vIGJhY2sgaW4gdGhlIHJpZ2h0IG9yZGVyIHdoZW4gd2UgdW53aW5kIHRoZSBzdGFjazoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiB0ZW1wX21hdGNoKCptX3ByZXN1bHQpOwotICAgICAgICAgICAgdW5zaWduZWQgaTsKLSAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHRlbXBfbWF0Y2guc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAoKm1fcHJlc3VsdClbaV0uZ2V0X2NhcHR1cmVzKCkuY2xlYXIoKTsKLSAgICAgICAgICAgIC8vIG1hdGNoIGV2ZXJ5dGhpbmcgZWxzZToKLSAgICAgICAgICAgIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICAgICAvLyBub3cgcGxhY2UgdGhlIHN0b3JlZCBjYXB0dXJlcyBiYWNrOgotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgdGVtcF9tYXRjaC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46OmNhcHR1cmVfc2VxdWVuY2VfdHlwZSBzZXE7Ci0gICAgICAgICAgICAgICBzZXEmIHMxID0gKCptX3ByZXN1bHQpW2ldLmdldF9jYXB0dXJlcygpOwotICAgICAgICAgICAgICAgY29uc3Qgc2VxJiBzMiA9IHRlbXBfbWF0Y2hbaV0uY2FwdHVyZXMoKTsKLSAgICAgICAgICAgICAgIHMxLmluc2VydCgKLSAgICAgICAgICAgICAgICAgIHMxLmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgIHMyLmJlZ2luKCksIAotICAgICAgICAgICAgICAgICAgczIuZW5kKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICByZXR1cm4gcjsKLSAgICAgIH0KLSAgIGNhc2UgLTQ6Ci0gICAgICB7Ci0gICAgICAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uOgotICAgICAgY29uc3QgcmVfYWx0KiBhbHQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9hbHQqPihwc3RhdGUtPm5leHQucCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoYWx0LT50eXBlID09IHN5bnRheF9lbGVtZW50X2FsdCk7Ci0gICAgICBwc3RhdGUgPSBhbHQtPm5leHQucDsKLSAgICAgIGlmKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZikKLSAgICAgIHsKLSAgICAgICAgIGlmKCFtYXRjaF9hc3NlcnRfYmFja3JlZigpKQotICAgICAgICAgICAgcHN0YXRlID0gYWx0LT5hbHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gemVybyB3aWR0aCBhc3NlcnRpb24sIGhhdmUgdG8gbWF0Y2ggdGhpcyByZWN1cnNpdmVseToKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKTsKLSAgICAgICAgIGJvb2wgbmVnYXRlZCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXggPT0gLTI7Ci0gICAgICAgICBCaWRpSXRlcmF0b3Igc2F2ZWRfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgYm9vbCByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcG9zaXRpb24gPSBzYXZlZF9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG5lZ2F0ZWQpCi0gICAgICAgICAgICByID0gIXI7Ci0gICAgICAgICBpZihyKQotICAgICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBwc3RhdGUgPSBhbHQtPmFsdC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICB9Ci0gICBjYXNlIC01OgotICAgICAgewotICAgICAgICAgcHVzaF9tYXRjaGVkX3BhcmVuKDAsICgqbV9wcmVzdWx0KVswXSk7Ci0gICAgICAgICBtX3ByZXN1bHQtPnNldF9maXJzdChwb3NpdGlvbiwgMCwgdHJ1ZSk7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChpbmRleCA+IDApOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID09IDApCi0gICAgICB7Ci0gICAgICAgICBwdXNoX21hdGNoZWRfcGFyZW4oaW5kZXgsICgqbV9wcmVzdWx0KVtpbmRleF0pOwotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG9zaXRpb24sIGluZGV4KTsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWx0KCkKLXsKLSAgIGJvb2wgdGFrZV9maXJzdCwgdGFrZV9zZWNvbmQ7Ci0gICBjb25zdCByZV9hbHQqIGptcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2FsdCo+KHBzdGF0ZSk7Ci0KLSAgIC8vIGZpbmQgb3V0IHdoaWNoIG9mIHRoZXNlIHR3byBhbHRlcm5hdGl2ZXMgd2UgbmVlZCB0byB0YWtlOgotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBqbXAtPmNhbl9iZV9udWxsICYgbWFza190YWtlOwotICAgICAgdGFrZV9zZWNvbmQgPSBqbXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIGptcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza190YWtlKTsKLSAgICAgIHRha2Vfc2Vjb25kID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgam1wLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3NraXApOwotICB9Ci0KLSAgIGlmKHRha2VfZmlyc3QpCi0gICB7Ci0gICAgICAvLyB3ZSBjYW4gdGFrZSB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUsCi0gICAgICAvLyBzZWUgaWYgd2UgbmVlZCB0byBwdXNoIG5leHQgYWx0ZXJuYXRpdmU6Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHB1c2hfYWx0KGptcC0+YWx0LnApOwotICAgICAgfQotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKHRha2Vfc2Vjb25kKQotICAgewotICAgICAgcHN0YXRlID0gam1wLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOyAgLy8gbmVpdGhlciBvcHRpb24gaXMgcG9zc2libGUKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVwKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcgNDI0NCkKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0KLSAgIC8vIGZpbmQgb3V0IHdoaWNoIG9mIHRoZXNlIHR3byBhbHRlcm5hdGl2ZXMgd2UgbmVlZCB0byB0YWtlOgotICAgYm9vbCB0YWtlX2ZpcnN0LCB0YWtlX3NlY29uZDsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gcmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfdGFrZTsKLSAgICAgIHRha2Vfc2Vjb25kID0gcmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfdGFrZSk7Ci0gICAgICB0YWtlX3NlY29uZCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19za2lwKTsKLSAgIH0KLQotICAgaWYoKG1fYmFja3VwX3N0YXRlLT5zdGF0ZV9pZCAhPSBzYXZlZF9zdGF0ZV9yZXBlYXRlcl9jb3VudCkgCi0gICAgICB8fCAoc3RhdGljX2Nhc3Q8c2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKS0+Y291bnQuZ2V0X2lkKCkgIT0gcmVwLT5zdGF0ZV9pZCkKLSAgICAgIHx8IChuZXh0X2NvdW50LT5nZXRfaWQoKSAhPSByZXAtPnN0YXRlX2lkKSkKLSAgIHsKLSAgICAgIC8vIHdlJ3JlIG1vdmluZyB0byBhIGRpZmZlcmVudCByZXBlYXQgZnJvbSB0aGUgbGFzdAotICAgICAgLy8gb25lLCBzbyBzZXQgdXAgYSBjb3VudGVyIG9iamVjdDoKLSAgICAgIHB1c2hfcmVwZWF0ZXJfY291bnQocmVwLT5zdGF0ZV9pZCwgJm5leHRfY291bnQpOwotICAgfQotICAgLy8KLSAgIC8vIElmIHdlJ3ZlIGhhZCBhdCBsZWFzdCBvbmUgcmVwZWF0IGFscmVhZHksIGFuZCB0aGUgbGFzdCBvbmUgCi0gICAvLyBtYXRjaGVkIHRoZSBOVUxMIHN0cmluZyB0aGVuIHNldCB0aGUgcmVwZWF0IGNvdW50IHRvCi0gICAvLyBtYXhpbXVtOgotICAgLy8KLSAgIG5leHRfY291bnQtPmNoZWNrX251bGxfcmVwZWF0KHBvc2l0aW9uLCByZXAtPm1heCk7Ci0KLSAgIGlmKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5taW4pCi0gICB7Ci0gICAgICAvLyB3ZSBtdXN0IHRha2UgdGhlIHJlcGVhdDoKLSAgICAgIGlmKHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgLy8gdHJ5IGFuZCB0YWtlIHRoZSByZXBlYXQgaWYgd2UgY2FuOgotICAgICAgaWYoKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5tYXgpICYmIHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHN0b3JlIHBvc2l0aW9uIGluIGNhc2Ugd2UgZmFpbDoKLSAgICAgICAgICAgIHB1c2hfYWx0KHJlcC0+YWx0LnApOwotICAgICAgICAgfQotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FuJ3QgdGFrZSBhbnl0aGluZywgZmFpbC4uLgotICAgfQotICAgZWxzZSAvLyBub24tZ3JlZWR5Ci0gICB7Ci0gICAgICAvLyB0cnkgYW5kIHNraXAgdGhlIHJlcGVhdCBpZiB3ZSBjYW46Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIGlmKChuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWF4KSAmJiB0YWtlX2ZpcnN0KQotICAgICAgICAgewotICAgICAgICAgICAgLy8gc3RvcmUgcG9zaXRpb24gaW4gY2FzZSB3ZSBmYWlsOgotICAgICAgICAgICAgcHVzaF9ub25fZ3JlZWR5X3JlcGVhdChyZXAtPm5leHQucCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBpZigobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1heCkgJiYgdGFrZV9maXJzdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIGluY3JlYXNlIHRoZSBjb3VudGVyOgotICAgICAgICAgKysoKm5leHRfY291bnQpOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X3Nsb3coKQotewotICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgcmVfc3ludGF4X2Jhc2UqIHBzaW5nbGUgPSByZXAtPm5leHQucDsKLSAgIC8vIG1hdGNoIGNvbXB1bHNhcnkgcmVwZWF0cyBmaXJzdDoKLSAgIHdoaWxlKGNvdW50IDwgcmVwLT5taW4pCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc2luZ2xlOwotICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICsrY291bnQ7Ci0gICB9Ci0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIC8vIHJlcGVhdCBmb3IgYXMgbG9uZyBhcyB3ZSBjYW46Ci0gICAgICB3aGlsZShjb3VudCA8IHJlcC0+bWF4KQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcHNpbmdsZTsKLSAgICAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9zbG93X2RvdCk7Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIChwb3NpdGlvbiA9PSBsYXN0KSA/IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSA6IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKTsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0KCkKLXsKLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZG90X251bGwpCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICBpZigoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfZG90Kj4ocHN0YXRlLT5uZXh0LnApLT5tYXNrICYgbWF0Y2hfYW55X21hc2spID09IDApCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgdW5zaWduZWQgY291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKHN0ZDo6bWluKShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbikpKTsKLSAgIGlmKHJlcC0+bWluID4gY291bnQpCi0gICB7Ci0gICAgICBwb3NpdGlvbiA9IGxhc3Q7Ci0gICAgICByZXR1cm4gZmFsc2U7ICAvLyBub3QgZW5vdWdoIHRleHQgbGVmdCB0byBtYXRjaAotICAgfQotICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCBjb3VudCk7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIC8vIHB1c2ggYmFja3RyYWNrIGluZm8gaWYgYXZhaWxhYmxlOgotICAgICAgaWYoY291bnQgLSByZXAtPm1pbikKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfZ3JlZWR5X3NpbmdsZV9yZXBlYXQpOwotICAgICAgLy8ganVtcCB0byBuZXh0IHN0YXRlOgotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm9uLWdyZWVkeSwgcHVzaCBzdGF0ZSBhbmQgcmV0dXJuIHRydWUgaWYgd2UgY2FuIHNraXA6Ci0gICAgICBpZihjb3VudCA8IHJlcC0+bWF4KQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9yZXBfZmFzdF9kb3QpOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiAocG9zaXRpb24gPT0gbGFzdCkgPyAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgOiBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCk7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NoYXJfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgTkROQk9PU1RfQVNTRVJUKDEgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHJlcC0+bmV4dC5wKS0+bGVuZ3RoKTsKLSAgIGNvbnN0IGNoYXJfdHlwZSB3aGF0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHJlcC0+bmV4dC5wKSArIDEpOwotICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgQmlkaUl0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKGVuZCwgKHN0ZDo6bWluKSgoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCksIGRlc2lyZWQpKTsKLSAgICAgIEJpZGlJdGVyYXRvciBvcmlnaW4ocG9zaXRpb24pOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGVuZCkgJiYgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSA9PSB3aGF0KSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgPT0gd2hhdCkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLQotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9jaGFyKTsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gKHBvc2l0aW9uID09IGxhc3QpID8gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIDogY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApOwotICAgfQotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldF9yZXBlYXQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXQqPihyZXAtPm5leHQucCktPl9tYXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBCaWRpSXRlcmF0b3IgZW5kID0gcG9zaXRpb247Ci0gICAgICBzdGQ6OmFkdmFuY2UoZW5kLCAoc3RkOjptaW4pKChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSwgZGVzaXJlZCkpOwotICAgICAgQmlkaUl0ZXJhdG9yIG9yaWdpbihwb3NpdGlvbik7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gZW5kKSAmJiBtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgY291bnQgPSAodW5zaWduZWQpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShvcmlnaW4sIHBvc2l0aW9uKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiBtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLQotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9zaG9ydF9zZXQpOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiAocG9zaXRpb24gPT0gbGFzdCkgPyAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgOiBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCk7Ci0gICB9Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXRfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBjb25zdCByZV9zZXRfbG9uZzxtX3R5cGU+KiBzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXRfbG9uZzxtX3R5cGU+Kj4ocHN0YXRlLT5uZXh0LnApOwotICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgQmlkaUl0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKGVuZCwgKHN0ZDo6bWluKSgoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCksIGRlc2lyZWQpKTsKLSAgICAgIEJpZGlJdGVyYXRvciBvcmlnaW4ocG9zaXRpb24pOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGVuZCkgJiYgKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmIChwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLQotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9sb25nX3NldCk7Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIChwb3NpdGlvbiA9PSBsYXN0KSA/IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSA6IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKTsKLSAgIH0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZWN1cnNpb24oKQotewotICAgTkROQk9PU1RfQVNTRVJUKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9yZWN1cnNlKTsKLSAgIC8vCi0gICAvLyBCYWNrdXAgY2FsbCBzdGFjazoKLSAgIC8vCi0gICBwdXNoX3JlY3Vyc2lvbl9wb3AoKTsKLSAgIC8vCi0gICAvLyBTZXQgbmV3IGNhbGwgc3RhY2s6Ci0gICAvLwotICAgaWYocmVjdXJzaW9uX3N0YWNrLmNhcGFjaXR5KCkgPT0gMCkKLSAgIHsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5yZXNlcnZlKDUwKTsKLSAgIH0KLSAgIHJlY3Vyc2lvbl9zdGFjay5wdXNoX2JhY2socmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPigpKTsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMgPSAqbV9wcmVzdWx0OwotICAgaWYoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVjdXJzZSo+KHBzdGF0ZSktPnN0YXRlX2lkID4gMCkKLSAgIHsKLSAgICAgIHB1c2hfcmVwZWF0ZXJfY291bnQoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVjdXJzZSo+KHBzdGF0ZSktPnN0YXRlX2lkLCAmbmV4dF9jb3VudCk7Ci0gICB9Ci0gICBwc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlKS0+YWx0LnA7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrKCkKLXsKLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBpY2FzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aWNhc2U7Ci0gICBpZihpbmRleCA+IDApCi0gICB7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbiwgaW5kZXgpOwotICAgICAgfQotICAgICAgaWYoIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpKQotICAgICAgewotICAgICAgICAgaWYoaW5kZXggPT0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBwc3RhdGUgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzczsKLSAgICAgICAgICAgICptX3ByZXN1bHQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHM7Ci0gICAgICAgICAgICBwdXNoX3JlY3Vyc2lvbihyZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCwgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3MsICZyZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMpOwotICAgICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKChpbmRleCA8IDApICYmIChpbmRleCAhPSAtNCkpCi0gICB7Ci0gICAgICAvLyBtYXRjaGVkIGZvcndhcmQgbG9va2FoZWFkOgotICAgICAgcHN0YXRlID0gMDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbWF0Y2goKQotewotICAgaWYoIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpKQotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgPT0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgpOwotICAgICAgcHN0YXRlID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3M7Ci0gICAgICAqbV9wcmVzdWx0ID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzOwotICAgICAgcHVzaF9yZWN1cnNpb24ocmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgsIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzLCAmcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzKTsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9udWxsKSAmJiAocG9zaXRpb24gPT0gKCptX3ByZXN1bHQpWzBdLmZpcnN0KSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfYWxsKSAmJiAocG9zaXRpb24gIT0gbGFzdCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbCkgJiYgKHBvc2l0aW9uID09IHNlYXJjaF9iYXNlKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbik7Ci0gICBwc3RhdGUgPSAwOwotICAgbV9oYXNfZm91bmRfbWF0Y2ggPSB0cnVlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkgPT0gbWF0Y2hfcG9zaXgpCi0gICB7Ci0gICAgICBtX3Jlc3VsdC5tYXliZV9hc3NpZ24oKm1fcHJlc3VsdCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX2FueSkgPT0gMCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgaWYobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVzdWx0LT5zaXplKCk7ICsraSkKLSAgICAgICAgIGlmKCgqbV9wcmVzdWx0KVtpXS5tYXRjaGVkKQotICAgICAgICAgICAgKCgqbV9wcmVzdWx0KVtpXSkuZ2V0X2NhcHR1cmVzKCkucHVzaF9iYWNrKCgqbV9wcmVzdWx0KVtpXSk7Ci0gICB9Ci0jZW5kaWYKLSAgIHJldHVybiB0cnVlOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1VbndpbmQgYW5kIGFzc29jaWF0ZWQgcHJvY2VlZHVyZXMgZm9sbG93LCB0aGVzZSBwZXJmb3JtIHdoYXQgbm9ybWFsIHN0YWNrCi11bndpbmRpbmcgZG9lcyBpbiB0aGUgcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmQoYm9vbCBoYXZlX21hdGNoKQotewotICAgc3RhdGljIHVud2luZF9wcm9jX3R5cGUgY29uc3Qgc191bndpbmRfdGFibGVbMThdID0gCi0gICB7Ci0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3BhcmVuLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbl9zdG9wcGVyLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2Fzc2VydGlvbiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9hbHQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVwZWF0ZXJfY291bnRlciwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9leHRyYV9ibG9jaywKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9ncmVlZHlfc2luZ2xlX3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9zbG93X2RvdF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZmFzdF9kb3RfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2NoYXJfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3Nob3J0X3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfbG9uZ19zZXRfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX25vbl9ncmVlZHlfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb25fcG9wLAotICAgfTsKLQotICAgbV9yZWN1cnNpdmVfcmVzdWx0ID0gaGF2ZV9tYXRjaDsKLSAgIHVud2luZF9wcm9jX3R5cGUgdW53aW5kZXI7Ci0gICBib29sIGNvbnQ7Ci0gICAvLwotICAgLy8ga2VlcCB1bndpbmRpbmcgb3VyIHN0YWNrIHVudGlsIHdlIGhhdmUgc29tZXRoaW5nIHRvIGRvOgotICAgLy8KLSAgIGRvCi0gICB7Ci0gICAgICB1bndpbmRlciA9IHNfdW53aW5kX3RhYmxlW21fYmFja3VwX3N0YXRlLT5zdGF0ZV9pZF07Ci0gICAgICBjb250ID0gKHRoaXMtPip1bndpbmRlcikobV9yZWN1cnNpdmVfcmVzdWx0KTsKLSAgIH13aGlsZShjb250KTsKLSAgIC8vCi0gICAvLyByZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIG1vcmUgc3RhdGVzIHRvIHRyeToKLSAgIC8vCi0gICByZXR1cm4gcHN0YXRlID8gdHJ1ZSA6IGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZW5kKGJvb2wpCi17Ci0gICBwc3RhdGUgPSAwOyAgIC8vIG5vdGhpbmcgbGVmdCB0byBzZWFyY2gKLSAgIHJldHVybiBmYWxzZTsgLy8gZW5kIG9mIHN0YWNrIG5vdGhpbmcgbW9yZSB0byBzZWFyY2gKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3BhcmVuKGJvb2wgaGF2ZV9tYXRjaCkKLXsKLSAgIHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLy8gcmVzdG9yZSBwcmV2aW91cyB2YWx1ZXMgaWYgbm8gbWF0Y2ggd2FzIGZvdW5kOgotICAgaWYoaGF2ZV9tYXRjaCA9PSBmYWxzZSkKLSAgIHsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBtcC0+c3ViLmZpcnN0LCBwbXAtPmluZGV4LCBwbXAtPmluZGV4ID09IDApOwotICAgICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKHBtcC0+c3ViLnNlY29uZCwgcG1wLT5pbmRleCwgcG1wLT5zdWIubWF0Y2hlZCwgcG1wLT5pbmRleCA9PSAwKTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgLy8KLSAgIC8vIHdlIGhhdmUgYSBtYXRjaCwgcHVzaCB0aGUgY2FwdHVyZSBpbmZvcm1hdGlvbiBvbnRvIHRoZSBzdGFjazoKLSAgIC8vCi0gICBlbHNlIGlmKHBtcC0+c3ViLm1hdGNoZWQgJiYgKG1hdGNoX2V4dHJhICYgbV9tYXRjaF9mbGFncykpCi0gICAgICAoKCptX3ByZXN1bHQpW3BtcC0+aW5kZXhdKS5nZXRfY2FwdHVyZXMoKS5wdXNoX2JhY2socG1wLT5zdWIpOwotI2VuZGlmCi0gICAvLyB1bndpbmQgc3RhY2s6Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcCsxOwotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCk7Ci0gICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBsb29raW5nCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb25fc3RvcHBlcihib29sKQotewotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KG1fYmFja3VwX3N0YXRlKyspOwotICAgcHN0YXRlID0gMDsgICAvLyBub3RoaW5nIGxlZnQgdG8gc2VhcmNoCi0gICByZXR1cm4gZmFsc2U7IC8vIGVuZCBvZiBzdGFjayBub3RoaW5nIG1vcmUgdG8gc2VhcmNoCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9hc3NlcnRpb24oYm9vbCByKQotewotICAgc2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX2Fzc2VydGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgcHN0YXRlID0gcG1wLT5wc3RhdGU7Ci0gICBwb3NpdGlvbiA9IHBtcC0+cG9zaXRpb247Ci0gICBib29sIHJlc3VsdCA9IChyID09IHBtcC0+cG9zaXRpdmUpOwotICAgbV9yZWN1cnNpdmVfcmVzdWx0ID0gcG1wLT5wb3NpdGl2ZSA/IHIgOiAhcjsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiAhcmVzdWx0OyAvLyByZXR1cm4gZmFsc2UgaWYgdGhlIGFzc2VydGlvbiB3YXMgbWF0Y2hlZCB0byBzdG9wIHNlYXJjaC4KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2FsdChib29sIHIpCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwbXAtPnBzdGF0ZTsKLSAgICAgIHBvc2l0aW9uID0gcG1wLT5wb3NpdGlvbjsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiByOyAKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlcGVhdGVyX2NvdW50ZXIoYm9vbCkKLXsKLSAgIHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBsb29raW5nCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9leHRyYV9ibG9jayhib29sKQotewotICAgc2F2ZWRfZXh0cmFfYmxvY2sqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX2V4dHJhX2Jsb2NrKj4obV9iYWNrdXBfc3RhdGUpOwotICAgdm9pZCogY29uZGVtbWVkID0gbV9zdGFja19iYXNlOwotICAgbV9zdGFja19iYXNlID0gcG1wLT5iYXNlOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXAtPmVuZDsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXApOwotICAgcHV0X21lbV9ibG9jayhjb25kZW1tZWQpOwotICAgcmV0dXJuIHRydWU7IC8vIGtlZXAgbG9va2luZwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZGVzdHJveV9zaW5nbGVfcmVwZWF0KCkKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZ3JlZWR5X3NpbmdsZV9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKSAKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5hbHQucCAhPSAwKTsKLQotICAgY291bnQgLT0gcmVwLT5taW47Ci0gICAKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpKQotICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCk7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLQotICAgLy8gYmFja3RyYWNrIHRpbGwgd2UgY2FuIHNraXAgb3V0OgotICAgZG8KLSAgIHsKLSAgICAgIC0tcG9zaXRpb247Ci0gICAgICAtLWNvdW50OwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgIH13aGlsZShjb3VudCAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLQotICAgLy8gaWYgd2UndmUgaGl0IGJhc2UsIGRlc3Ryb3kgdGhpcyBzdGF0ZToKLSAgIGlmKGNvdW50ID09IDApCi0gICB7Ci0gICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudCArIHJlcC0+bWluOwotICAgICAgcG1wLT5sYXN0X3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfc2xvd19kb3RfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikgCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9kb3RfcmVwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X3dpbGQpOwotCi0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0gICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotCi0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgLy8gd2luZCBmb3J3YXJkIHVudGlsIHdlIGNhbiBza2lwIG91dCBvZiB0aGUgcmVwZWF0OgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmYWlsZWQgcmVwZWF0IG1hdGNoLCBkaXNjYXJkIHRoaXMgc3RhdGUgYW5kIGxvb2sgZm9yIGFub3RoZXI6Ci0gICAgICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfSAgIAotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9mYXN0X2RvdF9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKSAKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCA8IHJlcC0+bWF4KTsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLQotICAgICAgLy8gd2luZCBmb3J3YXJkIHVudGlsIHdlIGNhbiBza2lwIG91dCBvZiB0aGUgcmVwZWF0OgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfQotCi0gICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9jaGFyX3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLQotICAgLy8gaWYgd2UgaGF2ZSBhIG1hdGNoLCBqdXN0IGRpc2NhcmQgdGhpcyBzdGF0ZToKLSAgIGlmKHIpIAotICAgewotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBwbXAtPnJlcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gcG1wLT5jb3VudDsKLSAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgY29uc3QgY2hhcl90eXBlIHdoYXQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyX3R5cGUqPihzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocHN0YXRlKSArIDEpOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfY2hhcl9yZXApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+YWx0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCk7Ci0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0KLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyB3aW5kIGZvcndhcmQgdW50aWwgd2UgY2FuIHNraXAgb3V0IG9mIHRoZSByZXBlYXQ6Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpICE9IHdoYXQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmYWlsZWQgcmVwZWF0IG1hdGNoLCBkaXNjYXJkIHRoaXMgc3RhdGUgYW5kIGxvb2sgZm9yIGFub3RoZXI6Ci0gICAgICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrIHBvc2l0aW9uOwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgfXdoaWxlKChjb3VudCA8IHJlcC0+bWF4KSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSk7Ci0gICB9ICAgCi0gICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9zaG9ydF9zZXRfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikgCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXQqPihyZXAtPm5leHQucCktPl9tYXA7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLQotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X3NldCk7Ci0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0gICAKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyB3aW5kIGZvcndhcmQgdW50aWwgd2UgY2FuIHNraXAgb3V0IG9mIHRoZSByZXBlYXQ6Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYoIW1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGZhaWxlZCByZXBlYXQgbWF0Y2gsIGRpc2NhcmQgdGhpcyBzdGF0ZSBhbmQgbG9vayBmb3IgYW5vdGhlcjoKLSAgICAgICAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgKysgcG9zaXRpb247Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICB9d2hpbGUoKGNvdW50IDwgcmVwLT5tYXgpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLSAgIH0gICAKLSAgIC8vIHJlbWVtYmVyIHdoZXJlIHdlIGdvdCB0byBpZiB0aGlzIGlzIGEgbGVhZGluZyByZXBlYXQ6Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgIGlmKDAgPT0gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlIGlmKGNvdW50ID09IHJlcC0+bWF4KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudDsKLSAgICAgIHBtcC0+bGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2xvbmdfc2V0X3JlcGVhdChib29sIHIpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0gICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgIGNvbnN0IHJlX3NldF9sb25nPG1fdHlwZT4qIHNldCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldF9sb25nPG1fdHlwZT4qPihwc3RhdGUpOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0KTsKLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCA8IHJlcC0+bWF4KTsKLQotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIHdpbmQgZm9yd2FyZCB1bnRpbCB3ZSBjYW4gc2tpcCBvdXQgb2YgdGhlIHJlcGVhdDoKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBpZihwb3NpdGlvbiA9PSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGZhaWxlZCByZXBlYXQgbWF0Y2gsIGRpc2NhcmQgdGhpcyBzdGF0ZSBhbmQgbG9vayBmb3IgYW5vdGhlcjoKLSAgICAgICAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfSAgIAotICAgLy8gcmVtZW1iZXIgd2hlcmUgd2UgZ290IHRvIGlmIHRoaXMgaXMgYSBsZWFkaW5nIHJlcGVhdDoKLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOgotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9ub25fZ3JlZWR5X3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICBwb3NpdGlvbiA9IHBtcC0+cG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSBwbXAtPnBzdGF0ZTsKLSAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiByOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVjdXJzaW9uKGJvb2wgcikKLXsKLSAgIHNhdmVkX3JlY3Vyc2lvbjxyZXN1bHRzX3R5cGU+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIGlmKCFyKQotICAgewotICAgICAgcmVjdXJzaW9uX3N0YWNrLnB1c2hfYmFjayhyZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+KCkpOwotICAgICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHggPSBwbXAtPnJlY3Vyc2lvbl9pZDsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzID0gcG1wLT5wcmV0dXJuX2FkZHJlc3M7Ci0gICAgICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMgPSBwbXAtPnJlc3VsdHM7Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbl9wb3AoYm9vbCByKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLXZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3JlY3Vyc2lvbl9wb3AoKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfc3RhdGUoMTUpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0vKgotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3BhcmVudGhlc2lzX3BvcChib29sIHIpCi17Ci0gICBzYXZlZF9zdGF0ZSogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIC0tcGFyZW50aGVzaXNfc3RhY2tfcG9zaXRpb247Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci12b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9wYXJlbnRoZXNpc19wb3AoKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfc3RhdGUoMTYpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9wYXJlbnRoZXNpc19wdXNoKGJvb2wgcikKLXsKLSAgIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIHBhcmVudGhlc2lzX3N0YWNrW3BhcmVudGhlc2lzX3N0YWNrX3Bvc2l0aW9uKytdID0gcG1wLT5wb3NpdGlvbjsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9wYXJlbnRoZXNpc19wdXNoKEJpZGlJdGVyYXRvciBwKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPigwLCBwLCAxNyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLSovCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9yZWN1cnNpdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfcmVjdXJzaXZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVlZTZiYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9yZWN1cnNpdmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcGVybF9tYXRjaGVyX2NvbW1vbi5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlZmluaXRpb25zIG9mIHBlcmxfbWF0Y2hlciBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIAotICAqICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSByZWN1cnNpdmUgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX1JFQ1VSU0lWRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX1JFQ1VSU0lWRV9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotY2xhc3MgYmFja3VwX3N1YmV4Ci17Ci0gICBpbnQgaW5kZXg7Ci0gICBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiBzdWI7Ci1wdWJsaWM6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgQT4KLSAgIGJhY2t1cF9zdWJleChjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQT4mIHcsIGludCBpKQotICAgICAgOiBpbmRleChpKSwgc3ViKHdbaV0sIGZhbHNlKSB7fQotICAgdGVtcGxhdGUgPGNsYXNzIEE+Ci0gICB2b2lkIHJlc3RvcmUobWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEE+JiB3KQotICAgewotICAgICAgdy5zZXRfZmlyc3Qoc3ViLmZpcnN0LCBpbmRleCwgaW5kZXggPT0gMCk7Ci0gICAgICB3LnNldF9zZWNvbmQoc3ViLnNlY29uZCwgaW5kZXgsIHN1Yi5tYXRjaGVkLCBpbmRleCA9PSAwKTsKLSAgIH0KLSAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBnZXQoKSB7IHJldHVybiBzdWI7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsbF9zdGF0ZXMoKQotewotICAgc3RhdGljIG1hdGNoZXJfcHJvY190eXBlIGNvbnN0IHNfbWF0Y2hfdnRhYmxlWzMwXSA9IAotICAgewotICAgICAgKCZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0bWFyayksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbGl0ZXJhbCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0X2xpbmUsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpbGQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9tYXRjaCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfYm91bmRhcnksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aXRoaW5fd29yZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfc3RhcnQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9zdGFydCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9qdW1wLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWx0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVwLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY29tYmluaW5nLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc29mdF9idWZmZXJfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVzdGFydF9jb250aW51ZSwKLSAgICAgIC8vIEFsdGhvdWdoIHRoaXMgbmV4dCBsaW5lICpzaG91bGQqIGJlIGV2YWx1YXRlZCBhdCBjb21waWxlIHRpbWUsIGluIHByYWN0aWNlCi0gICAgICAvLyBzb21lIGNvbXBpbGVycyAoVkMrKykgZW1pdCBydW4tdGltZSBpbml0aWFsaXNhdGlvbiB3aGljaCBicmVha3MgdGhyZWFkCi0gICAgICAvLyBzYWZldHksIHNvIHVzZSBhIGRpc3BhdGNoIGZ1bmN0aW9uIGluc3RlYWQ6Ci0gICAgICAvLyg6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlID8gJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0IDogJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9zbG93KSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZGlzcGF0Y2gsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jaGFyX3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrc3RlcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2Fzc2VydF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfdG9nZ2xlX2Nhc2UsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZWN1cnNpb24sCi0gICB9OwotCi0gICBpZihzdGF0ZV9jb3VudCA+IG1heF9zdGF0ZV9jb3VudCkKLSAgICAgIHJhaXNlX2Vycm9yKHRyYWl0c19pbnN0LCByZWdleF9jb25zdGFudHM6OmVycm9yX2NvbXBsZXhpdHkpOwotICAgd2hpbGUocHN0YXRlKQotICAgewotICAgICAgbWF0Y2hlcl9wcm9jX3R5cGUgcHJvYyA9IHNfbWF0Y2hfdnRhYmxlW3BzdGF0ZS0+dHlwZV07Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgICAgaWYoISh0aGlzLT4qcHJvYykoKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0bWFyaygpCi17Ci0gICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgaWNhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmljYXNlOwotICAgYm9vbCByID0gdHJ1ZTsKLSAgIHN3aXRjaChpbmRleCkKLSAgIHsKLSAgIGNhc2UgMDoKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIC0xOgotICAgY2FzZSAtMjoKLSAgICAgIHsKLSAgICAgICAgIC8vIGZvcndhcmQgbG9va2FoZWFkIGFzc2VydDoKLSAgICAgICAgIEJpZGlJdGVyYXRvciBvbGRfcG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG5leHRfcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBwb3NpdGlvbiA9IG9sZF9wb3NpdGlvbjsKLSAgICAgICAgIGlmKChyICYmIChpbmRleCAhPSAtMSkpIHx8ICghciAmJiAoaW5kZXggIT0gLTIpKSkKLSAgICAgICAgICAgIHIgPSBmYWxzZTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHIgPSB0cnVlOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIC0zOgotICAgICAgewotICAgICAgICAgLy8gaW5kZXBlbmRlbnQgc3ViLWV4cHJlc3Npb246Ci0gICAgICAgICBib29sIG9sZF9pbmRlcGVuZGVudCA9IG1faW5kZXBlbmRlbnQ7Ci0gICAgICAgICBtX2luZGVwZW5kZW50ID0gdHJ1ZTsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIHBzdGF0ZSA9IG5leHRfcHN0YXRlOwotICAgICAgICAgbV9pbmRlcGVuZGVudCA9IG9sZF9pbmRlcGVuZGVudDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgICAgaWYociAmJiAobV9tYXRjaF9mbGFncyAmIG1hdGNoX2V4dHJhKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBvdXIgY2FwdHVyZXMgaGF2ZSBiZWVuIHN0b3JlZCBpbiAqbV9wcmVzdWx0Ci0gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHVucGFjayB0aGVtLCBhbmQgaW5zZXJ0IHRoZW0KLSAgICAgICAgICAgIC8vIGJhY2sgaW4gdGhlIHJpZ2h0IG9yZGVyIHdoZW4gd2UgdW53aW5kIHRoZSBzdGFjazoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICB1bnNpZ25lZCBpOwotICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4gdG0oKm1fcHJlc3VsdCk7Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB0bS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICgqbV9wcmVzdWx0KVtpXS5nZXRfY2FwdHVyZXMoKS5jbGVhcigpOwotICAgICAgICAgICAgLy8gbWF0Y2ggZXZlcnl0aGluZyBlbHNlOgotICAgICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgICAgIC8vIG5vdyBwbGFjZSB0aGUgc3RvcmVkIGNhcHR1cmVzIGJhY2s6Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB0bS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46OmNhcHR1cmVfc2VxdWVuY2VfdHlwZSBzZXE7Ci0gICAgICAgICAgICAgICBzZXEmIHMxID0gKCptX3ByZXN1bHQpW2ldLmdldF9jYXB0dXJlcygpOwotICAgICAgICAgICAgICAgY29uc3Qgc2VxJiBzMiA9IHRtW2ldLmNhcHR1cmVzKCk7Ci0gICAgICAgICAgICAgICBzMS5pbnNlcnQoCi0gICAgICAgICAgICAgICAgICBzMS5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICBzMi5iZWdpbigpLCAKLSAgICAgICAgICAgICAgICAgIHMyLmVuZCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIC00OgotICAgICAgewotICAgICAgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbjoKLSAgICAgIGNvbnN0IHJlX2FsdCogYWx0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYWx0Kj4ocHN0YXRlLT5uZXh0LnApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGFsdC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hbHQpOwotICAgICAgcHN0YXRlID0gYWx0LT5uZXh0LnA7Ci0gICAgICBpZihwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYpCi0gICAgICB7Ci0gICAgICAgICBpZighbWF0Y2hfYXNzZXJ0X2JhY2tyZWYoKSkKLSAgICAgICAgICAgIHBzdGF0ZSA9IGFsdC0+YWx0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIHplcm8gd2lkdGggYXNzZXJ0aW9uLCBoYXZlIHRvIG1hdGNoIHRoaXMgcmVjdXJzaXZlbHk6Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQocHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyayk7Ci0gICAgICAgICBib29sIG5lZ2F0ZWQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4ID09IC0yOwotICAgICAgICAgQmlkaUl0ZXJhdG9yIHNhdmVkX3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIGJvb2wgcmVzID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcG9zaXRpb24gPSBzYXZlZF9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG5lZ2F0ZWQpCi0gICAgICAgICAgICByZXMgPSAhcmVzOwotICAgICAgICAgaWYocmVzKQotICAgICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBwc3RhdGUgPSBhbHQtPmFsdC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICB9Ci0gICBjYXNlIC01OgotICAgICAgewotICAgICAgICAgLy8gUmVzZXQgc3RhcnQgb2YgJDAsIHNpbmNlIHdlIGhhdmUgYSBcSyBlc2NhcGUKLSAgICAgICAgIGJhY2t1cF9zdWJleDxCaWRpSXRlcmF0b3I+IHN1YigqbV9wcmVzdWx0LCAwKTsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBvc2l0aW9uLCAwLCB0cnVlKTsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIGlmKHIgPT0gZmFsc2UpCi0gICAgICAgICAgICBzdWIucmVzdG9yZSgqbV9wcmVzdWx0KTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChpbmRleCA+IDApOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID09IDApCi0gICAgICB7Ci0gICAgICAgICBiYWNrdXBfc3ViZXg8QmlkaUl0ZXJhdG9yPiBzdWIoKm1fcHJlc3VsdCwgaW5kZXgpOwotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG9zaXRpb24sIGluZGV4KTsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIGlmKHIgPT0gZmFsc2UpCi0gICAgICAgICAgICBzdWIucmVzdG9yZSgqbV9wcmVzdWx0KTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgICAgLy8KLSAgICAgICAgIC8vIHdlIGhhdmUgYSBtYXRjaCwgcHVzaCB0aGUgY2FwdHVyZSBpbmZvcm1hdGlvbiBvbnRvIHRoZSBzdGFjazoKLSAgICAgICAgIC8vCi0gICAgICAgICBlbHNlIGlmKHN1Yi5nZXQoKS5tYXRjaGVkICYmIChtYXRjaF9leHRyYSAmIG1fbWF0Y2hfZmxhZ3MpKQotICAgICAgICAgICAgKCgqbV9wcmVzdWx0KVtpbmRleF0pLmdldF9jYXB0dXJlcygpLnB1c2hfYmFjayhzdWIuZ2V0KCkpOwotI2VuZGlmCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgfQotICAgfQotICAgcmV0dXJuIHI7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsdCgpCi17Ci0gICBib29sIHRha2VfZmlyc3QsIHRha2Vfc2Vjb25kOwotICAgY29uc3QgcmVfYWx0KiBqbXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9hbHQqPihwc3RhdGUpOwotCi0gICAvLyBmaW5kIG91dCB3aGljaCBvZiB0aGVzZSB0d28gYWx0ZXJuYXRpdmVzIHdlIG5lZWQgdG8gdGFrZToKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gam1wLT5jYW5fYmVfbnVsbCAmIG1hc2tfdGFrZTsKLSAgICAgIHRha2Vfc2Vjb25kID0gam1wLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCBqbXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfdGFrZSk7Ci0gICAgICB0YWtlX3NlY29uZCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIGptcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19za2lwKTsKLSAgfQotCi0gICBpZih0YWtlX2ZpcnN0KQotICAgewotICAgICAgLy8gd2UgY2FuIHRha2UgdGhlIGZpcnN0IGFsdGVybmF0aXZlLAotICAgICAgLy8gc2VlIGlmIHdlIG5lZWQgdG8gcHVzaCBuZXh0IGFsdGVybmF0aXZlOgotICAgICAgaWYodGFrZV9zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBCaWRpSXRlcmF0b3Igb2xkcG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG9sZF9wc3RhdGUgPSBqbXAtPmFsdC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBpZighbWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgewotICAgICAgICAgICAgcHN0YXRlID0gb2xkX3BzdGF0ZTsKLSAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZih0YWtlX3NlY29uZCkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IGptcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsgIC8vIG5laXRoZXIgb3B0aW9uIGlzIHBvc3NpYmxlCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlcCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3IDQyNDQpCi0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIC8vCi0gICAvLyBBbHdheXMgY29weSB0aGUgcmVwZWF0IGNvdW50LCBzbyB0aGF0IHRoZSBzdGF0ZSBpcyByZXN0b3JlZAotICAgLy8gd2hlbiB3ZSBleGl0IHRoaXMgc2NvcGU6Ci0gICAvLwotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiByKHJlcC0+c3RhdGVfaWQsICZuZXh0X2NvdW50LCBwb3NpdGlvbik7Ci0gICAvLwotICAgLy8gSWYgd2UndmUgaGFkIGF0IGxlYXN0IG9uZSByZXBlYXQgYWxyZWFkeSwgYW5kIHRoZSBsYXN0IG9uZSAKLSAgIC8vIG1hdGNoZWQgdGhlIE5VTEwgc3RyaW5nIHRoZW4gc2V0IHRoZSByZXBlYXQgY291bnQgdG8KLSAgIC8vIG1heGltdW06Ci0gICAvLwotICAgbmV4dF9jb3VudC0+Y2hlY2tfbnVsbF9yZXBlYXQocG9zaXRpb24sIHJlcC0+bWF4KTsKLQotICAgLy8gZmluZCBvdXQgd2hpY2ggb2YgdGhlc2UgdHdvIGFsdGVybmF0aXZlcyB3ZSBuZWVkIHRvIHRha2U6Ci0gICBib29sIHRha2VfZmlyc3QsIHRha2Vfc2Vjb25kOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSByZXAtPmNhbl9iZV9udWxsICYgbWFza190YWtlOwotICAgICAgdGFrZV9zZWNvbmQgPSByZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza190YWtlKTsKLSAgICAgIHRha2Vfc2Vjb25kID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3NraXApOwotICAgfQotCi0gICBpZihuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWluKQotICAgewotICAgICAgLy8gd2UgbXVzdCB0YWtlIHRoZSByZXBlYXQ6Ci0gICAgICBpZih0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIHJldHVybiBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIC8vIHRyeSBhbmQgdGFrZSB0aGUgcmVwZWF0IGlmIHdlIGNhbjoKLSAgICAgIGlmKChuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWF4KSAmJiB0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgLy8gc3RvcmUgcG9zaXRpb24gaW4gY2FzZSB3ZSBmYWlsOgotICAgICAgICAgQmlkaUl0ZXJhdG9yIHBvcyA9IHBvc2l0aW9uOwotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgLy8gZmFpbGVkIHJlcGVhdCwgcmVzZXQgcG9zaXN0aW9uIGFuZCBmYWxsIHRocm91Z2ggZm9yIGFsdGVybmF0aXZlOgotICAgICAgICAgcG9zaXRpb24gPSBwb3M7Ci0gICAgICB9Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FuJ3QgdGFrZSBhbnl0aGluZywgZmFpbC4uLgotICAgfQotICAgZWxzZSAvLyBub24tZ3JlZWR5Ci0gICB7Ci0gICAgICAvLyB0cnkgYW5kIHNraXAgdGhlIHJlcGVhdCBpZiB3ZSBjYW46Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHN0b3JlIHBvc2l0aW9uIGluIGNhc2Ugd2UgZmFpbDoKLSAgICAgICAgIEJpZGlJdGVyYXRvciBwb3MgPSBwb3NpdGlvbjsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIC8vIGZhaWxlZCBhbHRlcm5hdGl2ZSwgcmVzZXQgcG9zaXN0aW9uIGFuZCBmYWxsIHRocm91Z2ggZm9yIHJlcGVhdDoKLSAgICAgICAgIHBvc2l0aW9uID0gcG9zOwotICAgICAgfQotICAgICAgaWYoKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5tYXgpICYmIHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfc2xvdygpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICByZV9zeW50YXhfYmFzZSogcHNpbmdsZSA9IHJlcC0+bmV4dC5wOwotICAgLy8gbWF0Y2ggY29tcHVsc2FyeSByZXBlYXRzIGZpcnN0OgotICAgd2hpbGUoY291bnQgPCByZXAtPm1pbikKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzaW5nbGU7Ci0gICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgKytjb3VudDsKLSAgIH0KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgLy8gbm9ybWFsIHJlcGVhdDoKLSAgICAgIHdoaWxlKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc2luZ2xlOwotICAgICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcDsKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vbi1ncmVlZHksIGtlZXAgdHJ5aW5nIHRpbGwgd2UgZ2V0IGEgbWF0Y2g6Ci0gICAgICBCaWRpSXRlcmF0b3Igc2F2ZV9wb3M7Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgcHN0YXRlID0gcHNpbmdsZTsKLSAgICAgICAgIHBvc2l0aW9uID0gc2F2ZV9wb3M7Ci0gICAgICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfXdoaWxlKHRydWUpOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZG90X251bGwpCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICBpZigoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfZG90Kj4ocHN0YXRlLT5uZXh0LnApLT5tYXNrICYgbWF0Y2hfYW55X21hc2spID09IDApCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI2NykKLSNlbmRpZgotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBjb3VudCA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpKSwgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW4pKTsKLSAgIGlmKHJlcC0+bWluID4gY291bnQpCi0gICB7Ci0gICAgICBwb3NpdGlvbiA9IGxhc3Q7Ci0gICAgICByZXR1cm4gZmFsc2U7ICAvLyBub3QgZW5vdWdoIHRleHQgbGVmdCB0byBtYXRjaAotICAgfQotICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCBjb3VudCk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmIGdyZWVkeSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKGdyZWVkeSkKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLQotICAgLy8gbm9uLWdyZWVkeSwga2VlcCB0cnlpbmcgdGlsbCB3ZSBnZXQgYSBtYXRjaDoKLSAgIEJpZGlJdGVyYXRvciBzYXZlX3BvczsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChyZXAtPm1heCA9PSBVSU5UX01BWCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgc2F2ZV9wb3MgPSBwb3NpdGlvbjsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKGNvdW50ID49IHJlcC0+bWF4KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYoc2F2ZV9wb3MgPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHBvc2l0aW9uID0gKytzYXZlX3BvczsKLSAgICAgICsrY291bnQ7Ci0gICB9d2hpbGUodHJ1ZSk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jaGFyX3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI2NykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBORE5CT09TVF9BU1NFUlQoMSA9PSBzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocmVwLT5uZXh0LnApLT5sZW5ndGgpOwotICAgY29uc3QgY2hhcl90eXBlIHdoYXQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyX3R5cGUqPihzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocmVwLT5uZXh0LnApICsgMSk7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBjb3VudCwgZGVzaXJlZDsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBkZXNpcmVkID0gCi0gICAgICAgICAoc3RkOjptaW4pKAotICAgICAgICAgICAgKHN0ZDo6c2l6ZV90KShncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluKSwKLSAgICAgICAgICAgIChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSk7Ci0gICAgICBjb3VudCA9IGRlc2lyZWQ7Ci0gICAgICArK2Rlc2lyZWQ7Ci0gICAgICBpZihpY2FzZSkKLSAgICAgIHsKLSAgICAgICAgIHdoaWxlKC0tZGVzaXJlZCAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlX25vY2FzZSgqcG9zaXRpb24pID09IHdoYXQpKQotICAgICAgICAgewotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHdoaWxlKC0tZGVzaXJlZCAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbikgPT0gd2hhdCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgY291bnQgPSBjb3VudCAtIGRlc2lyZWQ7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBjb3VudCA9IDA7Ci0gICAgICBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpID09IHdoYXQpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgZ3JlZWR5KQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgICAgcmV0dXJuIGJhY2t0cmFja190aWxsX21hdGNoKGNvdW50IC0gcmVwLT5taW4pOwotCi0gICAvLyBub24tZ3JlZWR5LCBrZWVwIHRyeWluZyB0aWxsIHdlIGdldCBhIG1hdGNoOgotICAgQmlkaUl0ZXJhdG9yIHNhdmVfcG9zOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKCh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgPT0gd2hhdCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIGNvdW5sZG4ndCByZXBlYXQgZXZlbiB0aG91Z2ggaXQgd2FzIHRoZSBvbmx5IG9wdGlvbgotICAgICAgfQotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwb3NpdGlvbiA9IHNhdmVfcG9zOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSA9PSB3aGF0KQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9d2hpbGUodHJ1ZSk7Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0X3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldCo+KHJlcC0+bmV4dC5wKS0+X21hcDsKLSAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIEJpZGlJdGVyYXRvciBlbmQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShlbmQsIChzdGQ6Om1pbikoKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpLCBkZXNpcmVkKSk7Ci0gICAgICBCaWRpSXRlcmF0b3Igb3JpZ2luKHBvc2l0aW9uKTsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBlbmQpICYmIG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmIG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgfQotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmIGdyZWVkeSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKGNvdW50IDwgcmVwLT5taW4pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLQotICAgLy8gbm9uLWdyZWVkeSwga2VlcCB0cnlpbmcgdGlsbCB3ZSBnZXQgYSBtYXRjaDoKLSAgIEJpZGlJdGVyYXRvciBzYXZlX3BvczsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICB7Ci0gICAgICAgICBpZihtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIGNvdW5sZG4ndCByZXBlYXQgZXZlbiB0aG91Z2ggaXQgd2FzIHRoZSBvbmx5IG9wdGlvbgotICAgICAgfQotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwb3NpdGlvbiA9IHNhdmVfcG9zOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0X3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgY29uc3QgcmVfc2V0X2xvbmc8Y2hhcl9jbGFzc190eXBlPiogc2V0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0X2xvbmc8Y2hhcl9jbGFzc190eXBlPio+KHBzdGF0ZS0+bmV4dC5wKTsKLSAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIEJpZGlJdGVyYXRvciBlbmQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShlbmQsIChzdGQ6Om1pbikoKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpLCBkZXNpcmVkKSk7Ci0gICAgICBCaWRpSXRlcmF0b3Igb3JpZ2luKHBvc2l0aW9uKTsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBlbmQpICYmIChwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgY291bnQgPSAodW5zaWduZWQpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShvcmlnaW4sIHBvc2l0aW9uKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAocG9zaXRpb24gIT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgZ3JlZWR5KQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgICAgcmV0dXJuIGJhY2t0cmFja190aWxsX21hdGNoKGNvdW50IC0gcmVwLT5taW4pOwotCi0gICAvLyBub24tZ3JlZWR5LCBrZWVwIHRyeWluZyB0aWxsIHdlIGdldCBhIG1hdGNoOgotICAgQmlkaUl0ZXJhdG9yIHNhdmVfcG9zOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKQotICAgICAgICAgewotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBjb3VubGRuJ3QgcmVwZWF0IGV2ZW4gdGhvdWdoIGl0IHdhcyB0aGUgb25seSBvcHRpb24KLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChyZXAtPm1heCA9PSBVSU5UX01BWCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgc2F2ZV9wb3MgPSBwb3NpdGlvbjsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKGNvdW50ID49IHJlcC0+bWF4KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcG9zaXRpb24gPSBzYXZlX3BvczsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZihwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmJhY2t0cmFja190aWxsX21hdGNoKHN0ZDo6c2l6ZV90IGNvdW50KQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkpCi0gICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgQmlkaUl0ZXJhdG9yIGJhY2t0cmFjayA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIGlmKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIAotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgaWYoY291bnQpCi0gICAgICB7Ci0gICAgICAgICBwb3NpdGlvbiA9IC0tYmFja3RyYWNrOwotICAgICAgICAgLS1jb3VudDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZShjb3VudCAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgewotICAgICAgICAgLS1wb3NpdGlvbjsKLSAgICAgICAgIC0tY291bnQ7Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgfQotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIGJhY2t0cmFjayA9IHBvc2l0aW9uOwotICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihjb3VudCA9PSAwKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcG9zaXRpb24gPSAtLWJhY2t0cmFjazsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAtLWNvdW50OwotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVjdXJzaW9uKCkKLXsKLSAgIE5ETkJPT1NUX0FTU0VSVChwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfcmVjdXJzZSk7Ci0gICAvLwotICAgLy8gU2V0IG5ldyBjYWxsIHN0YWNrOgotICAgLy8KLSAgIGlmKHJlY3Vyc2lvbl9zdGFjay5jYXBhY2l0eSgpID09IDApCi0gICB7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucmVzZXJ2ZSg1MCk7Ci0gICB9Ci0gICByZWN1cnNpb25fc3RhY2sucHVzaF9iYWNrKHJlY3Vyc2lvbl9pbmZvPHJlc3VsdHNfdHlwZT4oKSk7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzcyA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzID0gKm1fcHJlc3VsdDsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVwZWF0ZXJfc3RhY2sgPSBuZXh0X2NvdW50OwotICAgcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZSktPmFsdC5wOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotCi0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+KiBzYXZlZCA9IG5leHRfY291bnQ7Ci0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+IHIoJm5leHRfY291bnQpOyAvLyByZXNldHMgYWxsIHJlcGVhdCBjb3VudHMgc2luY2Ugd2UncmUgcmVjdXJzaW5nIGFuZCBzdGFydGluZyBmcmVzaCBvbiB0aG9zZQotICAgbmV4dF9jb3VudCA9ICZyOwotICAgYm9vbCByZXN1bHQgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICBuZXh0X2NvdW50ID0gc2F2ZWQ7Ci0KLSAgIGlmKCFyZXN1bHQpCi0gICB7Ci0gICAgICBuZXh0X2NvdW50ID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXBlYXRlcl9zdGFjazsKLSAgICAgICptX3ByZXN1bHQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHM7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrKCkKLXsKLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBpY2FzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aWNhc2U7Ci0gICBpZihpbmRleCA+IDApCi0gICB7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbiwgaW5kZXgpOwotICAgICAgfQotICAgICAgaWYoIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpKQotICAgICAgewotICAgICAgICAgaWYoaW5kZXggPT0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+IHNhdmVkID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKTsKLSAgICAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgICAgICAgcHN0YXRlID0gc2F2ZWQucHJldHVybl9hZGRyZXNzOwotICAgICAgICAgICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiogc2F2ZWRfY291bnQgPSBuZXh0X2NvdW50OwotICAgICAgICAgICAgbmV4dF9jb3VudCA9IHNhdmVkLnJlcGVhdGVyX3N0YWNrOwotICAgICAgICAgICAgKm1fcHJlc3VsdCA9IHNhdmVkLnJlc3VsdHM7Ci0gICAgICAgICAgICBpZighbWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLnB1c2hfYmFjayhzYXZlZCk7Ci0gICAgICAgICAgICAgICBuZXh0X2NvdW50ID0gc2F2ZWRfY291bnQ7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKChpbmRleCA8IDApICYmIChpbmRleCAhPSAtNCkpCi0gICB7Ci0gICAgICAvLyBtYXRjaGVkIGZvcndhcmQgbG9va2FoZWFkOgotICAgICAgcHN0YXRlID0gMDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcHN0YXRlID0gcHN0YXRlID8gcHN0YXRlLT5uZXh0LnAgOiAwOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX21hdGNoKCkKLXsKLSAgIGlmKCFyZWN1cnNpb25fc3RhY2suZW1wdHkoKSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwID09IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4KTsKLSAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBzYXZlZF9zdGF0ZSA9IHBzdGF0ZSA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzOwotICAgICAgKm1fcHJlc3VsdCA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0czsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgaWYoIW1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgIHsKLSAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5wdXNoX2JhY2socmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPigpKTsKLSAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzID0gc2F2ZWRfc3RhdGU7Ci0gICAgICAgICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMgPSAqbV9wcmVzdWx0OwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9udWxsKSAmJiAocG9zaXRpb24gPT0gKCptX3ByZXN1bHQpWzBdLmZpcnN0KSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfYWxsKSAmJiAocG9zaXRpb24gIT0gbGFzdCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbCkgJiYgKHBvc2l0aW9uID09IHNlYXJjaF9iYXNlKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbik7Ci0gICBwc3RhdGUgPSAwOwotICAgbV9oYXNfZm91bmRfbWF0Y2ggPSB0cnVlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkgPT0gbWF0Y2hfcG9zaXgpCi0gICB7Ci0gICAgICBtX3Jlc3VsdC5tYXliZV9hc3NpZ24oKm1fcHJlc3VsdCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX2FueSkgPT0gMCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgaWYobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVzdWx0LT5zaXplKCk7ICsraSkKLSAgICAgICAgIGlmKCgqbV9wcmVzdWx0KVtpXS5tYXRjaGVkKQotICAgICAgICAgICAgKCgqbV9wcmVzdWx0KVtpXSkuZ2V0X2NhcHR1cmVzKCkucHVzaF9iYWNrKCgqbV9wcmVzdWx0KVtpXSk7Ci0gICB9Ci0jZW5kaWYKLSAgIHJldHVybiB0cnVlOwotfQotCi0KLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcmltYXJ5X3RyYW5zZm9ybS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3ByaW1hcnlfdHJhbnNmb3JtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM5YmM2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3ByaW1hcnlfdHJhbnNmb3JtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRTogICAgICAgIHByaW1hcnlfdHJhbnNmb3JtLmhwcAotICAqICAgVkVSU0lPTjogICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSGV1cmlzdGljYWxseSBkZXRlcm1pbmVzIHRoZSBzb3J0IHN0cmluZyBmb3JtYXQgaW4gdXNlCi0gICogICAgICAgICAgICAgICAgYnkgdGhlIGN1cnJlbnQgbG9jYWxlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotCi1lbnVtewotICAgc29ydF9DLAotICAgc29ydF9maXhlZCwKLSAgIHNvcnRfZGVsaW0sCi0gICBzb3J0X3Vua25vd24KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBjaGFyVD4KLXVuc2lnbmVkIGNvdW50X2NoYXJzKGNvbnN0IFMmIHMsIGNoYXJUIGMpCi17Ci0gICAvLwotICAgLy8gQ291bnQgaG93IG1hbnkgb2NjdXJhbmNlcyBvZiBjaGFyYWN0ZXIgYyBvY2N1cgotICAgLy8gaW4gc3RyaW5nIHM6IGlmIGMgaXMgYSBkZWxpbWV0ZXIgYmV0d2VlbiBjb2xsYXRpb24KLSAgIC8vIGZpZWxkcywgdGhlbiB0aGlzIHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBmb3IgYWxsCi0gICAvLyBzb3J0IGtleXM6Ci0gICAvLwotICAgdW5zaWduZWQgaW50IGNvdW50ID0gMDsKLSAgIGZvcih1bnNpZ25lZCBwb3MgPSAwOyBwb3MgPCBzLnNpemUoKTsgKytwb3MpCi0gICB7Ci0gICAgICBpZihzW3Bvc10gPT0gYykgKytjb3VudDsKLSAgIH0KLSAgIHJldHVybiBjb3VudDsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVD4KLXVuc2lnbmVkIGZpbmRfc29ydF9zeW50YXgoY29uc3QgdHJhaXRzKiBwdCwgY2hhclQqIGRlbGltKQotewotICAgLy8KLSAgIC8vIGNvbXBhcmUgJ2EnIHdpdGggJ0EnIHRvIHNlZSBob3cgc2ltaWxhciB0aGV5IGFyZSwKLSAgIC8vIHNob3VsZCByZWFsbHkgdXNlIGEtYWNjdXRlIGJ1dCB3ZSBjYW4ndCBwb3J0YWJseSBkbyB0aGF0LAotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotCi0gICAvLyBTdXBwcmVzcyBpbmNvcnJlY3Qgd2FybmluZyBmb3IgTVNWQwotICAgKHZvaWQpcHQ7Ci0KLSAgIGNoYXJfdHlwZSBhWzJdID0geydhJywgJ1wwJywgfTsKLSAgIHN0cmluZ190eXBlIHNhKHB0LT50cmFuc2Zvcm0oYSwgYSsxKSk7Ci0gICBpZihzYSA9PSBhKQotICAgewotICAgICAgKmRlbGltID0gMDsKLSAgICAgIHJldHVybiBzb3J0X0M7Ci0gICB9Ci0gICBjaGFyX3R5cGUgQVsyXSA9IHsgJ0EnLCAnXDAnLCB9OwotICAgc3RyaW5nX3R5cGUgc0EocHQtPnRyYW5zZm9ybShBLCBBKzEpKTsKLSAgIGNoYXJfdHlwZSBjWzJdID0geyAnOycsICdcMCcsIH07Ci0gICBzdHJpbmdfdHlwZSBzYyhwdC0+dHJhbnNmb3JtKGMsIGMrMSkpOwotCi0gICBpbnQgcG9zID0gMDsKLSAgIHdoaWxlKChwb3MgPD0gc3RhdGljX2Nhc3Q8aW50PihzYS5zaXplKCkpKSAmJiAocG9zIDw9IHN0YXRpY19jYXN0PGludD4oc0Euc2l6ZSgpKSkgJiYgKHNhW3Bvc10gPT0gc0FbcG9zXSkpICsrcG9zOwotICAgLS1wb3M7Ci0gICBpZihwb3MgPCAwKQotICAgewotICAgICAgKmRlbGltID0gMDsKLSAgICAgIHJldHVybiBzb3J0X3Vua25vd247Ci0gICB9Ci0gICAvLwotICAgLy8gYXQgdGhpcyBwb2ludCBzYVtwb3NdIGlzIGVpdGhlciB0aGUgZW5kIG9mIGEgZml4ZWQgd2lkdGggZmllbGQKLSAgIC8vIG9yIHRoZSBjaGFyYWN0ZXIgdGhhdCBhY3RzIGFzIGEgZGVsaW1pdGVyOgotICAgLy8KLSAgIGNoYXJUIG1heWJlX2RlbGltID0gc2FbcG9zXTsKLSAgIGlmKChwb3MgIT0gMCkgJiYgKGNvdW50X2NoYXJzKHNhLCBtYXliZV9kZWxpbSkgPT0gY291bnRfY2hhcnMoc0EsIG1heWJlX2RlbGltKSkgJiYgKGNvdW50X2NoYXJzKHNhLCBtYXliZV9kZWxpbSkgPT0gY291bnRfY2hhcnMoc2MsIG1heWJlX2RlbGltKSkpCi0gICB7Ci0gICAgICAqZGVsaW0gPSBtYXliZV9kZWxpbTsKLSAgICAgIHJldHVybiBzb3J0X2RlbGltOwotICAgfQotICAgLy8KLSAgIC8vIE9LIGRvZW4ndCBsb29rIGxpa2UgYSBkZWxpbWl0ZXIsIHRyeSBmb3IgZml4ZWQgd2lkdGggZmllbGQ6Ci0gICAvLwotICAgaWYoKHNhLnNpemUoKSA9PSBzQS5zaXplKCkpICYmIChzYS5zaXplKCkgPT0gc2Muc2l6ZSgpKSkKLSAgIHsKLSAgICAgIC8vIG5vdGUgYXNzdW1lcyB0aGF0IHRoZSBmaXhlZCB3aWR0aCBmaWVsZCBpcyBsZXNzIHRoYW4KLSAgICAgIC8vIChudW1lcmljX2xpbWl0czxjaGFyVD46Om1heCkoKSwgc2hvdWxkIGJlIHRydWUgZm9yIGFsbCB0eXBlcwotICAgICAgLy8gSSBjYW4ndCBpbWFnaW5lIDEyNyBjaGFyYWN0ZXIgZmllbGRzLi4uCi0gICAgICAqZGVsaW0gPSBzdGF0aWNfY2FzdDxjaGFyVD4oKytwb3MpOwotICAgICAgcmV0dXJuIHNvcnRfZml4ZWQ7Ci0gICB9Ci0gICAvLwotICAgLy8gZG9uJ3Qga25vdyB3aGF0IGl0IGlzOgotICAgLy8KLSAgICpkZWxpbSA9IDA7Ci0gICByZXR1cm4gc29ydF91bmtub3duOwotfQotCi0KLSAgIH0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcm90ZWN0ZWRfY2FsbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3Byb3RlY3RlZF9jYWxsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg2MTVkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3Byb3RlY3RlZF9jYWxsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgYmFzaWNfcmVnZXhfY3JlYXRvci5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3JlZ2V4X2NyZWF0b3Igd2hpY2ggZmlsbHMgaW4KLSAgKiAgICAgICAgICAgICAgICB0aGUgZGF0YSBtZW1iZXJzIG9mIGEgcmVnZXhfZGF0YSBvYmplY3QuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUFJPVEVDVEVEX0NBTExfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1BST1RFQ1RFRF9DQUxMX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYWJzdHJhY3RfcHJvdGVjdGVkX2NhbGwKLXsKLXB1YmxpYzoKLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBleGVjdXRlKCljb25zdDsKLSAgIC8vIHRoaXMgc3RvcHMgZ2NjLTQgZnJvbSBjb21wbGFpbmluZzoKLSAgIHZpcnR1YWwgfmFic3RyYWN0X3Byb3RlY3RlZF9jYWxsKCl7fQotcHJpdmF0ZToKLSAgIHZpcnR1YWwgYm9vbCBjYWxsKCljb25zdCA9IDA7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGNvbmNyZXRlX3Byb3RlY3RlZF9jYWxsCi0gICA6IHB1YmxpYyBhYnN0cmFjdF9wcm90ZWN0ZWRfY2FsbAotewotcHVibGljOgotICAgdHlwZWRlZiBib29sIChUOjoqcHJvY190eXBlKSgpOwotICAgY29uY3JldGVfcHJvdGVjdGVkX2NhbGwoVCogbywgcHJvY190eXBlIHApCi0gICAgICA6IG9iaihvKSwgcHJvYyhwKSB7fQotcHJpdmF0ZToKLSAgIHZpcnR1YWwgYm9vbCBjYWxsKCljb25zdDsKLSAgIFQqIG9iajsKLSAgIHByb2NfdHlwZSBwcm9jOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1ib29sIGNvbmNyZXRlX3Byb3RlY3RlZF9jYWxsPFQ+OjpjYWxsKCljb25zdAotewotICAgcmV0dXJuIChvYmotPipwcm9jKSgpOwotfQotCi19Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdiYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNTI0NjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdiYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnYmFzZS5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIGNsYXNzIHJlZ2Jhc2UuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHQkFTRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHQkFTRV9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0vLwotLy8gY2xhc3MgcmVnYmFzZQotLy8gaGFuZGxlcyBlcnJvciBjb2RlcyBhbmQgZmxhZ3MKLS8vCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHJlZ2Jhc2UKLXsKLXB1YmxpYzoKLSAgIGVudW0gZmxhZ190eXBlXwotICAgewotICAgICAgLy8KLSAgICAgIC8vIERpdmlkZSB0aGUgZmxhZ3MgdXAgaW50byBsb2dpY2FsIGdyb3VwczoKLSAgICAgIC8vIGJpdHMgMC03IGluZGljYXRlIG1haW4gc3luYXR4IHR5cGUuCi0gICAgICAvLyBiaXRzIDgtMTUgaW5kaWNhdGUgc3ludGF4IHN1YnR5cGUuCi0gICAgICAvLyBiaXRzIDE2LTMxIGluZGljYXRlIG9wdGlvbnMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAotICAgICAgLy8gcmVnZXggc3ludGF4ZXMuCi0gICAgICAvLyBJbiBhbGwgY2FzZXMgdGhlIGRlZmF1bHQgaXMgMC4KLSAgICAgIC8vCi0gICAgICAvLyBNYWluIHN5bmF0eCBncm91cDoKLSAgICAgIC8vCi0gICAgICBwZXJsX3N5bnRheF9ncm91cCA9IDAsICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQKLSAgICAgIGJhc2ljX3N5bnRheF9ncm91cCA9IDEsICAgICAgICAgICAgICAgICAgICAgLy8gUE9TSVggYmFzaWMKLSAgICAgIGxpdGVyYWwgPSAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIGNoYXJhY3RlcnMgYXJlIGxpdGVyYWxzCi0gICAgICBtYWluX29wdGlvbl90eXBlID0gbGl0ZXJhbCB8IGJhc2ljX3N5bnRheF9ncm91cCB8IHBlcmxfc3ludGF4X2dyb3VwLCAvLyBldmVyeXRoaW5nIQotICAgICAgLy8KLSAgICAgIC8vIG9wdGlvbnMgc3BlY2lmaWMgdG8gcGVybCBncm91cDoKLSAgICAgIC8vCi0gICAgICBub19ia19yZWZzID0gMSA8PCA4LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFxkIG5vdCBhbGxvd2VkCi0gICAgICBub19wZXJsX2V4ID0gMSA8PCA5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgcGVybCBleHRlbnNpb25zCi0gICAgICBub19tb2RfbSA9IDEgPDwgMTAsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgUGVybCBtIG1vZGlmaWVyCi0gICAgICBtb2RfeCA9IDEgPDwgMTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBlcmwgeCBtb2RpZmllcgotICAgICAgbW9kX3MgPSAxIDw8IDEyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBzIG1vZGlmaWVyIG9uIChvdmVycmlkZXMgbWF0Y2hfbm90X2RvdF9uZXdsaW5lKQotICAgICAgbm9fbW9kX3MgPSAxIDw8IDEzLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBzIG1vZGlmaWVyIG9mZiAob3ZlcnJpZGVzIG1hdGNoX25vdF9kb3RfbmV3bGluZSkKLQotICAgICAgLy8KLSAgICAgIC8vIG9wdGlvbnMgc3BlY2lmaWMgdG8gYmFzaWMgZ3JvdXA6Ci0gICAgICAvLwotICAgICAgbm9fY2hhcl9jbGFzc2VzID0gMSA8PCA4LCAgICAgICAgICAgICAgICAgICAvLyBbWzpDTEFTUzpdXSBub3QgYWxsb3dlZAotICAgICAgbm9faW50ZXJ2YWxzID0gMSA8PCA5LCAgICAgICAgICAgICAgICAgICAgICAvLyB7eCx5fSBub3QgYWxsb3dlZAotICAgICAgYmtfcGx1c19xbSA9IDEgPDwgMTAsICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VzIFwrIGFuZCBcPwotICAgICAgYmtfdmJhciA9IDEgPDwgMTEsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgXHwgZm9yIGFsdGVybmF0aXZlcwotICAgICAgZW1hY3NfZXggPSAxIDw8IDEyLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIGVtYWNzIGV4dGVuc2lvbnMKLQotICAgICAgLy8KLSAgICAgIC8vIG9wdGlvbnMgY29tbW9uIHRvIGFsbCBncm91cHM6Ci0gICAgICAvLwotICAgICAgbm9fZXNjYXBlX2luX2xpc3RzID0gMSA8PCAxNiwgICAgICAgICAgICAgICAgICAgICAvLyAnXCcgbm90IHNwZWNpYWwgaW5zaWRlIFsuLi5dCi0gICAgICBuZXdsaW5lX2FsdCA9IDEgPDwgMTcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFxuIGlzIHRoZSBzYW1lIGFzIHwKLSAgICAgIG5vX2V4Y2VwdCA9IDEgPDwgMTgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gZXhjZXB0aW9uIG9uIGVycm9yCi0gICAgICBmYWlsYml0ID0gMSA8PCAxOSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVycm9yIGZsYWcKLSAgICAgIGljYXNlID0gMSA8PCAyMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBhcmUgbWF0Y2hlZCByZWdhcmRsZXNzIG9mIGNhc2UKLSAgICAgIG5vY29sbGF0ZSA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIGxvY2FsZSBzcGVjaWZpYyBjb2xsYXRpb24gKGRlcHJlY2F0ZWQpCi0gICAgICBjb2xsYXRlID0gMSA8PCAyMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBsb2NhbGUgc3BlY2lmaWMgY29sbGF0aW9uCi0gICAgICBub3N1YnMgPSAxIDw8IDIyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IG1hcmsgc3ViLWV4cHJlc3Npb25zCi0gICAgICBzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24gPSAxIDw8IDIzLCAgICAgICAgICAgIC8vIHNhdmUgc3ViZXhwcmVzc2lvbiBsb2NhdGlvbnMKLSAgICAgIG5vX2VtcHR5X2V4cHJlc3Npb25zID0gMSA8PCAyNCwgICAgICAgICAgICAgICAgICAgLy8gbm8gZW1wdHkgZXhwcmVzc2lvbnMgYWxsb3dlZAotICAgICAgb3B0aW1pemUgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgcmVhbGx5IHN1cHBvcnRlZAotICAgICAgCi0KLQotICAgICAgYmFzaWMgPSBiYXNpY19zeW50YXhfZ3JvdXAgfCBjb2xsYXRlIHwgbm9fZXNjYXBlX2luX2xpc3RzLAotICAgICAgZXh0ZW5kZWQgPSBub19ia19yZWZzIHwgY29sbGF0ZSB8IG5vX3BlcmxfZXggfCBub19lc2NhcGVfaW5fbGlzdHMsCi0gICAgICBub3JtYWwgPSAwLAotICAgICAgZW1hY3MgPSBiYXNpY19zeW50YXhfZ3JvdXAgfCBjb2xsYXRlIHwgZW1hY3NfZXggfCBia192YmFyLAotICAgICAgYXdrID0gbm9fYmtfcmVmcyB8IGNvbGxhdGUgfCBub19wZXJsX2V4LAotICAgICAgZ3JlcCA9IGJhc2ljIHwgbmV3bGluZV9hbHQsCi0gICAgICBlZ3JlcCA9IGV4dGVuZGVkIHwgbmV3bGluZV9hbHQsCi0gICAgICBzZWQgPSBiYXNpYywKLSAgICAgIHBlcmwgPSBub3JtYWwsCi0gICAgICBFQ01BU2NyaXB0ID0gbm9ybWFsLAotICAgICAgSmF2YVNjcmlwdCA9IG5vcm1hbCwKLSAgICAgIEpTY3JpcHQgPSBub3JtYWwKLSAgIH07Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGludCBmbGFnX3R5cGU7Ci0KLSAgIGVudW0gcmVzdGFydF9pbmZvCi0gICB7Ci0gICAgICByZXN0YXJ0X2FueSA9IDAsCi0gICAgICByZXN0YXJ0X3dvcmQgPSAxLAotICAgICAgcmVzdGFydF9saW5lID0gMiwKLSAgICAgIHJlc3RhcnRfYnVmID0gMywKLSAgICAgIHJlc3RhcnRfY29udGludWUgPSA0LAotICAgICAgcmVzdGFydF9saXQgPSA1LAotICAgICAgcmVzdGFydF9maXhlZF9saXQgPSA2LCAKLSAgICAgIHJlc3RhcnRfY291bnQgPSA3Ci0gICB9OwotfTsKLQotLy8KLS8vIHByb3ZpZGUgc3RkIGxpYiBwcm9wb3NhbCBjb21wYXRpYmxlIGNvbnN0YW50czoKLS8vCi1uYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzewotCi0gICBlbnVtIGZsYWdfdHlwZV8KLSAgIHsKLQotICAgICAgbm9fZXhjZXB0ID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fZXhjZXB0LAotICAgICAgZmFpbGJpdCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmZhaWxiaXQsCi0gICAgICBsaXRlcmFsID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bGl0ZXJhbCwKLSAgICAgIGljYXNlID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6aWNhc2UsCi0gICAgICBub2NvbGxhdGUgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub2NvbGxhdGUsCi0gICAgICBjb2xsYXRlID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6Y29sbGF0ZSwKLSAgICAgIG5vc3VicyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vc3VicywKLSAgICAgIG9wdGltaXplID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6b3B0aW1pemUsCi0gICAgICBia19wbHVzX3FtID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6YmtfcGx1c19xbSwKLSAgICAgIGJrX3ZiYXIgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpia192YmFyLAotICAgICAgbm9faW50ZXJ2YWxzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9faW50ZXJ2YWxzLAotICAgICAgbm9fY2hhcl9jbGFzc2VzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fY2hhcl9jbGFzc2VzLAotICAgICAgbm9fZXNjYXBlX2luX2xpc3RzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fZXNjYXBlX2luX2xpc3RzLAotICAgICAgbm9fbW9kX20gPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19tb2RfbSwKLSAgICAgIG1vZF94ID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bW9kX3gsCi0gICAgICBtb2RfcyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om1vZF9zLAotICAgICAgbm9fbW9kX3MgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19tb2RfcywKLSAgICAgIHNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbiA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbiwKLSAgICAgIG5vX2VtcHR5X2V4cHJlc3Npb25zID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fZW1wdHlfZXhwcmVzc2lvbnMsCi0KLSAgICAgIGJhc2ljID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6YmFzaWMsCi0gICAgICBleHRlbmRlZCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmV4dGVuZGVkLAotICAgICAgbm9ybWFsID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9ybWFsLAotICAgICAgZW1hY3MgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjplbWFjcywKLSAgICAgIGF3ayA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmF3aywKLSAgICAgIGdyZXAgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpncmVwLAotICAgICAgZWdyZXAgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjplZ3JlcCwKLSAgICAgIHNlZCA9IGJhc2ljLAotICAgICAgcGVybCA9IG5vcm1hbCwKLSAgICAgIEVDTUFTY3JpcHQgPSBub3JtYWwsCi0gICAgICBKYXZhU2NyaXB0ID0gbm9ybWFsLAotICAgICAgSlNjcmlwdCA9IG5vcm1hbAotICAgfTsKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6cmVnYmFzZTo6ZmxhZ190eXBlIHN5bnRheF9vcHRpb25fdHlwZTsKLQotfSAvLyBuYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZDMxMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4LmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgbmRuYm9vc3Q6OmJhc2ljX3JlZ2V4PD4gYW5kIGFzc29jaWF0ZWQKLSAgKiAgICAgICAgICAgICAgICBmdW5jdGlvbnMgYW5kIGNsYXNzZXMuIFRoaXMgaGVhZGVyIGlzIHRoZSBtYWluCi0gICogICAgICAgICAgICAgICAgZW50cnkgcG9pbnQgZm9yIHRoZSB0ZW1wbGF0ZSByZWdleCBjb2RlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX1JFR0VYX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRV9SRUdFWF9IUFBfSU5DTFVERUQKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLS8vIHdoYXQgZm9sbG93cyBpcyBhbGwgQysrIGRvbid0IGluY2x1ZGUgaW4gQyBidWlsZHMhIQotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1dPUktBUk9VTkRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfd29ya2Fyb3VuZC5ocHA+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GV0RfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXhfZndkLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcmVnZXhfdHJhaXRzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9SQVdfQlVGRkVSX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X01BVENIX0ZMQUdTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfZmxhZ3MuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1JBV19CVUZGRVJfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmF3X2J1ZmZlci5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHA+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9DSEFSX1JFR0VYX1RSQUlUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9jaGFyX3JlZ2V4X3RyYWl0cy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfU1RBVEVTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3N0YXRlcy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHQkFTRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdiYXNlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9JVEVSQVRPUl9UUkFJVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfQ1JFQVRPUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9jcmVhdG9yLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9QQVJTRVJfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfcGFyc2VyLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9TVUJfTUFUQ0hfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvc3ViX21hdGNoLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GT1JNQVRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZm9ybWF0LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9SRVNVTFRTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX3Jlc3VsdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1BST1RFQ1RFRF9DQUxMX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3Byb3RlY3RlZF9jYWxsLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSEVSX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlci5ocHA+Ci0jZW5kaWYKLS8vCi0vLyB0ZW1wbGF0ZSBpbnN0YW5jZXM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DSEFSX1QgY2hhcgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05BUlJPV19JTlNUQU5USUFURQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwPgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NIQVJfVCB3Y2hhcl90Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfV0lERV9JTlNUQU5USUFURQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwPgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkgJiYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVCkKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIHVuc2lnbmVkIHNob3J0Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfVVNfSU5TVEFOVElBVEUKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcD4KLSN1bmRlZiBORE5CT09TVF9SRUdFWF9DSEFSX1QKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotI2VuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotdHlwZWRlZiBiYXNpY19yZWdleDxjaGFyLCByZWdleF90cmFpdHM8Y2hhcj4gPiByZWdleDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHJlZ2V4X3RyYWl0czx3Y2hhcl90PiA+IHdyZWdleDsKLSNlbmRpZgotI2VuZGlmCi0KLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gY21hdGNoOwotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gc21hdGNoOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gd2NtYXRjaDsKLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiB3c21hdGNoOwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21hdGNoLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9TRUFSQ0hfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc2VhcmNoLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9JVEVSQVRPUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9pdGVyYXRvci5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0dSRVBfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZ3JlcC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfUkVQTEFDRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9yZXBsYWNlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9NRVJHRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9tZXJnZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1BMSVRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc3BsaXQuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAgLy8gX19jcGx1c3BsdXMKLQotI2VuZGlmICAvLyBpbmNsdWRlCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZm9ybWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZm9ybWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzOTdhMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Zvcm1hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTU2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDkgSm9obiBNYWRkb2NrCi0gKiBDb3B5cmlnaHQgMjAwOCBFcmljIE5pZWJsZXIuIAotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9mb3JtYXQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyBmb3JtYXR0aW5nIG91dHB1dCByb3V0aW5lcyBmb3Igc2VhcmNoIGFuZCByZXBsYWNlCi0gICogICAgICAgICAgICAgICAgb3BlcmF0aW9ucy4gIE5vdGUgdGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBpbmNsdWRlZAotICAqICAgICAgICAgICAgICAgIGJ5IHJlZ2V4LmhwcCwgZG8gbm90IGluY2x1ZGUgb24gaXRzIG93bi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GT1JNQVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZPUk1BVF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vLwotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbjoKLS8vCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IgPSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0ZDo6dmVjdG9yPHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+ID46OmFsbG9jYXRvcl90eXBlID4KLWNsYXNzIG1hdGNoX3Jlc3VsdHM7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vCi0vLyBzdHJ1Y3QgdHJpdmlhbF9mb3JtYXRfdHJhaXRzOgotLy8gZGVmaW5lcyBtaW5pbXVtIGxvY2FsaXNhdGlvbiBzdXBwb3J0IGZvciBmb3JtYXR0aW5nCi0vLyBpbiB0aGUgY2FzZSB0aGF0IHRoZSBhY3R1YWwgcmVnZXggdHJhaXRzIGlzIHVuYXZhaWxhYmxlLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCB0cml2aWFsX2Zvcm1hdF90cmFpdHMKLXsKLSAgIHR5cGVkZWYgY2hhclQgY2hhcl90eXBlOwotCi0gICBzdGF0aWMgc3RkOjpwdHJkaWZmX3QgbGVuZ3RoKGNvbnN0IGNoYXJUKiBwKQotICAgewotICAgICAgcmV0dXJuIGdsb2JhbF9sZW5ndGgocCk7Ci0gICB9Ci0gICBzdGF0aWMgY2hhclQgdG9sb3dlcihjaGFyVCBjKQotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX2xvd2VyKGMpOwotICAgfQotICAgc3RhdGljIGNoYXJUIHRvdXBwZXIoY2hhclQgYykKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF91cHBlcihjKTsKLSAgIH0KLSAgIHN0YXRpYyBpbnQgdmFsdWUoY29uc3QgY2hhclQgYywgaW50IHJhZGl4KQotICAgewotICAgICAgaW50IHJlc3VsdCA9IGdsb2JhbF92YWx1ZShjKTsKLSAgICAgIHJldHVybiByZXN1bHQgPj0gcmFkaXggPyAtMSA6IHJlc3VsdDsKLSAgIH0KLSAgIGludCB0b2koY29uc3QgY2hhclQqJiBwMSwgY29uc3QgY2hhclQqIHAyLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBnbG9iYWxfdG9pKHAxLCBwMiwgcmFkaXgsICp0aGlzKTsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLWNsYXNzIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcgotewotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICBiYXNpY19yZWdleF9mb3JtYXR0ZXIoT3V0cHV0SXRlcmF0b3IgbywgY29uc3QgUmVzdWx0cyYgciwgY29uc3QgdHJhaXRzJiB0KQotICAgICAgOiBtX3RyYWl0cyh0KSwgbV9yZXN1bHRzKHIpLCBtX291dChvKSwgbV9zdGF0ZShvdXRwdXRfY29weSksIG1fcmVzdG9yZV9zdGF0ZShvdXRwdXRfY29weSksIG1faGF2ZV9jb25kaXRpb25hbChmYWxzZSkge30KLSAgIE91dHB1dEl0ZXJhdG9yIGZvcm1hdChGb3J3YXJkSXRlciBwMSwgRm9yd2FyZEl0ZXIgcDIsIG1hdGNoX2ZsYWdfdHlwZSBmKTsKLSAgIE91dHB1dEl0ZXJhdG9yIGZvcm1hdChGb3J3YXJkSXRlciBwMSwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICB7Ci0gICAgICByZXR1cm4gZm9ybWF0KHAxLCBwMSArIG1fdHJhaXRzLmxlbmd0aChwMSksIGYpOwotICAgfQotcHJpdmF0ZToKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUmVzdWx0czo6dmFsdWVfdHlwZSBzdWJfbWF0Y2hfdHlwZTsKLSAgIGVudW0gb3V0cHV0X3N0YXRlCi0gICB7Ci0gICAgICBvdXRwdXRfY29weSwKLSAgICAgIG91dHB1dF9uZXh0X2xvd2VyLAotICAgICAgb3V0cHV0X25leHRfdXBwZXIsCi0gICAgICBvdXRwdXRfbG93ZXIsCi0gICAgICBvdXRwdXRfdXBwZXIsCi0gICAgICBvdXRwdXRfbm9uZQotICAgfTsKLQotICAgdm9pZCBwdXQoY2hhcl90eXBlIGMpOwotICAgdm9pZCBwdXQoY29uc3Qgc3ViX21hdGNoX3R5cGUmIHN1Yik7Ci0gICB2b2lkIGZvcm1hdF9hbGwoKTsKLSAgIHZvaWQgZm9ybWF0X3BlcmwoKTsKLSAgIHZvaWQgZm9ybWF0X2VzY2FwZSgpOwotICAgdm9pZCBmb3JtYXRfY29uZGl0aW9uYWwoKTsKLSAgIHZvaWQgZm9ybWF0X3VudGlsX3Njb3BlX2VuZCgpOwotICAgYm9vbCBoYW5kbGVfcGVybF92ZXJiKGJvb2wgaGF2ZV9icmFjZSk7Ci0KLSAgIGlubGluZSB0eXBlbmFtZSBSZXN1bHRzOjp2YWx1ZV90eXBlIGNvbnN0JiBnZXRfbmFtZWRfc3ViKEZvcndhcmRJdGVyIGksIEZvcndhcmRJdGVyIGosIGNvbnN0IG1wbDo6ZmFsc2VfJikKLSAgIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gdihpLCBqKTsKLSAgICAgIHJldHVybiAoaSAhPSBqKSA/IHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uKCZ2WzBdLCAmdlswXSArIHYuc2l6ZSgpKQotICAgICAgICAgOiB0aGlzLT5tX3Jlc3VsdHMubmFtZWRfc3ViZXhwcmVzc2lvbihzdGF0aWNfY2FzdDxjb25zdCBjaGFyX3R5cGUqPigwKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oMCkpOwotICAgfQotICAgaW5saW5lIHR5cGVuYW1lIFJlc3VsdHM6OnZhbHVlX3R5cGUgY29uc3QmIGdldF9uYW1lZF9zdWIoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaiwgY29uc3QgbXBsOjp0cnVlXyYpCi0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb24oaSwgaik7Ci0gICB9Ci0gICBpbmxpbmUgdHlwZW5hbWUgUmVzdWx0czo6dmFsdWVfdHlwZSBjb25zdCYgZ2V0X25hbWVkX3N1YihGb3J3YXJkSXRlciBpLCBGb3J3YXJkSXRlciBqKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Rm9yd2FyZEl0ZXIsIGNvbnN0IGNoYXJfdHlwZSo+Ojp0eXBlIHRhZ190eXBlOwotICAgICAgcmV0dXJuIGdldF9uYW1lZF9zdWIoaSwgaiwgdGFnX3R5cGUoKSk7Ci0gICB9Ci0gICBpbmxpbmUgaW50IGdldF9uYW1lZF9zdWJfaW5kZXgoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaiwgY29uc3QgbXBsOjpmYWxzZV8mKQotICAgewotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiB2KGksIGopOwotICAgICAgcmV0dXJuIChpICE9IGopID8gdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoJnZbMF0sICZ2WzBdICsgdi5zaXplKCkpCi0gICAgICAgICA6IHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN0YXRpY19jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KDApLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyX3R5cGUqPigwKSk7Ci0gICB9Ci0gICBpbmxpbmUgaW50IGdldF9uYW1lZF9zdWJfaW5kZXgoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaiwgY29uc3QgbXBsOjp0cnVlXyYpCi0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoaSwgaik7Ci0gICB9Ci0gICBpbmxpbmUgaW50IGdldF9uYW1lZF9zdWJfaW5kZXgoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaikKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPEZvcndhcmRJdGVyLCBjb25zdCBjaGFyX3R5cGUqPjo6dHlwZSB0YWdfdHlwZTsKLSAgICAgIHJldHVybiBnZXRfbmFtZWRfc3ViX2luZGV4KGksIGosIHRhZ190eXBlKCkpOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSAgIC8vIG1zdmMtOC4wIGlzc3VlcyBhIHNwdXJpb3VzIHdhcm5pbmcgb24gdGhlIGNhbGwgdG8gc3RkOjphZHZhbmNlIGhlcmU6Ci0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLSAgIGlubGluZSBpbnQgdG9pKEZvcndhcmRJdGVyJiBpLCBGb3J3YXJkSXRlciBqLCBpbnQgYmFzZSwgY29uc3QgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfJikKLSAgIHsKLSAgICAgIGlmKGkgIT0gaikKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gdihpLCBqKTsKLSAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogc3RhcnQgPSAmdlswXTsKLSAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogcG9zID0gc3RhcnQ7Ci0gICAgICAgICBpbnQgciA9IG1fdHJhaXRzLnRvaShwb3MsICZ2WzBdICsgdi5zaXplKCksIGJhc2UpOwotICAgICAgICAgc3RkOjphZHZhbmNlKGksIHBvcyAtIHN0YXJ0KTsKLSAgICAgICAgIHJldHVybiByOwotICAgICAgfQotICAgICAgcmV0dXJuIC0xOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgIGlubGluZSBpbnQgdG9pKEZvcndhcmRJdGVyJiBpLCBGb3J3YXJkSXRlciBqLCBpbnQgYmFzZSwgY29uc3QgbmRuYm9vc3Q6Om1wbDo6dHJ1ZV8mKQotICAgewotICAgICAgcmV0dXJuIG1fdHJhaXRzLnRvaShpLCBqLCBiYXNlKTsKLSAgIH0KLSAgIGlubGluZSBpbnQgdG9pKEZvcndhcmRJdGVyJiBpLCBGb3J3YXJkSXRlciBqLCBpbnQgYmFzZSkKLSAgIHsKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmICgoX19JTlRFTF9DT01QSUxFUiA9PSA5OTk5KSB8fCAoX19JTlRFTF9DT01QSUxFUiA9PSAxMjEwKSkKLSAgICAgIC8vIFdvcmthcm91bmQgZm9yIEludGVsIHN1cHBvcnQgaXNzdWUgIzY1NjY1NC4KLSAgICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC82MzU5Ci0gICAgICByZXR1cm4gdG9pKGksIGosIGJhc2UsIG1wbDo6ZmFsc2VfKCkpOwotI2Vsc2UKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPEZvcndhcmRJdGVyLCBjb25zdCBjaGFyX3R5cGUqJj46OnR5cGUgdGFnX3R5cGU7Ci0gICAgICByZXR1cm4gdG9pKGksIGosIGJhc2UsIHRhZ190eXBlKCkpOwotI2VuZGlmCi0gICB9Ci0KLSAgIGNvbnN0IHRyYWl0cyYgICAgbV90cmFpdHM7ICAgICAgIC8vIHRoZSB0cmFpdHMgY2xhc3MgZm9yIGxvY2FsaXNlZCBmb3JtYXR0aW5nIG9wZXJhdGlvbnMKLSAgIGNvbnN0IFJlc3VsdHMmICAgbV9yZXN1bHRzOyAgICAgLy8gdGhlIG1hdGNoX3Jlc3VsdHMgYmVpbmcgdXNlZC4KLSAgIE91dHB1dEl0ZXJhdG9yICAgbV9vdXQ7ICAgICAgICAgLy8gd2hlcmUgdG8gc2VuZCBvdXRwdXQuCi0gICBGb3J3YXJkSXRlciAgICAgIG1fcG9zaXRpb247ICAvLyBmb3JtYXQgc3RyaW5nLCBjdXJyZW50IHBvc2l0aW9uCi0gICBGb3J3YXJkSXRlciAgICAgIG1fZW5kOyAgICAgICAvLyBmb3JtYXQgc3RyaW5nIGVuZAotICAgbWF0Y2hfZmxhZ190eXBlICBtX2ZsYWdzOyAgICAgIC8vIGZvcm1hdCBmbGFncyB0byB1c2UKLSAgIG91dHB1dF9zdGF0ZSAgICAgbV9zdGF0ZTsgICAgICAvLyB3aGF0IHRvIGRvIHdpdGggdGhlIG5leHQgY2hhcmFjdGVyCi0gICBvdXRwdXRfc3RhdGUgICAgIG1fcmVzdG9yZV9zdGF0ZTsgIC8vIHdoYXQgc3RhdGUgdG8gcmVzdG9yZSB0by4KLSAgIGJvb2wgICAgICAgICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsOyAvLyB3ZSBhcmUgcGFyc2luZyBhIGNvbmRpdGlvbmFsCi1wcml2YXRlOgotICAgYmFzaWNfcmVnZXhfZm9ybWF0dGVyKGNvbnN0IGJhc2ljX3JlZ2V4X2Zvcm1hdHRlciYpOwotICAgYmFzaWNfcmVnZXhfZm9ybWF0dGVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfcmVnZXhfZm9ybWF0dGVyJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci1PdXRwdXRJdGVyYXRvciBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXQoRm9yd2FyZEl0ZXIgcDEsIEZvcndhcmRJdGVyIHAyLCBtYXRjaF9mbGFnX3R5cGUgZikKLXsKLSAgIG1fcG9zaXRpb24gPSBwMTsKLSAgIG1fZW5kID0gcDI7Ci0gICBtX2ZsYWdzID0gZjsKLSAgIGZvcm1hdF9hbGwoKTsKLSAgIHJldHVybiBtX291dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXRfYWxsKCkKLXsKLSAgIC8vIG92ZXIgYW5kIG92ZXI6Ci0gICB3aGlsZShtX3Bvc2l0aW9uICE9IG1fZW5kKQotICAgewotICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgY2FzZSAnJic6Ci0gICAgICAgICBpZihtX2ZsYWdzICYgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgcHV0KG1fcmVzdWx0c1swXSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnXFwnOgotICAgICAgICAgZm9ybWF0X2VzY2FwZSgpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICcoJzoKLSAgICAgICAgIGlmKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgYm9vbCBoYXZlX2NvbmRpdGlvbmFsID0gbV9oYXZlX2NvbmRpdGlvbmFsOwotICAgICAgICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3JtYXRfdW50aWxfc2NvcGVfZW5kKCk7Ci0gICAgICAgICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSBoYXZlX2NvbmRpdGlvbmFsOwotICAgICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCgqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCcpJykpOwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOyAgLy8gc2tpcCB0aGUgY2xvc2luZyAnKScKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnKSc6Ci0gICAgICAgICBpZihtX2ZsYWdzICYgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2FsbCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJzonOgotICAgICAgICAgaWYoKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsKSAmJiBtX2hhdmVfY29uZGl0aW9uYWwpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICc/JzoKLSAgICAgICAgIGlmKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgZm9ybWF0X2NvbmRpdGlvbmFsKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJyQnOgotICAgICAgICAgaWYoKG1fZmxhZ3MgJiBmb3JtYXRfc2VkKSA9PSAwKQotICAgICAgICAgewotICAgICAgICAgICAgZm9ybWF0X3BlcmwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgLy8gbm90IGEgc3BlY2lhbCBjaGFyYWN0ZXI6Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X3BlcmwoKQotewotICAgLy8KLSAgIC8vIE9uIGVudHJ5ICptX3Bvc2l0aW9uIHBvaW50cyB0byBhICckJyBjaGFyYWN0ZXIKLSAgIC8vIG91dHB1dCB0aGUgaW5mb3JtYXRpb24gdGhhdCBnb2VzIHdpdGggaXQ6Ci0gICAvLwotICAgTkROQk9PU1RfQVNTRVJUKCptX3Bvc2l0aW9uID09ICckJyk7Ci0gICAvLwotICAgLy8gc2VlIGlmIHRoaXMgaXMgYSB0cmFpbGluZyAnJCc6Ci0gICAvLwotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIC8vCi0gICAvLyBPSyBmaW5kIG91dCB3aGF0IGtpbmQgaXQgaXM6Ci0gICAvLwotICAgYm9vbCBoYXZlX2JyYWNlID0gZmFsc2U7Ci0gICBGb3J3YXJkSXRlciBzYXZlX3Bvc2l0aW9uID0gbV9wb3NpdGlvbjsKLSAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgIHsKLSAgIGNhc2UgJyYnOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0c1swXSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ2AnOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0cy5wcmVmaXgoKSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ1wnJzoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMuc3VmZml4KCkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICckJzoKLSAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnKyc6Ci0gICAgICBpZigoKyttX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ3snKSkKLSAgICAgIHsKLSAgICAgICAgIEZvcndhcmRJdGVyIGJhc2UgPSArK21fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uICE9ICd9JykpICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBOYW1lZCBzdWItZXhwcmVzc2lvbjoKLSAgICAgICAgICAgIHB1dChnZXRfbmFtZWRfc3ViKGJhc2UsIG1fcG9zaXRpb24pKTsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiA9IC0tYmFzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCgodGhpcy0+bV9yZXN1bHRzKVt0aGlzLT5tX3Jlc3VsdHMuc2l6ZSgpID4gMSA/IHN0YXRpY19jYXN0PGludD4odGhpcy0+bV9yZXN1bHRzLnNpemUoKSAtIDEpIDogMV0pOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICd7JzoKLSAgICAgIGhhdmVfYnJhY2UgPSB0cnVlOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBkZWZhdWx0OgotICAgICAgLy8gc2VlIGlmIHdlIGhhdmUgYSBudW1iZXI6Ci0gICAgICB7Ci0gICAgICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKTsKLSAgICAgICAgIC8vbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMiksIGxlbik7Ci0gICAgICAgICBpbnQgdiA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbGVuLCAxMCk7Ci0gICAgICAgICBpZigodiA8IDApIHx8IChoYXZlX2JyYWNlICYmICgobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKCptX3Bvc2l0aW9uICE9ICd9JykpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIExvb2sgZm9yIGEgUGVybC01LjEwIHZlcmI6Ci0gICAgICAgICAgICBpZighaGFuZGxlX3BlcmxfdmVyYihoYXZlX2JyYWNlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIGxlYXZlIHRoZSAkIGFzIGlzLCBhbmQgY2Fycnkgb246Ci0gICAgICAgICAgICAgICBtX3Bvc2l0aW9uID0gLS1zYXZlX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgLy8gb3RoZXJ3aXNlIG91dHB1dCBzdWIgdjoKLSAgICAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHNbdl0pOwotICAgICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotYm9vbCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+OjpoYW5kbGVfcGVybF92ZXJiKGJvb2wgaGF2ZV9icmFjZSkKLXsKLSAgIC8vIAotICAgLy8gV2UgbWF5IGhhdmUgYSBjYXBpdGFsaXNlZCBzdHJpbmcgY29udGFpbmluZyBhIFBlcmwgYWN0aW9uOgotICAgLy8KLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTUFUQ0hbXSA9IHsgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgUFJFTUFUQ0hbXSA9IHsgJ1AnLCAnUicsICdFJywgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgUE9TVE1BVENIW10gPSB7ICdQJywgJ08nLCAnUycsICdUJywgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTEFTVF9QQVJFTl9NQVRDSFtdID0geyAnTCcsICdBJywgJ1MnLCAnVCcsICdfJywgJ1AnLCAnQScsICdSJywgJ0UnLCAnTicsICdfJywgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTEFTVF9TVUJNQVRDSF9SRVNVTFRbXSA9IHsgJ0wnLCAnQScsICdTJywgJ1QnLCAnXycsICdTJywgJ1UnLCAnQicsICdNJywgJ0EnLCAnVCcsICdDJywgJ0gnLCAnXycsICdSJywgJ0UnLCAnUycsICdVJywgJ0wnLCAnVCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTEFTVF9TVUJNQVRDSF9SRVNVTFRfQUxUW10gPSB7ICdeJywgJ04nIH07Ci0KLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZihoYXZlX2JyYWNlICYmICgqbV9wb3NpdGlvbiA9PSAnXicpKQotICAgICAgKyttX3Bvc2l0aW9uOwotCi0gICBzdGQ6OnB0cmRpZmZfdCBtYXhfbGVuID0gbV9lbmQgLSBtX3Bvc2l0aW9uOwotCi0gICBpZigobWF4X2xlbiA+PSA1KSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyA1LCBNQVRDSCkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uICs9IDU7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSA1OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0c1swXSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtYXhfbGVuID49IDgpICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDgsIFBSRU1BVENIKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gODsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDg7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLnByZWZpeCgpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1heF9sZW4gPj0gOSkgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgOSwgUE9TVE1BVENIKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gOTsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLnN1ZmZpeCgpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1heF9sZW4gPj0gMTYpICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDE2LCBMQVNUX1BBUkVOX01BVENIKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gMTY7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAxNjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCgodGhpcy0+bV9yZXN1bHRzKVt0aGlzLT5tX3Jlc3VsdHMuc2l6ZSgpID4gMSA/IHN0YXRpY19jYXN0PGludD4odGhpcy0+bV9yZXN1bHRzLnNpemUoKSAtIDEpIDogMV0pOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobWF4X2xlbiA+PSAyMCkgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgMjAsIExBU1RfU1VCTUFUQ0hfUkVTVUxUKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gMjA7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAyMDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMuZ2V0X2xhc3RfY2xvc2VkX3BhcmVuKCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobWF4X2xlbiA+PSAyKSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyAyLCBMQVNUX1NVQk1BVENIX1JFU1VMVF9BTFQpKQotICAgewotICAgICAgbV9wb3NpdGlvbiArPSAyOwotICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gMjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMuZ2V0X2xhc3RfY2xvc2VkX3BhcmVuKCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X2VzY2FwZSgpCi17Ci0gICAvLyBza2lwIHRoZSBlc2NhcGUgYW5kIGNoZWNrIGZvciB0cmFpbGluZyBlc2NhcGU6Ci0gICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXFwnKSk7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICAvLyBub3cgc3dpdGNoIG9uIHRoZSBlc2NhcGUgdHlwZToKLSAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgIHsKLSAgIGNhc2UgJ2EnOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xhJykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdmJzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcZicpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnbic6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXG4nKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3InOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xyJykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICd0JzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcdCcpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAndic6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHYnKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3gnOgotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ3gnKSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAvLyBtYXliZSBoYXZlIFx4e2RkZH0KLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ3snKSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGludCB2YWwgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDE2KTsKLSAgICAgICAgIGlmKHZhbCA8IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBpbnZhbGlkIHZhbHVlIHRyZWF0IGV2ZXJ5dGhpbmcgYXMgbGl0ZXJhbHM6Ci0gICAgICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPigneCcpKTsKLSAgICAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCd7JykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgaWYoKG1fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICgqbV9wb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCd9JykpKQotICAgICAgICAgewotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUoKm1fcG9zaXRpb24gIT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXFwnKSkKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KHZhbCkpOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX3Bvc2l0aW9uLCBtX2VuZCk7Ci0gICAgICAgICBsZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigyKSwgbGVuKTsKLSAgICAgICAgIGludCB2YWwgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgMTYpOwotICAgICAgICAgaWYodmFsIDwgMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KHZhbCkpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICBjYXNlICdjJzoKLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCptX3Bvc2l0aW9uKysgJSAzMikpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdlJzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KDI3KSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICAvLyBzZWUgaWYgd2UgaGF2ZSBhIHBlcmwgc3BlY2lmaWMgZXNjYXBlOgotICAgICAgaWYoKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkKSA9PSAwKQotICAgICAgewotICAgICAgICAgYm9vbCBicmVha291dCA9IGZhbHNlOwotICAgICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgICAgewotICAgICAgICAgY2FzZSAnbCc6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBtX3Jlc3RvcmVfc3RhdGUgPSBtX3N0YXRlOwotICAgICAgICAgICAgbV9zdGF0ZSA9IG91dHB1dF9uZXh0X2xvd2VyOwotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdMJzoKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbG93ZXI7Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgbV9yZXN0b3JlX3N0YXRlID0gbV9zdGF0ZTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbmV4dF91cHBlcjsKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAnVSc6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBtX3N0YXRlID0gb3V0cHV0X3VwcGVyOwotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdFJzoKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfY29weTsKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgaWYoYnJlYWtvdXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIHNlZSBpZiB3ZSBoYXZlIGEgXG4gc2VkIHN0eWxlIGJhY2tyZWZlcmVuY2U6Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKTsKLSAgICAgIGxlbiA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDEpLCBsZW4pOwotICAgICAgaW50IHYgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbitsZW4sIDEwKTsKLSAgICAgIGlmKCh2ID4gMCkgfHwgKCh2ID09IDApICYmIChtX2ZsYWdzICYgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkKSkpCi0gICAgICB7Ci0gICAgICAgICBwdXQobV9yZXN1bHRzW3ZdKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZSBpZih2ID09IDApCi0gICAgICB7Ci0gICAgICAgICAvLyBvY3RhbCBlY2FwZSBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpOwotICAgICAgICAgbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oNCksIGxlbik7Ci0gICAgICAgICB2ID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDgpOwotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHYgPj0gMCk7Ci0gICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPih2KSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIE90aGVyd2lzZSBvdXRwdXQgdGhlIGNoYXJhY3RlciAiYXMgaXMiOgotICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgICAgYnJlYWs7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X2NvbmRpdGlvbmFsKCkKLXsKLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICAvLyBvb3BzIHRyYWlsaW5nICc/JzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCc/JykpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgaW50IHY7Ci0gICBpZigqbV9wb3NpdGlvbiA9PSAneycpCi0gICB7Ci0gICAgICBGb3J3YXJkSXRlciBiYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHYgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKHYgPCAwKQotICAgICAgewotICAgICAgICAgLy8gVHJ5IGEgbmFtZWQgc3ViZXhwcmVzc2lvbjoKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gIT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHYgPSB0aGlzLT5nZXRfbmFtZWRfc3ViX2luZGV4KGJhc2UgKyAxLCBtX3Bvc2l0aW9uKTsKLSAgICAgIH0KLSAgICAgIGlmKCh2IDwgMCkgfHwgKCptX3Bvc2l0aW9uICE9ICd9JykpCi0gICAgICB7Ci0gICAgICAgICBtX3Bvc2l0aW9uID0gYmFzZTsKLSAgICAgICAgIC8vIG9vcHMgdHJhaWxpbmcgJz8nOgotICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJz8nKSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAvLyBTa2lwIHRyYWlsaW5nICd9JzoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpOwotICAgICAgbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMiksIGxlbik7Ci0gICAgICB2ID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDEwKTsKLSAgIH0KLSAgIGlmKHYgPCAwKQotICAgewotICAgICAgLy8gb29wcyBub3QgYSBudW1iZXI6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignPycpKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLQotICAgLy8gb3V0cHV0IHZhcmllcyBkZXBlbmRpbmcgdXBvbiB3aGV0aGVyIHN1Yi1leHByZXNzaW9uIHYgbWF0Y2hlZCBvciBub3Q6Ci0gICBpZihtX3Jlc3VsdHNbdl0ubWF0Y2hlZCkKLSAgIHsKLSAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IHRydWU7Ci0gICAgICBmb3JtYXRfYWxsKCk7Ci0gICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSBmYWxzZTsKLSAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignOicpKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHNraXAgdGhlICc6JzoKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIC8vIHNhdmUgb3V0cHV0IHN0YXRlLCB0aGVuIHR1cm4gaXQgb2ZmOgotICAgICAgICAgb3V0cHV0X3N0YXRlIHNhdmVkX3N0YXRlID0gbV9zdGF0ZTsKLSAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbm9uZTsKLSAgICAgICAgIC8vIGZvcm1hdCB0aGUgcmVzdCBvZiB0aGlzIHNjb3BlOgotICAgICAgICAgZm9ybWF0X3VudGlsX3Njb3BlX2VuZCgpOwotICAgICAgICAgLy8gcmVzdG9yZSBvdXRwdXQgc3RhdGU6Ci0gICAgICAgICBtX3N0YXRlID0gc2F2ZWRfc3RhdGU7Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBzYXZlIG91dHB1dCBzdGF0ZSwgdGhlbiB0dXJuIGl0IG9mZjoKLSAgICAgIG91dHB1dF9zdGF0ZSBzYXZlZF9zdGF0ZSA9IG1fc3RhdGU7Ci0gICAgICBtX3N0YXRlID0gb3V0cHV0X25vbmU7Ci0gICAgICAvLyBmb3JtYXQgdW50aWwgJzonIG9yICcpJzoKLSAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IHRydWU7Ci0gICAgICBmb3JtYXRfYWxsKCk7Ci0gICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSBmYWxzZTsKLSAgICAgIC8vIHJlc3RvcmUgc3RhdGU6Ci0gICAgICBtX3N0YXRlID0gc2F2ZWRfc3RhdGU7Ci0gICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJzonKSkpCi0gICAgICB7Ci0gICAgICAgICAvLyBza2lwIHRoZSAnOic6Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAvLyBmb3JtYXQgdGhlIHJlc3Qgb2YgdGhpcyBzY29wZToKLSAgICAgICAgIGZvcm1hdF91bnRpbF9zY29wZV9lbmQoKTsKLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXRfdW50aWxfc2NvcGVfZW5kKCkKLXsKLSAgIGRvCi0gICB7Ci0gICAgICBmb3JtYXRfYWxsKCk7Ci0gICAgICBpZigobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJyknKSkpCi0gICAgICAgICByZXR1cm47Ci0gICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICB9d2hpbGUobV9wb3NpdGlvbiAhPSBtX2VuZCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6cHV0KGNoYXJfdHlwZSBjKQotewotICAgLy8gd3JpdGUgYSBzaW5nbGUgY2hhcmFjdGVyIHRvIG91dHB1dAotICAgLy8gYWNjb3JkaW5nIHRvIHdoaWNoIGNhc2UgdHJhbnNsYXRpb24gbW9kZSB3ZSBhcmUgaW46Ci0gICBzd2l0Y2godGhpcy0+bV9zdGF0ZSkKLSAgIHsKLSAgIGNhc2Ugb3V0cHV0X25vbmU6Ci0gICAgICByZXR1cm47Ci0gICBjYXNlIG91dHB1dF9uZXh0X2xvd2VyOgotICAgICAgYyA9IG1fdHJhaXRzLnRvbG93ZXIoYyk7Ci0gICAgICB0aGlzLT5tX3N0YXRlID0gbV9yZXN0b3JlX3N0YXRlOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIG91dHB1dF9uZXh0X3VwcGVyOgotICAgICAgYyA9IG1fdHJhaXRzLnRvdXBwZXIoYyk7Ci0gICAgICB0aGlzLT5tX3N0YXRlID0gbV9yZXN0b3JlX3N0YXRlOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIG91dHB1dF9sb3dlcjoKLSAgICAgIGMgPSBtX3RyYWl0cy50b2xvd2VyKGMpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIG91dHB1dF91cHBlcjoKLSAgICAgIGMgPSBtX3RyYWl0cy50b3VwcGVyKGMpOwotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gICB9Ci0gICAqbV9vdXQgPSBjOwotICAgKyttX291dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+OjpwdXQoY29uc3Qgc3ViX21hdGNoX3R5cGUmIHN1YikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoX3R5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7Ci0gICBpdGVyYXRvcl90eXBlIGkgPSBzdWIuZmlyc3Q7Ci0gICB3aGlsZShpICE9IHN1Yi5zZWNvbmQpCi0gICB7Ci0gICAgICBwdXQoKmkpOwotICAgICAgKytpOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUz4KLWNsYXNzIHN0cmluZ19vdXRfaXRlcmF0b3IKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZT4KLSNlbmRpZgotewotICAgUyogb3V0OwotcHVibGljOgotICAgc3RyaW5nX291dF9pdGVyYXRvcihTJiBzKSA6IG91dCgmcykge30KLSAgIHN0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQotICAgc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICBzdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQotICAgc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3I9KHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdikgCi0gICB7IAotICAgICAgb3V0LT5hcHBlbmQoMSwgdik7IAotICAgICAgcmV0dXJuICp0aGlzOyAKLSAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdmFsdWVfdHlwZSogcG9pbnRlcjsKLSAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3IsIGNsYXNzIEFsbG9jLCBjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgdHJhaXRzPgotT3V0cHV0SXRlcmF0b3IgcmVnZXhfZm9ybWF0X2ltcChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8SXRlcmF0b3IsIEFsbG9jPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXIgcDEsIEZvcndhcmRJdGVyIHAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYWl0cyYgdAotICAgICAgICAgICAgICAgICAgICAgICAgICkKLXsKLSAgIGlmKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbGl0ZXJhbCkKLSAgIHsKLSAgICAgIHJldHVybiByZV9kZXRhaWw6OmNvcHkocDEsIHAyLCBvdXQpOwotICAgfQotCi0gICByZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjwKLSAgICAgIE91dHB1dEl0ZXJhdG9yLCAKLSAgICAgIG1hdGNoX3Jlc3VsdHM8SXRlcmF0b3IsIEFsbG9jPiwgCi0gICAgICB0cmFpdHMsIEZvcndhcmRJdGVyPiBmKG91dCwgbSwgdCk7Ci0gICByZXR1cm4gZi5mb3JtYXQocDEsIHAyLCBmbGFncyk7Ci19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihjb25zdF9pdGVyYXRvcikKLQotc3RydWN0IGFueV90eXBlIAotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBhbnlfdHlwZShjb25zdCBUJik7IAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBhbnlfdHlwZShjb25zdCBUJiwgY29uc3QgVSYpOyAKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWPgotICAgYW55X3R5cGUoY29uc3QgVCYsIGNvbnN0IFUmLCBjb25zdCBWJik7IAotfTsKLXR5cGVkZWYgY2hhciBub190eXBlOwotdHlwZWRlZiBjaGFyICgmdW5hcnlfdHlwZSlbMl07Ci10eXBlZGVmIGNoYXIgKCZiaW5hcnlfdHlwZSlbM107Ci10eXBlZGVmIGNoYXIgKCZ0ZXJuYXJ5X3R5cGUpWzRdOwotCi1ub190eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcih1bmFyeV90eXBlLCBiaW5hcnlfdHlwZSwgdGVybmFyeV90eXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci11bmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcihUIGNvbnN0ICYsIGJpbmFyeV90eXBlLCB0ZXJuYXJ5X3R5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWJpbmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcih1bmFyeV90eXBlLCBUIGNvbnN0ICYsIHRlcm5hcnlfdHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYmluYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKFQgY29uc3QgJiwgVSBjb25zdCAmLCB0ZXJuYXJ5X3R5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXRlcm5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIodW5hcnlfdHlwZSwgYmluYXJ5X3R5cGUsIFQgY29uc3QgJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdGVybmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcihUIGNvbnN0ICYsIGJpbmFyeV90eXBlLCBVIGNvbnN0ICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXRlcm5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIodW5hcnlfdHlwZSwgVCBjb25zdCAmLCBVIGNvbnN0ICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLXRlcm5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIoVCBjb25zdCAmLCBVIGNvbnN0ICYsIFYgY29uc3QgJik7Ci0KLXN0cnVjdCB1bmFyeV9iaW5hcnlfdGVybmFyeQotewotICAgIHR5cGVkZWYgdW5hcnlfdHlwZSAoKnVuYXJ5X2Z1bikoYW55X3R5cGUpOwotICAgIHR5cGVkZWYgYmluYXJ5X3R5cGUgKCpiaW5hcnlfZnVuKShhbnlfdHlwZSwgYW55X3R5cGUpOwotICAgIHR5cGVkZWYgdGVybmFyeV90eXBlICgqdGVybmFyeV9mdW4pKGFueV90eXBlLCBhbnlfdHlwZSwgYW55X3R5cGUpOwotICAgIG9wZXJhdG9yIHVuYXJ5X2Z1bigpOwotICAgIG9wZXJhdG9yIGJpbmFyeV9mdW4oKTsKLSAgICBvcGVyYXRvciB0ZXJuYXJ5X2Z1bigpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRm9ybWF0dGVyLCBib29sIElzRnVuY3Rpb24gPSBuZG5ib29zdDo6aXNfZnVuY3Rpb248Rm9ybWF0dGVyPjo6dmFsdWU+Ci1zdHJ1Y3QgZm9ybWF0dGVyX3dyYXBwZXIKLSAgOiBGb3JtYXR0ZXIKLSAgLCB1bmFyeV9iaW5hcnlfdGVybmFyeQotewotICAgZm9ybWF0dGVyX3dyYXBwZXIoKXt9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGb3JtYXR0ZXI+Ci1zdHJ1Y3QgZm9ybWF0dGVyX3dyYXBwZXI8Rm9ybWF0dGVyLCB0cnVlPgotICA6IHVuYXJ5X2JpbmFyeV90ZXJuYXJ5Ci17Ci0gICAgb3BlcmF0b3IgRm9ybWF0dGVyICooKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZvcm1hdHRlcj4KLXN0cnVjdCBmb3JtYXR0ZXJfd3JhcHBlcjxGb3JtYXR0ZXIgKiwgZmFsc2U+Ci0gIDogdW5hcnlfYmluYXJ5X3Rlcm5hcnkKLXsKLSAgICBvcGVyYXRvciBGb3JtYXR0ZXIgKigpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIE0sIGNsYXNzIE8+Ci1zdHJ1Y3QgZm9ybWF0X3RyYWl0c19pbXAKLXsKLXByaXZhdGU6Ci0gICAvLwotICAgLy8gRiBtdXN0IGJlIGEgcG9pbnRlciwgYSBmdW5jdGlvbiwgb3IgYSBjbGFzcyB3aXRoIGEgZnVuY3Rpb24gY2FsbCBvcGVyYXRvcjoKLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCg6Om5kbmJvb3N0Ojppc19wb2ludGVyPEY+Ojp2YWx1ZSB8fCA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxGPjo6dmFsdWUgfHwgOjpuZG5ib29zdDo6aXNfY2xhc3M8Rj46OnZhbHVlKSk7Ci0gICBzdGF0aWMgZm9ybWF0dGVyX3dyYXBwZXI8dHlwZW5hbWUgdW53cmFwX3JlZmVyZW5jZTxGPjo6dHlwZT4gZjsKLSAgIHN0YXRpYyBNIG07Ci0gICBzdGF0aWMgTyBvdXQ7Ci0gICBzdGF0aWMgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGZsYWdzOwotcHVibGljOgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBzaXplb2YoY2hlY2tfaXNfZm9ybWF0dGVyKGYobSksIGYobSwgb3V0KSwgZihtLCBvdXQsIGZsYWdzKSkpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBNLCBjbGFzcyBPPgotc3RydWN0IGZvcm1hdF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIC8vIAotICAgLy8gVHlwZSBpcyBtcGw6OmludF88Tj4gd2hlcmUgTiBpcyBvbmUgb2Y6Ci0gICAvLwotICAgLy8gMCA6IEYgaXMgYSBwb2ludGVyIHRvIGEgcHJlc3VtYWJseSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgotICAgLy8gMSA6IEYgaXMgYSBjaGFyYWN0ZXItY29udGFpbmVyIHN1Y2ggYXMgYSBzdGQ6OnN0cmluZy4KLSAgIC8vIDIgOiBGIGlzIGEgVW5hcnkgRnVuY3Rvci4KLSAgIC8vIDMgOiBGIGlzIGEgQmluYXJ5IEZ1bmN0b3IuCi0gICAvLyA0IDogRiBpcyBhIFRlcm5hcnkgRnVuY3Rvci4KLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgIG5kbmJvb3N0OjptcGw6OmFuZF88bmRuYm9vc3Q6OmlzX3BvaW50ZXI8Rj4sIG5kbmJvb3N0OjptcGw6Om5vdF88bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxGPjo6dHlwZT4gPiA+LAotICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgICAgIGhhc19jb25zdF9pdGVyYXRvcjxGPiwKLSAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MT4sCi0gICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPGZvcm1hdF90cmFpdHNfaW1wPEYsIE0sIE8+Ojp2YWx1ZT4KLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLSAgIC8vCi0gICAvLyBUaGlzIHN0YXRpYyBhc3NlcnRpb24gd2lsbCBmYWlsIGlmIHRoZSBmdW5jdG9yIHBhc3NlZCBkb2VzIG5vdCBhY2NlcHQKLSAgIC8vIHRoZSBzYW1lIHR5cGUgb2YgYXJndW1lbnRzIHBhc3NlZC4KLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBuZG5ib29zdDo6aXNfY2xhc3M8Rj46OnZhbHVlICYmICFoYXNfY29uc3RfaXRlcmF0b3I8Rj46OnZhbHVlID8gKHR5cGU6OnZhbHVlID4gMSkgOiB0cnVlKTsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotCi10ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgTSwgY2xhc3MgTz4KLXN0cnVjdCBmb3JtYXRfdHJhaXRzCi17Ci1wdWJsaWM6Ci0gICAvLyAKLSAgIC8vIFR5cGUgaXMgbXBsOjppbnRfPE4+IHdoZXJlIE4gaXMgb25lIG9mOgotICAgLy8KLSAgIC8vIDAgOiBGIGlzIGEgcG9pbnRlciB0byBhIHByZXN1bWFibHkgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KLSAgIC8vIDEgOiBGIGlzIGEgY2hhcmFjdGVyLWNvbnRhaW5lciBzdWNoIGFzIGEgc3RkOjpzdHJpbmcuCi0gICAvLwotICAgLy8gT3RoZXIgb3B0aW9ucyBzdWNoIGFzIEYgYmVpbmcgYSBGdW5jdG9yIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGhvdXQKLSAgIC8vIFNGSU5BRSBzdXBwb3J0LgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1wbDo6aWZfPAotICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8Rj4sCi0gICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDA+LAotICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPgotICAgPjo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZSwgY2xhc3MgTWF0Y2g+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3IzCi17Ci0gICBmb3JtYXRfZnVuY3RvcjMoQmFzZSBiKSA6IGZ1bmMoYikge30KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmKQotICAgewotICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bndyYXBfcmVmKGZ1bmMpKG0sIGksIGYpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXIsIGNsYXNzIFRyYWl0cz4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZiwgY29uc3QgVHJhaXRzJikKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpKG0sIGksIGYpOwotICAgfQotcHJpdmF0ZToKLSAgIEJhc2UgZnVuYzsKLSAgIGZvcm1hdF9mdW5jdG9yMyhjb25zdCBmb3JtYXRfZnVuY3RvcjMmKTsKLSAgIGZvcm1hdF9mdW5jdG9yMyYgb3BlcmF0b3I9KGNvbnN0IGZvcm1hdF9mdW5jdG9yMyYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2UsIGNsYXNzIE1hdGNoPgotc3RydWN0IGZvcm1hdF9mdW5jdG9yMgotewotICAgZm9ybWF0X2Z1bmN0b3IyKEJhc2UgYikgOiBmdW5jKGIpIHt9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgLypmKi8pCi0gICB7Ci0gICAgICByZXR1cm4gbmRuYm9vc3Q6OnVud3JhcF9yZWYoZnVuYykobSwgaSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlciwgY2xhc3MgVHJhaXRzPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmKQotICAgewotICAgICAgcmV0dXJuICgqdGhpcykobSwgaSwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgQmFzZSBmdW5jOwotICAgZm9ybWF0X2Z1bmN0b3IyKGNvbnN0IGZvcm1hdF9mdW5jdG9yMiYpOwotICAgZm9ybWF0X2Z1bmN0b3IyJiBvcGVyYXRvcj0oY29uc3QgZm9ybWF0X2Z1bmN0b3IyJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZSwgY2xhc3MgTWF0Y2g+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3IxCi17Ci0gICBmb3JtYXRfZnVuY3RvcjEoQmFzZSBiKSA6IGZ1bmMoYikge30KLQotICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBPdXRwdXRJdGVyIGRvX2Zvcm1hdF9zdHJpbmcoY29uc3QgUyYgcywgT3V0cHV0SXRlciBpKQotICAgewotICAgICAgcmV0dXJuIHJlX2RldGFpbDo6Y29weShzLmJlZ2luKCksIHMuZW5kKCksIGkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBpbmxpbmUgT3V0cHV0SXRlciBkb19mb3JtYXRfc3RyaW5nKGNvbnN0IFMqIHMsIE91dHB1dEl0ZXIgaSkKLSAgIHsKLSAgICAgIHdoaWxlKHMgJiYgKnMpCi0gICAgICB7Ci0gICAgICAgICAqaSA9ICpzOwotICAgICAgICAgKytpOwotICAgICAgICAgKytzOwotICAgICAgfQotICAgICAgcmV0dXJuIGk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgLypmKi8pCi0gICB7Ci0gICAgICByZXR1cm4gZG9fZm9ybWF0X3N0cmluZyhuZG5ib29zdDo6dW53cmFwX3JlZihmdW5jKShtKSwgaSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlciwgY2xhc3MgVHJhaXRzPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmKQotICAgewotICAgICAgcmV0dXJuICgqdGhpcykobSwgaSwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgQmFzZSBmdW5jOwotICAgZm9ybWF0X2Z1bmN0b3IxKGNvbnN0IGZvcm1hdF9mdW5jdG9yMSYpOwotICAgZm9ybWF0X2Z1bmN0b3IxJiBvcGVyYXRvcj0oY29uc3QgZm9ybWF0X2Z1bmN0b3IxJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIE1hdGNoLCBjbGFzcyBUcmFpdHM+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmcKLXsKLSAgIGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nKGNvbnN0IGNoYXJUKiBwcykgOiBmdW5jKHBzKSB7fQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZiwgY29uc3QgVHJhaXRzJiB0ID0gVHJhaXRzKCkpCi0gICB7Ci0gICAgICAvL3R5cGVkZWYgdHlwZW5hbWUgTWF0Y2g6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICAgICBjb25zdCBjaGFyVCogZW5kID0gZnVuYzsKLSAgICAgIHdoaWxlKCplbmQpICsrZW5kOwotICAgICAgcmV0dXJuIHJlZ2V4X2Zvcm1hdF9pbXAoaSwgbSwgZnVuYywgZW5kLCBmLCB0KTsKLSAgIH0KLXByaXZhdGU6Ci0gICBjb25zdCBjaGFyVCogZnVuYzsKLSAgIGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nKGNvbnN0IGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nJik7Ci0gICBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCBjbGFzcyBNYXRjaCwgY2xhc3MgVHJhaXRzPgotc3RydWN0IGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lcgotewotICAgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyKGNvbnN0IENvbnRhaW5lciYgYykgOiBmdW5jKGMpIHt9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmIHQgPSBUcmFpdHMoKSkKLSAgIHsKLSAgICAgIC8vdHlwZWRlZiB0eXBlbmFtZSBNYXRjaDo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgICAgIHJldHVybiByZV9kZXRhaWw6OnJlZ2V4X2Zvcm1hdF9pbXAoaSwgbSwgZnVuYy5iZWdpbigpLCBmdW5jLmVuZCgpLCBmLCB0KTsKLSAgIH0KLXByaXZhdGU6Ci0gICBjb25zdCBDb250YWluZXImIGZ1bmM7Ci0gICBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXIoY29uc3QgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyJik7Ci0gICBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXImIG9wZXJhdG9yPShjb25zdCBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXImKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBGdW5jLCBjbGFzcyBNYXRjaCwgY2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFRyYWl0cyA9IHJlX2RldGFpbDo6dHJpdmlhbF9mb3JtYXRfdHJhaXRzPHR5cGVuYW1lIE1hdGNoOjpjaGFyX3R5cGU+ID4KLXN0cnVjdCBjb21wdXRlX2Z1bmN0b3JfdHlwZQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JtYXRfdHJhaXRzPEZ1bmMsIE1hdGNoLCBPdXRwdXRJdGVyYXRvcj46OnR5cGUgdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8RnVuYz46OnR5cGU+Ojp0eXBlIG1heWJlX2NoYXJfdHlwZTsKLQotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8dGFnLCBtcGw6OmludF88MD4gPiwgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmc8bWF5YmVfY2hhcl90eXBlLCBNYXRjaCwgVHJhaXRzPiwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTx0YWcsIG1wbDo6aW50XzwxPiA+LCBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXI8RnVuYywgTWF0Y2gsIFRyYWl0cz4sCi0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8dGFnLCBtcGw6OmludF88Mj4gPiwgZm9ybWF0X2Z1bmN0b3IxPEZ1bmMsIE1hdGNoPiwKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTx0YWcsIG1wbDo6aW50XzwzPiA+LCBmb3JtYXRfZnVuY3RvcjI8RnVuYywgTWF0Y2g+LCAKLSAgICAgICAgICAgICAgIGZvcm1hdF9mdW5jdG9yMzxGdW5jLCBNYXRjaD4KLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEZ1bmN0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVnZXhfZm9ybWF0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3RvciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IGZvcm1hdF9hbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICApCi17Ci0gICByZXR1cm4gbS5mb3JtYXQob3V0LCBmbXQsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEZ1bmN0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2NhdG9yPjo6Y2hhcl90eXBlPiByZWdleF9mb3JtYXQoY29uc3QgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0b3IgZm10LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gZm9ybWF0X2FsbCkKLXsKLSAgIHJldHVybiBtLmZvcm1hdChmbXQsIGZsYWdzKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX0ZPUk1BVF9IUFAKLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MDUwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZndkLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRm9yd2FyZCBkZWNsYXJlcyBuZG5ib29zdDo6YmFzaWNfcmVnZXg8PiBhbmQKLSAgKiAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHR5cGVkZWZzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRldEX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLS8vCi0vLyBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRldEIGlmIHRoaXMKLS8vIGhlYWRlciBkb2Vzbid0IHdvcmshCi0vLwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotIyAgaWZuZGVmIE5ETkJPT1NUX1JFX1JFR0VYX0hQUAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXguaHBwPgotIyAgZW5kaWYKLSNlbHNlCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY3BwX3JlZ2V4X3RyYWl0czsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCBjX3JlZ2V4X3RyYWl0czsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHM7Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9VU0VfV0lOMzJfTE9DQUxFCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIGltcGxlbWVudGF0aW9uVCA9IHczMl9yZWdleF90cmFpdHM8Y2hhclQ+ID4KLXN0cnVjdCByZWdleF90cmFpdHM7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBpbXBsZW1lbnRhdGlvblQgPSBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci1zdHJ1Y3QgcmVnZXhfdHJhaXRzOwotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgaW1wbGVtZW50YXRpb25UID0gY19yZWdleF90cmFpdHM8Y2hhclQ+ID4KLXN0cnVjdCByZWdleF90cmFpdHM7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPSByZWdleF90cmFpdHM8Y2hhclQ+ID4KLWNsYXNzIGJhc2ljX3JlZ2V4OwotCi10eXBlZGVmIGJhc2ljX3JlZ2V4PGNoYXIsIHJlZ2V4X3RyYWl0czxjaGFyPiA+IHJlZ2V4OwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgYmFzaWNfcmVnZXg8d2NoYXJfdCwgcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4gd3JlZ2V4OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVHRVhfTk9fRldECi0KLSNlbmRpZgotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2dyZXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9ncmVwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3ODlkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2dyZXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9ncmVwLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgcmVnZXhfZ3JlcCBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9HUkVQX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9HUkVQX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vLwotLy8gcmVnZXhfZ3JlcDoKLS8vIGZpbmQgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIHdpdGhpbiB0aGUgc2VxdWVuY2UgZmlyc3QgbGFzdDoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlLCBjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoUHJlZGljYXRlIGZvbywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGZpcnN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBpZihlLmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmZhaWxiaXQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+OjphbGxvY2F0b3JfdHlwZSBtYXRjaF9hbGxvY2F0b3JfdHlwZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+IG07Ci0gICByZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIG1hdGNoX2FsbG9jYXRvcl90eXBlLCB0cmFpdHM+IG1hdGNoZXIoZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBmaXJzdCk7Ci0gICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOwotICAgd2hpbGUobWF0Y2hlci5maW5kKCkpCi0gICB7Ci0gICAgICArK2NvdW50OwotICAgICAgaWYoMCA9PSBmb28obSkpCi0gICAgICAgICByZXR1cm4gY291bnQ7IC8vIGNhbGxlciBkb2Vzbid0IHdhbnQgdG8gZ28gb24KLSAgICAgIGlmKG1bMF0uc2Vjb25kID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gY291bnQ7IC8vIHdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCwgZG9uJ3QgdHJ5IGFuZCBmaW5kIGFuIGV4dHJhIG51bGwgbWF0Y2guCi0gICAgICBpZihtLmxlbmd0aCgpID09IDApCi0gICAgICB7Ci0gICAgICAgICBpZihtWzBdLnNlY29uZCA9PSBsYXN0KQotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICAgLy8gd2UgZm91bmQgYSBOVUxMLW1hdGNoLCBub3cgdHJ5IHRvIGZpbmQKLSAgICAgICAgIC8vIGEgbm9uLU5VTEwgb25lIGF0IHRoZSBzYW1lIHBvc2l0aW9uOgotICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIG1hdGNoX2FsbG9jYXRvcl90eXBlPiBtMihtKTsKLSAgICAgICAgIG1hdGNoZXIuc2V0ZihtYXRjaF9ub3RfbnVsbCB8IG1hdGNoX2NvbnRpbnVvdXMpOwotICAgICAgICAgaWYobWF0Y2hlci5maW5kKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgaWYoMCA9PSBmb28obSkpCi0gICAgICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyByZXNldCBtYXRjaCBiYWNrIHRvIHdoZXJlIGl0IHdhczoKLSAgICAgICAgICAgIG0gPSBtMjsKLSAgICAgICAgIH0KLSAgICAgICAgIG1hdGNoZXIudW5zZXRmKChtYXRjaF9ub3RfbnVsbCB8IG1hdGNoX2NvbnRpbnVvdXMpICYgfmZsYWdzKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBjb3VudDsKLX0KLQotLy8KLS8vIHJlZ2V4X2dyZXAgY29udmVuaWVuY2UgaW50ZXJmYWNlczoKLSNpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLS8vCi0vLyB0aGlzIGlzbid0IHJlYWxseSBhIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24sIGJ1dCB0ZW1wbGF0ZSBmdW5jdGlvbgotLy8gb3ZlcmxvYWRpbmcgLSBpZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLS8vIHRoZW4gaXQgcmVhbGx5IHdvbid0IHN1cHBvcnQgdGhpcyBlaXRoZXI6Ci10ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKFByZWRpY2F0ZSBmb28sIGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBlLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGUsIGNsYXNzIFNULCBjbGFzcyBTQSwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChQcmVkaWNhdGUgZm9vLCBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgcy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbGFncyk7Ci19Ci0jZWxzZSAgLy8gcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKGJvb2wgKCpmb28pKGNvbnN0IGNtYXRjaCYpLCBjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBlLCBmbGFncyk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKGJvb2wgKCpmb28pKGNvbnN0IHdjbWF0Y2gmKSwgY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBlLCBmbGFncyk7Ci19Ci0jZW5kaWYKLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChib29sICgqZm9vKShjb25zdCBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mKSwgY29uc3Qgc3RkOjpzdHJpbmcmIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZsYWdzKTsKLX0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoYm9vbCAoKmZvbykoY29uc3QgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+JiksIAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfZ3JlcChmb28sIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZmxhZ3MpOwotfQotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0dSRVBfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMDEzNmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9pdGVyYXRvci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHJlZ2V4X2l0ZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9JVEVSQVRPUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgCi0gICAgICAgICAgY2xhc3MgY2hhclQsCi0gICAgICAgICAgY2xhc3MgdHJhaXRzPgotY2xhc3MgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24gCi17Ci0gICB0eXBlZGVmIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+IHJlZ2V4X3R5cGU7Ci0KLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiB3aGF0OyAgLy8gY3VycmVudCBtYXRjaAotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGJhc2U7ICAvLyBzdGFydCBvZiBzZXF1ZW5jZQotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGVuZDsgICAvLyBlbmQgb2Ygc2VxdWVuY2UKLSAgIGNvbnN0IHJlZ2V4X3R5cGUgICAgICAgICAgICAgICAgICAgICByZTsgICAvLyB0aGUgZXhwcmVzc2lvbgotICAgbWF0Y2hfZmxhZ190eXBlICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyAvLyBmbGFncyBmb3IgbWF0Y2hpbmcKLQotcHVibGljOgotICAgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBiYXNlKCksIGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKXt9Ci0gICBib29sIGluaXQoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0KQotICAgewotICAgICAgYmFzZSA9IGZpcnN0OwotICAgICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChmaXJzdCwgZW5kLCB3aGF0LCByZSwgZmxhZ3MpOwotICAgfQotICAgYm9vbCBjb21wYXJlKGNvbnN0IHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiB0aGF0KQotICAgewotICAgICAgaWYodGhpcyA9PSAmdGhhdCkgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gKCZyZS5nZXRfZGF0YSgpID09ICZ0aGF0LnJlLmdldF9kYXRhKCkpICYmIChlbmQgPT0gdGhhdC5lbmQpICYmIChmbGFncyA9PSB0aGF0LmZsYWdzKSAmJiAod2hhdFswXS5maXJzdCA9PSB0aGF0LndoYXRbMF0uZmlyc3QpICYmICh3aGF0WzBdLnNlY29uZCA9PSB0aGF0LndoYXRbMF0uc2Vjb25kKTsKLSAgIH0KLSAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgZ2V0KCkKLSAgIHsgcmV0dXJuIHdoYXQ7IH0KLSAgIGJvb2wgbmV4dCgpCi0gICB7Ci0gICAgICAvL2lmKHdoYXQucHJlZml4KCkuZmlyc3QgIT0gd2hhdFswXS5zZWNvbmQpCi0gICAgICAvLyAgIGZsYWdzIHw9IG1hdGNoX3ByZXZfYXZhaWw7Ci0gICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbmV4dF9zdGFydCA9IHdoYXRbMF0uc2Vjb25kOwotICAgICAgbWF0Y2hfZmxhZ190eXBlIGYoZmxhZ3MpOwotICAgICAgaWYoIXdoYXQubGVuZ3RoKCkgfHwgKGYgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX3Bvc2l4KSkKLSAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfaW5pdGlhbF9udWxsOwotICAgICAgLy9pZihiYXNlICE9IG5leHRfc3RhcnQpCi0gICAgICAvLyAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm9iOwotICAgICAgYm9vbCByZXN1bHQgPSByZWdleF9zZWFyY2gobmV4dF9zdGFydCwgZW5kLCB3aGF0LCByZSwgZiwgYmFzZSk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgICB3aGF0LnNldF9iYXNlKGJhc2UpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLXByaXZhdGU6Ci0gICByZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCAKLSAgICAgICAgICBjbGFzcyBjaGFyVCA9IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSwKLSAgICAgICAgICBjbGFzcyB0cmFpdHMgPSByZWdleF90cmFpdHM8Y2hhclQ+ID4KLWNsYXNzIHJlZ2V4X2l0ZXJhdG9yIAotI2lmbmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8Ci0gICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCAKLSAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiwKLSAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwKLSAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiosCi0gICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mID4gICAgICAgICAKLSNlbmRpZgotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb248QmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBpbXBsOwotICAgdHlwZWRlZiBzaGFyZWRfcHRyPGltcGw+IHBpbXBsOwotcHVibGljOgotICAgdHlwZWRlZiAgICAgICAgICBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7IAotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgCi0gICByZWdleF9pdGVyYXRvcigpe30KLSAgIHJlZ2V4X2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgCi0gICAgICAgICAgICAgICAgICBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgfQotICAgcmVnZXhfaXRlcmF0b3IoY29uc3QgcmVnZXhfaXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IHBkYXRhKHRoYXQucGRhdGEpIHt9Ci0gICByZWdleF9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgcGRhdGEgPSB0aGF0LnBkYXRhOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IAotICAgICAgaWYoKHBkYXRhLmdldCgpID09IDApIHx8ICh0aGF0LnBkYXRhLmdldCgpID09IDApKQotICAgICAgICAgcmV0dXJuIHBkYXRhLmdldCgpID09IHRoYXQucGRhdGEuZ2V0KCk7Ci0gICAgICByZXR1cm4gcGRhdGEtPmNvbXBhcmUoKih0aGF0LnBkYXRhLmdldCgpKSk7IAotICAgfQotICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiAhKCp0aGlzID09IHRoYXQpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7IHJldHVybiBwZGF0YS0+Z2V0KCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKWNvbnN0Ci0gICB7IHJldHVybiAmKHBkYXRhLT5nZXQoKSk7IH0KLSAgIHJlZ2V4X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIGNvdygpOwotICAgICAgaWYoMCA9PSBwZGF0YS0+bmV4dCgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHJlZ2V4X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgcmVnZXhfaXRlcmF0b3IgcmVzdWx0KCp0aGlzKTsKLSAgICAgICsrKCp0aGlzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotCi0gICBwaW1wbCBwZGF0YTsKLQotICAgdm9pZCBjb3coKQotICAgewotICAgICAgLy8gY29weS1vbi13cml0ZQotICAgICAgaWYocGRhdGEuZ2V0KCkgJiYgIXBkYXRhLnVuaXF1ZSgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQobmV3IGltcGwoKihwZGF0YS5nZXQoKSkpKTsKLSAgICAgIH0KLSAgIH0KLX07Ci0KLXR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhcio+IGNyZWdleF9pdGVyYXRvcjsKLXR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBzcmVnZXhfaXRlcmF0b3I7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiByZWdleF9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gd2NyZWdleF9pdGVyYXRvcjsKLXR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gd3NyZWdleF9pdGVyYXRvcjsKLSNlbmRpZgotCi0vLyBtYWtlX3JlZ2V4X2l0ZXJhdG9yOgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgcmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X2l0ZXJhdG9yKGNvbnN0IGNoYXJUKiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+KHAsIHArdHJhaXRzOjpsZW5ndGgocCksIGUsIG0pOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFNULCBjbGFzcyBTQT4KLWlubGluZSByZWdleF9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfaXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBtKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfSVRFUkFUT1JfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWF0Y2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tYXRjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZjliOWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tYXRjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzODIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X21hdGNoLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIGFsZ29yaXRobXMuCi0gICogICAgICAgICAgICAgICAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BVENIX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy8KLS8vIHByb2MgcmVnZXhfbWF0Y2gKLS8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzCi0vLyB0aGUgd2hvbGUgb2YgdGhlIGlucHV0LiAgRmlsbHMgaW4gd2hhdCBtYXRjaGVkIGluIG0uCi0vLwotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCByZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPiBtYXRjaGVyKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QpOwotICAgcmV0dXJuIG1hdGNoZXIubWF0Y2goKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBpdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcmVnZXhfbWF0Y2goaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGl0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLS8vCi0vLyBxdWVyeV9tYXRjaCBjb252ZW5pZW5jZSBpbnRlcmZhY2VzOgotI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotLy8KLS8vIHRoaXMgaXNuJ3QgcmVhbGx5IGEgcGFydGlhbCBzcGVjaWFsaXNhdGlvbiwgYnV0IHRlbXBsYXRlIGZ1bmN0aW9uCi0vLyBvdmVybG9hZGluZyAtIGlmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotLy8gdGhlbiBpdCByZWFsbHkgd29uJ3Qgc3VwcG9ydCB0aGlzIGVpdGhlcjoKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyVCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhclQqLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBzLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhclQqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgdHJhaXRzOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwotICAgbWF0Y2hfcmVzdWx0czxpdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2Vsc2UgIC8vIHBhcnRpYWwgb3JkZXJpbmcKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNwcF9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNwcF9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdzMyX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdzMyX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjcHBfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY3BwX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB3Y21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHczMl9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCB3MzJfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBzbWF0Y2gmIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjcHBfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNwcF9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY19yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY19yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdzMyX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCB3MzJfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY3BwX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjcHBfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHczMl9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgdzMyX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmCi0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgICAvLyBORE5CT09TVF9SRUdFWF9NQVRDSF9IUFAKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWVyZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tZXJnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYjkxNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tZXJnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZm9ybWF0LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgZm9ybWF0dGluZyBvdXRwdXQgcm91dGluZXMgZm9yIHNlYXJjaCBhbmQgcmVwbGFjZQotICAqICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfTUVSR0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX01FUkdFX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlZ2V4X21lcmdlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogZm10LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3JlcGxhY2Uob3V0LCBmaXJzdCwgbGFzdCwgZSwgZm10LCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVnZXhfbWVyZ2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWVyZ2Uob3V0LCBmaXJzdCwgbGFzdCwgZSwgZm10LmNfc3RyKCksIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlZ2V4X21lcmdlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3JlcGxhY2UocywgZSwgZm10LCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJUPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZWdleF9tZXJnZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfcmVwbGFjZShzLCBlLCBmbXQsIGZsYWdzKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX01FUkdFX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmF3X2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Jhd19idWZmZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTkwMzU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmF3X2J1ZmZlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3Jhd19idWZmZXIuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBSYXcgY2hhcmFjdGVyIGJ1ZmZlciBmb3IgcmVnZXggY29kZS4KLSAgKiAgICAgICAgICAgICAgICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfUkFXX0JVRkZFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfUkFXX0JVRkZFUl9IUFAKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSAgIG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotc3RydWN0IGVtcHR5X3BhZGRpbmd7fTsKLQotdW5pb24gcGFkZGluZwotewotICAgdm9pZCogcDsKLSAgIHVuc2lnbmVkIGludCBpOwotfTsKLQotdGVtcGxhdGUgPGludCBOPgotc3RydWN0IHBhZGRpbmczCi17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gOCwKLSAgICAgIHBhZGRpbmdfbWFzayA9IDcKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGFkZGluZzM8Mj4KLXsKLSAgIGVudW17Ci0gICAgICBwYWRkaW5nX3NpemUgPSAyLAotICAgICAgcGFkZGluZ19tYXNrID0gMQotICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwYWRkaW5nMzw0PgotewotICAgZW51bXsKLSAgICAgIHBhZGRpbmdfc2l6ZSA9IDQsCi0gICAgICBwYWRkaW5nX21hc2sgPSAzCi0gICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBhZGRpbmczPDg+Ci17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gOCwKLSAgICAgIHBhZGRpbmdfbWFzayA9IDcKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGFkZGluZzM8MTY+Ci17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gMTYsCi0gICAgICBwYWRkaW5nX21hc2sgPSAxNQotICAgfTsKLX07Ci0KLWVudW17Ci0gICBwYWRkaW5nX3NpemUgPSBwYWRkaW5nMzxzaXplb2YocGFkZGluZyk+OjpwYWRkaW5nX3NpemUsCi0gICBwYWRkaW5nX21hc2sgPSBwYWRkaW5nMzxzaXplb2YocGFkZGluZyk+OjpwYWRkaW5nX21hc2sKLX07Ci0KLS8vCi0vLyBjbGFzcyByYXdfc3RvcmFnZQotLy8gYmFzaWNhbGx5IHRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlY3Rvcjx1bnNpZ25lZCBjaGFyPgotLy8gdGhpcyBpcyB1c2VkIGJ5IGJhc2ljX3JlZ2V4IGZvciBleHByZXNzaW9uIHN0b3JhZ2UKLS8vCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgcmF3X3N0b3JhZ2UKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgIHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciogICAgICAgIHBvaW50ZXI7Ci1wcml2YXRlOgotICAgcG9pbnRlciBsYXN0LCBzdGFydCwgZW5kOwotcHVibGljOgotCi0gICByYXdfc3RvcmFnZSgpOwotICAgcmF3X3N0b3JhZ2Uoc2l6ZV90eXBlIG4pOwotCi0gICB+cmF3X3N0b3JhZ2UoKQotICAgewotICAgICAgOjpvcGVyYXRvciBkZWxldGUoc3RhcnQpOwotICAgfQotCi0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgcmVzaXplKHNpemVfdHlwZSBuKTsKLSAgIAotICAgdm9pZCogTkROQk9PU1RfUkVHRVhfQ0FMTCBleHRlbmQoc2l6ZV90eXBlIG4pCi0gICB7Ci0gICAgICBpZihzaXplX3R5cGUobGFzdCAtIGVuZCkgPCBuKQotICAgICAgICAgcmVzaXplKG4gKyAoZW5kIC0gc3RhcnQpKTsKLSAgICAgIHJlZ2lzdGVyIHBvaW50ZXIgcmVzdWx0ID0gZW5kOwotICAgICAgZW5kICs9IG47Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotCi0gICB2b2lkKiBORE5CT09TVF9SRUdFWF9DQUxMIGluc2VydChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbik7Ci0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHNpemUoKQotICAgewotICAgICAgcmV0dXJuIGVuZCAtIHN0YXJ0OwotICAgfQotCi0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBjYXBhY2l0eSgpCi0gICB7Ci0gICAgICByZXR1cm4gbGFzdCAtIHN0YXJ0OwotICAgfQotCi0gICB2b2lkKiBORE5CT09TVF9SRUdFWF9DQUxMIGRhdGEoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RhcnQ7Ci0gICB9Ci0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGluZGV4KHZvaWQqIHB0cikKLSAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxwb2ludGVyPihwdHIpIC0gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oZGF0YSgpKTsKLSAgIH0KLQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIGNsZWFyKCkKLSAgIHsKLSAgICAgIGVuZCA9IHN0YXJ0OwotICAgfQotCi0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgYWxpZ24oKQotICAgewotICAgICAgLy8gbW92ZSBlbmQgdXAgdG8gYSBib3VuZGFyeToKLSAgICAgIGVuZCA9IHN0YXJ0ICsgKCgoZW5kIC0gc3RhcnQpICsgcGFkZGluZ19tYXNrKSAmIH5wYWRkaW5nX21hc2spOwotICAgfQotICAgdm9pZCBzd2FwKHJhd19zdG9yYWdlJiB0aGF0KQotICAgewotICAgICAgc3RkOjpzd2FwKHN0YXJ0LCB0aGF0LnN0YXJ0KTsKLSAgICAgIHN0ZDo6c3dhcChlbmQsIHRoYXQuZW5kKTsKLSAgICAgIHN0ZDo6c3dhcChsYXN0LCB0aGF0Lmxhc3QpOwotICB9Ci19OwotCi1pbmxpbmUgcmF3X3N0b3JhZ2U6OnJhd19zdG9yYWdlKCkKLXsKLSAgIGxhc3QgPSBzdGFydCA9IGVuZCA9IDA7Ci19Ci0KLWlubGluZSByYXdfc3RvcmFnZTo6cmF3X3N0b3JhZ2Uoc2l6ZV90eXBlIG4pCi17Ci0gICBzdGFydCA9IGVuZCA9IHN0YXRpY19jYXN0PHBvaW50ZXI+KDo6b3BlcmF0b3IgbmV3KG4pKTsKLSAgIE5ETkJPT1NUX1JFR0VYX05PRUhfQVNTRVJUKHN0YXJ0KQotICAgbGFzdCA9IHN0YXJ0ICsgbjsKLX0KLQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3JlcGxhY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9yZXBsYWNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIyNGZhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3JlcGxhY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOQotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2Zvcm1hdC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIGZvcm1hdHRpbmcgb3V0cHV0IHJvdXRpbmVzIGZvciBzZWFyY2ggYW5kIHJlcGxhY2UKLSAgKiAgICAgICAgICAgICAgICBvcGVyYXRpb25zLiAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1JFUExBQ0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1JFUExBQ0VfSFBQCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJULCBjbGFzcyBGb3JtYXR0ZXI+Ci1PdXRwdXRJdGVyYXRvciByZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciBmbXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZWdleF9pdGVyYXRvcjxCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IGkoZmlyc3QsIGxhc3QsIGUsIGZsYWdzKTsKLSAgIHJlZ2V4X2l0ZXJhdG9yPEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gajsKLSAgIGlmKGkgPT0gaikKLSAgIHsKLSAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShmaXJzdCwgbGFzdCwgb3V0KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0X20oZmlyc3QpOwotICAgICAgd2hpbGUoaSAhPSBqKQotICAgICAgewotICAgICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGktPnByZWZpeCgpLmZpcnN0LCBpLT5wcmVmaXgoKS5zZWNvbmQsIG91dCk7IAotICAgICAgICAgb3V0ID0gaS0+Zm9ybWF0KG91dCwgZm10LCBmbGFncywgZSk7Ci0gICAgICAgICBsYXN0X20gPSAoKmkpWzBdLnNlY29uZDsKLSAgICAgICAgIGlmKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZmlyc3Rfb25seSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgKytpOwotICAgICAgfQotICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGxhc3RfbSwgbGFzdCwgb3V0KTsKLSAgIH0KLSAgIHJldHVybiBvdXQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJULCBjbGFzcyBGb3JtYXR0ZXI+Ci1zdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVnZXhfcmVwbGFjZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZXN1bHQ7Ci0gICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+ID4gaShyZXN1bHQpOwotICAgcmVnZXhfcmVwbGFjZShpLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZtdCwgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1JFUExBQ0VfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zZWFyY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zZWFyY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTQ4MGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc2VhcmNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfc2VhcmNoLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgcmVnZXhfc2VhcmNoIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1NFQVJDSF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfU0VBUkNIX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIHJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIHJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlKQotewotICAgaWYoZS5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpmYWlsYml0KQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICByZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPiBtYXRjaGVyKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgYmFzZSk7Ci0gICByZXR1cm4gbWF0Y2hlci5maW5kKCk7Ci19Ci0KLS8vCi0vLyByZWdleF9zZWFyY2ggY29udmVuaWVuY2UgaW50ZXJmYWNlczoKLSNpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLS8vCi0vLyB0aGlzIGlzbid0IHJlYWxseSBhIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24sIGJ1dCB0ZW1wbGF0ZSBmdW5jdGlvbgotLy8gb3ZlcmxvYWRpbmcgLSBpZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLS8vIHRoZW4gaXQgcmVhbGx5IHdvbid0IHN1cHBvcnQgdGhpcyBlaXRoZXI6Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyVCosIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLSNlbHNlICAvLyBwYXJ0aWFsIG92ZXJsb2FkczoKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IGNoYXIqIGZpcnN0LCBjb25zdCBjaGFyKiBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBjbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB3Y21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgd2NoYXJfdCogZmlyc3QsIGNvbnN0IHdjaGFyX3QqIGxhc3QsIAotICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICB3Y21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNtYXRjaCYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICB3c21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCByZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgaWYoZS5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpmYWlsYml0KQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvcj4gbTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+OjphbGxvY2F0b3JfdHlwZSBtYXRjaF9hbGxvY190eXBlOwotICAgcmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBtYXRjaF9hbGxvY190eXBlLCB0cmFpdHM+IG1hdGNoZXIoZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnksIGZpcnN0KTsKLSAgIHJldHVybiBtYXRjaGVyLmZpbmQoKTsKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBjaGFyVCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgdHJhaXRzOjpsZW5ndGgoc3RyKSwgZSwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBzLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZsYWdzKTsKLX0KLSNlbHNlICAvLyBub24tdGVtcGxhdGUgZnVuY3Rpb24gb3ZlcmxvYWRzCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBjbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgd2NtYXRjaCBtOwotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBzbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICB3c21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19XUkVHRVgKLQotI2VuZGlmIC8vIHBhcnRpYWwgb3ZlcmxvYWQKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1NFQVJDSF9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NwbGl0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc3BsaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGM2N2IzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc3BsaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfc3BsaXQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBJbXBsZW1lbnRzIHJlZ2V4X3NwbGl0IGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9ucy4KLSAgKiAgICAgICAgICAgICAgICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1BMSVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1NQTElUX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJUPiYgZ2V0X2RlZmF1bHRfZXhwcmVzc2lvbihjaGFyVCkKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBleHByZXNzaW9uX3RleHRbNF0gPSB7ICdcXCcsICdzJywgJysnLCAnXDAwJywgfTsKLSAgIHN0YXRpYyBjb25zdCBiYXNpY19yZWdleDxjaGFyVD4gZShleHByZXNzaW9uX3RleHQpOwotICAgcmV0dXJuIGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0czEsIGNsYXNzIEFsbG9jMT4KLWNsYXNzIHNwbGl0X3ByZWQKLXsKLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0cmluZ190eXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcl90eXBlOwotICAgaXRlcmF0b3JfdHlwZSogcF9sYXN0OwotICAgT3V0cHV0SXRlcmF0b3IqIHBfb3V0OwotICAgc3RkOjpzaXplX3QqIHBfbWF4OwotICAgc3RkOjpzaXplX3QgaW5pdGlhbF9tYXg7Ci1wdWJsaWM6Ci0gICBzcGxpdF9wcmVkKGl0ZXJhdG9yX3R5cGUqIGEsIE91dHB1dEl0ZXJhdG9yKiBiLCBzdGQ6OnNpemVfdCogYykKLSAgICAgIDogcF9sYXN0KGEpLCBwX291dChiKSwgcF9tYXgoYyksIGluaXRpYWxfbWF4KCpjKSB7fQotCi0gICBib29sIG9wZXJhdG9yKCkoY29uc3QgbWF0Y2hfcmVzdWx0czxpdGVyYXRvcl90eXBlPiYgd2hhdCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMxLCBjbGFzcyBBbGxvYzE+Ci1ib29sIHNwbGl0X3ByZWQ8T3V0cHV0SXRlcmF0b3IsIGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+OjpvcGVyYXRvcigpCi0gICAoY29uc3QgbWF0Y2hfcmVzdWx0czxpdGVyYXRvcl90eXBlPiYgd2hhdCkKLXsKLSAgICpwX2xhc3QgPSB3aGF0WzBdLnNlY29uZDsKLSAgIGlmKHdoYXQuc2l6ZSgpID4gMSkKLSAgIHsKLSAgICAgIC8vIG91dHB1dCBzdWItZXhwcmVzc2lvbnMgb25seToKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMTsgaSA8IHdoYXQuc2l6ZSgpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICAqKCpwX291dCkgPSB3aGF0LnN0cihpKTsKLSAgICAgICAgICsrKCpwX291dCk7Ci0gICAgICAgICBpZigwID09IC0tKnBfbWF4KSByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnBfbWF4ICE9IDA7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBvdXRwdXQgJGAgb25seSBpZiBpdCdzIG5vdC1udWxsIG9yIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0OgotICAgICAgY29uc3Qgc3ViX21hdGNoPGl0ZXJhdG9yX3R5cGU+JiBzdWIgPSB3aGF0Wy0xXTsKLSAgICAgIGlmKChzdWIuZmlyc3QgIT0gc3ViLnNlY29uZCkgfHwgKCpwX21heCAhPSBpbml0aWFsX21heCkpCi0gICAgICB7Ci0gICAgICAgICAqKCpwX291dCkgPSBzdWIuc3RyKCk7Ci0gICAgICAgICArKygqcF9vdXQpOwotICAgICAgICAgcmV0dXJuIC0tKnBfbWF4OwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGluaXRpYWwgbnVsbCwgZG8gbm90aGluZzoKLSAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzMSwgY2xhc3MgQWxsb2MxLCBjbGFzcyBUcmFpdHMyPgotc3RkOjpzaXplX3QgcmVnZXhfc3BsaXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+JiBzLCAKLSAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgVHJhaXRzMj4mIGUsCi0gICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG1heF9zcGxpdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT46OmNvbnN0X2l0ZXJhdG9yICBjaV90OwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3Jlc3VsdHM8Y2lfdD46OmFsbG9jYXRvcl90eXBlICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfYWxsb2NhdG9yOwotICAgY2lfdCBsYXN0ID0gcy5iZWdpbigpOwotICAgc3RkOjpzaXplX3QgaW5pdF9zaXplID0gbWF4X3NwbGl0OwotICAgcmVfZGV0YWlsOjpzcGxpdF9wcmVkPE91dHB1dEl0ZXJhdG9yLCBjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPiBwcmVkKCZsYXN0LCAmb3V0LCAmbWF4X3NwbGl0KTsKLSAgIGNpX3QgaSwgajsKLSAgIGkgPSBzLmJlZ2luKCk7Ci0gICBqID0gcy5lbmQoKTsKLSAgIHJlZ2V4X2dyZXAocHJlZCwgaSwgaiwgZSwgZmxhZ3MpOwotICAgLy8KLSAgIC8vIGlmIHRoZXJlIGlzIHN0aWxsIGlucHV0IGxlZnQsIGRvIGEgZmluYWwgcHVzaCBhcyBsb25nIGFzIG1heF9zcGxpdAotICAgLy8gaXMgbm90IGV4aGF1c3RlZCwgYW5kIHdlJ3JlIG5vdCBzcGxpdHRpbmcgc3ViLWV4cHJlc3Npb25zIHJhdGhlciAKLSAgIC8vIHRoYW4gd2hpdGVzcGFjZToKLSAgIGlmKG1heF9zcGxpdCAmJiAobGFzdCAhPSBzLmVuZCgpKSAmJiAoZS5tYXJrX2NvdW50KCkgPT0gMSkpCi0gICB7Ci0gICAgICAqb3V0ID0gc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT4oKGNpX3QpbGFzdCwgKGNpX3Qpcy5lbmQoKSk7Ci0gICAgICArK291dDsKLSAgICAgIGxhc3QgPSBzLmVuZCgpOwotICAgICAgLS1tYXhfc3BsaXQ7Ci0gICB9Ci0gICAvLwotICAgLy8gZGVsZXRlIGZyb20gdGhlIHN0cmluZyBldmVyeXRoaW5nIHRoYXQgaGFzIGJlZW4gcHJvY2Vzc2VkIHNvIGZhcjoKLSAgIHMuZXJhc2UoMCwgbGFzdCAtIHMuYmVnaW4oKSk7Ci0gICAvLwotICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3IHJlY29yZHMgcHVzaGVkOgotICAgcmV0dXJuIGluaXRfc2l6ZSAtIG1heF9zcGxpdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzMSwgY2xhc3MgQWxsb2MxLCBjbGFzcyBUcmFpdHMyPgotaW5saW5lIHN0ZDo6c2l6ZV90IHJlZ2V4X3NwbGl0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPiYgcywgCi0gICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIFRyYWl0czI+JiBlLAotICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc3BsaXQob3V0LCBzLCBlLCBmbGFncywgVUlOVF9NQVgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMxLCBjbGFzcyBBbGxvYzE+Ci1pbmxpbmUgc3RkOjpzaXplX3QgcmVnZXhfc3BsaXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+JiBzKQotewotICAgcmV0dXJuIHJlZ2V4X3NwbGl0KG91dCwgcywgcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9leHByZXNzaW9uKGNoYXJUKDApKSwgbWF0Y2hfZGVmYXVsdCwgVUlOVF9NQVgpOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90b2tlbl9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I2MWM5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgcmVnZXhfdG9rZW5faXRlcmF0b3IgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkKLS8vCi0vLyBCb3JsYW5kIEMrKyBCdWlsZGVyIDYsIGFuZCBWaXN1YWwgQysrIDYsCi0vLyBjYW4ndCBjb3BlIHdpdGggdGhlIGFycmF5IHRlbXBsYXRlIGNvbnN0cnVjdG9yCi0vLyBzbyB3ZSBoYXZlIGEgdGVtcGxhdGUgbWVtYmVyIHRoYXQgd2lsbCBhY2NlcHQgYW55IHR5cGUgYXMgCi0vLyBhcmd1bWVudCwgYW5kIHRoZW4gYXNzZXJ0IHRoYXQgaXMgcmVhbGx5IGlzIGFuIGFycmF5OgotLy8KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+IDEzMDApCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzAwKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsCi0gICAgICAgICAgY2xhc3MgY2hhclQsCi0gICAgICAgICAgY2xhc3MgdHJhaXRzPgotY2xhc3MgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24gCi17Ci0gICB0eXBlZGVmIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+IHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgdmFsdWVfdHlwZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IHdoYXQ7ICAgLy8gY3VycmVudCBtYXRjaAotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGJhc2U7ICAgIC8vIHN0YXJ0IG9mIHNlYXJjaCBhcmVhCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgZW5kOyAgICAvLyBlbmQgb2Ygc2VhcmNoIGFyZWEKLSAgIGNvbnN0IHJlZ2V4X3R5cGUgICAgICAgICAgICAgICAgICAgICByZTsgICAgLy8gdGhlIGV4cHJlc3Npb24KLSAgIG1hdGNoX2ZsYWdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBmbGFnczsgIC8vIG1hdGNoIGZsYWdzCi0gICB2YWx1ZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OyAvLyB0aGUgY3VycmVudCBzdHJpbmcgcmVzdWx0Ci0gICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTjsgICAgICAvLyB0aGUgY3VycmVudCBzdWItZXhwcmVzc2lvbiBiZWluZyBlbnVtZXJhdGVkCi0gICBzdGQ6OnZlY3RvcjxpbnQ+ICAgICAgICAgICAgICAgICAgICAgc3ViczsgICAvLyB0aGUgc3ViLWV4cHJlc3Npb25zIHRvIGVudW1lcmF0ZQotCi1wdWJsaWM6Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgaW50IHN1YiwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKXsgc3Vicy5wdXNoX2JhY2soc3ViKTsgfQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHYsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZiksIHN1YnModil7fQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZikKLSAgIHsKLSAgICAgIC8vIGFzc2VydCB0aGF0IFQgcmVhbGx5IGlzIGFuIGFycmF5OgotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUpOwotICAgICAgY29uc3Qgc3RkOjpzaXplX3QgYXJyYXlfc2l6ZSA9IHNpemVvZihUKSAvIHNpemVvZihzdWJtYXRjaGVzWzBdKTsKLSAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemU7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN1YnMucHVzaF9iYWNrKHN1Ym1hdGNoZXNbaV0pOwotICAgICAgfQotICAgfQotI2Vsc2UKLSAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBDTj4KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBjb25zdCBpbnQgKCZzdWJtYXRjaGVzKVtDTl0sIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZikKLSAgIHsKLSAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSA8IENOOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBzdWJzLnB1c2hfYmFjayhzdWJtYXRjaGVzW2ldKTsKLSAgICAgIH0KLSAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICBib29sIGluaXQoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0KQotICAgewotICAgICAgTiA9IDA7Ci0gICAgICBiYXNlID0gZmlyc3Q7Ci0gICAgICBpZihyZWdleF9zZWFyY2goZmlyc3QsIGVuZCwgd2hhdCwgcmUsIGZsYWdzLCBiYXNlKSA9PSB0cnVlKQotICAgICAgewotICAgICAgICAgTiA9IDA7Ci0gICAgICAgICByZXN1bHQgPSAoKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbKGludClzdWJzW05dXSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKHN1YnNbTl0gPT0gLTEpICYmIChmaXJzdCAhPSBlbmQpKQotICAgICAgewotICAgICAgICAgcmVzdWx0LmZpcnN0ID0gZmlyc3Q7Ci0gICAgICAgICByZXN1bHQuc2Vjb25kID0gZW5kOwotICAgICAgICAgcmVzdWx0Lm1hdGNoZWQgPSAoZmlyc3QgIT0gZW5kKTsKLSAgICAgICAgIE4gPSAtMTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgYm9vbCBjb21wYXJlKGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiB0aGF0KQotICAgewotICAgICAgaWYodGhpcyA9PSAmdGhhdCkgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gKCZyZS5nZXRfZGF0YSgpID09ICZ0aGF0LnJlLmdldF9kYXRhKCkpIAotICAgICAgICAgJiYgKGVuZCA9PSB0aGF0LmVuZCkgCi0gICAgICAgICAmJiAoZmxhZ3MgPT0gdGhhdC5mbGFncykgCi0gICAgICAgICAmJiAoTiA9PSB0aGF0Lk4pIAotICAgICAgICAgJiYgKHdoYXRbMF0uZmlyc3QgPT0gdGhhdC53aGF0WzBdLmZpcnN0KSAKLSAgICAgICAgICYmICh3aGF0WzBdLnNlY29uZCA9PSB0aGF0LndoYXRbMF0uc2Vjb25kKTsKLSAgIH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUmIGdldCgpCi0gICB7IHJldHVybiByZXN1bHQ7IH0KLSAgIGJvb2wgbmV4dCgpCi0gICB7Ci0gICAgICBpZihOID09IC0xKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYoTisxIDwgKGludClzdWJzLnNpemUoKSkKLSAgICAgIHsKLSAgICAgICAgICsrTjsKLSAgICAgICAgIHJlc3VsdCA9KChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0W3N1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgLy9pZih3aGF0LnByZWZpeCgpLmZpcnN0ICE9IHdoYXRbMF0uc2Vjb25kKQotICAgICAgLy8gICBmbGFncyB8PSAvKm1hdGNoX3ByZXZfYXZhaWwgfCovIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvYjsKLSAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0X2VuZCh3aGF0WzBdLnNlY29uZCk7Ci0gICAgICBpZihyZWdleF9zZWFyY2gobGFzdF9lbmQsIGVuZCwgd2hhdCwgcmUsICgod2hhdFswXS5maXJzdCA9PSB3aGF0WzBdLnNlY29uZCkgPyBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbCA6IGZsYWdzKSwgYmFzZSkpCi0gICAgICB7Ci0gICAgICAgICBOID0wOwotICAgICAgICAgcmVzdWx0ID0oKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKChsYXN0X2VuZCAhPSBlbmQpICYmIChzdWJzWzBdID09IC0xKSkKLSAgICAgIHsKLSAgICAgICAgIE4gPS0xOwotICAgICAgICAgcmVzdWx0LmZpcnN0ID0gbGFzdF9lbmQ7Ci0gICAgICAgICByZXN1bHQuc2Vjb25kID0gZW5kOwotICAgICAgICAgcmVzdWx0Lm1hdGNoZWQgPSAobGFzdF9lbmQgIT0gZW5kKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotcHJpdmF0ZToKLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIAotICAgICAgICAgIGNsYXNzIGNoYXJUID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLAotICAgICAgICAgIGNsYXNzIHRyYWl0cyA9IHJlZ2V4X3RyYWl0czxjaGFyVD4gPgotY2xhc3MgcmVnZXhfdG9rZW5faXRlcmF0b3IgCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjwKLSAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIAotICAgICAgICAgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4sCi0gICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiosCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgPiAgICAgICAgIAotI2VuZGlmCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbjxCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IGltcGw7Ci0gICB0eXBlZGVmIHNoYXJlZF9wdHI8aW1wbD4gcGltcGw7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmICAgICAgICAgIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+ICAgICAgICAgICAgICAgICAgIHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsgCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAKLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKCl7fQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3VibWF0Y2ggPSAwLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2gsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoZXMsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sID49IDB4NTYwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkpXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2Vsc2UKLSAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAoJnN1Ym1hdGNoZXMpW05dLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBwZGF0YSh0aGF0LnBkYXRhKSB7fQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIHBkYXRhID0gdGhhdC5wZGF0YTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyAKLSAgICAgIGlmKChwZGF0YS5nZXQoKSA9PSAwKSB8fCAodGhhdC5wZGF0YS5nZXQoKSA9PSAwKSkKLSAgICAgICAgIHJldHVybiBwZGF0YS5nZXQoKSA9PSB0aGF0LnBkYXRhLmdldCgpOwotICAgICAgcmV0dXJuIHBkYXRhLT5jb21wYXJlKCoodGhhdC5wZGF0YS5nZXQoKSkpOyAKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCljb25zdAotICAgeyByZXR1cm4gcGRhdGEtPmdldCgpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCljb25zdAotICAgeyByZXR1cm4gJihwZGF0YS0+Z2V0KCkpOyB9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICBjb3coKTsKLSAgICAgIGlmKDAgPT0gcGRhdGEtPm5leHQoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvciBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yIHJlc3VsdCgqdGhpcyk7Ci0gICAgICArKygqdGhpcyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLQotICAgcGltcGwgcGRhdGE7Ci0KLSAgIHZvaWQgY293KCkKLSAgIHsKLSAgICAgIC8vIGNvcHktb24td3JpdGUKLSAgICAgIGlmKHBkYXRhLmdldCgpICYmICFwZGF0YS51bmlxdWUoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KG5ldyBpbXBsKCoocGRhdGEuZ2V0KCkpKSk7Ci0gICAgICB9Ci0gICB9Ci19OwotCi10eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBjcmVnZXhfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gc3JlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IHdjcmVnZXhfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHdzcmVnZXhfdG9rZW5faXRlcmF0b3I7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IGNoYXJUKiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+KHAsIHArdHJhaXRzOjpsZW5ndGgocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBTVCwgY2xhc3MgU0E+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBzdGQ6OnNpemVfdCBOPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyVCogcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+KHAsIHArdHJhaXRzOjpsZW5ndGgocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBTVCwgY2xhc3MgU0EsIHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyVCogcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4ocCwgcCt0cmFpdHM6Omxlbmd0aChwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFNULCBjbGFzcyBTQT4KLWlubGluZSByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+IDEzMDApCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OTFiYjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3RyYWl0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFpdHMgY2xhc3Nlcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9XT1JLQVJPVU5EX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NZTlRBWF9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9FUlJPUl9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19ERUZBVUxUU19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgIGlmbmRlZiBORE5CT09TVF9DUFBfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvY3BwX3JlZ2V4X3RyYWl0cy5ocHA+Ci0jICBlbmRpZgotI2VuZGlmCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTYwKQotIyAgaWZuZGVmIE5ETkJPT1NUX0NfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvY19yZWdleF90cmFpdHMuaHBwPgotIyAgZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jICBpZm5kZWYgTkROQk9PU1RfVzMyX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3czMl9yZWdleF90cmFpdHMuaHBwPgotIyAgZW5kaWYKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GV0RfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXhfZndkLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2hhc194eHguaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBpbXBsZW1lbnRhdGlvblQgPgotc3RydWN0IHJlZ2V4X3RyYWl0cyA6IHB1YmxpYyBpbXBsZW1lbnRhdGlvblQKLXsKLSAgIHJlZ2V4X3RyYWl0cygpIDogaW1wbGVtZW50YXRpb25UKCkge30KLX07Ci0KLS8vCi0vLyBjbGFzcyByZWdleF90cmFpdHNfd3JhcHBlci4KLS8vIHRoaXMgaXMgd2hhdCBvdXIgaW1wbGVtZW50YXRpb24gd2lsbCBhY3R1YWxseSBzdG9yZTsKLS8vIGl0IHByb3ZpZGVzIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAib3B0aW9uYWwiCi0vLyBpbnRlcmZhY2VzIHRoYXQgd2Ugc3VwcG9ydCwgaW4gYWRkaXRpb24gdG8gdGhlCi0vLyByZXF1aXJlZCAic3RhbmRhcmQiIG9uZXM6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDAwMCkKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihib29zdF9leHRlbnNpb25zX3RhZykKLSNlbHNlCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGhhc19ib29zdF9leHRlbnNpb25zX3RhZwotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZVQ+Ci1zdHJ1Y3QgZGVmYXVsdF93cmFwcGVyIDogcHVibGljIEJhc2VUCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEJhc2VUOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcoZSk7Ci0gICB9Ci0gICA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKChjICYgMHg3ZikgPT0gYykgPyBnZXRfZGVmYXVsdF9zeW50YXhfdHlwZShzdGF0aWNfY2FzdDxjaGFyPihjKSkgOiA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9jaGFyOwotICAgfQotICAgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKChjICYgMHg3ZikgPT0gYykgPyBnZXRfZGVmYXVsdF9lc2NhcGVfc3ludGF4X3R5cGUoc3RhdGljX2Nhc3Q8Y2hhcj4oYykpIDogOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9pZGVudGl0eTsKLSAgIH0KLSAgIGludCB0b2koY29uc3QgY2hhcl90eXBlKiYgcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3RvaShwMSwgcDIsIHJhZGl4LCAqdGhpcyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdHJhbnNsYXRlKGNoYXJfdHlwZSBjLCBib29sIGljYXNlKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKGljYXNlID8gdGhpcy0+dHJhbnNsYXRlX25vY2FzZShjKSA6IHRoaXMtPnRyYW5zbGF0ZShjKSk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdHJhbnNsYXRlKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gQmFzZVQ6OnRyYW5zbGF0ZShjKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0b2xvd2VyKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdG91cHBlcihjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3VwcGVyKGMpOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VULCBib29sIGhhc19leHRlbnNpb25zPgotc3RydWN0IGNvbXB1dGVfd3JhcHBlcl9iYXNlCi17Ci0gICB0eXBlZGVmIEJhc2VUIHR5cGU7Ci19OwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwMDAwKQotdGVtcGxhdGUgPGNsYXNzIEJhc2VUPgotc3RydWN0IGNvbXB1dGVfd3JhcHBlcl9iYXNlPEJhc2VULCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgZGVmYXVsdF93cmFwcGVyPEJhc2VUPiB0eXBlOwotfTsKLSNlbHNlCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGNvbXB1dGVfd3JhcHBlcl9iYXNlPGNfcmVnZXhfdHJhaXRzPGNoYXI+LCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgZGVmYXVsdF93cmFwcGVyPGNfcmVnZXhfdHJhaXRzPGNoYXI+ID4gdHlwZTsKLX07Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGUgPD4KLXN0cnVjdCBjb21wdXRlX3dyYXBwZXJfYmFzZTxjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiwgZmFsc2U+Ci17Ci0gICB0eXBlZGVmIGRlZmF1bHRfd3JhcHBlcjxjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+IHR5cGU7Ci19OwotI2VuZGlmCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlVD4KLXN0cnVjdCByZWdleF90cmFpdHNfd3JhcHBlciAKLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y29tcHV0ZV93cmFwcGVyX2Jhc2U8Ci0gICAgICAgICAgICAgICBCYXNlVCwgCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omhhc19ib29zdF9leHRlbnNpb25zX3RhZzxCYXNlVD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi17Ci0gICByZWdleF90cmFpdHNfd3JhcHBlcigpe30KLXByaXZhdGU6Ci0gICByZWdleF90cmFpdHNfd3JhcHBlcihjb25zdCByZWdleF90cmFpdHNfd3JhcHBlciYpOwotICAgcmVnZXhfdHJhaXRzX3dyYXBwZXImIG9wZXJhdG9yPShjb25zdCByZWdleF90cmFpdHNfd3JhcHBlciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNGZjMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIEFQSSdzIGZvciBhY2Nlc3MgdG8gcmVnZXhfdHJhaXRzIGRlZmF1bHQgcHJvcGVydGllcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19ERUZBVUxUU19IUFBfSU5DTFVERUQKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NZTlRBWF9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9FUlJPUl9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZHsKLSAgIHVzaW5nIDo6c3RybGVuOwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotCi0vLwotLy8gaGVscGVycyB0byBzdXBwcmVzcyB3YXJuaW5nczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgYm9vbCBpc19leHRlbmRlZChjaGFyVCBjKQoteyByZXR1cm4gYyA+IDI1NjsgfQotaW5saW5lIGJvb2wgaXNfZXh0ZW5kZWQoY2hhcikKLXsgcmV0dXJuIGZhbHNlOyB9Ci0KLQotTkROQk9PU1RfUkVHRVhfREVDTCBjb25zdCBjaGFyKiBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9kZWZhdWx0X3N5bnRheChyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIG4pOwotTkROQk9PU1RfUkVHRVhfREVDTCBjb25zdCBjaGFyKiBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbik7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRfZGVmYXVsdF9zeW50YXhfdHlwZShjaGFyIGMpOwotTkROQk9PU1RfUkVHRVhfREVDTCByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9kZWZhdWx0X2VzY2FwZV9zeW50YXhfdHlwZShjaGFyIGMpOwotCi0vLyBpcyBjaGFyVCBjIGEgY29tYmluaW5nIGNoYXJhY3Rlcj8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzX2NvbWJpbmluZ19pbXBsZW1lbnRhdGlvbih1aW50X2xlYXN0MTZfdCBzKTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nKGNoYXJUIGMpCi17Ci0gICByZXR1cm4gKGMgPD0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKSA/IGZhbHNlIDogKChjID49IHN0YXRpY19jYXN0PGNoYXJUPigoc3RkOjpudW1lcmljX2xpbWl0czx1aW50X2xlYXN0MTZfdD46Om1heCkoKSkpID8gZmFsc2UgOiBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMpKSk7Ci19Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPGNoYXI+KGNoYXIpCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPHNpZ25lZCBjaGFyPihzaWduZWQgY2hhcikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8dW5zaWduZWQgY2hhcj4odW5zaWduZWQgY2hhcikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLSNpZiAhZGVmaW5lZChfX2hwdXgpICYmICFkZWZpbmVkKF9fV0lOU0NXX18pIC8vIGNhbid0IHVzZSBXQ0hBUl9NQVgvTUlOIGluIHBwLWRpcmVjdGl2ZXMKLSNpZmRlZiBfTVNDX1ZFUgotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPHdjaGFyX3Q+KHdjaGFyX3QgYykKLXsKLSAgIHJldHVybiBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMpKTsKLX0KLSNlbGlmICFkZWZpbmVkKF9fREVDQ1hYKSAmJiAhZGVmaW5lZChfX29zZl9fKSAmJiAhZGVmaW5lZChfX09TRl9fKSAmJiBkZWZpbmVkKFdDSEFSX01JTikgJiYgKFdDSEFSX01JTiA9PSAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSNpZiBkZWZpbmVkKFdDSEFSX01BWCkgJiYgKFdDSEFSX01BWCA8PSBVU0hSVF9NQVgpCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8d2NoYXJfdD4od2NoYXJfdCBjKQotewotICAgcmV0dXJuIGlzX2NvbWJpbmluZ19pbXBsZW1lbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpOwotfQotI2Vsc2UKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZzx3Y2hhcl90Pih3Y2hhcl90IGMpCi17Ci0gICByZXR1cm4gKGMgPj0gKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludF9sZWFzdDE2X3Q+OjptYXgpKCkpID8gZmFsc2UgOiBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMpKTsKLX0KLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotLy8KLS8vIGlzIGEgY2hhclQgYyBhIGxpbmUgc2VwYXJhdG9yPwotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBib29sIGlzX3NlcGFyYXRvcihjaGFyVCBjKQotewotICAgcmV0dXJuIE5ETkJPT1NUX1JFR0VYX01BS0VfQk9PTCgKLSAgICAgIChjID09IHN0YXRpY19jYXN0PGNoYXJUPignXG4nKSkKLSAgICAgIHx8IChjID09IHN0YXRpY19jYXN0PGNoYXJUPignXHInKSkKLSAgICAgIHx8IChjID09IHN0YXRpY19jYXN0PGNoYXJUPignXGYnKSkKLSAgICAgIHx8IChzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KGMpID09IDB4MjAyOHUpCi0gICAgICB8fCAoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90PihjKSA9PSAweDIwMjl1KQotICAgICAgfHwgKHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4oYykgPT0gMHg4NXUpKTsKLX0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgYm9vbCBpc19zZXBhcmF0b3I8Y2hhcj4oY2hhciBjKQotewotICAgcmV0dXJuIE5ETkJPT1NUX1JFR0VYX01BS0VfQk9PTCgoYyA9PSAnXG4nKSB8fCAoYyA9PSAnXHInKSB8fCAoYyA9PSAnXGYnKSk7Ci19Ci0KLS8vCi0vLyBnZXQgYSBkZWZhdWx0IGNvbGxhdGluZyBlbGVtZW50OgotLy8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjpzdHJpbmcgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfZGVmYXVsdF9jb2xsYXRlX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotCi0vLwotLy8gZ2V0IHRoZSBzdGF0ZV9pZCBvZiBhIGNoYXJhY3RlciBjbGFzaWZpY2F0aW9uLCB0aGUgaW5kaXZpZHVhbAotLy8gdHJhaXRzIGNsYXNzZXMgdGhlbiB0cmFuc2Zvcm0gdGhhdCBzdGF0ZV9pZCBpbnRvIGEgYml0bWFzazoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2UKLXsKLSAgIGNvbnN0IGNoYXJUKiBwMTsKLSAgIGNvbnN0IGNoYXJUKiBwMjsKLQotICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZSYgciljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUocDEsIHAyLCByLnAxLCByLnAyKTsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlJiByKWNvbnN0Ci0gICB7Ci0gICAgICAvLyBOb3Qgb25seSBkbyB3ZSBjaGVjayB0aGF0IHRoZSByYW5nZXMgYXJlIG9mIGVxdWFsIHNpemUgYmVmb3JlCi0gICAgICAvLyBjYWxsaW5nIHN0ZDo6ZXF1YWwsIGJ1dCB0aGVyZSBpcyBubyBvdGhlciBhbGdvcml0aG0gYXZhaWxhYmxlOgotICAgICAgLy8gbm90IGV2ZW4gYSBub24tc3RhbmRhcmQgTVMgb25lLiAgU28gZm9yd2FyZCB0byB1bmNoZWNrZWRfZXF1YWwKLSAgICAgIC8vIGluIHRoZSBNUyBjYXNlLgotICAgICAgcmV0dXJuICgocDIgLSBwMSkgPT0gKHIucDIgLSByLnAxKSkgJiYgcmVfZGV0YWlsOjplcXVhbChwMSwgcDIsIHIucDEpOwotICAgfQotfTsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWludCBnZXRfZGVmYXVsdF9jbGFzc19pZChjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBkYXRhWzczXSA9IHsKLSAgICAgICdhJywgJ2wnLCAnbicsICd1JywgJ20nLAotICAgICAgJ2EnLCAnbCcsICdwJywgJ2gnLCAnYScsCi0gICAgICAnYicsICdsJywgJ2EnLCAnbicsICdrJywKLSAgICAgICdjJywgJ24nLCAndCcsICdyJywgJ2wnLAotICAgICAgJ2QnLCAnaScsICdnJywgJ2knLCAndCcsCi0gICAgICAnZycsICdyJywgJ2EnLCAncCcsICdoJywKLSAgICAgICdsJywgJ28nLCAndycsICdlJywgJ3InLAotICAgICAgJ3AnLCAncicsICdpJywgJ24nLCAndCcsCi0gICAgICAncCcsICd1JywgJ24nLCAnYycsICd0JywKLSAgICAgICdzJywgJ3AnLCAnYScsICdjJywgJ2UnLAotICAgICAgJ3UnLCAnbicsICdpJywgJ2MnLCAnbycsICdkJywgJ2UnLAotICAgICAgJ3UnLCAncCcsICdwJywgJ2UnLCAncicsCi0gICAgICAndicsCi0gICAgICAndycsICdvJywgJ3InLCAnZCcsCi0gICAgICAneCcsICdkJywgJ2knLCAnZycsICdpJywgJ3QnLAotICAgfTsKLQotICAgc3RhdGljIGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiByYW5nZXNbMjFdID0KLSAgIHsKLSAgICAgIHtkYXRhKzAsIGRhdGErNSx9LCAvLyBhbG51bQotICAgICAge2RhdGErNSwgZGF0YSsxMCx9LCAvLyBhbHBoYQotICAgICAge2RhdGErMTAsIGRhdGErMTUsfSwgLy8gYmxhbmsKLSAgICAgIHtkYXRhKzE1LCBkYXRhKzIwLH0sIC8vIGNudHJsCi0gICAgICB7ZGF0YSsyMCwgZGF0YSsyMSx9LCAvLyBkCi0gICAgICB7ZGF0YSsyMCwgZGF0YSsyNSx9LCAvLyBkaWdpdAotICAgICAge2RhdGErMjUsIGRhdGErMzAsfSwgLy8gZ3JhcGgKLSAgICAgIHtkYXRhKzI5LCBkYXRhKzMwLH0sIC8vIGgKLSAgICAgIHtkYXRhKzMwLCBkYXRhKzMxLH0sIC8vIGwKLSAgICAgIHtkYXRhKzMwLCBkYXRhKzM1LH0sIC8vIGxvd2VyCi0gICAgICB7ZGF0YSszNSwgZGF0YSs0MCx9LCAvLyBwcmludAotICAgICAge2RhdGErNDAsIGRhdGErNDUsfSwgLy8gcHVuY3QKLSAgICAgIHtkYXRhKzQ1LCBkYXRhKzQ2LH0sIC8vIHMKLSAgICAgIHtkYXRhKzQ1LCBkYXRhKzUwLH0sIC8vIHNwYWNlCi0gICAgICB7ZGF0YSs1NywgZGF0YSs1OCx9LCAvLyB1Ci0gICAgICB7ZGF0YSs1MCwgZGF0YSs1Nyx9LCAvLyB1bmljb2RlCi0gICAgICB7ZGF0YSs1NywgZGF0YSs2Mix9LCAvLyB1cHBlcgotICAgICAge2RhdGErNjIsIGRhdGErNjMsfSwgLy8gdgotICAgICAge2RhdGErNjMsIGRhdGErNjQsfSwgLy8gdwotICAgICAge2RhdGErNjMsIGRhdGErNjcsfSwgLy8gd29yZAotICAgICAge2RhdGErNjcsIGRhdGErNzMsfSwgLy8geGRpZ2l0Ci0gICB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiogcmFuZ2VzX2JlZ2luID0gcmFuZ2VzOwotICAgc3RhdGljIGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiogcmFuZ2VzX2VuZCA9IHJhbmdlcyArIChzaXplb2YocmFuZ2VzKS9zaXplb2YocmFuZ2VzWzBdKSk7Ci0KLSAgIGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiB0ID0geyBwMSwgcDIsIH07Ci0gICBjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZTxjaGFyVD4qIHAgPSBzdGQ6Omxvd2VyX2JvdW5kKHJhbmdlc19iZWdpbiwgcmFuZ2VzX2VuZCwgdCk7Ci0gICBpZigocCAhPSByYW5nZXNfZW5kKSAmJiAodCA9PSAqcCkpCi0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwIC0gcmFuZ2VzKTsKLSAgIHJldHVybiAtMTsKLX0KLQotLy8KLS8vIGhlbHBlciBmdW5jdGlvbnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpwdHJkaWZmX3QgZ2xvYmFsX2xlbmd0aChjb25zdCBjaGFyVCogcCkKLXsKLSAgIHN0ZDo6cHRyZGlmZl90IG4gPSAwOwotICAgd2hpbGUoKnApCi0gICB7Ci0gICAgICArK3A7Ci0gICAgICArK247Ci0gICB9Ci0gICByZXR1cm4gbjsKLX0KLXRlbXBsYXRlPD4KLWlubGluZSBzdGQ6OnB0cmRpZmZfdCBnbG9iYWxfbGVuZ3RoPGNoYXI+KGNvbnN0IGNoYXIqIHApCi17Ci0gICByZXR1cm4gKHN0ZDo6c3RybGVuKShwKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgc3RkOjpwdHJkaWZmX3QgZ2xvYmFsX2xlbmd0aDx3Y2hhcl90Pihjb25zdCB3Y2hhcl90KiBwKQotewotICAgcmV0dXJuIChzdGQ6Ondjc2xlbikocCk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBjaGFyVCBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF9sb3dlcihjaGFyVCBjKQotewotICAgcmV0dXJuIGM7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgY2hhclQgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfdXBwZXIoY2hhclQgYykKLXsKLSAgIHJldHVybiBjOwotfQotCi1ORE5CT09TVF9SRUdFWF9ERUNMIGNoYXIgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfbG93ZXIoY2hhciBjKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF91cHBlcihjaGFyIGMpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgd2NoYXJfdCBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF9sb3dlcih3Y2hhcl90IGMpOwotTkROQk9PU1RfUkVHRVhfREVDTCB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgZG9fZ2xvYmFsX3VwcGVyKHdjaGFyX3QgYyk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCB1bnNpZ25lZCBzaG9ydCBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF9sb3dlcih1bnNpZ25lZCBzaG9ydCBjKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfdXBwZXIodW5zaWduZWQgc2hvcnQgYyk7Ci0jZW5kaWYKLS8vCi0vLyBUaGlzIHN1Y2tzOiBkZWNsYXJlIHRlbXBsYXRlIHNwZWNpYWxpc2F0aW9ucyBvZiBnbG9iYWxfbG93ZXIvZ2xvYmFsX3VwcGVyCi0vLyB0aGF0IGp1c3QgZm9yd2FyZCB0byB0aGUgbm9uLXRlbXBsYXRlIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucy4gIFdlIGRvCi0vLyB0aGlzIGJlY2F1c2UgdGhlcmUgaXMgb25lIGNvbXBpbGVyIChDb21wYXEgVHJ1NjQgQysrKSB0aGF0IGRvZXNuJ3Qgc2VlbQotLy8gdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRlbXBsYXRlcyBhbmQgbm9uLXRlbXBsYXRlIG92ZXJsb2Fkcy4uLi4KLS8vIHdoYXQncyBtb3JlLCB0aGUgcHJpbWFyeSB0ZW1wbGF0ZSwgcGx1cyBhbGwgb3ZlcmxvYWRzIGhhdmUgdG8gYmUKLS8vIGRlZmluZWQgaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdCAoaWYgb25lIGlzIGlubGluZSB0aGV5IGFsbCBtdXN0IGJlKQotLy8gb3RoZXJ3aXNlIHRoZSAibG9jYWwgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiIgY29tcGlsZXIgb3B0aW9uIGNhbiBwaWNrCi0vLyB0aGUgd3JvbmcgaW5zdGFudGlhdGlvbiB3aGVuIGxpbmtpbmc6Ci0vLwotdGVtcGxhdGU8PiBpbmxpbmUgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF9sb3dlcjxjaGFyPihjaGFyIGMpeyByZXR1cm4gZG9fZ2xvYmFsX2xvd2VyKGMpOyB9Ci10ZW1wbGF0ZTw+IGlubGluZSBjaGFyIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX3VwcGVyPGNoYXI+KGNoYXIgYyl7IHJldHVybiBkb19nbG9iYWxfdXBwZXIoYyk7IH0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZTw+IGlubGluZSB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX2xvd2VyPHdjaGFyX3Q+KHdjaGFyX3QgYyl7IHJldHVybiBkb19nbG9iYWxfbG93ZXIoYyk7IH0KLXRlbXBsYXRlPD4gaW5saW5lIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfdXBwZXI8d2NoYXJfdD4od2NoYXJfdCBjKXsgcmV0dXJuIGRvX2dsb2JhbF91cHBlcihjKTsgfQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLXRlbXBsYXRlPD4gaW5saW5lIHVuc2lnbmVkIHNob3J0IE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX2xvd2VyPHVuc2lnbmVkIHNob3J0Pih1bnNpZ25lZCBzaG9ydCBjKXsgcmV0dXJuIGRvX2dsb2JhbF9sb3dlcihjKTsgfQotdGVtcGxhdGU8PiBpbmxpbmUgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfdXBwZXI8dW5zaWduZWQgc2hvcnQ+KHVuc2lnbmVkIHNob3J0IGMpeyByZXR1cm4gZG9fZ2xvYmFsX3VwcGVyKGMpOyB9Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW50IGdsb2JhbF92YWx1ZShjaGFyVCBjKQotewotICAgc3RhdGljIGNvbnN0IGNoYXJUIHplcm8gPSAnMCc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgbmluZSA9ICc5JzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBhID0gJ2EnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIGYgPSAnZic7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgQSA9ICdBJzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBGID0gJ0YnOwotCi0gICBpZihjID4gZikgcmV0dXJuIC0xOwotICAgaWYoYyA+PSBhKSByZXR1cm4gMTAgKyAoYyAtIGEpOwotICAgaWYoYyA+IEYpIHJldHVybiAtMTsKLSAgIGlmKGMgPj0gQSkgcmV0dXJuIDEwICsgKGMgLSBBKTsKLSAgIGlmKGMgPiBuaW5lKSByZXR1cm4gLTE7Ci0gICBpZihjID49IHplcm8pIHJldHVybiBjIC0gemVybzsKLSAgIHJldHVybiAtMTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW50IGdsb2JhbF90b2koY29uc3QgY2hhclQqJiBwMSwgY29uc3QgY2hhclQqIHAyLCBpbnQgcmFkaXgsIGNvbnN0IHRyYWl0cyYgdCkKLXsKLSAgICh2b2lkKXQ7IC8vIHdhcm5pbmcgc3VwcHJlc3Npb24KLSAgIGludCBuZXh0X3ZhbHVlID0gdC52YWx1ZSgqcDEsIHJhZGl4KTsKLSAgIGlmKChwMSA9PSBwMikgfHwgKG5leHRfdmFsdWUgPCAwKSB8fCAobmV4dF92YWx1ZSA+PSByYWRpeCkpCi0gICAgICByZXR1cm4gLTE7Ci0gICBpbnQgcmVzdWx0ID0gMDsKLSAgIHdoaWxlKHAxICE9IHAyKQotICAgewotICAgICAgbmV4dF92YWx1ZSA9IHQudmFsdWUoKnAxLCByYWRpeCk7Ci0gICAgICBpZigobmV4dF92YWx1ZSA8IDApIHx8IChuZXh0X3ZhbHVlID49IHJhZGl4KSkKLSAgICAgICAgIGJyZWFrOwotICAgICAgcmVzdWx0ICo9IHJhZGl4OwotICAgICAgcmVzdWx0ICs9IG5leHRfdmFsdWU7Ci0gICAgICArK3AxOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGNvbnN0IGNoYXJUKiBnZXRfZXNjYXBlX1Jfc3RyaW5nKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzA5IDQyNDUpCi0jZW5kaWYKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBlMVtdID0geyAnKCcsICc/JywgJz4nLCAnXHgwRCcsICdceDBBJywgJz8nLAotICAgICAgJ3wnLCAnWycsICdceDBBJywgJ1x4MEInLCAnXHgwQycsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdceDg1JyksICdcXCcsICd4JywgJ3snLCAnMicsICcwJywgJzInLCAnOCcsICd9JywKLSAgICAgICAgICAgICAgICAnXFwnLCAneCcsICd7JywgJzInLCAnMCcsICcyJywgJzknLCAnfScsICddJywgJyknLCAnXDAnIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgZTJbXSA9IHsgJygnLCAnPycsICc+JywgJ1x4MEQnLCAnXHgwQScsICc/JywKLSAgICAgICd8JywgJ1snLCAnXHgwQScsICdceDBCJywgJ1x4MEMnLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPignXHg4NScpLCAnXScsICcpJywgJ1wwJyB9OwotCi0gICBjaGFyVCBjID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDB4MjAyOXUpOwotICAgYm9vbCBiID0gKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjKSA9PSAweDIwMjl1KTsKLQotICAgcmV0dXJuIChiID8gZTEgOiBlMik7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgY29uc3QgY2hhciogZ2V0X2VzY2FwZV9SX3N0cmluZzxjaGFyPigpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDMwOSkKLSNlbmRpZgotICAgc3RhdGljIGNvbnN0IGNoYXIgZTJbXSA9IHsgJygnLCAnPycsICc+JywgJ1x4MEQnLCAnXHgwQScsICc/JywKLSAgICAgICd8JywgJ1snLCAnXHgwQScsICdceDBCJywgJ1x4MEMnLCAnXHg4NScsICddJywgJyknLCAnXDAnIH07Ci0gICByZXR1cm4gZTI7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLX0gLy8gcmVfZGV0YWlsCi19IC8vIGJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF93b3JrYXJvdW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlkNDM4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF93b3JrYXJvdW5kcy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIE1pc2Mgd29ya2Fyb3VuZHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfV09SS0FST1VORF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfV09SS0FST1VORF9IUFAKLQotCi0jaW5jbHVkZSA8bmV3PgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGNsaW1pdHM+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbF9md2QuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICAgaW5jbHVkZSA8bG9jYWxlPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotbmFtZXNwYWNlIHN0ZHsKLSAgIHVzaW5nIDo6c3ByaW50ZjsgdXNpbmcgOjpzdHJjcHk7IHVzaW5nIDo6c3RyY2F0OyB1c2luZyA6OnN0cmxlbjsKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0jaWZkZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0ZDo6cHRyZGlmZl90IGRpc3RhbmNlKGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi17IHJldHVybiB5IC0geDsgfQotI2Vsc2UKLXVzaW5nIHN0ZDo6ZGlzdGFuY2U7Ci0jZW5kaWYKLX19Ci0KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0JPT0wKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQUtFX0JPT0woeCkgc3RhdGljX2Nhc3Q8Ym9vbD4oKHgpID8gdHJ1ZSA6IGZhbHNlKQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQUtFX0JPT0woeCkgc3RhdGljX2Nhc3Q8Ym9vbD4oeCkKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgRml4IGJyb2tlbiBicm9rZW4gbmFtZXNwYWNlIHN1cHBvcnQ6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotCi1uYW1lc3BhY2Ugc3RkewotICAgdXNpbmcgOjpwdHJkaWZmX3Q7Ci0gICB1c2luZyA6OnNpemVfdDsKLSAgIHVzaW5nIDo6YWJzOwotICAgdXNpbmcgOjptZW1zZXQ7Ci0gICB1c2luZyA6Om1lbWNweTsKLX0KLQotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBoZWxwZXIgZnVuY3Rpb25zIHBvaW50ZXJfY29uc3RydWN0L3BvaW50ZXJfZGVzdHJveToKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcgKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTAwKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIHZvaWQgcG9pbnRlcl9kZXN0cm95KFQqIHApCi17IHAtPn5UKCk7ICh2b2lkKXA7IH0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIHZvaWQgcG9pbnRlcl9jb25zdHJ1Y3QoVCogcCwgY29uc3QgVCYgdCkKLXsgbmV3IChwKSBUKHQpOyB9Ci0KLX19IC8vIG5hbWVzcGFjZXMKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgaGVscGVyIGZ1bmN0aW9uIGNvcHk6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgcmVfZGV0YWlsewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTE0MDApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPDE2MDApICYmIGRlZmluZWQoX0NQUExJQl9WRVIpICYmIGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpICYmICEoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkKLSAgIC8vCi0gICAvLyBNU1ZDIDggd2lsbCBlaXRoZXIgZW1pdCB3YXJuaW5ncyBvciBlbHNlIHJlZnVzZSB0byBjb21waWxlCi0gICAvLyBjb2RlIHRoYXQgbWFrZXMgcGVyZmVjdGx5IGxlZ2l0aW1hdGUgdXNlIG9mIHN0ZDo6Y29weSwgd2hlbgotICAgLy8gdGhlIE91dHB1dEl0ZXJhdG9yIHR5cGUgaXMgYSB1c2VyLWRlZmluZWQgY2xhc3MgKGFwcGFyZW50bHkgYWxsIHVzZXIgCi0gICAvLyBkZWZpbmVkIGl0ZXJhdG9ycyBhcmUgInVuc2FmZSIpLiAgVGhpcyBjb2RlIHdvcmtzIGFyb3VuZCB0aGF0OgotICAgLy8KLSAgIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3IsIGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHkoCi0gICAgICBJbnB1dEl0ZXJhdG9yIGZpcnN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IgbGFzdCwgCi0gICAgICBPdXRwdXRJdGVyYXRvciBkZXN0Ci0gICApCi0gICB7Ci0gICAgICByZXR1cm4gc3RkZXh0Ojp1bmNoZWNrZWRfY29weShmaXJzdCwgbGFzdCwgZGVzdCk7Ci0gICB9Ci0gICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yMSwgY2xhc3MgSW5wdXRJdGVyYXRvcjI+Ci0gICBpbmxpbmUgYm9vbCBlcXVhbCgKLSAgICAgIElucHV0SXRlcmF0b3IxIGZpcnN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IxIGxhc3QsIAotICAgICAgSW5wdXRJdGVyYXRvcjIgd2l0aAotICAgKQotICAgewotICAgICAgcmV0dXJuIHN0ZGV4dDo6dW5jaGVja2VkX2VxdWFsKGZpcnN0LCBsYXN0LCB3aXRoKTsKLSAgIH0KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPiAxNTAwKQotICAgLy8KLSAgIC8vIE1TVkMgMTAgd2lsbCBlaXRoZXIgZW1pdCB3YXJuaW5ncyBvciBlbHNlIHJlZnVzZSB0byBjb21waWxlCi0gICAvLyBjb2RlIHRoYXQgbWFrZXMgcGVyZmVjdGx5IGxlZ2l0aW1hdGUgdXNlIG9mIHN0ZDo6Y29weSwgd2hlbgotICAgLy8gdGhlIE91dHB1dEl0ZXJhdG9yIHR5cGUgaXMgYSB1c2VyLWRlZmluZWQgY2xhc3MgKGFwcGFyZW50bHkgYWxsIHVzZXIgCi0gICAvLyBkZWZpbmVkIGl0ZXJhdG9ycyBhcmUgInVuc2FmZSIpLiAgV2hhdCdzIG1vcmUgTWljcm9zb2Z0IGhhdmUgcmVtb3ZlZCB0aGVpcgotICAgLy8gbm9uLXN0YW5kYXJkICJ1bmNoZWNrZWQiIHZlcnNpb25zLCBldmVuIHRob3VnaCB0aGVpciBzdGlsbCBpbiB0aGUgTVMKLSAgIC8vIGRvY3VtZW50YXRpb24hISBXb3JrIGFyb3VuZCB0aGlzIGFzIGJlc3Qgd2UgY2FuOiAKLSAgIC8vCi0gICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yLCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIGlubGluZSBPdXRwdXRJdGVyYXRvciBjb3B5KAotICAgICAgSW5wdXRJdGVyYXRvciBmaXJzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QsIAotICAgICAgT3V0cHV0SXRlcmF0b3IgZGVzdAotICAgKQotICAgewotICAgICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgICAgICAgICpkZXN0KysgPSAqZmlyc3QrKzsKLSAgICAgIHJldHVybiBkZXN0OwotICAgfQotICAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcjEsIGNsYXNzIElucHV0SXRlcmF0b3IyPgotICAgaW5saW5lIGJvb2wgZXF1YWwoCi0gICAgICBJbnB1dEl0ZXJhdG9yMSBmaXJzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yMSBsYXN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IyIHdpdGgKLSAgICkKLSAgIHsKLSAgICAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICAgICAgICBpZigqZmlyc3QrKyAhPSAqd2l0aCsrKSByZXR1cm4gZmFsc2U7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSNlbHNlIAotICAgdXNpbmcgc3RkOjpjb3B5OyAKLSAgIHVzaW5nIHN0ZDo6ZXF1YWw7IAotI2VuZGlmIAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTE0MDApICYmIGRlZmluZWQoX19TVERDX1dBTlRfU0VDVVJFX0xJQl9fKSAmJiBfX1NURENfV0FOVF9TRUNVUkVfTElCX18gCi0KLSAgIC8vIHVzZSBzYWZlIHZlcnNpb25zIG9mIHN0cmNweSBldGM6Ci0gICB1c2luZyA6OnN0cmNweV9zOwotICAgdXNpbmcgOjpzdHJjYXRfczsKLSNlbHNlCi0gICBpbmxpbmUgc3RkOjpzaXplX3Qgc3RyY3B5X3MoCi0gICAgICBjaGFyICpzdHJEZXN0aW5hdGlvbiwKLSAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ5dGVzLAotICAgICAgY29uc3QgY2hhciAqc3RyU291cmNlIAotICAgKQotICAgewotICAgICAgaWYoc3RkOjpzdHJsZW4oc3RyU291cmNlKSsxID4gc2l6ZUluQnl0ZXMpCi0gICAgICAgICByZXR1cm4gMTsKLSAgICAgIHN0ZDo6c3RyY3B5KHN0ckRlc3RpbmF0aW9uLCBzdHJTb3VyY2UpOwotICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gICBpbmxpbmUgc3RkOjpzaXplX3Qgc3RyY2F0X3MoCi0gICAgICBjaGFyICpzdHJEZXN0aW5hdGlvbiwKLSAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ5dGVzLAotICAgICAgY29uc3QgY2hhciAqc3RyU291cmNlIAotICAgKQotICAgewotICAgICAgaWYoc3RkOjpzdHJsZW4oc3RyU291cmNlKSArIHN0ZDo6c3RybGVuKHN0ckRlc3RpbmF0aW9uKSArIDEgPiBzaXplSW5CeXRlcykKLSAgICAgICAgIHJldHVybiAxOwotICAgICAgc3RkOjpzdHJjYXQoc3RyRGVzdGluYXRpb24sIHN0clNvdXJjZSk7Ci0gICAgICByZXR1cm4gMDsKLSAgIH0KLQotI2VuZGlmCi0KLSAgIGlubGluZSB2b2lkIG92ZXJmbG93X2Vycm9yX2lmX25vdF96ZXJvKHN0ZDo6c2l6ZV90IGkpCi0gICB7Ci0gICAgICBpZihpKQotICAgICAgewotICAgICAgICAgc3RkOjpvdmVyZmxvd19lcnJvciBlKCJTdHJpbmcgYnVmZmVyIHRvbyBzbWFsbCIpOwotICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSAgICAgIH0KLSAgIH0KLQotfX0gLy8gbmFtZXNwYWNlcwotCi0jZW5kaWYgLy8gX19jcGx1c3BsdXMKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdGF0ZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdGF0ZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjk4ZmEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3RhdGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgc3RhdGVzLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgaW50ZXJuYWwgc3RhdGUgbWFjaGluZSBzdHJ1Y3R1cmVzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1NUQVRFU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfU1RBVEVTX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8qKiogbWFza190eXBlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVdoZW5ldmVyIHdlIGhhdmUgYSBjaG9pY2Ugb2YgdHdvIGFsdGVybmF0aXZlcywgd2UgdXNlIGFuIGFycmF5IG9mIGJ5dGVzCi10byBpbmRpY2F0ZSB3aGljaCBvZiB0aGUgdHdvIGFsdGVybmF0aXZlcyBpdCBpcyBwb3NzaWJsZSB0byB0YWtlIGZvciBhbnkKLWdpdmVuIGlucHV0IGNoYXJhY3Rlci4gIElmIG1hc2tfdGFrZSBpcyBzZXQsIHRoZW4gd2UgY2FuIHRha2UgdGhlIG5leHQgCi1zdGF0ZSwgYW5kIGlmIG1hc2tfc2tpcCBpcyBzZXQgdGhlbiB3ZSBjYW4gdGFrZSB0aGUgYWx0ZXJuYXRpdmUuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWVudW0gbWFza190eXBlCi17Ci0gICBtYXNrX3Rha2UgPSAxLAotICAgbWFza19za2lwID0gMiwKLSAgIG1hc2tfaW5pdCA9IDQsCi0gICBtYXNrX2FueSA9IG1hc2tfc2tpcCB8IG1hc2tfdGFrZSwKLSAgIG1hc2tfYWxsID0gbWFza19hbnkKLX07Ci0KLS8qKiogaGVscGVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1UaGVzZSBoZWxwZXJzIGxldCB1cyB1c2UgZnVuY3Rpb24gb3ZlcmxvYWQgcmVzb2x1dGlvbiB0byBkZXRlY3Qgd2hldGhlcgotd2UgaGF2ZSBuYXJyb3cgb3Igd2lkZSBjaGFyYWN0ZXIgc3RyaW5nczoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IF9uYXJyb3dfdHlwZXt9Owotc3RydWN0IF93aWRlX3R5cGV7fTsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4gc3RydWN0IGlzX2J5dGU7Ci10ZW1wbGF0ZTw+ICAgICAgICAgICAgIHN0cnVjdCBpc19ieXRlPGNoYXI+ICAgICAgICAgeyB0eXBlZGVmIF9uYXJyb3dfdHlwZSB3aWR0aF90eXBlOyB9OwotdGVtcGxhdGU8PiAgICAgICAgICAgICBzdHJ1Y3QgaXNfYnl0ZTx1bnNpZ25lZCBjaGFyPnsgdHlwZWRlZiBfbmFycm93X3R5cGUgd2lkdGhfdHlwZTsgfTsKLXRlbXBsYXRlPD4gICAgICAgICAgICAgc3RydWN0IGlzX2J5dGU8c2lnbmVkIGNoYXI+ICB7IHR5cGVkZWYgX25hcnJvd190eXBlIHdpZHRoX3R5cGU7IH07Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+IHN0cnVjdCBpc19ieXRlICAgICAgICAgICAgICAgeyB0eXBlZGVmIF93aWRlX3R5cGUgd2lkdGhfdHlwZTsgfTsKLQotLyoqKiBlbnVtIHN5bnRheF9lbGVtZW50X3R5cGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1FdmVyeSByZWNvcmQgaW4gdGhlIHN0YXRlIG1hY2hpbmUgZmFsbHMgaW50byBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlczoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotZW51bSBzeW50YXhfZWxlbWVudF90eXBlCi17Ci0gICAvLyBzdGFydCBvZiBhIG1hcmtlZCBzdWItZXhwcmVzc2lvbiwgb3IgcGVybC1zdHlsZSAoPy4uLikgZXh0ZW5zaW9uCi0gICBzeW50YXhfZWxlbWVudF9zdGFydG1hcmsgPSAwLAotICAgLy8gZW5kIG9mIGEgbWFya2VkIHN1Yi1leHByZXNzaW9uLCBvciBwZXJsLXN0eWxlICg/Li4uKSBleHRlbnNpb24KLSAgIHN5bnRheF9lbGVtZW50X2VuZG1hcmsgPSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmsgKyAxLAotICAgLy8gYW55IHNlcXVlbmNlIG9mIGxpdGVyYWwgY2hhcmFjdGVycwotICAgc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCA9IHN5bnRheF9lbGVtZW50X2VuZG1hcmsgKyAxLAotICAgLy8gc3RhcnQgb2YgbGluZSBhc3NlcnRpb246IF4KLSAgIHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUgPSBzeW50YXhfZWxlbWVudF9saXRlcmFsICsgMSwKLSAgIC8vIGVuZCBvZiBsaW5lIGFzc2VydGlvbiAkCi0gICBzeW50YXhfZWxlbWVudF9lbmRfbGluZSA9IHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUgKyAxLAotICAgLy8gbWF0Y2ggYW55IGNoYXJhY3RlcjogLgotICAgc3ludGF4X2VsZW1lbnRfd2lsZCA9IHN5bnRheF9lbGVtZW50X2VuZF9saW5lICsgMSwKLSAgIC8vIGVuZCBvZiBleHByZXNzaW9uOiB3ZSBoYXZlIGEgbWF0Y2ggd2hlbiB3ZSBnZXQgaGVyZQotICAgc3ludGF4X2VsZW1lbnRfbWF0Y2ggPSBzeW50YXhfZWxlbWVudF93aWxkICsgMSwKLSAgIC8vIHBlcmwgc3R5bGUgd29yZCBib3VuZGFyeTogXGIKLSAgIHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnkgPSBzeW50YXhfZWxlbWVudF9tYXRjaCArIDEsCi0gICAvLyBwZXJsIHN0eWxlIHdpdGhpbiB3b3JkIGJvdW5kYXJ5OiBcQgotICAgc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQgPSBzeW50YXhfZWxlbWVudF93b3JkX2JvdW5kYXJ5ICsgMSwKLSAgIC8vIHN0YXJ0IG9mIHdvcmQgYXNzZXJ0aW9uOiBcPAotICAgc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCA9IHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkICsgMSwKLSAgIC8vIGVuZCBvZiB3b3JkIGFzc2VydGlvbjogXD4KLSAgIHN5bnRheF9lbGVtZW50X3dvcmRfZW5kID0gc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCArIDEsCi0gICAvLyBzdGFydCBvZiBidWZmZXIgYXNzZXJ0aW9uOiBcYAotICAgc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0ID0gc3ludGF4X2VsZW1lbnRfd29yZF9lbmQgKyAxLAotICAgLy8gZW5kIG9mIGJ1ZmZlciBhc3NlcnRpb246IFwnCi0gICBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kID0gc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0ICsgMSwKLSAgIC8vIGJhY2tyZWZlcmVuY2UgdG8gcHJldmlvdXNseSBtYXRjaGVkIHN1Yi1leHByZXNzaW9uCi0gICBzeW50YXhfZWxlbWVudF9iYWNrcmVmID0gc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZCArIDEsCi0gICAvLyBlaXRoZXIgYSB3aWRlIGNoYXJhY3RlciBzZXQgWy4uXSBvciBvbmUgd2l0aCBtdWx0aWNoYXJhY3RlciBjb2xsYXRpbmcgZWxlbWVudHM6Ci0gICBzeW50YXhfZWxlbWVudF9sb25nX3NldCA9IHN5bnRheF9lbGVtZW50X2JhY2tyZWYgKyAxLAotICAgLy8gbmFycm93IGNoYXJhY3RlciBzZXQ6IFsuLi5dCi0gICBzeW50YXhfZWxlbWVudF9zZXQgPSBzeW50YXhfZWxlbWVudF9sb25nX3NldCArIDEsCi0gICAvLyBqdW1wIHRvIGEgbmV3IHN0YXRlIGluIHRoZSBtYWNoaW5lOgotICAgc3ludGF4X2VsZW1lbnRfanVtcCA9IHN5bnRheF9lbGVtZW50X3NldCArIDEsCi0gICAvLyBjaG9vc2UgYmV0d2VlbiB0d28gcHJvZHVjdGlvbiBzdGF0ZXM6Ci0gICBzeW50YXhfZWxlbWVudF9hbHQgPSBzeW50YXhfZWxlbWVudF9qdW1wICsgMSwKLSAgIC8vIGEgcmVwZWF0Ci0gICBzeW50YXhfZWxlbWVudF9yZXAgPSBzeW50YXhfZWxlbWVudF9hbHQgKyAxLAotICAgLy8gbWF0Y2ggYSBjb21iaW5pbmcgY2hhcmFjdGVyIHNlcXVlbmNlCi0gICBzeW50YXhfZWxlbWVudF9jb21iaW5pbmcgPSBzeW50YXhfZWxlbWVudF9yZXAgKyAxLAotICAgLy8gcGVybCBzdHlsZSBzb2Z0IGJ1ZmZlciBlbmQ6IFx6Ci0gICBzeW50YXhfZWxlbWVudF9zb2Z0X2J1ZmZlcl9lbmQgPSBzeW50YXhfZWxlbWVudF9jb21iaW5pbmcgKyAxLAotICAgLy8gcGVybCBzdHlsZSBjb250aW51YXRpb246IFxHCi0gICBzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlID0gc3ludGF4X2VsZW1lbnRfc29mdF9idWZmZXJfZW5kICsgMSwKLSAgIC8vIHNpbmdsZSBjaGFyYWN0ZXIgcmVwZWF0czoKLSAgIHN5bnRheF9lbGVtZW50X2RvdF9yZXAgPSBzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlICsgMSwKLSAgIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwID0gc3ludGF4X2VsZW1lbnRfZG90X3JlcCArIDEsCi0gICBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwID0gc3ludGF4X2VsZW1lbnRfY2hhcl9yZXAgKyAxLAotICAgc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwID0gc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcCArIDEsCi0gICAvLyBhIGJhY2tzdGVwIGZvciBsb29rYmVoaW5kIHJlcGVhdHM6Ci0gICBzeW50YXhfZWxlbWVudF9iYWNrc3RlcCA9IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcCArIDEsCi0gICAvLyBhbiBhc3NlcnRpb24gdGhhdCBhIG1hcmsgd2FzIG1hdGNoZWQ6Ci0gICBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiA9IHN5bnRheF9lbGVtZW50X2JhY2tzdGVwICsgMSwKLSAgIHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlID0gc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYgKyAxLAotICAgLy8gYSByZWN1cnNpdmUgZXhwcmVzc2lvbjoKLSAgIHN5bnRheF9lbGVtZW50X3JlY3Vyc2UgPSBzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSArIDEKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9ERUJVRwotLy8gZHdhIDA5LzI2LzAwIC0gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgYW4gYW1iaWd1b3VzIGNvbnZlcnNpb24KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBzeW50YXhfZWxlbWVudF90eXBlKTsKLSNlbmRpZgotCi1zdHJ1Y3QgcmVfc3ludGF4X2Jhc2U7Ci0KLS8qKiogdW5pb24gb2Zmc2V0X3R5cGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1Qb2ludHMgdG8gYW5vdGhlciBzdGF0ZSBpbiB0aGUgbWFjaGluZS4gIER1cmluZyBtYWNoaW5lIGNvbnN0cnVjdGlvbgotd2UgdXNlIGludGVncmFsIG9mZnNldHMsIGJ1dCB0aGVzZSBhcmUgY29udmVydGVkIHRvIHBvaW50ZXJzIGJlZm9yZQotZXhlY3V0aW9uIG9mIHRoZSBtYWNoaW5lLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi11bmlvbiBvZmZzZXRfdHlwZQotewotICAgcmVfc3ludGF4X2Jhc2UqICAgcDsKLSAgIHN0ZDo6cHRyZGlmZl90ICAgIGk7Ci19OwotCi0vKioqIHN0cnVjdCByZV9zeW50YXhfYmFzZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQmFzZSBjbGFzcyBmb3IgYWxsIHN0YXRlcyBpbiB0aGUgbWFjaGluZS4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX3N5bnRheF9iYXNlCi17Ci0gICBzeW50YXhfZWxlbWVudF90eXBlICAgdHlwZTsgICAgICAgICAvLyB3aGF0IGtpbmQgb2Ygc3RhdGUgdGhpcyBpcwotICAgb2Zmc2V0X3R5cGUgICAgICAgICAgIG5leHQ7ICAgICAgICAgLy8gbmV4dCBzdGF0ZSBpbiB0aGUgbWFjaGluZQotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfYnJhY2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUEgbWFya2VkIHBhcmVudGhlc2lzLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfYnJhY2UgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIC8vIFRoZSBpbmRleCB0byBtYXRjaCwgY2FuIGJlIHplcm8gKGRvbid0IG1hcmsgdGhlIHN1Yi1leHByZXNzaW9uKQotICAgLy8gb3IgbmVnYXRpdmUgKGZvciBwZXJsIHN0eWxlICg/Li4uKSBleHRlbnRpb25zKToKLSAgIGludCBpbmRleDsKLSAgIGJvb2wgaWNhc2U7Ci19OwotCi0vKioqIHN0cnVjdCByZV9kb3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLU1hdGNoIGFueXRoaW5nLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1lbnVtCi17Ci0gICBkb250X2NhcmUgPSAxLAotICAgZm9yY2Vfbm90X25ld2xpbmUgPSAwLAotICAgZm9yY2VfbmV3bGluZSA9IDIsCi0KLSAgIHRlc3Rfbm90X25ld2xpbmUgPSAyLAotICAgdGVzdF9uZXdsaW5lID0gMwotfTsKLXN0cnVjdCByZV9kb3QgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIHVuc2lnbmVkIGNoYXIgbWFzazsKLX07Ci0KLS8qKiogc3RydWN0IHJlX2xpdGVyYWwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1BIHN0cmluZyBvZiBsaXRlcmFscywgZm9sbG93aW5nIHRoaXMgc3RydWN0dXJlIHdpbGwgYmUgYW4gCi1hcnJheSBvZiBjaGFyYWN0ZXJzOiBjaGFyVFtsZW5ndGhdCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9saXRlcmFsIDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfY2FzZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUluZGljYXRlcyB3aGV0aGVyIHdlIGFyZSBtb3ZpbmcgdG8gYSBjYXNlIGluc2Vuc2l2ZSBibG9jayBvciBub3QKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX2Nhc2UgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIGJvb2wgaWNhc2U7Ci19OwotCi0vKioqIHN0cnVjdCByZV9zZXRfbG9uZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQSB3aWRlIGNoYXJhY3RlciBzZXQgb2YgY2hhcmFjdGVycywgZm9sbG93aW5nIHRoaXMgc3RydWN0dXJlIHdpbGwgYmUKLWFuIGFycmF5IG9mIHR5cGUgY2hhclQ6Ci1GaXJzdCBjc2luZ2xlcyBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncwotVGhlbiAyICogY3JhbmdlcyBOVUxMIHRlcm1pbmF0ZWQgc3RyaW5ncwotVGhlbiBjZXF1aXZhbGVudHMgTlVMTCB0ZXJtaW5hdGVkIHN0cmluZ3MKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdGVtcGxhdGUgPGNsYXNzIG1hc2tfdHlwZT4KLXN0cnVjdCByZV9zZXRfbG9uZyA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgY3NpbmdsZXMsIGNyYW5nZXMsIGNlcXVpdmFsZW50czsKLSAgIG1hc2tfdHlwZSAgICAgICAgICAgICAgIGNjbGFzc2VzOwotICAgbWFza190eXBlICAgICAgICAgICAgICAgY25jbGFzc2VzOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNub3Q7Ci0gICBib29sICAgICAgICAgICAgICAgICAgICBzaW5nbGV0b247Ci19OwotCi0vKioqIHN0cnVjdCByZV9zZXQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQSBzZXQgb2YgbmFycm93LWNoYXJhY3RlcnMsIG1hdGNoZXMgYW55IG9mIF9tYXAgd2hpY2ggaXMgbm9uZS16ZXJvCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9zZXQgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIHVuc2lnbmVkIGNoYXIgX21hcFsxIDw8IENIQVJfQklUXTsKLX07Ci0KLS8qKiogc3RydWN0IHJlX2p1bXAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1KdW1wIHRvIGEgbmV3IGxvY2F0aW9uIGluIHRoZSBtYWNoaW5lIChub3QgbmV4dCkuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9qdW1wIDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICBvZmZzZXRfdHlwZSAgICAgYWx0OyAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gdG8ganVtcCB0bwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfYWx0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotSnVtcCB0byBhIG5ldyBsb2NhdGlvbiBpbiB0aGUgbWFjaGluZSAocG9zc2libHkgbmV4dCkuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9hbHQgOiBwdWJsaWMgcmVfanVtcAotewotICAgdW5zaWduZWQgY2hhciAgIF9tYXBbMSA8PCBDSEFSX0JJVF07IC8vIHdoaWNoIGNoYXJhY3RlcnMgY2FuIHRha2UgdGhlIGp1bXAKLSAgIHVuc2lnbmVkIGludCAgICBjYW5fYmVfbnVsbDsgICAgICAgICAvLyB0cnVlIGlmIHdlIG1hdGNoIGEgTlVMTCBzdHJpbmcKLX07Ci0KLS8qKiogc3RydWN0IHJlX3JlcGVhdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1SZXBlYXQgYSBzZWN0aW9uIG9mIHRoZSBtYWNoaW5lCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9yZXBlYXQgOiBwdWJsaWMgcmVfYWx0Ci17Ci0gICBzdGQ6OnNpemVfdCAgIG1pbiwgbWF4OyAgLy8gbWluIGFuZCBtYXggYWxsb3dhYmxlIHJlcGVhdHMKLSAgIGludCAgICAgICAgICAgc3RhdGVfaWQ7ICAgICAgICAvLyBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyByZXBlYXQKLSAgIGJvb2wgICAgICAgICAgbGVhZGluZzsgICAvLyBUcnVlIGlmIHRoaXMgcmVwZWF0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgbWFjaGluZSAobGV0cyB1cyBvcHRpbWl6ZSBzb21lIHNlYXJjaGVzKQotICAgYm9vbCAgICAgICAgICBncmVlZHk7ICAgIC8vIFRydWUgaWYgdGhpcyBpcyBhIGdyZWVkeSByZXBlYXQKLX07Ci0KLS8qKiogc3RydWN0IHJlX3JlY3Vyc2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1SZWN1cnNlIHRvIGEgcGFydGljdWxhciBzdWJleHByZXNzaW9uLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9yZWN1cnNlIDogcHVibGljIHJlX2p1bXAKLXsKLSAgIGludCBzdGF0ZV9pZDsgICAgICAgICAgICAgLy8gaWRlbnRpZmllciBvZiBmaXJzdCBuZXN0ZWQgcmVwZWF0IHdpdGhpbiB0aGUgcmVjdXJzaW9uLgotfTsKLQotLyoqKiBlbnVtIHJlX2p1bXBfc2l6ZV90eXBlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVByb3ZpZGVzIGNvbXBpbGVkIHNpemUgb2YgcmVfanVtcCBzdHJ1Y3R1cmUgKGFsbG93aW5nIGZvciB0cmFpbGluZyBhbGlnbm1lbnQpLgotV2UgcHJvdmlkZSB0aGlzIHNvIHdlIGtub3cgaG93IG1hbnlieXRlcyB0byBpbnNlcnQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIG1hY2hpbmUKLShUaGUgdmFsdWUgb2YgcGFkZGluZ19tYXNrIGlzIGRlZmluZWQgaW4gcmVnZXhfcmF3X2J1ZmZlci5ocHApLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1lbnVtIHJlX2p1bXBfc2l6ZV90eXBlCi17Ci0gICByZV9qdW1wX3NpemUgPSAoc2l6ZW9mKHJlX2p1bXApICsgcGFkZGluZ19tYXNrKSAmIH4ocGFkZGluZ19tYXNrKSwKLSAgIHJlX3JlcGVhdGVyX3NpemUgPSAoc2l6ZW9mKHJlX3JlcGVhdCkgKyBwYWRkaW5nX21hc2spICYgfihwYWRkaW5nX21hc2spLAotICAgcmVfYWx0X3NpemUgPSAoc2l6ZW9mKHJlX2FsdCkgKyBwYWRkaW5nX21hc2spICYgfihwYWRkaW5nX21hc2spCi19OwotCi0vKioqIHByb2MgcmVfaXNfc2V0X21lbWJlciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUZvcndhcmQgZGVjbGFyYXRpb246IHdlJ2xsIG5lZWQgdGhpcyBvbmUgbGF0ZXIuLi4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotc3RydWN0IHJlZ2V4X2RhdGE7Ci0KLXRlbXBsYXRlIDxjbGFzcyBpdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0c190eXBlLCBjbGFzcyBjaGFyX2NsYXNzVD4KLWl0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgcmVfaXNfc2V0X21lbWJlcihpdGVyYXRvciBuZXh0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlX3NldF9sb25nPGNoYXJfY2xhc3NUPiogc2V0XywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0c190eXBlPiYgZSwgYm9vbCBpY2FzZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ViX21hdGNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ViX21hdGNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIxY2M4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N1Yl9tYXRjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MTIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHN1Yl9tYXRjaC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIHN1Yl9tYXRjaC4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9TVUJfTUFUQ0hfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1NVQl9NQVRDSF9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc3ViX21hdGNoIDogcHVibGljIHN0ZDo6cGFpcjxCaWRpSXRlcmF0b3IsIEJpZGlJdGVyYXRvcj4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSAgICAgICB2YWx1ZV90eXBlOwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgfHwgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSNlbHNlCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAgZGlmZmVyZW5jZV90eXBlOwotI2VuZGlmCi0gICB0eXBlZGVmICAgICAgICAgIEJpZGlJdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgQmlkaUl0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgIHR5cGVkZWYgICAgICAgICAgQmlkaUl0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLQotICAgYm9vbCBtYXRjaGVkOwotCi0gICBzdWJfbWF0Y2goKSA6IHN0ZDo6cGFpcjxCaWRpSXRlcmF0b3IsIEJpZGlJdGVyYXRvcj4oKSwgbWF0Y2hlZChmYWxzZSkge30KLSAgIHN1Yl9tYXRjaChCaWRpSXRlcmF0b3IgaSkgOiBzdGQ6OnBhaXI8QmlkaUl0ZXJhdG9yLCBCaWRpSXRlcmF0b3I+KGksIGkpLCBtYXRjaGVkKGZhbHNlKSB7fQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSkKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgb3BlcmF0b3Igc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZSwgVCwgQT4gKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1hdGNoZWQgPyBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlLCBULCBBPih0aGlzLT5maXJzdCwgdGhpcy0+c2Vjb25kKSA6IHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGUsIFQsIEE+KCk7Ci0gICB9Ci0jZWxzZQotICAgb3BlcmF0b3Igc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4gKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0cigpOwotICAgfQotI2VuZGlmCi0gICBkaWZmZXJlbmNlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsZW5ndGgoKWNvbnN0Ci0gICB7Ci0gICAgICBkaWZmZXJlbmNlX3R5cGUgbiA9IG1hdGNoZWQgPyA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKChCaWRpSXRlcmF0b3IpdGhpcy0+Zmlyc3QsIChCaWRpSXRlcmF0b3IpdGhpcy0+c2Vjb25kKSA6IDA7Ci0gICAgICByZXR1cm4gbjsKLSAgIH0KLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGU+IHN0cigpY29uc3QKLSAgIHsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgICAgIGlmKG1hdGNoZWQpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnNpemVfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKChCaWRpSXRlcmF0b3IpdGhpcy0+Zmlyc3QsIChCaWRpSXRlcmF0b3IpdGhpcy0+c2Vjb25kKTsKLSAgICAgICAgIHJlc3VsdC5yZXNlcnZlKGxlbik7Ci0gICAgICAgICBCaWRpSXRlcmF0b3IgaSA9IHRoaXMtPmZpcnN0OwotICAgICAgICAgd2hpbGUoaSAhPSB0aGlzLT5zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEsICppKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBpbnQgY29tcGFyZShjb25zdCBzdWJfbWF0Y2gmIHMpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1hdGNoZWQgIT0gcy5tYXRjaGVkKQotICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obWF0Y2hlZCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHMubWF0Y2hlZCk7Ci0gICAgICByZXR1cm4gc3RyKCkuY29tcGFyZShzLnN0cigpKTsKLSAgIH0KLSAgIGludCBjb21wYXJlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGU+JiBzKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RyKCkuY29tcGFyZShzKTsKLSAgIH0KLSAgIGludCBjb21wYXJlKGNvbnN0IHZhbHVlX3R5cGUqIHApY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBzdHIoKS5jb21wYXJlKHApOwotICAgfQotCi0gICBib29sIG9wZXJhdG9yPT0oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpID09IDA7IH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvciAhPShjb25zdCBzdWJfbWF0Y2gmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuIGNvbXBhcmUodGhhdCkgIT0gMDsgfQotICAgYm9vbCBvcGVyYXRvcjwoY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpIDwgMDsgfQotICAgYm9vbCBvcGVyYXRvcj4oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpID4gMDsgfQotICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCljb25zdAotICAgeyByZXR1cm4gY29tcGFyZSh0aGF0KSA8PSAwOyB9Ci0gICBib29sIG9wZXJhdG9yPj0oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpID49IDA7IH0KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+ID4gY2FwdHVyZV9zZXF1ZW5jZV90eXBlOwotCi0gICBjb25zdCBjYXB0dXJlX3NlcXVlbmNlX3R5cGUmIGNhcHR1cmVzKCljb25zdAotICAgewotICAgICAgaWYoIW1fY2FwdHVyZXMpIAotICAgICAgICAgbV9jYXB0dXJlcy5yZXNldChuZXcgY2FwdHVyZV9zZXF1ZW5jZV90eXBlKCkpOwotICAgICAgcmV0dXJuICptX2NhcHR1cmVzOwotICAgfQotICAgLy8KLSAgIC8vIFByaXZhdGUgaW1wbGVtZW50YXRpb24gQVBJOiBETyBOT1QgVVNFIQotICAgLy8KLSAgIGNhcHR1cmVfc2VxdWVuY2VfdHlwZSYgZ2V0X2NhcHR1cmVzKCljb25zdAotICAgewotICAgICAgaWYoIW1fY2FwdHVyZXMpIAotICAgICAgICAgbV9jYXB0dXJlcy5yZXNldChuZXcgY2FwdHVyZV9zZXF1ZW5jZV90eXBlKCkpOwotICAgICAgcmV0dXJuICptX2NhcHR1cmVzOwotICAgfQotCi1wcml2YXRlOgotICAgbXV0YWJsZSBuZG5ib29zdDo6c2NvcGVkX3B0cjxjYXB0dXJlX3NlcXVlbmNlX3R5cGU+IG1fY2FwdHVyZXM7Ci1wdWJsaWM6Ci0KLSNlbmRpZgotICAgc3ViX21hdGNoKGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCwgYm9vbCAKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgZGVlcF9jb3B5Ci0jZW5kaWYKLSAgICAgID0gdHJ1ZQotICAgICAgKSAKLSAgICAgIDogc3RkOjpwYWlyPEJpZGlJdGVyYXRvciwgQmlkaUl0ZXJhdG9yPih0aGF0KSwgCi0gICAgICAgIG1hdGNoZWQodGhhdC5tYXRjaGVkKSAKLSAgIHsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgaWYodGhhdC5tX2NhcHR1cmVzKQotICAgICAgICAgaWYoZGVlcF9jb3B5KQotICAgICAgICAgICAgbV9jYXB0dXJlcy5yZXNldChuZXcgY2FwdHVyZV9zZXF1ZW5jZV90eXBlKCoodGhhdC5tX2NhcHR1cmVzKSkpOwotI2VuZGlmCi0gICB9Ci0gICBzdWJfbWF0Y2gmIG9wZXJhdG9yPShjb25zdCBzdWJfbWF0Y2gmIHRoYXQpCi0gICB7Ci0gICAgICB0aGlzLT5maXJzdCA9IHRoYXQuZmlyc3Q7Ci0gICAgICB0aGlzLT5zZWNvbmQgPSB0aGF0LnNlY29uZDsKLSAgICAgIG1hdGNoZWQgPSB0aGF0Lm1hdGNoZWQ7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgICAgIGlmKHRoYXQubV9jYXB0dXJlcykKLSAgICAgICAgIGdldF9jYXB0dXJlcygpID0gKih0aGF0Lm1fY2FwdHVyZXMpOwotI2VuZGlmCi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0KLQotI2lmZGVmIE5ETkJPT1NUX09MRF9SRUdFWF9ICi0gICAvLwotICAgLy8gdGhlIGZvbGxvd2luZyBhcmUgZGVwcmVjYXRlZCwgZG8gbm90IHVzZSEhCi0gICAvLwotICAgb3BlcmF0b3IgaW50KCljb25zdDsKLSAgIG9wZXJhdG9yIHVuc2lnbmVkIGludCgpY29uc3Q7Ci0gICBvcGVyYXRvciBzaG9ydCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoc2hvcnQpKGludCkoKnRoaXMpOwotICAgfQotICAgb3BlcmF0b3IgdW5zaWduZWQgc2hvcnQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKHVuc2lnbmVkIHNob3J0KSh1bnNpZ25lZCBpbnQpKCp0aGlzKTsKLSAgIH0KLSNlbmRpZgotfTsKLQotdHlwZWRlZiBzdWJfbWF0Y2g8Y29uc3QgY2hhcio+IGNzdWJfbWF0Y2g7Ci10eXBlZGVmIHN1Yl9tYXRjaDxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHNzdWJfbWF0Y2g7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiBzdWJfbWF0Y2g8Y29uc3Qgd2NoYXJfdCo+IHdjc3ViX21hdGNoOwotdHlwZWRlZiBzdWJfbWF0Y2g8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gd3NzdWJfbWF0Y2g7Ci0jZW5kaWYKLQotLy8gY29tcGFyaXNvbiB0byBzdGQ6OmJhc2ljX3N0cmluZzw+IHBhcnQgMToKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpIDw9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpID49IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSA+IDA7IH0KLS8vIGNvbXBhcmlzb24gdG8gc3RkOjpiYXNpY19zdHJpbmc8PiBwYXJ0IDI6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDw9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID49IDA7IH0KLS8vIGNvbXBhcmlzb24gdG8gY29uc3QgY2hhclQqIHBhcnQgMToKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPiAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPj0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPD0gMDsgfQotLy8gY29tcGFyaXNvbiB0byBjb25zdCBjaGFyVCogcGFydCAyOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPCAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA8PSAwOyB9Ci0KLS8vIGNvbXBhcmlzb24gdG8gY29uc3QgY2hhclQmIHBhcnQgMToKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPiAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA+PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPD0gMDsgfQotLy8gY29tcGFyaXNvbiB0byBjb25zdCBjaGFyVCogcGFydCAyOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID49IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA8PSAwOyB9Ci0KLS8vIGFkZGl0aW9uIG9wZXJhdG9yczoKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4gCi1vcGVyYXRvciArIChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShzLnNpemUoKSArIG0ubGVuZ3RoKCkgKyAxKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKHMpLmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+IAotb3BlcmF0b3IgKyAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUocy5zaXplKCkgKyBtLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCkuYXBwZW5kKHMpOwotfQotI2lmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSkKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUoc3RkOjpjaGFyX3RyYWl0czx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+OjpsZW5ndGgocykgKyBtLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChzKS5hcHBlbmQobS5maXJzdCwgbS5zZWNvbmQpOwotfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArIChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0ICogcykKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUoc3RkOjpjaGFyX3RyYWl0czx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+OjpsZW5ndGgocykgKyBtLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCkuYXBwZW5kKHMpOwotfQotI2Vsc2UKLS8vIHdvcndhcm91bmQgdmVyc2lvbnM6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17Ci0gICByZXR1cm4gcyArIG0uc3RyKCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QgKiBzKQotewotICAgcmV0dXJuIG0uc3RyKCkgKyBzOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKG0ubGVuZ3RoKCkgKyAyKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKDEsIHMpLmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKG0ubGVuZ3RoKCkgKyAyKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKG0uZmlyc3QsIG0uc2Vjb25kKS5hcHBlbmQoMSwgcyk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0xLAotICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbTIpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKG0xLmxlbmd0aCgpICsgbTIubGVuZ3RoKCkgKyAxKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKG0xLmZpcnN0LCBtMS5zZWNvbmQpLmFwcGVuZChtMi5maXJzdCwgbTIuc2Vjb25kKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JgotICAgb3BlcmF0b3IgPDwgKHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPiYgb3MsCi0gICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgcykKLXsKLSAgIHJldHVybiAob3MgPDwgcy5zdHIoKSk7Ci19Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoc3RkOjpvc3RyZWFtJiBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIHMpCi17Ci0gICByZXR1cm4gKG9zIDw8IHMuc3RyKCkpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9PTERfUkVHRVhfSAotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIGNoYXJUPgotaW50IGRvX3RvaShCaWRpSXRlcmF0b3IgaSwgQmlkaUl0ZXJhdG9yIGosIGNoYXIgYywgaW50IHJhZGl4KQotewotICAgc3RkOjpzdHJpbmcgcyhpLCBqKTsKLSAgIGNoYXIqIHA7Ci0gICBpbnQgcmVzdWx0ID0gc3RkOjpzdHJ0b2wocy5jX3N0cigpLCAmcCwgcmFkaXgpOwotICAgaWYoKnApcmFpc2VfcmVnZXhfZXhjZXB0aW9uKCJCYWQgc3ViLWV4cHJlc3Npb24iKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBoZWxwZXI6Ci10ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgY2hhclQ+Ci1pbnQgZG9fdG9pKEkmIGksIEkgaiwgY2hhclQgYykKLXsKLSAgIGludCByZXN1bHQgPSAwOwotICAgd2hpbGUoKGkgIT0gaikgJiYgKGlzZGlnaXQoKmkpKSkKLSAgIHsKLSAgICAgIHJlc3VsdCA9IHJlc3VsdCoxMCArICgqaSAtICcwJyk7Ci0gICAgICArK2k7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPjo6b3BlcmF0b3IgaW50KCljb25zdAotewotICAgQmlkaUl0ZXJhdG9yIGkgPSBmaXJzdDsKLSAgIEJpZGlJdGVyYXRvciBqID0gc2Vjb25kOwotICAgaWYoaSA9PSBqKXJhaXNlX3JlZ2V4X2V4Y2VwdGlvbigiQmFkIHN1Yi1leHByZXNzaW9uIik7Ci0gICBpbnQgbmVnID0gMTsKLSAgIGlmKChpICE9IGopICYmICgqaSA9PSAnLScpKQotICAgewotICAgICAgbmVnID0gLTE7Ci0gICAgICArK2k7Ci0gICB9Ci0gICBuZWcgKj0gcmVfZGV0YWlsOjpkb190b2koaSwgaiwgKmkpOwotICAgaWYoaSAhPSBqKXJhaXNlX3JlZ2V4X2V4Y2VwdGlvbigiQmFkIHN1Yi1leHByZXNzaW9uIik7Ci0gICByZXR1cm4gbmVnOwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpvcGVyYXRvciB1bnNpZ25lZCBpbnQoKWNvbnN0Ci17Ci0gICBCaWRpSXRlcmF0b3IgaSA9IGZpcnN0OwotICAgQmlkaUl0ZXJhdG9yIGogPSBzZWNvbmQ7Ci0gICBpZihpID09IGopCi0gICAgICByYWlzZV9yZWdleF9leGNlcHRpb24oIkJhZCBzdWItZXhwcmVzc2lvbiIpOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fdG9pKGksIGosICpmaXJzdCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zeW50YXhfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThjNTE3MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBzeW50YXhfdHlwZS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBzeW5hdHggdHlwZSBlbnVtZXJhdG9yLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NZTlRBWF9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9TWU5UQVhfVFlQRV9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50c3sKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHN5bnRheF90eXBlOwotCi0vLwotLy8gdmFsdWVzIGNob3NlbiBhcmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyB2ZXJzaW9uOgotLy8KLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY2hhciA9IDA7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X29wZW5fbWFyayA9IDE7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2Nsb3NlX21hcmsgPSAyOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9kb2xsYXIgPSAzOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jYXJldCA9IDQ7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2RvdCA9IDU7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X3N0YXIgPSA2Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9wbHVzID0gNzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfcXVlc3Rpb24gPSA4Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9vcGVuX3NldCA9IDk7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2Nsb3NlX3NldCA9IDEwOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9vciA9IDExOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9lc2NhcGUgPSAxMjsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfZGFzaCA9IDE0Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9vcGVuX2JyYWNlID0gMTU7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2Nsb3NlX2JyYWNlID0gMTY7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2RpZ2l0ID0gMTc7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2NvbW1hID0gMjc7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2VxdWFsID0gMzc7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2NvbG9uID0gMzY7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X25vdCA9IDUzOwotCi0vLyBleHRlbnNpb25zOgotCi1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2hhc2ggPSAxMzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfbmV3bGluZSA9IDI2OwotCi0vLyBlc2NhcGVzOgotCi10eXBlZGVmIHN5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZTsKLQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV93b3JkX2Fzc2VydCA9IDE4Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9ub3Rfd29yZF9hc3NlcnQgPSAxOTsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF9mID0gMjk7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfbiA9IDMwOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jb250cm9sX3IgPSAzMTsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF90ID0gMzI7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfdiA9IDMzOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9hc2NpaV9jb250cm9sID0gMzU7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2hleCA9IDM0Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV91bmljb2RlID0gMDsgLy8gbm90IHVzZWQKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfaWRlbnRpdHkgPSAwOyAvLyBub3QgdXNlZAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9iYWNrcmVmID0gc3ludGF4X2RpZ2l0Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9kZWNpbWFsID0gc3ludGF4X2RpZ2l0OyAvLyBub3QgdXNlZAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jbGFzcyA9IDIyOyAKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfbm90X2NsYXNzID0gMjM7IAotCi0vLyBleHRlbnNpb25zOgotCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2xlZnRfd29yZCA9IDIwOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9yaWdodF93b3JkID0gMjE7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3N0YXJ0X2J1ZmZlciA9IDI0OyAgICAgICAgICAgICAgICAgLy8gZm9yIFxgCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2VuZF9idWZmZXIgPSAyNTsgICAgICAgICAgICAgICAgICAgLy8gZm9yIFwnCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfYSA9IDI4OyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxhCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2UgPSAzODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxlCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX0UgPSA0NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxRXEUKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfUSA9IDQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXFFcRQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9YID0gNDk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcWAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9DID0gNTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcQwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9aID0gNTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcWgotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9HID0gNTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcRwotCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3Byb3BlcnR5ID0gNTQ7ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxwCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX25vdF9wcm9wZXJ0eSA9IDU1OyAgICAgICAgICAgICAgICAgLy8gZm9yIFxQCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX25hbWVkX2NoYXIgPSA1NjsgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxOCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2V4dGVuZGVkX2JhY2tyZWYgPSA1NzsgICAgICAgICAgICAgLy8gZm9yIFxnCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3Jlc2V0X3N0YXJ0X21hcmsgPSA1ODsgICAgICAgICAgICAgLy8gZm9yIFxLCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2xpbmVfZW5kaW5nID0gNTk7ICAgICAgICAgICAgICAgICAgLy8gZm9yIFxSCi0KLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgc3ludGF4X21heCA9IDYwOwotCi19Ci19Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzE0OWY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgdTMycmVnZXhfaXRlcmF0b3IuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyB1MzJyZWdleF9pdGVyYXRvciBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9VMzJSRUdFWF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfVTMyUkVHRVhfSVRFUkFUT1JfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4KLWNsYXNzIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uIAotewotICAgdHlwZWRlZiB1MzJyZWdleCByZWdleF90eXBlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gd2hhdDsgIC8vIGN1cnJlbnQgbWF0Y2gKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBiYXNlOyAgLy8gc3RhcnQgb2Ygc2VxdWVuY2UKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBlbmQ7ICAgLy8gZW5kIG9mIHNlcXVlbmNlCi0gICBjb25zdCByZWdleF90eXBlICAgICAgICAgICAgICAgICAgICAgcmU7ICAgLy8gdGhlIGV4cHJlc3Npb24KLSAgIG1hdGNoX2ZsYWdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBmbGFnczsgLy8gZmxhZ3MgZm9yIG1hdGNoaW5nCi0KLXB1YmxpYzoKLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogYmFzZSgpLCBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZil7fQotICAgYm9vbCBpbml0KEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCkKLSAgIHsKLSAgICAgIGJhc2UgPSBmaXJzdDsKLSAgICAgIHJldHVybiB1MzJyZWdleF9zZWFyY2goZmlyc3QsIGVuZCwgd2hhdCwgcmUsIGZsYWdzLCBiYXNlKTsKLSAgIH0KLSAgIGJvb2wgY29tcGFyZShjb25zdCB1MzJyZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgdGhhdCkKLSAgIHsKLSAgICAgIGlmKHRoaXMgPT0gJnRoYXQpIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuICgmcmUuZ2V0X2RhdGEoKSA9PSAmdGhhdC5yZS5nZXRfZGF0YSgpKSAmJiAoZW5kID09IHRoYXQuZW5kKSAmJiAoZmxhZ3MgPT0gdGhhdC5mbGFncykgJiYgKHdoYXRbMF0uZmlyc3QgPT0gdGhhdC53aGF0WzBdLmZpcnN0KSAmJiAod2hhdFswXS5zZWNvbmQgPT0gdGhhdC53aGF0WzBdLnNlY29uZCk7Ci0gICB9Ci0gICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mIGdldCgpCi0gICB7IHJldHVybiB3aGF0OyB9Ci0gICBib29sIG5leHQoKQotICAgewotICAgICAgLy9pZih3aGF0LnByZWZpeCgpLmZpcnN0ICE9IHdoYXRbMF0uc2Vjb25kKQotICAgICAgLy8gICBmbGFncyB8PSBtYXRjaF9wcmV2X2F2YWlsOwotICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIG5leHRfc3RhcnQgPSB3aGF0WzBdLnNlY29uZDsKLSAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmKGZsYWdzKTsKLSAgICAgIGlmKCF3aGF0Lmxlbmd0aCgpKQotICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGw7Ci0gICAgICAvL2lmKGJhc2UgIT0gbmV4dF9zdGFydCkKLSAgICAgIC8vICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2I7Ci0gICAgICBib29sIHJlc3VsdCA9IHUzMnJlZ2V4X3NlYXJjaChuZXh0X3N0YXJ0LCBlbmQsIHdoYXQsIHJlLCBmLCBiYXNlKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgIHdoYXQuc2V0X2Jhc2UoYmFzZSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgdTMycmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24mKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci1jbGFzcyB1MzJyZWdleF9pdGVyYXRvciAKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPAotICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgCi0gICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4sCi0gICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4qLAotICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+JiA+ICAgICAgICAgCi0jZW5kaWYKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gaW1wbDsKLSAgIHR5cGVkZWYgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbDsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgICAgICAgICAgdTMycmVnZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7IAotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgCi0gICB1MzJyZWdleF9pdGVyYXRvcigpe30KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgCi0gICAgICAgICAgICAgICAgICBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgfQotICAgdTMycmVnZXhfaXRlcmF0b3IoY29uc3QgdTMycmVnZXhfaXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IHBkYXRhKHRoYXQucGRhdGEpIHt9Ci0gICB1MzJyZWdleF9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgcGRhdGEgPSB0aGF0LnBkYXRhOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IAotICAgICAgaWYoKHBkYXRhLmdldCgpID09IDApIHx8ICh0aGF0LnBkYXRhLmdldCgpID09IDApKQotICAgICAgICAgcmV0dXJuIHBkYXRhLmdldCgpID09IHRoYXQucGRhdGEuZ2V0KCk7Ci0gICAgICByZXR1cm4gcGRhdGEtPmNvbXBhcmUoKih0aGF0LnBkYXRhLmdldCgpKSk7IAotICAgfQotICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiAhKCp0aGlzID09IHRoYXQpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7IHJldHVybiBwZGF0YS0+Z2V0KCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKWNvbnN0Ci0gICB7IHJldHVybiAmKHBkYXRhLT5nZXQoKSk7IH0KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIGNvdygpOwotICAgICAgaWYoMCA9PSBwZGF0YS0+bmV4dCgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgdTMycmVnZXhfaXRlcmF0b3IgcmVzdWx0KCp0aGlzKTsKLSAgICAgICsrKCp0aGlzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotCi0gICBwaW1wbCBwZGF0YTsKLQotICAgdm9pZCBjb3coKQotICAgewotICAgICAgLy8gY29weS1vbi13cml0ZQotICAgICAgaWYocGRhdGEuZ2V0KCkgJiYgIXBkYXRhLnVuaXF1ZSgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQobmV3IGltcGwoKihwZGF0YS5nZXQoKSkpKTsKLSAgICAgIH0KLSAgIH0KLX07Ci0KLXR5cGVkZWYgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhcio+IHV0ZjhyZWdleF9pdGVyYXRvcjsKLXR5cGVkZWYgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgVUNoYXIqPiB1dGYxNnJlZ2V4X2l0ZXJhdG9yOwotdHlwZWRlZiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcjMyKj4gdXRmMzJyZWdleF9pdGVyYXRvcjsKLQotaW5saW5lIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBtYWtlX3UzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IGNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXIqPihwLCBwK3N0ZDo6c3RybGVuKHApLCBlLCBtKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3Qgd2NoYXJfdCogcCwgY29uc3QgdTMycmVnZXgmIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfaXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+KHAsIHArc3RkOjp3Y3NsZW4ocCksIGUsIG0pOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3QgVUNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocCwgcCt1X3N0cmxlbihwKSwgZSwgbSk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yPiBtYWtlX3UzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPiYgcCwgY29uc3QgdTMycmVnZXgmIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IgaXRlcl90eXBlOwotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGl0ZXJfdHlwZT4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBtKTsKLX0KLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIGUsIG0pOwotfQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfSVRFUkFUT1JfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZDQwY2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICB1MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1UzMlJFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9VMzJSRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLQotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkKLS8vCi0vLyBCb3JsYW5kIEMrKyBCdWlsZGVyIDYsIGFuZCBWaXN1YWwgQysrIDYsCi0vLyBjYW4ndCBjb3BlIHdpdGggdGhlIGFycmF5IHRlbXBsYXRlIGNvbnN0cnVjdG9yCi0vLyBzbyB3ZSBoYXZlIGEgdGVtcGxhdGUgbWVtYmVyIHRoYXQgd2lsbCBhY2NlcHQgYW55IHR5cGUgYXMgCi0vLyBhcmd1bWVudCwgYW5kIHRoZW4gYXNzZXJ0IHRoYXQgaXMgcmVhbGx5IGlzIGFuIGFycmF5OgotLy8KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPiAxMzAwKQotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotY2xhc3MgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24gCi17Ci0gICB0eXBlZGVmIHUzMnJlZ2V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICB2YWx1ZV90eXBlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gd2hhdDsgICAvLyBjdXJyZW50IG1hdGNoCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgZW5kOyAgICAvLyBlbmQgb2Ygc2VhcmNoIGFyZWEKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBiYXNlOyAgIC8vIHN0YXJ0IG9mIHNlYXJjaCBhcmVhCi0gICBjb25zdCByZWdleF90eXBlICAgICAgICAgICAgICAgICAgICAgcmU7ICAgICAvLyB0aGUgZXhwcmVzc2lvbgotICAgbWF0Y2hfZmxhZ190eXBlICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyAgLy8gbWF0Y2ggZmxhZ3MKLSAgIHZhbHVlX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7IC8vIHRoZSBjdXJyZW50IHN0cmluZyByZXN1bHQKLSAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOOyAgICAgIC8vIHRoZSBjdXJyZW50IHN1Yi1leHByZXNzaW9uIGJlaW5nIGVudW1lcmF0ZWQKLSAgIHN0ZDo6dmVjdG9yPGludD4gICAgICAgICAgICAgICAgICAgICBzdWJzOyAgIC8vIHRoZSBzdWItZXhwcmVzc2lvbnMgdG8gZW51bWVyYXRlCi0KLXB1YmxpYzoKLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBpbnQgc3ViLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpeyBzdWJzLnB1c2hfYmFjayhzdWIpOyB9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdiwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKSwgc3Vicyh2KXt9Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAvLyBjYW4ndCByZWxpYWJseSBnZXQgdGhpcyB0byB3b3JrLi4uLgotI2VsaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpKVwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKQotICAgewotICAgICAgLy8gYXNzZXJ0IHRoYXQgVCByZWFsbHkgaXMgYW4gYXJyYXk6Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSk7Ci0gICAgICBjb25zdCBzdGQ6OnNpemVfdCBhcnJheV9zaXplID0gc2l6ZW9mKFQpIC8gc2l6ZW9mKHN1Ym1hdGNoZXNbMF0pOwotICAgICAgZm9yKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgKytpKQotICAgICAgewotICAgICAgICAgc3Vicy5wdXNoX2JhY2soc3VibWF0Y2hlc1tpXSk7Ci0gICAgICB9Ci0gICB9Ci0jZWxzZQotICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENOPgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IGludCAoJnN1Ym1hdGNoZXMpW0NOXSwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKQotICAgewotICAgICAgZm9yKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgQ047ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN1YnMucHVzaF9iYWNrKHN1Ym1hdGNoZXNbaV0pOwotICAgICAgfQotICAgfQotI2VuZGlmCi0KLSAgIGJvb2wgaW5pdChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QpCi0gICB7Ci0gICAgICBiYXNlID0gZmlyc3Q7Ci0gICAgICBOID0gMDsKLSAgICAgIGlmKHUzMnJlZ2V4X3NlYXJjaChmaXJzdCwgZW5kLCB3aGF0LCByZSwgZmxhZ3MsIGJhc2UpID09IHRydWUpCi0gICAgICB7Ci0gICAgICAgICBOID0gMDsKLSAgICAgICAgIHJlc3VsdCA9ICgoc3Vic1tOXSA9PSAtMSkgPyB3aGF0LnByZWZpeCgpIDogd2hhdFsoaW50KXN1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZigoc3Vic1tOXSA9PSAtMSkgJiYgKGZpcnN0ICE9IGVuZCkpCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQuZmlyc3QgPSBmaXJzdDsKLSAgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBlbmQ7Ci0gICAgICAgICByZXN1bHQubWF0Y2hlZCA9IChmaXJzdCAhPSBlbmQpOwotICAgICAgICAgTiA9IC0xOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBib29sIGNvbXBhcmUoY29uc3QgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIHRoYXQpCi0gICB7Ci0gICAgICBpZih0aGlzID09ICZ0aGF0KSByZXR1cm4gdHJ1ZTsKLSAgICAgIHJldHVybiAoJnJlLmdldF9kYXRhKCkgPT0gJnRoYXQucmUuZ2V0X2RhdGEoKSkgCi0gICAgICAgICAmJiAoZW5kID09IHRoYXQuZW5kKSAKLSAgICAgICAgICYmIChmbGFncyA9PSB0aGF0LmZsYWdzKSAKLSAgICAgICAgICYmIChOID09IHRoYXQuTikgCi0gICAgICAgICAmJiAod2hhdFswXS5maXJzdCA9PSB0aGF0LndoYXRbMF0uZmlyc3QpIAotICAgICAgICAgJiYgKHdoYXRbMF0uc2Vjb25kID09IHRoYXQud2hhdFswXS5zZWNvbmQpOwotICAgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgZ2V0KCkKLSAgIHsgcmV0dXJuIHJlc3VsdDsgfQotICAgYm9vbCBuZXh0KCkKLSAgIHsKLSAgICAgIGlmKE4gPT0gLTEpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZihOKzEgPCAoaW50KXN1YnMuc2l6ZSgpKQotICAgICAgewotICAgICAgICAgKytOOwotICAgICAgICAgcmVzdWx0ID0oKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICAvL2lmKHdoYXQucHJlZml4KCkuZmlyc3QgIT0gd2hhdFswXS5zZWNvbmQpCi0gICAgICAvLyAgIGZsYWdzIHw9IG1hdGNoX3ByZXZfYXZhaWwgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2I7Ci0gICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdF9lbmQod2hhdFswXS5zZWNvbmQpOwotICAgICAgaWYodTMycmVnZXhfc2VhcmNoKGxhc3RfZW5kLCBlbmQsIHdoYXQsIHJlLCAoKHdoYXRbMF0uZmlyc3QgPT0gd2hhdFswXS5zZWNvbmQpID8gZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGwgOiBmbGFncyksIGJhc2UpKQotICAgICAgewotICAgICAgICAgTiA9MDsKLSAgICAgICAgIHJlc3VsdCA9KChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0W3N1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZigobGFzdF9lbmQgIT0gZW5kKSAmJiAoc3Vic1swXSA9PSAtMSkpCi0gICAgICB7Ci0gICAgICAgICBOID0tMTsKLSAgICAgICAgIHJlc3VsdC5maXJzdCA9IGxhc3RfZW5kOwotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IGVuZDsKLSAgICAgICAgIHJlc3VsdC5tYXRjaGVkID0gKGxhc3RfZW5kICE9IGVuZCk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLXByaXZhdGU6Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotY2xhc3MgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IgCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjwKLSAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIAotICAgICAgICAgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4sCi0gICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiosCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgPiAgICAgICAgIAotI2VuZGlmCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbjxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IGltcGw7Ci0gICB0eXBlZGVmIHNoYXJlZF9wdHI8aW1wbD4gcGltcGw7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmICAgICAgICAgIHUzMnJlZ2V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOyAKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgIAotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoKXt9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdWJtYXRjaCA9IDAsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaCwgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgLy8gY2FuJ3QgcmVsaWFibHkgZ2V0IHRoaXMgdG8gd29yay4uLi4KLSNlbGlmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jZWxzZQotICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICgmc3VibWF0Y2hlcylbTl0sIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jZW5kaWYKLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBwZGF0YSh0aGF0LnBkYXRhKSB7fQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIHBkYXRhID0gdGhhdC5wZGF0YTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyAKLSAgICAgIGlmKChwZGF0YS5nZXQoKSA9PSAwKSB8fCAodGhhdC5wZGF0YS5nZXQoKSA9PSAwKSkKLSAgICAgICAgIHJldHVybiBwZGF0YS5nZXQoKSA9PSB0aGF0LnBkYXRhLmdldCgpOwotICAgICAgcmV0dXJuIHBkYXRhLT5jb21wYXJlKCoodGhhdC5wZGF0YS5nZXQoKSkpOyAKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCljb25zdAotICAgeyByZXR1cm4gcGRhdGEtPmdldCgpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCljb25zdAotICAgeyByZXR1cm4gJihwZGF0YS0+Z2V0KCkpOyB9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICBjb3coKTsKLSAgICAgIGlmKDAgPT0gcGRhdGEtPm5leHQoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvciBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yIHJlc3VsdCgqdGhpcyk7Ci0gICAgICArKygqdGhpcyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLQotICAgcGltcGwgcGRhdGE7Ci0KLSAgIHZvaWQgY293KCkKLSAgIHsKLSAgICAgIC8vIGNvcHktb24td3JpdGUKLSAgICAgIGlmKHBkYXRhLmdldCgpICYmICFwZGF0YS51bmlxdWUoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KG5ldyBpbXBsKCoocGRhdGEuZ2V0KCkpKSk7Ci0gICAgICB9Ci0gICB9Ci19OwotCi10eXBlZGVmIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiB1dGY4cmVnZXhfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gdXRmMTZyZWdleF90b2tlbl9pdGVyYXRvcjsKLXR5cGVkZWYgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIzMio+IHV0ZjMycmVnZXhfdG9rZW5faXRlcmF0b3I7Ci0KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIGFuIGludGVncmFsIHN1Yl9tYXRjaCBzdGF0ZV9pZDoKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4ocCwgcCtzdGQ6OnN0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCB3Y2hhcl90KiBwLCBjb25zdCB1MzJyZWdleCYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4ocCwgcCtzdGQ6Ondjc2xlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVUNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocCwgcCt1X3N0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvcj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz4mIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxpdGVyX3R5cGU+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgY29uc3QgdTMycmVnZXgmIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPihzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotLy8gY29uc3RydWN0aW9uIGZyb20gYSByZWZlcmVuY2UgdG8gYW4gYXJyYXk6Ci10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPihwLCBwK3N0ZDo6c3RybGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgd2NoYXJfdCogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4ocCwgcCtzdGQ6Ondjc2xlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVQ2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHAsIHArdV9zdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jLCBzdGQ6OnNpemVfdCBOPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3I+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+JiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxpdGVyX3R5cGU+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDIDwgMTMwMAotCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBhIHZlY3RvciBvZiBzdWJfbWF0Y2ggc3RhdGVfaWQnczoKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+KHAsIHArc3RkOjpzdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgd2NoYXJfdCogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPihwLCBwK3N0ZDo6d2NzbGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKQotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVQ2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocCwgcCt1X3N0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvcj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz4mIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8aXRlcl90eXBlPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID4gMTMwMCkKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3czMl9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC93MzJfcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjE4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3czMl9yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHczMl9yZWdleF90cmFpdHMuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gdHJhaXRzIGNsYXNzIHczMl9yZWdleF90cmFpdHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfVzMyX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVzMyX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRV9QQVRfRVhDRVBUX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcD4KLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcHJpbWFyeV90cmFuc2Zvcm0uaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX09CSkVDVF9DQUNIRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Nzg2KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IAotCi0vLwotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgYnkgc29tZSBjb21waWxlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgdzMyX3JlZ2V4X3RyYWl0czsKLSAgIAotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8KLS8vIHN0YXJ0IGJ5IHR5cGVkZWZmaW5nIHRoZSB0eXBlcyB3ZSdsbCBuZWVkOgotLy8KLXR5cGVkZWYgOjpuZG5ib29zdDo6dWludDMyX3QgbGNpZF90eXBlOyAgIC8vIHBsYWNlaG9sZGVyIGZvciBMQ0lELgotdHlwZWRlZiA6Om5kbmJvb3N0OjpzaGFyZWRfcHRyPHZvaWQ+IGNhdF90eXBlOyAvLyBwbGFjZWhvbGRlciBmb3IgZGxsIEhBTkRMRS4KLQotLy8KLS8vIHRoZW4gYWRkIHdyYXBwZXJzIGFyb3VuZCB0aGUgYWN0dWFsIFdpbjMyIEFQSSdzIChpZSBpbXBsZW1lbnRhdGlvbiBoaWRpbmcpOgotLy8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgbGNpZF90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2dldF9kZWZhdWx0X2xvY2FsZSgpOwotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX2xvd2VyKGNoYXIsIGxjaWRfdHlwZSk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX2xvd2VyKHdjaGFyX3QsIGxjaWRfdHlwZSk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pc19sb3dlcih1bnNpZ25lZCBzaG9ydCBjYSwgbGNpZF90eXBlIHN0YXRlX2lkKTsKLSNlbmRpZgotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfdXBwZXIoY2hhciwgbGNpZF90eXBlKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfdXBwZXIod2NoYXJfdCwgbGNpZF90eXBlKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX3VwcGVyKHVuc2lnbmVkIHNob3J0IGNhLCBsY2lkX3R5cGUgc3RhdGVfaWQpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2F0X3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfY2F0X29wZW4oY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OnN0cmluZyBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9jYXRfZ2V0KGNvbnN0IGNhdF90eXBlJiBjYXQsIGxjaWRfdHlwZSBzdGF0ZV9pZCwgaW50IGksIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZWYpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjp3c3RyaW5nIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2NhdF9nZXQoY29uc3QgY2F0X3R5cGUmIGNhdCwgbGNpZF90eXBlIHN0YXRlX2lkLCBpbnQgaSwgY29uc3Qgc3RkOjp3c3RyaW5nJiBkZWYpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PiBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9jYXRfZ2V0KGNvbnN0IGNhdF90eXBlJiBjYXQsIGxjaWRfdHlwZSwgaW50IGksIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PiYgZGVmKTsKLSNlbmRpZgotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6c3RyaW5nIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RyYW5zZm9ybShsY2lkX3R5cGUgc3RhdGVfaWQsIGNvbnN0IGNoYXIqIHAxLCBjb25zdCBjaGFyKiBwMik7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OndzdHJpbmcgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdHJhbnNmb3JtKGxjaWRfdHlwZSBzdGF0ZV9pZCwgY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBzaG9ydD4gTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdHJhbnNmb3JtKGxjaWRfdHlwZSBzdGF0ZV9pZCwgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90b2xvd2VyKGNoYXIgYywgbGNpZF90eXBlKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG9sb3dlcih3Y2hhcl90IGMsIGxjaWRfdHlwZSk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG9sb3dlcih1bnNpZ25lZCBzaG9ydCBjLCBsY2lkX3R5cGUgc3RhdGVfaWQpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90b3VwcGVyKGNoYXIgYywgbGNpZF90eXBlKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG91cHBlcih3Y2hhcl90IGMsIGxjaWRfdHlwZSk7Ci0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pcyhsY2lkX3R5cGUsIG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrLCBjaGFyIGMpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pcyhsY2lkX3R5cGUsIG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrLCB3Y2hhcl90IGMpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXMobGNpZF90eXBlIHN0YXRlX2lkLCBuZG5ib29zdDo6dWludDMyX3QgbSwgdW5zaWduZWQgc2hvcnQgYyk7Ci0jZW5kaWYKLSNlbmRpZgotLy8KLS8vIGNsYXNzIHczMl9yZWdleF90cmFpdHNfYmFzZToKLS8vIGFjdHMgYXMgYSBjb250YWluZXIgZm9yIGxvY2FsZSBhbmQgdGhlIGZhY2V0cyB3ZSBhcmUgdXNpbmcuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IHczMl9yZWdleF90cmFpdHNfYmFzZQotewotICAgdzMyX3JlZ2V4X3RyYWl0c19iYXNlKGxjaWRfdHlwZSBsKQotICAgeyBpbWJ1ZShsKTsgfQotICAgbGNpZF90eXBlIGltYnVlKGxjaWRfdHlwZSBsKTsKLQotICAgbGNpZF90eXBlIG1fbG9jYWxlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGxjaWRfdHlwZSB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+OjppbWJ1ZShsY2lkX3R5cGUgbCkKLXsKLSAgIGxjaWRfdHlwZSByZXN1bHQobV9sb2NhbGUpOwotICAgbV9sb2NhbGUgPSBsOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIGNsYXNzIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjoKLS8vIGltcGxlbWVudHMgbWV0aG9kcyB0aGF0IHJlcXVpcmUgc3BlY2lhbGlzYXRpb24gZm9yIG5hcnJvdyBjaGFyYWN0ZXJzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllciA6IHB1YmxpYyB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+Ci17Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjptYXA8Y2hhclQsIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGU+IG1hcF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBfdHlwZTo6Y29uc3RfaXRlcmF0b3IgbWFwX2l0ZXJhdG9yX3R5cGU7Ci1wdWJsaWM6Ci0gICB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3QgbGNpZF90eXBlIGwpOwotCi0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIG1hcF9pdGVyYXRvcl90eXBlIGkgPSBtX2NoYXJfbWFwLmZpbmQoYyk7Ci0gICAgICByZXR1cm4gKChpID09IG1fY2hhcl9tYXAuZW5kKCkpID8gMCA6IGktPnNlY29uZCk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIG1hcF9pdGVyYXRvcl90eXBlIGkgPSBtX2NoYXJfbWFwLmZpbmQoYyk7Ci0gICAgICBpZihpID09IG1fY2hhcl9tYXAuZW5kKCkpCi0gICAgICB7Ci0gICAgICAgICBpZig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9pc19sb3dlcihjLCB0aGlzLT5tX2xvY2FsZSkpIHJldHVybiByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NsYXNzOwotICAgICAgICAgaWYoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfaXNfdXBwZXIoYywgdGhpcy0+bV9sb2NhbGUpKSByZXR1cm4gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3RfY2xhc3M7Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBpLT5zZWNvbmQ7Ci0gICB9Ci0gICBjaGFyVCB0b2xvd2VyKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl90b2xvd2VyKGMsIHRoaXMtPm1fbG9jYWxlKTsKLSAgIH0KLSAgIGJvb2wgaXNjdHlwZShuZG5ib29zdDo6dWludDMyX3QgbWFzaywgY2hhclQgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2lzKHRoaXMtPm1fbG9jYWxlLCBtYXNrLCBjKTsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIHN0cmluZ190eXBlIGdldF9kZWZhdWx0X21lc3NhZ2UocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSk7Ci0gICAvLyBUT0RPOiB1c2UgYSBoYXNoIHRhYmxlIHdoZW4gYXZhaWxhYmxlIQotICAgbWFwX3R5cGUgbV9jaGFyX21hcDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OnczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsKSAKLSAgIDogdzMyX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPihsKQotewotICAgLy8gd2UgbmVlZCB0byBzdGFydCBieSBpbml0aWFsaXNpbmcgb3VyIHN5bnRheCBtYXAgc28gd2Uga25vdyB3aGljaAotICAgLy8gY2hhcmFjdGVyIGlzIHVzZWQgZm9yIHdoaWNoIHB1cnBvc2U6Ci0gICBjYXRfdHlwZSBjYXQ7Ci0gICBzdGQ6OnN0cmluZyBjYXRfbmFtZSh3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpKTsKLSAgIGlmKGNhdF9uYW1lLnNpemUoKSkKLSAgIHsKLSAgICAgIGNhdCA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9vcGVuKGNhdF9uYW1lKTsKLSAgICAgIGlmKCFjYXQpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN0cmluZyBtKCJVbmFibGUgdG8gb3BlbiBtZXNzYWdlIGNhdGFsb2c6ICIpOwotICAgICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGVycihtICsgY2F0X25hbWUpOwotICAgICAgICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlcnIpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGhhdmUgYSB2YWxpZCBjYXRhbG9nIHRoZW4gbG9hZCBvdXIgbWVzc2FnZXM6Ci0gICAvLwotICAgaWYoY2F0KQotICAgewotICAgICAgZm9yKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgaSA9IDE7IGkgPCByZWdleF9jb25zdGFudHM6OnN5bnRheF9tYXg7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN0cmluZ190eXBlIG1zcyA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9nZXQoY2F0LCB0aGlzLT5tX2xvY2FsZSwgaSwgZ2V0X2RlZmF1bHRfbWVzc2FnZShpKSk7Ci0gICAgICAgICBmb3IodHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBqID0gMDsgaiA8IG1zcy5zaXplKCk7ICsraikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPm1fY2hhcl9tYXBbbXNzW2pdXSA9IGk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBmb3IocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpID0gMTsgaSA8IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X21heDsgKytpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogcHRyID0gZ2V0X2RlZmF1bHRfc3ludGF4KGkpOwotICAgICAgICAgd2hpbGUocHRyICYmICpwdHIpCi0gICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tX2NoYXJfbWFwW3N0YXRpY19jYXN0PGNoYXJUPigqcHRyKV0gPSBpOwotICAgICAgICAgICAgKytwdHI7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6Z2V0X2RlZmF1bHRfbWVzc2FnZShyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkpCi17Ci0gICBjb25zdCBjaGFyKiBwdHIgPSBnZXRfZGVmYXVsdF9zeW50YXgoaSk7Ci0gICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICB3aGlsZShwdHIgJiYgKnB0cikKLSAgIHsKLSAgICAgIHJlc3VsdC5hcHBlbmQoMSwgc3RhdGljX2Nhc3Q8Y2hhclQ+KCpwdHIpKTsKLSAgICAgICsrcHRyOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIHNwZWNpYWxpc2VkIHZlcnNpb24gZm9yIG5hcnJvdyBjaGFyYWN0ZXJzOgotLy8KLXRlbXBsYXRlIDw+Ci1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyPiA6IHB1YmxpYyB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4KLXsKLSAgIHR5cGVkZWYgc3RkOjpzdHJpbmcgc3RyaW5nX3R5cGU7Ci1wdWJsaWM6Ci0gICB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbCkKLSAgIDogdzMyX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhciBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jaGFyX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhciBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fY2hhcl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOwotICAgfQotICAgY2hhciB0b2xvd2VyKGNoYXIgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fbG93ZXJfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAgIH0KLSAgIGJvb2wgaXNjdHlwZShuZG5ib29zdDo6dWludDMyX3QgbWFzaywgY2hhciBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV90eXBlX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV0gJiBtYXNrOwotICAgfQotCi1wcml2YXRlOgotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBtX2NoYXJfbWFwWzF1IDw8IENIQVJfQklUXTsKLSAgIGNoYXIgbV9sb3dlcl9tYXBbMXUgPDwgQ0hBUl9CSVRdOwotICAgbmRuYm9vc3Q6OnVpbnQxNl90IG1fdHlwZV9tYXBbMXUgPDwgQ0hBUl9CSVRdOwotICAgdm9pZCBpbml0KCk7Ci19OwotCi0vLwotLy8gY2xhc3MgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjoKLS8vIHByb3ZpZGVzIHBpbXBsIGltcGxlbWVudGF0aW9uIGZvciB3MzJfcmVnZXhfdHJhaXRzLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24gOiBwdWJsaWMgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPgotewotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNoYXJfY2xhc3NfdHlwZTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfd29yZCA9IDB4MDQwMCk7IC8vIG11c3QgYmUgQzFfREVGSU5FRCA8PCAxCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX3VuaWNvZGUgPSAweDA4MDApOyAvLyBtdXN0IGJlIEMxX0RFRklORUQgPDwgMgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza19ob3Jpem9udGFsID0gMHgxMDAwKTsgLy8gbXVzdCBiZSBDMV9ERUZJTkVEIDw8IDMKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfdmVydGljYWwgPSAweDIwMDApOyAvLyBtdXN0IGJlIEMxX0RFRklORUQgPDwgNAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza19iYXNlID0gMHgzZmYpOyAgLy8gYWxsIHRoZSBtYXNrcyB1c2VkIGJ5IHRoZSBDVF9DVFlQRTEgZ3JvdXAKLQotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIGNoYXJUIGNoYXJfdHlwZTsKLSAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbCk7Ci0gICBzdGQ6OnN0cmluZyBlcnJvcl9zdHJpbmcocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG4pIGNvbnN0Ci0gICB7Ci0gICAgICBpZighbV9lcnJvcl9zdHJpbmdzLmVtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcCA9IG1fZXJyb3Jfc3RyaW5ncy5maW5kKG4pOwotICAgICAgICAgcmV0dXJuIChwID09IG1fZXJyb3Jfc3RyaW5ncy5lbmQoKSkgPyBzdGQ6OnN0cmluZyhnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcobikpIDogcC0+c2Vjb25kOwotICAgICAgfQotICAgICAgcmV0dXJuIGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhuKTsKLSAgIH0KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgY2hhcl9jbGFzc190eXBlIHJlc3VsdCA9IGxvb2t1cF9jbGFzc25hbWVfaW1wKHAxLCBwMik7Ci0gICAgICBpZihyZXN1bHQgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICAgICAgICBzdHJpbmdfdHlwZSB0ZW1wKHAxLCBwMik7Ci0gICAgICAgICBmb3Ioc2l6ZV90eXBlIGkgPSAwOyBpIDwgdGVtcC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHRlbXBbaV0gPSB0aGlzLT50b2xvd2VyKHRlbXBbaV0pOwotICAgICAgICAgcmVzdWx0ID0gbG9va3VwX2NsYXNzbmFtZV9pbXAoJip0ZW1wLmJlZ2luKCksICYqdGVtcC5iZWdpbigpICsgdGVtcC5zaXplKCkpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfdHJhbnNmb3JtKHRoaXMtPm1fbG9jYWxlLCBwMSwgcDIpOwotICAgfQotcHJpdmF0ZToKLSAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+ICAgICBtX2Vycm9yX3N0cmluZ3M7ICAgLy8gZXJyb3IgbWVzc2FnZXMgaW5kZXhlZCBieSBudW1iZXJpYyBJRAotICAgc3RkOjptYXA8c3RyaW5nX3R5cGUsIGNoYXJfY2xhc3NfdHlwZT4gIG1fY3VzdG9tX2NsYXNzX25hbWVzOyAvLyBjaGFyYWN0ZXIgY2xhc3MgbmFtZXMKLSAgIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBzdHJpbmdfdHlwZT4gICAgICBtX2N1c3RvbV9jb2xsYXRlX25hbWVzOyAvLyBjb2xsYXRpbmcgZWxlbWVudCBuYW1lcwotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV90eXBlOyAgICAvLyB0aGUgZm9ybSBvZiB0aGUgY29sbGF0aW9uIHN0cmluZwotICAgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV9kZWxpbTsgICAvLyB0aGUgY29sbGF0aW9uIGdyb3VwIGRlbGltaXRlcgotICAgLy8KLSAgIC8vIGhlbHBlcnM6Ci0gICAvLwotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojp0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgIC8vCi0gICAvLyBXaGF0IHdlIGRvIGhlcmUgZGVwZW5kcyB1cG9uIHRoZSBmb3JtYXQgb2YgdGhlIHNvcnQga2V5IHJldHVybmVkIGJ5Ci0gICAvLyBzb3J0IGtleSByZXR1cm5lZCBieSB0aGlzLT50cmFuc2Zvcm06Ci0gICAvLwotICAgc3dpdGNoKG1fY29sbGF0ZV90eXBlKQotICAgewotICAgY2FzZSBzb3J0X0M6Ci0gICBjYXNlIHNvcnRfdW5rbm93bjoKLSAgICAgIC8vIHRoZSBiZXN0IHdlIGNhbiBkbyBpcyB0cmFuc2xhdGUgdG8gbG93ZXIgY2FzZSwgdGhlbiBnZXQgYSByZWd1bGFyIHNvcnQga2V5OgotICAgICAgewotICAgICAgICAgcmVzdWx0LmFzc2lnbihwMSwgcDIpOwotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICAgICAgIGZvcihzaXplX3R5cGUgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSB0aGlzLT50b2xvd2VyKHJlc3VsdFtpXSk7Ci0gICAgICAgICByZXN1bHQgPSB0aGlzLT50cmFuc2Zvcm0oJipyZXN1bHQuYmVnaW4oKSwgJipyZXN1bHQuYmVnaW4oKSArIHJlc3VsdC5zaXplKCkpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHNvcnRfZml4ZWQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyBnZXQgYSByZWd1bGFyIHNvcnQga2V5LCBhbmQgdGhlbiB0cnVuY2F0ZSBpdDoKLSAgICAgICAgIHJlc3VsdC5hc3NpZ24odGhpcy0+dHJhbnNmb3JtKHAxLCBwMikpOwotICAgICAgICAgcmVzdWx0LmVyYXNlKHRoaXMtPm1fY29sbGF0ZV9kZWxpbSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2Ugc29ydF9kZWxpbToKLSAgICAgICAgIC8vIGdldCBhIHJlZ3VsYXIgc29ydCBrZXksIGFuZCB0aGVuIHRydW5jYXRlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRlbGltOgotICAgICAgICAgcmVzdWx0LmFzc2lnbih0aGlzLT50cmFuc2Zvcm0ocDEsIHAyKSk7Ci0gICAgICAgICBzdGQ6OnNpemVfdCBpOwotICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgaWYocmVzdWx0W2ldID09IG1fY29sbGF0ZV9kZWxpbSkKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgcmVzdWx0LmVyYXNlKGkpOwotICAgICAgICAgYnJlYWs7Ci0gICB9Ci0gICBpZihyZXN1bHQuZW1wdHkoKSkKLSAgICAgIHJlc3VsdCA9IHN0cmluZ190eXBlKDEsIGNoYXJUKDApKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojpsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBzdHJpbmdfdHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIGlmKG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuc2l6ZSgpKQotICAgewotICAgICAgaXRlcl90eXBlIHBvcyA9IG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuZmluZChzdHJpbmdfdHlwZShwMSwgcDIpKTsKLSAgICAgIGlmKHBvcyAhPSBtX2N1c3RvbV9jb2xsYXRlX25hbWVzLmVuZCgpKQotICAgICAgICAgcmV0dXJuIHBvcy0+c2Vjb25kOwotICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgc3RkOjpzdHJpbmcgbmFtZShwMSwgcDIpOwotI2Vsc2UKLSAgIHN0ZDo6c3RyaW5nIG5hbWU7Ci0gICBjb25zdCBjaGFyVCogcDAgPSBwMTsKLSAgIHdoaWxlKHAwICE9IHAyKQotICAgICAgbmFtZS5hcHBlbmQoMSwgY2hhcigqcDArKykpOwotI2VuZGlmCi0gICBuYW1lID0gbG9va3VwX2RlZmF1bHRfY29sbGF0ZV9uYW1lKG5hbWUpOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgaWYobmFtZS5zaXplKCkpCi0gICAgICByZXR1cm4gc3RyaW5nX3R5cGUobmFtZS5iZWdpbigpLCBuYW1lLmVuZCgpKTsKLSNlbHNlCi0gICBpZihuYW1lLnNpemUoKSkKLSAgIHsKLSAgICAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgICAgIHR5cGVkZWYgc3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGl0ZXI7Ci0gICAgICBpdGVyIGIgPSBuYW1lLmJlZ2luKCk7Ci0gICAgICBpdGVyIGUgPSBuYW1lLmVuZCgpOwotICAgICAgd2hpbGUoYiAhPSBlKQotICAgICAgICAgcmVzdWx0LmFwcGVuZCgxLCBjaGFyVCgqYisrKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotI2VuZGlmCi0gICBpZihwMiAtIHAxID09IDEpCi0gICAgICByZXR1cm4gc3RyaW5nX3R5cGUoMSwgKnAxKTsKLSAgIHJldHVybiBzdHJpbmdfdHlwZSgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci13MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsKQotOiB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+KGwpCi17Ci0gICBjYXRfdHlwZSBjYXQ7Ci0gICBzdGQ6OnN0cmluZyBjYXRfbmFtZSh3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpKTsKLSAgIGlmKGNhdF9uYW1lLnNpemUoKSkKLSAgIHsKLSAgICAgIGNhdCA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9vcGVuKGNhdF9uYW1lKTsKLSAgICAgIGlmKCFjYXQpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN0cmluZyBtKCJVbmFibGUgdG8gb3BlbiBtZXNzYWdlIGNhdGFsb2c6ICIpOwotICAgICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGVycihtICsgY2F0X25hbWUpOwotICAgICAgICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlcnIpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGhhdmUgYSB2YWxpZCBjYXRhbG9nIHRoZW4gbG9hZCBvdXIgbWVzc2FnZXM6Ci0gICAvLwotICAgaWYoY2F0KQotICAgewotICAgICAgLy8KLSAgICAgIC8vIEVycm9yIG1lc3NhZ2VzOgotICAgICAgLy8KLSAgICAgIGZvcihuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGkgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlPigwKTsgCi0gICAgICAgICBpIDw9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3Vua25vd247IAotICAgICAgICAgaSA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGU+KGkgKyAxKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcoaSk7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBkZWZhdWx0X21lc3NhZ2U7Ci0gICAgICAgICB3aGlsZSgqcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGRlZmF1bHRfbWVzc2FnZS5hcHBlbmQoMSwgc3RhdGljX2Nhc3Q8Y2hhclQ+KCpwKSk7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgICB9Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfY2F0X2dldChjYXQsIHRoaXMtPm1fbG9jYWxlLCBpKzIwMCwgZGVmYXVsdF9tZXNzYWdlKTsKLSAgICAgICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSAgICAgICAgIGZvcihzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGogPSAwOyBqIDwgcy5zaXplKCk7ICsraikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSwgc3RhdGljX2Nhc3Q8Y2hhcj4oc1tqXSkpOwotICAgICAgICAgfQotICAgICAgICAgbV9lcnJvcl9zdHJpbmdzW2ldID0gcmVzdWx0OwotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIEN1c3RvbSBjbGFzcyBuYW1lczoKLSAgICAgIC8vCi0gICAgICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzE0XSA9IAotICAgICAgewotICAgICAgICAgMHgwMTA0dSwgLy8gQzFfQUxQSEEgfCBDMV9ESUdJVAotICAgICAgICAgMHgwMTAwdSwgLy8gQzFfQUxQSEEKLSAgICAgICAgIDB4MDAyMHUsIC8vIEMxX0NOVFJMCi0gICAgICAgICAweDAwMDR1LCAvLyBDMV9ESUdJVAotICAgICAgICAgKH4oMHgwMDIwdXwweDAwMDh1KSAmIDB4MDFmZnUpIHwgMHgwNDAwdSwgLy8gbm90IEMxX0NOVFJMIG9yIEMxX1NQQUNFCi0gICAgICAgICAweDAwMDJ1LCAvLyBDMV9MT1dFUgotICAgICAgICAgKH4weDAwMjB1ICYgMHgwMWZmdSkgfCAweDA0MDAsIC8vIG5vdCBDMV9DTlRSTAotICAgICAgICAgMHgwMDEwdSwgLy8gQzFfUFVOQ1QKLSAgICAgICAgIDB4MDAwOHUsIC8vIEMxX1NQQUNFCi0gICAgICAgICAweDAwMDF1LCAvLyBDMV9VUFBFUgotICAgICAgICAgMHgwMDgwdSwgLy8gQzFfWERJR0lUCi0gICAgICAgICAweDAwNDB1LCAvLyBDMV9CTEFOSwotICAgICAgICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwKLSAgICAgICAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUsCi0gICAgICB9OwotICAgICAgc3RhdGljIGNvbnN0IHN0cmluZ190eXBlIG51bGxfc3RyaW5nOwotICAgICAgZm9yKHVuc2lnbmVkIGludCBqID0gMDsgaiA8PSAxMzsgKytqKQotICAgICAgewotICAgICAgICAgc3RyaW5nX3R5cGUgcyg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9jYXRfZ2V0KGNhdCwgdGhpcy0+bV9sb2NhbGUsIGorMzAwLCBudWxsX3N0cmluZykpOwotICAgICAgICAgaWYocy5zaXplKCkpCi0gICAgICAgICAgICB0aGlzLT5tX2N1c3RvbV9jbGFzc19uYW1lc1tzXSA9IG1hc2tzW2pdOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGdldCB0aGUgY29sbGF0aW9uIGZvcm1hdCB1c2VkIGJ5IG1fcGNvbGxhdGU6Ci0gICAvLwotICAgbV9jb2xsYXRlX3R5cGUgPSByZV9kZXRhaWw6OmZpbmRfc29ydF9zeW50YXgodGhpcywgJm1fY29sbGF0ZV9kZWxpbSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgCi0gICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bG9va3VwX2NsYXNzbmFtZV9pbXAoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzIyXSA9IAotICAgewotICAgICAgMCwKLSAgICAgIDB4MDEwNHUsIC8vIEMxX0FMUEhBIHwgQzFfRElHSVQKLSAgICAgIDB4MDEwMHUsIC8vIEMxX0FMUEhBCi0gICAgICAweDAwNDB1LCAvLyBDMV9CTEFOSwotICAgICAgMHgwMDIwdSwgLy8gQzFfQ05UUkwKLSAgICAgIDB4MDAwNHUsIC8vIEMxX0RJR0lUCi0gICAgICAweDAwMDR1LCAvLyBDMV9ESUdJVAotICAgICAgKH4oMHgwMDIwdXwweDAwMDh1fDB4MDA0MCkgJiAweDAxZmZ1KSB8IDB4MDQwMHUsIC8vIG5vdCBDMV9DTlRSTCBvciBDMV9TUEFDRSBvciBDMV9CTEFOSwotICAgICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbCwgCi0gICAgICAweDAwMDJ1LCAvLyBDMV9MT1dFUgotICAgICAgMHgwMDAydSwgLy8gQzFfTE9XRVIKLSAgICAgICh+MHgwMDIwdSAmIDB4MDFmZnUpIHwgMHgwNDAwLCAvLyBub3QgQzFfQ05UUkwKLSAgICAgIDB4MDAxMHUsIC8vIEMxX1BVTkNUCi0gICAgICAweDAwMDh1LCAvLyBDMV9TUEFDRQotICAgICAgMHgwMDA4dSwgLy8gQzFfU1BBQ0UKLSAgICAgIDB4MDAwMXUsIC8vIEMxX1VQUEVSCi0gICAgICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlLAotICAgICAgMHgwMDAxdSwgLy8gQzFfVVBQRVIKLSAgICAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsLCAKLSAgICAgIDB4MDEwNHUgfCB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLCAKLSAgICAgIDB4MDEwNHUgfCB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLCAKLSAgICAgIDB4MDA4MHUsIC8vIEMxX1hESUdJVAotICAgfTsKLSAgIGlmKG1fY3VzdG9tX2NsYXNzX25hbWVzLnNpemUoKSkKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYXA8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+LCBjaGFyX2NsYXNzX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBtYXBfaXRlcjsKLSAgICAgIG1hcF9pdGVyIHBvcyA9IG1fY3VzdG9tX2NsYXNzX25hbWVzLmZpbmQoc3RyaW5nX3R5cGUocDEsIHAyKSk7Ci0gICAgICBpZihwb3MgIT0gbV9jdXN0b21fY2xhc3NfbmFtZXMuZW5kKCkpCi0gICAgICAgICByZXR1cm4gcG9zLT5zZWNvbmQ7Ci0gICB9Ci0gICBzdGQ6OnNpemVfdCBzdGF0ZV9pZCA9IDEgKyByZV9kZXRhaWw6OmdldF9kZWZhdWx0X2NsYXNzX2lkKHAxLCBwMik7Ci0gICBpZihzdGF0ZV9pZCA8IHNpemVvZihtYXNrcykgLyBzaXplb2YobWFza3NbMF0pKQotICAgICAgcmV0dXJuIG1hc2tzW3N0YXRlX2lkXTsKLSAgIHJldHVybiBtYXNrc1swXTsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1uZG5ib29zdDo6c2hhcmVkX3B0cjxjb25zdCB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPiA+IGNyZWF0ZV93MzJfcmVnZXhfdHJhaXRzKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIGwgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoY2hhclQpKQotewotICAgLy8gVE9ETzogY3JlYXRlIGEgY2FjaGUgZm9yIHByZXZpb3VzbHkgY29uc3RydWN0ZWQgb2JqZWN0cy4KLSAgIHJldHVybiBuZG5ib29zdDo6b2JqZWN0X2NhY2hlPCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSwgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPjo6Z2V0KGwsIDUpOwotfQotCi19IC8vIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyB3MzJfcmVnZXhfdHJhaXRzCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGNoYXJUICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbG9jYWxlX3R5cGU7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCAgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RydWN0IGJvb3N0X2V4dGVuc2lvbnNfdGFne307Ci0KLSAgIHczMl9yZWdleF90cmFpdHMoKQotICAgICAgOiBtX3BpbXBsKHJlX2RldGFpbDo6Y3JlYXRlX3czMl9yZWdleF90cmFpdHM8Y2hhclQ+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2dldF9kZWZhdWx0X2xvY2FsZSgpKSkKLSAgIHsgfQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKQotICAgewotICAgICAgcmV0dXJuIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhclQ+OjpsZW5ndGgocCk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5zeW50YXhfdHlwZShjKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmVzY2FwZV9zeW50YXhfdHlwZShjKTsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGM7Ci0gICB9Ci0gICBjaGFyVCB0cmFuc2xhdGVfbm9jYXNlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9waW1wbC0+dG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZShjaGFyVCBjLCBib29sIGljYXNlKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGljYXNlID8gdGhpcy0+bV9waW1wbC0+dG9sb3dlcihjKSA6IGM7Ci0gICB9Ci0gICBjaGFyVCB0b2xvd2VyKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9waW1wbC0+dG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJUIHRvdXBwZXIoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl90b3VwcGVyKGMsIHRoaXMtPm1fcGltcGwtPm1fbG9jYWxlKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl90cmFuc2Zvcm0odGhpcy0+bV9waW1wbC0+bV9sb2NhbGUsIHAxLCBwMik7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT50cmFuc2Zvcm1fcHJpbWFyeShwMSwgcDIpOwotICAgfQotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bG9va3VwX2NsYXNzbmFtZShwMSwgcDIpOwotICAgfQotICAgc3RyaW5nX3R5cGUgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmxvb2t1cF9jb2xsYXRlbmFtZShwMSwgcDIpOwotICAgfQotICAgYm9vbCBpc2N0eXBlKGNoYXJUIGMsIGNoYXJfY2xhc3NfdHlwZSBmKSBjb25zdAotICAgewotICAgICAgaWYoKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2Jhc2UpIAotICAgICAgICAgJiYgKHRoaXMtPm1fcGltcGwtPmlzY3R5cGUoZiAmIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfYmFzZSwgYykpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlKSAmJiByZV9kZXRhaWw6OmlzX2V4dGVuZGVkKGMpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkKSAmJiAoYyA9PSAnXycpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCkKLSAgICAgICAgICYmICg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmlzX3NlcGFyYXRvcihjKSB8fCAoYyA9PSAnXHYnKSkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWwpIAotICAgICAgICAgJiYgdGhpcy0+aXNjdHlwZShjLCAweDAwMDh1KSAmJiAhdGhpcy0+aXNjdHlwZShjLCByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgaW50IHRvaShjb25zdCBjaGFyVComIHAxLCBjb25zdCBjaGFyVCogcDIsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3RvaShwMSwgcDIsIHJhZGl4LCAqdGhpcyk7Ci0gICB9Ci0gICBpbnQgdmFsdWUoY2hhclQgYywgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICBpbnQgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfdmFsdWUoYyk7Ci0gICAgICByZXR1cm4gcmVzdWx0IDwgcmFkaXggPyByZXN1bHQgOiAtMTsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7Ci0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSByZXN1bHQoZ2V0bG9jKCkpOwotICAgICAgbV9waW1wbCA9IHJlX2RldGFpbDo6Y3JlYXRlX3czMl9yZWdleF90cmFpdHM8Y2hhclQ+KGwpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX2xvY2FsZTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5lcnJvcl9zdHJpbmcobik7Ci0gICB9Ci0KLSAgIC8vCi0gICAvLyBleHRlbnNpb246Ci0gICAvLyBzZXQgdGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZyBpbiB1c2UgKGRlZmF1bHRzIHRvICJib29zdF9yZWdleCIpLgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBjYXRhbG9nX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotICAgc3RhdGljIHN0ZDo6c3RyaW5nIGdldF9jYXRhbG9nX25hbWUoKTsKLQotcHJpdmF0ZToKLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGNvbnN0IHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPiBtX3BpbXBsOwotICAgLy8KLSAgIC8vIGNhdGFsb2cgbmFtZSBoYW5kbGVyOgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyYgZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCk7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljIHN0YXRpY19tdXRleCYgZ2V0X211dGV4X2luc3QoKTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcgdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljX211dGV4OjpzY29wZWRfbG9jayBsayhnZXRfbXV0ZXhfaW5zdCgpKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgcmVzdWx0KGdldF9jYXRhbG9nX25hbWVfaW5zdCgpKTsKLSAgIGdldF9jYXRhbG9nX25hbWVfaW5zdCgpID0gbmFtZTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nJiB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBzX25hbWU7Ci0gICByZXR1cm4gc19uYW1lOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbGsoZ2V0X211dGV4X2luc3QoKSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIHJlc3VsdChnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0YXRpY19tdXRleCYgdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9tdXRleF9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGF0aWNfbXV0ZXggc19tdXRleCA9IE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUOwotICAgcmV0dXJuIHNfbXV0ZXg7Ci19Ci0jZW5kaWYKLQotCi19IC8vIGJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZTRlZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmVnZXggZm9yIGRvY3VtZW50YXRpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZndkLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRm9yd2FyZCBkZWNsYXJlcyBuZG5ib29zdDo6YmFzaWNfcmVnZXg8PiBhbmQKLSAgKiAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHR5cGVkZWZzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRldEX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9md2QuaHBwPgotCi0jZW5kaWYKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWJmNjg2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECi0KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2NvcGVkX2FycmF5Lmh0bQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0M2JiNDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKLQotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zY29wZWRfcHRyLmh0bQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfcHRyLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRjZWMyMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NoYXJlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHNoYXJlZF9hcnJheS5ocHAKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZmY4ZDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBzaGFyZWRfcHRyLmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX3B0ci5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2FsbG9jYXRlX3NoYXJlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9hbGxvY2F0ZV9zaGFyZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTkxYmY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2FsbG9jYXRlX3NoYXJlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfQUxMT0NBVEVfU0hBUkVEX0FSUkFZX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfQUxMT0NBVEVfU0hBUkVEX0FSUkFZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYWxsb2NhdGVfYXJyYXlfaGVscGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcD4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIHN0ZDo6c2l6ZV90IHNpemUsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBjb25zdCBUJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXRfbGlzdChwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplLAotICAgICAgICBjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBNICogc2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT50ZW1wbGF0ZSBpbml0X2xpc3Q8TT4ocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLAotICAgICAgICBjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUsCi0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW05dPiBhMShhbGxvY2F0b3IsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+dGVtcGxhdGUgaW5pdF9saXN0PE0+KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsCi0gICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZT4gbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGxpc3Quc2l6ZSgpICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbXT4gYTEoYWxsb2NhdG9yLCBuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0LmJlZ2luKCkpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdF9saXN0KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwgc3RkOjpzaXplX3Qgc2l6ZSwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8VDI+KHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxUMj4odmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZF9ub2luaXQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPm5vaW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkX25vaW5pdChjb25zdCBBJiBhbGxvY2F0b3IpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW05dPiBhMShhbGxvY2F0b3IsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5ub2luaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYmFkX3dlYWtfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2JhZF93ZWFrX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MDgzYzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYmFkX3dlYWtfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0JBRF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0JBRF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3Qvc21hcnRfcHRyL2JhZF93ZWFrX3B0ci5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLQotI2lmZGVmIF9fQk9STEFORENfXwotIyBwcmFnbWEgd2FybiAtODAyNiAgICAgLy8gRnVuY3Rpb25zIHdpdGggZXhjZXAuIHNwZWMuIGFyZSBub3QgZXhwYW5kZWQgaW5saW5lCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IHRoYXQgY29tZXMgd2l0aCBCb3JsYW5kIEMrKyA1LjUuMSwgNS42LjQKLS8vIGRlZmluZXMgc3RkOjpleGNlcHRpb24gYW5kIGl0cyBtZW1iZXJzIGFzIGhhdmluZyBDIGNhbGxpbmcKLS8vIGNvbnZlbnRpb24gKC1wYykuIFdoZW4gdGhlIGRlZmluaXRpb24gb2YgYmFkX3dlYWtfcHRyCi0vLyBpcyBjb21waWxlZCB3aXRoIC1wcywgdGhlIGNvbXBpbGVyIGlzc3VlcyBhbiBlcnJvci4KLS8vIEhlbmNlLCB0aGUgdGVtcG9yYXJ5ICNwcmFnbWEgb3B0aW9uIC1wYyBiZWxvdy4KLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPD0gMHg1NjQKLSMgcHJhZ21hIG9wdGlvbiBwdXNoIC1wYwotI2VuZGlmCi0KLWNsYXNzIGJhZF93ZWFrX3B0cjogcHVibGljIHN0ZDo6ZXhjZXB0aW9uCi17Ci1wdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIGNoYXIgY29uc3QgKiB3aGF0KCkgY29uc3QgdGhyb3coKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJ0cjE6OmJhZF93ZWFrX3B0ciI7Ci0gICAgfQotfTsKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPD0gMHg1NjQKLSMgcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jIHByYWdtYSB3YXJuIC44MDI2ICAgICAvLyBGdW5jdGlvbnMgd2l0aCBleGNlcC4gc3BlYy4gYXJlIG5vdCBleHBhbmRlZCBpbmxpbmUKLSNlbmRpZgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0JBRF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hbGxvY2F0ZV9hcnJheV9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FsbG9jYXRlX2FycmF5X2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODAxZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FsbG9jYXRlX2FycmF5X2hlbHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMgCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FMTE9DQVRFX0FSUkFZX0hFTFBFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BTExPQ0FURV9BUlJBWV9IRUxQRVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBZID0gY2hhcj4KLSAgICAgICAgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBZPgotICAgICAgICBjbGFzcyBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtdLCBZPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBOSwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFk5PgotICAgICAgICAgICAgZnJpZW5kIGNsYXNzIGFsbG9jYXRlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPFk+ICAgOjpvdGhlciBBMjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPGNoYXI+OjpvdGhlciBBMzsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6dmFsdWVfdHlwZSAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpwb2ludGVyICAgICAgICAgcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmNvbnN0X3BvaW50ZXIgICBjb25zdF9wb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6cmVmZXJlbmNlICAgICAgIHJlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpzaXplX3R5cGUgICAgICAgc2l6ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmViaW5kIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW10sIFU+IG90aGVyOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbG9jYXRlX2FycmF5X2hlbHBlcihjb25zdCBBJiBhbGxvY2F0b3JfLCBzdGQ6OnNpemVfdCBzaXplXywgVCoqIGRhdGFfKQotICAgICAgICAgICAgICAgIDogYWxsb2NhdG9yKGFsbG9jYXRvcl8pLAotICAgICAgICAgICAgICAgICAgc2l6ZShzaXplb2YoVCkgKiBzaXplXyksCi0gICAgICAgICAgICAgICAgICBkYXRhKGRhdGFfKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgYWxsb2NhdGVfYXJyYXlfaGVscGVyKGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW10sIFU+JiBvdGhlcikgCi0gICAgICAgICAgICAgICAgOiBhbGxvY2F0b3Iob3RoZXIuYWxsb2NhdG9yKSwKLSAgICAgICAgICAgICAgICAgIHNpemUob3RoZXIuc2l6ZSksCi0gICAgICAgICAgICAgICAgICBkYXRhKG90aGVyLmRhdGEpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFkZHJlc3ModmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWRkcmVzcyh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5tYXhfc2l6ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgY291bnQsIGNvbnN0IHZvaWQqIHZhbHVlID0gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDEgPSBBMyhhbGxvY2F0b3IpLmFsbG9jYXRlKG4xICsgc2l6ZSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMiA9IHAxICsgbjE7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0ZDo6c2l6ZV90KHAyKSAlIGExICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcDItLTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKmRhdGEgPSByZWludGVycHJldF9jYXN0PFQqPihwMik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICByZWludGVycHJldF9jYXN0PFkqPihwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBtZW1vcnksIHNpemVfdHlwZSBjb3VudCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtZW1vcnkpOwotICAgICAgICAgICAgICAgIEEzKGFsbG9jYXRvcikuZGVhbGxvY2F0ZShwMSwgbjEgKyBzaXplKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgY29uc3RydWN0KHBvaW50ZXIgbWVtb3J5LCBjb25zdCBZJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvci5jb25zdHJ1Y3QobWVtb3J5LCB2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3IuZGVzdHJveShtZW1vcnkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtdLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yID09IG90aGVyLmFsbG9jYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbXSwgVT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyAKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEEyIGFsbG9jYXRvcjsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemU7Ci0gICAgICAgICAgICBUKiogZGF0YTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgWT4KLSAgICAgICAgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFk+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEE5LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgWTk+Ci0gICAgICAgICAgICBmcmllbmQgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8WT4gICA6Om90aGVyIEEyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIEEzOwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjp2YWx1ZV90eXBlICAgICAgdmFsdWVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnBvaW50ZXIgICAgICAgICBwb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6Y29uc3RfcG9pbnRlciAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpyZWZlcmVuY2UgICAgICAgcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnNpemVfdHlwZSAgICAgICBzaXplX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIHN0cnVjdCByZWJpbmQgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFU+IG90aGVyOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbG9jYXRlX2FycmF5X2hlbHBlcihjb25zdCBBJiBhbGxvY2F0b3JfLCBUKiogZGF0YV8pCi0gICAgICAgICAgICAgICAgOiBhbGxvY2F0b3IoYWxsb2NhdG9yXyksCi0gICAgICAgICAgICAgICAgICBkYXRhKGRhdGFfKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgYWxsb2NhdGVfYXJyYXlfaGVscGVyKGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW05dLCBVPiYgb3RoZXIpIAotICAgICAgICAgICAgICAgIDogYWxsb2NhdG9yKG90aGVyLmFsbG9jYXRvciksCi0gICAgICAgICAgICAgICAgICBkYXRhKG90aGVyLmRhdGEpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFkZHJlc3ModmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWRkcmVzcyh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5tYXhfc2l6ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgY291bnQsIGNvbnN0IHZvaWQqIHZhbHVlID0gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDEgPSBBMyhhbGxvY2F0b3IpLmFsbG9jYXRlKG4xICsgTjEsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDIgPSBwMSArIG4xOwotICAgICAgICAgICAgICAgIHdoaWxlIChzdGQ6OnNpemVfdChwMikgJSBhMSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAyLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4ocDIpOwotICAgICAgICAgICAgICAgIHJldHVybiAgcmVpbnRlcnByZXRfY2FzdDxZKj4ocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgbWVtb3J5LCBzaXplX3R5cGUgY291bnQpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAxID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWVtb3J5KTsKLSAgICAgICAgICAgICAgICBBMyhhbGxvY2F0b3IpLmRlYWxsb2NhdGUocDEsIG4xICsgTjEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBtZW1vcnksIGNvbnN0IFkmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLmNvbnN0cnVjdChtZW1vcnksIHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVzdHJveShwb2ludGVyIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvci5kZXN0cm95KG1lbW9yeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW05dLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yID09IG90aGVyLmFsbG9jYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgCi0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgICAgICBOMSA9IE4gKiBzaXplb2YoVCkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBBMiBhbGxvY2F0b3I7Ci0gICAgICAgICAgICBUKiogZGF0YTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2FlOWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV9kZWxldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcwotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfREVMRVRFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9ERUxFVEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV91dGlsaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBjbGFzcyBhcnJheV9kZWxldGVyOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBjbGFzcyBhcnJheV9kZWxldGVyPFRbXT4gewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBhcnJheV9kZWxldGVyKHN0ZDo6c2l6ZV90IHNpemVfKQotICAgICAgICAgICAgICAgIDogc2l6ZShzaXplXyksCi0gICAgICAgICAgICAgICAgICBvYmplY3QoMCkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgfmFycmF5X2RlbGV0ZXIoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG9iamVjdCwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXQobWVtb3J5LCBzaXplKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5LCBUJiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X3ZhbHVlKG1lbW9yeSwgc2l6ZSwgc3BfZm9yd2FyZDxUPih2YWx1ZSkpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnksIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9hcmdzKG1lbW9yeSwgc2l6ZSwgc3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICAgICAgICAgIHZvaWQgaW5pdF9saXN0KFQqIG1lbW9yeSwgY29uc3QgVCogbGlzdCkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfbGlzdChtZW1vcnksIHNpemUsIGxpc3QpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE0+Ci0gICAgICAgICAgICB2b2lkIGluaXRfbGlzdChUKiBtZW1vcnksIGNvbnN0IFQqIGxpc3QpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2xpc3Q8VCwgTT4obWVtb3J5LCBzaXplLCBsaXN0KTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG5vaW5pdChUKiBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9ub2luaXQobWVtb3J5LCBzaXplKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoY29uc3Qgdm9pZCopIHsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kob2JqZWN0LCBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0ID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBzaXplOwotICAgICAgICAgICAgVCogb2JqZWN0OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBjbGFzcyBhcnJheV9kZWxldGVyPFRbTl0+IHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgYXJyYXlfZGVsZXRlcigpCi0gICAgICAgICAgICAgICAgOiBvYmplY3QoMCkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgfmFycmF5X2RlbGV0ZXIoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG9iamVjdCwgTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXQobWVtb3J5LCBOKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5LCBUJiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X3ZhbHVlKG1lbW9yeSwgTiwgc3BfZm9yd2FyZDxUPih2YWx1ZSkpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnksIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9hcmdzKG1lbW9yeSwgTiwgc3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICAgICAgICAgIHZvaWQgaW5pdF9saXN0KFQqIG1lbW9yeSwgY29uc3QgVCogbGlzdCkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfbGlzdChtZW1vcnksIE4sIGxpc3QpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE0+Ci0gICAgICAgICAgICB2b2lkIGluaXRfbGlzdChUKiBtZW1vcnksIGNvbnN0IFQqIGxpc3QpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2xpc3Q8VCwgTT4obWVtb3J5LCBOLCBsaXN0KTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG5vaW5pdChUKiBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9ub2luaXQobWVtb3J5LCBOKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoY29uc3Qgdm9pZCopIHsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kob2JqZWN0LCBOKTsKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0ID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBUKiBvYmplY3Q7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3OWI3NzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcyAKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgCi0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FSUkFZX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBhcnJheV9iYXNlIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfYmFzZTxUW10+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXJyYXlfYmFzZTxUPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfYmFzZTxUW05dPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFycmF5X2Jhc2U8VD46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X3RvdGFsIHsKLSAgICAgICAgICAgIGVudW0gewotICAgICAgICAgICAgICAgIHNpemUgPSAxCi0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfdG90YWw8VFtOXT4gewotICAgICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICAgICAgc2l6ZSA9IE4gKiBhcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi0gICAgICAgIHN0cnVjdCBhcnJheV9pbm5lcjsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X2lubmVyPFRbXT4gewotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgIHN0cnVjdCBhcnJheV9pbm5lcjxUW05dPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3V0aWxpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3V0aWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Njk2MzY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV91dGlsaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcyAKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgCi0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfVVRJTElUWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9VVElMSVRZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2Rlc3Ryb3koVCosIHN0ZDo6c2l6ZV90LCBuZG5ib29zdDo6dHJ1ZV90eXBlKSB7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfZGVzdHJveShUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIG5kbmJvb3N0OjpmYWxzZV90eXBlKSB7Ci0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSBzaXplOyBpID4gMDsgKSB7Ci0gICAgICAgICAgICAgICAgbWVtb3J5Wy0taV0uflQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9kZXN0cm95KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD4gdHlwZTsKLSAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBzaXplLCB0eXBlKTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgbmRuYm9vc3Q6OnRydWVfdHlwZSkgewotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIG1lbW9yeVtpXSA9IFQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgbmRuYm9vc3Q6OmZhbHNlX3R5cGUpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVCgpOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yPFQ+IHR5cGU7ICAgICAgICAgICAgCi0gICAgICAgICAgICBhcnJheV9pbml0KG1lbW9yeSwgc2l6ZSwgdHlwZSk7Ci0gICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdF92YWx1ZShUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIFQmJiB2YWx1ZSkgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQodmFsdWUpOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXRfYXJncyhUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGFyZ3MuLi4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBpKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGFyZ3MuLi4pOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXRfbGlzdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIGNvbnN0IFQqIGxpc3QpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQobGlzdFtpXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQobGlzdFtpXSk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0X2xpc3QoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBjb25zdCBUKiBsaXN0KSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGxpc3RbaSAlIE5dKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVChsaXN0W2kgJSBOXSk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9ub2luaXQoVCosIHN0ZDo6c2l6ZV90LCBuZG5ib29zdDo6dHJ1ZV90eXBlKSB7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfbm9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgbmRuYm9vc3Q6OmZhbHNlX3R5cGUpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQ7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9ub2luaXQoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjxUPiB0eXBlOwotICAgICAgICAgICAgYXJyYXlfbm9pbml0KG1lbW9yeSwgc2l6ZSwgdHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1NWYyNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudC5ocHAgLSB0aHJlYWQvU01QIHNhZmUgcmVmZXJlbmNlIGNvdW50ZXIKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICB0eXBlZGVmIDxpbXBsZW1lbnRhdGlvbi1kZWZpbmVkPiBuZG5ib29zdDo6ZGV0YWlsOjphdG9taWNfY291bnQ7Ci0vLwotLy8gIGF0b21pY19jb3VudCBhKG4pOwotLy8KLS8vICAgIChuIGlzIGNvbnZlcnRpYmxlIHRvIGxvbmcpCi0vLwotLy8gICAgRWZmZWN0czogQ29uc3RydWN0cyBhbiBhdG9taWNfY291bnQgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIG4KLS8vCi0vLyAgYTsKLS8vCi0vLyAgICBSZXR1cm5zOiAobG9uZykgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYQotLy8KLS8vICArK2E7Ci0vLwotLy8gICAgRWZmZWN0czogQXRvbWljYWxseSBpbmNyZW1lbnRzIHRoZSB2YWx1ZSBvZiBhCi0vLyAgICBSZXR1cm5zOiAobG9uZykgdGhlIG5ldyB2YWx1ZSBvZiBhCi0vLwotLy8gIC0tYTsKLS8vCi0vLyAgICBFZmZlY3RzOiBBdG9taWNhbGx5IGRlY3JlbWVudHMgdGhlIHZhbHVlIG9mIGEKLS8vICAgIFJldHVybnM6IChsb25nKSB0aGUgbmV3IHZhbHVlIG9mIGEKLS8vCi0vLyAgICBJbXBvcnRhbnQgbm90ZTogd2hlbiAtLWEgcmV0dXJucyB6ZXJvLCBpdCBtdXN0IGFjdCBhcyBhCi0vLyAgICAgIHJlYWQgbWVtb3J5IGJhcnJpZXIgKFJNQik7IGkuZS4gdGhlIGNhbGxpbmcgdGhyZWFkIG11c3QKLS8vICAgICAgaGF2ZSBhIHN5bmNocm9uaXplZCB2aWV3IG9mIHRoZSBtZW1vcnkKLS8vCi0vLyAgICBPbiBJbnRlbCBJQS0zMiAoeDg2KSBtZW1vcnkgaXMgYWx3YXlzIHN5bmNocm9uaXplZCwgc28gdGhpcwotLy8gICAgICBpcyBub3QgYSBwcm9ibGVtLgotLy8KLS8vICAgIE9uIG1hbnkgYXJjaGl0ZWN0dXJlcyB0aGUgYXRvbWljIGluc3RydWN0aW9ucyBhbHJlYWR5IGFjdCBhcwotLy8gICAgICBhIG1lbW9yeSBiYXJyaWVyLgotLy8KLS8vICAgIFRoaXMgcHJvcGVydHkgaXMgbmVjZXNzYXJ5IGZvciBwcm9wZXIgcmVmZXJlbmNlIGNvdW50aW5nLCBzaW5jZQotLy8gICAgICBhIHRocmVhZCBjYW4gdXBkYXRlIHRoZSBjb250ZW50cyBvZiBhIHNoYXJlZCBvYmplY3QsIHRoZW4KLS8vICAgICAgcmVsZWFzZSBpdHMgcmVmZXJlbmNlLCBhbmQgYW5vdGhlciB0aHJlYWQgbWF5IGltbWVkaWF0ZWx5Ci0vLyAgICAgIHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlIGNhdXNpbmcgb2JqZWN0IGRlc3RydWN0aW9uLgotLy8KLS8vICAgIFRoZSBkZXN0cnVjdG9yIG5lZWRzIHRvIGhhdmUgYSBzeW5jaHJvbml6ZWQgdmlldyBvZiB0aGUKLS8vICAgICAgb2JqZWN0IHRvIHBlcmZvcm0gcHJvcGVyIGNsZWFudXAuCi0vLwotLy8gICAgT3JpZ2luYWwgZXhhbXBsZSBieSBBbGV4YW5kZXIgVGVyZWtob3Y6Ci0vLwotLy8gICAgR2l2ZW46Ci0vLwotLy8gICAgLSBhIG11dGFibGUgc2hhcmVkIG9iamVjdCBPQko7Ci0vLyAgICAtIHR3byB0aHJlYWRzIFRIUkVBRDEgYW5kIFRIUkVBRDIgZWFjaCBob2xkaW5nIAotLy8gICAgICBhIHByaXZhdGUgc21hcnRfcHRyIG9iamVjdCBwb2ludGluZyB0byB0aGF0IE9CSi4KLS8vCi0vLyAgICB0MTogVEhSRUFEMSB1cGRhdGVzIE9CSiAodGhyZWFkLXNhZmUgdmlhIHNvbWUgc3luY2hyb25pemF0aW9uKQotLy8gICAgICBhbmQgYSBmZXcgY3ljbGVzIGxhdGVyIChhZnRlciAidW5sb2NrIikgZGVzdHJveXMgc21hcnRfcHRyOwotLy8KLS8vICAgIHQyOiBUSFJFQUQyIGRlc3Ryb3lzIHNtYXJ0X3B0ciBXSVRIT1VUIGRvaW5nIGFueSBzeW5jaHJvbml6YXRpb24gCi0vLyAgICAgIHdpdGggcmVzcGVjdCB0byBzaGFyZWQgbXV0YWJsZSBvYmplY3QgT0JKOyBPQkogZGVzdHJ1Y3RvcnMKLS8vICAgICAgYXJlIGNhbGxlZCBkcml2ZW4gYnkgc21hcnRfcHRyIGludGVyZmFjZS4uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdHlwZWRlZiBsb25nIGF0b21pY19jb3VudDsKLQotfQotCi19Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQUNfVVNFX1BUSFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19pMzg2X18gKSB8fCBkZWZpbmVkKCBfX3g4Nl82NF9fICkgKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfd2luMzIuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9IQVNfU1lOQyApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9zeW5jLmhwcD4KLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQUNfVVNFX1BUSFJFQURTCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHA+Ci0KLSNlbHNlCi0KLS8vIFVzZSAjZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyB0byBhdm9pZCB0aGUgZXJyb3IKLSNlcnJvciBVbnJlY29nbml6ZWQgdGhyZWFkaW5nIHBsYXRmb3JtCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcyMGNkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfR0NDX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcAotLy8KLS8vICBhdG9taWNfY291bnQgZm9yIEdOVSBsaWJzdGRjKysgdjMKLS8vCi0vLyAgaHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvcG9ydGluZy9UaHJlYWQtc2FmZXR5Lmh0bWwKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIExhcnMgR3VsbGlrIEJq+G5uZXMgPGxhcnNiakBseXgub3JnPgotLy8gIENvcHlyaWdodCAyMDAzLTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWYgX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA+PSA0MDIKLSMgaW5jbHVkZSA8ZXh0L2F0b21pY2l0eS5oPiAKLSNlbHNlIAotIyBpbmNsdWRlIDxiaXRzL2F0b21pY2l0eS5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSAvLyBnKysgMy40KwotCi11c2luZyBfX2dudV9jeHg6Ol9fYXRvbWljX2FkZDsKLXVzaW5nIF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRkOwotCi0jZW5kaWYKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQoIGxvbmcgdiApIDogdmFsdWVfKCB2ICkge30KLQotICAgIGxvbmcgb3BlcmF0b3IrKygpCi0gICAgewotICAgICAgICByZXR1cm4gX19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCArMSApICsgMTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yLS0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgLTEgKSAtIDE7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgbG9uZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gX19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCAwICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgYXRvbWljX2NvdW50KGF0b21pY19jb3VudCBjb25zdCAmKTsKLSAgICBhdG9taWNfY291bnQgJiBvcGVyYXRvcj0oYXRvbWljX2NvdW50IGNvbnN0ICYpOwotCi0gICAgbXV0YWJsZSBfQXRvbWljX3dvcmQgdmFsdWVfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGIxZTFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19YODZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19YODZfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcAotLy8KLS8vICBhdG9taWNfY291bnQgZm9yIGcrKyBvbiA0ODYrL0FNRDY0Ci0vLwotLy8gIENvcHlyaWdodCAyMDA3IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQoIGxvbmcgdiApIDogdmFsdWVfKCBzdGF0aWNfY2FzdDwgaW50ID4oIHYgKSApIHt9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCArMSApICsgMTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yLS0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCAtMSApIC0gMTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBsb25nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgMCApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudChhdG9taWNfY291bnQgY29uc3QgJik7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KGF0b21pY19jb3VudCBjb25zdCAmKTsKLQotICAgIG11dGFibGUgaW50IHZhbHVlXzsKLQotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBpbnQgYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoIGludCAqIHB3LCBpbnQgZHYgKQotICAgIHsKLSAgICAgICAgLy8gaW50IHIgPSAqcHc7Ci0gICAgICAgIC8vICpwdyArPSBkdjsKLSAgICAgICAgLy8gcmV0dXJuIHI7Ci0KLSAgICAgICAgaW50IHI7Ci0KLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAgICAgKAotICAgICAgICAgICAgImxvY2tcblx0IgotICAgICAgICAgICAgInhhZGQgJTEsICUwIjoKLSAgICAgICAgICAgICIrbSIoICpwdyApLCAiPXIiKCByICk6IC8vIG91dHB1dHMgKCUwLCAlMSkKLSAgICAgICAgICAgICIxIiggZHYgKTogLy8gaW5wdXRzICglMiA9PSAlMSkKLSAgICAgICAgICAgICJtZW1vcnkiLCAiY2MiIC8vIGNsb2JiZXJzCi0gICAgICAgICk7Ci0KLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19YODZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3B0aHJlYWRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjBjYmU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9QVEhSRUFEU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfUFRIUkVBRFNfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotLy8KLS8vICBUaGUgZ2VuZXJpYyBwdGhyZWFkX211dGV4LWJhc2VkIGltcGxlbWVudGF0aW9uIHNvbWV0aW1lcyBsZWFkcyB0bwotLy8gICAgaW5lZmZpY2llbmNpZXMuIEV4YW1wbGU6IGEgY2xhc3Mgd2l0aCB0d28gYXRvbWljX2NvdW50IG1lbWJlcnMKLS8vICAgIGNhbiBnZXQgYXdheSB3aXRoIGEgc2luZ2xlIG11dGV4LgotLy8KLS8vICBVc2VycyBjYW4gZGV0ZWN0IHRoaXMgc2l0dWF0aW9uIGJ5IGNoZWNraW5nIE5ETkJPT1NUX0FDX1VTRV9QVEhSRUFEUy4KLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGF0b21pY19jb3VudAotewotcHJpdmF0ZToKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHB1YmxpYzoKLQotICAgICAgICBzY29wZWRfbG9jayhwdGhyZWFkX211dGV4X3QgJiBtKTogbV8obSkKLSAgICAgICAgewotICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbV8pOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdCAmIG1fOwotICAgIH07Ci0KLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IGF0b21pY19jb3VudChsb25nIHYpOiB2YWx1ZV8odikKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCAwKTsKLSAgICB9Ci0KLSAgICB+YXRvbWljX2NvdW50KCkKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgc2NvcGVkX2xvY2sgbG9jayhtdXRleF8pOwotICAgICAgICByZXR1cm4gKyt2YWx1ZV87Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIHNjb3BlZF9sb2NrIGxvY2sobXV0ZXhfKTsKLSAgICAgICAgcmV0dXJuIC0tdmFsdWVfOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGxvbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgc2NvcGVkX2xvY2sgbG9jayhtdXRleF8pOwotICAgICAgICByZXR1cm4gdmFsdWVfOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudChhdG9taWNfY291bnQgY29uc3QgJik7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KGF0b21pY19jb3VudCBjb25zdCAmKTsKLQotICAgIG11dGFibGUgcHRocmVhZF9tdXRleF90IG11dGV4XzsKLSAgICBsb25nIHZhbHVlXzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9QVEhSRUFEU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfc3luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3N5bmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTFmYTQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfc3luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1NZTkNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1NZTkNfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF9zeW5jLmhwcAotLy8KLS8vICBhdG9taWNfY291bnQgZm9yIGcrKyA0LjErCi0vLwotLy8gIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00LjEuMS9nY2MvQXRvbWljLUJ1aWx0aW5zLmh0bWwKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDcgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWYgZGVmaW5lZCggX19pYTY0X18gKSAmJiBkZWZpbmVkKCBfX0lOVEVMX0NPTVBJTEVSICkKLSMgaW5jbHVkZSA8aWE2NGludHJpbi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGF0b21pY19jb3VudAotewotcHVibGljOgotCi0gICAgZXhwbGljaXQgYXRvbWljX2NvdW50KCBsb25nIHYgKSA6IHZhbHVlXyggdiApIHt9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fc3luY19hZGRfYW5kX2ZldGNoKCAmdmFsdWVfLCAxICk7Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX3N5bmNfYWRkX2FuZF9mZXRjaCggJnZhbHVlXywgLTEgKTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBsb25nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX3N5bmNfZmV0Y2hfYW5kX2FkZCggJnZhbHVlXywgMCApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudChhdG9taWNfY291bnQgY29uc3QgJik7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KGF0b21pY19jb3VudCBjb25zdCAmKTsKLQotICAgIG11dGFibGUgbG9uZyB2YWx1ZV87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfU1lOQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfd2luMzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzJiMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1dJTjMyX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9XSU4zMl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQoIGxvbmcgdiApOiB2YWx1ZV8oIHYgKQotICAgIHsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCggJnZhbHVlXyApOwotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3ItLSgpCi0gICAgewotICAgICAgICByZXR1cm4gTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UKCAmdmFsdWVfICk7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgbG9uZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBjb25zdCB2b2xhdGlsZSAmPiggdmFsdWVfICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgYXRvbWljX2NvdW50KCBhdG9taWNfY291bnQgY29uc3QgJiApOwotICAgIGF0b21pY19jb3VudCAmIG9wZXJhdG9yPSggYXRvbWljX2NvdW50IGNvbnN0ICYgKTsKLQotICAgIGxvbmcgdmFsdWVfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1dJTjMyX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YWFjZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcCAtIGxpZ2h0d2VpZ2h0IG11dGV4Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgdHlwZWRlZiA8dW5zcGVjaWZpZWQ+IG5kbmJvb3N0OjpkZXRhaWw6OmxpZ2h0d2VpZ2h0X211dGV4OwotLy8KLS8vICBuZG5ib29zdDo6ZGV0YWlsOjpsaWdodHdlaWdodF9tdXRleCBpcyBhIGhlYWRlci1vbmx5IGltcGxlbWVudGF0aW9uIG9mCi0vLyAgYSBzdWJzZXQgb2YgdGhlIE11dGV4IGNvbmNlcHQgcmVxdWlyZW1lbnRzOgotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9kb2MvaHRtbC90aHJlYWRzL2NvbmNlcHRzLmh0bWwjdGhyZWFkcy5jb25jZXB0cy5NdXRleAotLy8KLS8vICBJdCBtYXBzIHRvIGEgQ1JJVElDQUxfU0VDVElPTiBvbiBXaW5kb3dzIG9yIGEgcHRocmVhZF9tdXRleCBvbiBQT1NJWC4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1RIUkVBRFMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9ub3AuaHBwPgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9wdGhyZWFkcy5ocHA+Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKSB8fCBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcD4KLSNlbHNlCi0vLyBVc2UgI2RlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMgdG8gYXZvaWQgdGhlIGVycm9yCi0jICBlcnJvciBVbnJlY29nbml6ZWQgdGhyZWFkaW5nIHBsYXRmb3JtCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fbm9wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fbm9wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJmNTZjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX25vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX05PUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fTk9QX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbHdtX25vcC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgbGlnaHR3ZWlnaHRfbXV0ZXgKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgbGlnaHR3ZWlnaHRfbXV0ZXggc2NvcGVkX2xvY2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fTk9QX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9wdGhyZWFkcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZhNjBjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fUFRIUkVBRFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1BUSFJFQURTX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGxpZ2h0d2VpZ2h0X211dGV4Ci17Ci1wcml2YXRlOgotCi0gICAgcHRocmVhZF9tdXRleF90IG1fOwotCi0gICAgbGlnaHR3ZWlnaHRfbXV0ZXgobGlnaHR3ZWlnaHRfbXV0ZXggY29uc3QgJik7Ci0gICAgbGlnaHR3ZWlnaHRfbXV0ZXggJiBvcGVyYXRvcj0obGlnaHR3ZWlnaHRfbXV0ZXggY29uc3QgJik7Ci0KLXB1YmxpYzoKLQotICAgIGxpZ2h0d2VpZ2h0X211dGV4KCkKLSAgICB7Ci0KLS8vIEhQVVggMTAuMjAgLyBEQ0UgaGFzIGEgbm9uc3RhbmRhcmQgcHRocmVhZF9tdXRleF9pbml0Ci0KLSNpZiBkZWZpbmVkKF9faHB1eCkgJiYgZGVmaW5lZChfREVDVEhSRUFEU18pCi0gICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF9pbml0KCAmbV8sIHB0aHJlYWRfbXV0ZXhhdHRyX2RlZmF1bHQgKSA9PSAwICk7Ci0jZWxzZQotICAgICAgICBORE5CT09TVF9WRVJJRlkoIHB0aHJlYWRfbXV0ZXhfaW5pdCggJm1fLCAwICkgPT0gMCApOwotI2VuZGlmCi0gICAgfQotCi0gICAgfmxpZ2h0d2VpZ2h0X211dGV4KCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF9kZXN0cm95KCAmbV8gKSA9PSAwICk7Ci0gICAgfQotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0gICAgZnJpZW5kIGNsYXNzIHNjb3BlZF9sb2NrOwotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBwdGhyZWFkX211dGV4X3QgJiBtXzsKLQotICAgICAgICBzY29wZWRfbG9jayhzY29wZWRfbG9jayBjb25zdCAmKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oc2NvcGVkX2xvY2sgY29uc3QgJik7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgc2NvcGVkX2xvY2sobGlnaHR3ZWlnaHRfbXV0ZXggJiBtKTogbV8obS5tXykKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfVkVSSUZZKCBwdGhyZWFkX211dGV4X2xvY2soICZtXyApID09IDAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApID09IDAgKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fUFRIUkVBRFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fd2luMzJfY3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2RlZjk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fd2luMzJfY3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fV0lOMzJfQ1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1dJTjMyX0NTX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWZkZWYgTkROQk9PU1RfVVNFX1dJTkRPV1NfSAotIyAgaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZm5kZWYgTkROQk9PU1RfVVNFX1dJTkRPV1NfSAotCi1zdHJ1Y3QgY3JpdGljYWxfc2VjdGlvbgotewotICAgIHN0cnVjdCBjcml0aWNhbF9zZWN0aW9uX2RlYnVnICogRGVidWdJbmZvOwotICAgIGxvbmcgTG9ja0NvdW50OwotICAgIGxvbmcgUmVjdXJzaW9uQ291bnQ7Ci0gICAgdm9pZCAqIE93bmluZ1RocmVhZDsKLSAgICB2b2lkICogTG9ja1NlbWFwaG9yZTsKLSNpZiBkZWZpbmVkKF9XSU42NCkKLSAgICB1bnNpZ25lZCBfX2ludDY0IFNwaW5Db3VudDsKLSNlbHNlCi0gICAgdW5zaWduZWQgbG9uZyBTcGluQ291bnQ7Ci0jZW5kaWYKLX07Ci0KLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbiAqKTsKLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIEVudGVyQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb24gKik7Ci1leHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fc3RkY2FsbCBMZWF2ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uICopOwotZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNhbGwgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb24gKik7Ci0KLSNlbHNlCi0KLXR5cGVkZWYgOjpDUklUSUNBTF9TRUNUSU9OIGNyaXRpY2FsX3NlY3Rpb247Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0gKLQotY2xhc3MgbGlnaHR3ZWlnaHRfbXV0ZXgKLXsKLXByaXZhdGU6Ci0KLSAgICBjcml0aWNhbF9zZWN0aW9uIGNzXzsKLQotICAgIGxpZ2h0d2VpZ2h0X211dGV4KGxpZ2h0d2VpZ2h0X211dGV4IGNvbnN0ICYpOwotICAgIGxpZ2h0d2VpZ2h0X211dGV4ICYgb3BlcmF0b3I9KGxpZ2h0d2VpZ2h0X211dGV4IGNvbnN0ICYpOwotCi1wdWJsaWM6Ci0KLSAgICBsaWdodHdlaWdodF9tdXRleCgpCi0gICAgewotICAgICAgICBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZjc18pOwotICAgIH0KLQotICAgIH5saWdodHdlaWdodF9tdXRleCgpCi0gICAgewotICAgICAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJmNzXyk7Ci0gICAgfQotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0gICAgZnJpZW5kIGNsYXNzIHNjb3BlZF9sb2NrOwotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBsaWdodHdlaWdodF9tdXRleCAmIG1fOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKHNjb3BlZF9sb2NrIGNvbnN0ICYpOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPShzY29wZWRfbG9jayBjb25zdCAmKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayhsaWdodHdlaWdodF9tdXRleCAmIG0pOiBtXyhtKQotICAgICAgICB7Ci0gICAgICAgICAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmbV8uY3NfKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZtXy5jc18pOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9XSU4zMl9DU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9tYWtlX2FycmF5X2hlbHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbWFrZV9hcnJheV9oZWxwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDViNjAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9tYWtlX2FycmF5X2hlbHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMgCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX01BS0VfQVJSQVlfSEVMUEVSX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX01BS0VfQVJSQVlfSEVMUEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgWSA9IGNoYXI+Ci0gICAgICAgIGNsYXNzIG1ha2VfYXJyYXlfaGVscGVyOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBZPgotICAgICAgICBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFk+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBZMj4KLSAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiBZICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBZKiAgICAgICAgICBwb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBZKiAgICBjb25zdF9wb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBZJiAgICAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IFkmICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+IG90aGVyOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIG1ha2VfYXJyYXlfaGVscGVyKHN0ZDo6c2l6ZV90IHNpemVfLCBUKiogZGF0YV8pCi0gICAgICAgICAgICAgICAgOiBzaXplKHNpemVvZihUKSAqIHNpemVfKSwKLSAgICAgICAgICAgICAgICAgIGRhdGEoZGF0YV8pIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgICAgICBtYWtlX2FycmF5X2hlbHBlcihjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+JiBvdGhlcikgCi0gICAgICAgICAgICAgICAgOiBzaXplKG90aGVyLnNpemUpLAotICAgICAgICAgICAgICAgICAgZGF0YShvdGhlci5kYXRhKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZ2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oLTEpIC8gc2l6ZW9mKFkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgY291bnQsIGNvbnN0IHZvaWQqID0gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICB2b2lkKiAgcDEgPSA6Om9wZXJhdG9yIG5ldyhuMSArIHNpemUpOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMiA9IHN0YXRpY19jYXN0PGNoYXIqPihwMSkgKyBuMTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc3RkOjpzaXplX3QocDIpICUgYTEgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwMi0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHAyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIHJlaW50ZXJwcmV0X2Nhc3Q8WSo+KHAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIG1lbW9yeSwgc2l6ZV90eXBlKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnk7Ci0gICAgICAgICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBtZW1vcnksIGNvbnN0IFkmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFkodmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZXN0cm95KHBvaW50ZXIgbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgbWVtb3J5LT5+WSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+JikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgCi0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBzaXplOwotICAgICAgICAgICAgVCoqIGRhdGE7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIFk+Ci0gICAgICAgIGNsYXNzIG1ha2VfYXJyYXlfaGVscGVyPFRbTl0sIFk+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBZMj4KLSAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiBZICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBZKiAgICAgICAgICBwb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBZKiAgICBjb25zdF9wb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBZJiAgICAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IFkmICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBtYWtlX2FycmF5X2hlbHBlcjxUW05dLCBVPiBvdGhlcjsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBtYWtlX2FycmF5X2hlbHBlcihUKiogZGF0YV8pCi0gICAgICAgICAgICAgICAgOiBkYXRhKGRhdGFfKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgbWFrZV9hcnJheV9oZWxwZXIoY29uc3QgbWFrZV9hcnJheV9oZWxwZXI8VFtOXSwgVT4mIG90aGVyKSAKLSAgICAgICAgICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAmdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZ2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KC0xKSAvIHNpemVvZihZKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWxsb2NhdGUoc2l6ZV90eXBlIGNvdW50LCBjb25zdCB2b2lkKiA9IDApIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgdm9pZCogIHAxID0gOjpvcGVyYXRvciBuZXcobjEgKyBOMSk7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHAxKSArIG4xOwotICAgICAgICAgICAgICAgIHdoaWxlIChzdGQ6OnNpemVfdChwMikgJSBhMSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAyLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4ocDIpOwotICAgICAgICAgICAgICAgIHJldHVybiAgcmVpbnRlcnByZXRfY2FzdDxZKj4ocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgbWVtb3J5LCBzaXplX3R5cGUpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeTsKLSAgICAgICAgICAgICAgICA6Om9wZXJhdG9yIGRlbGV0ZShwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIG1lbW9yeSwgY29uc3QgWSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgWSh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBtZW1vcnktPn5ZKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1ha2VfYXJyYXlfaGVscGVyPFRbTl0sIFU+JikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW05dLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IAotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICAgICAgTjEgPSBOICogc2l6ZW9mKFQpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgVCoqIGRhdGE7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5ZWZmNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vLyAgVGhpcyBoZWFkZXIgaW50ZW50aW9uYWxseSBoYXMgbm8gaW5jbHVkZSBndWFyZHMuCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA5LCAyMDEyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wgKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCAhPSAwOwotICAgIH0KLQotI2VsaWYgKCBkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8IDB4NTcwKSApIHx8IGRlZmluZWQoX19DSU5UX18pCi0KLSAgICBvcGVyYXRvciBib29sICgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggIT0gMDsKLSAgICB9Ci0KLSNlbGlmIGRlZmluZWQoIF9NQU5BR0VEICkKLQotICAgIHN0YXRpYyB2b2lkIHVuc3BlY2lmaWVkX2Jvb2woIHRoaXNfdHlwZSoqKiApCi0gICAgewotICAgIH0KLQotICAgIHR5cGVkZWYgdm9pZCAoKnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkoIHRoaXNfdHlwZSoqKiApOwotCi0gICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSAwPyAwOiB1bnNwZWNpZmllZF9ib29sOwotICAgIH0KLQotI2VsaWYgXAotICAgICggZGVmaW5lZChfX01XRVJLU19fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMjAwKSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fIDwgMzA0KSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDw9IDB4NTkwKSApCi0KLSAgICB0eXBlZGVmIGVsZW1lbnRfdHlwZSAqICh0aGlzX3R5cGU6Oip1bnNwZWNpZmllZF9ib29sX3R5cGUpKCkgY29uc3Q7Ci0KLSAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ID09IDA/IDA6ICZ0aGlzX3R5cGU6OmdldDsKLSAgICB9Ci0KLSNlbHNlCi0KLSAgICB0eXBlZGVmIGVsZW1lbnRfdHlwZSAqIHRoaXNfdHlwZTo6KnVuc3BlY2lmaWVkX2Jvb2xfdHlwZTsKLQotICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggPT0gMD8gMDogJnRoaXNfdHlwZTo6cHg7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vIG9wZXJhdG9yISBpcyByZWR1bmRhbnQsIGJ1dCBzb21lIGNvbXBpbGVycyBuZWVkIGl0Ci0gICAgYm9vbCBvcGVyYXRvciEgKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSAwOwotICAgIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9xdWlja19hbGxvY2F0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3F1aWNrX2FsbG9jYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZjA2NjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3F1aWNrX2FsbG9jYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1FVSUNLX0FMTE9DQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9RVUlDS19BTExPQ0FUT1JfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9xdWlja19hbGxvY2F0b3IuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMyBEYXZpZCBBYnJhaGFtcwotLy8gIENvcHlyaWdodCAoYykgMjAwMyBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLQotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgICAgIC8vIDo6b3BlcmF0b3IgbmV3LCA6Om9wZXJhdG9yIGRlbGV0ZQotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIHN0ZDo6c2l6ZV90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4gdW5pb24gZnJlZWJsb2NrCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV93aXRoX2FsaWdubWVudDxhbGlnbl8+Ojp0eXBlIGFsaWduZXJfdHlwZTsKLSAgICBhbGlnbmVyX3R5cGUgYWxpZ25lcjsKLSAgICBjaGFyIGJ5dGVzW3NpemVdOwotICAgIGZyZWVibG9jayAqIG5leHQ7Ci19OwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+IHN0cnVjdCBhbGxvY2F0b3JfaW1wbAotewotICAgIHR5cGVkZWYgZnJlZWJsb2NrPHNpemUsIGFsaWduXz4gYmxvY2s7Ci0KLSAgICAvLyBJdCBtYXkgc2VlbSBvZGQgdG8gdXNlIHN1Y2ggc21hbGwgcGFnZXMuCi0gICAgLy8KLSAgICAvLyBIb3dldmVyLCBvbiBhIHR5cGljYWwgV2luZG93cyBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMKLSAgICAvLyB0aGUgT1MgYWxsb2NhdG9yLCAibm9ybWFsIHNpemUiIHBhZ2VzIGludGVyYWN0IHdpdGggdGhlCi0gICAgLy8gIm9yZGluYXJ5IiBvcGVyYXRvciBuZXcsIHNsb3dpbmcgaXQgZG93biBkcmFtYXRpY2FsbHkuCi0gICAgLy8KLSAgICAvLyA1MTIgYnl0ZSBwYWdlcyBhcmUgaGFuZGxlZCBieSB0aGUgc21hbGwgb2JqZWN0IGFsbG9jYXRvciwKLSAgICAvLyBhbmQgZG9uJ3QgaW50ZXJmZXJlIHdpdGggOjpuZXcuCi0gICAgLy8KLSAgICAvLyBUaGUgb3RoZXIgYWx0ZXJuYXRpdmUgaXMgdG8gdXNlIG11Y2ggYmlnZ2VyIHBhZ2VzICgxTS4pCi0gICAgLy8KLSAgICAvLyBJdCBpcyBzdXJwcmlzaW5nbHkgZWFzeSB0byBoaXQgcGF0aG9sb2dpY2FsIGJlaGF2aW9yIGJ5Ci0gICAgLy8gdmFyeWluZyB0aGUgcGFnZSBzaXplLiBnKysgMi45NiBvbiBSZWQgSGF0IExpbnV4IDcuMiwKLSAgICAvLyBmb3IgZXhhbXBsZSwgcGFzc2lvbmF0ZWx5IGRpc2xpa2VzIDQ5Ni4gNTEyIHNlZW1zIE9LLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9RQV9QQUdFX1NJWkUpCi0KLSAgICBlbnVtIHsgaXRlbXNfcGVyX3BhZ2UgPSBORE5CT09TVF9RQV9QQUdFX1NJWkUgLyBzaXplIH07Ci0KLSNlbHNlCi0KLSAgICBlbnVtIHsgaXRlbXNfcGVyX3BhZ2UgPSA1MTIgLyBzaXplIH07IC8vIDEwNDg1NjAgLyBzaXplCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLQotICAgIHN0YXRpYyBsaWdodHdlaWdodF9tdXRleCAmIG11dGV4KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBmcmVlYmxvY2s8IHNpemVvZiggbGlnaHR3ZWlnaHRfbXV0ZXggKSwgbmRuYm9vc3Q6OmFsaWdubWVudF9vZjwgbGlnaHR3ZWlnaHRfbXV0ZXggPjo6dmFsdWUgPiBmYm07Ci0gICAgICAgIHN0YXRpYyBsaWdodHdlaWdodF9tdXRleCAqIHBtID0gbmV3KCAmZmJtICkgbGlnaHR3ZWlnaHRfbXV0ZXg7Ci0gICAgICAgIHJldHVybiAqcG07Ci0gICAgfQotCi0gICAgc3RhdGljIGxpZ2h0d2VpZ2h0X211dGV4ICogbXV0ZXhfaW5pdDsKLQotI2VuZGlmCi0KLSAgICBzdGF0aWMgYmxvY2sgKiBmcmVlOwotICAgIHN0YXRpYyBibG9jayAqIHBhZ2U7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxhc3Q7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgKiBhbGxvYygpCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICAgIGxpZ2h0d2VpZ2h0X211dGV4OjpzY29wZWRfbG9jayBsb2NrKCBtdXRleCgpICk7Ci0jZW5kaWYKLSAgICAgICAgaWYoYmxvY2sgKiB4ID0gZnJlZSkKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZSA9IHgtPm5leHQ7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKGxhc3QgPT0gaXRlbXNfcGVyX3BhZ2UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gIkxpc3RlbiB0byBtZSBjYXJlZnVsbHk6IHRoZXJlIGlzIG5vIG1lbW9yeSBsZWFrIgotICAgICAgICAgICAgICAgIC8vIC0tIFNjb3R0IE1leWVycywgRWZmIEMrKyAybmQgRWQgSXRlbSAxMAotICAgICAgICAgICAgICAgIHBhZ2UgPSA6Om5ldyBibG9ja1tpdGVtc19wZXJfcGFnZV07Ci0gICAgICAgICAgICAgICAgbGFzdCA9IDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiAmcGFnZVtsYXN0KytdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB2b2lkICogYWxsb2Moc3RkOjpzaXplX3QgbikKLSAgICB7Ci0gICAgICAgIGlmKG4gIT0gc2l6ZSkgLy8gY2xhc3Mtc3BlY2lmaWMgbmV3IGNhbGxlZCBmb3IgYSBkZXJpdmVkIG9iamVjdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpvcGVyYXRvciBuZXcobik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgICAgICAgIGxpZ2h0d2VpZ2h0X211dGV4OjpzY29wZWRfbG9jayBsb2NrKCBtdXRleCgpICk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGlmKGJsb2NrICogeCA9IGZyZWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZnJlZSA9IHgtPm5leHQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYobGFzdCA9PSBpdGVtc19wZXJfcGFnZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UgPSA6Om5ldyBibG9ja1tpdGVtc19wZXJfcGFnZV07Ci0gICAgICAgICAgICAgICAgICAgIGxhc3QgPSAwOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiAmcGFnZVtsYXN0KytdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGRlYWxsb2Modm9pZCAqIHB2KQotICAgIHsKLSAgICAgICAgaWYocHYgIT0gMCkgLy8gMTguNC4xLjEvMTMKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICAgICAgICBsaWdodHdlaWdodF9tdXRleDo6c2NvcGVkX2xvY2sgbG9jayggbXV0ZXgoKSApOwotI2VuZGlmCi0gICAgICAgICAgICBibG9jayAqIHBiID0gc3RhdGljX2Nhc3Q8YmxvY2sgKj4ocHYpOwotICAgICAgICAgICAgcGItPm5leHQgPSBmcmVlOwotICAgICAgICAgICAgZnJlZSA9IHBiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGRlYWxsb2Modm9pZCAqIHB2LCBzdGQ6OnNpemVfdCBuKQotICAgIHsKLSAgICAgICAgaWYobiAhPSBzaXplKSAvLyBjbGFzcy1zcGVjaWZpYyBkZWxldGUgY2FsbGVkIGZvciBhIGRlcml2ZWQgb2JqZWN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKHB2KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHB2ICE9IDApIC8vIDE4LjQuMS4xLzEzCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgICAgICAgICAgbGlnaHR3ZWlnaHRfbXV0ZXg6OnNjb3BlZF9sb2NrIGxvY2soIG11dGV4KCkgKTsKLSNlbmRpZgotICAgICAgICAgICAgYmxvY2sgKiBwYiA9IHN0YXRpY19jYXN0PGJsb2NrICo+KHB2KTsKLSAgICAgICAgICAgIHBiLT5uZXh0ID0gZnJlZTsKLSAgICAgICAgICAgIGZyZWUgPSBwYjsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+Ci0gIGxpZ2h0d2VpZ2h0X211dGV4ICogYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6bXV0ZXhfaW5pdCA9ICZhbGxvY2F0b3JfaW1wbDxzaXplLCBhbGlnbl8+OjptdXRleCgpOwotCi0jZW5kaWYKLQotdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25fPgotICBmcmVlYmxvY2s8c2l6ZSwgYWxpZ25fPiAqIGFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46OmZyZWUgPSAwOwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+Ci0gIGZyZWVibG9jazxzaXplLCBhbGlnbl8+ICogYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6cGFnZSA9IDA7Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4KLSAgdW5zaWduZWQgYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6bGFzdCA9IGFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46Oml0ZW1zX3Blcl9wYWdlOwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHF1aWNrX2FsbG9jYXRvcjogcHVibGljIGFsbG9jYXRvcl9pbXBsPCBzaXplb2YoVCksIG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9RVUlDS19BTExPQ0FUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2FycmF5X25tdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2FycmF5X25tdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOTc2MzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9hcnJheV9ubXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQVJSQVlfTk1UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9BUlJBWV9OTVRfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NoYXJlZF9hcnJheV9ubXQuaHBwIC0gc2hhcmVkX2FycmF5LmhwcCB3aXRob3V0IG1lbWJlciB0ZW1wbGF0ZXMKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gZm9yIHN0ZDo6cHRyZGlmZl90Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgLy8gZm9yIHN0ZDo6c3dhcAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgIC8vIGZvciBzdGQ6Omxlc3MKLSNpbmNsdWRlIDxuZXc+ICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYWRfYWxsb2MKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNoYXJlZF9hcnJheQotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgZGV0YWlsOjphdG9taWNfY291bnQgY291bnRfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLSAgICAgIAotICAgIGV4cGxpY2l0IHNoYXJlZF9hcnJheShUICogcCA9IDApOiBweChwKQotICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeSAgLy8gcHJldmVudCBsZWFrIGlmIG5ldyB0aHJvd3MKLSAgICAgICAgewotICAgICAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCguLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZShwKTsKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsKLQotICAgICAgICBpZihwbiA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGUocCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6YmFkX2FsbG9jKCkpOwotICAgICAgICB9Ci0KLSNlbmRpZgotICAgIH0KLQotICAgIH5zaGFyZWRfYXJyYXkoKQotICAgIHsKLSAgICAgICAgaWYoLS0qcG4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKHB4KTsKLSAgICAgICAgICAgIGRlbGV0ZSBwbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNoYXJlZF9hcnJheShzaGFyZWRfYXJyYXkgY29uc3QgJiByKSA6IHB4KHIucHgpICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHBuID0gci5wbjsKLSAgICAgICAgKysqcG47Ci0gICAgfQotCi0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KHNoYXJlZF9hcnJheSBjb25zdCAmIHIpCi0gICAgewotICAgICAgICBzaGFyZWRfYXJyYXkocikuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0KFQgKiBwID0gMCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChwID09IDAgfHwgcCAhPSBweCk7Ci0gICAgICAgIHNoYXJlZF9hcnJheShwKS5zd2FwKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBUICogZ2V0KCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvcltdKHN0ZDo6cHRyZGlmZl90IGkpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGkgPj0gMCk7Ci0gICAgICAgIHJldHVybiBweFtpXTsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHJldHVybiAqcG47Ci0gICAgfQotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gKnBuID09IDE7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHNoYXJlZF9hcnJheTxUPiAmIG90aGVyKSAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgc3RkOjpzd2FwKHBuLCBvdGhlci5wbik7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgVCAqIHB4OyAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgY291bnRfdHlwZSAqIHBuOyAgIC8vIHB0ciB0byByZWZlcmVuY2UgY291bnRlcgotICAgICAgCi19OyAgLy8gc2hhcmVkX2FycmF5Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFU+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxVPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bGVzczxUKj4oKShhLmdldCgpLCBiLmdldCgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwKHNoYXJlZF9hcnJheTxUPiAmIGEsIHNoYXJlZF9hcnJheTxUPiAmIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQVJSQVlfTk1UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9jb3VudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhNzE5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwMyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX0NPVU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9DT1VOVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NoYXJlZF9jb3VudC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgcHJhZ21hIHdhcm4gLTgwMjcgICAgIC8vIEZ1bmN0aW9ucyBjb250YWluaW5nIHRyeSBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9iYWRfd2Vha19wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotLy8gSW4gb3JkZXIgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIHdpdGggQm9vc3QuVFIxCi0vLyB3ZSBtYWtlIHN1cmUgdGhhdCBvdXIgaW5jbHVkZSBvZiA8bWVtb3J5PiBkb2Vzbid0IHRyeSB0bwotLy8gcHVsbCBpbiB0aGUgVFIxIGhlYWRlcnM6IHRoYXQncyB3aHkgd2UgdXNlIHRoaXMgaGVhZGVyIAotLy8gcmF0aGVyIHRoYW4gaW5jbHVkaW5nIDxtZW1vcnk+IGRpcmVjdGx5OgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvbWVtb3J5LmhwcD4gIC8vIHN0ZDo6YXV0b19wdHIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAvLyBzdGQ6Omxlc3MKLQotI2lmZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSMgaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgLy8gc3RkOjpiYWRfYWxsb2MKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0KLWludCBjb25zdCBzaGFyZWRfY291bnRfaWQgPSAweDJDMzVGMTAxOwotaW50IGNvbnN0ICAgd2Vha19jb3VudF9pZCA9IDB4Mjk4QzM4QTQ7Ci0KLSNlbmRpZgotCi1zdHJ1Y3Qgc3Bfbm90aHJvd190YWcge307Ci0KLXRlbXBsYXRlPCBjbGFzcyBEID4gc3RydWN0IHNwX2lucGxhY2VfdGFnCi17Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gY2xhc3Mgc3BfcmVmZXJlbmNlX3dyYXBwZXIKLXsgCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBzcF9yZWZlcmVuY2Vfd3JhcHBlciggVCAmIHQpOiB0XyggbmRuYm9vc3Q6OmFkZHJlc3NvZiggdCApICkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFkgPiB2b2lkIG9wZXJhdG9yKCkoIFkgKiBwICkgY29uc3QKLSAgICB7Ci0gICAgICAgICgqdF8pKCBwICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgVCAqIHRfOwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIEQgPiBzdHJ1Y3Qgc3BfY29udmVydF9yZWZlcmVuY2UKLXsKLSAgICB0eXBlZGVmIEQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBEID4gc3RydWN0IHNwX2NvbnZlcnRfcmVmZXJlbmNlPCBEJiA+Ci17Ci0gICAgdHlwZWRlZiBzcF9yZWZlcmVuY2Vfd3JhcHBlcjwgRCA+IHR5cGU7Ci19OwotCi0jZW5kaWYKLQotY2xhc3Mgd2Vha19jb3VudDsKLQotY2xhc3Mgc2hhcmVkX2NvdW50Ci17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlICogcGlfOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgaW50IGlkXzsKLSNlbmRpZgotCi0gICAgZnJpZW5kIGNsYXNzIHdlYWtfY291bnQ7Ci0KLXB1YmxpYzoKLQotICAgIHNoYXJlZF9jb3VudCgpOiBwaV8oMCkgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZXhwbGljaXQgc2hhcmVkX2NvdW50KCBZICogcCApOiBwaV8oIDAgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wPFk+KCBwICk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoIHAgKTsKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wPFk+KCBwICk7Ci0KLSAgICAgICAgaWYoIHBpXyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKCBwICk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBzdGQ6OmJhZF9hbGxvYygpICk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0gICAgfQotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDw9IDEyMDAgKQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+IHNoYXJlZF9jb3VudCggWSAqIHAsIEQgZCApOiBwaV8oMCkKLSNlbHNlCi0gICAgdGVtcGxhdGU8Y2xhc3MgUCwgY2xhc3MgRD4gc2hhcmVkX2NvdW50KCBQIHAsIEQgZCApOiBwaV8oMCkKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDw9IDEyMDAgKQotICAgICAgICB0eXBlZGVmIFkqIFA7Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3BkPFAsIEQ+KHAsIGQpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgZChwKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDxQLCBEPihwLCBkKTsKLQotICAgICAgICBpZihwaV8gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZChwKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpiYWRfYWxsb2MoKSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBQLCBjbGFzcyBEID4gc2hhcmVkX2NvdW50KCBQIHAsIHNwX2lucGxhY2VfdGFnPEQ+ICk6IHBpXyggMCApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3BkPCBQLCBEID4oIHAgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCggLi4uICkKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDwgUCwgRCA+KCBwICk7Ci0KLSAgICAgICAgaWYoIHBpXyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFAsIGNsYXNzIEQsIGNsYXNzIEE+IHNoYXJlZF9jb3VudCggUCBwLCBEIGQsIEEgYSApOiBwaV8oIDAgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc3BfY291bnRlZF9pbXBsX3BkYTxQLCBELCBBPiBpbXBsX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPCBpbXBsX3R5cGUgPjo6b3RoZXIgQTI7Ci0KLSAgICAgICAgQTIgYTIoIGEgKTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHBpXyA9IGEyLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCAwICkgKTsKLSAgICAgICAgICAgIG5ldyggc3RhdGljX2Nhc3Q8IHZvaWQqID4oIHBpXyApICkgaW1wbF90eXBlKCBwLCBkLCBhICk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBkKCBwICk7Ci0KLSAgICAgICAgICAgIGlmKCBwaV8gIT0gMCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYTIuZGVhbGxvY2F0ZSggc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggcGlfICksIDEgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwaV8gPSBhMi5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggMCApICk7Ci0KLSAgICAgICAgaWYoIHBpXyAhPSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3KCBzdGF0aWNfY2FzdDwgdm9pZCogPiggcGlfICkgKSBpbXBsX3R5cGUoIHAsIGQsIGEgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGQoIHAgKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcgKQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFAsIGNsYXNzIEQsIGNsYXNzIEEgPiBzaGFyZWRfY291bnQoIFAgcCwgc3BfaW5wbGFjZV90YWc8IEQgPiwgQSBhICk6IHBpXyggMCApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcGRhPCBQLCBELCBBID4gaW1wbF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDwgaW1wbF90eXBlID46Om90aGVyIEEyOwotCi0gICAgICAgIEEyIGEyKCBhICk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBhMi5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggMCApICk7Ci0gICAgICAgICAgICBuZXcoIHN0YXRpY19jYXN0PCB2b2lkKiA+KCBwaV8gKSApIGltcGxfdHlwZSggcCwgYSApOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsKLQotICAgICAgICAgICAgaWYoIHBpXyAhPSAwICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhMi5kZWFsbG9jYXRlKCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCBwaV8gKSwgMSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBpXyA9IGEyLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCAwICkgKTsKLQotICAgICAgICBpZiggcGlfICE9IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcoIHN0YXRpY19jYXN0PCB2b2lkKiA+KCBwaV8gKSApIGltcGxfdHlwZSggcCwgYSApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgLy8gYXV0b19wdHI8WT4gaXMgc3BlY2lhbCBjYXNlZCB0byBwcm92aWRlIHRoZSBzdHJvbmcgZ3VhcmFudGVlCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9jb3VudCggc3RkOjphdXRvX3B0cjxZPiAmIHIgKTogcGlfKCBuZXcgc3BfY291bnRlZF9pbXBsX3A8WT4oIHIuZ2V0KCkgKSApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgaWYoIHBpXyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmJhZF9hbGxvYygpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLQotICAgICAgICByLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSNlbmRpZiAKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4KLSAgICBleHBsaWNpdCBzaGFyZWRfY291bnQoIHN0ZDo6dW5pcXVlX3B0cjxZLCBEPiAmIHIgKTogcGlfKCAwICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNwX2NvbnZlcnRfcmVmZXJlbmNlPEQ+Ojp0eXBlIEQyOwotCi0gICAgICAgIEQyIGQyKCByLmdldF9kZWxldGVyKCkgKTsKLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDwgdHlwZW5hbWUgc3RkOjp1bmlxdWVfcHRyPFksIEQ+Ojpwb2ludGVyLCBEMiA+KCByLmdldCgpLCBkMiApOwotCi0jaWZkZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIGlmKCBwaV8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLQotICAgICAgICByLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgfnNoYXJlZF9jb3VudCgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBwaV8gIT0gMCApIHBpXy0+cmVsZWFzZSgpOwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBpZF8gPSAwOwotI2VuZGlmCi0gICAgfQotCi0gICAgc2hhcmVkX2NvdW50KHNoYXJlZF9jb3VudCBjb25zdCAmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICBpZiggcGlfICE9IDAgKSBwaV8tPmFkZF9yZWZfY29weSgpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICBzaGFyZWRfY291bnQoc2hhcmVkX2NvdW50ICYmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICByLnBpXyA9IDA7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIGV4cGxpY2l0IHNoYXJlZF9jb3VudCh3ZWFrX2NvdW50IGNvbnN0ICYgcik7IC8vIHRocm93cyBiYWRfd2Vha19wdHIgd2hlbiByLnVzZV9jb3VudCgpID09IDAKLSAgICBzaGFyZWRfY291bnQoIHdlYWtfY291bnQgY29uc3QgJiByLCBzcF9ub3Rocm93X3RhZyApOyAvLyBjb25zdHJ1Y3RzIGFuIGVtcHR5ICp0aGlzIHdoZW4gci51c2VfY291bnQoKSA9PSAwCi0KLSAgICBzaGFyZWRfY291bnQgJiBvcGVyYXRvcj0gKHNoYXJlZF9jb3VudCBjb25zdCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotCi0gICAgICAgIGlmKCB0bXAgIT0gcGlfICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYoIHRtcCAhPSAwICkgdG1wLT5hZGRfcmVmX2NvcHkoKTsKLSAgICAgICAgICAgIGlmKCBwaV8gIT0gMCApIHBpXy0+cmVsZWFzZSgpOwotICAgICAgICAgICAgcGlfID0gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChzaGFyZWRfY291bnQgJiByKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcF9jb3VudGVkX2Jhc2UgKiB0bXAgPSByLnBpXzsKLSAgICAgICAgci5waV8gPSBwaV87Ci0gICAgICAgIHBpXyA9IHRtcDsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBwaV8gIT0gMD8gcGlfLT51c2VfY291bnQoKTogMDsKLSAgICB9Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiB1c2VfY291bnQoKSA9PSAxOwotICAgIH0KLQotICAgIGJvb2wgZW1wdHkoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfID09IDA7Ci0gICAgfQotCi0gICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX2NvdW50IGNvbnN0ICYgYSwgc2hhcmVkX2NvdW50IGNvbnN0ICYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLnBpXyA9PSBiLnBpXzsKLSAgICB9Ci0KLSAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9jb3VudCBjb25zdCAmIGEsIHNoYXJlZF9jb3VudCBjb25zdCAmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpsZXNzPHNwX2NvdW50ZWRfYmFzZSAqPigpKCBhLnBpXywgYi5waV8gKTsKLSAgICB9Ci0KLSAgICB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXz8gcGlfLT5nZXRfZGVsZXRlciggdGkgKTogMDsKLSAgICB9Ci0KLSAgICB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfPyBwaV8tPmdldF91bnR5cGVkX2RlbGV0ZXIoKTogMDsKLSAgICB9Ci19OwotCi0KLWNsYXNzIHdlYWtfY291bnQKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UgKiBwaV87Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICBpbnQgaWRfOwotI2VuZGlmCi0KLSAgICBmcmllbmQgY2xhc3Mgc2hhcmVkX2NvdW50OwotCi1wdWJsaWM6Ci0KLSAgICB3ZWFrX2NvdW50KCk6IHBpXygwKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHdlYWtfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0gICAgd2Vha19jb3VudChzaGFyZWRfY291bnQgY29uc3QgJiByKTogcGlfKHIucGlfKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHdlYWtfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIGlmKHBpXyAhPSAwKSBwaV8tPndlYWtfYWRkX3JlZigpOwotICAgIH0KLQotICAgIHdlYWtfY291bnQod2Vha19jb3VudCBjb25zdCAmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8od2Vha19jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19hZGRfcmVmKCk7Ci0gICAgfQotCi0vLyBNb3ZlIHN1cHBvcnQKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB3ZWFrX2NvdW50KHdlYWtfY291bnQgJiYgcik6IHBpXyhyLnBpXykgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyh3ZWFrX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICByLnBpXyA9IDA7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIH53ZWFrX2NvdW50KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19yZWxlYXNlKCk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIGlkXyA9IDA7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB3ZWFrX2NvdW50ICYgb3BlcmF0b3I9IChzaGFyZWRfY291bnQgY29uc3QgJiByKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcF9jb3VudGVkX2Jhc2UgKiB0bXAgPSByLnBpXzsKLQotICAgICAgICBpZiggdG1wICE9IHBpXyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRtcCAhPSAwKSB0bXAtPndlYWtfYWRkX3JlZigpOwotICAgICAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19yZWxlYXNlKCk7Ci0gICAgICAgICAgICBwaV8gPSB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgd2Vha19jb3VudCAmIG9wZXJhdG9yPSAod2Vha19jb3VudCBjb25zdCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotCi0gICAgICAgIGlmKCB0bXAgIT0gcGlfICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYodG1wICE9IDApIHRtcC0+d2Vha19hZGRfcmVmKCk7Ci0gICAgICAgICAgICBpZihwaV8gIT0gMCkgcGlfLT53ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgICAgIHBpXyA9IHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAod2Vha19jb3VudCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotICAgICAgICByLnBpXyA9IHBpXzsKLSAgICAgICAgcGlfID0gdG1wOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXyAhPSAwPyBwaV8tPnVzZV9jb3VudCgpOiAwOwotICAgIH0KLQotICAgIGJvb2wgZW1wdHkoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfID09IDA7Ci0gICAgfQotCi0gICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPT0od2Vha19jb3VudCBjb25zdCAmIGEsIHdlYWtfY291bnQgY29uc3QgJiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEucGlfID09IGIucGlfOwotICAgIH0KLQotICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcjwod2Vha19jb3VudCBjb25zdCAmIGEsIHdlYWtfY291bnQgY29uc3QgJiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bGVzczxzcF9jb3VudGVkX2Jhc2UgKj4oKShhLnBpXywgYi5waV8pOwotICAgIH0KLX07Ci0KLWlubGluZSBzaGFyZWRfY291bnQ6OnNoYXJlZF9jb3VudCggd2Vha19jb3VudCBjb25zdCAmIHIgKTogcGlfKCByLnBpXyApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotewotICAgIGlmKCBwaV8gPT0gMCB8fCAhcGlfLT5hZGRfcmVmX2xvY2soKSApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBuZG5ib29zdDo6YmFkX3dlYWtfcHRyKCkgKTsKLSAgICB9Ci19Ci0KLWlubGluZSBzaGFyZWRfY291bnQ6OnNoYXJlZF9jb3VudCggd2Vha19jb3VudCBjb25zdCAmIHIsIHNwX25vdGhyb3dfdGFnICk6IHBpXyggci5waV8gKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLXsKLSAgICBpZiggcGlfICE9IDAgJiYgIXBpXy0+YWRkX3JlZl9sb2NrKCkgKQotICAgIHsKLSAgICAgICAgcGlfID0gMDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jIHByYWdtYSB3YXJuIC44MDI3ICAgICAvLyBGdW5jdGlvbnMgY29udGFpbmluZyB0cnkgYXJlIG5vdCBleHBhbmRlZCBpbmxpbmUKLSNlbmRpZgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQ09VTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9wdHJfbm10LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjczNjhiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfUFRSX05NVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfUFRSX05NVF9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwIC0gc2hhcmVkX3B0ci5ocHAgd2l0aG91dCBtZW1iZXIgdGVtcGxhdGVzCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX3B0ci5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLSMgaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAvLyBmb3Igc3RkOjphdXRvX3B0cgotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAvLyBmb3Igc3RkOjpzd2FwCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gICAgICAgLy8gZm9yIHN0ZDo6bGVzcwotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhZF9hbGxvYwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2hhcmVkX3B0cgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgZGV0YWlsOjphdG9taWNfY291bnQgY291bnRfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLQotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoVCAqIHAgPSAwKTogcHgocCkKLSAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkgIC8vIHByZXZlbnQgbGVhayBpZiBuZXcgdGhyb3dzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBuID0gbmV3IGNvdW50X3R5cGUoMSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUocCk7Ci0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBuID0gbmV3IGNvdW50X3R5cGUoMSk7Ci0KLSAgICAgICAgaWYocG4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKHApOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmJhZF9hbGxvYygpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICB9Ci0KLSAgICB+c2hhcmVkX3B0cigpCi0gICAgewotICAgICAgICBpZigtLSpwbiA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUocHgpOwotICAgICAgICAgICAgZGVsZXRlIHBuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2hhcmVkX3B0cihzaGFyZWRfcHRyIGNvbnN0ICYgcik6IHB4KHIucHgpICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHBuID0gci5wbjsKLSAgICAgICAgKysqcG47Ci0gICAgfQotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPShzaGFyZWRfcHRyIGNvbnN0ICYgcikKLSAgICB7Ci0gICAgICAgIHNoYXJlZF9wdHIocikuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLQotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoc3RkOjphdXRvX3B0cjxUPiAmIHIpCi0gICAgeyAKLSAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsgLy8gbWF5IHRocm93Ci0gICAgICAgIHB4ID0gci5yZWxlYXNlKCk7IC8vIGZpeDogbW92ZWQgaGVyZSB0byBzdG9wIGxlYWsgaWYgbmV3IHRocm93cwotICAgIH0gCi0KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KHN0ZDo6YXV0b19wdHI8VD4gJiByKQotICAgIHsKLSAgICAgICAgc2hhcmVkX3B0cihyKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB2b2lkIHJlc2V0KFQgKiBwID0gMCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChwID09IDAgfHwgcCAhPSBweCk7Ci0gICAgICAgIHNoYXJlZF9wdHIocCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgVCAmIG9wZXJhdG9yKigpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgcmV0dXJuICpweDsKLSAgICB9Ci0KLSAgICBUICogb3BlcmF0b3ItPigpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotICAgIFQgKiBnZXQoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gKnBuOwotICAgIH0KLQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuICpwbiA9PSAxOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN3YXAoc2hhcmVkX3B0cjxUPiAmIG90aGVyKSAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgc3RkOjpzd2FwKHBuLCBvdGhlci5wbik7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgVCAqIHB4OyAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgY291bnRfdHlwZSAqIHBuOyAgIC8vIHB0ciB0byByZWZlcmVuY2UgY291bnRlcgotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxVPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxVPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gc3RkOjpsZXNzPFQqPigpKGEuZ2V0KCksIGIuZ2V0KCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAoc2hhcmVkX3B0cjxUPiAmIGEsIHNoYXJlZF9wdHI8VD4gJiBiKQotewotICAgIGEuc3dhcChiKTsKLX0KLQotLy8gZ2V0X3BvaW50ZXIoKSBlbmFibGVzIG5kbmJvb3N0OjptZW1fZm4gdG8gcmVjb2duaXplIHNoYXJlZF9wdHIKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIFQgKiBnZXRfcG9pbnRlcihzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCkKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX1BUUl9OTVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY29udmVydGlibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvbnZlcnRpYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4YjZiMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY29udmVydGlibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb252ZXJ0aWJsZS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApICYmIGRlZmluZWQoIE5ETkJPT1NUX05PX1NGSU5BRSApCi0jIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKSAmJiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA8IDMwMyApCi0jIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKSAmJiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiAoIF9fQk9STEFORENfXyA8IDB4NjMwICkKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPCBjbGFzcyBZLCBjbGFzcyBUID4gc3RydWN0IHNwX2NvbnZlcnRpYmxlCi17Ci0gICAgdHlwZWRlZiBjaGFyICgmeWVzKSBbMV07Ci0gICAgdHlwZWRlZiBjaGFyICgmbm8pICBbMl07Ci0KLSAgICBzdGF0aWMgeWVzIGYoIFQqICk7Ci0gICAgc3RhdGljIG5vICBmKCAuLi4gKTsKLQotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBzaXplb2YoIChmKSggc3RhdGljX2Nhc3Q8WSo+KDApICkgKSA9PSBzaXplb2YoeWVzKSB9OwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfY29udmVydGlibGU8IFksIFRbXSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IGZhbHNlIH07Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgWSwgY2xhc3MgVCA+IHN0cnVjdCBzcF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBzcF9jb252ZXJ0aWJsZTwgWVsxXSwgVFsxXSA+Ojp2YWx1ZSB9OwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFksIHN0ZDo6c2l6ZV90IE4sIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfY29udmVydGlibGU8IFlbTl0sIFRbXSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IHNwX2NvbnZlcnRpYmxlPCBZWzFdLCBUWzFdID46OnZhbHVlIH07Ci19OwotCi1zdHJ1Y3Qgc3BfZW1wdHkKLXsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IHNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZV9pbXBsOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzcF9lbmFibGVfaWZfY29udmVydGlibGVfaW1wbDx0cnVlPgotewotICAgIHR5cGVkZWYgc3BfZW1wdHkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZV9pbXBsPGZhbHNlPgotewotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlOiBwdWJsaWMgc3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlX2ltcGw8IHNwX2NvbnZlcnRpYmxlPCBZLCBUID46OnZhbHVlID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDdmODJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCi0vLwotLy8gIENvcHlyaWdodCAyMDA1LCAyMDA2IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHA+Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9ESVNBQkxFX1RIUkVBRFMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX1NQX1VTRV9TUElOTE9DSyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9VU0VfUFRIUkVBRFMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9TUF9FTkFCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9ESVNBQkxFX1dJTjMyICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX1NOQ19fICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX2kzODZfXyApIHx8IGRlZmluZWQoIF9feDg2XzY0X18gKSApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwPgotCi0jZWxpZiBkZWZpbmVkKF9fSFBfYUNDKSAmJiBkZWZpbmVkKF9faWE2NCkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWNjX2lhNjQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmIGRlZmluZWQoIF9faWE2NF9fICkgJiYgIWRlZmluZWQoIF9fSU5URUxfQ09NUElMRVIgKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fSUJNQ1BQX18gKSAmJiBkZWZpbmVkKCBfX3Bvd2VycGMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV92YWNwcF9wcGMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX01XRVJLU19fICkgJiYgZGVmaW5lZCggX19QT1dFUlBDX18gKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19wb3dlcnBjX18gKSB8fCBkZWZpbmVkKCBfX3BwY19fICkgfHwgZGVmaW5lZCggX19wcGMgKSApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pICYmICFkZWZpbmVkKCBfQUlYICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX21pcHNfXyApIHx8IGRlZmluZWQoIF9taXBzICkgKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX1NQX0hBU19TWU5DICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICggZGVmaW5lZCggX19zcGFyY3Y5ICkgfHwgKCBkZWZpbmVkKCBfX3NwYXJjdjggKSAmJiAoIF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPj0gNDAyICkgKSApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19zcGFyYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIFdJTjMyICkgfHwgZGVmaW5lZCggX1dJTjMyICkgfHwgZGVmaW5lZCggX19XSU4zMl9fICkgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfQUlYICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcD4KLQotI2VsaWYgIWRlZmluZWQoIE5ETkJPT1NUX0hBU19USFJFQURTICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwPgotCi0jZWxzZQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zcGluLmhwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWNjX2lhNjQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZmFjZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9BQ0NfSUE2NF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUNDX0lBNjRfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHAgLSBhQysrIG9uIEhQLVVYIElBNjQKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDcgQmFydWNoIFppbGJlcgotLy8gIENvcHlyaWdodCAyMDA3IEJvcmlzIEd1YmVua28KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8bWFjaGluZS9zeXMvaW5saW5lLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyArKypwdzsKLQotICAgIF9Bc21fZmV0Y2hhZGQoX0ZBU1pfVywgX1NFTV9SRUwsIHB3LCArMSwgX0xESElOVF9OT05FKTsKLX0gCi0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludCByID0gc3RhdGljX2Nhc3Q8aW50PihfQXNtX2ZldGNoYWRkKF9GQVNaX1csIF9TRU1fUkVMLCBwdywgLTEsIF9MREhJTlRfTk9ORSkpOwotICAgIGlmICgxID09IHIpCi0gICAgewotICAgICAgICBfQXNtX21mKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByIC0gMTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludCB2ID0gKnB3OwotICAgIAotICAgIGZvciAoOzspCi0gICAgewotICAgICAgICBpZiAoMCA9PSB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgX0FzbV9tb3ZfdG9fYXIoX0FSRUdfQ0NWLAotICAgICAgICAgICAgICAgICAgICAgICB2LAotICAgICAgICAgICAgICAgICAgICAgICAoX1VQX0NBTExfRkVOQ0UgfCBfVVBfU1lTX0ZFTkNFIHwgX0RPV05fQ0FMTF9GRU5DRSB8IF9ET1dOX1NZU19GRU5DRSkpOwotICAgICAgICBpbnQgciA9IHN0YXRpY19jYXN0PGludD4oX0FzbV9jbXB4Y2hnKF9TWl9XLCBfU0VNX0FDUSwgcHcsIHYgKyAxLCBfTERISU5UX05PTkUpKTsKLSAgICAgICAgaWYgKHIgPT0gdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHIgKyAxOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2ID0gcjsKLSAgICB9Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsgLy8gVE9ETyB1c2UgbGQuYWNxIGhlcmUKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FDQ19JQTY0X0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9haXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9haXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2I3Y2ZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FJWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUlYX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcAotLy8gICBiYXNlZCBvbjogZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgMjAwNiBNaWNoYWVsIHZhbiBkZXIgV2VzdGh1aXplbgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxidWlsdGlucy5oPgotI2luY2x1ZGUgPHN5cy9hdG9taWNfb3AuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50MzJfdCogcHcgKQotewotICAgIC8vICsrKnB3OwotCi0gICAgZmV0Y2hfYW5kX2FkZCggcHcsIDEgKTsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2RlY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyByZXR1cm4gLS0qcHc7Ci0KLSAgICBpbnQzMl90IG9yaWdpbmFsVmFsdWU7Ci0KLSAgICBfX2x3c3luYygpOwotICAgIG9yaWdpbmFsVmFsdWUgPSBmZXRjaF9hbmRfYWRkKCBwdywgLTEgKTsKLSAgICBfX2lzeW5jKCk7Ci0KLSAgICByZXR1cm4gKG9yaWdpbmFsVmFsdWUgLSAxKTsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gKnB3OwotCi0gICAgaW50MzJfdCB0bXAgPSBmZXRjaF9hbmRfYWRkKCBwdywgMCApOwotICAgIGZvciggOzsgKQotICAgIHsKLSAgICAgICAgaWYoIHRtcCA9PSAwICkgcmV0dXJuIDA7Ci0gICAgICAgIGlmKCBjb21wYXJlX2FuZF9zd2FwKCBwdywgJnRtcCwgdG1wICsgMSApICkgcmV0dXJuICh0bXAgKyAxKTsKLSAgICB9Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50MzJfdCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludDMyX3Qgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIGZldGNoX2FuZF9hZGQoIGNvbnN0X2Nhc3Q8aW50MzJfdCo+KCZ1c2VfY291bnRfKSwgMCApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUlYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDE5NmJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfY3dfcHBjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0NXX1BQQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQ1dfUFBDX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2N3X3BwYy5ocHAgLSBDb2RlV2FycmlvciBvbiBQb3dlclBDCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIHJlZ2lzdGVyIGxvbmcgKiBwdyApCi17Ci0gICAgcmVnaXN0ZXIgaW50IGE7Ci0KLSAgICBhc20KLSAgICB7Ci1sb29wOgotCi0gICAgbHdhcnggICBhLCAwLCBwdwotICAgIGFkZGkgICAgYSwgYSwgMQotICAgIHN0d2N4LiAgYSwgMCwgcHcKLSAgICBibmUtICAgIGxvb3AKLSAgICB9Ci19Ci0KLWlubGluZSBsb25nIGF0b21pY19kZWNyZW1lbnQoIHJlZ2lzdGVyIGxvbmcgKiBwdyApCi17Ci0gICAgcmVnaXN0ZXIgaW50IGE7Ci0KLSAgICBhc20KLSAgICB7Ci0gICAgc3luYwotCi1sb29wOgotCi0gICAgbHdhcnggICBhLCAwLCBwdwotICAgIGFkZGkgICAgYSwgYSwgLTEKLSAgICBzdHdjeC4gIGEsIDAsIHB3Ci0gICAgYm5lLSAgICBsb29wCi0KLSAgICBpc3luYwotICAgIH0KLQotICAgIHJldHVybiBhOwotfQotCi1pbmxpbmUgbG9uZyBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCByZWdpc3RlciBsb25nICogcHcgKQotewotICAgIHJlZ2lzdGVyIGludCBhOwotCi0gICAgYXNtCi0gICAgewotbG9vcDoKLQotICAgIGx3YXJ4ICAgYSwgMCwgcHcKLSAgICBjbXB3aSAgIGEsIDAKLSAgICBiZXEgICAgIHN0b3JlCi0KLSAgICBhZGRpICAgIGEsIGEsIDEKLQotc3RvcmU6Ci0KLSAgICBzdHdjeC4gIGEsIDAsIHB3Ci0gICAgYm5lLSAgICBsb29wCi0gICAgfQotCi0gICAgcmV0dXJuIGE7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgbG9uZyB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGxvbmcgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0NXX1BQQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX2lhNjQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZmMyOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfSUE2NF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX0lBNjRfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHAgLSBnKysgb24gSUE2NAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA2IFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IDIwMDUgQmVuIEh1dGNoaW5ncwotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vICsrKnB3OwotCi0gICAgaW50IHRtcDsKLQotICAgIC8vIE5vIGJhcnJpZXIgaXMgcmVxdWlyZWQgaGVyZSBidXQgZmV0Y2hhZGQgYWx3YXlzIGhhcyBhbiBhY3F1aXJlIG9yCi0gICAgLy8gcmVsZWFzZSBiYXJyaWVyIGFzc29jaWF0ZWQgd2l0aCBpdC4gIFdlIGNob29zZSByZWxlYXNlIGFzIGl0IHNob3VsZCBiZQotICAgIC8vIGNoZWFwZXIuCi0gICAgX19hc21fXyAoImZldGNoYWRkNC5yZWwgJTA9JTEsMSIgOgotICAgICAgICAgIj1yIih0bXApLCAiPW0iKCpwdykgOgotICAgICAgICAgIm0iKCAqcHcgKSk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludCBydjsKLQotICAgIF9fYXNtX18gKCIgICAgIGZldGNoYWRkNC5yZWwgJTA9JTEsLTEgOzsgXG4iCi0gICAgICAgICAgICAgIiAgICAgY21wLmVxICAgICAgICBwNyxwMD0xLCUwIDs7IFxuIgotICAgICAgICAgICAgICIocDcpIGxkNC5hY3EgICAgICAgJTA9JTEgICAgIiA6Ci0gICAgICAgICAgICAgIj0mciIocnYpLCAiPW0iKCpwdykgOgotICAgICAgICAgICAgICJtIiggKnB3ICkgOgotICAgICAgICAgICAgICJwNyIpOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gKnB3OwotCi0gICAgaW50IHJ2LCB0bXAsIHRtcDI7Ci0KLSAgICBfX2FzbV9fICgiMDogICBsZDQgICAgICAgICAgJTA9JTMgICAgICAgICAgIDs7IFxuIgotICAgICAgICAgIiAgICAgY21wLmVxICAgICAgIHA3LHAwPTAsJTAgICAgICAgIDs7IFxuIgotICAgICAgICAgIihwNykgYnIuY29uZC5zcG50IDFmICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAgIiAgICAgbW92ICAgICAgICAgIGFyLmNjdj0lMCAgICAgICAgIFxuIgotICAgICAgICAgIiAgICAgYWRkICAgICAgICAgICUxPTEsJTAgICAgICAgICAgIDs7IFxuIgotICAgICAgICAgIiAgICAgY21weGNoZzQuYWNxICUyPSUzLCUxLGFyLmNjdiA7OyBcbiIKLSAgICAgICAgICIgICAgIGNtcC5uZSAgICAgICBwNyxwMD0lMCwlMiAgICAgICA7OyBcbiIKLSAgICAgICAgICIocDcpIGJyLmNvbmQuc3BudCAwYiAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgICIgICAgIG1vdiAgICAgICAgICAlMD0lMSAgICAgICAgICAgICA7OyBcbiIKLSAgICAgICAgICIxOiIgOiAKLSAgICAgICAgICI9JnIiKHJ2KSwgIj0mciIodG1wKSwgIj0mciIodG1wMiksICI9bSIoKnB3KSA6Ci0gICAgICAgICAibSIoICpwdyApIDoKLSAgICAgICAgICJhci5jY3YiLCAicDciKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOyAvLyBUT0RPIHVzZSBsZC5hY3EgaGVyZQotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX0lBNjRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19taXBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX21pcHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JlMWRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX21pcHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfTUlQU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfTUlQU19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHAgLSBnKysgb24gTUlQUwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDksIFNwaXJlbnQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyArKypwdzsKLQotICAgIGludCB0bXA7Ci0KLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgIi5zZXQgcHVzaFxuXHQiCi0gICAgICAgICIuc2V0IG1pcHMyXG5cdCIKLSAgICAgICAgImxsICUwLCAlMVxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgMVxuXHQiCi0gICAgICAgICJzYyAlMCwgJTFcblx0IgotICAgICAgICAiLnNldCBwb3Bcblx0IgotICAgICAgICAiYmVxeiAlMCwgMGIiOgotICAgICAgICAiPSZyIiggdG1wICksICI9bSIoICpwdyApOgotICAgICAgICAibSIoICpwdyApCi0gICAgKTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfZGVjcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gcmV0dXJuIC0tKnB3OwotCi0gICAgaW50IHJ2LCB0bXA7Ci0KLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgIi5zZXQgcHVzaFxuXHQiCi0gICAgICAgICIuc2V0IG1pcHMyXG5cdCIKLSAgICAgICAgImxsICUxLCAlMlxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgJTEsIC0xXG5cdCIKLSAgICAgICAgInNjICUwLCAlMlxuXHQiCi0gICAgICAgICIuc2V0IHBvcFxuXHQiCi0gICAgICAgICJiZXF6ICUwLCAwYlxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgJTEsIC0xIjoKLSAgICAgICAgIj0mciIoIHJ2ICksICI9JnIiKCB0bXAgKSwgIj1tIiggKnB3ICk6Ci0gICAgICAgICJtIiggKnB3ICk6Ci0gICAgICAgICJtZW1vcnkiCi0gICAgKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludCBydiwgdG1wOwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAoCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICIuc2V0IHB1c2hcblx0IgotICAgICAgICAiLnNldCBtaXBzMlxuXHQiCi0gICAgICAgICJsbCAlMCwgJTJcblx0IgotICAgICAgICAiYmVxeiAlMCwgMWZcblx0IgotICAgICAgICAiYWRkaXUgJTEsICUwLCAxXG5cdCIKLSAgICAgICAgInNjICUxLCAlMlxuXHQiCi0gICAgICAgICIuc2V0IHBvcFxuXHQiCi0gICAgICAgICJiZXF6ICUxLCAwYlxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgJTAsIDFcblx0IgotICAgICAgICAiMToiOgotICAgICAgICAiPSZyIiggcnYgKSwgIj0mciIoIHRtcCApLCAiPW0iKCAqcHcgKToKLSAgICAgICAgIm0iKCAqcHcgKToKLSAgICAgICAgIm1lbW9yeSIKLSAgICApOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19NSVBTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfcHBjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxYjZlZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfcHBjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19QUENfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19QUENfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHAgLSBnKysgb24gUG93ZXJQQwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gKysqcHc7Ci0KLSAgICBpbnQgdG1wOwotCi0gICAgX19hc21fXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgImx3YXJ4ICUxLCAwLCAlMlxuXHQiCi0gICAgICAgICJhZGRpICUxLCAlMSwgMVxuXHQiCi0gICAgICAgICJzdHdjeC4gJTEsIDAsICUyXG5cdCIKLSAgICAgICAgImJuZS0gMGIiOgotCi0gICAgICAgICI9bSIoICpwdyApLCAiPSZiIiggdG1wICk6Ci0gICAgICAgICJyIiggcHcgKSwgIm0iKCAqcHcgKToKLSAgICAgICAgImNjIgotICAgICk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludCBydjsKLQotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0gICAgKAotICAgICAgICAic3luY1xuXHQiCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICJsd2FyeCAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYWRkaSAlMSwgJTEsIC0xXG5cdCIKLSAgICAgICAgInN0d2N4LiAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYm5lLSAwYlxuXHQiCi0gICAgICAgICJpc3luYyI6Ci0KLSAgICAgICAgIj1tIiggKnB3ICksICI9JmIiKCBydiApOgotICAgICAgICAiciIoIHB3ICksICJtIiggKnB3ICk6Ci0gICAgICAgICJtZW1vcnkiLCAiY2MiCi0gICAgKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludCBydjsKLQotICAgIF9fYXNtX18KLSAgICAoCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICJsd2FyeCAlMSwgMCwgJTJcblx0IgotICAgICAgICAiY21wd2kgJTEsIDBcblx0IgotICAgICAgICAiYmVxIDFmXG5cdCIKLSAgICAgICAgImFkZGkgJTEsICUxLCAxXG5cdCIKLSAgICAgICAgIjE6XG5cdCIKLSAgICAgICAgInN0d2N4LiAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYm5lLSAwYiI6Ci0KLSAgICAgICAgIj1tIiggKnB3ICksICI9JmIiKCBydiApOgotICAgICAgICAiciIoIHB3ICksICJtIiggKnB3ICk6Ci0gICAgICAgICJjYyIKLSAgICApOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfUFBDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmJhY2M3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19TUEFSQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1NQQVJDX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcCAtIGcrKyBvbiBTcGFyYyBWOCsKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFBpb3RyIFd5ZGVyc2tpCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFRvbWFzIFB1dmVybGUKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBUaGFua3MgdG8gTWljaGFlbCB2YW4gZGVyIFdlc3RodWl6ZW4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8aW50dHlwZXMuaD4gLy8gaW50MzJfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgaW50MzJfdCBjb21wYXJlX2FuZF9zd2FwKCBpbnQzMl90ICogZGVzdF8sIGludDMyX3QgY29tcGFyZV8sIGludDMyX3Qgc3dhcF8gKQotewotICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiY2FzIFslMV0sICUyLCAlMCIKLSAgICAgICAgICAgICAgICAgICAgICAgIDogIityIiAoc3dhcF8pCi0gICAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAoZGVzdF8pLCAiciIgKGNvbXBhcmVfKQotICAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5IiApOwotCi0gICAgcmV0dXJuIHN3YXBfOwotfQotCi1pbmxpbmUgaW50MzJfdCBhdG9taWNfZmV0Y2hfYW5kX2FkZCggaW50MzJfdCAqIHB3LCBpbnQzMl90IGR2ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gKnB3ICs9IGR2OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICBpbnQzMl90IHIgPSAqcHc7Ci0KLSAgICAgICAgaWYoIF9fYnVpbHRpbl9leHBlY3QoKGNvbXBhcmVfYW5kX3N3YXAocHcsIHIsIHIgKyBkdikgPT0gciksIDEpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludDMyX3QgKiBwdyApCi17Ci0gICAgYXRvbWljX2ZldGNoX2FuZF9hZGQoIHB3LCAxICk7Ci19Ci0KLWlubGluZSBpbnQzMl90IGF0b21pY19kZWNyZW1lbnQoIGludDMyX3QgKiBwdyApCi17Ci0gICAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmRfYWRkKCBwdywgLTEgKTsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gaWYoIHIgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICBpbnQzMl90IHIgPSAqcHc7Ci0KLSAgICAgICAgaWYoIHIgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIF9fYnVpbHRpbl9leHBlY3QoICggY29tcGFyZV9hbmRfc3dhcCggcHcsIHIsIHIgKyAxICkgPT0gciApLCAxICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotICAgIH0gICAgCi19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50MzJfdCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludDMyX3Qgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8IGludDMyX3QgY29uc3Qgdm9sYXRpbGUgJiA+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfU1BBUkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfeDg2LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3OWM1Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1g4Nl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1g4Nl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfeDg2LmhwcCAtIGcrKyBvbiA0ODYrIG9yIEFNRDY0Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSBpbnQgYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoIGludCAqIHB3LCBpbnQgZHYgKQotewotICAgIC8vIGludCByID0gKnB3OwotICAgIC8vICpwdyArPSBkdjsKLSAgICAvLyByZXR1cm4gcjsKLQotICAgIGludCByOwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAoCi0gICAgICAgICJsb2NrXG5cdCIKLSAgICAgICAgInhhZGQgJTEsICUwIjoKLSAgICAgICAgIj1tIiggKnB3ICksICI9ciIoIHIgKTogLy8gb3V0cHV0cyAoJTAsICUxKQotICAgICAgICAibSIoICpwdyApLCAiMSIoIGR2ICk6IC8vIGlucHV0cyAoJTIsICUzID09ICUxKQotICAgICAgICAibWVtb3J5IiwgImNjIiAvLyBjbG9iYmVycwotICAgICk7Ci0KLSAgICByZXR1cm4gcjsKLX0KLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoIHB3LCAxICk7Ci0KLSAgICBfX2FzbV9fCi0gICAgKAotICAgICAgICAibG9ja1xuXHQiCi0gICAgICAgICJpbmNsICUwIjoKLSAgICAgICAgIj1tIiggKnB3ICk6IC8vIG91dHB1dCAoJTApCi0gICAgICAgICJtIiggKnB3ICk6IC8vIGlucHV0ICglMSkKLSAgICAgICAgImNjIiAvLyBjbG9iYmVycwotICAgICk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIGludCBydiA9ICpwdzsKLSAgICAvLyBpZiggcnYgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiBydjsKLQotICAgIGludCBydiwgdG1wOwotCi0gICAgX19hc21fXwotICAgICgKLSAgICAgICAgIm1vdmwgJTAsICUlZWF4XG5cdCIKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgInRlc3QgJSVlYXgsICUlZWF4XG5cdCIKLSAgICAgICAgImplIDFmXG5cdCIKLSAgICAgICAgIm1vdmwgJSVlYXgsICUyXG5cdCIKLSAgICAgICAgImluY2wgJTJcblx0IgotICAgICAgICAibG9ja1xuXHQiCi0gICAgICAgICJjbXB4Y2hnbCAlMiwgJTBcblx0IgotICAgICAgICAiam5lIDBiXG5cdCIKLSAgICAgICAgIjE6IjoKLSAgICAgICAgIj1tIiggKnB3ICksICI9JmEiKCBydiApLCAiPSZyIiggdG1wICk6IC8vIG91dHB1dHMgKCUwLCAlMSwgJTIpCi0gICAgICAgICJtIiggKnB3ICk6IC8vIGlucHV0ICglMykKLSAgICAgICAgImNjIiAvLyBjbG9iYmVycwotICAgICk7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ1c2VfY291bnRfLCAtMSApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ3ZWFrX2NvdW50XywgLTEgKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfWDg2X0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA5NjdiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9OVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGxvbmcgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBsb25nIHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgKyt1c2VfY291bnRfOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICBpZiggdXNlX2NvdW50XyA9PSAwICkgcmV0dXJuIGZhbHNlOwotICAgICAgICArK3VzZV9jb3VudF87Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCAtLXVzZV9jb3VudF8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICArK3dlYWtfY291bnRfOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIC0td2Vha19jb3VudF8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHVzZV9jb3VudF87Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMzM0ZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9QVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfUFRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfcHQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgbG9uZyB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGxvbmcgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotICAgIG11dGFibGUgcHRocmVhZF9tdXRleF90IG1fOwotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotLy8gSFBVWCAxMC4yMCAvIERDRSBoYXMgYSBub25zdGFuZGFyZCBwdGhyZWFkX211dGV4X2luaXQKLQotI2lmIGRlZmluZWQoX19ocHV4KSAmJiBkZWZpbmVkKF9ERUNUSFJFQURTXykKLSAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCAmbV8sIHB0aHJlYWRfbXV0ZXhhdHRyX2RlZmF1bHQgKTsKLSNlbHNlCi0gICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCggJm1fLCAwICk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZtXyApOwotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICArK3VzZV9jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKTsKLSAgICAgICAgYm9vbCByID0gdXNlX2NvdW50XyA9PSAwPyBmYWxzZTogKCArK3VzZV9jb3VudF8sIHRydWUgKTsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApOwotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICBsb25nIG5ld191c2VfY291bnQgPSAtLXVzZV9jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLQotICAgICAgICBpZiggbmV3X3VzZV9jb3VudCA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgICsrd2Vha19jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgIGxvbmcgbmV3X3dlYWtfY291bnQgPSAtLXdlYWtfY291bnRfOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICk7Ci0KLSAgICAgICAgaWYoIG5ld193ZWFrX2NvdW50ID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgIGxvbmcgciA9IHVzZV9jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLQotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1BUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZThmZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NOQ19QUzNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NOQ19QUzNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcCAtIGcrKyBvbiBTcGFyYyBWOCsKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFBpb3RyIFd5ZGVyc2tpCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFRvbWFzIFB1dmVybGUKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKGMpIDIwMTEgRW1pbCBEb3RjaGV2c2tpCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgVGhhbmtzIHRvIE1pY2hhZWwgdmFuIGRlciBXZXN0aHVpemVuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPGludHR5cGVzLmg+IC8vIHVpbnQzMl90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB1aW50MzJfdCBjb21wYXJlX2FuZF9zd2FwKCB1aW50MzJfdCAqIGRlc3RfLCB1aW50MzJfdCBjb21wYXJlXywgdWludDMyX3Qgc3dhcF8gKQotewotICAgIHJldHVybiBfX2J1aWx0aW5fY2VsbEF0b21pY0NvbXBhcmVBbmRTd2FwMzIoZGVzdF8sY29tcGFyZV8sc3dhcF8pOwotfQotCi1pbmxpbmUgdWludDMyX3QgYXRvbWljX2ZldGNoX2FuZF9hZGQoIHVpbnQzMl90ICogcHcsIHVpbnQzMl90IGR2ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gKnB3ICs9IGR2OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICB1aW50MzJfdCByID0gKnB3OwotCi0gICAgICAgIGlmKCBfX2J1aWx0aW5fZXhwZWN0KChjb21wYXJlX2FuZF9zd2FwKHB3LCByLCByICsgZHYpID09IHIpLCAxKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCB1aW50MzJfdCAqIHB3ICkKLXsKLSAgICAodm9pZCkgX19idWlsdGluX2NlbGxBdG9taWNJbmNyMzIoIHB3ICk7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBhdG9taWNfZGVjcmVtZW50KCB1aW50MzJfdCAqIHB3ICkKLXsKLSAgICByZXR1cm4gX19idWlsdGluX2NlbGxBdG9taWNEZWNyMzIoIHB3ICk7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCB1aW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gaWYoIHIgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICB1aW50MzJfdCByID0gKnB3OwotCi0gICAgICAgIGlmKCByID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBfX2J1aWx0aW5fZXhwZWN0KCAoIGNvbXBhcmVfYW5kX3N3YXAoIHB3LCByLCByICsgMSApID09IHIgKSwgMSApICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICB9ICAgIAotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIHVpbnQzMl90IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgdWludDMyX3Qgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8IHVpbnQzMl90IGNvbnN0IHZvbGF0aWxlICYgPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU05DX1BTM19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzY5MWNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TUElOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TUElOX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwIC0gc3BpbmxvY2sgcG9vbCBhdG9taWMgZW11bGF0aW9uCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgaW50IGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCBpbnQgKiBwdywgaW50IGR2ICkKLXsKLSAgICBzcGlubG9ja19wb29sPDE+OjpzY29wZWRfbG9jayBsb2NrKCBwdyApOwotCi0gICAgaW50IHIgPSAqcHc7Ci0gICAgKnB3ICs9IGR2OwotICAgIHJldHVybiByOwotfQotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgc3BpbmxvY2tfcG9vbDwxPjo6c2NvcGVkX2xvY2sgbG9jayggcHcgKTsKLSAgICArKypwdzsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgc3BpbmxvY2tfcG9vbDwxPjo6c2NvcGVkX2xvY2sgbG9jayggcHcgKTsKLQotICAgIGludCBydiA9ICpwdzsKLSAgICBpZiggcnYgIT0gMCApICsrKnB3OwotICAgIHJldHVybiBydjsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJnVzZV9jb3VudF8sIC0xICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJndlYWtfY291bnRfLCAtMSApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwaW5sb2NrX3Bvb2w8MT46OnNjb3BlZF9sb2NrIGxvY2soICZ1c2VfY291bnRfICk7Ci0gICAgICAgIHJldHVybiB1c2VfY291bnRfOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1BJTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3N5bmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWEzNmU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TWU5DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TWU5DX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHAgLSBnKysgNC4xKyBfX3N5bmMgaW50cmluc2ljcwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDcgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQotI2lmIGRlZmluZWQoIF9faWE2NF9fICkgJiYgZGVmaW5lZCggX19JTlRFTF9DT01QSUxFUiApCi0jIGluY2x1ZGUgPGlhNjRpbnRyaW4uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgSU5UX01BWCA+PSAyMTQ3NDgzNjQ3Ci0KLXR5cGVkZWYgaW50IHNwX2ludDMyX3Q7Ci0KLSNlbHNlCi0KLXR5cGVkZWYgbG9uZyBzcF9pbnQzMl90OwotCi0jZW5kaWYKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggc3BfaW50MzJfdCAqIHB3ICkKLXsKLSAgICBfX3N5bmNfZmV0Y2hfYW5kX2FkZCggcHcsIDEgKTsKLX0KLQotaW5saW5lIHNwX2ludDMyX3QgYXRvbWljX2RlY3JlbWVudCggc3BfaW50MzJfdCAqIHB3ICkKLXsKLSAgICByZXR1cm4gX19zeW5jX2ZldGNoX2FuZF9hZGQoIHB3LCAtMSApOwotfQotCi1pbmxpbmUgc3BfaW50MzJfdCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBzcF9pbnQzMl90ICogcHcgKQotewotICAgIC8vIGxvbmcgciA9ICpwdzsKLSAgICAvLyBpZiggciAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuIHI7Ci0KLSAgICBzcF9pbnQzMl90IHIgPSAqcHc7Ci0KLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIGlmKCByID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotCi0gICAgICAgIHNwX2ludDMyX3QgcjIgPSBfX3N5bmNfdmFsX2NvbXBhcmVfYW5kX3N3YXAoIHB3LCByLCByICsgMSApOwotCi0gICAgICAgIGlmKCByMiA9PSByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByID0gcjI7Ci0gICAgICAgIH0KLSAgICB9ICAgIAotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIHNwX2ludDMyX3QgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBzcF9pbnQzMl90IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PCBzcF9pbnQzMl90IGNvbnN0IHZvbGF0aWxlICYgPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1lOQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdmFjcHBfcHBjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdmFjcHBfcHBjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczZjQ2Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3ZhY3BwX3BwYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9WQUNQUF9QUENfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1ZBQ1BQX1BQQ19IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3ZhY3BwX3BwYy5ocHAgLSB4bEModmFjcHApIG9uIFBPV0VSCi0vLyAgIGJhc2VkIG9uOiBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAyMDA2IE1pY2hhZWwgdmFuIGRlciBXZXN0aHVpemVuCi0vLyAgQ29weXJpZ2h0IDIwMTIgSUJNIENvcnAuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1leHRlcm4gImJ1aWx0aW4iIHZvaWQgX19sd3N5bmModm9pZCk7Ci1leHRlcm4gImJ1aWx0aW4iIHZvaWQgX19pc3luYyh2b2lkKTsKLWV4dGVybiAiYnVpbHRpbiIgaW50IF9fZmV0Y2hfYW5kX2FkZCh2b2xhdGlsZSBpbnQqIGFkZHIsIGludCB2YWwpOwotZXh0ZXJuICJidWlsdGluIiBpbnQgX19jb21wYXJlX2FuZF9zd2FwKHZvbGF0aWxlIGludCosIGludCosIGludCk7Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqcHcgKQotewotICAgLy8gKysqcHc7Ci0gICBfX2x3c3luYygpOwotICAgX19mZXRjaF9hbmRfYWRkKHB3LCAxKTsKLSAgIF9faXN5bmMoKTsKLX0gCi0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICpwdyApCi17Ci0gICAvLyByZXR1cm4gLS0qcHc7Ci0gICBfX2x3c3luYygpOwotICAgaW50IG9yaWdpbmFsVmFsdWUgPSBfX2ZldGNoX2FuZF9hZGQocHcsIC0xKTsKLSAgIF9faXN5bmMoKTsKLQotICAgcmV0dXJuIChvcmlnaW5hbFZhbHVlIC0gMSk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICpwdyApCi17Ci0gICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgIC8vIHJldHVybiAqcHc7Ci0KLSAgIF9fbHdzeW5jKCk7Ci0gICBpbnQgdiA9ICpjb25zdF9jYXN0PHZvbGF0aWxlIGludCo+KHB3KTsKLSAgIGZvciAoOzspCi0gICAvLyBsb29wIHVudGlsIHN0YXRlIGlzIGtub3duCi0gICB7Ci0gICAgICBpZiAodiA9PSAwKSByZXR1cm4gMDsKLSAgICAgIGlmIChfX2NvbXBhcmVfYW5kX3N3YXAocHcsICZ2LCB2ICsgMSkpCi0gICAgICB7Ci0gICAgICAgICBfX2lzeW5jKCk7IHJldHVybiAodiArIDEpOwotICAgICAgfQotICAgfQotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotICAgIGNoYXIgcGFkWzY0XSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg2NCkpKTsKLSAgICAgICAgICAgIC8vIHBhZCB0byBwcmV2ZW50IGZhbHNlIHNoYXJpbmcKLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiAqY29uc3RfY2FzdDx2b2xhdGlsZSBpbnQqPigmdXNlX2NvdW50Xyk7IAotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVkFDUFBfUFBDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDZkM2E3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1czMl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVzMyX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBsb25nIHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgbG9uZyB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgZm9yKCA7OyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxvbmcgdG1wID0gc3RhdGljX2Nhc3Q8IGxvbmcgY29uc3Qgdm9sYXRpbGUmID4oIHVzZV9jb3VudF8gKTsKLSAgICAgICAgICAgIGlmKCB0bXAgPT0gMCApIHJldHVybiBmYWxzZTsKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA9PSAxMjAwICkKLQotICAgICAgICAgICAgLy8gd29yayBhcm91bmQgYSBjb2RlIGdlbmVyYXRpb24gYnVnCi0KLSAgICAgICAgICAgIGxvbmcgdG1wMiA9IHRtcCArIDE7Ci0gICAgICAgICAgICBpZiggTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSggJnVzZV9jb3VudF8sIHRtcDIsIHRtcCApID09IHRtcDIgLSAxICkgcmV0dXJuIHRydWU7Ci0KLSNlbHNlCi0KLSAgICAgICAgICAgIGlmKCBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFKCAmdXNlX2NvdW50XywgdG1wICsgMSwgdG1wICkgPT0gdG1wICkgcmV0dXJuIHRydWU7Ci0KLSNlbmRpZgotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UKCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVzMyX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhhZjczYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUikgJiYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SKQotIyBlcnJvciBORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUiBhbmQgTkROQk9PU1RfU1BfVVNFX1FVSUNLX0FMTE9DQVRPUiBhcmUgaW5jb21wYXRpYmxlLgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SKQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvcXVpY2tfYWxsb2NhdG9yLmhwcD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUikKLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAvLyBzdGQ6OmFsbG9jYXRvcgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBzdGQ6OnNpemVfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotCi12b2lkIHNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKCB2b2lkICogcHgsIHN0ZDo6c2l6ZV90IHNpemUsIHZvaWQgKiBwbiApOwotdm9pZCBzcF9zY2FsYXJfZGVzdHJ1Y3Rvcl9ob29rKCB2b2lkICogcHgsIHN0ZDo6c2l6ZV90IHNpemUsIHZvaWQgKiBwbiApOwotCi0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTxjbGFzcyBYPiBjbGFzcyBzcF9jb3VudGVkX2ltcGxfcDogcHVibGljIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIFggKiBweF87Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcCggc3BfY291bnRlZF9pbXBsX3AgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfaW1wbF9wICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9pbXBsX3AgY29uc3QgJiApOwotCi0gICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcDxYPiB0aGlzX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IHNwX2NvdW50ZWRfaW1wbF9wKCBYICogcHggKTogcHhfKCBweCApCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3Bfc2NhbGFyX2NvbnN0cnVjdG9yX2hvb2soIHB4LCBzaXplb2YoWCksIHRoaXMgKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgLy8gbm90aHJvdwotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX3NjYWxhcl9kZXN0cnVjdG9yX2hvb2soIHB4Xywgc2l6ZW9mKFgpLCB0aGlzICk7Ci0jZW5kaWYKLSAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKCBweF8gKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmICkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUikKLQotICAgIHZvaWQgKiBvcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmFsbG9jYXRvcjx0aGlzX3R5cGU+KCkuYWxsb2NhdGUoIDEsIHN0YXRpY19jYXN0PHRoaXNfdHlwZSAqPigwKSApOwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKCB2b2lkICogcCApCi0gICAgewotICAgICAgICBzdGQ6OmFsbG9jYXRvcjx0aGlzX3R5cGU+KCkuZGVhbGxvY2F0ZSggc3RhdGljX2Nhc3Q8dGhpc190eXBlICo+KHApLCAxICk7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1FVSUNLX0FMTE9DQVRPUikKLQotICAgIHZvaWQgKiBvcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBxdWlja19hbGxvY2F0b3I8dGhpc190eXBlPjo6YWxsb2MoKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSggdm9pZCAqIHAgKQotICAgIHsKLSAgICAgICAgcXVpY2tfYWxsb2NhdG9yPHRoaXNfdHlwZT46OmRlYWxsb2MoIHAgKTsKLSAgICB9Ci0KLSNlbmRpZgotfTsKLQotLy8KLS8vIEJvcmxhbmQncyBDb2RlZ3VhcmQgdHJpcHMgdXAgb3ZlciB0aGUgLVZ4LSBvcHRpb24gaGVyZToKLS8vCi0jaWZkZWYgX19DT0RFR1VBUkRfXwotIyBwcmFnbWEgb3B0aW9uIHB1c2ggLVZ4LQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFAsIGNsYXNzIEQ+IGNsYXNzIHNwX2NvdW50ZWRfaW1wbF9wZDogcHVibGljIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIFAgcHRyOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0gICAgRCBkZWw7IC8vIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZCggc3BfY291bnRlZF9pbXBsX3BkIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2ltcGxfcGQgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2ltcGxfcGQgY29uc3QgJiApOwotCi0gICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcGQ8UCwgRD4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICAvLyBwcmU6IGQocCkgbXVzdCBub3QgdGhyb3cKLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZCggUCBwLCBEICYgZCApOiBwdHIoIHAgKSwgZGVsKCBkICkKLSAgICB7Ci0gICAgfQotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkKCBQIHAgKTogcHRyKCBwICksIGRlbCgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsKCBwdHIgKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHRpICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aSA9PSBORE5CT09TVF9TUF9UWVBFSUQoRCk/ICZyZWludGVycHJldF9jYXN0PGNoYXImPiggZGVsICk6IDA7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gJnJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciY+KCBkZWwgKTsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9TVERfQUxMT0NBVE9SKQotCi0gICAgdm9pZCAqIG9wZXJhdG9yIG5ldyggc3RkOjpzaXplX3QgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YWxsb2NhdG9yPHRoaXNfdHlwZT4oKS5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8dGhpc190eXBlICo+KDApICk7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGUoIHZvaWQgKiBwICkKLSAgICB7Ci0gICAgICAgIHN0ZDo6YWxsb2NhdG9yPHRoaXNfdHlwZT4oKS5kZWFsbG9jYXRlKCBzdGF0aWNfY2FzdDx0aGlzX3R5cGUgKj4ocCksIDEgKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SKQotCi0gICAgdm9pZCAqIG9wZXJhdG9yIG5ldyggc3RkOjpzaXplX3QgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHF1aWNrX2FsbG9jYXRvcjx0aGlzX3R5cGU+OjphbGxvYygpOwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKCB2b2lkICogcCApCi0gICAgewotICAgICAgICBxdWlja19hbGxvY2F0b3I8dGhpc190eXBlPjo6ZGVhbGxvYyggcCApOwotICAgIH0KLQotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBQLCBjbGFzcyBELCBjbGFzcyBBPiBjbGFzcyBzcF9jb3VudGVkX2ltcGxfcGRhOiBwdWJsaWMgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgUCBwXzsgLy8gY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotICAgIEQgZF87IC8vIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLSAgICBBIGFfOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcGRhKCBzcF9jb3VudGVkX2ltcGxfcGRhIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2ltcGxfcGRhICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9pbXBsX3BkYSBjb25zdCAmICk7Ci0KLSAgICB0eXBlZGVmIHNwX2NvdW50ZWRfaW1wbF9wZGE8UCwgRCwgQT4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICAvLyBwcmU6IGQoIHAgKSBtdXN0IG5vdCB0aHJvdwotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkYSggUCBwLCBEICYgZCwgQSBhICk6IHBfKCBwICksIGRfKCBkICksIGFfKCBhICkKLSAgICB7Ci0gICAgfQotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkYSggUCBwLCBBIGEgKTogcF8oIHAgKSwgZF8oKSwgYV8oIGEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRfKCBwXyApOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8IHRoaXNfdHlwZSA+OjpvdGhlciBBMjsKLQotICAgICAgICBBMiBhMiggYV8gKTsKLQotICAgICAgICB0aGlzLT5+dGhpc190eXBlKCk7Ci0gICAgICAgIGEyLmRlYWxsb2NhdGUoIHRoaXMsIDEgKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHRpICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aSA9PSBORE5CT09TVF9TUF9UWVBFSUQoIEQgKT8gJnJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciY+KCBkXyApOiAwOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZyZWludGVycHJldF9jYXN0PGNoYXImPiggZF8gKTsKLSAgICB9Ci19OwotCi0jaWZkZWYgX19DT0RFR1VBUkRfXwotIyBwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYjdiNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0ZPUldBUkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfRk9SV0FSRF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfZm9yd2FyZC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDgsMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBUJiYgc3BfZm9yd2FyZCggVCAmIHQgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDwgVCYmID4oIHQgKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9GT1JXQVJEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNWI0ZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9IQVNfU1lOQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9IQVNfU1lOQ19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIERlZmluZXMgdGhlIE5ETkJPT1NUX1NQX0hBU19TWU5DIG1hY3JvIGlmIHRoZSBfX3N5bmNfKiBpbnRyaW5zaWNzCi0vLyAgYXJlIGF2YWlsYWJsZS4KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfU1BfTk9fU1lOQwotCi0jaWYgZGVmaW5lZCggX19HQ0NfSEFWRV9TWU5DX0NPTVBBUkVfQU5EX1NXQVBfNCApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0KLSNlbGlmIGRlZmluZWQoIF9fSUJNQ1BQX18gKSAmJiAoIF9fSUJNQ1BQX18gPj0gMTIxMCApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fID49IDQwMSApCi0KLSNkZWZpbmUgTkROQk9PU1RfU1BfSEFTX1NZTkMKLQotI2lmIGRlZmluZWQoIF9fYXJtX18gKSAgfHwgZGVmaW5lZCggX19hcm1lbF9fICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX2hwcGEgKSB8fCBkZWZpbmVkKCBfX2hwcGFfXyApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCggX19tNjhrX18gKQotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9fc2hfXyApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCggX19zcGFyY19fICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX0lOVEVMX0NPTVBJTEVSICkgJiYgIWRlZmluZWQoIF9faWE2NF9fICkgJiYgKCBfX0lOVEVMX0NPTVBJTEVSIDwgMTExMCApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1BBVEhTQ0FMRV9fKSAmJiAoKF9fUEFUSENDX18gPT0gNCkgJiYgKF9fUEFUSENDX01JTk9SX18gPCA5KSkgCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU1BfTk9fU1lOQwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0hBU19TWU5DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9pZl9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYzg5MjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzIAotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCAKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCAKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9JRl9BUlJBWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9JRl9BUlJBWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi0gICAgICAgIHN0cnVjdCBzcF9pZl9hcnJheTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IHNwX2lmX2FycmF5PFRbXT4gewotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUW10+IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBzcF9pZl9zaXplX2FycmF5OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3Qgc3BfaWZfc2l6ZV9hcnJheTxUW05dPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFRbTl0+IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDgwNjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfTlVMTFBUUl9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX05VTExQVFJfVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfbnVsbHB0cl90LmhwcAotLy8KLS8vICBDb3B5cmlnaHQgMjAxMyBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiBkZWZpbmVkKCBfX2NsYW5nX18gKSAmJiAhZGVmaW5lZCggX0xJQkNQUF9WRVJTSU9OICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFICkKLQotICAgIHR5cGVkZWYgZGVjbHR5cGUobnVsbHB0cikgc3BfbnVsbHB0cl90OwotCi0jZWxzZQotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBzcF9udWxscHRyX3Q7Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfTlVMTFBUUl9UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZDBkNTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL3NwaW5sb2NrLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgc3RydWN0IHNwaW5sb2NrCi0vLyAgewotLy8gICAgICB2b2lkIGxvY2soKTsKLS8vICAgICAgYm9vbCB0cnlfbG9jaygpOwotLy8gICAgICB2b2lkIHVubG9jaygpOwotLy8KLS8vICAgICAgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0vLyAgfTsKLS8vCi0vLyAgI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCA8dW5zcGVjaWZpZWQ+Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcD4KLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1NQX1VTRV9QVEhSRUFEUyApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3B0LmhwcD4KLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZCggX19hcm1fXyApICYmICFkZWZpbmVkKCBfX3RodW1iX18gKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19nY2NfYXJtLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfSEFTX1NZTkMgKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19zeW5jLmhwcD4KLQotI2VsaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3czMi5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHA+Ci0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19USFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19udC5ocHA+Ci0KLSNlbHNlCi0jICBlcnJvciBVbnJlY29nbml6ZWQgdGhyZWFkaW5nIHBsYXRmb3JtCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19nY2NfYXJtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19nY2NfYXJtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYwMTVhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfZ2NjX2FybS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX0dDQ19BUk1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfR0NDX0FSTV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3lpZWxkX2suaHBwPgotCi0jaWYgZGVmaW5lZChfX0FSTV9BUkNIXzdfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdBX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF83Ul9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN01fXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdFTV9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN1NfXykKLQotIyBkZWZpbmUgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgImRtYiIKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9IQVNfTERSRVgKLQotI2VsaWYgZGVmaW5lZChfX0FSTV9BUkNIXzZfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzZKX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF82S19fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNlpfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzZaS19fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNlQyX18pCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSICJtY3IgcDE1LCAwLCByMCwgYzcsIGMxMCwgNSIKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9IQVNfTERSRVgKLQotI2Vsc2UKLQotIyBkZWZpbmUgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgIiIKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwaW5sb2NrCi17Ci1wdWJsaWM6Ci0KLSAgICBpbnQgdl87Ci0KLXB1YmxpYzoKLQotICAgIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgaW50IHI7Ci0KLSNpZmRlZiBORE5CT09TVF9TUF9BUk1fSEFTX0xEUkVYCi0KLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCi0gICAgICAgICAgICAibGRyZXggJTAsIFslMl07IFxuIgotICAgICAgICAgICAgImNtcCAlMCwgJTE7IFxuIgotICAgICAgICAgICAgInN0cmV4bmUgJTAsICUxLCBbJTJdOyBcbiIKLSAgICAgICAgICAgIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSIDoKLSAgICAgICAgICAgICI9JnIiKCByICk6IC8vIG91dHB1dHMKLSAgICAgICAgICAgICJyIiggMSApLCAiciIoICZ2XyApOiAvLyBpbnB1dHMKLSAgICAgICAgICAgICJtZW1vcnkiLCAiY2MiICk7Ci0KLSNlbHNlCi0KLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCi0gICAgICAgICAgICAic3dwICUwLCAlMSwgWyUyXTtcbiIKLSAgICAgICAgICAgIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSIDoKLSAgICAgICAgICAgICI9JnIiKCByICk6IC8vIG91dHB1dHMKLSAgICAgICAgICAgICJyIiggMSApLCAiciIoICZ2XyApOiAvLyBpbnB1dHMKLSAgICAgICAgICAgICJtZW1vcnkiLCAiY2MiICk7Ci0KLSNlbmRpZgotCi0gICAgICAgIHJldHVybiByID09IDA7Ci0gICAgfQotCi0gICAgdm9pZCBsb2NrKCkKLSAgICB7Ci0gICAgICAgIGZvciggdW5zaWduZWQgayA9IDA7ICF0cnlfbG9jaygpOyArK2sgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjp5aWVsZCggayApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB1bmxvY2soKQotICAgIHsKLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSIDo6OiAibWVtb3J5IiApOwotICAgICAgICAqY29uc3RfY2FzdDwgaW50IHZvbGF0aWxlKiA+KCAmdl8gKSA9IDA7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHNwaW5sb2NrICYgc3AgKTogc3BfKCBzcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgezB9Ci0KLSN1bmRlZiBORE5CT09TVF9TUF9BUk1fQkFSUklFUgotI3VuZGVmIE5ETkJPT1NUX1NQX0FSTV9IQVNfTERSRVgKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19HQ0NfQVJNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNTE0YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19OVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIGJvb2wgbG9ja2VkXzsKLQotcHVibGljOgotCi0gICAgaW5saW5lIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgaWYoIGxvY2tlZF8gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBsb2NrZWRfID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgbG9jaygpCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoICFsb2NrZWRfICk7Ci0gICAgICAgIGxvY2tlZF8gPSB0cnVlOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIHVubG9jaygpCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIGxvY2tlZF8gKTsKLSAgICAgICAgbG9ja2VkXyA9IGZhbHNlOwotICAgIH0KLQotcHVibGljOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCBzcGlubG9jayAmIHNwICk6IHNwXyggc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcC5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIHsgZmFsc2UgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDU0OWI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wb29sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19QT09MX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BPT0xfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9zcGlubG9ja19wb29sLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgc3BpbmxvY2tfcG9vbDwwPiBpcyByZXNlcnZlZCBmb3IgYXRvbWljPD4sIHdoZW4vaWYgaXQgYXJyaXZlcwotLy8gIHNwaW5sb2NrX3Bvb2w8MT4gaXMgcmVzZXJ2ZWQgZm9yIHNoYXJlZF9wdHIgcmVmZXJlbmNlIGNvdW50cwotLy8gIHNwaW5sb2NrX3Bvb2w8Mj4gaXMgcmVzZXJ2ZWQgZm9yIHNoYXJlZF9wdHIgYXRvbWljIGFjY2VzcwotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8IGludCBJID4gY2xhc3Mgc3BpbmxvY2tfcG9vbAotewotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBzcGlubG9jayBwb29sX1sgNDEgXTsKLQotcHVibGljOgotCi0gICAgc3RhdGljIHNwaW5sb2NrICYgc3BpbmxvY2tfZm9yKCB2b2lkIGNvbnN0ICogcHYgKQotICAgIHsKLSNpZiBkZWZpbmVkKF9fVk1TKSAmJiBfX0lOSVRJQUxfUE9JTlRFUl9TSVpFID09IDY0ICAKLSAgICAgICAgc3RkOjpzaXplX3QgaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8IHVuc2lnbmVkIGxvbmcgbG9uZyA+KCBwdiApICUgNDE7Ci0jZWxzZSAgCi0gICAgICAgIHN0ZDo6c2l6ZV90IGkgPSByZWludGVycHJldF9jYXN0PCBzdGQ6OnNpemVfdCA+KCBwdiApICUgNDE7Ci0jZW5kaWYgIAotICAgICAgICByZXR1cm4gcG9vbF9bIGkgXTsKLSAgICB9Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHZvaWQgY29uc3QgKiBwdiApOiBzcF8oIHNwaW5sb2NrX2ZvciggcHYgKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGludCBJID4gc3BpbmxvY2sgc3BpbmxvY2tfcG9vbDwgSSA+Ojpwb29sX1sgNDEgXSA9Ci17Ci0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUE9PTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmYzMDAzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUFRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIHB0aHJlYWRfbXV0ZXhfdCB2XzsKLQotcHVibGljOgotCi0gICAgYm9vbCB0cnlfbG9jaygpCi0gICAgewotICAgICAgICByZXR1cm4gcHRocmVhZF9tdXRleF90cnlsb2NrKCAmdl8gKSA9PSAwOwotICAgIH0KLQotICAgIHZvaWQgbG9jaygpCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZ2XyApOwotICAgIH0KLQotICAgIHZvaWQgdW5sb2NrKCkKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmdl8gKTsKLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3BpbmxvY2sgJiBzcF87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayggc3BpbmxvY2sgJiBzcCApOiBzcF8oIHNwICkKLSAgICAgICAgewotICAgICAgICAgICAgc3AubG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLnVubG9jaygpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCB7IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N5bmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N5bmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWYzMjFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19zeW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19TWU5DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1NZTkNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHA+Ci0KLSNpZiBkZWZpbmVkKCBfX2lhNjRfXyApICYmIGRlZmluZWQoIF9fSU5URUxfQ09NUElMRVIgKQotIyBpbmNsdWRlIDxpYTY0aW50cmluLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIGludCB2XzsKLQotcHVibGljOgotCi0gICAgYm9vbCB0cnlfbG9jaygpCi0gICAgewotICAgICAgICBpbnQgciA9IF9fc3luY19sb2NrX3Rlc3RfYW5kX3NldCggJnZfLCAxICk7Ci0gICAgICAgIHJldHVybiByID09IDA7Ci0gICAgfQotCi0gICAgdm9pZCBsb2NrKCkKLSAgICB7Ci0gICAgICAgIGZvciggdW5zaWduZWQgayA9IDA7ICF0cnlfbG9jaygpOyArK2sgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjp5aWVsZCggayApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB1bmxvY2soKQotICAgIHsKLSAgICAgICAgX19zeW5jX2xvY2tfcmVsZWFzZSggJnZfICk7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHNwaW5sb2NrICYgc3AgKTogc3BfKCBzcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgezB9Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfU1lOQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja193MzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3czMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMWUzYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3czMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1czMl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19XMzJfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcD4KLQotLy8gTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UKLQotI2lmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9GRU5DRSBfX21lbW9yeV9iYXJyaWVyKCk7Ci0KLSNlbGlmIGRlZmluZWQoIF9NU0NfVkVSICkgJiYgX01TQ19WRVIgPj0gMTMxMAotCi1leHRlcm4gIkMiIHZvaWQgX1JlYWRXcml0ZUJhcnJpZXIoKTsKLSNwcmFnbWEgaW50cmluc2ljKCBfUmVhZFdyaXRlQmFycmllciApCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UgX1JlYWRXcml0ZUJhcnJpZXIoKTsKLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9GRU5DRSBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIgOiA6IDogIm1lbW9yeSIgKTsKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9GRU5DRQotCi0jZW5kaWYKLQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIGxvbmcgdl87Ci0KLXB1YmxpYzoKLQotICAgIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgbG9uZyByID0gTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UoICZ2XywgMSApOwotCi0gICAgICAgIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFCi0KLSAgICAgICAgcmV0dXJuIHIgPT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGxvY2soKQotICAgIHsKLSAgICAgICAgZm9yKCB1bnNpZ25lZCBrID0gMDsgIXRyeV9sb2NrKCk7ICsrayApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnlpZWxkKCBrICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHVubG9jaygpCi0gICAgewotICAgICAgICBORE5CT09TVF9DT01QSUxFUl9GRU5DRQotICAgICAgICAqY29uc3RfY2FzdDwgbG9uZyB2b2xhdGlsZSogPiggJnZfICkgPSAwOwotICAgIH0KLQotcHVibGljOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCBzcGlubG9jayAmIHNwICk6IHNwXyggc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcC5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIHswfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1czMl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZjZDc5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1lJRUxEX0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfWUlFTERfS19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgeWllbGRfay5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIHZvaWQgeWllbGQoIHVuc2lnbmVkIGsgKTsKLS8vCi0vLyAgVHlwaWNhbCB1c2U6Ci0vLwotLy8gIGZvciggdW5zaWduZWQgayA9IDA7ICF0cnlfbG9jaygpOyArK2sgKSB5aWVsZCggayApOwotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gTkROQk9PU1RfU01UX1BBVVNFCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxMzEwICYmICggZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX1g2NCkgKQotCi1leHRlcm4gIkMiIHZvaWQgX21tX3BhdXNlKCk7Ci0jcHJhZ21hIGludHJpbnNpYyggX21tX3BhdXNlICkKLQotI2RlZmluZSBORE5CT09TVF9TTVRfUEFVU0UgX21tX3BhdXNlKCk7Ci0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICggZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSApCi0KLSNkZWZpbmUgTkROQk9PU1RfU01UX1BBVVNFIF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwOyBub3AiIDogOiA6ICJtZW1vcnkiICk7Ci0KLSNlbmRpZgotCi0vLwotCi0jaWYgZGVmaW5lZCggV0lOMzIgKSB8fCBkZWZpbmVkKCBfV0lOMzIgKSB8fCBkZWZpbmVkKCBfX1dJTjMyX18gKSB8fCBkZWZpbmVkKCBfX0NZR1dJTl9fICkKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0ggKQotIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9VU0VfV0lORE9XU19IICkKLSAgZXh0ZXJuICJDIiB2b2lkIF9fc3RkY2FsbCBTbGVlcCggdW5zaWduZWQgbG9uZyBtcyApOwotI2VuZGlmCi0KLWlubGluZSB2b2lkIHlpZWxkKCB1bnNpZ25lZCBrICkKLXsKLSAgICBpZiggayA8IDQgKQotICAgIHsKLSAgICB9Ci0jaWYgZGVmaW5lZCggTkROQk9PU1RfU01UX1BBVVNFICkKLSAgICBlbHNlIGlmKCBrIDwgMTYgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU01UX1BBVVNFCi0gICAgfQotI2VuZGlmCi0gICAgZWxzZSBpZiggayA8IDMyICkKLSAgICB7Ci0gICAgICAgIFNsZWVwKCAwICk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIFNsZWVwKCAxICk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfSEFTX1BUSFJFQURTICkKLQotI2luY2x1ZGUgPHNjaGVkLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCB5aWVsZCggdW5zaWduZWQgayApCi17Ci0gICAgaWYoIGsgPCA0ICkKLSAgICB7Ci0gICAgfQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1NNVF9QQVVTRSApCi0gICAgZWxzZSBpZiggayA8IDE2ICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NNVF9QQVVTRQotICAgIH0KLSNlbmRpZgotICAgIGVsc2UgaWYoIGsgPCAzMiB8fCBrICYgMSApCi0gICAgewotICAgICAgICBzY2hlZF95aWVsZCgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBnKysgLVdleHRyYSB3YXJucyBvbiB7fSBvciB7MH0KLSAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJxdHAgPSB7IDAsIDAgfTsKLQotICAgICAgICAvLyBQT1NJWCBzYXlzIHRoYXQgdGltZXNwZWMgaGFzIHR2X3NlYyBhbmQgdHZfbnNlYwotICAgICAgICAvLyBCdXQgaXQgZG9lc24ndCBndWFyYW50ZWUgb3JkZXIgb3IgcGxhY2VtZW50Ci0KLSAgICAgICAgcnF0cC50dl9zZWMgPSAwOwotICAgICAgICBycXRwLnR2X25zZWMgPSAxMDAwOwotCi0gICAgICAgIG5hbm9zbGVlcCggJnJxdHAsIDAgKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCB5aWVsZCggdW5zaWduZWQgKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfWUlFTERfS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhOTE5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX0hQUF9JTkNMVURFRAotCi0vLyAgbWFrZV9zaGFyZWQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCwgMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5odG1sCi0vLyAgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfb2JqZWN0LmhwcD4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1NGSU5BRSApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9hcnJheS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9hbGxvY2F0ZV9zaGFyZWRfYXJyYXkuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5OThlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfQVJSQVlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9BUlJBWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL21ha2VfYXJyYXlfaGVscGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcD4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHN0ZDo6c2l6ZV90IHNpemUsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChjb25zdCBUJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXRfbGlzdChwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChzdGQ6OnNpemVfdCBzaXplLAotICAgICAgICBjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBNICogc2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT50ZW1wbGF0ZSBpbml0X2xpc3Q8TT4ocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUsCi0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbTl0+IGExKCZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+dGVtcGxhdGUgaW5pdF9saXN0PE0+KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZT4gbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGxpc3Quc2l6ZSgpICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltdPiBhMShuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0LmJlZ2luKCkpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdF9saXN0KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoc3RkOjpzaXplX3Qgc2l6ZSwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8VDI+KHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQodHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxUMj4odmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkX25vaW5pdChzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPm5vaW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWRfbm9pbml0KCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltOXT4gYTEoJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPm5vaW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9vYmplY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfb2JqZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwNGQ1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9vYmplY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzMiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9PQkpFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9PQkpFQ1RfSFBQX0lOQ0xVREVECi0KLS8vICBtYWtlX3NoYXJlZF9vYmplY3QuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCwgMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5odG1sCi0vLyAgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZXc+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPCBzdGQ6OnNpemVfdCBOLCBzdGQ6OnNpemVfdCBBID4gc3RydWN0IHNwX2FsaWduZWRfc3RvcmFnZQotewotICAgIHVuaW9uIHR5cGUKLSAgICB7Ci0gICAgICAgIGNoYXIgZGF0YV9bIE4gXTsKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfd2l0aF9hbGlnbm1lbnQ8IEEgPjo6dHlwZSBhbGlnbl87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gY2xhc3Mgc3BfbXNfZGVsZXRlcgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3BfYWxpZ25lZF9zdG9yYWdlPCBzaXplb2YoIFQgKSwgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPCBUID46OnZhbHVlID46OnR5cGUgc3RvcmFnZV90eXBlOwotCi0gICAgYm9vbCBpbml0aWFsaXplZF87Ci0gICAgc3RvcmFnZV90eXBlIHN0b3JhZ2VfOwotCi1wcml2YXRlOgotCi0gICAgdm9pZCBkZXN0cm95KCkKLSAgICB7Ci0gICAgICAgIGlmKCBpbml0aWFsaXplZF8gKQotICAgICAgICB7Ci0jaWYgZGVmaW5lZCggX19HTlVDX18gKQotCi0gICAgICAgICAgICAvLyBmaXhlcyBpbmNvcnJlY3QgYWxpYXNpbmcgd2FybmluZwotICAgICAgICAgICAgVCAqIHAgPSByZWludGVycHJldF9jYXN0PCBUKiA+KCBzdG9yYWdlXy5kYXRhXyApOwotICAgICAgICAgICAgcC0+flQoKTsKLQotI2Vsc2UKLQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgVCogPiggc3RvcmFnZV8uZGF0YV8gKS0+flQoKTsKLQotI2VuZGlmCi0KLSAgICAgICAgICAgIGluaXRpYWxpemVkXyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBzcF9tc19kZWxldGVyKCkgTkROQk9PU1RfTk9FWENFUFQgOiBpbml0aWFsaXplZF8oIGZhbHNlICkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gb3B0aW1pemF0aW9uOiBkbyBub3QgY29weSBzdG9yYWdlXwotICAgIHNwX21zX2RlbGV0ZXIoIHNwX21zX2RlbGV0ZXIgY29uc3QgJiApIE5ETkJPT1NUX05PRVhDRVBUIDogaW5pdGlhbGl6ZWRfKCBmYWxzZSApCi0gICAgewotICAgIH0KLQotICAgIH5zcF9tc19kZWxldGVyKCkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoIFQgKiApCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgb3BlcmF0b3JfZm4oIFQqICkgLy8gb3BlcmF0b3IoKSBjYW4ndCBiZSBzdGF0aWMKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCAqIGFkZHJlc3MoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0b3JhZ2VfLmRhdGFfOwotICAgIH0KLQotICAgIHZvaWQgc2V0X2luaXRpYWxpemVkKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVkXyA9IHRydWU7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfaWZfbm90X2FycmF5Ci17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9pZl9ub3RfYXJyYXk8IFRbXSA+Ci17Ci19OwotCi0jaWYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIHx8ICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg2MDAgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9pZl9ub3RfYXJyYXk8IFRbTl0gPgotewotfTsKLQotI2VuZGlmCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORyApCi0jIGRlZmluZSBORE5CT09TVF9TUF9NU0QoIFQgKSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pbnBsYWNlX3RhZzwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ID4oKQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX01TRCggVCApIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPigpCi0jZW5kaWYKLQotLy8gWmVyby1hcmd1bWVudCB2ZXJzaW9ucwotLy8KLS8vIFVzZWQgZXZlbiB3aGVuIHZhcmlhZGljIHRlbXBsYXRlcyBhcmUgYXZhaWxhYmxlIGJlY2F1c2Ugb2YgdGhlIG5ldyBUKCkgdnMgbmV3IFQgaXNzdWUKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCgpCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgpOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZF9ub2luaXQoKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQ7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBID4gdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkX25vaW5pdCggQSBjb25zdCAmIGEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQ7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIFZhcmlhZGljIHRlbXBsYXRlcywgcnZhbHVlIHJlZmVyZW5jZQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQXJnMSwgY2xhc3MuLi4gQXJncyA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBcmcxICYmIGFyZzEsIEFyZ3MgJiYgLi4uIGFyZ3MgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJnMT4oIGFyZzEgKSwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPiggYXJncyApLi4uICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQXJnMSwgY2xhc3MuLi4gQXJncyA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEFyZzEgJiYgYXJnMSwgQXJncyAmJiAuLi4gYXJncyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmcxPiggYXJnMSApLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZ3M+KCBhcmdzICkuLi4gKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLSNlbGlmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIEZvciBleGFtcGxlIE1TVkMgMTAuMAotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYsIEE3ICYmIGE3ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNywgQTggJiYgYTggKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOD4oIGE4ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNywgQTggJiYgYTggKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTg+KCBhOCApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNywgQTggJiYgYTgsIEE5ICYmIGE5ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTg+KCBhOCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOT4oIGE5ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTkgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcsIEE4ICYmIGE4LCBBOSAmJiBhOSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOD4oIGE4ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE5PiggYTkgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi0jZWxzZQotCi0vLyBDKyswMyB2ZXJzaW9uCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTggKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTkgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfU1BfTVNECi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9PQkpFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE4ZDRjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKLQotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHRtCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgIC8vIGZvciBzdGQ6OnB0cmRpZmZfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gRGVidWcgaG9va3MKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotCi12b2lkIHNwX2FycmF5X2NvbnN0cnVjdG9yX2hvb2sodm9pZCAqIHApOwotdm9pZCBzcF9hcnJheV9kZXN0cnVjdG9yX2hvb2sodm9pZCAqIHApOwotCi0jZW5kaWYKLQotLy8gIHNjb3BlZF9hcnJheSBleHRlbmRzIHNjb3BlZF9wdHIgdG8gYXJyYXlzLiBEZWxldGlvbiBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0bwotLy8gIGlzIGd1YXJhbnRlZWQsIGVpdGhlciBvbiBkZXN0cnVjdGlvbiBvZiB0aGUgc2NvcGVkX2FycmF5IG9yIHZpYSBhbiBleHBsaWNpdAotLy8gIHJlc2V0KCkuIFVzZSBzaGFyZWRfYXJyYXkgb3Igc3RkOjp2ZWN0b3IgaWYgeW91ciBuZWVkcyBhcmUgbW9yZSBjb21wbGV4LgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzY29wZWRfYXJyYXkgLy8gbm9uY29weWFibGUKLXsKLXByaXZhdGU6Ci0KLSAgICBUICogcHg7Ci0KLSAgICBzY29wZWRfYXJyYXkoc2NvcGVkX2FycmF5IGNvbnN0ICYpOwotICAgIHNjb3BlZF9hcnJheSAmIG9wZXJhdG9yPShzY29wZWRfYXJyYXkgY29uc3QgJik7Ci0KLSAgICB0eXBlZGVmIHNjb3BlZF9hcnJheTxUPiB0aGlzX3R5cGU7Ci0KLSAgICB2b2lkIG9wZXJhdG9yPT0oIHNjb3BlZF9hcnJheSBjb25zdCYgKSBjb25zdDsKLSAgICB2b2lkIG9wZXJhdG9yIT0oIHNjb3BlZF9hcnJheSBjb25zdCYgKSBjb25zdDsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLQotICAgIGV4cGxpY2l0IHNjb3BlZF9hcnJheSggVCAqIHAgPSAwICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggcCApCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3BfYXJyYXlfY29uc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgIH0KLQotICAgIH5zY29wZWRfYXJyYXkoKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9hcnJheV9kZXN0cnVjdG9yX2hvb2soIHB4ICk7Ci0jZW5kaWYKLSAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKCBweCApOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoVCAqIHAgPSAwKSAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcCA9PSAwIHx8IHAgIT0gcHggKTsgLy8gY2F0Y2ggc2VsZi1yZXNldCBlcnJvcnMKLSAgICAgICAgdGhpc190eXBlKHApLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvcltdKHN0ZDo6cHRyZGlmZl90IGkpIGNvbnN0IC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggaSA+PSAwICk7Ci0gICAgICAgIHJldHVybiBweFtpXTsKLSAgICB9Ci0KLSAgICBUICogZ2V0KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLS8vIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gImJvb2wiCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcD4KLQotICAgIHZvaWQgc3dhcChzY29wZWRfYXJyYXkgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgVCAqIHRtcCA9IGIucHg7Ci0gICAgICAgIGIucHggPSBweDsKLSAgICAgICAgcHggPSB0bXA7Ci0gICAgfQotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggc2NvcGVkX2FycmF5PFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNjb3BlZF9hcnJheTxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIHNjb3BlZF9hcnJheTxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzY29wZWRfYXJyYXk8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChzY29wZWRfYXJyYXk8VD4gJiBhLCBzY29wZWRfYXJyYXk8VD4gJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIGEuc3dhcChiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzliMzkzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfUFRSX0hQUF9JTkNMVURFRAotCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHRtCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0jIGluY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgLy8gZm9yIHN0ZDo6YXV0b19wdHIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gRGVidWcgaG9va3MKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotCi12b2lkIHNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKHZvaWQgKiBwKTsKLXZvaWQgc3Bfc2NhbGFyX2Rlc3RydWN0b3JfaG9vayh2b2lkICogcCk7Ci0KLSNlbmRpZgotCi0vLyAgc2NvcGVkX3B0ciBtaW1pY3MgYSBidWlsdC1pbiBwb2ludGVyIGV4Y2VwdCB0aGF0IGl0IGd1YXJhbnRlZXMgZGVsZXRpb24KLS8vICBvZiB0aGUgb2JqZWN0IHBvaW50ZWQgdG8sIGVpdGhlciBvbiBkZXN0cnVjdGlvbiBvZiB0aGUgc2NvcGVkX3B0ciBvciB2aWEKLS8vICBhbiBleHBsaWNpdCByZXNldCgpLiBzY29wZWRfcHRyIGlzIGEgc2ltcGxlIHNvbHV0aW9uIGZvciBzaW1wbGUgbmVlZHM7Ci0vLyAgdXNlIHNoYXJlZF9wdHIgb3Igc3RkOjphdXRvX3B0ciBpZiB5b3VyIG5lZWRzIGFyZSBtb3JlIGNvbXBsZXguCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNjb3BlZF9wdHIgLy8gbm9uY29weWFibGUKLXsKLXByaXZhdGU6Ci0KLSAgICBUICogcHg7Ci0KLSAgICBzY29wZWRfcHRyKHNjb3BlZF9wdHIgY29uc3QgJik7Ci0gICAgc2NvcGVkX3B0ciAmIG9wZXJhdG9yPShzY29wZWRfcHRyIGNvbnN0ICYpOwotCi0gICAgdHlwZWRlZiBzY29wZWRfcHRyPFQ+IHRoaXNfdHlwZTsKLQotICAgIHZvaWQgb3BlcmF0b3I9PSggc2NvcGVkX3B0ciBjb25zdCYgKSBjb25zdDsKLSAgICB2b2lkIG9wZXJhdG9yIT0oIHNjb3BlZF9wdHIgY29uc3QmICkgY29uc3Q7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgVCBlbGVtZW50X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBzY29wZWRfcHRyKCBUICogcCA9IDAgKTogcHgoIHAgKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9zY2FsYXJfY29uc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgZXhwbGljaXQgc2NvcGVkX3B0ciggc3RkOjphdXRvX3B0cjxUPiBwICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggcC5yZWxlYXNlKCkgKQotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKCBweCApOwotI2VuZGlmCi0gICAgfQotCi0jZW5kaWYKLQotICAgIH5zY29wZWRfcHRyKCkgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3Bfc2NhbGFyX2Rlc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoIHB4ICk7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldChUICogcCA9IDApIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBwID09IDAgfHwgcCAhPSBweCApOyAvLyBjYXRjaCBzZWxmLXJlc2V0IGVycm9ycwotICAgICAgICB0aGlzX3R5cGUocCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgVCAmIG9wZXJhdG9yKigpIGNvbnN0IC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIHJldHVybiAqcHg7Ci0gICAgfQotCi0gICAgVCAqIG9wZXJhdG9yLT4oKSBjb25zdCAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcHggIT0gMCApOwotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0gICAgVCAqIGdldCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0vLyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvICJib29sIgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHA+Ci0KLSAgICB2b2lkIHN3YXAoc2NvcGVkX3B0ciAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBUICogdG1wID0gYi5weDsKLSAgICAgICAgYi5weCA9IHB4OwotICAgICAgICBweCA9IHRtcDsKLSAgICB9Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBzY29wZWRfcHRyPFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNjb3BlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBzY29wZWRfcHRyPFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNjb3BlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChzY29wZWRfcHRyPFQ+ICYgYSwgc2NvcGVkX3B0cjxUPiAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi0vLyBnZXRfcG9pbnRlcihwKSBpcyBhIGdlbmVyaWMgd2F5IHRvIHNheSBwLmdldCgpCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBUICogZ2V0X3BvaW50ZXIoc2NvcGVkX3B0cjxUPiBjb25zdCAmIHApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZGVmMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgc2hhcmVkX2FycmF5LmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBmb3IgYnJva2VuIGNvbXBpbGVyIHdvcmthcm91bmRzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfYXJyYXlfbm10LmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgIC8vIFRSMSBjeWNsaWMgaW5jbHVzaW9uIGZpeAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfY291bnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgIC8vIGZvciBzdGQ6OnB0cmRpZmZfdAotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgLy8gZm9yIHN0ZDo6c3dhcAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgICAgLy8gZm9yIHN0ZDo6bGVzcwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8KLS8vICBzaGFyZWRfYXJyYXkKLS8vCi0vLyAgc2hhcmVkX2FycmF5IGV4dGVuZHMgc2hhcmVkX3B0ciB0byBhcnJheXMuCi0vLyAgVGhlIGFycmF5IHBvaW50ZWQgdG8gaXMgZGVsZXRlZCB3aGVuIHRoZSBsYXN0IHNoYXJlZF9hcnJheSBwb2ludGluZyB0byBpdAotLy8gIGlzIGRlc3Ryb3llZCBvciByZXNldC4KLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNoYXJlZF9hcnJheQotewotcHJpdmF0ZToKLQotICAgIC8vIEJvcmxhbmQgNS41LjEgc3BlY2lmaWMgd29ya2Fyb3VuZHMKLSAgICB0eXBlZGVmIGNoZWNrZWRfYXJyYXlfZGVsZXRlcjxUPiBkZWxldGVyOwotICAgIHR5cGVkZWYgc2hhcmVkX2FycmF5PFQ+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLQotICAgIHNoYXJlZF9hcnJheSgpIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIDAgKSwgcG4oKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9hcnJheSggWSAqIHAgKTogcHgoIHAgKSwgcG4oIHAsIGNoZWNrZWRfYXJyYXlfZGVsZXRlcjxZPigpICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPigpOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gUmVxdWlyZW1lbnRzOiBEJ3MgY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotICAgIC8vCi0gICAgLy8gc2hhcmVkX2FycmF5IHdpbGwgcmVsZWFzZSBwIGJ5IGNhbGxpbmcgZChwKQotICAgIC8vCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiBzaGFyZWRfYXJyYXkoIFkgKiBwLCBEIGQgKTogcHgoIHAgKSwgcG4oIHAsIGQgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgfQotCi0gICAgLy8gQXMgYWJvdmUsIGJ1dCB3aXRoIGFsbG9jYXRvci4gQSdzIGNvcHkgY29uc3RydWN0b3Igc2hhbGwgbm90IHRocm93LgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRCwgY2xhc3MgQT4gc2hhcmVkX2FycmF5KCBZICogcCwgRCBkLCBBIGEgKTogcHgoIHAgKSwgcG4oIHAsIGQsIGEgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgfQotCi0vLyAgZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IsIGRlc3RydWN0b3IgYXJlIGZpbmUuLi4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIC4uLiBleGNlcHQgaW4gQysrMHgsIG1vdmUgZGlzYWJsZXMgdGhlIGltcGxpY2l0IGNvcHkKLQotICAgIHNoYXJlZF9hcnJheSggc2hhcmVkX2FycmF5IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICB9Ci0KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheSAmJiByICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbigpCi0gICAgewotICAgICAgICBwbi5zd2FwKCByLnBuICk7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBjb252ZXJzaW9uCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgc2hhcmVkX2FycmF5KCBzaGFyZWRfYXJyYXk8WT4gY29uc3QgJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgfQotCi0gICAgLy8gYWxpYXNpbmcKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBZID4KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIsIGVsZW1lbnRfdHlwZSAqIHAgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCBwICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gYXNzaWdubWVudAotCi0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KCBzaGFyZWRfYXJyYXkgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoTkROQk9PU1RfTVNWQyA+PSAxNDAwKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfYXJyYXkgJiBvcGVyYXRvcj0oIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KCBzaGFyZWRfYXJyYXkgJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzaGFyZWRfYXJyYXkgJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KCBzaGFyZWRfYXJyYXk8WT4gJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzaGFyZWRfYXJyYXk8WT4gJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB2b2lkIHJlc2V0KCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSgpLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gdm9pZCByZXNldCggWSAqIHAgKSAvLyBZIG11c3QgYmUgY29tcGxldGUKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcCA9PSAwIHx8IHAgIT0gcHggKTsgLy8gY2F0Y2ggc2VsZi1yZXNldCBlcnJvcnMKLSAgICAgICAgdGhpc190eXBlKCBwICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiB2b2lkIHJlc2V0KCBZICogcCwgRCBkICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggcCwgZCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRCwgY2xhc3MgQT4gdm9pZCByZXNldCggWSAqIHAsIEQgZCwgQSBhICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggcCwgZCwgYSApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gdm9pZCByZXNldCggc2hhcmVkX2FycmF5PFk+IGNvbnN0ICYgciwgZWxlbWVudF90eXBlICogcCApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHIsIHAgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvcltdIChzdGQ6OnB0cmRpZmZfdCBpKSBjb25zdCAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGkgPj0gMCk7Ci0gICAgICAgIHJldHVybiBweFtpXTsKLSAgICB9Ci0gICAgCi0gICAgVCAqIGdldCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0vLyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvICJib29sIgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHA+Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udW5pcXVlKCk7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVzZV9jb3VudCgpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChzaGFyZWRfYXJyYXk8VD4gJiBvdGhlcikgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChweCwgb3RoZXIucHgpOwotICAgICAgICBwbi5zd2FwKG90aGVyLnBuKTsKLSAgICB9Ci0KLSAgICB2b2lkICogX2ludGVybmFsX2dldF9kZWxldGVyKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi5nZXRfZGVsZXRlciggdGkgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBmcmllbmQgY2xhc3Mgc2hhcmVkX2FycmF5OwotCi0gICAgVCAqIHB4OyAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgZGV0YWlsOjpzaGFyZWRfY291bnQgcG47ICAgIC8vIHJlZmVyZW5jZSBjb3VudGVyCi0KLX07ICAvLyBzaGFyZWRfYXJyYXkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBhLCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gc3RkOjpsZXNzPFQqPigpKGEuZ2V0KCksIGIuZ2V0KCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAoc2hhcmVkX2FycmF5PFQ+ICYgYSwgc2hhcmVkX2FycmF5PFQ+ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBELCBjbGFzcyBUID4gRCAqIGdldF9kZWxldGVyKCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBwICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IEQgKiA+KCBwLl9pbnRlcm5hbF9nZXRfZGVsZXRlciggTkROQk9PU1RfU1BfVFlQRUlEKEQpICkgKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKQotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZmE0N2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDM1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfUFRSX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHNoYXJlZF9wdHIuaHBwCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgIC8vIGZvciBicm9rZW4gY29tcGlsZXIgd29ya2Fyb3VuZHMKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9wdHJfbm10LmhwcD4KLSNlbHNlCi0KLS8vIEluIG9yZGVyIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIEJvb3N0LlRSMQotLy8gd2UgbWFrZSBzdXJlIHRoYXQgb3VyIGluY2x1ZGUgb2YgPG1lbW9yeT4gZG9lc24ndCB0cnkgdG8KLS8vIHB1bGwgaW4gdGhlIFRSMSBoZWFkZXJzOiB0aGF0J3Mgd2h5IHdlIHVzZSB0aGlzIGhlYWRlciAKLS8vIHJhdGhlciB0aGFuIGluY2x1ZGluZyA8bWVtb3J5PiBkaXJlY3RseToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHA+ICAvLyBzdGQ6OmF1dG9fcHRyCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1BfTk9fQVRPTUlDX0FDQ0VTUykKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21lbW9yeV9vcmRlci5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAvLyBmb3Igc3RkOjpzd2FwCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gICAgICAgICAgIC8vIGZvciBzdGQ6Omxlc3MKLSNpbmNsdWRlIDx0eXBlaW5mbz4gICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFkX2Nhc3QKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NUUkVBTSkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NGV0QpCi0jaW5jbHVkZSA8aW9zZndkPiAgICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhc2ljX29zdHJlYW0KLSNlbHNlCi0jaW5jbHVkZSA8b3N0cmVhbT4KLSNlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzaGFyZWRfcHRyOwotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgd2Vha19wdHI7Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBlbmFibGVfc2hhcmVkX2Zyb21fdGhpczsKLWNsYXNzIGVuYWJsZV9zaGFyZWRfZnJvbV9yYXc7Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotLy8gc3BfZWxlbWVudCwgZWxlbWVudF90eXBlCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2VsZW1lbnQKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2VsZW1lbnQ8IFRbXSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIHx8ICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg2MDAgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9lbGVtZW50PCBUW05dID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBzcF9kZXJlZmVyZW5jZSwgcmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3IqCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2RlcmVmZXJlbmNlCi17Ci0gICAgdHlwZWRlZiBUICYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCB2b2lkID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUykKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IHZvaWQgY29uc3QgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IHZvaWQgdm9sYXRpbGUgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IHZvaWQgY29uc3Qgdm9sYXRpbGUgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2VuZGlmIC8vICFkZWZpbmVkKE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TKQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZTwgVFtdID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgPCAweDYwMCApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCBUW05dID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBzcF9tZW1iZXJfYWNjZXNzLCByZXR1cm4gdHlwZSBvZiBvcGVyYXRvci0+Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX21lbWJlcl9hY2Nlc3MKLXsKLSAgICB0eXBlZGVmIFQgKiB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfbWVtYmVyX2FjY2VzczwgVFtdID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgPCAweDYwMCApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX21lbWJlcl9hY2Nlc3M8IFRbTl0gPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIHNwX2FycmF5X2FjY2VzcywgcmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3JbXQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9hcnJheV9hY2Nlc3MKLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2FycmF5X2FjY2VzczwgVFtdID4KLXsKLSAgICB0eXBlZGVmIFQgJiB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSB8fCAhTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NjAwICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc3BfYXJyYXlfYWNjZXNzPCBUW05dID4KLXsKLSAgICB0eXBlZGVmIFQgJiB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIHNwX2V4dGVudCwgZm9yIG9wZXJhdG9yW10gaW5kZXggY2hlY2sKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZXh0ZW50Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IDAgfTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX2V4dGVudDwgVFtOXSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IE4gfTsKLX07Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzIHN1cHBvcnQKLQotdGVtcGxhdGU8IGNsYXNzIFgsIGNsYXNzIFksIGNsYXNzIFQgPiBpbmxpbmUgdm9pZCBzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8WD4gY29uc3QgKiBwcHgsIFkgY29uc3QgKiBweSwgbmRuYm9vc3Q6OmVuYWJsZV9zaGFyZWRfZnJvbV90aGlzPCBUID4gY29uc3QgKiBwZSApCi17Ci0gICAgaWYoIHBlICE9IDAgKQotICAgIHsKLSAgICAgICAgcGUtPl9pbnRlcm5hbF9hY2NlcHRfb3duZXIoIHBweCwgY29uc3RfY2FzdDwgWSogPiggcHkgKSApOwotICAgIH0KLX0KLQotdGVtcGxhdGU8IGNsYXNzIFgsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8WD4gKiBwcHgsIFkgY29uc3QgKiBweSwgbmRuYm9vc3Q6OmVuYWJsZV9zaGFyZWRfZnJvbV9yYXcgY29uc3QgKiBwZSApOwotCi0jaWZkZWYgX01BTkFHRUQKLQotLy8gQXZvaWQgQzQ3OTMsIC4uLiBjYXVzZXMgbmF0aXZlIGNvZGUgZ2VuZXJhdGlvbgotCi1zdHJ1Y3Qgc3BfYW55X3BvaW50ZXIKLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzcF9hbnlfcG9pbnRlciggVCogKSB7fQotfTsKLQotaW5saW5lIHZvaWQgc3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoIHNwX2FueV9wb2ludGVyLCBzcF9hbnlfcG9pbnRlciwgc3BfYW55X3BvaW50ZXIgKQotewotfQotCi0jZWxzZSAvLyBfTUFOQUdFRAotCi1pbmxpbmUgdm9pZCBzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggLi4uICkKLXsKLX0KLQotI2VuZGlmIC8vIF9NQU5BR0VECi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fU0ZJTkFFICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQVVUT19QVFIgKQotCi0vLyBydmFsdWUgYXV0b19wdHIgc3VwcG9ydCBiYXNlZCBvbiBhIHRlY2huaXF1ZSBieSBEYXZlIEFicmFoYW1zCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBSID4gc3RydWN0IHNwX2VuYWJsZV9pZl9hdXRvX3B0cgotewotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFIgPiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2F1dG9fcHRyPCBzdGQ6OmF1dG9fcHRyPCBUID4sIFIgPgotewotICAgIHR5cGVkZWYgUiB0eXBlOwotfTsgCi0KLSNlbmRpZgotCi0vLyBzcF9hc3NlcnRfY29udmVydGlibGUKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBpbmxpbmUgdm9pZCBzcF9hc3NlcnRfY29udmVydGlibGUoKQotewotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICAvLyBzdGF0aWNfYXNzZXJ0KCBzcF9jb252ZXJ0aWJsZTwgWSwgVCA+Ojp2YWx1ZSApOwotICAgIHR5cGVkZWYgY2hhciB0bXBbIHNwX2NvbnZlcnRpYmxlPCBZLCBUID46OnZhbHVlPyAxOiAtMSBdOwotICAgICh2b2lkKXNpemVvZiggdG1wICk7Ci0KLSNlbHNlCi0KLSAgICBUKiBwID0gc3RhdGljX2Nhc3Q8IFkqID4oIDAgKTsKLSAgICAodm9pZClwOwotCi0jZW5kaWYKLX0KLQotLy8gcG9pbnRlciBjb25zdHJ1Y3RvciBoZWxwZXIKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9wb2ludGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiAqIHBweCwgWSAqIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCAmIHBuICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHAgKS5zd2FwKCBwbiApOwotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCBwcHgsIHAsIHAgKTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9wb2ludGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbXSA+ICogLypwcHgqLywgWSAqIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCAmIHBuICkKLXsKLSAgICBzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHAsIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZXI8IFQgPigpICkuc3dhcCggcG4gKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4sIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9wb2ludGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbTl0gPiAqIC8qcHB4Ki8sIFkgKiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQgJiBwbiApCi17Ci0gICAgc3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW05dLCBUW05dID4oKTsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHAsIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZXI8IFQgPigpICkuc3dhcCggcG4gKTsKLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotLy8gZGVsZXRlciBjb25zdHJ1Y3RvciBoZWxwZXIKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9kZWxldGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiAqIHBweCwgWSAqIHAgKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCBwcHgsIHAsIHAgKTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9kZWxldGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbXSA+ICogLypwcHgqLywgWSAqIC8qcCovICkKLXsKLSAgICBzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4sIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9kZWxldGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbTl0gPiAqIC8qcHB4Ki8sIFkgKiAvKnAqLyApCi17Ci0gICAgc3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW05dLCBUW05dID4oKTsKLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLQotLy8KLS8vICBzaGFyZWRfcHRyCi0vLwotLy8gIEFuIGVuaGFuY2VkIHJlbGF0aXZlIG9mIHNjb3BlZF9wdHIgd2l0aCByZWZlcmVuY2UgY291bnRlZCBjb3B5IHNlbWFudGljcy4KLS8vICBUaGUgb2JqZWN0IHBvaW50ZWQgdG8gaXMgZGVsZXRlZCB3aGVuIHRoZSBsYXN0IHNoYXJlZF9wdHIgcG9pbnRpbmcgdG8gaXQKLS8vICBpcyBkZXN0cm95ZWQgb3IgcmVzZXQuCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzaGFyZWRfcHRyCi17Ci1wcml2YXRlOgotCi0gICAgLy8gQm9ybGFuZCA1LjUuMSBzcGVjaWZpYyB3b3JrYXJvdW5kCi0gICAgdHlwZWRlZiBzaGFyZWRfcHRyPFQ+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbGVtZW50PCBUID46OnR5cGUgZWxlbWVudF90eXBlOwotCi0gICAgc2hhcmVkX3B0cigpIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIDAgKSwgcG4oKSAvLyBuZXZlciB0aHJvd3MgaW4gMS4zMCsKLSAgICB7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0gICAgc2hhcmVkX3B0ciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggMCApLCBwbigpIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKCBZICogcCApOiBweCggcCApLCBwbigpIC8vIFkgbXVzdCBiZSBjb21wbGV0ZQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfcG9pbnRlcl9jb25zdHJ1Y3QoIHRoaXMsIHAsIHBuICk7Ci0gICAgfQotCi0gICAgLy8KLSAgICAvLyBSZXF1aXJlbWVudHM6IEQncyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0gICAgLy8KLSAgICAvLyBzaGFyZWRfcHRyIHdpbGwgcmVsZWFzZSBwIGJ5IGNhbGxpbmcgZChwKQotICAgIC8vCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiBzaGFyZWRfcHRyKCBZICogcCwgRCBkICk6IHB4KCBwICksIHBuKCBwLCBkICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCBwICk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRD4gc2hhcmVkX3B0ciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90IHAsIEQgZCApOiBweCggcCApLCBwbiggcCwgZCApCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBBcyBhYm92ZSwgYnV0IHdpdGggYWxsb2NhdG9yLiBBJ3MgY29weSBjb25zdHJ1Y3RvciBzaGFsbCBub3QgdGhyb3cuCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBELCBjbGFzcyBBPiBzaGFyZWRfcHRyKCBZICogcCwgRCBkLCBBIGEgKTogcHgoIHAgKSwgcG4oIHAsIGQsIGEgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHAgKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBELCBjbGFzcyBBPiBzaGFyZWRfcHRyKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgcCwgRCBkLCBBIGEgKTogcHgoIHAgKSwgcG4oIHAsIGQsIGEgKQotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0vLyAgZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IsIGRlc3RydWN0b3IgYXJlIGZpbmUuLi4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIC4uLiBleGNlcHQgaW4gQysrMHgsIG1vdmUgZGlzYWJsZXMgdGhlIGltcGxpY2l0IGNvcHkKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHIgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoIHdlYWtfcHRyPFk+IGNvbnN0ICYgciApOiBwbiggci5wbiApIC8vIG1heSB0aHJvdwotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICAvLyBpdCBpcyBub3cgc2FmZSB0byBjb3B5IHIucHgsIGFzIHBuKHIucG4pIGRpZCBub3QgdGhyb3cKLSAgICAgICAgcHggPSByLnB4OwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciggd2Vha19wdHI8WT4gY29uc3QgJiByLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9ub3Rocm93X3RhZyApCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggMCApLCBwbiggci5wbiwgbmRuYm9vc3Q6OmRldGFpbDo6c3Bfbm90aHJvd190YWcoKSApCi0gICAgewotICAgICAgICBpZiggIXBuLmVtcHR5KCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBweCA9IHIucHg7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPFksVD46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotICAgIH0KLQotICAgIC8vIGFsaWFzaW5nCi0gICAgdGVtcGxhdGU8IGNsYXNzIFkgPgotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByLCBlbGVtZW50X3R5cGUgKiBwICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggcCApLCBwbiggci5wbiApCi0gICAgewotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKCBzdGQ6OmF1dG9fcHRyPFk+ICYgciApOiBweChyLmdldCgpKSwgcG4oKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBZICogdG1wID0gci5nZXQoKTsKLSAgICAgICAgcG4gPSBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHIgKTsKLQotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZWxldGVyX2NvbnN0cnVjdCggdGhpcywgdG1wICk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciggc3RkOjphdXRvX3B0cjxZPiAmJiByICk6IHB4KHIuZ2V0KCkpLCBwbigpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIFkgKiB0bXAgPSByLmdldCgpOwotICAgICAgICBwbiA9IG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggciApOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCB0bXAgKTsKLSAgICB9Ci0KLSNlbGlmICFkZWZpbmVkKCBORE5CT09TVF9OT19TRklOQUUgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBcD4KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKCBBcCByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfYXV0b19wdHI8QXAsIGludD46OnR5cGUgPSAwICk6IHB4KCByLmdldCgpICksIHBuKCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQXA6OmVsZW1lbnRfdHlwZSBZOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgWSAqIHRtcCA9IHIuZ2V0KCk7Ci0gICAgICAgIHBuID0gbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCByICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHRtcCApOwotICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRSwgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fQVVUT19QVFIKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIEQgPgotICAgIHNoYXJlZF9wdHIoIHN0ZDo6dW5pcXVlX3B0cjwgWSwgRCA+ICYmIHIgKTogcHgoIHIuZ2V0KCkgKSwgcG4oKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9wdHI8IFksIEQgPjo6cG9pbnRlciB0bXAgPSByLmdldCgpOwotICAgICAgICBwbiA9IG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggciApOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCB0bXAgKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gYXNzaWdubWVudAotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0ciBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKHIpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKE5ETkJPT1NUX01TVkMgPj0gMTQwMCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPShzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcikgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZShyKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc3RkOjphdXRvX3B0cjxZPiAmIHIgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIHN0ZDo6YXV0b19wdHI8WT4gJiYgciApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzdGQ6OmF1dG9fcHRyPFk+ICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbGlmICFkZWZpbmVkKCBORE5CT09TVF9OT19TRklOQUUgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBcD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfYXV0b19wdHI8IEFwLCBzaGFyZWRfcHRyICYgPjo6dHlwZSBvcGVyYXRvcj0oIEFwIHIgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRSwgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fQVVUT19QVFIKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBzdGQ6OnVuaXF1ZV9wdHI8WSwgRD4gJiYgciApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzdGQ6OnVuaXF1ZV9wdHI8WSwgRD4gJiYgPiggciApICkuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0vLyBNb3ZlIHN1cHBvcnQKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCkKLSAgICB7Ci0gICAgICAgIHBuLnN3YXAoIHIucG4gKTsKLSAgICAgICAgci5weCA9IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0cjxZPiAmJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0cjxZPiAmJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbigpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIHBuLnN3YXAoIHIucG4gKTsKLSAgICAgICAgci5weCA9IDA7Ci0gICAgfQotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0ciAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHNoYXJlZF9wdHIgJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0cjxZPiAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHNoYXJlZF9wdHI8WT4gJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVCAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSgpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHZvaWQgcmVzZXQoKSBORE5CT09TVF9OT0VYQ0VQVCAvLyBuZXZlciB0aHJvd3MgaW4gMS4zMCsKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSgpLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IHZvaWQgcmVzZXQoIFkgKiBwICkgLy8gWSBtdXN0IGJlIGNvbXBsZXRlCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHAgPT0gMCB8fCBwICE9IHB4ICk7IC8vIGNhdGNoIHNlbGYtcmVzZXQgZXJyb3JzCi0gICAgICAgIHRoaXNfdHlwZSggcCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4gdm9pZCByZXNldCggWSAqIHAsIEQgZCApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHAsIGQgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQsIGNsYXNzIEE+IHZvaWQgcmVzZXQoIFkgKiBwLCBEIGQsIEEgYSApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHAsIGQsIGEgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IHZvaWQgcmVzZXQoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByLCBlbGVtZW50X3R5cGUgKiBwICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciwgcCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotICAgIAotICAgIC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlcmVmZXJlbmNlPCBUID46OnR5cGUgb3BlcmF0b3IqICgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgcmV0dXJuICpweDsKLSAgICB9Ci0gICAgCi0gICAgLy8gbmV2ZXIgdGhyb3dzIChidXQgaGFzIGEgTkROQk9PU1RfQVNTRVJUIGluIGl0LCBzbyBub3QgbWFya2VkIHdpdGggTkROQk9PU1RfTk9FWENFUFQpCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbWVtYmVyX2FjY2VzczwgVCA+Ojp0eXBlIG9wZXJhdG9yLT4gKCkgY29uc3QgCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLSAgICAKLSAgICAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hcnJheV9hY2Nlc3M8IFQgPjo6dHlwZSBvcGVyYXRvcltdICggc3RkOjpwdHJkaWZmX3QgaSApIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBpID49IDAgJiYgKCBpIDwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZXh0ZW50PCBUID46OnZhbHVlIHx8IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2V4dGVudDwgVCA+Ojp2YWx1ZSA9PSAwICkgKTsKLQotICAgICAgICByZXR1cm4gcHhbIGkgXTsKLSAgICB9Ci0KLSAgICBlbGVtZW50X3R5cGUgKiBnZXQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotLy8gaW1wbGljaXQgY29udmVyc2lvbiB0byAiYm9vbCIKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwPgotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVuaXF1ZSgpOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51c2VfY291bnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoIHNoYXJlZF9wdHIgJiBvdGhlciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgcG4uc3dhcChvdGhlci5wbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gYm9vbCBvd25lcl9iZWZvcmUoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByaHMgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuIDwgcmhzLnBuOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGJvb2wgb3duZXJfYmVmb3JlKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHJocyApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4gPCByaHMucG47Ci0gICAgfQotCi0gICAgdm9pZCAqIF9pbnRlcm5hbF9nZXRfZGVsZXRlciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiB0aSApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4uZ2V0X2RlbGV0ZXIoIHRpICk7Ci0gICAgfQotCi0gICAgdm9pZCAqIF9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi5nZXRfdW50eXBlZF9kZWxldGVyKCk7Ci0gICAgfQotCi0gICAgYm9vbCBfaW50ZXJuYWxfZXF1aXYoIHNoYXJlZF9wdHIgY29uc3QgJiByICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSByLnB4ICYmIHBuID09IHIucG47Ci0gICAgfQotCi0vLyBUYXN0ZWxlc3MgYXMgdGhpcyBtYXkgc2VlbSwgbWFraW5nIGFsbCBtZW1iZXJzIHB1YmxpYyBhbGxvd3MgbWVtYmVyIHRlbXBsYXRlcwotLy8gdG8gd29yayBpbiB0aGUgYWJzZW5jZSBvZiBtZW1iZXIgdGVtcGxhdGUgZnJpZW5kcy4gKE1hdHRoZXcgTGFuZ3N0b24pCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLQotcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyBzaGFyZWRfcHRyOwotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyB3ZWFrX3B0cjsKLQotCi0jZW5kaWYKLQotICAgIGVsZW1lbnRfdHlwZSAqIHB4OyAgICAgICAgICAgICAgICAgLy8gY29udGFpbmVkIHBvaW50ZXIKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQgcG47ICAgIC8vIHJlZmVyZW5jZSBjb3VudGVyCi0KLX07ICAvLyBzaGFyZWRfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Ci19Ci0KLSNpZiBfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDw9IDk2Ci0KLS8vIFJlc29sdmUgdGhlIGFtYmlndWl0eSBiZXR3ZWVuIG91ciBvcCE9IGFuZCB0aGUgb25lIGluIHJlbF9vcHMKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxUPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLm93bmVyX2JlZm9yZSggYiApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKHNoYXJlZF9wdHI8VD4gJiBhLCBzaGFyZWRfcHRyPFQ+ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IHNoYXJlZF9wdHI8VD4gc3RhdGljX3BvaW50ZXJfY2FzdCggc2hhcmVkX3B0cjxVPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgICh2b2lkKSBzdGF0aWNfY2FzdDwgVCogPiggc3RhdGljX2Nhc3Q8IFUqID4oIDAgKSApOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgRTsKLQotICAgIEUgKiBwID0gc3RhdGljX2Nhc3Q8IEUqID4oIHIuZ2V0KCkgKTsKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxUPiggciwgcCApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBzaGFyZWRfcHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdCggc2hhcmVkX3B0cjxVPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgICh2b2lkKSBjb25zdF9jYXN0PCBUKiA+KCBzdGF0aWNfY2FzdDwgVSogPiggMCApICk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNoYXJlZF9wdHI8VD46OmVsZW1lbnRfdHlwZSBFOwotCi0gICAgRSAqIHAgPSBjb25zdF9jYXN0PCBFKiA+KCByLmdldCgpICk7Ci0gICAgcmV0dXJuIHNoYXJlZF9wdHI8VD4oIHIsIHAgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gc2hhcmVkX3B0cjxUPiBkeW5hbWljX3BvaW50ZXJfY2FzdCggc2hhcmVkX3B0cjxVPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgICh2b2lkKSBkeW5hbWljX2Nhc3Q8IFQqID4oIHN0YXRpY19jYXN0PCBVKiA+KCAwICkgKTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2hhcmVkX3B0cjxUPjo6ZWxlbWVudF90eXBlIEU7Ci0KLSAgICBFICogcCA9IGR5bmFtaWNfY2FzdDwgRSogPiggci5nZXQoKSApOwotICAgIHJldHVybiBwPyBzaGFyZWRfcHRyPFQ+KCByLCBwICk6IHNoYXJlZF9wdHI8VD4oKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gc2hhcmVkX3B0cjxUPiByZWludGVycHJldF9wb2ludGVyX2Nhc3QoIHNoYXJlZF9wdHI8VT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICAodm9pZCkgcmVpbnRlcnByZXRfY2FzdDwgVCogPiggc3RhdGljX2Nhc3Q8IFUqID4oIDAgKSApOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgRTsKLQotICAgIEUgKiBwID0gcmVpbnRlcnByZXRfY2FzdDwgRSogPiggci5nZXQoKSApOwotICAgIHJldHVybiBzaGFyZWRfcHRyPFQ+KCByLCBwICk7Ci19Ci0KLS8vIGdldF9wb2ludGVyKCkgZW5hYmxlcyBuZG5ib29zdDo6bWVtX2ZuIHRvIHJlY29nbml6ZSBzaGFyZWRfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgKiBnZXRfcG9pbnRlcihzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotLy8gb3BlcmF0b3I8PAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU9TVFJFQU0pCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JT1NUUkVBTVMpIHx8ICggZGVmaW5lZChfX0dOVUNfXykgJiYgIChfX0dOVUNfXyA8IDMpICkKLQotdGVtcGxhdGU8Y2xhc3MgWT4gc3RkOjpvc3RyZWFtICYgb3BlcmF0b3I8PCAoc3RkOjpvc3RyZWFtICYgb3MsIHNoYXJlZF9wdHI8WT4gY29uc3QgJiBwKQotewotICAgIG9zIDw8IHAuZ2V0KCk7Ci0gICAgcmV0dXJuIG9zOwotfQotCi0jZWxzZQotCi0vLyBpbiBTVExwb3J0J3Mgbm8taW9zdHJlYW1zIG1vZGUgbm8gaW9zdHJlYW0gc3ltYm9scyBjYW4gYmUgdXNlZAotI2lmbmRlZiBfU1RMUF9OT19JT1NUUkVBTVMKLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwICYmIF9fU0dJX1NUTF9QT1JUKQotLy8gTVNWQzYgaGFzIHByb2JsZW1zIGZpbmRpbmcgc3RkOjpiYXNpY19vc3RyZWFtIHRocm91Z2ggdGhlIHVzaW5nIGRlY2xhcmF0aW9uIGluIG5hbWVzcGFjZSBfU1RMCi11c2luZyBzdGQ6OmJhc2ljX29zdHJlYW07Ci10ZW1wbGF0ZTxjbGFzcyBFLCBjbGFzcyBULCBjbGFzcyBZPiBiYXNpY19vc3RyZWFtPEUsIFQ+ICYgb3BlcmF0b3I8PCAoYmFzaWNfb3N0cmVhbTxFLCBUPiAmIG9zLCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcCkKLSMgZWxzZQotdGVtcGxhdGU8Y2xhc3MgRSwgY2xhc3MgVCwgY2xhc3MgWT4gc3RkOjpiYXNpY19vc3RyZWFtPEUsIFQ+ICYgb3BlcmF0b3I8PCAoc3RkOjpiYXNpY19vc3RyZWFtPEUsIFQ+ICYgb3MsIHNoYXJlZF9wdHI8WT4gY29uc3QgJiBwKQotIyBlbmRpZgotewotICAgIG9zIDw8IHAuZ2V0KCk7Ci0gICAgcmV0dXJuIG9zOwotfQotCi0jZW5kaWYgLy8gX1NUTFBfTk9fSU9TVFJFQU1TCi0KLSNlbmRpZiAvLyBfX0dOVUNfXyA8IDMKLQotI2VuZGlmIC8vICFkZWZpbmVkKE5ETkJPT1NUX05PX0lPU1RSRUFNKQotCi0vLyBnZXRfZGVsZXRlcgotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiAoIGRlZmluZWQoX19HTlVDX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fSFBfYUNDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8PSAzMzUwMCkgKQotCi0vLyBnKysgMi45eCBkb2Vzbid0IGFsbG93IHN0YXRpY19jYXN0PFggY29uc3QgKj4odm9pZCAqKQotLy8gYXBwYXJlbnRseSBFREcgMi4zOCBhbmQgSFAgYUNDIEEuMDMuMzUgYWxzbyBkb24ndCBhY2NlcHQgaXQKLQotdGVtcGxhdGU8Y2xhc3MgRCwgY2xhc3MgVD4gRCAqIGJhc2ljX2dldF9kZWxldGVyKHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwKQotewotICAgIHZvaWQgY29uc3QgKiBxID0gcC5faW50ZXJuYWxfZ2V0X2RlbGV0ZXIoTkROQk9PU1RfU1BfVFlQRUlEKEQpKTsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxEICo+KHN0YXRpY19jYXN0PEQgY29uc3QgKj4ocSkpOwotfQotCi0jZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBELCBjbGFzcyBUPiBEICogYmFzaWNfZ2V0X2RlbGV0ZXIoIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RCAqPiggcC5faW50ZXJuYWxfZ2V0X2RlbGV0ZXIoTkROQk9PU1RfU1BfVFlQRUlEKEQpKSApOwotfQotCi0jZW5kaWYKLQotY2xhc3MgZXNmdDJfZGVsZXRlcl93cmFwcGVyCi17Ci1wcml2YXRlOgotCi0gICAgc2hhcmVkX3B0cjx2b2lkPiBkZWxldGVyXzsKLQotcHVibGljOgotCi0gICAgZXNmdDJfZGVsZXRlcl93cmFwcGVyKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPiB2b2lkIHNldF9kZWxldGVyKCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgZGVsZXRlciApCi0gICAgewotICAgICAgICBkZWxldGVyXyA9IGRlbGV0ZXI7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRD4gRCogZ2V0X2RlbGV0ZXIoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpkZXRhaWw6OmJhc2ljX2dldF9kZWxldGVyPEQ+KCBkZWxldGVyXyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUPiB2b2lkIG9wZXJhdG9yKCkoIFQqICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggZGVsZXRlcl8udXNlX2NvdW50KCkgPD0gMSApOwotICAgICAgICBkZWxldGVyXy5yZXNldCgpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBELCBjbGFzcyBUPiBEICogZ2V0X2RlbGV0ZXIoIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBEICpkZWwgPSBuZG5ib29zdDo6ZGV0YWlsOjpiYXNpY19nZXRfZGVsZXRlcjxEPihwKTsKLQotICAgIGlmKGRlbCA9PSAwKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZXNmdDJfZGVsZXRlcl93cmFwcGVyICpkZWxfd3JhcHBlciA9IG5kbmJvb3N0OjpkZXRhaWw6OmJhc2ljX2dldF9kZWxldGVyPG5kbmJvb3N0OjpkZXRhaWw6OmVzZnQyX2RlbGV0ZXJfd3JhcHBlcj4ocCk7Ci0vLyBUaGUgZm9sbG93aW5nIGdldF9kZWxldGVyIG1ldGhvZCBjYWxsIGlzIGZ1bGx5IHF1YWxpZmllZCBiZWNhdXNlCi0vLyBvbGRlciB2ZXJzaW9ucyBvZiBnY2MgKDIuOTUsIDMuMi4zKSBmYWlsIHRvIGNvbXBpbGUgaXQgd2hlbiB3cml0dGVuIGRlbF93cmFwcGVyLT5nZXRfZGVsZXRlcjxEPigpCi0gICAgICAgIGlmKGRlbF93cmFwcGVyKSBkZWwgPSBkZWxfd3JhcHBlci0+OjpuZG5ib29zdDo6ZGV0YWlsOjplc2Z0Ml9kZWxldGVyX3dyYXBwZXI6OmdldF9kZWxldGVyPEQ+KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlbDsKLX0KLQotLy8gYXRvbWljIGFjY2VzcwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1BfTk9fQVRPTUlDX0FDQ0VTUykKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgYXRvbWljX2lzX2xvY2tfZnJlZSggc2hhcmVkX3B0cjxUPiBjb25zdCAqIC8qcCovICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHNoYXJlZF9wdHI8VD4gYXRvbWljX2xvYWQoIHNoYXJlZF9wdHI8VD4gY29uc3QgKiBwICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9ja19wb29sPDI+OjpzY29wZWRfbG9jayBsb2NrKCBwICk7Ci0gICAgcmV0dXJuICpwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgc2hhcmVkX3B0cjxUPiBhdG9taWNfbG9hZF9leHBsaWNpdCggc2hhcmVkX3B0cjxUPiBjb25zdCAqIHAsIG1lbW9yeV9vcmRlciAvKm1vKi8gKQotewotICAgIHJldHVybiBhdG9taWNfbG9hZCggcCApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGF0b21pY19zdG9yZSggc2hhcmVkX3B0cjxUPiAqIHAsIHNoYXJlZF9wdHI8VD4gciApCi17Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2tfcG9vbDwyPjo6c2NvcGVkX2xvY2sgbG9jayggcCApOwotICAgIHAtPnN3YXAoIHIgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiByLCBtZW1vcnlfb3JkZXIgLyptbyovICkKLXsKLSAgICBhdG9taWNfc3RvcmUoIHAsIHIgKTsgLy8gc3RkOjptb3ZlKCByICkKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gc2hhcmVkX3B0cjxUPiBhdG9taWNfZXhjaGFuZ2UoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+IHIgKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwaW5sb2NrICYgc3AgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9ja19wb29sPDI+OjpzcGlubG9ja19mb3IoIHAgKTsKLQotICAgIHNwLmxvY2soKTsKLSAgICBwLT5zd2FwKCByICk7Ci0gICAgc3AudW5sb2NrKCk7Ci0KLSAgICByZXR1cm4gcjsgLy8gcmV0dXJuIHN0ZDo6bW92ZSggciApCi19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHNoYXJlZF9wdHI8VD4gYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiByLCBtZW1vcnlfb3JkZXIgLyptbyovICkKLXsKLSAgICByZXR1cm4gYXRvbWljX2V4Y2hhbmdlKCBwLCByICk7IC8vIHN0ZDo6bW92ZSggciApCi19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+ICogdiwgc2hhcmVkX3B0cjxUPiB3ICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9jayAmIHNwID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2tfcG9vbDwyPjo6c3BpbmxvY2tfZm9yKCBwICk7Ci0KLSAgICBzcC5sb2NrKCk7Ci0KLSAgICBpZiggcC0+X2ludGVybmFsX2VxdWl2KCAqdiApICkKLSAgICB7Ci0gICAgICAgIHAtPnN3YXAoIHcgKTsKLQotICAgICAgICBzcC51bmxvY2soKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc2hhcmVkX3B0cjxUPiB0bXAoICpwICk7Ci0KLSAgICAgICAgc3AudW5sb2NrKCk7Ci0KLSAgICAgICAgdG1wLnN3YXAoICp2ICk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX2V4cGxpY2l0KCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiAqIHYsIHNoYXJlZF9wdHI8VD4gdywgbWVtb3J5X29yZGVyIC8qc3VjY2VzcyovLCBtZW1vcnlfb3JkZXIgLypmYWlsdXJlKi8gKQotewotICAgIHJldHVybiBhdG9taWNfY29tcGFyZV9leGNoYW5nZSggcCwgdiwgdyApOyAvLyBzdGQ6Om1vdmUoIHcgKQotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoTkROQk9PU1RfU1BfTk9fQVRPTUlDX0FDQ0VTUykKLQotLy8gaGFzaF92YWx1ZQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBoYXNoOwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoPCBUKiA+KCkoIHAuZ2V0KCkgKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKQotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci93ZWFrX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci93ZWFrX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZmM0YmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvd2Vha19wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfV0VBS19QVFJfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgd2Vha19wdHIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3dlYWtfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxtZW1vcnk+IC8vIGJvb3N0LlRSMSBpbmNsdWRlIG9yZGVyIGZpeAotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyB3ZWFrX3B0cgotewotcHJpdmF0ZToKLQotICAgIC8vIEJvcmxhbmQgNS41LjEgc3BlY2lmaWMgd29ya2Fyb3VuZHMKLSAgICB0eXBlZGVmIHdlYWtfcHRyPFQ+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbGVtZW50PCBUID46OnR5cGUgZWxlbWVudF90eXBlOwotCi0gICAgd2Vha19wdHIoKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KDApLCBwbigpIC8vIG5ldmVyIHRocm93cyBpbiAxLjMwKwotICAgIHsKLSAgICB9Ci0KLS8vICBnZW5lcmF0ZWQgY29weSBjb25zdHJ1Y3RvciwgYXNzaWdubWVudCwgZGVzdHJ1Y3RvciBhcmUgZmluZS4uLgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotLy8gLi4uIGV4Y2VwdCBpbiBDKysweCwgbW92ZSBkaXNhYmxlcyB0aGUgaW1wbGljaXQgY29weQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyIGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICB9Ci0KLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggd2Vha19wdHIgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHB4ID0gci5weDsKLSAgICAgICAgcG4gPSByLnBuOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotLy8KLS8vICBUaGUgIm9idmlvdXMiIGNvbnZlcnRpbmcgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb246Ci0vLwotLy8gIHRlbXBsYXRlPGNsYXNzIFk+Ci0vLyAgd2Vha19wdHIod2Vha19wdHI8WT4gY29uc3QgJiByKTogcHgoci5weCksIHBuKHIucG4pIC8vIG5ldmVyIHRocm93cwotLy8gIHsKLS8vICB9Ci0vLwotLy8gIGhhcyBhIHNlcmlvdXMgcHJvYmxlbS4KLS8vCi0vLyAgci5weCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gaW52YWxpZGF0ZWQuIFRoZSBweChyLnB4KQotLy8gIGNvbnZlcnNpb24gbWF5IHJlcXVpcmUgYWNjZXNzIHRvICpyLnB4ICh2aXJ0dWFsIGluaGVyaXRhbmNlKS4KLS8vCi0vLyAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGF2b2lkIHNwdXJpb3VzIGFjY2VzcyB2aW9sYXRpb25zIHNpbmNlCi0vLyAgaW4gbXVsdGl0aHJlYWRlZCBwcm9ncmFtcyByLnB4IG1heSBiZSBpbnZhbGlkYXRlZCBhdCBhbnkgcG9pbnQuCi0vLwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyPFk+IGNvbnN0ICYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPFksVD46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KHIubG9jaygpLmdldCgpKSwgcG4oci5wbikKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0cjxZPiAmJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyPFk+ICYmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLmxvY2soKS5nZXQoKSApLCBwbiggc3RhdGljX2Nhc3Q8IG5kbmJvb3N0OjpkZXRhaWw6OndlYWtfY291bnQgJiYgPiggci5wbiApICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotICAgIC8vIGZvciBiZXR0ZXIgZWZmaWNpZW5jeSBpbiB0aGUgVCA9PSBZIGNhc2UKLSAgICB3ZWFrX3B0ciggd2Vha19wdHIgJiYgciApCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggc3RhdGljX2Nhc3Q8IG5kbmJvb3N0OjpkZXRhaWw6OndlYWtfY291bnQgJiYgPiggci5wbiApICkKLSAgICB7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotICAgIC8vIGZvciBiZXR0ZXIgZWZmaWNpZW5jeSBpbiB0aGUgVCA9PSBZIGNhc2UKLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggd2Vha19wdHIgJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCB3ZWFrX3B0ciAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgd2Vha19wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgd2Vha19wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChORE5CT09TVF9NU1ZDID49IDEzMDApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHdlYWtfcHRyICYgb3BlcmF0b3I9KCB3ZWFrX3B0cjxZPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBweCA9IHIubG9jaygpLmdldCgpOwotICAgICAgICBwbiA9IHIucG47Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHdlYWtfcHRyICYgb3BlcmF0b3I9KCB3ZWFrX3B0cjxZPiAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHdlYWtfcHRyPFk+ICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBweCA9IHIucHg7Ci0gICAgICAgIHBuID0gci5wbjsKLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHNoYXJlZF9wdHI8VD4gbG9jaygpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gc2hhcmVkX3B0cjxUPiggKnRoaXMsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX25vdGhyb3dfdGFnKCkgKTsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udXNlX2NvdW50KCk7Ci0gICAgfQotCi0gICAgYm9vbCBleHBpcmVkKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51c2VfY291bnQoKSA9PSAwOwotICAgIH0KLQotICAgIGJvb2wgX2VtcHR5KCkgY29uc3QgLy8gZXh0ZW5zaW9uLCBub3QgaW4gc3RkOjp3ZWFrX3B0cgotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLmVtcHR5KCk7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldCgpIE5ETkJPT1NUX05PRVhDRVBUIC8vIG5ldmVyIHRocm93cyBpbiAxLjMwKwotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHRoaXNfdHlwZSAmIG90aGVyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgc3RkOjpzd2FwKHB4LCBvdGhlci5weCk7Ci0gICAgICAgIHBuLnN3YXAob3RoZXIucG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFk+Ci0gICAgdm9pZCBfaW50ZXJuYWxfYWxpYXNpbmdfYXNzaWduKHdlYWtfcHRyPFk+IGNvbnN0ICYgciwgZWxlbWVudF90eXBlICogcHgyKQotICAgIHsKLSAgICAgICAgcHggPSBweDI7Ci0gICAgICAgIHBuID0gci5wbjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBib29sIG93bmVyX2JlZm9yZSggd2Vha19wdHI8WT4gY29uc3QgJiByaHMgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuIDwgcmhzLnBuOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGJvb2wgb3duZXJfYmVmb3JlKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcmhzICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbiA8IHJocy5wbjsKLSAgICB9Ci0KLS8vIFRhc3RlbGVzcyBhcyB0aGlzIG1heSBzZWVtLCBtYWtpbmcgYWxsIG1lbWJlcnMgcHVibGljIGFsbG93cyBtZW1iZXIgdGVtcGxhdGVzCi0vLyB0byB3b3JrIGluIHRoZSBhYnNlbmNlIG9mIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLiAoTWF0dGhldyBMYW5nc3RvbikKLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotCi1wcml2YXRlOgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZnJpZW5kIGNsYXNzIHdlYWtfcHRyOwotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyBzaGFyZWRfcHRyOwotCi0jZW5kaWYKLQotICAgIGVsZW1lbnRfdHlwZSAqIHB4OyAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6d2Vha19jb3VudCBwbjsgLy8gcmVmZXJlbmNlIGNvdW50ZXIKLQotfTsgIC8vIHdlYWtfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPCh3ZWFrX3B0cjxUPiBjb25zdCAmIGEsIHdlYWtfcHRyPFU+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5vd25lcl9iZWZvcmUoIGIgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwKHdlYWtfcHRyPFQ+ICYgYSwgd2Vha19wdHI8VD4gJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIGEuc3dhcChiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9XRUFLX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODE1MDI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc3RhdGljX2Fzc2VydCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLyoKLSBSZXZpc2lvbiBoaXN0b3J5OgotICAgMDIgQXVndXN0IDIwMDAKLSAgICAgIEluaXRpYWwgdmVyc2lvbi4KLSovCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0vLwotLy8gVGhpcyBpcyBob3JyaWJsZSwgYnV0IGl0IHNlZW1zIHRvIGJlIHRoZSBvbmx5IHdlIGNhbiBzaHV0IHVwIHRoZQotLy8gImFub255bW91cyB2YXJpYWRpYyBtYWNyb3Mgd2VyZSBpbnRyb2R1Y2VkIGluIEM5OSBbLVd2YXJpYWRpYy1tYWNyb3NdIgotLy8gd2FybmluZyB0aGF0IGdldCBzcGV3ZWQgb3V0IG90aGVyd2lzZSBpbiBub24tQysrMTEgbW9kZS4KLS8vCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coIC4uLiApIHN0YXRpY19hc3NlcnQoX19WQV9BUkdTX18pCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coIEIsIE1zZyApIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKQotIyAgZW5kaWYKLSNlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coIEIsIE1zZyApIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKQotI2VuZGlmCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vCi0vLyB3b3JrYXJvdW5kIGZvciBidWdneSBpbnRlZ3JhbC1jb25zdGFudCBleHByZXNzaW9uIHN1cHBvcnQ6Ci0jZGVmaW5lIE5ETkJPT1NUX0JVR0dZX0lOVEVHUkFMX0NPTlNUQU5UX0VYUFJFU1NJT05TCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA9PSAzKSAmJiAoKF9fR05VQ19NSU5PUl9fID09IDMpIHx8IChfX0dOVUNfTUlOT1JfXyA9PSA0KSkKLS8vIGdjYyAzLjMgYW5kIDMuNCBkb24ndCBwcm9kdWNlIGdvb2QgZXJyb3IgbWVzc2FnZXMgd2l0aCB0aGUgZGVmYXVsdCB2ZXJzaW9uOgotIyAgZGVmaW5lIE5ETkJPT1NUX1NBX0dDQ19XT1JLQVJPVU5ECi0jZW5kaWYKLQotLy8KLS8vIElmIHRoZSBjb21waWxlciBpc3N1ZXMgd2FybmluZ3MgYWJvdXQgb2xkIEMgc3R5bGUgY2FzdHMsCi0vLyB0aGVuIGVuYWJsZSB0aGlzOgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gMykgfHwgKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gNCkpKQotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCAuLi4gKSAoKF9fVkFfQVJHU19fKSA9PSAwID8gZmFsc2UgOiB0cnVlKQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCB4ICkgKCh4KSA9PSAwID8gZmFsc2UgOiB0cnVlKQotIyAgZW5kaWYKLSNlbHNlCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIC4uLiApIChib29sKShfX1ZBX0FSR1NfXykKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCh4KSAoYm9vbCkoeCkKLSMgIGVuZGlmCi0jZW5kaWYKLS8vCi0vLyBJZiB0aGUgY29tcGlsZXIgd2FybnMgYWJvdXQgdW51c2VkIHR5cGVkZWZzIHRoZW4gZW5hYmxlIHRoaXM6Ci0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA3KSkpCi0jICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9VTlVTRURfQVRUUklCVVRFIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIC4uLiApIHN0YXRpY19hc3NlcnQoX19WQV9BUkdTX18sICNfX1ZBX0FSR1NfXykKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgc3RhdGljX2Fzc2VydChCLCAjQikKLSMgIGVuZGlmCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLS8vIEhQIGFDQyBjYW5ub3QgZGVhbCB3aXRoIG1pc3NpbmcgbmFtZXMgZm9yIHRlbXBsYXRlIHZhbHVlIHBhcmFtZXRlcnMKLXRlbXBsYXRlIDxib29sIHg+IHN0cnVjdCBTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU7Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8dHJ1ZT4geyBlbnVtIHsgdmFsdWUgPSAxIH07IH07Ci0KLS8vIEhQIGFDQyBjYW5ub3QgZGVhbCB3aXRoIG1pc3NpbmcgbmFtZXMgZm9yIHRlbXBsYXRlIHZhbHVlIHBhcmFtZXRlcnMKLXRlbXBsYXRlPGludCB4PiBzdHJ1Y3Qgc3RhdGljX2Fzc2VydF90ZXN0e307Ci0KLX0KLQotLy8KLS8vIEltcGxpY2l0IGluc3RhbnRpYXRpb24gcmVxdWlyZXMgdGhhdCBhbGwgbWVtYmVyIGRlY2xhcmF0aW9ucyBiZQotLy8gaW5zdGFudGlhdGVkLCBidXQgdGhhdCB0aGUgZGVmaW5pdGlvbnMgYXJlICpub3QqIGluc3RhbnRpYXRlZC4KLS8vCi0vLyBJdCdzIG5vdCBwYXJ0aWN1bGFybHkgY2xlYXIgaG93IHRoaXMgYXBwbGllcyB0byBlbnVtJ3Mgb3IgdHlwZWRlZnM7Ci0vLyBib3RoIGFyZSBkZXNjcmliZWQgYXMgZGVjbGFyYXRpb25zIFs3LjEuM10gYW5kIFs3LjJdIGluIHRoZSBzdGFuZGFyZCwKLS8vIGhvd2V2ZXIgc29tZSBjb21waWxlcnMgdXNlICJkZWxheWVkIGV2YWx1YXRpb24iIG9mIG9uZSBvciBtb3JlIG9mCi0vLyB0aGVzZSB3aGVuIGltcGxpY2l0bHkgaW5zdGFudGlhdGluZyB0ZW1wbGF0ZXMuICBXZSB1c2UgdHlwZWRlZiBkZWNsYXJhdGlvbnMKLS8vIGJ5IGRlZmF1bHQsIGJ1dCB0cnkgZGVmaW5pbmcgTkROQk9PU1RfVVNFX0VOVU1fU1RBVElDX0FTU0VSVCBpZiB0aGUgZW51bQotLy8gdmVyc2lvbiBnZXRzIGJldHRlciByZXN1bHRzIGZyb20geW91ciBjb21waWxlci4uLgotLy8KLS8vIEltcGxlbWVudGF0aW9uOgotLy8gQm90aCBvZiB0aGVzZSB2ZXJzaW9ucyByZWx5IG9uIHNpemVvZihpbmNvbXBsZXRlX3R5cGUpIGdlbmVyYXRpbmcgYW4gZXJyb3IKLS8vIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgaW5jb21wbGV0ZSB0eXBlLiAgV2UgdXNlCi0vLyAiU1RBVElDX0FTU0VSVElPTl9GQUlMVVJFIiBhcyB0aGUgdHlwZSBuYW1lIGhlcmUgdG8gZ2VuZXJhdGUKLS8vIGFuIGV5ZSBjYXRjaGluZyBlcnJvciBtZXNzYWdlLiAgVGhlIHJlc3VsdCBvZiB0aGUgc2l6ZW9mIGV4cHJlc3Npb24gaXMgZWl0aGVyCi0vLyB1c2VkIGFzIGFuIGVudW0gaW5pdGlhbGlzZXIsIG9yIGFzIGEgdGVtcGxhdGUgYXJndW1lbnQgZGVwZW5kaW5nIHdoaWNoIHZlcnNpb24KLS8vIGlzIGluIHVzZS4uLgotLy8gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCB0byB0aGUgYXNzZXJ0IGlzIGV4cGxpY2l0bHkgY2FzdCB0byBib29sIHVzaW5nIG9sZC0KLS8vIHN0eWxlIGNhc3RzOiB0b28gbWFueSBjb21waWxlcnMgY3VycmVudGx5IGhhdmUgcHJvYmxlbXMgd2l0aCBzdGF0aWNfY2FzdAotLy8gd2hlbiB1c2VkIGluc2lkZSBpbnRlZ3JhbCBjb25zdGFudCBleHByZXNzaW9ucy4KLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfQlVHR1lfSU5URUdSQUxfQ09OU1RBTlRfRVhQUkVTU0lPTlMpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMwMCkKLS8vIF9fTElORV9fIG1hY3JvIGJyb2tlbiB3aGVuIC1aSSBpcyB1c2VkIHNlZSBRMTk5MDU3Ci0vLyBmb3J0dW5hdGVseSBNU1ZDIGlnbm9yZXMgZHVwbGljYXRlIHR5cGVkZWYncy4KLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IChib29sKSggQiApID4pXAotICAgICAgPiBib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TKQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpzdGF0aWNfYXNzZXJ0X3Rlc3Q8XAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QgKCBCICkgPik+XAotICAgICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0NPVU5URVJfXykKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCguLi4pIFwKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUIChfX1ZBX0FSR1NfXykgPik+XAotICAgICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0NPVU5URVJfXykKLSNlbGlmIChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NBX0dDQ19XT1JLQVJPVU5EKSkgICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TKQotLy8gYWd1cnQgMTUvc2VwLzAyOiBhIHNwZWNpYWwgY2FyZSBpcyBuZWVkZWQgdG8gZm9yY2UgSW50ZWwgQysrIGlzc3VlIGFuIGVycm9yIAotLy8gaW5zdGVhZCBvZiB3YXJuaW5nIGluIGNhc2Ugb2YgZmFpbHVyZQotIyBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgICB0eXBlZGVmIGNoYXIgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0xJTkVfXykgXAotICAgICAgICBbIDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIEIgKSA+Ojp2YWx1ZSBdCi0jZWxpZiAoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgfHwgZGVmaW5lZChORE5CT09TVF9TQV9HQ0NfV09SS0FST1VORCkpICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MpCi0vLyBhZ3VydCAxNS9zZXAvMDI6IGEgc3BlY2lhbCBjYXJlIGlzIG5lZWRlZCB0byBmb3JjZSBJbnRlbCBDKysgaXNzdWUgYW4gZXJyb3IgCi0vLyBpbnN0ZWFkIG9mIHdhcm5pbmcgaW4gY2FzZSBvZiBmYWlsdXJlCi0jIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKC4uLikgXAotICAgIHR5cGVkZWYgY2hhciBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fTElORV9fKSBcCi0gICAgICAgIFsgOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggX19WQV9BUkdTX18gKSA+Ojp2YWx1ZSBdCi0jZWxpZiBkZWZpbmVkKF9fc2dpKQotLy8gc3BlY2lhbCB2ZXJzaW9uIGZvciBTR0kgTUlQU3BybyBjb21waWxlcgotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIFwKLSAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3Rlc3RfLCBfX0xJTkVfXykgPSAoIEIgKSk7IFwKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgXAotICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90ZXN0XywgX19MSU5FX18pID4pPlwKLSAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykKLS8vIHNwZWNpYWwgdmVyc2lvbiBmb3IgQ29kZVdhcnJpb3IgPD0gOC54Ci0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBcCi0gICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90ZXN0XywgX19MSU5FX18pID0gXAotICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCBCICkgPikgKQotI2Vsc2UKLS8vIGdlbmVyaWMgdmVyc2lvbgotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIC4uLiApIFwKLSAgICAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCBfX1ZBX0FSR1NfXyApID4pPlwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICAgICAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnN0YXRpY19hc3NlcnRfdGVzdDxcCi0gICAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggQiApID4pPlwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURQotIyAgZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotLy8gYWx0ZXJuYXRpdmUgZW51bSBiYXNlZCBpbXBsZW1lbnRhdGlvbjoKLSMgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIC4uLiApIFwKLSAgICAgICAgIGVudW0geyBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfZW51bV8sIF9fTElORV9fKSBcCi0gICAgICAgICAgICA9IHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IChib29sKSggX19WQV9BUkdTX18gKSA+KSB9Ci0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKEIpIFwKLSAgICAgICAgIGVudW0geyBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfZW51bV8sIF9fTElORV9fKSBcCi0gICAgICAgICAgICA9IHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IChib29sKSggQiApID4pIH0KLSMgIGVuZGlmCi0jZW5kaWYKLSNlbmRpZiAvLyBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3dhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N3YXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2QzNzkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3dhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcgSm9zZXBoIEdhdXRlcmluCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1NXQVBfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NXQVBfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwIgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vYXBpX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MWQxMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vYXBpX2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vLyAgbmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzLCAyMDA2LCAyMDEwCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIEJvb3N0LlN5c3RlbSBjYWxscyBvcGVyYXRpbmcgc3lzdGVtIEFQSSBmdW5jdGlvbnMgdG8gaW1wbGVtZW50IHN5c3RlbSBlcnJvciBjYXRlZ29yeQotLy8gIGZ1bmN0aW9ucy4gVXN1YWxseSB0aGVyZSBpcyBubyBxdWVzdGlvbiBhcyB0byB3aGljaCBBUEkgaXMgdG8gYmUgdXNlZC4KLS8vCi0vLyAgSW4gdGhlIGNhc2Ugb2YgTWluR1cgb3IgQ3lnd2luL01pbkdXLCBob3dldmVyLCBib3RoIFBPU0lYIGFuZCBXaW5kb3dzIEFQSSdzIGFyZQotLy8gIGF2YWlsYWJsZS4gQ2hhb3MgZW5zdWVzIGlmIG90aGVyIGNvZGUgdGhpbmtzIG9uZSBpcyBpbiB1c2Ugd2hlbiBCb29zdC5TeXN0ZW0gd2FzCi0vLyAgYWN0dWFsbHkgYnVpbHQgd2l0aCB0aGUgb3RoZXIuIFRoaXMgaGVhZGVyIGNlbnRyYWxpemVzIHRoZSBBUEkgY2hvaWNlIGFuZCBwcmV2ZW50cwotLy8gIHVzZXIgZGVmaW5pdGlvbiBvZiBBUEkgbWFjcm9zLCB0aHVzIGVsbWluYXRpbmcgdGhlIHBvc3NpYmlsaXR5IG9mIG1pc21hdGNoZXMgYW5kIHRoZQotLy8gIG5lZWQgdG8gdGVzdCBjb25maWd1cmF0aW9ucyB3aXRoIGxpdHRsZSBvciBubyBwcmFjdGljYWwgdmFsdWUuCi0vLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9TWVNURU1fQVBJX0NPTkZJR19IUFAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0FQSV9DT05GSUdfSFBQCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9QT1NJWF9BUEkpIHx8IGRlZmluZWQoTkROQk9PU1RfV0lORE9XU19BUEkpCi0jICAgZXJyb3IgdXNlciBkZWZpbmVkIE5ETkJPT1NUX1BPU0lYX0FQSSBvciBORE5CT09TVF9XSU5ET1dTX0FQSSBub3Qgc3VwcG9ydGVkCi0jIGVuZGlmCi0KLS8vICBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkgc3BlY2lmeSB3aGljaCBBUEkgdG8gdXNlCi0vLyAgICBDeWd3aW4vTWluR1cgZG9lcyBub3QgcHJlZGVmaW5lIF9XSU4zMi4KLS8vICAgIFN0YW5kYWxvbmUgTWluR1cgYW5kIGFsbCBvdGhlciBrbm93biBXaW5kb3dzIGNvbXBpbGVycyBkbyBwcmVkZWZpbmUgX1dJTjMyCi0vLyAgICBDb21waWxlcnMgdGhhdCBwcmVkZWZpbmUgX1dJTjMyIG9yIF9fTUlOR1czMl9fIGRvIHNvIGZvciBXaW5kb3dzIDY0LWJpdCBidWlsZHMgdG9vLgotCi0jIGlmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIC8vIFdpbmRvd3MgZGVmYXVsdCwgaW5jbHVkaW5nIE1pbkdXIGFuZCBDeWd3aW4KLSMgICBkZWZpbmUgTkROQk9PU1RfV0lORE9XU19BUEkKLSMgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9QT1NJWF9BUEkgCi0jIGVuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NZU1RFTV9BUElfQ09ORklHX0hQUCAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTgwZGU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgbmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzLCAyMDA2Ci0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfU1lTVEVNX0NPTkZJR19IUFAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0NPTkZJR19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwPiAgLy8gZm9yIE5ETkJPT1NUX1BPU0lYX0FQSSBvciBORE5CT09TVF9XSU5ET1dTX0FQSQotCi0vLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIHNlcGFyYXRlIGNvbXBpbGF0aW9uIGZlYXR1cmVzIGFzIGRlc2NyaWJlZCBpbgotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sCi0KLS8vICBub3JtYWxpemUgbWFjcm9zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTkspIFwKLSAgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfU1RBVElDX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSykKLSMgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSyAKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX1NUQVRJQ19MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTksgCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9TVEFUSUNfTElOSykKLSMgZXJyb3IgTXVzdCBub3QgZGVmaW5lIGJvdGggTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LIGFuZCBORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTksKLSNlbmRpZgotCi0vLyAgZW5hYmxlIGR5bmFtaWMgb3Igc3RhdGljIGxpbmtpbmcgYXMgcmVxdWVzdGVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSykKLSMgaWYgZGVmaW5lZChORE5CT09TVF9TWVNURU1fU09VUkNFKQotIyAgIGRlZmluZSBORE5CT09TVF9TWVNURU1fREVDTCBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jIGVsc2UgCi0jICAgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9ERUNMIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9TWVNURU1fREVDTAotI2VuZGlmCi0KLS8vICBlbmFibGUgYXV0b21hdGljIGxpYnJhcnkgdmFyaWFudCBzZWxlY3Rpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9TT1VSQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9OT19MSUIpCi0vLwotLy8gU2V0IHRoZSBuYW1lIG9mIG91ciBsaWJyYXJ5LCB0aGlzIHdpbGwgZ2V0IHVuZGVmJ2VkIGJ5IGF1dG9fbGluay5ocHAKLS8vIG9uY2UgaXQncyBkb25lIHdpdGggaXQ6Ci0vLwotI2RlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF9zeXN0ZW0KLS8vCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdDoKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jZW5kaWYKLS8vCi0vLyBBbmQgaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgZG9lcyB0aGUgd29yazoKLS8vCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jZW5kaWYgIC8vIGF1dG8tbGlua2luZyBkaXNhYmxlZAotCi0jZW5kaWYgLy8gTkROQk9PU1RfU1lTVEVNX0NPTkZJR19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ5MmM4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi0vLyAgbmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDYsIDIwMDcKLS8vICBDb3B5cmlnaHQgQ2hyaXN0b3BlciBLb2hsaG9mZiAyMDA3Ci0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zeXN0ZW0KLQotI2lmbmRlZiBORE5CT09TVF9FUlJPUl9DT0RFX0hQUAotI2RlZmluZSBORE5CT09TVF9FUlJPUl9DT0RFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9vcGVyYXRvcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25vbmNvcHlhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8b3N0cmVhbT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLS8vIFRPRE86IHVuZGVmIHRoZXNlIG1hY3JvcyBpZiBub3QgYWxyZWFkeSBkZWZpbmVkCi0jaW5jbHVkZSA8bmRuYm9vc3QvY2Vycm5vLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BPU0lYX0FQSSkgJiYgIWRlZmluZWQoTkROQk9PU1RfV0lORE9XU19BUEkpCi0jICBlcnJvciBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkgbXVzdCBiZSBkZWZpbmVkCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4gLy8gbXVzdCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotCi0jaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgTkROQk9PU1RfTk9FWENFUFQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgbmFtZXNwYWNlIHN5c3RlbQotICB7Ci0KLSAgICBjbGFzcyBlcnJvcl9jb2RlOwotICAgIGNsYXNzIGVycm9yX2NvbmRpdGlvbjsKLQotICAgIC8vICAiQ29uY2VwdCIgaGVscGVycyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgaXNfZXJyb3JfY29kZV9lbnVtIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgaXNfZXJyb3JfY29uZGl0aW9uX2VudW0geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi0gICAgLy8gIGdlbmVyaWMgZXJyb3JfY29uZGl0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgbmFtZXNwYWNlIGVycmMKLSAgICB7Ci0gICAgICBlbnVtIGVycmNfdAotICAgICAgewotICAgICAgICBzdWNjZXNzID0gMCwKLSAgICAgICAgYWRkcmVzc19mYW1pbHlfbm90X3N1cHBvcnRlZCA9IEVBRk5PU1VQUE9SVCwKLSAgICAgICAgYWRkcmVzc19pbl91c2UgPSBFQUREUklOVVNFLAotICAgICAgICBhZGRyZXNzX25vdF9hdmFpbGFibGUgPSBFQUREUk5PVEFWQUlMLAotICAgICAgICBhbHJlYWR5X2Nvbm5lY3RlZCA9IEVJU0NPTk4sCi0gICAgICAgIGFyZ3VtZW50X2xpc3RfdG9vX2xvbmcgPSBFMkJJRywKLSAgICAgICAgYXJndW1lbnRfb3V0X29mX2RvbWFpbiA9IEVET00sCi0gICAgICAgIGJhZF9hZGRyZXNzID0gRUZBVUxULAotICAgICAgICBiYWRfZmlsZV9kZXNjcmlwdG9yID0gRUJBREYsCi0gICAgICAgIGJhZF9tZXNzYWdlID0gRUJBRE1TRywKLSAgICAgICAgYnJva2VuX3BpcGUgPSBFUElQRSwKLSAgICAgICAgY29ubmVjdGlvbl9hYm9ydGVkID0gRUNPTk5BQk9SVEVELAotICAgICAgICBjb25uZWN0aW9uX2FscmVhZHlfaW5fcHJvZ3Jlc3MgPSBFQUxSRUFEWSwKLSAgICAgICAgY29ubmVjdGlvbl9yZWZ1c2VkID0gRUNPTk5SRUZVU0VELAotICAgICAgICBjb25uZWN0aW9uX3Jlc2V0ID0gRUNPTk5SRVNFVCwKLSAgICAgICAgY3Jvc3NfZGV2aWNlX2xpbmsgPSBFWERFViwKLSAgICAgICAgZGVzdGluYXRpb25fYWRkcmVzc19yZXF1aXJlZCA9IEVERVNUQUREUlJFUSwKLSAgICAgICAgZGV2aWNlX29yX3Jlc291cmNlX2J1c3kgPSBFQlVTWSwKLSAgICAgICAgZGlyZWN0b3J5X25vdF9lbXB0eSA9IEVOT1RFTVBUWSwKLSAgICAgICAgZXhlY3V0YWJsZV9mb3JtYXRfZXJyb3IgPSBFTk9FWEVDLAotICAgICAgICBmaWxlX2V4aXN0cyA9IEVFWElTVCwKLSAgICAgICAgZmlsZV90b29fbGFyZ2UgPSBFRkJJRywKLSAgICAgICAgZmlsZW5hbWVfdG9vX2xvbmcgPSBFTkFNRVRPT0xPTkcsCi0gICAgICAgIGZ1bmN0aW9uX25vdF9zdXBwb3J0ZWQgPSBFTk9TWVMsCi0gICAgICAgIGhvc3RfdW5yZWFjaGFibGUgPSBFSE9TVFVOUkVBQ0gsCi0gICAgICAgIGlkZW50aWZpZXJfcmVtb3ZlZCA9IEVJRFJNLAotICAgICAgICBpbGxlZ2FsX2J5dGVfc2VxdWVuY2UgPSBFSUxTRVEsCi0gICAgICAgIGluYXBwcm9wcmlhdGVfaW9fY29udHJvbF9vcGVyYXRpb24gPSBFTk9UVFksCi0gICAgICAgIGludGVycnVwdGVkID0gRUlOVFIsCi0gICAgICAgIGludmFsaWRfYXJndW1lbnQgPSBFSU5WQUwsCi0gICAgICAgIGludmFsaWRfc2VlayA9IEVTUElQRSwKLSAgICAgICAgaW9fZXJyb3IgPSBFSU8sCi0gICAgICAgIGlzX2FfZGlyZWN0b3J5ID0gRUlTRElSLAotICAgICAgICBtZXNzYWdlX3NpemUgPSBFTVNHU0laRSwKLSAgICAgICAgbmV0d29ya19kb3duID0gRU5FVERPV04sCi0gICAgICAgIG5ldHdvcmtfcmVzZXQgPSBFTkVUUkVTRVQsCi0gICAgICAgIG5ldHdvcmtfdW5yZWFjaGFibGUgPSBFTkVUVU5SRUFDSCwKLSAgICAgICAgbm9fYnVmZmVyX3NwYWNlID0gRU5PQlVGUywKLSAgICAgICAgbm9fY2hpbGRfcHJvY2VzcyA9IEVDSElMRCwKLSAgICAgICAgbm9fbGluayA9IEVOT0xJTkssCi0gICAgICAgIG5vX2xvY2tfYXZhaWxhYmxlID0gRU5PTENLLAotICAgICAgICBub19tZXNzYWdlX2F2YWlsYWJsZSA9IEVOT0RBVEEsCi0gICAgICAgIG5vX21lc3NhZ2UgPSBFTk9NU0csCi0gICAgICAgIG5vX3Byb3RvY29sX29wdGlvbiA9IEVOT1BST1RPT1BULAotICAgICAgICBub19zcGFjZV9vbl9kZXZpY2UgPSBFTk9TUEMsCi0gICAgICAgIG5vX3N0cmVhbV9yZXNvdXJjZXMgPSBFTk9TUiwKLSAgICAgICAgbm9fc3VjaF9kZXZpY2Vfb3JfYWRkcmVzcyA9IEVOWElPLAotICAgICAgICBub19zdWNoX2RldmljZSA9IEVOT0RFViwKLSAgICAgICAgbm9fc3VjaF9maWxlX29yX2RpcmVjdG9yeSA9IEVOT0VOVCwKLSAgICAgICAgbm9fc3VjaF9wcm9jZXNzID0gRVNSQ0gsCi0gICAgICAgIG5vdF9hX2RpcmVjdG9yeSA9IEVOT1RESVIsCi0gICAgICAgIG5vdF9hX3NvY2tldCA9IEVOT1RTT0NLLAotICAgICAgICBub3RfYV9zdHJlYW0gPSBFTk9TVFIsCi0gICAgICAgIG5vdF9jb25uZWN0ZWQgPSBFTk9UQ09OTiwKLSAgICAgICAgbm90X2Vub3VnaF9tZW1vcnkgPSBFTk9NRU0sCi0gICAgICAgIG5vdF9zdXBwb3J0ZWQgPSBFTk9UU1VQLAotICAgICAgICBvcGVyYXRpb25fY2FuY2VsZWQgPSBFQ0FOQ0VMRUQsCi0gICAgICAgIG9wZXJhdGlvbl9pbl9wcm9ncmVzcyA9IEVJTlBST0dSRVNTLAotICAgICAgICBvcGVyYXRpb25fbm90X3Blcm1pdHRlZCA9IEVQRVJNLAotICAgICAgICBvcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IEVPUE5PVFNVUFAsCi0gICAgICAgIG9wZXJhdGlvbl93b3VsZF9ibG9jayA9IEVXT1VMREJMT0NLLAotICAgICAgICBvd25lcl9kZWFkID0gRU9XTkVSREVBRCwKLSAgICAgICAgcGVybWlzc2lvbl9kZW5pZWQgPSBFQUNDRVMsCi0gICAgICAgIHByb3RvY29sX2Vycm9yID0gRVBST1RPLAotICAgICAgICBwcm90b2NvbF9ub3Rfc3VwcG9ydGVkID0gRVBST1RPTk9TVVBQT1JULAotICAgICAgICByZWFkX29ubHlfZmlsZV9zeXN0ZW0gPSBFUk9GUywKLSAgICAgICAgcmVzb3VyY2VfZGVhZGxvY2tfd291bGRfb2NjdXIgPSBFREVBRExLLAotICAgICAgICByZXNvdXJjZV91bmF2YWlsYWJsZV90cnlfYWdhaW4gPSBFQUdBSU4sCi0gICAgICAgIHJlc3VsdF9vdXRfb2ZfcmFuZ2UgPSBFUkFOR0UsCi0gICAgICAgIHN0YXRlX25vdF9yZWNvdmVyYWJsZSA9IEVOT1RSRUNPVkVSQUJMRSwKLSAgICAgICAgc3RyZWFtX3RpbWVvdXQgPSBFVElNRSwKLSAgICAgICAgdGV4dF9maWxlX2J1c3kgPSBFVFhUQlNZLAotICAgICAgICB0aW1lZF9vdXQgPSBFVElNRURPVVQsCi0gICAgICAgIHRvb19tYW55X2ZpbGVzX29wZW5faW5fc3lzdGVtID0gRU5GSUxFLAotICAgICAgICB0b29fbWFueV9maWxlc19vcGVuID0gRU1GSUxFLAotICAgICAgICB0b29fbWFueV9saW5rcyA9IEVNTElOSywKLSAgICAgICAgdG9vX21hbnlfc3ltYm9saWNfbGlua19sZXZlbHMgPSBFTE9PUCwKLSAgICAgICAgdmFsdWVfdG9vX2xhcmdlID0gRU9WRVJGTE9XLAotICAgICAgICB3cm9uZ19wcm90b2NvbF90eXBlID0gRVBST1RPVFlQRQotICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGVycmMKLQotIyBpZm5kZWYgTkROQk9PU1RfU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgICBuYW1lc3BhY2UgcG9zaXggPSBlcnJjOwotICAgIG5hbWVzcGFjZSBwb3NpeF9lcnJvciA9IGVycmM7Ci0jIGVuZGlmCi0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19lcnJvcl9jb25kaXRpb25fZW51bTxlcnJjOjplcnJjX3Q+Ci0gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQotCi0gICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIE9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWMgaW50ZXJmYWNlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0KLSAgICAvLyAgVGhlIGludGVyZmFjZSBpcyBkaXZpZGVkIGludG8gZ2VuZXJhbCBhbmQgc3lzdGVtLXNwZWNpZmljIHBvcnRpb25zIHRvCi0gICAgLy8gIG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzOgotICAgIC8vCi0gICAgLy8gICogQ29kZSBjYWxsaW5nIGFuIG9wZXJhdGluZyBzeXN0ZW0gQVBJIGNhbiBjcmVhdGUgYW4gZXJyb3JfY29kZSB3aXRoCi0gICAgLy8gICAgYSBzaW5nbGUgY2F0ZWdvcnkgKHN5c3RlbV9jYXRlZ29yeSksIGV2ZW4gZm9yIFBPU0lYLWxpa2Ugb3BlcmF0aW5nCi0gICAgLy8gICAgc3lzdGVtcyB0aGF0IHJldHVybiBzb21lIFBPU0lYIGVycm5vIHZhbHVlcyBhbmQgc29tZSBuYXRpdmUgZXJybm8KLSAgICAvLyAgICB2YWx1ZXMuIFRoaXMgY29kZSBzaG91bGQgbm90IGhhdmUgdG8gcGF5IHRoZSBjb3N0IG9mIGRpc3Rpbmd1aXNoaW5nCi0gICAgLy8gICAgYmV0d2VlbiBjYXRlZ29yaWVzLCBzaW5jZSBpdCBpcyBub3QgeWV0IGtub3duIGlmIHRoYXQgaXMgbmVlZGVkLgotICAgIC8vCi0gICAgLy8gICogVXNlcnMgd2lzaGluZyB0byB3cml0ZSBzeXN0ZW0tc3BlY2lmaWMgY29kZSBzaG91bGQgYmUgZ2l2ZW4gZW51bXMgZm9yCi0gICAgLy8gICAgYXQgbGVhc3QgdGhlIGNvbW1vbiBlcnJvciBjYXNlcy4KLSAgICAvLwotICAgIC8vICAqIFN5c3RlbSBzcGVjaWZpYyBjb2RlIHNob3VsZCBmYWlsIGF0IGNvbXBpbGUgdGltZSBpZiBtb3ZlZCB0byBhbm90aGVyCi0gICAgLy8gICAgb3BlcmF0aW5nIHN5c3RlbS4KLQotICAgIC8vICBUaGUgc3lzdGVtIHNwZWNpZmljIHBvcnRpb25zIG9mIHRoZSBpbnRlcmZhY2UgYXJlIGxvY2F0ZWQgaW4gaGVhZGVycwotICAgIC8vICB3aXRoIG5hbWVzIHJlZmxlY3RpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0uIEZvciBleGFtcGxlLAotICAgIC8vCi0gICAgLy8gICAgICAgPG5kbmJvb3N0L3N5c3RlbS9jeWd3aW5fZXJyb3IuaHBwPgotICAgIC8vICAgICAgIDxuZG5ib29zdC9zeXN0ZW0vbGludXhfZXJyb3IuaHBwPgotICAgIC8vICAgICAgIDxuZG5ib29zdC9zeXN0ZW0vd2luZG93c19lcnJvci5ocHA+Ci0gICAgLy8KLSAgICAvLyAgVGhlc2UgaGVhZGVycyBhcmUgZWZmZWN0aXZlbHkgZW1wdHkgZm9yIGNvbXBpbGVzIG9uIG9wZXJhdGluZyBzeXN0ZW1zCi0gICAgLy8gIHdoZXJlIHRoZXkgYXJlIG5vdCBhcHBsaWNhYmxlLgotCi0gICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIGNsYXNzIGVycm9yX2NhdGVnb3J5ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgY2xhc3MgZXJyb3JfY2F0ZWdvcnkgOiBwdWJsaWMgbm9uY29weWFibGUKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgdmlydHVhbCB+ZXJyb3JfY2F0ZWdvcnkoKXt9Ci0KLSAgICAgIHZpcnR1YWwgY29uc3QgY2hhciAqICAgICBuYW1lKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUID0gMDsKLSAgICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgICAgICBtZXNzYWdlKCBpbnQgZXYgKSBjb25zdCA9IDA7Ci0gICAgICBpbmxpbmUgdmlydHVhbCBlcnJvcl9jb25kaXRpb24gIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKCBpbnQgZXYgKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotICAgICAgaW5saW5lIHZpcnR1YWwgYm9vbCAgICAgICAgICAgICBlcXVpdmFsZW50KCBpbnQgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBjb25kaXRpb24gKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotICAgICAgaW5saW5lIHZpcnR1YWwgYm9vbCAgICAgICAgICAgICBlcXVpdmFsZW50KCBjb25zdCBlcnJvcl9jb2RlICYgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29uZGl0aW9uICkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLQotICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgcmhzKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgeyByZXR1cm4gdGhpcyA9PSAmcmhzOyB9Ci0gICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiByaHMpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCB7IHJldHVybiB0aGlzICE9ICZyaHM7IH0KLSAgICAgIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIHJocyApIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpsZXNzPGNvbnN0IGVycm9yX2NhdGVnb3J5Kj4oKSggdGhpcywgJnJocyApOwotICAgICAgfQotICAgIH07Ci0KLSAgICAvLyAgcHJlZGVmaW5lZCBlcnJvciBjYXRlZ29yaWVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaWZkZWYgTkROQk9PU1RfRVJST1JfQ09ERV9IRUFERVJfT05MWQotICAgIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBzeXN0ZW1fY2F0ZWdvcnkoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0gICAgaW5saW5lIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGdlbmVyaWNfY2F0ZWdvcnkoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NZU1RFTV9ERUNMIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIHN5c3RlbV9jYXRlZ29yeSgpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLSAgICBORE5CT09TVF9TWVNURU1fREVDTCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBnZW5lcmljX2NhdGVnb3J5KCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotI2VuZGlmCi0gICAgLy8gIGRlcHJlY2F0ZWQgc3lub255bXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmbmRlZiBORE5CT09TVF9TWVNURU1fTk9fREVQUkVDQVRFRAotICAgIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBnZXRfc3lzdGVtX2NhdGVnb3J5KCkgeyByZXR1cm4gc3lzdGVtX2NhdGVnb3J5KCk7IH0KLSAgICBpbmxpbmUgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZ2V0X2dlbmVyaWNfY2F0ZWdvcnkoKSB7IHJldHVybiBnZW5lcmljX2NhdGVnb3J5KCk7IH0KLSAgICBpbmxpbmUgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZ2V0X3Bvc2l4X2NhdGVnb3J5KCkgeyByZXR1cm4gZ2VuZXJpY19jYXRlZ29yeSgpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIHBvc2l4X2NhdGVnb3J5ID0gZ2VuZXJpY19jYXRlZ29yeSgpOwotICAgIHN0YXRpYyBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBlcnJub19lY2F0ICAgICA9IGdlbmVyaWNfY2F0ZWdvcnkoKTsKLSAgICBzdGF0aWMgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgbmF0aXZlX2VjYXQgICAgPSBzeXN0ZW1fY2F0ZWdvcnkoKTsKLSMgZW5kaWYKLQotICAgIC8vICBjbGFzcyBlcnJvcl9jb25kaXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vICBlcnJvcl9jb25kaXRpb25zIGFyZSBwb3J0YWJsZSwgZXJyb3JfY29kZXMgYXJlIHN5c3RlbSBvciBsaWJyYXJ5IHNwZWNpZmljCi0KLSAgICBjbGFzcyBlcnJvcl9jb25kaXRpb24KLSAgICB7Ci0gICAgcHVibGljOgotCi0gICAgICAvLyBjb25zdHJ1Y3RvcnM6Ci0gICAgICBlcnJvcl9jb25kaXRpb24oKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCgwKSwgbV9jYXQoJmdlbmVyaWNfY2F0ZWdvcnkoKSkge30KLSAgICAgIGVycm9yX2NvbmRpdGlvbiggaW50IHZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBjYXQgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCh2YWwpLCBtX2NhdCgmY2F0KSB7fQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRXJyb3JDb25kaXRpb25FbnVtPgotICAgICAgICBlcnJvcl9jb25kaXRpb24oRXJyb3JDb25kaXRpb25FbnVtIGUsCi0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19lcnJvcl9jb25kaXRpb25fZW51bTxFcnJvckNvbmRpdGlvbkVudW0+ID46OnR5cGUqID0gMCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgICp0aGlzID0gbWFrZV9lcnJvcl9jb25kaXRpb24oZSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG1vZGlmaWVyczoKLQotICAgICAgdm9pZCBhc3NpZ24oIGludCB2YWwsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgY2F0ICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIG1fdmFsID0gdmFsOwotICAgICAgICBtX2NhdCA9ICZjYXQ7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVycm9yQ29uZGl0aW9uRW51bT4KLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19lcnJvcl9jb25kaXRpb25fZW51bTxFcnJvckNvbmRpdGlvbkVudW0+LCBlcnJvcl9jb25kaXRpb24+Ojp0eXBlICYKLSAgICAgICAgICBvcGVyYXRvcj0oIEVycm9yQ29uZGl0aW9uRW51bSB2YWwgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2NvbmRpdGlvbih2YWwpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgY2xlYXIoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgbV92YWwgPSAwOwotICAgICAgICBtX2NhdCA9ICZnZW5lcmljX2NhdGVnb3J5KCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG9ic2VydmVyczoKLSAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHZhbHVlKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICAgIHsgcmV0dXJuIG1fdmFsOyB9Ci0gICAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBjYXRlZ29yeSgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCB7IHJldHVybiAqbV9jYXQ7IH0KLSAgICAgIHN0ZDo6c3RyaW5nICAgICAgICAgICAgIG1lc3NhZ2UoKSBjb25zdCAgeyByZXR1cm4gbV9jYXQtPm1lc3NhZ2UodmFsdWUoKSk7IH0KLQotICAgICAgdHlwZWRlZiB2b2lkICgqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpOwotICAgICAgc3RhdGljIHZvaWQgdW5zcGVjaWZpZWRfYm9vbF90cnVlKCkge30KLQotICAgICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICAvLyB0cnVlIGlmIGVycm9yCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbCA9PSAwID8gMCA6IHVuc3BlY2lmaWVkX2Jvb2xfdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgIC8vIHRydWUgaWYgbm8gZXJyb3IKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsID09IDA7Ci0gICAgICB9Ci0KLSAgICAgIC8vIHJlbGF0aW9uYWxzOgotICAgICAgLy8gIHRoZSBtb3JlIHN5bW1ldHJpY2FsIG5vbi1tZW1iZXIgc3ludGF4IGFsbG93cyBlbnVtCi0gICAgICAvLyAgY29udmVyc2lvbnMgd29yayBmb3IgYm90aCByaHMgYW5kIGxocy4KLSAgICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9jYXQgPT0gcmhzLm1fY2F0ICYmIGxocy5tX3ZhbCA9PSByaHMubV92YWw7Ci0gICAgICB9Ci0KLSAgICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICAvLyAgdGhlIG1vcmUgc3ltbWV0cmljYWwgbm9uLW1lbWJlciBzeW50YXggYWxsb3dzIGVudW0KLSAgICAgICAgLy8gIGNvbnZlcnNpb25zIHdvcmsgZm9yIGJvdGggcmhzIGFuZCBsaHMuCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9jYXQgPCByaHMubV9jYXQKLSAgICAgICAgICB8fCAobGhzLm1fY2F0ID09IHJocy5tX2NhdCAmJiBsaHMubV92YWwgPCByaHMubV92YWwpOwotICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIG1fdmFsOwotICAgICAgY29uc3QgZXJyb3JfY2F0ZWdvcnkgKiAgbV9jYXQ7Ci0KLSAgICB9OwotCi0gICAgLy8gIGNsYXNzIGVycm9yX2NvZGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIFdlIHdhbnQgZXJyb3JfY29kZSB0byBiZSBhIHZhbHVlIHR5cGUgdGhhdCBjYW4gYmUgY29waWVkIHdpdGhvdXQgc2xpY2luZwotICAgIC8vICBhbmQgd2l0aG91dCByZXF1aXJpbmcgaGVhcCBhbGxvY2F0aW9uLCBidXQgd2UgYWxzbyB3YW50IGl0IHRvIGhhdmUKLSAgICAvLyAgcG9seW1vcnBoaWMgYmVoYXZpb3IgYmFzZWQgb24gdGhlIGVycm9yIGNhdGVnb3J5LiBUaGlzIGlzIGFjaGlldmVkIGJ5Ci0gICAgLy8gIGFic3RyYWN0IGJhc2UgY2xhc3MgZXJyb3JfY2F0ZWdvcnkgc3VwcGx5aW5nIHRoZSBwb2x5bW9ycGhpYyBiZWhhdmlvciwKLSAgICAvLyAgYW5kIGVycm9yX2NvZGUgY29udGFpbmluZyBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSBkZXJpdmVkCi0gICAgLy8gIGZyb20gZXJyb3JfY2F0ZWdvcnkuCi0gICAgY2xhc3MgZXJyb3JfY29kZQotICAgIHsKLSAgICBwdWJsaWM6Ci0KLSAgICAgIC8vIGNvbnN0cnVjdG9yczoKLSAgICAgIGVycm9yX2NvZGUoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCgwKSwgbV9jYXQoJnN5c3RlbV9jYXRlZ29yeSgpKSB7fQotICAgICAgZXJyb3JfY29kZSggaW50IHZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBjYXQgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCh2YWwpLCBtX2NhdCgmY2F0KSB7fQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRXJyb3JDb2RlRW51bT4KLSAgICAgICAgZXJyb3JfY29kZShFcnJvckNvZGVFbnVtIGUsCi0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19lcnJvcl9jb2RlX2VudW08RXJyb3JDb2RlRW51bT4gPjo6dHlwZSogPSAwKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2NvZGUoZSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG1vZGlmaWVyczoKLSAgICAgIHZvaWQgYXNzaWduKCBpbnQgdmFsLCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGNhdCApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICBtX3ZhbCA9IHZhbDsKLSAgICAgICAgbV9jYXQgPSAmY2F0OwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckNvZGVFbnVtPgotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPGlzX2Vycm9yX2NvZGVfZW51bTxFcnJvckNvZGVFbnVtPiwgZXJyb3JfY29kZT46OnR5cGUgJgotICAgICAgICAgIG9wZXJhdG9yPSggRXJyb3JDb2RlRW51bSB2YWwgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2NvZGUodmFsKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgfQotCi0gICAgICB2b2lkIGNsZWFyKCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIG1fdmFsID0gMDsKLSAgICAgICAgbV9jYXQgPSAmc3lzdGVtX2NhdGVnb3J5KCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG9ic2VydmVyczoKLSAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHZhbHVlKCkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAgIHsgcmV0dXJuIG1fdmFsOyB9Ci0gICAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBjYXRlZ29yeSgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCB7IHJldHVybiAqbV9jYXQ7IH0KLSAgICAgIGVycm9yX2NvbmRpdGlvbiAgICAgICAgIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICB7IHJldHVybiBtX2NhdC0+ZGVmYXVsdF9lcnJvcl9jb25kaXRpb24odmFsdWUoKSk7IH0KLSAgICAgIHN0ZDo6c3RyaW5nICAgICAgICAgICAgIG1lc3NhZ2UoKSBjb25zdCAgeyByZXR1cm4gbV9jYXQtPm1lc3NhZ2UodmFsdWUoKSk7IH0KLQotICAgICAgdHlwZWRlZiB2b2lkICgqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpOwotICAgICAgc3RhdGljIHZvaWQgdW5zcGVjaWZpZWRfYm9vbF90cnVlKCkge30KLQotICAgICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAvLyB0cnVlIGlmIGVycm9yCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbCA9PSAwID8gMCA6IHVuc3BlY2lmaWVkX2Jvb2xfdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIC8vIHRydWUgaWYgbm8gZXJyb3IKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsID09IDA7Ci0gICAgICB9Ci0KLSAgICAgIC8vIHJlbGF0aW9uYWxzOgotICAgICAgaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGVycm9yX2NvZGUgJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29kZSAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICAvLyAgdGhlIG1vcmUgc3ltbWV0cmljYWwgbm9uLW1lbWJlciBzeW50YXggYWxsb3dzIGVudW0KLSAgICAgICAgLy8gIGNvbnZlcnNpb25zIHdvcmsgZm9yIGJvdGggcmhzIGFuZCBsaHMuCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9jYXQgPT0gcmhzLm1fY2F0ICYmIGxocy5tX3ZhbCA9PSByaHMubV92YWw7Ci0gICAgICB9Ci0KLSAgICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGVycm9yX2NvZGUgJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICAgIC8vICB0aGUgbW9yZSBzeW1tZXRyaWNhbCBub24tbWVtYmVyIHN5bnRheCBhbGxvd3MgZW51bQotICAgICAgICAvLyAgY29udmVyc2lvbnMgd29yayBmb3IgYm90aCByaHMgYW5kIGxocy4KLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGxocy5tX2NhdCA8IHJocy5tX2NhdAotICAgICAgICAgIHx8IChsaHMubV9jYXQgPT0gcmhzLm1fY2F0ICYmIGxocy5tX3ZhbCA8IHJocy5tX3ZhbCk7Ci0gICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV92YWw7Ci0gICAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSAqICBtX2NhdDsKLQotICAgIH07Ci0KLSAgICAvLyAgcHJlZGVmaW5lZCBlcnJvcl9jb2RlIG9iamVjdCB1c2VkIGFzICJ0aHJvdyBvbiBlcnJvciIgdGFnCi0jIGlmbmRlZiBORE5CT09TVF9TWVNURU1fTk9fREVQUkVDQVRFRAotICAgIE5ETkJPT1NUX1NZU1RFTV9ERUNMIGV4dGVybiBlcnJvcl9jb2RlIHRocm93czsKLSMgZW5kaWYKLQotICAgIC8vICBNb3ZpbmcgZnJvbSBhICJ0aHJvd3MiIG9iamVjdCB0byBhICJ0aHJvd3MiIGZ1bmN0aW9uIHdpdGhvdXQgYnJlYWtpbmcKLSAgICAvLyAgZXhpc3RpbmcgY29kZSBpcyBhIGJpdCBvZiBhIHByb2JsZW0uIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHBsYWNlIHRoZQotICAgIC8vICAidGhyb3dzIiBmdW5jdGlvbiBpbiBuYW1lc3BhY2UgbmRuYm9vc3QgcmF0aGVyIHRoYW4gbmFtZXNwYWNlIG5kbmJvb3N0OjpzeXN0ZW0uCi0KLSAgfSAgLy8gbmFtZXNwYWNlIHN5c3RlbQotCi0gIG5hbWVzcGFjZSBkZXRhaWwgeyBpbmxpbmUgc3lzdGVtOjplcnJvcl9jb2RlICogdGhyb3dzKCkgeyByZXR1cm4gMDsgfSB9Ci0gICAgLy8gIE1pc3VzZSBvZiB0aGUgZXJyb3JfY29kZSBvYmplY3QgaXMgdHVybmVkIGludG8gYSBub2lzeSBmYWlsdXJlIGJ5Ci0gICAgLy8gIHBvaXNvbmluZyB0aGUgcmVmZXJlbmNlLiBUaGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gZG9lc24ndAotICAgIC8vICBwcm9kdWNlIHdhcm5pbmdzIG9yIGVycm9ycyBmcm9tIHBvcHVsYXIgY29tcGlsZXJzLCBpcyB2ZXJ5IGVmZmljaWVudAotICAgIC8vICAoYXMgZGV0ZXJtaW5lZCBieSBpbnNwZWN0aW5nIGdlbmVyYXRlZCBjb2RlKSwgYW5kIGRvZXMgbm90IHN1ZmZlcgotICAgIC8vICBmcm9tIG9yZGVyIG9mIGluaXRpYWxpemF0aW9uIHByb2JsZW1zLiBJbiBwcmFjdGljZSwgaXQgYWxzbyBzZWVtcwotICAgIC8vICBjYXVzZSB1c2VyIGZ1bmN0aW9uIGVycm9yIGhhbmRsaW5nIGltcGxlbWVudGF0aW9uIGVycm9ycyB0byBiZSBkZXRlY3RlZAotICAgIC8vICB2ZXJ5IGVhcmx5IGluIHRoZSBkZXZlbG9wbWVudCBjeWNsZS4KLQotICBpbmxpbmUgc3lzdGVtOjplcnJvcl9jb2RlICYgdGhyb3dzKCkKLSAgICB7IHJldHVybiAqZGV0YWlsOjp0aHJvd3MoKTsgfQotCi0gIG5hbWVzcGFjZSBzeXN0ZW0KLSAgewotICAgIC8vICBub24tbWVtYmVyIGZ1bmN0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGVycm9yX2NvZGUgJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29kZSAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBlcnJvcl9jb2RlICYgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBjb25kaXRpb24gKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gY29kZS5jYXRlZ29yeSgpLmVxdWl2YWxlbnQoIGNvZGUudmFsdWUoKSwgY29uZGl0aW9uICkKLSAgICAgICAgfHwgY29uZGl0aW9uLmNhdGVnb3J5KCkuZXF1aXZhbGVudCggY29kZSwgY29uZGl0aW9uLnZhbHVlKCkgKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBlcnJvcl9jb2RlICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGNvbmRpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgY29kZSApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiBjb25kaXRpb24uY2F0ZWdvcnkoKS5lcXVpdmFsZW50KCBjb2RlLCBjb25kaXRpb24udmFsdWUoKSApCi0gICAgICAgIHx8IGNvZGUuY2F0ZWdvcnkoKS5lcXVpdmFsZW50KCBjb2RlLnZhbHVlKCksIGNvbmRpdGlvbiApOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuICEobGhzID09IHJocyk7Ci0gICAgfQotCi0gICAgLy8gVE9ETzogYm90aCBvZiB0aGVzZSBtYXkgbW92ZSBlbHNld2hlcmUsIGJ1dCB0aGUgTFdHIGhhc24ndCBzcG9rZW4geWV0LgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci0gICAgaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCx0cmFpdHM+JgotICAgICAgb3BlcmF0b3I8PCAoc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULHRyYWl0cz4mIG9zLCBlcnJvcl9jb2RlIGVjKQotICAgIHsKLSAgICAgIG9zIDw8IGVjLmNhdGVnb3J5KCkubmFtZSgpIDw8ICc6JyA8PCBlYy52YWx1ZSgpOwotICAgICAgcmV0dXJuIG9zOwotICAgIH0KLQotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKCBjb25zdCBlcnJvcl9jb2RlICYgZWMgKQotICAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oZWMudmFsdWUoKSkKLSAgICAgICAgKyByZWludGVycHJldF9jYXN0PHN0ZDo6c2l6ZV90PigmZWMuY2F0ZWdvcnkoKSk7Ci0gICAgfQotCi0gICAgLy8gIG1ha2VfKiBmdW5jdGlvbnMgZm9yIGVycmM6OmVycmNfdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgbmFtZXNwYWNlIGVycmMKLSAgICB7Ci0gICAgICAvLyAgZXhwbGljaXQgY29udmVyc2lvbjoKLSAgICAgIGlubGluZSBlcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZSggZXJyY190IGUgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgICAgeyByZXR1cm4gZXJyb3JfY29kZSggZSwgZ2VuZXJpY19jYXRlZ29yeSgpICk7IH0KLQotICAgICAgLy8gIGltcGxpY2l0IGNvbnZlcnNpb246Ci0gICAgICBpbmxpbmUgZXJyb3JfY29uZGl0aW9uIG1ha2VfZXJyb3JfY29uZGl0aW9uKCBlcnJjX3QgZSApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICB7IHJldHVybiBlcnJvcl9jb25kaXRpb24oIGUsIGdlbmVyaWNfY2F0ZWdvcnkoKSApOyB9Ci0gICAgfQotCi0gICAgLy8gIGVycm9yX2NhdGVnb3J5IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgZXJyb3JfY29uZGl0aW9uIGVycm9yX2NhdGVnb3J5OjpkZWZhdWx0X2Vycm9yX2NvbmRpdGlvbiggaW50IGV2ICkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuIGVycm9yX2NvbmRpdGlvbiggZXYsICp0aGlzICk7Ci0gICAgfQotCi0gICAgYm9vbCBlcnJvcl9jYXRlZ29yeTo6ZXF1aXZhbGVudCggaW50IGNvZGUsCi0gICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBjb25kaXRpb24gKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gZGVmYXVsdF9lcnJvcl9jb25kaXRpb24oIGNvZGUgKSA9PSBjb25kaXRpb247Ci0gICAgfQotCi0gICAgYm9vbCBlcnJvcl9jYXRlZ29yeTo6ZXF1aXZhbGVudCggY29uc3QgZXJyb3JfY29kZSAmIGNvZGUsCi0gICAgICBpbnQgY29uZGl0aW9uICkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuICp0aGlzID09IGNvZGUuY2F0ZWdvcnkoKSAmJiBjb2RlLnZhbHVlKCkgPT0gY29uZGl0aW9uOwotICAgIH0KLQotICB9IC8vIG5hbWVzcGFjZSBzeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3ByZWZpeC5ocHAgcHJhZ21hcwotCi0jIGlmZGVmIE5ETkJPT1NUX0VSUk9SX0NPREVfSEVBREVSX09OTFkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC8uLi9saWJzL3N5c3RlbS9zcmMvZXJyb3JfY29kZS5jcHA+Ci0jIGVuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9FUlJPUl9DT0RFX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL3N5c3RlbV9lcnJvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmE3MzJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL3N5c3RlbV9lcnJvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vLyAgQm9vc3Qgc3lzdGVtX2Vycm9yLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDYKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9TWVNURU1fRVJST1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9FUlJPUl9IUFAKLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2Ugc3lzdGVtCi0gIHsKLSAgICAvLyAgY2xhc3Mgc3lzdGVtX2Vycm9yICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgY2xhc3MgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgc3lzdGVtX2Vycm9yIDogcHVibGljIHN0ZDo6cnVudGltZV9lcnJvcgotICAgIC8vIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIGlzIG5lZWRlZCBieSBHQ0MgdG8gZW5zdXJlIHN5c3RlbV9lcnJvciB0aHJvd24gZnJvbSBhIHNoYXJlZAotICAgIC8vIGxpYnJhcnkgY2FuIGJlIGNhdWdodC4gU2VlIHN2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvMzY5NwotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICBzeXN0ZW1fZXJyb3IoIGVycm9yX2NvZGUgZWMgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKCIiKSwgbV9lcnJvcl9jb2RlKGVjKSB7fQotCi0gICAgICBzeXN0ZW1fZXJyb3IoIGVycm9yX2NvZGUgZWMsIGNvbnN0IHN0ZDo6c3RyaW5nICYgd2hhdF9hcmcgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKHdoYXRfYXJnKSwgbV9lcnJvcl9jb2RlKGVjKSB7fQotCi0gICAgICBzeXN0ZW1fZXJyb3IoIGVycm9yX2NvZGUgZWMsIGNvbnN0IGNoYXIqIHdoYXRfYXJnICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcih3aGF0X2FyZyksIG1fZXJyb3JfY29kZShlYykge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBpbnQgZXYsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgZWNhdCApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IoIiIpLCBtX2Vycm9yX2NvZGUoZXYsZWNhdCkge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBpbnQgZXYsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgZWNhdCwKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiB3aGF0X2FyZyApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3Iod2hhdF9hcmcpLCBtX2Vycm9yX2NvZGUoZXYsZWNhdCkge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBpbnQgZXYsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgZWNhdCwKLSAgICAgICAgY29uc3QgY2hhciAqIHdoYXRfYXJnICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcih3aGF0X2FyZyksIG1fZXJyb3JfY29kZShldixlY2F0KSB7fQotCi0gICAgICB2aXJ0dWFsIH5zeXN0ZW1fZXJyb3IoKSB0aHJvdygpIHt9Ci0KLSAgICAgIGNvbnN0IGVycm9yX2NvZGUgJiAgY29kZSgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9Ci0gICAgICBjb25zdCBjaGFyICogICAgICAgIHdoYXQoKSBjb25zdCB0aHJvdygpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgIGVycm9yX2NvZGUgICAgICAgICAgIG1fZXJyb3JfY29kZTsKLSAgICAgIG11dGFibGUgc3RkOjpzdHJpbmcgIG1fd2hhdDsKLSAgICB9OwotCi0gICAgLy8gIGltcGxlbWVudGF0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgaW5saW5lIGNvbnN0IGNoYXIgKiBzeXN0ZW1fZXJyb3I6OndoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgLy8gc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvZXJyb3JfaGFuZGxpbmcuaHRtbCBmb3IgbGF6eSBidWlsZCByYXRpb25hbGUKLSAgICB7Ci0gICAgICBpZiAoIG1fd2hhdC5lbXB0eSgpICkKLSAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgICAgICB0cnkKLSNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgbV93aGF0ID0gdGhpcy0+c3RkOjpydW50aW1lX2Vycm9yOjp3aGF0KCk7Ci0gICAgICAgICAgaWYgKCAhbV93aGF0LmVtcHR5KCkgKSBtX3doYXQgKz0gIjogIjsKLSAgICAgICAgICBtX3doYXQgKz0gbV9lcnJvcl9jb2RlLm1lc3NhZ2UoKTsKLSAgICAgICAgfQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgICAgIGNhdGNoICguLi4pIHsgcmV0dXJuIHN0ZDo6cnVudGltZV9lcnJvcjo6d2hhdCgpOyB9Ci0jZW5kaWYKLSAgICAgIH0KLSAgICAgIHJldHVybiBtX3doYXQuY19zdHIoKTsKLSAgICB9Ci0KLSAgfSAvLyBuYW1lc3BhY2Ugc3lzdGVtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfU1lTVEVNX0VSUk9SX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGVidWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTM2OTYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNi0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHBvcnRhYmxlIGRlYnVnIGludGVyZmFjZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfREVCVUdfQVBJX0hQUF8xMTIwMDZHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUJVR19BUElfSFBQXzExMjAwNkdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRlYnVnIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICBjaGVjayBpZiBwcm9ncmFtIGlzIHJ1bm5pbmcgdW5kZXIgZGVidWdnZXIgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ib29sIE5ETkJPT1NUX1RFU1RfREVDTCB1bmRlcl9kZWJ1Z2dlcigpOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgY2F1c2UgcHJvZ3JhbSB0byBicmVhayBleGVjdXRpb24gICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBpbiBkZWJ1Z2dlciBhdCBjYWxsIHBvaW50ICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfREVDTCBkZWJ1Z2dlcl9icmVhaygpOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGd1aSBkZWJ1Z2dlciBzZXR1cCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBkYmdfc3RhcnR1cF9pbmZvIHsKLSAgICBsb25nICAgICAgICAgICAgICAgICAgICBwaWQ7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgYnJlYWtfb3JfY29udGludWU7Ci0gICAgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgYmluYXJ5X3BhdGg7Ci0gICAgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgZGlzcGxheTsKLSAgICB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBpbml0X2RvbmVfbG9jazsKLX07Ci0KLXR5cGVkZWYgdW5pdF90ZXN0OjpjYWxsYmFjazE8ZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCY+IGRiZ19zdGFydGVyOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZGVidWdnZXIgc2V0dXAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8MTMwMCkKLQotc3RkOjpzdHJpbmcgTkROQk9PU1RfVEVTVF9ERUNMIHNldF9kZWJ1Z2dlciggdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgZGJnX2lkICk7Ci0KLSNlbHNlIAotCi1zdGQ6OnN0cmluZyBORE5CT09TVF9URVNUX0RFQ0wgc2V0X2RlYnVnZ2VyKCB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBkYmdfaWQsIGRiZ19zdGFydGVyIHMgPSBkYmdfc3RhcnRlcigpICk7Ci0KLSNlbmRpZgotCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBhdHRhY2ggZGVidWdnZXIgdG8gdGhlIGN1cnJlbnQgcHJvY2VzcyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotYm9vbCBORE5CT09TVF9URVNUX0RFQ0wgYXR0YWNoX2RlYnVnZ2VyKCBib29sIGJyZWFrX29yX2NvbnRpbnVlID0gdHJ1ZSApOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICBzd2l0Y2ggb24vb2ZmIGRldGVjdCBtZW1vcnkgbGVha3MgZmVhdHVyZSAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9ERUNMIGRldGVjdF9tZW1vcnlfbGVha3MoIGJvb2wgb25fb2ZmICk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIGNhdXNlIHByb2dyYW0gdG8gYnJlYWsgZXhlY3V0aW9uIGluICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgIGRlYnVnZ2VyIGF0IHNwZWNpZmljIGFsbG9jYXRpb24gcG9pbnQgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9ERUNMIGJyZWFrX21lbW9yeV9hbGxvYyggbG9uZyBtZW1fYWxsb2Nfb3JkZXJfbnVtICk7Ci0KLX0gLy8gbmFtZXNwYWNlIGRlYnVnCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Z19jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NGVmYTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnX2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA2LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHVzZXIncyBjb25maWcgZm9yIEJvb3N0LlRlc3QgZGVidWdnaW5nIHN1cHBvcnQKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfREVCVUdfQ09ORklHX0hQUF8xMTIwMDZHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUJVR19DT05GSUdfSFBQXzExMjAwNkdFUgotCi0vLyAnOycgc2VwYXJhdGVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGRlYnVnZ2VycwotLy8gI2RlZmluZSBORE5CT09TVF9URVNUX0RCR19MSVNUIGdkYjtkYngKLQotLy8gbWF4aW11bSBzaXplIG9mIC9wcm9jL3BpZC9zdGF0IGZpbGUKLS8vICNkZWZpbmUgTkROQk9PU1RfVEVTVF9TVEFUX0xJTkVfTUFYCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODE2OGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNjM0NDEgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGFzIGEgY2VudHJhbCBwbGFjZSBmb3IgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gc3dpdGNoZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ09ORklHX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DT05GSUdfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIGNvbXBpbGVycyB3b3JrYXJvdW5kcwotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkgICAgIHx8IFwKLSAgICAoZGVmaW5lZCBfX3NnaSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9DT01QSUxFUl9WRVJTSU9OLCBORE5CT09TVF9URVNURURfQVQoNzMwKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9TSElGVEVEX0xJTkUKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMIF9fY2RlY2wKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgLyoqLwotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSAmJiAgICAgICAgICAgIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApICAmJiAgIFwKLSAgICAhZGVmaW5lZChfX01XRVJLU19fKSAKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFIDEKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTcwKSAgICAgICAgICAgIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0NPTU9fXywgPD0gMHg0MzMgKSAgICAgICAgICAgICAgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fSU5URUxfQ09NUElMRVIsIDw9IDgwMCApICAgICAgICB8fCBcCi0gICAgZGVmaW5lZChfX3NnaSkgJiYgX0NPTVBJTEVSX1ZFUlNJT04gPD0gNzMwICAgICAgICAgIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKSAgfHwgXAotICAgIGRlZmluZWQoX19ERUNDWFgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCi0gICAgZGVmaW5lZChfX0RNQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfTk9fUFJPVEVDVEVEX1VTSU5HCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTQwMCkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB2aXJ0dWFsCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwxMzEwKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUzMCkpCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9TVVBQT1JUX0lOVEVSQUNUSU9OX1RFU1RJTkcgMQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9EWU5fTElOSykKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX0RZTl9MSU5LCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9JTkNMVURFRCkKLSMgIHVuZGVmIE5ETkJPT1NUX1RFU1RfRFlOX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9URVNUX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQUxURVJOQVRJVkVfSU5JVF9BUEkKLQotIyAgaWZkZWYgTkROQk9PU1RfVEVTVF9TT1VSQ0UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVDTCBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZW5kaWYgIC8vIE5ETkJPT1NUX1RFU1RfU09VUkNFCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVDTAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9URVNUX01BSU4pICYmIGRlZmluZWQoTkROQk9PU1RfQVVUT19URVNUX01BSU4pCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUFJTiBORE5CT09TVF9BVVRPX1RFU1RfTUFJTgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9URVNUX01BSU4pICYmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9NT0RVTEUpCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUFJTiBORE5CT09TVF9URVNUX01PRFVMRQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NPTkZJR19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MThlOTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBlbmFibGUgcHJldmlvc2x5IHN1cHByZXNzZWQgd2FybmluZ3MKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0NTExKSAvLyBjb3B5IGNvbnN0cnVjdG9yIGNhbid0IG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjYW4ndCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQxMDApIC8vIHVucmVmZXJlbmNlZCBmb3JtYWwgcGFyYW1ldGVyIAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0OTk2KSAvLyA8c3ltYm9sPiB3YXMgZGVjbGFyZWQgZGVwcmVjYXRlZCAKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDM1NSkgLy8gJ3RoaXMnIDogdXNlZCBpbiBiYXNlIG1lbWJlciBpbml0aWFsaXplciBsaXN0Ci0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ3MDYpIC8vIGFzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24KLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDI1MSkgLy8gY2xhc3MgJ0E8VD4nIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgJ0InCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQxMjcpIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDI5MCkgLy8gQysrIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGlnbm9yZWQgZXhjZXB0IHRvIC4uLgotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MTgwKSAvLyBxdWFsaWZpZXIgYXBwbGllZCB0byBmdW5jdGlvbiB0eXBlIGhhcyBubyBtZWFuaW5nOyBpZ25vcmVkCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQyNzUpIC8vIG5vbiBkbGwtaW50ZXJmYWNlIGNsYXNzIC4uLiB1c2VkIGFzIGJhc2UgZm9yIGRsbC1pbnRlcmZhY2UgY2xhc3MgLi4uCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQyNjcpIC8vICd2YXInIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0eXBlJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTEpIC8vICdjbGFzcycgOiBjb3B5IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjAyOWZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBmb3J3YXJkIGVjbGFyYXRpb25zIGZvciBCb29zdC5UZXN0IGRhdGEgdHlwZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRldEX0RFQ0xfSFBQXzAxMTYwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZXRF9ERUNMX0hQUF8wMTE2MDVHRVIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotY2xhc3MgIGV4ZWN1dGlvbl9tb25pdG9yOwotY2xhc3MgIGV4ZWN1dGlvbl9leGNlcHRpb247Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1jbGFzcyAgdGVzdF91bml0OwotY2xhc3MgIHRlc3RfY2FzZTsKLWNsYXNzICB0ZXN0X3N1aXRlOwotY2xhc3MgIG1hc3Rlcl90ZXN0X3N1aXRlX3Q7Ci0KLWNsYXNzICB0ZXN0X3RyZWVfdmlzaXRvcjsKLWNsYXNzICB0ZXN0X29ic2VydmVyOwotCi0vLyBzaW5nbGV0b25zCi1jbGFzcyAgdW5pdF90ZXN0X21vbml0b3JfdDsKLWNsYXNzICB1bml0X3Rlc3RfbG9nX3Q7Ci0KLWNsYXNzICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjsKLXN0cnVjdCBsb2dfZW50cnlfZGF0YTsKLXN0cnVjdCBsb2dfY2hlY2twb2ludF9kYXRhOwotCi1jbGFzcyBsYXp5X29zdHJlYW07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9GV0RfREVDTF9IUFBfMDExNjA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNzk0MGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNvbWUgdHJpdmlhbCBnbG9iYWwgdHlwZWRlZnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfR0xPQkFMX1RZUEVERUZfSFBQXzAyMTAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0dMT0JBTF9UWVBFREVGX0hQUF8wMjEwMDVHRVIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MKCBzICkgICAgICAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcoIHMsIHNpemVvZiggcyApIC0gMSApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBzICkgTkROQk9PU1RfVEVTVF9MKCBORE5CT09TVF9TVFJJTkdJWkUoIHMgKSApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRU1QVFlfU1RSSU5HICAgTkROQk9PU1RfVEVTVF9MKCAiIiApCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICBjb3VudGVyX3Q7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWVudW0gcmVwb3J0X2xldmVsICB7IElOVl9SRVBPUlRfTEVWRUwsIENPTkZJUk1BVElPTl9SRVBPUlQsIFNIT1JUX1JFUE9SVCwgREVUQUlMRURfUkVQT1JULCBOT19SRVBPUlQgfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZW51bSBvdXRwdXRfZm9ybWF0IHsgSU5WX09GLCBDTEYgLyogY29tcGlsZXIgbG9nIGZvcm1hdCAqLywgWE1MIC8qIFhNTCAqLyB9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnVtIHRlc3RfdW5pdF90eXBlIHsgdHV0X2Nhc2UgPSAweDAxLCB0dXRfc3VpdGUgPSAweDEwLCB0dXRfYW55ID0gMHgxMSB9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICB0ZXN0X3VuaXRfaWQ7Ci0KLWNvbnN0IHRlc3RfdW5pdF9pZCBJTlZfVEVTVF9VTklUX0lEICA9IDB4RkZGRkZGRkY7Ci1jb25zdCB0ZXN0X3VuaXRfaWQgTUFYX1RFU1RfQ0FTRV9JRCAgPSAweEZGRkZGRkZFOwotY29uc3QgdGVzdF91bml0X2lkIE1JTl9URVNUX0NBU0VfSUQgID0gMHgwMDAxMDAwMDsKLWNvbnN0IHRlc3RfdW5pdF9pZCBNQVhfVEVTVF9TVUlURV9JRCA9IDB4MDAwMEZGMDA7Ci1jb25zdCB0ZXN0X3VuaXRfaWQgTUlOX1RFU1RfU1VJVEVfSUQgPSAweDAwMDAwMDAxOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotaW5saW5lIHRlc3RfdW5pdF90eXBlCi10ZXN0X2lkXzJfdW5pdF90eXBlKCB0ZXN0X3VuaXRfaWQgaWQgKQotewotICAgIHJldHVybiAoaWQgJiAweEZGRkYwMDAwKSAhPSAwID8gdHV0X2Nhc2UgOiB0dXRfc3VpdGU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIGhlbHBlciB0ZW1wbGF0ZXMgdG8gcHJldmVudCBPRFIgdmlvbGF0aW9ucyAKLXRlbXBsYXRlPGNsYXNzIFQ+IAotc3RydWN0IHN0YXRpY19jb25zdGFudCB7IAotICAgIHN0YXRpYyBUIHZhbHVlOyAKLX07IAotCi10ZW1wbGF0ZTxjbGFzcyBUPiAKLVQgc3RhdGljX2NvbnN0YW50PFQ+Ojp2YWx1ZTsgCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vIAotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9HTE9CQUxfVFlQRURFRl9IUFBfMDIxMDA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0OWRiMGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaGFyZWQgZGVmaW5pdGlvbiBmb3IgdW5pdCB0ZXN0IGxvZyBsZXZlbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTE9HX0xFVkVMX0hQUF8wMTE2MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MT0dfTEVWRUxfSFBQXzAxMTYwNUdFUgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBsb2cgbGV2ZWxzICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gIGVhY2ggbG9nIGxldmVsIGluY2x1ZGVzIGFsbCBzdWJzZXF1ZW50IGhpZ2hlciBsb2dpbmcgbGV2ZWxzCi1lbnVtICAgICAgICAgICAgbG9nX2xldmVsIHsKLSAgICBpbnZhbGlkX2xvZ19sZXZlbCAgICAgICAgPSAtMSwKLSAgICBsb2dfc3VjY2Vzc2Z1bF90ZXN0cyAgICAgPSAwLAotICAgIGxvZ190ZXN0X3VuaXRzICAgICAgICAgICA9IDEsCi0gICAgbG9nX21lc3NhZ2VzICAgICAgICAgICAgID0gMiwKLSAgICBsb2dfd2FybmluZ3MgICAgICAgICAgICAgPSAzLAotICAgIGxvZ19hbGxfZXJyb3JzICAgICAgICAgICA9IDQsIC8vIHJlcG9ydGVkIGJ5IHVuaXQgdGVzdCBtYWNyb3MKLSAgICBsb2dfY3BwX2V4Y2VwdGlvbl9lcnJvcnMgPSA1LCAvLyB1bmNhdWdodCBDKysgZXhjZXB0aW9ucwotICAgIGxvZ19zeXN0ZW1fZXJyb3JzICAgICAgICA9IDYsIC8vIGluY2x1ZGluZyB0aW1lb3V0cywgc2lnbmFscywgdHJhcHMKLSAgICBsb2dfZmF0YWxfZXJyb3JzICAgICAgICAgPSA3LCAvLyBpbmNsdWRpbmcgdW5pdCB0ZXN0IG1hY3JvcyBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZhdGFsIHN5c3RlbSBlcnJvcnMKLSAgICBsb2dfbm90aGluZyAgICAgICAgICAgICAgPSA4Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0xPR19MRVZFTF9IUFBfMDExNjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjkzZGI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzdXBwcmVzcyBzb21lIHdhcm5pbmdzIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTEpIC8vIGNvcHkgY29uc3RydWN0b3IgY2FuJ3Qgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNhbid0IG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMCkgLy8gdW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIgCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpIC8vIDxzeW1ib2w+IHdhcyBkZWNsYXJlZCBkZXByZWNhdGVkIAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzU1KSAvLyAndGhpcycgOiB1c2VkIGluIGJhc2UgbWVtYmVyIGluaXRpYWxpemVyIGxpc3QKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwNikgLy8gYXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjUxKSAvLyBjbGFzcyAnQTxUPicgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyAnQicKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyNykgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjkwKSAvLyBDKysgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gaWdub3JlZCBleGNlcHQgdG8gLi4uCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODApIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIGZ1bmN0aW9uIHR5cGUgaGFzIG5vIG1lYW5pbmc7IGlnbm9yZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI3NSkgLy8gbm9uIGRsbC1pbnRlcmZhY2UgY2xhc3MgLi4uIHVzZWQgYXMgYmFzZSBmb3IgZGxsLWludGVyZmFjZSBjbGFzcyAuLi4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI2NykgLy8gJ3ZhcicgOiBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMSkgLy8gJ2NsYXNzJyA6IGNvcHkgY29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhN2EyNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHN0b3JhZ2UgZm9yIHVuaXQgdGVzdCBmcmFtZXdvcmsgcGFyYW1ldGVycyBpbmZvcm1hdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSFBQXzA3MTg5NEdFUgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgcnVudGltZV9jb25maWcgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHJ1bnRpbWVfY29uZmlnIHsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgICAgICAgICAgICAgICAgICBpbml0KCBpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2ICk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCB1bml0X3Rlc3Q6OmxvZ19sZXZlbCAgICAgbG9nX2xldmVsKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIG5vX3Jlc3VsdF9jb2RlKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0OjpyZXBvcnRfbGV2ZWwgIHJlcG9ydF9sZXZlbCgpOwotTkROQk9PU1RfVEVTVF9ERUNMIGNvbnN0X3N0cmluZyAgICAgICAgICAgICB0ZXN0X3RvX3J1bigpOwotTkROQk9PU1RfVEVTVF9ERUNMIGNvbnN0X3N0cmluZyAgICAgICAgICAgICBicmVha19leGVjX3BhdGgoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgc2F2ZV9wYXR0ZXJuKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIHNob3dfYnVpbGRfaW5mbygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBzaG93X3Byb2dyZXNzKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIGNhdGNoX3N5c19lcnJvcnMoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgYXV0b19zdGFydF9kYmcoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgdXNlX2FsdF9zdGFjaygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBkZXRlY3RfZnBfZXhjZXB0aW9ucygpOwotTkROQk9PU1RfVEVTVF9ERUNMIG91dHB1dF9mb3JtYXQgICAgICAgICAgICByZXBvcnRfZm9ybWF0KCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgb3V0cHV0X2Zvcm1hdCAgICAgICAgICAgIGxvZ19mb3JtYXQoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6Om9zdHJlYW0qICAgICAgICAgICAgcmVwb3J0X3NpbmsoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6Om9zdHJlYW0qICAgICAgICAgICAgbG9nX3NpbmsoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBsb25nICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0X21lbW9yeV9sZWFrcygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGludCAgICAgICAgICAgICAgICAgICAgICByYW5kb21fc2VlZCgpOwotCi19IC8vIG5hbWVzcGFjZSBydW50aW1lX2NvbmZpZwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTk1ZmZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbnRhaW5zIG1pY3MuIHdvcmthcm91bmRzIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9XT1JLQVJPVU5EX0hQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9XT1JLQVJPVU5EX0hQUF8wMjEwMDVHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBjb21waWxlcnMgd29ya2Fyb3VuZHMgYW5kIHN0ZDo6cHRyZGlmZl90Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGl0ZXJhdG9yPiAgICAgLy8gZm9yIHN0ZDo6ZGlzdGFuY2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0ZDo6cHRyZGlmZl90IGRpc3RhbmNlKCBUIGNvbnN0JiB4XywgVCBjb25zdCYgeV8gKQoteyAKLSAgICBzdGQ6OnB0cmRpZmZfdCByZXMgPSAwOwotCi0gICAgc3RkOjpkaXN0YW5jZSggeF8sIHlfLCByZXMgKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbHNlCi11c2luZyBzdGQ6OmRpc3RhbmNlOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoY29uc3QgVCYpIHt9Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotbmFtZXNwYWNlIHVuaXRfdGVzdF9mcmFtZXdvcmsgPSB1bml0X3Rlc3Q7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9XT1JLQVJPVU5EX0hQUF8wMjEwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWFiYzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBhYnN0cmFjdCBtb25pdG9yIGludGVyZmFjZXMgYW5kIGltcGxlbWVudHMgZXhlY3V0aW9uIGV4Y2VwdGlvbgotLy8gIFRoZSBvcmlnaW5hbCBCb29zdCBUZXN0IExpYnJhcnkgaW5jbHVkZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGZ1bmN0aW9uCi0vLyAgbmFtZWQgY2F0Y2hfZXhjZXB0aW9ucygpIHdoaWNoIGNhdWdodCBvdGhlcndpc2UgdW5jYXVnaHQgQysrIGV4Y2VwdGlvbnMuCi0vLyAgSXQgd2FzIGRlcml2ZWQgZnJvbSBhbiBleGlzdGluZyB0ZXN0IGZyYW1ld29yayBieSBCZW1hbiBEYXdlcy4gIFRoZQotLy8gIGludGVudCB3YXMgdG8gZXhwYW5kIGxhdGVyIHRvIGNhdGNoIG90aGVyIGRldGVjdGFibGUgYnV0IHBsYXRmb3JtIGRlcGVuZGVudAotLy8gIGVycm9yIGV2ZW50cyBsaWtlIFVuaXggc2lnbmFscyBvciBXaW5kb3dzIHN0cnVjdHVyZWQgQyBleGNlcHRpb25zLgotLy8KLS8vICBSZXF1ZXN0cyBmcm9tIGVhcmx5IGFkb3B0ZXJzIG9mIHRoZSBCb29zdCBUZXN0IExpYnJhcnkgaW5jbHVkZWQKLS8vICBjb25maWd1cmFibGUgbGV2ZWxzIG9mIGVycm9yIG1lc3NhZ2UgZGV0YWlsLCBlbGltaW5hdGlvbiBvZiB0ZW1wbGF0ZXMsCi0vLyAgc2VwYXJhdGlvbiBvZiBlcnJvciByZXBvcnRpbmcsIGFuZCBtYWtpbmcgdGhlIGNhdGNoX2V4Y2VwdGlvbnMoKSBmYWNpbGl0aWVzCi0vLyAgYXZhaWxhYmxlIGFzIGEgcHVibGljIGludGVyZmFjZS4gIFN1cHBvcnQgZm9yIHVuaXQgdGVzdGluZyBhbHNvIHN0cmV0Y2hlZAotLy8gIHRoZSBmdW5jdGlvbiBiYXNlZCBkZXNpZ24uICBJbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIGhlYWRlciBiZWNhbWUgbGVzcwotLy8gIGF0dHJhY3RpdmUgZHVlIHRvIHRoZSBuZWVkIHRvIGluY2x1ZGUgbWFueSBodWdlIHN5c3RlbSBkZXBlbmRlbnQgaGVhZGVycywKLS8vICBhbHRob3VnaCBzdGlsbCBwcmVmZXJhYmxlIGluIGNlcnRhaW4gY2FzZXMuCi0vLwotLy8gIEFsbCB0aG9zZSBpc3N1ZXMgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSBpbnRyb2R1Y2luZyB0aGUgY2xhc3MtYmFzZWQKLS8vICBkZXNpZ24gcHJlc2VudGVkIGhlcmUuCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0VYRUNVVElPTl9NT05JVE9SX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fTU9OSVRPUl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBkZXRhaWw6OnRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICB0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UoIG5kbmJvb3N0OjpzY29wZWRfcHRyPHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZT4mIG5leHQgKQotICAgIHsKLSAgICAgICAgbmV4dC5zd2FwKCBtX25leHQgKTsKLSAgICB9Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgdmlydHVhbCAgICAgfnRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSgpIHt9Ci0KLSAgICB2aXJ0dWFsIGludCBvcGVyYXRvcigpKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8dHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlPiBtX25leHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBleGVjdXRpb25fZXhjZXB0aW9uICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotICAgIAotLy8gIGRlc2lnbiByYXRpb25hbGU6IGZlYXIgb2YgYmVpbmcgb3V0IChvciBuZWFybHkgb3V0KSBvZiBtZW1vcnkuCi0gICAgCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgZXhlY3V0aW9uX2V4Y2VwdGlvbiB7Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgY29uc3Rfc3RyaW5nOwotcHVibGljOgotICAgIGVudW0gZXJyb3JfY29kZSB7Ci0gICAgICAgIC8vICBUaGVzZSB2YWx1ZXMgYXJlIHNvbWV0aW1lcyB1c2VkIGFzIHByb2dyYW0gcmV0dXJuIGNvZGVzLgotICAgICAgICAvLyAgVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGhhdmUgYmVlbiBjaG9zZW4gdG8gYXZvaWQgY29uZmxpY3RzIHdpdGgKLSAgICAgICAgLy8gIGNvbW1vbmx5IHVzZWQgcHJvZ3JhbSByZXR1cm4gY29kZXM6IHZhbHVlcyA8IDEwMCBhcmUgb2Z0ZW4gdXNlcgotICAgICAgICAvLyAgYXNzaWduZWQsIHZhbHVlcyA+IDI1NSBhcmUgc29tZXRpbWVzIHVzZWQgdG8gcmVwb3J0IHN5c3RlbSBlcnJvcnMuCi0gICAgICAgIC8vICBHYXBzIGluIHZhbHVlcyBhbGxvdyBmb3Igb3JkZXJseSBleHBhbnNpb24uCi0gICAgICAgIAotICAgICAgICBub19lcnJvciAgICAgICAgICAgICAgID0gMCwgICAvLyBmb3IgY29tcGxldGVuZXNzIG9ubHk7IG5ldmVyIHJldHVybmVkCi0gICAgICAgIHVzZXJfZXJyb3IgICAgICAgICAgICAgPSAyMDAsIC8vIHVzZXIgcmVwb3J0ZWQgbm9uLWZhdGFsIGVycm9yCi0gICAgICAgIGNwcF9leGNlcHRpb25fZXJyb3IgICAgPSAyMDUsIC8vIHNlZSBub3RlICgxKSBiZWxvdwotICAgICAgICBzeXN0ZW1fZXJyb3IgICAgICAgICAgID0gMjEwLCAvLyBzZWUgbm90ZSAoMikgYmVsb3cKLSAgICAgICAgdGltZW91dF9lcnJvciAgICAgICAgICA9IDIxNSwgLy8gb25seSBkZXRlY3RhYmxlIG9uIGNlcnRhaW4gcGxhdGZvcm1zCi0gICAgICAgIHVzZXJfZmF0YWxfZXJyb3IgICAgICAgPSAyMjAsIC8vIHVzZXIgcmVwb3J0ZWQgZmF0YWwgZXJyb3IKLSAgICAgICAgc3lzdGVtX2ZhdGFsX2Vycm9yICAgICA9IDIyNSAgLy8gc2VlIG5vdGUgKDIpIGJlbG93Ci0gICAgICAgIAotICAgICAgICAvLyAgTm90ZSAxOiBPbmx5IHVuY2F1Z2h0IEMrKyBleGNlcHRpb25zIGFyZSB0cmVhdGVkIGFzIGVycm9ycy4KLSAgICAgICAgLy8gIElmIHRoZSBhcHBsaWNhdGlvbiBjYXRjaGVzIGEgQysrIGV4Y2VwdGlvbiwgaXQgd2lsbCBuZXZlciByZWFjaAotICAgICAgICAvLyAgdGhlIGV4ZWN1dGlvbl9tb25pdG9yLgotICAgICAgICAKLSAgICAgICAgLy8gIE5vdGUgMjogVGhlc2UgZXJyb3JzIGluY2x1ZGUgVW5peCBzaWduYWxzIGFuZCBXaW5kb3dzIHN0cnVjdHVyZWQKLSAgICAgICAgLy8gIGV4Y2VwdGlvbnMuICBUaGV5IGFyZSBvZnRlbiBpbml0aWF0ZWQgYnkgaGFyZHdhcmUgdHJhcHMuCi0gICAgICAgIC8vCi0gICAgICAgIC8vICBUaGUgaW1wbGVtZW50YXRpb24gZGVjaWRlcyB3aGF0IGlzIGEgZmF0YWxfc3lzdGVtX2V4Y2VwdGlvbiBhbmQgd2hhdCBpcwotICAgICAgICAvLyAganVzdCBhIHN5c3RlbV9leGNlcHRpb24uICBGYXRhbCBlcnJvcnMgYXJlIHNvIGxpa2VseSB0byBoYXZlIGNvcnJ1cHRlZAotICAgICAgICAvLyAgbWFjaGluZSBzdGF0ZSAobGlrZSBhIHN0YWNrIG92ZXJmbG93IG9yIGFkZHJlc3NpbmcgZXhjZXB0aW9uKSB0aGF0IGl0Ci0gICAgICAgIC8vICBpcyB1bnJlYXNvbmFibGUgdG8gY29udGludWUgZXhlY3V0aW9uLgotICAgIH07Ci0gICAgCi0gICAgc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBsb2NhdGlvbiB7Ci0gICAgICAgIGV4cGxpY2l0ICAgIGxvY2F0aW9uKCBjaGFyIGNvbnN0KiBmaWxlX25hbWUgPSAwLCBzaXplX3QgbGluZV9udW0gPSAwLCBjaGFyIGNvbnN0KiBmdW5jID0gMCApOwotCi0gICAgICAgIGNvbnN0X3N0cmluZyAgICBtX2ZpbGVfbmFtZTsKLSAgICAgICAgc2l6ZV90ICAgICAgICAgIG1fbGluZV9udW07Ci0gICAgICAgIGNvbnN0X3N0cmluZyAgICBtX2Z1bmN0aW9uOwotICAgIH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4ZWN1dGlvbl9leGNlcHRpb24oIGVycm9yX2NvZGUgZWNfLCBjb25zdF9zdHJpbmcgd2hhdF9tc2dfLCBsb2NhdGlvbiBjb25zdCYgbG9jYXRpb25fICk7IC8vIG1heCBsZW5ndGggMjU2IGluYyAnXDAnCi0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGVycm9yX2NvZGUgICAgICBjb2RlKCkgY29uc3QgICAgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9Ci0gICAgY29uc3Rfc3RyaW5nICAgIHdoYXQoKSBjb25zdCAgICB7IHJldHVybiBtX3doYXQ7IH0KLSAgICBsb2NhdGlvbiBjb25zdCYgd2hlcmUoKSBjb25zdCAgIHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBlcnJvcl9jb2RlICAgICAgbV9lcnJvcl9jb2RlOwotICAgIGNvbnN0X3N0cmluZyAgICBtX3doYXQ7Ci0gICAgbG9jYXRpb24gICAgICAgIG1fbG9jYXRpb247Ci19OyAvLyBleGVjdXRpb25fZXhjZXB0aW9uCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIGV4ZWN1dGlvbl9tb25pdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4ZWN1dGlvbl9tb25pdG9yKCkKLSAgICA6IHBfY2F0Y2hfc3lzdGVtX2Vycm9ycyggdHJ1ZSApCi0gICAgLCBwX2F1dG9fc3RhcnRfZGJnKCBmYWxzZSApCi0gICAgLCBwX3RpbWVvdXQoIDAgKQotICAgICwgcF91c2VfYWx0X3N0YWNrKCB0cnVlICkKLSAgICAsIHBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMoIGZhbHNlICkKLSAgICB7fQotCi0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICAKLSAgICAvLyAgVGhlIHBfY2F0Y2hfc3lzdGVtX2Vycm9ycyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vbml0b3Igc2hvdWxkIAotICAgIC8vICB0cnkgdG8gY2F0Y2ggc3lzdGVtIGVycm9ycy9leGNlcHRpb25zIHRoYXQgd291bGQgY2F1c2UgcHJvZ3JhbSB0byBjcmFzaCAKLSAgICAvLyAgaW4gcmVndWxhciBjYXNlCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gcF9jYXRjaF9zeXN0ZW1fZXJyb3JzOyAKLSAgICAvLyAgVGhlIHBfYXV0b19zdGFydF9kYmcgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBtb25pdG9yIHNob3VsZCAKLSAgICAvLyAgdHJ5IHRvIGF0dGFjaCBkZWJ1Z2dlciBpbiBjYXNlIG9mIGNhdWdodCBzeXN0ZW0gZXJyb3IKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiBwX2F1dG9fc3RhcnRfZGJnOwotICAgIC8vICBUaGUgcF90aW1lb3V0IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNlY29uZHMgdGhhdCBlbGFwc2UgYmVmb3JlCi0gICAgLy8gIGEgdGltZXJfZXJyb3Igb2NjdXJzLiAgTWF5IGJlIGlnbm9yZWQgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8aW50PiAgcF90aW1lb3V0OwotICAgIC8vICBUaGUgcF91c2VfYWx0X3N0YWNrIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgbW9uaXRvciBzaG91bGQKLSAgICAvLyAgdXNlIGFsdGVybmF0aXZlIHN0YWNrIGZvciB0aGUgc2lnbmFsIGNhdGNoaW5nCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gcF91c2VfYWx0X3N0YWNrOwotICAgIC8vICBUaGUgcF9kZXRlY3RfZnBfZXhjZXB0aW9ucyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vbml0b3Igc2hvdWxkCi0gICAgLy8gIHRyeSB0byBkZXRlY3QgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9ucwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+IHBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnM7Ci0KLSAgICBpbnQgICAgICAgICBleGVjdXRlKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICk7IAotICAgIC8vICBSZXR1cm5zOiAgVmFsdWUgcmV0dXJuZWQgYnkgZnVuY3Rpb24gY2FsbCBGKCkuCi0gICAgLy8KLSAgICAvLyAgRWZmZWN0czogIENhbGxzIGV4ZWN1dGVzIHN1cHBsaWVkIGZ1bmN0aW9uIEYgaW5zaWRlIGEgdHJ5L2NhdGNoIGJsb2NrIHdoaWNoIGFsc28gbWF5Ci0gICAgLy8gIGluY2x1ZGUgb3RoZXIgdW5zcGVjaWZpZWQgcGxhdGZvcm0gZGVwZW5kZW50IGVycm9yIGRldGVjdGlvbiBjb2RlLgotICAgIC8vCi0gICAgLy8gIFRocm93czogZXhlY3V0aW9uX2V4Y2VwdGlvbiBvbiBhbiB1bmNhdWdodCBDKysgZXhjZXB0aW9uLAotICAgIC8vICBhIGhhcmR3YXJlIG9yIHNvZnR3YXJlIHNpZ25hbCwgdHJhcCwgb3Igb3RoZXIgZXhjZXB0aW9uLgotICAgIC8vCi0gICAgLy8gIE5vdGU6IGV4ZWN1dGUoKSBkb2Vzbid0IGNvbnNpZGVyIGl0IGFuIGVycm9yIGZvciBGIHRvIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlLgotICAgIAotICAgIC8vIHJlZ2lzdGVyIGN1c3RvbSAodXNlciBzdXBwbGllZCkgZXhjZXB0aW9uIHRyYW5zbGF0b3IKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb24sIHR5cGVuYW1lIEV4Y2VwdGlvblRyYW5zbGF0b3I+Ci0gICAgdm9pZCAgICAgICAgcmVnaXN0ZXJfZXhjZXB0aW9uX3RyYW5zbGF0b3IoIEV4Y2VwdGlvblRyYW5zbGF0b3IgY29uc3QmIHRyLCBuZG5ib29zdDo6dHlwZTxFeGNlcHRpb24+KiA9IDAgKTsKLQotcHJpdmF0ZToKLSAgICAvLyBpbXBsZW1lbnRhdGlvbiBoZWxwZXJzCi0gICAgaW50ICAgICAgICAgY2F0Y2hfc2lnbmFscyggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApOwotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8ZGV0YWlsOjp0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2U+IG1fY3VzdG9tX3RyYW5zbGF0b3JzOwotICAgIG5kbmJvb3N0OjpzY29wZWRfYXJyYXk8Y2hhcj4gICAgICAgICAgICAgICAgICAgICAgICAgICBtX2FsdF9zdGFjazsKLX07IC8vIGV4ZWN1dGlvbl9tb25pdG9yCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBkZXRhaWw6OnRyYW5zbGF0ZV9leGNlcHRpb24gICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvbiwgdHlwZW5hbWUgRXhjZXB0aW9uVHJhbnNsYXRvcj4KLWNsYXNzIHRyYW5zbGF0ZV9leGNlcHRpb24gOiBwdWJsaWMgdHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlCi17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6c2NvcGVkX3B0cjx0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2U+IGJhc2VfcHRyOwotcHVibGljOgotICAgIGV4cGxpY2l0ICAgIHRyYW5zbGF0ZV9leGNlcHRpb24oIEV4Y2VwdGlvblRyYW5zbGF0b3IgY29uc3QmIHRyLCBiYXNlX3B0ciYgbmV4dCApCi0gICAgOiB0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UoIG5leHQgKSwgbV90cmFuc2xhdG9yKCB0ciApIHt9Ci0KLSAgICBpbnQgb3BlcmF0b3IoKSggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG1fbmV4dCA/ICgqbV9uZXh0KSggRiApIDogRigpOwotICAgICAgICB9IGNhdGNoKCBFeGNlcHRpb24gY29uc3QmIGUgKSB7Ci0gICAgICAgICAgICBtX3RyYW5zbGF0b3IoIGUgKTsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBFeGNlcHRpb25UcmFuc2xhdG9yIG1fdHJhbnNsYXRvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb24sIHR5cGVuYW1lIEV4Y2VwdGlvblRyYW5zbGF0b3I+Ci12b2lkCi1leGVjdXRpb25fbW9uaXRvcjo6cmVnaXN0ZXJfZXhjZXB0aW9uX3RyYW5zbGF0b3IoIEV4Y2VwdGlvblRyYW5zbGF0b3IgY29uc3QmIHRyLCBuZG5ib29zdDo6dHlwZTxFeGNlcHRpb24+KiApCi17Ci0gICAgbV9jdXN0b21fdHJhbnNsYXRvcnMucmVzZXQoIAotICAgICAgICBuZXcgZGV0YWlsOjp0cmFuc2xhdGVfZXhjZXB0aW9uPEV4Y2VwdGlvbixFeGNlcHRpb25UcmFuc2xhdG9yPiggdHIsbV9jdXN0b21fdHJhbnNsYXRvcnMgKSApOwotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBleGVjdXRpb25fYWJvcnRlZCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBleGVjdXRpb25fYWJvcnRlZCB7fTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgc3lzdGVtX2Vycm9yICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzeXN0ZW1fZXJyb3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgc3lzdGVtX2Vycm9yKCBjaGFyIGNvbnN0KiBleHAgKTsKLQotICAgIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8bG9uZz4gICAgICAgICAgcF9lcnJubzsgCi0gICAgdW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTxjaGFyIGNvbnN0Kj4gICBwX2ZhaWxlZF9leHA7IAotfTsKLQotI2RlZmluZSBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIGV4cCApIGlmKCAoZXhwKSApIDsgZWxzZSB0aHJvdyA6Om5kbmJvb3N0OjpzeXN0ZW1fZXJyb3IoIE5ETkJPT1NUX1NUUklOR0laRSggZXhwICkgKQotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2Zsb2F0aW5nX3BvaW50X2NvbXBhcmlzb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2Zsb2F0aW5nX3BvaW50X2NvbXBhcmlzb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTBhNjBlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mbG9hdGluZ19wb2ludF9jb21wYXJpc29uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgYWxnb2lydGhtcyBmb3IgY29tcGFyaW5nIDIgZmxvYXRpbmcgcG9pbnQgdmFsdWVzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0ZMT0FUSU5HX1BPSU5UX0NPTVBBUklTT05fSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZMT0FUSU5HX1BPSU5UX0NPTVBBUklTT05fSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPiAgLy8gZm9yIHN0ZDo6bnVtZXJpY19saW1pdHMKLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVyc2lvbl90cmFpdHMuaHBwPiAvLyBmb3IgbnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHMKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi11c2luZyB1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWVudW0gZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbl90eXBlIHsKLSAgICBGUENfU1RST05HLCAvLyAiVmVyeSBjbG9zZSIgICAtIGVxdWF0aW9uIDEnIGluIGRvY3MsIHRoZSBkZWZhdWx0Ci0gICAgRlBDX1dFQUsgICAgLy8gIkNsb3NlIGVub3VnaCIgLSBlcXVhdGlvbiAyJyBpbiBkb2NzLgotCi19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIGRldGFpbHMgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB0dF9kZXRhaWwgewotCi0vLyBGUFQgaXMgRmxvYXRpbmctUG9pbnQgVHlwZTogZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGUgb3IgVXNlci1EZWZpbmVkLgotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotaW5saW5lIEZQVAotZnB0X2FicyggRlBUIGZwdiApIAotewotICAgIHJldHVybiBmcHYgPCBzdGF0aWNfY2FzdDxGUFQ+KDApID8gLWZwdiA6IGZwdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotc3RydWN0IGZwdF9saW1pdHMgewotICAgIHN0YXRpYyBGUFQgICAgbWluX3ZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPEZQVD46OmlzX3NwZWNpYWxpemVkCi0gICAgICAgICAgICAgICAgICAgID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8RlBUPjo6bWluKSgpCi0gICAgICAgICAgICAgICAgICAgIDogMDsKLSAgICB9Ci0gICAgc3RhdGljIEZQVCAgICBtYXhfdmFsdWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8RlBUPjo6aXNfc3BlY2lhbGl6ZWQKLSAgICAgICAgICAgICAgICAgICAgPyAoc3RkOjpudW1lcmljX2xpbWl0czxGUFQ+OjptYXgpKCkKLSAgICAgICAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxGUFQ+KDEwMDAwMDApOyAvLyBmb3IgdGhlIG91ciBwdXJwdXNlcyBpdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgd2hhdCB2YWx1ZSBpcyByZXR1cm5lZCBoZXJlCi0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gYm90aCBmMSBhbmQgZjIgYXJlIHVuc2lnbmVkIGhlcmUKLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLWlubGluZSBGUFQKLXNhZmVfZnB0X2RpdmlzaW9uKCBGUFQgZjEsIEZQVCBmMiApCi17Ci0gICAgLy8gQXZvaWQgb3ZlcmZsb3cuCi0gICAgaWYoIChmMiA8IHN0YXRpY19jYXN0PEZQVD4oMSkpICAmJiAoZjEgPiBmMipmcHRfbGltaXRzPEZQVD46Om1heF92YWx1ZSgpKSApCi0gICAgICAgIHJldHVybiBmcHRfbGltaXRzPEZQVD46Om1heF92YWx1ZSgpOwotCi0gICAgLy8gQXZvaWQgdW5kZXJmbG93LgotICAgIGlmKCAoZjEgPT0gc3RhdGljX2Nhc3Q8RlBUPigwKSkgfHwKLSAgICAgICAgKChmMiA+IHN0YXRpY19jYXN0PEZQVD4oMSkpICYmIChmMSA8IGYyKmZwdF9saW1pdHM8RlBUPjo6bWluX3ZhbHVlKCkpKSApCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxGUFQ+KDApOwotCi0gICAgcmV0dXJuIGYxL2YyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgdG9sZXJhbmNlIHByZXNlbnRhdGlvbiB0eXBlcyAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1zdHJ1Y3QgcGVyY2VudF90b2xlcmFuY2VfdCB7Ci0gICAgZXhwbGljaXQgICAgcGVyY2VudF90b2xlcmFuY2VfdCggRlBUIHYgKSA6IG1fdmFsdWUoIHYgKSB7fQotCi0gICAgRlBUIG1fdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsdHlwZW5hbWUgRlBUPgotT3V0JiBvcGVyYXRvcjw8KCBPdXQmIG91dCwgcGVyY2VudF90b2xlcmFuY2VfdDxGUFQ+IHQgKQotewotICAgIHJldHVybiBvdXQgPDwgdC5tX3ZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1pbmxpbmUgcGVyY2VudF90b2xlcmFuY2VfdDxGUFQ+Ci1wZXJjZW50X3RvbGVyYW5jZSggRlBUIHYgKQotewotICAgIHJldHVybiBwZXJjZW50X3RvbGVyYW5jZV90PEZQVD4oIHYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotc3RydWN0IGZyYWN0aW9uX3RvbGVyYW5jZV90IHsKLSAgICBleHBsaWNpdCBmcmFjdGlvbl90b2xlcmFuY2VfdCggRlBUIHYgKSA6IG1fdmFsdWUoIHYgKSB7fQotCi0gICAgRlBUIG1fdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsdHlwZW5hbWUgRlBUPgotT3V0JiBvcGVyYXRvcjw8KCBPdXQmIG91dCwgZnJhY3Rpb25fdG9sZXJhbmNlX3Q8RlBUPiB0ICkKLXsKLSAgICByZXR1cm4gb3V0IDw8IHQubV92YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotaW5saW5lIGZyYWN0aW9uX3RvbGVyYW5jZV90PEZQVD4KLWZyYWN0aW9uX3RvbGVyYW5jZSggRlBUIHYgKQotewotICAgIHJldHVybiBmcmFjdGlvbl90b2xlcmFuY2VfdDxGUFQ+KCB2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBjbG9zZV9hdF90b2xlcmFuY2UgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotY2xhc3MgY2xvc2VfYXRfdG9sZXJhbmNlIHsKLXB1YmxpYzoKLSAgICAvLyBQdWJsaWMgdHlwZWRlZnMKLSAgICB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5cGU7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRvbGVyYW5jZUJhc2VUeXBlPgotICAgIGV4cGxpY2l0ICAgIGNsb3NlX2F0X3RvbGVyYW5jZSggcGVyY2VudF90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gIHRvbGVyYW5jZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgICAgICAgICAgZnBjX3R5cGUgPSBGUENfU1RST05HICkgCi0gICAgOiBwX2ZyYWN0aW9uX3RvbGVyYW5jZSggdHRfZGV0YWlsOjpmcHRfYWJzKCBzdGF0aWNfY2FzdDxGUFQ+KDAuMDEpKnRvbGVyYW5jZS5tX3ZhbHVlICkgKQotICAgICwgcF9zdHJvbmdfb3Jfd2VhayggZnBjX3R5cGUgPT0gIEZQQ19TVFJPTkcgKQotICAgICwgbV9yZXBvcnRfbW9kaWZpZXIoIDEwMC4gKQotICAgIHt9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVG9sZXJhbmNlQmFzZVR5cGU+Ci0gICAgZXhwbGljaXQgICAgY2xvc2VfYXRfdG9sZXJhbmNlKCBmcmFjdGlvbl90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gdG9sZXJhbmNlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSAgICAgICAgICBmcGNfdHlwZSA9IEZQQ19TVFJPTkcgKSAKLSAgICA6IHBfZnJhY3Rpb25fdG9sZXJhbmNlKCB0dF9kZXRhaWw6OmZwdF9hYnMoIHRvbGVyYW5jZS5tX3ZhbHVlICkgKQotICAgICwgcF9zdHJvbmdfb3Jfd2VhayggZnBjX3R5cGUgPT0gIEZQQ19TVFJPTkcgKQotICAgICwgbV9yZXBvcnRfbW9kaWZpZXIoIDEuICkKLSAgICB7fQotCi0gICAgcHJlZGljYXRlX3Jlc3VsdCAgICAgICAgb3BlcmF0b3IoKSggRlBUIGxlZnQsIEZQVCByaWdodCApIGNvbnN0Ci0gICAgewotICAgICAgICBGUFQgZGlmZiA9IHR0X2RldGFpbDo6ZnB0X2FicyggbGVmdCAtIHJpZ2h0ICk7Ci0gICAgICAgIEZQVCBkMSAgID0gdHRfZGV0YWlsOjpzYWZlX2ZwdF9kaXZpc2lvbiggZGlmZiwgdHRfZGV0YWlsOjpmcHRfYWJzKCByaWdodCApICk7Ci0gICAgICAgIEZQVCBkMiAgID0gdHRfZGV0YWlsOjpzYWZlX2ZwdF9kaXZpc2lvbiggZGlmZiwgdHRfZGV0YWlsOjpmcHRfYWJzKCBsZWZ0ICkgKTsKLSAgICAgICAgCi0gICAgICAgIHByZWRpY2F0ZV9yZXN1bHQgcmVzKCBwX3N0cm9uZ19vcl93ZWFrIAotICAgICAgICAgICAgPyAoZDEgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkgJiYgZDIgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkpIAotICAgICAgICAgICAgOiAoZDEgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkgfHwgZDIgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkpICk7Ci0KLSAgICAgICAgaWYoICFyZXMgKQotICAgICAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAoKCBkMSA8PSBwX2ZyYWN0aW9uX3RvbGVyYW5jZS5nZXQoKSA/IGQyIDogZDEgKSAqIG1fcmVwb3J0X21vZGlmaWVyKTsKLQotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgcmVhZG9ubHlfcHJvcGVydHk8RlBUPiAgcF9mcmFjdGlvbl90b2xlcmFuY2U7Ci0gICAgcmVhZG9ubHlfcHJvcGVydHk8Ym9vbD4gcF9zdHJvbmdfb3Jfd2VhazsKLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRlBUICAgICAgICAgICAgICAgICAgICAgbV9yZXBvcnRfbW9kaWZpZXI7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBjaGVja19pc19jbG9zZSAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgY2hlY2tfaXNfY2xvc2VfdCB7Ci0gICAgLy8gUHVibGljIHR5cGVkZWZzCi0gICAgdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRlBUMSwgdHlwZW5hbWUgRlBUMiwgdHlwZW5hbWUgVG9sZXJhbmNlQmFzZVR5cGU+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdAotICAgIG9wZXJhdG9yKCkoIEZQVDEgbGVmdCwgRlBUMiByaWdodCwgcGVyY2VudF90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gdG9sZXJhbmNlLCAKLSAgICAgICAgICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgZnBjX3R5cGUgPSBGUENfU1RST05HICkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIGRlZHVjZSAiYmV0dGVyIiB0eXBlIGZyb20gdHlwZXMgb2YgYXJndW1lbnRzIGJlaW5nIGNvbXBhcmVkCi0gICAgICAgIC8vIGlmIG9uZSB0eXBlIGlzIGZsb2F0aW5nIGFuZCB0aGUgc2Vjb25kIGludGVncmFsIHdlIHVzZSBmbG9hdGluZyB0eXBlIGFuZCAKLSAgICAgICAgLy8gdmFsdWUgb2YgaW50ZWdyYWwgdHlwZSBpcyBwcm9tb3RlZCB0byB0aGUgZmxvYXRpbmcuIFRoZSBzYW1lIGZvciBmbG9hdCBhbmQgZG91YmxlCi0gICAgICAgIC8vIEJ1dCB3ZSBkb24ndCB3YW50IHRvIGNvbXBhcmUgdHdvIHZhbHVlcyBvZiBpbnRlZ3JhbCB0eXBlcyB1c2luZyB0aGlzIHRvb2wuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHM8RlBUMSxGUFQyPjo6c3VwZXJ0eXBlIEZQVDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggIWlzX2ludGVncmFsPEZQVD46OnZhbHVlICk7Ci0KLSAgICAgICAgY2xvc2VfYXRfdG9sZXJhbmNlPEZQVD4gcHJlZCggdG9sZXJhbmNlLCBmcGNfdHlwZSApOwotCi0gICAgICAgIHJldHVybiBwcmVkKCBsZWZ0LCByaWdodCApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGUFQxLCB0eXBlbmFtZSBGUFQyLCB0eXBlbmFtZSBUb2xlcmFuY2VCYXNlVHlwZT4KLSAgICBwcmVkaWNhdGVfcmVzdWx0Ci0gICAgb3BlcmF0b3IoKSggRlBUMSBsZWZ0LCBGUFQyIHJpZ2h0LCBmcmFjdGlvbl90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gdG9sZXJhbmNlLCAKLSAgICAgICAgICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgZnBjX3R5cGUgPSBGUENfU1RST05HICkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIHNhbWUgYXMgaW4gYSBjb21tZW50IGFib3ZlCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHM8RlBUMSxGUFQyPjo6c3VwZXJ0eXBlIEZQVDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggIWlzX2ludGVncmFsPEZQVD46OnZhbHVlICk7Ci0KLSAgICAgICAgY2xvc2VfYXRfdG9sZXJhbmNlPEZQVD4gcHJlZCggdG9sZXJhbmNlLCBmcGNfdHlwZSApOwotCi0gICAgICAgIHJldHVybiBwcmVkKCBsZWZ0LCByaWdodCApOwotICAgIH0KLX07Ci0KLW5hbWVzcGFjZSB7Ci1jaGVja19pc19jbG9zZV90IGNvbnN0JiBjaGVja19pc19jbG9zZSA9IHVuaXRfdGVzdDo6dXRfZGV0YWlsOjpzdGF0aWNfY29uc3RhbnQ8Y2hlY2tfaXNfY2xvc2VfdD46OnZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBjaGVja19pc19zbWFsbCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgY2hlY2tfaXNfc21hbGxfdCB7Ci0gICAgLy8gUHVibGljIHR5cGVkZWZzCi0gICAgdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotICAgIGJvb2wKLSAgICBvcGVyYXRvcigpKCBGUFQgZnB2LCBGUFQgdG9sZXJhbmNlICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0dF9kZXRhaWw6OmZwdF9hYnMoIGZwdiApIDwgdHRfZGV0YWlsOjpmcHRfYWJzKCB0b2xlcmFuY2UgKTsKLSAgICB9Ci19OwotCi1uYW1lc3BhY2UgewotY2hlY2tfaXNfc21hbGxfdCBjb25zdCYgY2hlY2tfaXNfc21hbGwgPSB1bml0X3Rlc3Q6OnV0X2RldGFpbDo6c3RhdGljX2NvbnN0YW50PGNoZWNrX2lzX3NtYWxsX3Q+Ojp2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdGVzdF90b29scwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZMT0FUSU5HX1BPSU5UX0NPTUFQQVJJU09OX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMzE2ZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGZyYW1ld29yayBpbnRlcmZhY2UKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0hQUF8wMjA4MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSFBQXzAyMDgwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBpbml0X3VuaXRfdGVzdF9mdW5jICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotdHlwZWRlZiBib29sICAgICAgICAoKmluaXRfdW5pdF90ZXN0X2Z1bmMpKCk7Ci0jZWxzZQotdHlwZWRlZiB0ZXN0X3N1aXRlKiAoKmluaXRfdW5pdF90ZXN0X2Z1bmMpKCBpbnQsIGNoYXIqIFtdICk7Ci0jZW5kaWYKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIGZyYW1ld29yayAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgZnJhbWV3b3JrIHsKLQotLy8gaW5pdGlhbGl6YXRpb24KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGluaXQoIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jLCBpbnQgYXJnYywgY2hhciogYXJndltdICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICBpc19pbml0aWFsaXplZCgpOwotCi0vLyBtdXRhdGlvbiBhY2Nlc3MgbWV0aG9kcwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X2Nhc2UqIHRjICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICByZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3Rfc3VpdGUqIHRzICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBkZXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF91bml0KiB0dSApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgY2xlYXIoKTsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcmVnaXN0ZXJfb2JzZXJ2ZXIoIHRlc3Rfb2JzZXJ2ZXImICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBkZXJlZ2lzdGVyX29ic2VydmVyKCB0ZXN0X29ic2VydmVyJiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcmVzZXRfb2JzZXJ2ZXJzKCk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCBtYXN0ZXJfdGVzdF9zdWl0ZV90JiBtYXN0ZXJfdGVzdF9zdWl0ZSgpOwotCi0vLyBjb25zdGFudCBhY2Nlc3MgbWV0aG9kcwotTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfY2FzZSBjb25zdCYgICAgY3VycmVudF90ZXN0X2Nhc2UoKTsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfdW5pdCYgIGdldCggdGVzdF91bml0X2lkLCB0ZXN0X3VuaXRfdHlwZSApOwotdGVtcGxhdGU8dHlwZW5hbWUgVW5pdFR5cGU+Ci1Vbml0VHlwZSYgICAgICAgICAgICAgICBnZXQoIHRlc3RfdW5pdF9pZCBpZCApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXRUeXBlJj4oIGdldCggaWQsIHN0YXRpY19jYXN0PHRlc3RfdW5pdF90eXBlPihVbml0VHlwZTo6dHlwZSkgKSApOwotfQotCi0vLyB0ZXN0IGluaXRpYXRpb24KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHJ1biggdGVzdF91bml0X2lkID0gSU5WX1RFU1RfVU5JVF9JRCwgYm9vbCBjb250aW51ZV90ZXN0ID0gdHJ1ZSApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcnVuKCB0ZXN0X3VuaXQgY29uc3QqLCBib29sIGNvbnRpbnVlX3Rlc3QgPSB0cnVlICk7Ci0KLS8vIHB1YmxpYyB0ZXN0IGV2ZW50cyBkaXNwYXRjaGVycwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICB0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZnJhbWV3b3JrIGVycm9ycyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBpbnRlcm5hbF9lcnJvciA6IHN0ZDo6cnVudGltZV9lcnJvciB7Ci0gICAgaW50ZXJuYWxfZXJyb3IoIGNvbnN0X3N0cmluZyBtICkgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IoIHN0ZDo6c3RyaW5nKCBtLmJlZ2luKCksIG0uc2l6ZSgpICkgKSB7fQotfTsKLQotc3RydWN0IHNldHVwX2Vycm9yIDogc3RkOjpydW50aW1lX2Vycm9yIHsKLSAgICBzZXR1cF9lcnJvciggY29uc3Rfc3RyaW5nIG0gKSA6IHN0ZDo6cnVudGltZV9lcnJvciggc3RkOjpzdHJpbmcoIG0uYmVnaW4oKSwgbS5zaXplKCkgKSApIHt9Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBjb25kLCBtc2cgKSBpZiggY29uZCApIHt9IGVsc2UgdGhyb3cgdW5pdF90ZXN0OjpmcmFtZXdvcms6OnNldHVwX2Vycm9yKCBtc2cgKQotCi1zdHJ1Y3Qgbm90aGluZ190b190ZXN0IHt9OyAvLyBub3QgcmVhbGx5IGFuIGVycm9yCi0KLX0gLy8gbmFtZXNwYWNlIGZyYW1ld29yawotCi19IC8vIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0hQUF8wMjA4MDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4M2Y2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgY29tcGlsZXIgbGlrZSBMb2cgZm9ybWF0dGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBjb21waWxlcl9sb2dfZm9ybWF0dGVyICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLWNvbnN0X3N0cmluZwotdGVzdF9waGFzZV9pZGVudGlmaWVyKCkKLXsKLSAgICByZXR1cm4gZnJhbWV3b3JrOjppc19pbml0aWFsaXplZCgpIAotICAgICAgICAgICAgPyBjb25zdF9zdHJpbmcoIGZyYW1ld29yazo6Y3VycmVudF90ZXN0X2Nhc2UoKS5wX25hbWUuZ2V0KCkgKQotICAgICAgICAgICAgOiBORE5CT09TVF9URVNUX0woICJUZXN0IHNldHVwIiApOwotfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKQotewotICAgIGlmKCB0ZXN0X2Nhc2VzX2Ftb3VudCA+IDAgKQotICAgICAgICBvdXRwdXQgIDw8ICJSdW5uaW5nICIgPDwgdGVzdF9jYXNlc19hbW91bnQgPDwgIiB0ZXN0ICIKLSAgICAgICAgICAgICAgICA8PCAodGVzdF9jYXNlc19hbW91bnQgPiAxID8gImNhc2VzIiA6ICJjYXNlIikgPDwgIi4uLlxuIjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyLmZsdXNoKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19idWlsZF9pbmZvKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCApCi17Ci0gICAgb3V0cHV0ICA8PCAiUGxhdGZvcm06ICIgPDwgTkROQk9PU1RfUExBVEZPUk0gICAgICAgICAgICA8PCAnXG4nCi0gICAgICAgICAgICA8PCAiQ29tcGlsZXI6ICIgPDwgTkROQk9PU1RfQ09NUElMRVIgICAgICAgICAgICA8PCAnXG4nCi0gICAgICAgICAgICA8PCAiU1RMICAgICA6ICIgPDwgTkROQk9PU1RfU1RETElCICAgICAgICAgICAgICA8PCAnXG4nCi0gICAgICAgICAgICA8PCAiQm9vc3QgICA6ICIgPDwgTkROQk9PU1RfVkVSU0lPTi8xMDAwMDAgICAgICA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9WRVJTSU9OLzEwMCAlIDEwMDAgIDw8ICIuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX1ZFUlNJT04gJSAxMDAgICAgICAgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBvdXRwdXQgPDwgIkVudGVyaW5nIHRlc3QgIiA8PCB0dS5wX3R5cGVfbmFtZSA8PCAiIFwiIiA8PCB0dS5wX25hbWUgPDwgIlwiIiA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKQotewotICAgIG91dHB1dCA8PCAiTGVhdmluZyB0ZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiBcIiIgPDwgdHUucF9uYW1lIDw8ICJcIiI7Ci0KLSAgICBpZiggZWxhcHNlZCA+IDAgKSB7Ci0gICAgICAgIG91dHB1dCA8PCAiOyB0ZXN0aW5nIHRpbWU6ICI7Ci0gICAgICAgIGlmKCBlbGFwc2VkICUgMTAwMCA9PSAwICkKLSAgICAgICAgICAgIG91dHB1dCA8PCBlbGFwc2VkLzEwMDAgPDwgIm1zIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0cHV0IDw8IGVsYXBzZWQgPDwgIm1rcyI7Ci0gICAgfQotCi0gICAgb3V0cHV0IDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6dGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBvdXRwdXQgIDw8ICJUZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiBcIiIgPDwgdHUucF9uYW1lIDw8ICJcIiIgPDwgImlzIHNraXBwZWQiIDw8IHN0ZDo6ZW5kbDsKLX0KLSAgICAKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiBjaGVja3BvaW50X2RhdGEsIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkKLXsKLSAgICBleGVjdXRpb25fZXhjZXB0aW9uOjpsb2NhdGlvbiBjb25zdCYgbG9jID0gZXgud2hlcmUoKTsKLSAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgbG9jLm1fZmlsZV9uYW1lLCBsb2MubV9saW5lX251bSApOwotCi0gICAgb3V0cHV0IDw8ICJmYXRhbCBlcnJvciBpbiBcIiIgPDwgKGxvYy5tX2Z1bmN0aW9uLmlzX2VtcHR5KCkgPyB0ZXN0X3BoYXNlX2lkZW50aWZpZXIoKSA6IGxvYy5tX2Z1bmN0aW9uICkgPDwgIlwiOiAiOwotCi0gICAgb3V0cHV0IDw8IGV4LndoYXQoKTsKLQotICAgIGlmKCAhY2hlY2twb2ludF9kYXRhLm1fZmlsZV9uYW1lLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIG91dHB1dCA8PCAnXG4nOwotICAgICAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgY2hlY2twb2ludF9kYXRhLm1fZmlsZV9uYW1lLCBjaGVja3BvaW50X2RhdGEubV9saW5lX251bSApOwotICAgICAgICBvdXRwdXQgPDwgImxhc3QgY2hlY2twb2ludCI7Ci0gICAgICAgIGlmKCAhY2hlY2twb2ludF9kYXRhLm1fbWVzc2FnZS5lbXB0eSgpICkKLSAgICAgICAgICAgIG91dHB1dCA8PCAiOiAiIDw8IGNoZWNrcG9pbnRfZGF0YS5tX21lc3NhZ2U7Ci0gICAgfQotICAgIAotICAgIG91dHB1dCA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV9zdGFydCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiBlbnRyeV9kYXRhLCBsb2dfZW50cnlfdHlwZXMgbGV0ICkKLXsKLSAgICBzd2l0Y2goIGxldCApIHsKLSAgICAgICAgY2FzZSBORE5CT09TVF9VVExfRVRfSU5GTzoKLSAgICAgICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBlbnRyeV9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgICAgIG91dHB1dCA8PCAiaW5mbzogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9NRVNTQUdFOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfVVRMX0VUX1dBUk5JTkc6Ci0gICAgICAgICAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgZW50cnlfZGF0YS5tX2ZpbGVfbmFtZSwgZW50cnlfZGF0YS5tX2xpbmVfbnVtICk7Ci0gICAgICAgICAgICBvdXRwdXQgPDwgIndhcm5pbmcgaW4gXCIiIDw8IHRlc3RfcGhhc2VfaWRlbnRpZmllcigpIDw8ICJcIjogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9FUlJPUjoKLSAgICAgICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBlbnRyeV9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgICAgIG91dHB1dCA8PCAiZXJyb3IgaW4gXCIiIDw8IHRlc3RfcGhhc2VfaWRlbnRpZmllcigpIDw8ICJcIjogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9GQVRBTF9FUlJPUjoKLSAgICAgICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBlbnRyeV9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgICAgIG91dHB1dCA8PCAiZmF0YWwgZXJyb3IgaW4gXCIiIDw8IHRlc3RfcGhhc2VfaWRlbnRpZmllcigpIDw8ICJcIjogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgY29uc3Rfc3RyaW5nIHZhbHVlICkKLXsKLSAgICBvdXRwdXQgPDwgdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGxhenlfb3N0cmVhbSBjb25zdCYgdmFsdWUgKQotewotICAgIG91dHB1dCA8PCB2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvdXRwdXQgKQotewotICAgIG91dHB1dCA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OnByaW50X3ByZWZpeCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lICkKLXsKLSNpZmRlZiBfX0FQUExFX0NDX18KLSAgICAvLyBYY29kZS1jb21wYXRpYmxlIGxvZ2dpbmcgZm9ybWF0LCBpZGVhIGJ5IFJpY2hhcmQgRGluZ3dhbGwgYXQgCi0gICAgLy8gPGh0dHA6Ly9yaWNoYXJkZGluZ3dhbGwubmFtZS8yMDA4LzA2LzAxL3VzaW5nLXRoZS1ib29zdC11bml0LXRlc3QtZnJhbWV3b3JrLXdpdGgteGNvZGUtMy8+LiAKLSAgICBvdXRwdXQgPDwgZmlsZSA8PCAnOicgPDwgbGluZSA8PCAiOiAiOwotI2Vsc2UKLSAgICBvdXRwdXQgPDwgZmlsZSA8PCAnKCcgPDwgbGluZSA8PCAiKTogIjsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NwcF9tYWluLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NwcF9tYWluLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM3YTc4MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jcHBfbWFpbi5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5NS0yMDAxLgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBtYWluIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIGZvciBQcm9ncmFtIEV4ZWN1dG9uIE1vbml0b3IKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ1BQX01BSU5fSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NQUF9NQUlOX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4gICAgLy8gZm9yIGV4aXQgY29kZXMKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgLy8gZm9yIHdvcmthcm91bmRzCi0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPGNzdGRsaWI+ICAgICAgLy8gc3RkOjpnZXRlbnYKLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgIC8vIHN0ZDo6c3RyZXJyb3IKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpnZXRlbnY7IHVzaW5nIDo6c3RyZXJyb3I7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgY3BwX21haW5fY2FsbGVyIHsKLSAgICBjcHBfbWFpbl9jYWxsZXIoIGludCAoKmNwcF9tYWluX2Z1bmMpKCBpbnQgYXJnYywgY2hhciogYXJndltdICksIGludCBhcmdjLCBjaGFyKiogYXJndiApIAotICAgIDogbV9jcHBfbWFpbl9mdW5jKCBjcHBfbWFpbl9mdW5jICkKLSAgICAsIG1fYXJnYyggYXJnYyApCi0gICAgLCBtX2FyZ3YoIGFyZ3YgKSB7fQotICAgIAotICAgIGludCBvcGVyYXRvcigpKCkgeyByZXR1cm4gKCptX2NwcF9tYWluX2Z1bmMpKCBtX2FyZ2MsIG1fYXJndiApOyB9Ci0gIAotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMgICAgCi0gICAgaW50ICgqbV9jcHBfbWFpbl9mdW5jKSggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOwotICAgIGludCAgICAgIG1fYXJnYzsKLSAgICBjaGFyKiogICBtX2FyZ3Y7Ci19OwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcHJnX2V4ZWNfbW9uaXRvcl9tYWluICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLWludCBORE5CT09TVF9URVNUX0RFQ0wKLXByZ19leGVjX21vbml0b3JfbWFpbiggaW50ICgqY3BwX21haW4pKCBpbnQgYXJnYywgY2hhciogYXJndltdICksIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIGludCByZXN1bHQgPSAwOwotCi0gICAgdHJ5IHsKLSAgICAgICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIHAoIHN0ZDo6Z2V0ZW52KCAiTkROQk9PU1RfVEVTVF9DQVRDSF9TWVNURU1fRVJST1JTIiApICk7Ci0gICAgICAgIDo6bmRuYm9vc3Q6OmV4ZWN1dGlvbl9tb25pdG9yIGV4X21vbjsKLQotICAgICAgICBleF9tb24ucF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlID0gcCAhPSAibm8iOwotICAgICAgICAKLSAgICAgICAgcmVzdWx0ID0gZXhfbW9uLmV4ZWN1dGUoIAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiggY3BwX21haW5fY2FsbGVyKCBjcHBfbWFpbiwgYXJnYywgYXJndiApICkgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCByZXN1bHQgPT0gMCApCi0gICAgICAgICAgICByZXN1bHQgPSA6Om5kbmJvb3N0OjpleGl0X3N1Y2Nlc3M7Ci0gICAgICAgIGVsc2UgaWYoIHJlc3VsdCAhPSA6Om5kbmJvb3N0OjpleGl0X3N1Y2Nlc3MgKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuKioqKiBlcnJvciByZXR1cm4gY29kZTogIiA8PCByZXN1bHQgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmVzdWx0ID0gOjpuZG5ib29zdDo6ZXhpdF9mYWlsdXJlOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKCA6Om5kbmJvb3N0OjpleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleGV4ICkgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuKioqKiBleGNlcHRpb24oIiA8PCBleGV4LmNvZGUoKSA8PCAiKTogIiA8PCBleGV4LndoYXQoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotICAgIGNhdGNoKCA6Om5kbmJvb3N0OjpzeXN0ZW1fZXJyb3IgY29uc3QmIGV4ICkgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuKioqKiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBleGVjdXRpb24gbW9uaXRvci4iCi0gICAgICAgICAgICAgICAgICA8PCAiXG4qKioqIGV4cHJlc3Npb24gYXQgZmF1bHQ6ICIgPDwgZXgucF9mYWlsZWRfZXhwIAotICAgICAgICAgICAgICAgICAgPDwgIlxuKioqKiBlcnJvcigiIDw8IGV4LnBfZXJybm8gPDwgIik6ICIgPDwgc3RkOjpzdHJlcnJvciggZXgucF9lcnJubyApIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmVzdWx0ID0gOjpuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICB9Ci0KLSAgICBpZiggcmVzdWx0ICE9IDo6bmRuYm9vc3Q6OmV4aXRfc3VjY2VzcyApIHsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICIqKioqKioqKiBlcnJvcnMgZGV0ZWN0ZWQ7IHNlZSBzdGFuZGFyZCBvdXRwdXQgZm9yIGRldGFpbHMgKioqKioqKioiIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vICBTb21lIHByZWZlciBhIGNvbmZpcm1pbmcgbWVzc2FnZSB3aGVuIGFsbCBpcyB3ZWxsLCB3aGlsZSBvdGhlcnMgZG9uJ3QKLSAgICAgICAgLy8gIGxpa2UgdGhlIGNsdXR0ZXIuICBVc2UgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYXZvaWQgY29tbWFuZAotICAgICAgICAvLyAgbGluZSBhcmd1bWVudCBtb2RpZmljYXRpb25zOyBmb3IgdXNlIGluIHByb2R1Y3Rpb24gcHJvZ3JhbXMKLSAgICAgICAgLy8gIHRoYXQncyBhIG5vLW5vIGluIHNvbWUgb3JnYW5pemF0aW9ucy4KLSAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgcCggc3RkOjpnZXRlbnYoICJORE5CT09TVF9QUkdfTU9OX0NPTkZJUk0iICkgKTsKLSAgICAgICAgaWYoIHAgIT0gIm5vIiApIHsgCi0gICAgICAgICAgICBzdGQ6OmNlcnIgPDwgc3RkOjpmbHVzaCA8PCAibm8gZXJyb3JzIGRldGVjdGVkIiA8PCBzdGQ6OmVuZGw7IAotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTk9fTUFJTikKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBtYWluIGZ1bmN0aW9uIGZvciB0ZXN0cyB1c2luZyBsaWIgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgY3BwX21haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsgIC8vIHByb3RvdHlwZSBmb3IgdXNlcidzIGNwcF9tYWluKCkKLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICByZXR1cm4gOjpuZG5ib29zdDo6cHJnX2V4ZWNfbW9uaXRvcl9tYWluKCAmY3BwX21haW4sIGFyZ2MsIGFyZ3YgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmIC8vICFORE5CT09TVF9URVNUX0RZTl9MSU5LICYmICFORE5CT09TVF9URVNUX05PX01BSU4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NQUF9NQUlOX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2RlYnVnLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2RlYnVnLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIzMzE0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9kZWJ1Zy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NzAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNi0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlYnVnIGludGVyZmFjZXMgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfREVCVUdfQVBJX0lQUF8xMTIwMDZHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUJVR19BUElfSVBQXzExMjAwNkdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnX2NvbmZpZy5ocHA+Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9uIFdpbmRvd3MKLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoVU5ERVJfQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpIC8vICoqKioqKiogV0lOMzIKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1dJTjMyX0JBU0VEX0RFQlVHCi0KLS8vIFNZU1RFTSBBUEkKLSMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSMgIGluY2x1ZGUgPHdpbnJlZy5oPgotIyAgaW5jbHVkZSA8Y3N0ZGlvPgotIyAgaW5jbHVkZSA8Y3N0cmluZz4KLQotIyAgaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi0jICAgIGluY2x1ZGUgPGNydGRiZy5oPgotIyAgZW5kaWYKLQotCi0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8MTMwMCkKLSMgICAgZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgotIyAgZW5kaWYKLQotIyAgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6Om1lbXNldDsgdXNpbmcgOjpzcHJpbnRmOyB9Ci0jICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKHVuaXgpIHx8IGRlZmluZWQoX191bml4KSAvLyAqKioqKioqKioqKioqKioqKioqKiogVU5JWAotCi0jICBkZWZpbmUgTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRwotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2FsZ29yaXRobS5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdHJpbmc+ICAvLyBzdGQ6Om1lbWNweQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+IC8vICEhID8/IGNzdGRhcmcKLQotLy8gU1lTVEVNIEFQSQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jICBpbmNsdWRlIDxzaWduYWwuaD4KLSMgIGluY2x1ZGUgPGZjbnRsLmg+Ci0KLSMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPgotIyAgaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSMgIGluY2x1ZGUgPHN5cy93YWl0Lmg+Ci0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyAgaW5jbHVkZSA8c3RkaW8uaD4KLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgotCi0jICBpZiBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX3N1bikKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfU1VOX0JBU0VEX0RFQlVHCi0KLSMgICAgaWZuZGVmIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9EQkdfTElTVCBkYng7Z2RiCi0jICAgIGVuZGlmCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ05MX0RCRyAgZGJ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0dVSV9EQkcgIGRieC1kZGQKLQotIyAgICBpbmNsdWRlIDxwcm9jZnMuaD4KLQotIyAgZWxpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fbGludXgpCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJTlVYX0JBU0VEX0RFQlVHCi0KLSMgICAgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotCi0jICAgIGlmbmRlZiBORE5CT09TVF9URVNUX1NUQVRfTElORV9NQVgKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9TVEFUX0xJTkVfTUFYIDUwMAotIyAgICBlbmRpZgotCi0jICAgIGlmbmRlZiBORE5CT09TVF9URVNUX0RCR19MSVNUCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QgZ2RiCi0jICAgIGVuZGlmCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ05MX0RCRyAgZ2RiCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0dVSV9EQkcgIGdkYi14dGVybQotCi0jICBlbmRpZgotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRlYnVnIHsKLQotdXNpbmcgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmc7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBkZWJ1Zzo6aW5mb190ICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqIFdJTjMyCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotZHluX3N5bWJvbCggVCYgcmVzLCBjaGFyIGNvbnN0KiBtb2R1bGVfbmFtZSwgY2hhciBjb25zdCogc3ltYm9sX25hbWUgKQotewotICAgIEhNT0RVTEUgbSA9IDo6R2V0TW9kdWxlSGFuZGxlQSggbW9kdWxlX25hbWUgKTsKLQotICAgIGlmKCAhbSApCi0gICAgICAgIG0gPSA6OkxvYWRMaWJyYXJ5QSggbW9kdWxlX25hbWUgKTsKLQotICAgIHJlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VD4oIDo6R2V0UHJvY0FkZHJlc3MoIG0sIHN5bWJvbF9uYW1lICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHN0cnVjdCBpbmZvX3QgewotICAgIHR5cGVkZWYgQk9PTCAoV0lOQVBJKiBJc0RlYnVnZ2VyUHJlc2VudFQpKCk7Ci0gICAgdHlwZWRlZiBMT05HIChXSU5BUEkqIFJlZ1F1ZXJ5VmFsdWVFeFQpKCBIS0VZLCBjaGFyIGNvbnN0KiAvKkxQVFNUUiovLCBMUERXT1JELCBMUERXT1JELCBMUEJZVEUsIExQRFdPUkQgKTsKLSAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSogUmVnT3BlbktleVQpKCBIS0VZLCBjaGFyIGNvbnN0KiAvKkxQQ1RTVFIqLywgUEhLRVkgKTsKLSAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSogUmVnQ2xvc2VLZXlUKSggSEtFWSApOwotCi0gICAgaW5mb190KCk7Ci0KLSAgICBJc0RlYnVnZ2VyUHJlc2VudFQgIG1faXNfZGVidWdnZXJfcHJlc2VudDsKLSAgICBSZWdPcGVuS2V5VCAgICAgICAgIG1fcmVnX29wZW5fa2V5OwotICAgIFJlZ1F1ZXJ5VmFsdWVFeFQgICAgbV9yZWdfcXVlcnlfdmFsdWU7Ci0gICAgUmVnQ2xvc2VLZXlUICAgICAgICBtX3JlZ19jbG9zZV9rZXk7Ci0KLX0gc19pbmZvOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmZvX3Q6OmluZm9fdCgpCi17Ci0gICAgZHluX3N5bWJvbCggbV9pc19kZWJ1Z2dlcl9wcmVzZW50LCAia2VybmVsMzIiLCAiSXNEZWJ1Z2dlclByZXNlbnQiICk7Ci0gICAgZHluX3N5bWJvbCggbV9yZWdfb3Blbl9rZXksICJhZHZhcGkzMiIsICJSZWdPcGVuS2V5QSIgKTsKLSAgICBkeW5fc3ltYm9sKCBtX3JlZ19xdWVyeV92YWx1ZSwgImFkdmFwaTMyIiwgIlJlZ1F1ZXJ5VmFsdWVFeEEiICk7Ci0gICAgZHluX3N5bWJvbCggbV9yZWdfY2xvc2Vfa2V5LCAiYWR2YXBpMzIiLCAiUmVnQ2xvc2VLZXkiICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIGZkX2hvbGRlciAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZmRfaG9sZGVyIHsKLSAgICBleHBsaWNpdCBmZF9ob2xkZXIoIGludCBmZCApIDogbV9mZCggZmQgKSB7fQotICAgIH5mZF9ob2xkZXIoKQotICAgIHsKLSAgICAgICAgaWYoIG1fZmQgIT0gLTEgKQotICAgICAgICAgICAgOjpjbG9zZSggbV9mZCApOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGludCgpIHsgcmV0dXJuIG1fZmQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgbV9mZDsKLX07Ci0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBwcm9jZXNzX2luZm8gICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgcHJvY2Vzc19pbmZvIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICBwcm9jZXNzX2luZm8oIGludCBwaWQgKTsKLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgaW50ICAgICAgICAgICAgIHBhcmVudF9waWQoKSBjb25zdCAgeyByZXR1cm4gbV9wYXJlbnRfcGlkOyB9Ci0gICAgY29uc3Rfc3RyaW5nICAgIGJpbmFyeV9uYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iaW5hcnlfbmFtZTsgfQotICAgIGNvbnN0X3N0cmluZyAgICBiaW5hcnlfcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmluYXJ5X3BhdGg7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgICAgICAgICAgICAgbV9wYXJlbnRfcGlkOwotICAgIGNvbnN0X3N0cmluZyAgICBtX2JpbmFyeV9uYW1lOwotICAgIGNvbnN0X3N0cmluZyAgICBtX2JpbmFyeV9wYXRoOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TVU5fQkFTRURfREVCVUcpCi0gICAgc3RydWN0IHBzaW5mbyAgIG1fcHNpOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSU5VWF9CQVNFRF9ERUJVRykKLSAgICBjaGFyICAgICAgICAgICAgbV9zdGF0X2xpbmVbTkROQk9PU1RfVEVTVF9TVEFUX0xJTkVfTUFYKzFdOwotI2VuZGlmCi0gICAgY2hhciAgICAgICAgICAgIG1fYmluYXJ5X3BhdGhfYnVmZls1MDArMV07IC8vICEhID8/Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcm9jZXNzX2luZm86OnByb2Nlc3NfaW5mbyggaW50IHBpZCApCi06IG1fcGFyZW50X3BpZCggMCApCi17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TVU5fQkFTRURfREVCVUcpCi0gICAgY2hhciBmbmFtZV9idWZmWzMwXTsKLQotICAgIDo6c25wcmludGYoIGZuYW1lX2J1ZmYsIHNpemVvZihmbmFtZV9idWZmKSwgIi9wcm9jLyVkL3BzaW5mbyIsIHBpZCApOwotCi0gICAgZmRfaG9sZGVyIHBzaW5mb19mZCggOjpvcGVuKCBmbmFtZV9idWZmLCBPX1JET05MWSApICk7Ci0KLSAgICBpZiggcHNpbmZvX2ZkID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIDo6cmVhZCggcHNpbmZvX2ZkLCAmbV9wc2ksIHNpemVvZihtX3BzaSkgKSA9PSAtMSApCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFyZW50X3BpZCA9IG1fcHNpLnByX3BwaWQ7Ci0KLSAgICBtX2JpbmFyeV9uYW1lLmFzc2lnbiggbV9wc2kucHJfZm5hbWUgKTsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KLSAgICAKLSAgICA6OnNucHJpbnRmKCBmbmFtZV9idWZmLCBzaXplb2YoZm5hbWVfYnVmZiksICIvcHJvYy8lZC9hcyIsIHBpZCApOwotCi0gICAgZmRfaG9sZGVyIGFzX2ZkKCA6Om9wZW4oIGZuYW1lX2J1ZmYsIE9fUkRPTkxZICkgKTsKLSAgICB1aW50cHRyX3QgICBiaW5hcnlfbmFtZV9wb3M7Ci0gIAotICAgIC8vICEhID8/IGNvdWxkIHdlIGF2b2lkIHJlYWRpbmcgd2hvbGUgbV9iaW5hcnlfcGF0aF9idWZmPwotICAgIGlmKCBhc19mZCA9PSAtMSB8fAotICAgICAgICA6OmxzZWVrKCBhc19mZCwgbV9wc2kucHJfYXJndiwgU0VFS19TRVQgKSA9PSAtMSB8fAotICAgICAgICA6OnJlYWQgKCBhc19mZCwgJmJpbmFyeV9uYW1lX3Bvcywgc2l6ZW9mKGJpbmFyeV9uYW1lX3BvcykgKSA9PSAtMSB8fAotICAgICAgICA6OmxzZWVrKCBhc19mZCwgYmluYXJ5X25hbWVfcG9zLCBTRUVLX1NFVCApID09IC0xIHx8Ci0gICAgICAgIDo6cmVhZCAoIGFzX2ZkLCBtX2JpbmFyeV9wYXRoX2J1ZmYsIHNpemVvZihtX2JpbmFyeV9wYXRoX2J1ZmYpICkgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIG1fYmluYXJ5X3BhdGguYXNzaWduKCBtX2JpbmFyeV9wYXRoX2J1ZmYgKTsKLSAgICAgICAgCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0xJTlVYX0JBU0VEX0RFQlVHKQotICAgIGNoYXIgZm5hbWVfYnVmZlszMF07Ci0KLSAgICA6OnNucHJpbnRmKCBmbmFtZV9idWZmLCBzaXplb2YoZm5hbWVfYnVmZiksICIvcHJvYy8lZC9zdGF0IiwgcGlkICk7Ci0KLSAgICBmZF9ob2xkZXIgcHNpbmZvX2ZkKCA6Om9wZW4oIGZuYW1lX2J1ZmYsIE9fUkRPTkxZICkgKTsKLQotICAgIGlmKCBwc2luZm9fZmQgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzc2l6ZV90IG51bV9yZWFkID0gOjpyZWFkKCBwc2luZm9fZmQsIG1fc3RhdF9saW5lLCBzaXplb2YobV9zdGF0X2xpbmUpLTEgKTsKLSAgICBpZiggbnVtX3JlYWQgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0YXRfbGluZVtudW1fcmVhZF0gPSAwOwotCi0gICAgY2hhciBjb25zdCogbmFtZV9iZWcgPSBtX3N0YXRfbGluZTsKLSAgICB3aGlsZSggKm5hbWVfYmVnICYmICpuYW1lX2JlZyAhPSAnKCcgKQotICAgICAgICArK25hbWVfYmVnOwotCi0gICAgY2hhciBjb25zdCogbmFtZV9lbmQgPSBuYW1lX2JlZysxOwotICAgIHdoaWxlKCAqbmFtZV9lbmQgJiYgKm5hbWVfZW5kICE9ICcpJyApCi0gICAgICAgICsrbmFtZV9lbmQ7Ci0KLSAgICBzdGQ6OnNzY2FuZiggbmFtZV9lbmQrMSwgIiUqcyVkIiwgJm1fcGFyZW50X3BpZCApOwotCi0gICAgbV9iaW5hcnlfbmFtZS5hc3NpZ24oIG5hbWVfYmVnKzEsIG5hbWVfZW5kICk7Ci0KLSAgICA6OnNucHJpbnRmKCBmbmFtZV9idWZmLCBzaXplb2YoZm5hbWVfYnVmZiksICIvcHJvYy8lZC9leGUiLCBwaWQgKTsKLSAgICBudW1fcmVhZCA9IDo6cmVhZGxpbmsoIGZuYW1lX2J1ZmYsIG1fYmluYXJ5X3BhdGhfYnVmZiwgc2l6ZW9mKG1fYmluYXJ5X3BhdGhfYnVmZiktMSApOwotCi0gICAgaWYoIG51bV9yZWFkID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9iaW5hcnlfcGF0aF9idWZmW251bV9yZWFkXSA9IDA7Ci0gICAgbV9iaW5hcnlfcGF0aC5hc3NpZ24oIG1fYmluYXJ5X3BhdGhfYnVmZiwgbnVtX3JlYWQgKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcHJlcGFyZV93aW5kb3dfdGl0bGUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0YXRpYyBjaGFyKgotcHJlcGFyZV93aW5kb3dfdGl0bGUoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgdHlwZWRlZiB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBzdHJfdDsKLQotICAgIHN0YXRpYyBjaGFyIHRpdGxlX3N0cls1MF07Ci0KLSAgICBzdHJfdCBwYXRoX3NlcCggIlxcLyIgKTsKLQotICAgIHN0cl90OjppdGVyYXRvciAgaXQgPSB1bml0X3Rlc3Q6OmZpbmRfbGFzdF9vZiggZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIGRzaS5iaW5hcnlfcGF0aC5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfc2VwLmJlZ2luKCksIHBhdGhfc2VwLmVuZCgpICk7Ci0KLSAgICBpZiggaXQgPT0gZHNpLmJpbmFyeV9wYXRoLmVuZCgpICkKLSAgICAgICAgaXQgPSBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKTsKLSAgICBlbHNlCi0gICAgICAgICsraXQ7Ci0KLSAgICA6OnNucHJpbnRmKCB0aXRsZV9zdHIsIHNpemVvZih0aXRsZV9zdHIpLCAiJSpzICVsZCIsIChpbnQpKGRzaS5iaW5hcnlfcGF0aC5lbmQoKS1pdCksIGl0LCBkc2kucGlkICk7Ci0KLSAgICByZXR1cm4gdGl0bGVfc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzYXZlX2V4ZWNscCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXR5cGVkZWYgdW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPGNoYXI+IG1idWZmZXI7Ci0KLWlubGluZSBjaGFyKgotY29weV9hcmcoIG1idWZmZXImIGRlc3QsIGNvbnN0X3N0cmluZyBhcmcgKQotewotICAgIGlmKCBkZXN0LnNpemUoKSA8IGFyZy5zaXplKCkrMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY2hhciogcmVzID0gZGVzdC5iZWdpbigpOwotCi0gICAgc3RkOjptZW1jcHkoIHJlcywgYXJnLmJlZ2luKCksIGFyZy5zaXplKCkrMSApOwotCi0gICAgZGVzdC50cmltX2xlZnQoIGFyZy5zaXplKCkrMSApOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotc2FmZV9leGVjbHAoIGNoYXIgY29uc3QqIGZpbGUsIC4uLiApCi17Ci0gICAgc3RhdGljIGNoYXIqIGFyZ3ZfYnVmZlsyMDBdOwotCi0gICAgdmFfbGlzdCAgICAgYXJnczsKLSAgICBjaGFyIGNvbnN0KiBhcmc7Ci0KLSAgICAvLyBmaXJzdCBjYWxjdWxhdGUgYWN0dWFsIG51bWJlciBvZiBhcmd1bWVudHMKLSAgICBpbnQgICAgICAgICBudW1fYXJncyA9IDI7IC8vIGZpbGUgbmFtZSBhbmQgMCBhdCBsZWFzdAotCi0gICAgdmFfc3RhcnQoIGFyZ3MsIGZpbGUgKTsKLSAgICB3aGlsZSggISEoYXJnID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApKSApCi0gICAgICAgIG51bV9hcmdzKys7Ci0gICAgdmFfZW5kKCBhcmdzICk7Ci0KLSAgICAvLyByZXNlcnZlIHNwYWNlIGZvciB0aGUgYXJndW1lbnQgcG9pbnRlcnMgYXJyYXkKLSAgICBjaGFyKiogICAgICBhcmd2X2l0ICA9IGFyZ3ZfYnVmZjsKLSAgICBtYnVmZmVyICAgICB3b3JrX2J1ZmYoIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFyZ3ZfYnVmZiksIHNpemVvZihhcmd2X2J1ZmYpICk7Ci0gICAgd29ya19idWZmLnRyaW1fbGVmdCggbnVtX2FyZ3MgKiBzaXplb2YoY2hhciopICk7Ci0KLSAgICAvLyBjb3B5IGFsbCB0aGUgYXJndW1lbnQgdmFsdWVzIGludG8gbG9jYWwgc3RvcmFnZQotICAgIGlmKCAhKCphcmd2X2l0KysgPSBjb3B5X2FyZyggd29ya19idWZmLCBmaWxlICkpICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJpbnRmKCAiISEgJXNcbiIsIGZpbGUgKTsKLQotICAgIHZhX3N0YXJ0KCBhcmdzLCBmaWxlICk7Ci0gICAgd2hpbGUoICEhKGFyZyA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKSkgKSB7Ci0gICAgICAgIHByaW50ZiggIiEhICVzXG4iLCBhcmcgKTsKLSAgICAgICAgaWYoICEoKmFyZ3ZfaXQrKyA9IGNvcHlfYXJnKCB3b3JrX2J1ZmYsIGFyZyApKSApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHZhX2VuZCggYXJncyApOwotCi0gICAgKmFyZ3ZfaXQgPSAwOwotCi0gICAgcmV0dXJuIDo6ZXhlY3ZwKCBmaWxlLCBhcmd2X2J1ZmYgKSAhPSAtMTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSwgY2hhciBjb25zdCogZW1hY3NfbmFtZSwgY2hhciBjb25zdCogZGJnX2NvbW1hbmQgKQotewotICAgIGNoYXIgY29uc3QqIHRpdGxlID0gcHJlcGFyZV93aW5kb3dfdGl0bGUoIGRzaSApOwotCi0gICAgaWYoICF0aXRsZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGRzaS5kaXNwbGF5LmlzX2VtcHR5KCkKLSAgICAgICAgPyBzYWZlX2V4ZWNscCggZW1hY3NfbmFtZSwgIi10aXRsZSIsIHRpdGxlLCAiLS1ldmFsIiwgZGJnX2NvbW1hbmQsIDAgKQotICAgICAgICA6IHNhZmVfZXhlY2xwKCBlbWFjc19uYW1lLCAiLXRpdGxlIiwgdGl0bGUsICItZGlzcGxheSIsIGRzaS5kaXNwbGF5LmJlZ2luKCksICItLWV2YWwiLCBkYmdfY29tbWFuZCwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGdkYiBzdGFydGVycyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0YXRpYyBjaGFyIGNvbnN0KgotcHJlcGFyZV9nZGJfY21uZF9maWxlKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIC8vIHByZXBhcmUgcGlkIHZhbHVlCi0gICAgY2hhciBwaWRfYnVmZlsxNl07Ci0gICAgOjpzbnByaW50ZiggcGlkX2J1ZmYsIHNpemVvZihwaWRfYnVmZiksICIlbGQiLCBkc2kucGlkICk7Ci0gICAgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgcGlkX3N0ciggcGlkX2J1ZmYgKTsKLQotICAgIHN0YXRpYyBjaGFyIGNtZF9maWxlX25hbWVbXSA9ICIvdG1wL2J0bF9nZGJfY21kX1hYWFhYWCI7IC8vICEhID8/Ci0KLSAgICAvLyBwcmVwYXJlIGNvbW1hbmRzCi0gICAgZmRfaG9sZGVyIGNtZF9mZCggOjpta3N0ZW1wKCBjbWRfZmlsZV9uYW1lICkgKTsKLQotICAgIGlmKCBjbWRfZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gMDsKLQotI2RlZmluZSBXUklURV9TVFIoIHN0ciApICBpZiggOjp3cml0ZSggY21kX2ZkLCBzdHIuYmVnaW4oKSwgc3RyLnNpemUoKSApID09IC0xICkgcmV0dXJuIDA7Ci0jZGVmaW5lIFdSSVRFX0NTVFIoIHN0ciApIGlmKCA6OndyaXRlKCBjbWRfZmQsIHN0ciwgc2l6ZW9mKCBzdHIgKS0xICkgPT0gLTEgKSByZXR1cm4gMDsKLQotICAgIFdSSVRFX0NTVFIoICJmaWxlICIgKTsKLSAgICBXUklURV9TVFIoIGRzaS5iaW5hcnlfcGF0aCApOwotICAgIFdSSVRFX0NTVFIoICJcbmF0dGFjaCAiICk7Ci0gICAgV1JJVEVfU1RSKCBwaWRfc3RyICk7Ci0gICAgV1JJVEVfQ1NUUiggIlxuc2hlbGwgdW5saW5rICIgKTsKLSAgICBXUklURV9TVFIoIGRzaS5pbml0X2RvbmVfbG9jayApOwotICAgIFdSSVRFX0NTVFIoICJcbmNvbnQiICk7Ci0gICAgaWYoIGRzaS5icmVha19vcl9jb250aW51ZSApCi0gICAgICAgIFdSSVRFX0NTVFIoICJcbnVwIDQiICk7Ci0gICAgICAgICAgICAKLSAgICBXUklURV9DU1RSKCAiXG5lY2hvIFxcbiIgKTsgLy8gISEgPz8KLSAgICBXUklURV9DU1RSKCAiXG5saXN0IC0iICk7Ci0gICAgV1JJVEVfQ1NUUiggIlxubGlzdCIgKTsKLSAgICBXUklURV9DU1RSKCAiXG5zaGVsbCB1bmxpbmsgIiApOwotICAgIFdSSVRFX0NTVFIoIGNtZF9maWxlX25hbWUgKTsKLQotICAgIHJldHVybiBjbWRfZmlsZV9uYW1lOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZ2RiX2luX2NvbnNvbGUoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBjb25zdCogY21uZF9maWxlX25hbWUgPSBwcmVwYXJlX2dkYl9jbW5kX2ZpbGUoIGRzaSApOwotCi0gICAgaWYoICFjbW5kX2ZpbGVfbmFtZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNhZmVfZXhlY2xwKCAiZ2RiIiwgIi1xIiwgIi14IiwgY21uZF9maWxlX25hbWUsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2dkYl9pbl94dGVybSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiB0aXRsZSAgICAgICAgICAgPSBwcmVwYXJlX3dpbmRvd190aXRsZSggZHNpICk7Ci0gICAgY2hhciBjb25zdCogY21uZF9maWxlX25hbWUgID0gcHJlcGFyZV9nZGJfY21uZF9maWxlKCBkc2kgKTsKLQotICAgIGlmKCAhdGl0bGUgfHwgIWNtbmRfZmlsZV9uYW1lICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2FmZV9leGVjbHAoICJ4dGVybSIsICItVCIsIHRpdGxlLCAiLWRpc3BsYXkiLCBkc2kuZGlzcGxheS5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAiLWJnIiwgImJsYWNrIiwgIi1mZyIsICJ3aGl0ZSIsICItZ2VvbWV0cnkiLCAiODh4MzArMTArMTAiLCAiLWZuIiwgIjl4MTUiLCAiLWUiLAotICAgICAgICAgICAgICAgICAiZ2RiIiwgIi1xIiwgIi14IiwgY21uZF9maWxlX25hbWUsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2dkYl9pbl9lbWFjcyggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiBjbW5kX2ZpbGVfbmFtZSAgPSBwcmVwYXJlX2dkYl9jbW5kX2ZpbGUoIGRzaSApOwotICAgIGlmKCAhY21uZF9maWxlX25hbWUgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjaGFyIGRiZ19jbWRfYnVmZls1MDBdOyAvLyAhISA/PwotICAgIDo6c25wcmludGYoIGRiZ19jbWRfYnVmZiwgc2l6ZW9mKGRiZ19jbWRfYnVmZiksICIocHJvZ24gKGdkYiBcImdkYiAtcSAteCAlc1wiKSkiLCBjbW5kX2ZpbGVfbmFtZSApOwotCi0gICAgc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MoIGRzaSwgImVtYWNzIiwgZGJnX2NtZF9idWZmICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9nZGJfaW5feGVtYWNzKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiApCi17Ci0gICAgLy8gISEgPz8KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBkYnggc3RhcnRlcnMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGF0aWMgY2hhciBjb25zdCoKLXByZXBhcmVfZGJ4X2NtZF9saW5lKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2ksIGJvb2wgbGlzdF9zb3VyY2UgPSB0cnVlICkKLXsKLSAgICBzdGF0aWMgY2hhciBjbWRfbGluZV9idWZmWzUwMF07IC8vICEhID8/Ci0KLSAgICA6OnNucHJpbnRmKCBjbWRfbGluZV9idWZmLCBzaXplb2YoY21kX2xpbmVfYnVmZiksICJ1bmxpbmsgJXM7Y29udDslcyVzIiwgCi0gICAgICAgICAgICAgICAgICAgZHNpLmluaXRfZG9uZV9sb2NrLmJlZ2luKCksIAotICAgICAgICAgICAgICAgICAgIGRzaS5icmVha19vcl9jb250aW51ZSA/ICJ1cCAyOyI6ICIiLCAKLSAgICAgICAgICAgICAgICAgICBsaXN0X3NvdXJjZSA/ICJlY2hvIFwiIFwiO2xpc3QgLXczOyIgOiAiIiApOwotCi0gICAgcmV0dXJuIGNtZF9saW5lX2J1ZmY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5fY29uc29sZSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIHBpZF9idWZmWzE2XTsKLSAgICA6OnNucHJpbnRmKCBwaWRfYnVmZiwgc2l6ZW9mKHBpZF9idWZmKSwgIiVsZCIsIGRzaS5waWQgKTsKLQotICAgIHNhZmVfZXhlY2xwKCAiZGJ4IiwgIi1xIiwgIi1jIiwgcHJlcGFyZV9kYnhfY21kX2xpbmUoIGRzaSApLCBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKSwgcGlkX2J1ZmYsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RieF9pbl94dGVybSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiB0aXRsZSA9IHByZXBhcmVfd2luZG93X3RpdGxlKCBkc2kgKTsKLSAgICBpZiggIXRpdGxlICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2hhciBwaWRfYnVmZlsxNl07IC8vICEhID8/Ci0gICAgOjpzbnByaW50ZiggcGlkX2J1ZmYsIHNpemVvZihwaWRfYnVmZiksICIlbGQiLCBkc2kucGlkICk7Ci0gICAgCi0gICAgc2FmZV9leGVjbHAoICJ4dGVybSIsICItVCIsIHRpdGxlLCAiLWRpc3BsYXkiLCBkc2kuZGlzcGxheS5iZWdpbigpLCAKLSAgICAgICAgICAgICAgICAgICAgIi1iZyIsICJibGFjayIsICItZmciLCAid2hpdGUiLCAiLWdlb21ldHJ5IiwgIjg4eDMwKzEwKzEwIiwgIi1mbiIsICI5eDE1IiwgIi1lIiwKLSAgICAgICAgICAgICAgICAgImRieCIsICItcSIsICItYyIsIHByZXBhcmVfZGJ4X2NtZF9saW5lKCBkc2kgKSwgZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIHBpZF9idWZmLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5fZW1hY3MoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIC8qZHNpKi8gKQotewotLy8gICAgY2hhciBkYmdfY21kX2J1ZmZbNTAwXTsgLy8gISEgPz8KLS8vCi0vLyAgICA6OnNucHJpbnRmKCBkYmdfY21kX2J1ZmYsIHNpemVvZihkYmdfY21kX2J1ZmYpLCAiKHByb2duIChkYnggXCJkYnggLXEgLWMgY29udCAlcyAlbGRcIikpIiwgZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIGRzaS5waWQgKTsKLQotLy8gICAgc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MoIGRzaSwgImVtYWNzIiwgZGJnX2NtZF9idWZmICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5feGVtYWNzKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiApCi17Ci0gICAgLy8gISEgPz8KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RieF9pbl9kZGQoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBjb25zdCogdGl0bGUgPSBwcmVwYXJlX3dpbmRvd190aXRsZSggZHNpICk7Ci0gICAgaWYoICF0aXRsZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGNoYXIgcGlkX2J1ZmZbMTZdOyAvLyAhISA/PwotICAgIDo6c25wcmludGYoIHBpZF9idWZmLCBzaXplb2YocGlkX2J1ZmYpLCAiJWxkIiwgZHNpLnBpZCApOwotICAgIAotICAgIHNhZmVfZXhlY2xwKCAiZGRkIiwgIi1kaXNwbGF5IiwgZHNpLmRpc3BsYXkuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgIi0tZGJ4IiwgIi1xIiwgIi1jIiwgcHJlcGFyZV9kYnhfY21kX2xpbmUoIGRzaSwgZmFsc2UgKSwgZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIHBpZF9idWZmLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBkZWJ1Zzo6aW5mb190ICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RhdGljIHN0cnVjdCBpbmZvX3QgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgaW5mb190KCk7Ci0KLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PHN0ZDo6c3RyaW5nPiAgcF9kYmc7Ci0gICAgCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsZGJnX3N0YXJ0ZXI+ICAgICAgICAgICBtX2RiZ19zdGFydGVyX3JlZzsKLX0gc19pbmZvOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmZvX3Q6OmluZm9fdCgpCi17Ci0gICAgcF9kYmcudmFsdWUgPSA6OmdldGVudiggIkRJU1BMQVkiICkKLSAgICAgICAgPyBzdGQ6OnN0cmluZyggTkROQk9PU1RfU1RSSU5HSVpFKCBORE5CT09TVF9URVNUX0dVSV9EQkcgKSApCi0gICAgICAgIDogc3RkOjpzdHJpbmcoIE5ETkJPT1NUX1NUUklOR0laRSggTkROQk9PU1RfVEVTVF9DTkxfREJHICkgKTsKLSAgICAgICAgCi0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImdkYiIpXSAgICAgICAgICAgPSAmc3RhcnRfZ2RiX2luX2NvbnNvbGU7Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImdkYi1lbWFjcyIpXSAgICAgPSAmc3RhcnRfZ2RiX2luX2VtYWNzOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJnZGIteHRlcm0iKV0gICAgID0gJnN0YXJ0X2dkYl9pbl94dGVybTsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZ2RiLXhlbWFjcyIpXSAgICA9ICZzdGFydF9nZGJfaW5feGVtYWNzOwotCi0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImRieCIpXSAgICAgICAgICAgPSAmc3RhcnRfZGJ4X2luX2NvbnNvbGU7Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImRieC1lbWFjcyIpXSAgICAgPSAmc3RhcnRfZGJ4X2luX2VtYWNzOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJkYngteHRlcm0iKV0gICAgID0gJnN0YXJ0X2RieF9pbl94dGVybTsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZGJ4LXhlbWFjcyIpXSAgICA9ICZzdGFydF9kYnhfaW5feGVtYWNzOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJkYngtZGRkIildICAgICAgID0gJnN0YXJ0X2RieF9pbl9kZGQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZgotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogIGNoZWNrIGlmIHByb2dyYW0gaXMgcnVubmluZyB1bmRlciBkZWJ1Z2dlciAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWJvb2wKLXVuZGVyX2RlYnVnZ2VyKCkKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1dJTjMyX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqKiBXSU4zMgotCi0gICAgcmV0dXJuICEhc19pbmZvLm1faXNfZGVidWdnZXJfcHJlc2VudCAmJiBzX2luZm8ubV9pc19kZWJ1Z2dlcl9wcmVzZW50KCk7Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiBVTklYCi0KLSAgICAvLyAhISA/PyBjb3VsZC9zaG91bGQgd2UgY2FjaGUgdGhlIHJlc3VsdCBzb21laG93PwotICAgIGNvbnN0X3N0cmluZyAgICBkYmdfbGlzdCA9IE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBORE5CT09TVF9URVNUX0RCR19MSVNUICk7Ci0KLSAgICBwaWRfdCBwaWQgPSA6OmdldHBpZCgpOwotCi0gICAgd2hpbGUoIHBpZCAhPSAwICkgewotICAgICAgICBwcm9jZXNzX2luZm8gcGkoIHBpZCApOwotCi0gICAgICAgIC8vICEhID8/IHNob3VsZCB3ZSB1c2UgdG9rZW5pemVyIGhlcmUgaW5zdGVhZD8KLSAgICAgICAgaWYoIGRiZ19saXN0LmZpbmQoIHBpLmJpbmFyeV9uYW1lKCkgKSAhPSBjb25zdF9zdHJpbmc6Om5wb3MgKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcGlkID0gKHBpLnBhcmVudF9waWQoKSA9PSBwaWQgPyAwIDogcGkucGFyZW50X3BpZCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci0KLSNlbHNlIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBkZWZhdWx0Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci0KLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgY2F1c2UgcHJvZ3JhbSB0byBicmVhayBleGVjdXRpb24gICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBpbiBkZWJ1Z2dlciBhdCBjYWxsIHBvaW50ICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1kZWJ1Z2dlcl9icmVhaygpCi17Ci0gICAgLy8gISEgPz8gYXV0by1zdGFydCBkZWJ1Z2dlcj8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqIFdJTjMyCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDEzMDApICAgICAgICAgICAgICAgICAgICAgICB8fCAgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID49IDMpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAgIHx8ICBcCi0gICAgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgIGRlZmluZSBORE5CT09TVF9ERUJVR19CUkVBSyAgICBfX2RlYnVnYnJlYWsKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0RFQlVHX0JSRUFLICAgIERlYnVnQnJlYWsKLSNlbmRpZgotCi0jaWZuZGVmIF9fTUlOR1czMl9fCi0gICAgaWYoICF1bmRlcl9kZWJ1Z2dlcigpICkgewotICAgICAgICBfX3RyeSB7Ci0gICAgICAgICAgICBfX3RyeSB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVCVUdfQlJFQUsoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF9fZXhjZXB0KCBVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoR2V0RXhjZXB0aW9uSW5mb3JtYXRpb24oKSkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFVzZXIgb3B0ZWQgdG8gaWdub3JlIHRoZSBicmVha3BvaW50Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIF9fZXhjZXB0IChFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBnb3QgaGVyZSwgdGhlIHVzZXIgaGFzIHB1c2hlZCBEZWJ1Zy4gRGVidWdnZXIgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBvdXIgcHJvY2VzcyBhbmQgd2UKLSAgICAgICAgICAgIC8vIGNvbnRpbnVlIHRvIGxldCB0aGUgYW5vdGhlciBORE5CT09TVF9ERUJVR19CUkVBSyB0byBiZSBjYWxsZWQuCi0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX0RFQlVHX0JSRUFLKCk7Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiBVTklYCi0KLSAgICA6OmtpbGwoIDo6Z2V0cGlkKCksIFNJR1RSQVAgKTsKLQotI2Vsc2UgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGRlZmF1bHQKLQotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIGNvbnNvbGUgZGVidWdnZXIgc2V0dXAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKioqIFVOSVgKLQotc3RkOjpzdHJpbmcKLXNldF9kZWJ1Z2dlciggdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgZGJnX2lkLCBkYmdfc3RhcnRlciBzICkKLXsKLSAgICBzdGQ6OnN0cmluZyBvbGQgPSBzX2luZm8ucF9kYmc7Ci0KLSAgICBhc3NpZ25fb3AoIHNfaW5mby5wX2RiZy52YWx1ZSwgZGJnX2lkLCAwICk7Ci0KLSAgICBpZiggISFzICkKLSAgICAgICAgc19pbmZvLm1fZGJnX3N0YXJ0ZXJfcmVnW3NfaW5mby5wX2RiZ10gPSBzOwotCi0gICAgcmV0dXJuIG9sZDsKLX0KLQotI2Vsc2UgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGRlZmF1bHQKLQotc3RkOjpzdHJpbmcKLXNldF9kZWJ1Z2dlciggdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcsIGRiZ19zdGFydGVyICkKLXsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLX0KLQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBhdHRhY2ggZGVidWdnZXIgdG8gdGhlIGN1cnJlbnQgcHJvY2VzcyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotYm9vbAotYXR0YWNoX2RlYnVnZ2VyKCBib29sIGJyZWFrX29yX2NvbnRpbnVlICkKLXsKLSAgICBpZiggdW5kZXJfZGVidWdnZXIoKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqIFdJTjMyCi0KLSAgICBjb25zdCBpbnQgTUFYX0NNRF9MSU5FID0gMjAwOwotCi0gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0gICAgLy8gRGVidWdnZXIgInJlYWR5IiBldmVudAotCi0gICAgU0VDVVJJVFlfQVRUUklCVVRFUyBhdHRyOwotICAgIGF0dHIubkxlbmd0aCAgICAgICAgICAgICAgICA9IHNpemVvZihhdHRyKTsKLSAgICBhdHRyLmxwU2VjdXJpdHlEZXNjcmlwdG9yICAgPSBOVUxMOwotICAgIGF0dHIuYkluaGVyaXRIYW5kbGUgICAgICAgICA9IHRydWU7Ci0KLSAgICAvLyBtYW51YWwgcmVzZXR0YWJsZSwgaW5pdGlhbGx5IG5vbiBzaWduYWxlZCwgdW5uYW1lZCBldmVudCwKLSAgICAvLyB0aGF0IHdpbGwgc2lnbmFsIG1lIHRoYXQgZGVidWdnZXIgaW5pdGlhbGl6YXRpb24gaXMgZG9uZQotICAgIEhBTkRMRSBkYmdfaW5pdF9kb25lX2V2ID0gOjpDcmVhdGVFdmVudCgKLSAgICAgICAgJmF0dHIsICAgICAgICAgIC8vIHBvaW50ZXIgdG8gc2VjdXJpdHkgYXR0cmlidXRlcwotICAgICAgICB0cnVlLCAgICAgICAgICAgLy8gZmxhZyBmb3IgbWFudWFsLXJlc2V0IGV2ZW50Ci0gICAgICAgIGZhbHNlLCAgICAgICAgICAvLyBmbGFnIGZvciBpbml0aWFsIHN0YXRlCi0gICAgICAgIE5VTEwgICAgICAgICAgICAvLyBwb2ludGVyIHRvIGV2ZW50LW9iamVjdCBuYW1lCi0gICAgKTsKLQotICAgIGlmKCAhZGJnX2luaXRfZG9uZV9ldiApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotICAgIC8vIERlYnVnZ2VyIGNvbW1hbmQgbGluZSBmb3JtYXQKLQotICAgIEhLRVkgcmVnX2tleTsKLQotICAgIGlmKCAhc19pbmZvLm1fcmVnX29wZW5fa2V5IHx8ICgqc19pbmZvLm1fcmVnX29wZW5fa2V5KSgKLSAgICAgICAgICAgIEhLRVlfTE9DQUxfTUFDSElORSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBvZiBvcGVuIGtleQotICAgICAgICAgICAgIlNvZnR3YXJlXFxNaWNyb3NvZnRcXFdpbmRvd3MgTlRcXEN1cnJlbnRWZXJzaW9uXFxBZURlYnVnIiwgLy8gbmFtZSBvZiBzdWJrZXkgdG8gb3BlbgotICAgICAgICAgICAgJnJlZ19rZXkgKSAhPSBFUlJPUl9TVUNDRVNTICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcyBvZiBoYW5kbGUgb2Ygb3BlbiBrZXkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY2hhciAgZm9ybWF0W01BWF9DTURfTElORV07Ci0gICAgRFdPUkQgZm9ybWF0X3NpemUgPSBNQVhfQ01EX0xJTkU7Ci0gICAgRFdPUkQgdHlwZSA9IFJFR19TWjsKLQotICAgIGlmKCAhc19pbmZvLm1fcmVnX3F1ZXJ5X3ZhbHVlIHx8ICgqc19pbmZvLm1fcmVnX3F1ZXJ5X3ZhbHVlKSgKLSAgICAgICAgICAgIHJlZ19rZXksICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBvZiBvcGVuIGtleQotICAgICAgICAgICAgIkRlYnVnZ2VyIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSBvZiBzdWJrZXkgdG8gcXVlcnkKLSAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2VydmVkCi0gICAgICAgICAgICAmdHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSB0eXBlCi0gICAgICAgICAgICAoTFBCWVRFKWZvcm1hdCwgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgZm9yIHJldHVybmVkIHN0cmluZwotICAgICAgICAgICAgJmZvcm1hdF9zaXplICkgIT0gRVJST1JfU1VDQ0VTUyApICAgLy8gaW46IGJ1ZmZlciBzaXplOyBvdXQ6IGFjdHVhbCBzaXplIG9mIHJldHVybmVkIHN0cmluZwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiggIXNfaW5mby5tX3JlZ19jbG9zZV9rZXkgfHwgKCpzX2luZm8ubV9yZWdfY2xvc2Vfa2V5KSggcmVnX2tleSApICE9IEVSUk9SX1NVQ0NFU1MgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLSAgICAvLyBEZWJ1Z2dlciBjb21tYW5kIGxpbmUKLQotICAgIGNoYXIgY21kX2xpbmVbTUFYX0NNRF9MSU5FXTsKLSAgICBzdGQ6OnNwcmludGYoIGNtZF9saW5lLCBmb3JtYXQsIDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpLCBkYmdfaW5pdF9kb25lX2V2ICk7Ci0KLSAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLSAgICAvLyBEZWJ1Z2dlciB3aW5kb3cgcGFyYW1ldGVycwotCi0gICAgU1RBUlRVUElORk9BICAgIHN0YXJ0dXBfaW5mbzsKLSAgICBzdGQ6Om1lbXNldCggJnN0YXJ0dXBfaW5mbywgMCwgc2l6ZW9mKHN0YXJ0dXBfaW5mbykgKTsKLQotICAgIHN0YXJ0dXBfaW5mby5jYiAgICAgICAgICAgICA9IHNpemVvZihzdGFydHVwX2luZm8pOwotICAgIHN0YXJ0dXBfaW5mby5kd0ZsYWdzICAgICAgICA9IFNUQVJURl9VU0VTSE9XV0lORE9XOwotICAgIHN0YXJ0dXBfaW5mby53U2hvd1dpbmRvdyAgICA9IFNXX1NIT1dOT1JNQUw7Ci0KLSAgICAvLyBkZWJ1Z2dlciBwcm9jZXNzIHNfaW5mbwotICAgIFBST0NFU1NfSU5GT1JNQVRJT04gZGVidWdnZXJfaW5mbzsKLQotICAgIGJvb2wgY3JlYXRlZCA9ICEhOjpDcmVhdGVQcm9jZXNzQSgKLSAgICAgICAgTlVMTCwgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gbmFtZSBvZiBleGVjdXRhYmxlIG1vZHVsZTsgTlVMTCAtIHVzZSB0aGUgb25lIGluIGNvbW1hbmQgbGluZQotICAgICAgICBjbWRfbGluZSwgICAgICAgLy8gcG9pbnRlciB0byBjb21tYW5kIGxpbmUgc3RyaW5nCi0gICAgICAgIE5VTEwsICAgICAgICAgICAvLyBwb2ludGVyIHRvIHByb2Nlc3Mgc2VjdXJpdHkgYXR0cmlidXRlczsgTlVMTCAtIGRlYnVnZ2VyJ3MgaGFuZGxlIGNhbid0IGJlIGluaGVyaXRlZAotICAgICAgICBOVUxMLCAgICAgICAgICAgLy8gcG9pbnRlciB0byB0aHJlYWQgc2VjdXJpdHkgYXR0cmlidXRlczsgTlVMTCAtIGRlYnVnZ2VyJ3MgaGFuZGxlIGNhbid0IGJlIGluaGVyaXRlZAotICAgICAgICB0cnVlLCAgICAgICAgICAgLy8gZGVidWdnZXIgaW5oZXJpdCBvcGVuZWQgaGFuZGxlcwotICAgICAgICAwLCAgICAgICAgICAgICAgLy8gcHJpb3JpdHkgZmxhZ3M7IDAgLSBub3JtYWwgcHJpb3JpdHkKLSAgICAgICAgTlVMTCwgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gbmV3IGVudmlyb25tZW50IGJsb2NrOyBOVUxMIC0gdXNlIHRoaXMgcHJvY2VzcyBlbnZpcm9ubWVudAotICAgICAgICBOVUxMLCAgICAgICAgICAgLy8gcG9pbnRlciB0byBjdXJyZW50IGRpcmVjdG9yeSBuYW1lOyBOVUxMIC0gdXNlIHRoaXMgcHJvY2VzcyBjb3JyZWN0IGRpcmVjdG9yeQotICAgICAgICAmc3RhcnR1cF9pbmZvLCAgLy8gcG9pbnRlciB0byBTVEFSVFVQSU5GTyB0aGF0IHNwZWNpZmllcyBtYWluIHdpbmRvdyBhcHBlYXJhbmNlCi0gICAgICAgICZkZWJ1Z2dlcl9pbmZvICAvLyBwb2ludGVyIHRvIFBST0NFU1NfSU5GT1JNQVRJT04gdGhhdCB3aWxsIGNvbnRhaW4gdGhlIG5ldyBwcm9jZXNzIGlkZW50aWZpY2F0aW9uCi0gICAgKTsKLQotICAgIGlmKCBjcmVhdGVkICkKLSAgICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KCBkYmdfaW5pdF9kb25lX2V2LCBJTkZJTklURSApOwotCi0gICAgOjpDbG9zZUhhbmRsZSggZGJnX2luaXRfZG9uZV9ldiApOwotCi0gICAgaWYoICFjcmVhdGVkICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYoIGJyZWFrX29yX2NvbnRpbnVlICkKLSAgICAgICAgZGVidWdnZXJfYnJlYWsoKTsKLQotICAgIHJldHVybiB0cnVlOwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1VOSVhfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKiogVU5JWAotCi0gICAgY2hhciBpbml0X2RvbmVfbG9ja19mbltdID0gIi90bXAvYnRsX2RiZ19pbml0X2RvbmVfWFhYWFhYIjsKLSAgICBmZF9ob2xkZXIgaW5pdF9kb25lX2xvY2tfZmQoIDo6bWtzdGVtcCggaW5pdF9kb25lX2xvY2tfZm4gKSApOwotCi0gICAgaWYoIGluaXRfZG9uZV9sb2NrX2ZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKLQotICAgIGlmKCBjaGlsZF9waWQgPT0gLTEgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiggY2hpbGRfcGlkICE9IDAgKSB7IC8vIHBhcmVudCBwcm9jZXNzIC0gaGVyZSB3ZSB3aWxsIHN0YXJ0IHRoZSBkZWJ1Z2dlcgotICAgICAgICBkYmdfc3RhcnR1cF9pbmZvIGRzaTsKLSAgICAKLSAgICAgICAgcHJvY2Vzc19pbmZvIHBpKCBjaGlsZF9waWQgKTsKLSAgICAgICAgaWYoIHBpLmJpbmFyeV9wYXRoKCkuaXNfZW1wdHkoKSApCi0gICAgICAgICAgICA6OmV4aXQoIC0xICk7Ci0KLSAgICAgICAgZHNpLnBpZCAgICAgICAgICAgICAgICAgPSBjaGlsZF9waWQ7Ci0gICAgICAgIGRzaS5icmVha19vcl9jb250aW51ZSAgID0gYnJlYWtfb3JfY29udGludWU7Ci0gICAgICAgIGRzaS5iaW5hcnlfcGF0aCAgICAgICAgID0gcGkuYmluYXJ5X3BhdGgoKTsKLSAgICAgICAgZHNpLmRpc3BsYXkgICAgICAgICAgICAgPSA6OmdldGVudiggIkRJU1BMQVkiICk7Ci0gICAgICAgIGRzaS5pbml0X2RvbmVfbG9jayAgICAgID0gaW5pdF9kb25lX2xvY2tfZm47Ci0gICAgICAgIAotICAgICAgICBkYmdfc3RhcnRlciBzdGFydGVyID0gc19pbmZvLm1fZGJnX3N0YXJ0ZXJfcmVnW3NfaW5mby5wX2RiZ107Ci0gICAgICAgIGlmKCAhIXN0YXJ0ZXIgKQotICAgICAgICAgICAgc3RhcnRlciggZHNpICk7Ci0KLSAgICAgICAgOjpwZXJyb3IoICJCb29zdC5UZXN0IGV4ZWN1dGlvbiBtb25pdG9yIGZhaWxlZCB0byBzdGFydCBhIGRlYnVnZ2VyOiIgKTsKLQotICAgICAgICA6OmV4aXQoIC0xICk7Ci0gICAgfQotCi0gICAgLy8gY2hpbGQgcHJvY2VzcyAtIGhlcmUgd2Ugd2lsbCBjb250aW51ZSBvdXIgdGVzdCBtb2R1bGUgZXhlY3V0aW9uIDsgLy8gISEgPz8gc2hvdWxkIGl0IGJlIHZpY2UgdmVyc2EKLQotICAgIHdoaWxlKCA6OmFjY2VzcyggaW5pdF9kb25lX2xvY2tfZm4sIEZfT0sgKSA9PSAwICkgewotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0byA9IHsgMCwgMTAwIH07Ci0KLSAgICAgICAgOjpzZWxlY3QoIDAsIDAsIDAsIDAsICZ0byApOwotICAgIH0KLQotLy8gICAgY2hhciBkdW1teTsKLS8vICAgIHdoaWxlKCA6OnJlYWQoIGluaXRfZG9uZV9sb2NrX2ZkLCAmZHVtbXksIHNpemVvZihjaGFyKSApID09IDAgKTsKLQotICAgIGlmKCBicmVha19vcl9jb250aW51ZSApCi0gICAgICAgIGRlYnVnZ2VyX2JyZWFrKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLQotI2Vsc2UgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGRlZmF1bHQKLQotICAgIHJldHVybiBmYWxzZTsKLQotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgIHN3aXRjaCBvbi9vZmYgZGV0ZWN0IG1lbW9yeSBsZWFrcyBmZWF0dXJlICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotZGV0ZWN0X21lbW9yeV9sZWFrcyggYm9vbCBvbl9vZmYgKQotewotICAgIHVuaXRfdGVzdDo6dXRfZGV0YWlsOjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoIG9uX29mZiApOwotCi0jaWZkZWYgTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi0gICAgaW50IGZsYWdzID0gX0NydFNldERiZ0ZsYWcoIF9DUlREQkdfUkVQT1JUX0ZMQUcgKTsKLQotICAgIGlmKCAhb25fb2ZmICkKLSAgICAgICAgZmxhZ3MgJj0gfl9DUlREQkdfTEVBS19DSEVDS19ERjsKLSAgICBlbHNlICB7Ci0gICAgICAgIGZsYWdzIHw9IF9DUlREQkdfTEVBS19DSEVDS19ERjsKLSAgICAgICAgX0NydFNldFJlcG9ydE1vZGUoX0NSVF9XQVJOLCBfQ1JUREJHX01PREVfRklMRSk7Ci0gICAgICAgIF9DcnRTZXRSZXBvcnRGaWxlKF9DUlRfV0FSTiwgX0NSVERCR19GSUxFX1NURE9VVCk7Ci0gICAgfQotCi0gICAgX0NydFNldERiZ0ZsYWcgKCBmbGFncyApOwotI2VuZGlmIC8vIE5ETkJPT1NUX01TX0NSVF9CQVNFRF9ERUJVRwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBjYXVzZSBwcm9ncmFtIHRvIGJyZWFrIGV4ZWN1dGlvbiBpbiAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICBkZWJ1Z2dlciBhdCBzcGVjaWZpYyBhbGxvY2F0aW9uIHBvaW50ICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1icmVha19tZW1vcnlfYWxsb2MoIGxvbmcgbWVtX2FsbG9jX29yZGVyX251bSApCi17Ci0gICAgdW5pdF90ZXN0Ojp1dF9kZXRhaWw6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyggbWVtX2FsbG9jX29yZGVyX251bSApOwotCi0jaWZkZWYgTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi0gICAgX0NydFNldEJyZWFrQWxsb2MoIG1lbV9hbGxvY19vcmRlcl9udW0gKTsKLSNlbmRpZiAvLyBORE5CT09TVF9NU19DUlRfQkFTRURfREVCVUcKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGVidWcKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0RFQlVHX0FQSV9JUFBfMTEyMDA2R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4Y2VwdGlvbl9zYWZldHkuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhjZXB0aW9uX3NhZmV0eS5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMzYzODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhjZXB0aW9uX3NhZmV0eS5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEZhY2lsaXRpZXMgdG8gcGVyZm9ybSBleGNlcHRpb24gc2FmZXR5IHRlc3RzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0VYRUNVVElPTl9TQUZFVFlfSVBQXzExMjAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0VYRUNVVElPTl9TQUZFVFlfSVBQXzExMjAwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotI2lmIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9JTlRFUkFDVElPTl9URVNUSU5HCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPGlvbWFuaXA+Ci0jaW5jbHVkZSA8Y2N0eXBlPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q7Ci0gCi1uYW1lc3BhY2UgaXRlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWVudW0gZXhlY19wYXRoX3BvaW50X3R5cGUgeyBFUFBfU0NPUEUsIEVQUF9FWENFUFQsIEVQUF9ERUNJU0lPTiwgRVBQX0FMTE9DIH07Ci0KLXN0cnVjdCBleGVjdXRpb25fcGF0aF9wb2ludCB7Ci0gICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQoIGV4ZWNfcGF0aF9wb2ludF90eXBlIHQsIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSApCi0gICAgOiBtX3R5cGUoIHQgKQotICAgICwgbV9maWxlX25hbWUoIGZpbGUgKQotICAgICwgbV9saW5lX251bSggbGluZV9udW0gKQotICAgIHt9Ci0KLSAgICBleGVjX3BhdGhfcG9pbnRfdHlwZSAgICBtX3R5cGU7Ci0gICAgY29uc3Rfc3RyaW5nICAgICAgICAgICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgIG1fbGluZV9udW07Ci0KLSAgICAvLyBFeGVjdXRpb24gcGF0aCBwb2ludCBzcGVjaWZpYwotICAgIHN0cnVjdCBkZWNpc2lvbl9kYXRhIHsKLSAgICAgICAgYm9vbCAgICAgICAgICAgIHZhbHVlOwotICAgICAgICB1bnNpZ25lZCAgICAgICAgZm9yY2VkX2V4Y2VwdGlvbl9wb2ludDsKLSAgICB9OwotICAgIHN0cnVjdCBzY29wZV9kYXRhIHsKLSAgICAgICAgdW5zaWduZWQgICAgICAgIHNpemU7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICBuYW1lOwotICAgIH07Ci0gICAgc3RydWN0IGV4Y2VwdF9kYXRhIHsKLSAgICAgICAgY2hhciBjb25zdCogICAgIGRlc2NyaXB0aW9uOwotICAgIH07Ci0gICAgc3RydWN0IGFsbG9jX2RhdGEgewotICAgICAgICB2b2lkKiAgICAgICAgICAgcHRyOwotICAgICAgICBzdGQ6OnNpemVfdCAgICAgc2l6ZTsKLSAgICB9OwotCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgZGVjaXNpb25fZGF0YSAgICBtX2RlY2lzaW9uOwotICAgICAgICBzdHJ1Y3Qgc2NvcGVfZGF0YSAgICAgICBtX3Njb3BlOwotICAgICAgICBzdHJ1Y3QgZXhjZXB0X2RhdGEgICAgICBtX2V4Y2VwdDsKLSAgICAgICAgc3RydWN0IGFsbG9jX2RhdGEgICAgICAgbV9hbGxvYzsKLSAgICB9OwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICBleGNlcHRpb24gc2FmZXR5IHRlc3QgaW1wbGVtZW50YXRpb24gICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXIgOiBpdGVzdDo6bWFuYWdlciwgdGVzdF9vYnNlcnZlciB7Ci0gICAgLy8gaGVscGVycyB0eXBlcwotICAgIHN0cnVjdCB1bmlxdWVfZXhjZXB0aW9uIHt9OwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgICAgIGV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyKCBjb25zdF9zdHJpbmcgdGVzdF9uYW1lICk7Ci0gICAgfmV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyKCk7Ci0KLSAgICAvLyBjaGVjayBsYXN0IHJ1biBhbmQgcHJlcGFyZSBmb3IgbmV4dAotICAgIGJvb2wgICAgICAgICAgICAgICAgbmV4dF9leGVjdXRpb25fcGF0aCgpOwotCi0gICAgLy8gbWVtb3J5IHRyYWNraW5nCi0KLSAgICAvLyBtYW5hZ2VyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZXhjZXB0aW9uX3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBkZXNjcmlwdGlvbiApOwotICAgIHZpcnR1YWwgYm9vbCAgICAgICAgZGVjaXNpb25fcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSApOwotICAgIHZpcnR1YWwgdW5zaWduZWQgICAgZW50ZXJfc2NvcGUoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxlYXZlX3Njb3BlKCB1bnNpZ25lZCBlbnRlcl9zY29wZV9wb2ludCApOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgYWxsb2NhdGVkKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIHZvaWQqIHAsIHN0ZDo6c2l6ZV90IHMgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGZyZWVkKCB2b2lkKiBwICk7Ci0KLSAgICAvLyB0ZXN0IG9ic2VydmVyIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKTsKLSAgICB2aXJ0dWFsIGludCAgICAgICAgIHByaW9yaXR5KCkgeyByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KSgpOyB9IC8vIHdlIHdhbnQgdGhpcyBvYnNlcnZlciB0byBydW4gdGhlIGxhc3QKLQotcHJpdmF0ZToKLSAgICB2b2lkICAgICAgICAgICAgICAgIGZhaWx1cmVfcG9pbnQoKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHJlcG9ydF9lcnJvcigpOwotCi0gICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxleGVjdXRpb25fcGF0aF9wb2ludD4gICBleGVjX3BhdGg7Ci0gICAgdHlwZWRlZiBzdGQ6Om1hcDx2b2lkKix1bnNpZ25lZD4gICAgICAgICAgICByZWdpc3RyeTsKLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGJvb2wgICAgICAgIG1faW50ZXJuYWxfYWN0aXZpdHk7Ci0gICAgCi0gICAgdW5zaWduZWQgICAgbV9leGNlcHRpb25fcG9pbnRfY291bnRlcjsKLSAgICB1bnNpZ25lZCAgICBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQ7Ci0KLSAgICB1bnNpZ25lZCAgICBtX2V4ZWNfcGF0aF9wb2ludDsKLSAgICBleGVjX3BhdGggICBtX2V4ZWN1dGlvbl9wYXRoOwotCi0gICAgdW5zaWduZWQgICAgbV9leGVjX3BhdGhfY291bnRlcjsKLSAgICB1bnNpZ25lZCAgICBtX2JyZWFrX2V4ZWNfcGF0aDsKLSAgICAKLSAgICBib29sICAgICAgICBtX2ludmFpcmFudF9mYWlsZWQ7Ci0gICAgcmVnaXN0cnkgICAgbV9tZW1vcnlfaW5fdXNlOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGFjdGl2aXR5X2d1YXJkIHsKLSAgICBib29sJiBtX3Y7Ci0KLSAgICBhY3Rpdml0eV9ndWFyZCggYm9vbCYgdiApIDogbV92KCB2ICkgICAgeyBtX3YgPSB0cnVlOyB9Ci0gICAgfmFjdGl2aXR5X2d1YXJkKCkgICAgICAgICAgICAgICAgICAgICAgIHsgbV92ID0gZmFsc2U7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpleGNlcHRpb25fc2FmZXR5X3Rlc3RlciggY29uc3Rfc3RyaW5nIHRlc3RfbmFtZSApCi06IG1faW50ZXJuYWxfYWN0aXZpdHkoIHRydWUgKQotLCBtX2V4Y2VwdGlvbl9wb2ludF9jb3VudGVyKCAwICkKLSwgbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50KCAxICkKLSwgbV9leGVjX3BhdGhfcG9pbnQoIDAgKQotLCBtX2V4ZWNfcGF0aF9jb3VudGVyKCAxICkKLSwgbV9icmVha19leGVjX3BhdGgoIHN0YXRpY19jYXN0PHVuc2lnbmVkPigtMSkgKQotLCBtX2ludmFpcmFudF9mYWlsZWQoIGZhbHNlICkKLXsKLSAgICBmcmFtZXdvcms6OnJlZ2lzdGVyX29ic2VydmVyKCAqdGhpcyApOwotCi0gICAgaWYoICFydW50aW1lX2NvbmZpZzo6YnJlYWtfZXhlY19wYXRoKCkuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHVuaXRfdGVzdDsKLSAgICAgICAgCi0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIHJ1bnRpbWVfY29uZmlnOjpicmVha19leGVjX3BhdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcm9wcGVkX2RlbGltZXRlcnMgPSAiOiIsa2VwdF9kZWxpbWV0ZXJzID0gIiAiKSApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIHRlc3RfdG9fYnJlYWsgPSAqdGl0OwotICAgICAgICAKLSAgICAgICAgaWYoIHRlc3RfdG9fYnJlYWsgPT0gdGVzdF9uYW1lICkgewotICAgICAgICAgICAgKyt0aXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fYnJlYWtfZXhlY19wYXRoID0gbGV4aWNhbF9jYXN0PHVuc2lnbmVkPiggKnRpdCApOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIG1faW50ZXJuYWxfYWN0aXZpdHkgPSBmYWxzZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6On5leGNlcHRpb25fc2FmZXR5X3Rlc3RlcigpCi17Ci0gICAgbV9pbnRlcm5hbF9hY3Rpdml0eSA9IHRydWU7Ci0gICAgCi0gICAgZnJhbWV3b3JrOjpkZXJlZ2lzdGVyX29ic2VydmVyKCAqdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6bmV4dF9leGVjdXRpb25fcGF0aCgpCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIC8vIGNoZWNrIG1lbW9yeSB1c2FnZQotICAgIGlmKCBtX2V4ZWN1dGlvbl9wYXRoLnNpemUoKSA+IDAgKSB7Ci0gICAgICAgIGJvb2wgZXJyb3JzX2RldGVjdGVkID0gbV9pbnZhaXJhbnRfZmFpbGVkIHx8IChtX21lbW9yeV9pbl91c2Uuc2l6ZSgpICE9IDApOwotICAgICAgICBmcmFtZXdvcms6OmFzc2VydGlvbl9yZXN1bHQoICFlcnJvcnNfZGV0ZWN0ZWQgKTsKLQotICAgICAgICBpZiggZXJyb3JzX2RldGVjdGVkICkKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvcigpOwotCi0gICAgICAgIG1fbWVtb3J5X2luX3VzZS5jbGVhcigpOwotICAgIH0KLQotICAgIG1fZXhlY19wYXRoX3BvaW50ICAgICAgICAgICA9IDA7Ci0gICAgbV9leGNlcHRpb25fcG9pbnRfY291bnRlciAgID0gMDsKLSAgICBtX2ludmFpcmFudF9mYWlsZWQgICAgICAgICAgPSBmYWxzZTsKLSAgICArK21fZXhlY19wYXRoX2NvdW50ZXI7Ci0KLSAgICB3aGlsZSggbV9leGVjdXRpb25fcGF0aC5zaXplKCkgPiAwICkgewotICAgICAgICBzd2l0Y2goIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fdHlwZSApIHsKLSAgICAgICAgY2FzZSBFUFBfU0NPUEU6Ci0gICAgICAgIGNhc2UgRVBQX0FMTE9DOgotICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wb3BfYmFjaygpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFUFBfREVDSVNJT046Ci0gICAgICAgICAgICBpZiggIW1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZGVjaXNpb24udmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wb3BfYmFjaygpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLnZhbHVlID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQgPSBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLmZvcmNlZF9leGNlcHRpb25fcG9pbnQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBjYXNlIEVQUF9FWENFUFQ6Ci0gICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICArK21fZm9yY2VkX2V4Y2VwdGlvbl9wb2ludDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVG90YWwgdGVzdGVkICIgPDwgLS1tX2V4ZWNfcGF0aF9jb3VudGVyIDw8ICIgZXhlY3V0aW9uIHBhdGgiICk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpleGNlcHRpb25fcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIGRlc2NyaXB0aW9uICkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgaWYoICsrbV9leGNlcHRpb25fcG9pbnRfY291bnRlciA9PSBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQgKSB7Ci0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucHVzaF9iYWNrKAotICAgICAgICAgICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQoIEVQUF9FWENFUFQsIGZpbGUsIGxpbmVfbnVtICkgKTsKLQotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2V4Y2VwdC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmJlZ2luKCk7Ci0KLSAgICAgICAgKyttX2V4ZWNfcGF0aF9wb2ludDsKLQotICAgICAgICBmYWlsdXJlX3BvaW50KCk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZGVjaXNpb25fcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSApCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIGlmKCBtX2V4ZWNfcGF0aF9wb2ludCA8IG1fZXhlY3V0aW9uX3BhdGguc2l6ZSgpICkgewotICAgICAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fdHlwZSA9PSBFUFBfREVDSVNJT04gJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2ZpbGVfbmFtZSA9PSBmaWxlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9saW5lX251bSA9PSBsaW5lX251bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdW5kZXIgdGVzdCBleGliaXQgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IiICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnB1c2hfYmFjaygKLSAgICAgICAgICAgIGV4ZWN1dGlvbl9wYXRoX3BvaW50KCBFUFBfREVDSVNJT04sIGZpbGUsIGxpbmVfbnVtICkgKTsKLQotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLnZhbHVlID0gdHJ1ZTsKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9kZWNpc2lvbi5mb3JjZWRfZXhjZXB0aW9uX3BvaW50ID0gbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50OwotICAgIH0KLQotICAgIHJldHVybiBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50KytdLm1fZGVjaXNpb24udmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuc2lnbmVkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZW50ZXJfc2NvcGUoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKQotewotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICBpZiggbV9leGVjX3BhdGhfcG9pbnQgPCBtX2V4ZWN1dGlvbl9wYXRoLnNpemUoKSApIHsKLSAgICAgICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX3R5cGUgPT0gRVBQX1NDT1BFICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9maWxlX25hbWUgPT0gZmlsZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fbGluZV9udW0gPT0gbGluZV9udW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHVuZGVyIHRlc3QgZXhpYml0IG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW9yIiApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wdXNoX2JhY2soCi0gICAgICAgICAgICBleGVjdXRpb25fcGF0aF9wb2ludCggRVBQX1NDT1BFLCBmaWxlLCBsaW5lX251bSApICk7Ci0gICAgfQotCi0gICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9zY29wZS5zaXplID0gMDsKLSAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX3Njb3BlLm5hbWUgPSBzY29wZV9uYW1lLmJlZ2luKCk7Ci0KLSAgICByZXR1cm4gbV9leGVjX3BhdGhfcG9pbnQrKzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmxlYXZlX3Njb3BlKCB1bnNpZ25lZCBlbnRlcl9zY29wZV9wb2ludCApCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggbV9leGVjdXRpb25fcGF0aFtlbnRlcl9zY29wZV9wb2ludF0ubV90eXBlID09IEVQUF9TQ09QRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB1bmRlciB0ZXN0IGV4aWJpdCBub24tZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciIgKTsKLQotICAgIG1fZXhlY3V0aW9uX3BhdGhbZW50ZXJfc2NvcGVfcG9pbnRdLm1fc2NvcGUuc2l6ZSA9IG1fZXhlY19wYXRoX3BvaW50IC0gZW50ZXJfc2NvcGVfcG9pbnQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjphbGxvY2F0ZWQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgdm9pZCogcCwgc3RkOjpzaXplX3QgcyApCi17Ci0gICAgaWYoIG1faW50ZXJuYWxfYWN0aXZpdHkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgaWYoIG1fZXhlY19wYXRoX3BvaW50IDwgbV9leGVjdXRpb25fcGF0aC5zaXplKCkgKQotICAgICAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fdHlwZSA9PSBFUFBfQUxMT0MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHVuZGVyIHRlc3QgZXhpYml0IG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW9yIiApOwotICAgIGVsc2UKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wdXNoX2JhY2soCi0gICAgICAgICAgICBleGVjdXRpb25fcGF0aF9wb2ludCggRVBQX0FMTE9DLCBmaWxlLCBsaW5lX251bSApICk7Ci0KLSAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2FsbG9jLnB0ciAgPSBwOwotICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fYWxsb2Muc2l6ZSA9IHM7Ci0KLSAgICBtX21lbW9yeV9pbl91c2UuaW5zZXJ0KCBzdGQ6Om1ha2VfcGFpciggcCwgbV9leGVjX3BhdGhfcG9pbnQrKyApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpmcmVlZCggdm9pZCogcCApCi17Ci0gICAgaWYoIG1faW50ZXJuYWxfYWN0aXZpdHkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgcmVnaXN0cnk6Oml0ZXJhdG9yIGl0ID0gbV9tZW1vcnlfaW5fdXNlLmZpbmQoIHAgKTsKLSAgICBpZiggaXQgIT0gbV9tZW1vcnlfaW5fdXNlLmVuZCgpICkgewotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoW2l0LT5zZWNvbmRdLm1fYWxsb2MucHRyID0gMDsKLSAgICAgICAgbV9tZW1vcnlfaW5fdXNlLmVyYXNlKCBpdCApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICkKLXsKLSAgICBpZiggIW1faW50ZXJuYWxfYWN0aXZpdHkgJiYgIXBhc3NlZCApIHsKLSAgICAgICAgbV9pbnZhaXJhbnRfZmFpbGVkID0gdHJ1ZTsKLQotICAgICAgICBmYWlsdXJlX3BvaW50KCk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZmFpbHVyZV9wb2ludCgpCi17Ci0gICAgaWYoIG1fZXhlY19wYXRoX2NvdW50ZXIgPT0gbV9icmVha19leGVjX3BhdGggKQotICAgICAgICBkZWJ1Zzo6ZGVidWdnZXJfYnJlYWsoKTsKLSAgICAKLSAgICB0aHJvdyB1bmlxdWVfZXhjZXB0aW9uKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1uYW1lc3BhY2UgewotCi1pbmxpbmUgdm9pZAotZm9ybWF0X2xvY2F0aW9uKCB3cmFwX3N0cmluZ3N0cmVhbSYgZm9ybWF0dGVyLCBleGVjdXRpb25fcGF0aF9wb2ludCBjb25zdCYgLypwKi8sIHVuc2lnbmVkIGluZGVudCApCi17Ci0gICAgaWYoIGluZGVudCApCi0gICAgICAgIGZvcm1hdHRlciA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXR3KCBpbmRlbnQgKSA8PCAiIjsKLQotLy8gISEgPz8gb3B0aW9uYWwgICBpZiggcC5tX2ZpbGVfbmFtZSApCi0vLyAgICAgICAgZm9ybWF0dGVyIDw8IHAubV9maWxlX25hbWUgPDwgJygnIDw8IHAubV9saW5lX251bSA8PCAiKTogIjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRXhlY1BhdGhJdD4KLWlubGluZSB2b2lkCi1mb3JtYXRfZXhlY3V0aW9uX3BhdGgoIHdyYXBfc3RyaW5nc3RyZWFtJiBmb3JtYXR0ZXIsIEV4ZWNQYXRoSXQgaXQsIEV4ZWNQYXRoSXQgZW5kLCB1bnNpZ25lZCBpbmRlbnQgPSAwICkKLXsKLSAgICB3aGlsZSggaXQgIT0gZW5kICkgewotICAgICAgICBzd2l0Y2goIGl0LT5tX3R5cGUgKSB7Ci0gICAgICAgIGNhc2UgRVBQX1NDT1BFOgotICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIj4gXCIiIDw8IGl0LT5tX3Njb3BlLm5hbWUgPDwgIlwiXG4iOwotICAgICAgICAgICAgZm9ybWF0X2V4ZWN1dGlvbl9wYXRoKCBmb3JtYXR0ZXIsIGl0KzEsIGl0ICsgaXQtPm1fc2NvcGUuc2l6ZSwgaW5kZW50ICsgMiApOwotICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIjwgXCIiIDw8IGl0LT5tX3Njb3BlLm5hbWUgPDwgIlwiXG4iOwotICAgICAgICAgICAgaXQgKz0gaXQtPm1fc2NvcGUuc2l6ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRVBQX0RFQ0lTSU9OOgotICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIkRlY2lzaW9uIG1hZGUgYXMgIiA8PCBzdGQ6OmJvb2xhbHBoYSA8PCBpdC0+bV9kZWNpc2lvbi52YWx1ZSA8PCAnXG4nOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRVBQX0VYQ0VQVDoKLSAgICAgICAgICAgIGZvcm1hdF9sb2NhdGlvbiggZm9ybWF0dGVyLCAqaXQsIGluZGVudCApOwotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICJGb3JjZWQgZmFpbHVyZSI7Ci0gICAgICAgICAgICBpZiggaXQtPm1fZXhjZXB0LmRlc2NyaXB0aW9uICkKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIjogIiA8PCBpdC0+bV9leGNlcHQuZGVzY3JpcHRpb247Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIlxuIjsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEVQUF9BTExPQzoKLSAgICAgICAgICAgIGlmKCBpdC0+bV9hbGxvYy5wdHIgKSB7Ci0gICAgICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICJBbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIDB4IiA8PCBzdGQ6OnVwcGVyY2FzZSA8PCBpdC0+bV9hbGxvYy5wdHIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICIgPDwgaXQtPm1fYWxsb2Muc2l6ZSA8PCAiIGJ5dGVzIGxvbmc6IDwiOwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaTsKLSAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgc3RkOjptaW48c3RkOjpzaXplX3Q+KCBpdC0+bV9hbGxvYy5zaXplLCA4ICk7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGl0LT5tX2FsbG9jLnB0cilbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmKCAoc3RkOjppc3ByaW50KSggYyApICkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCBjOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgJy4nOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiPiAiOwotCi0gICAgICAgICAgICAgICAgZm9yKCBpID0gMDsgaSA8IHN0ZDo6bWluPHN0ZDo6c2l6ZV90PiggaXQtPm1fYWxsb2Muc2l6ZSwgOCApOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaXQtPm1fYWxsb2MucHRyKVtpXTsKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlIDw8IGMgPDwgJyAnOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiXG4iOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6cmVwb3J0X2Vycm9yKCkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2xpbmVfbnVtICkKLSAgICAgICAgICAgICAgICAgIDw8IGxvZ19hbGxfZXJyb3JzOwotCi0gICAgd3JhcF9zdHJpbmdzdHJlYW0gZm9ybWF0dGVyOwotCi0gICAgaWYoIG1faW52YWlyYW50X2ZhaWxlZCApCi0gICAgICAgIGZvcm1hdHRlciA8PCAiRmFpbGVkIGludmFyaWFudCI7Ci0KLSAgICBpZiggbV9tZW1vcnlfaW5fdXNlLnNpemUoKSAhPSAwICkgewotICAgICAgICBpZiggbV9pbnZhaXJhbnRfZmFpbGVkICkKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiIGFuZCAiOwotCi0gICAgICAgIGZvcm1hdHRlciA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1fbWVtb3J5X2luX3VzZS5zaXplKCkpIDw8ICIgbWVtb3J5IGxlYWsiOwotICAgICAgICBpZiggbV9tZW1vcnlfaW5fdXNlLnNpemUoKSA+IDEgKQotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICdzJzsKLSAgICB9Ci0gICAgZm9ybWF0dGVyIDw8ICIgZGV0ZWN0ZWQgaW4gdGhlIGV4ZWN1dGlvbiBwYXRoICIgPDwgbV9leGVjX3BhdGhfY291bnRlciA8PCAiOlxuIjsKLQotICAgIGZvcm1hdF9leGVjdXRpb25fcGF0aCggZm9ybWF0dGVyLCBtX2V4ZWN1dGlvbl9wYXRoLmJlZ2luKCksIG1fZXhlY3V0aW9uX3BhdGguZW5kKCkgKTsKLQotICAgIHVuaXRfdGVzdF9sb2cgPDwgY29uc3Rfc3RyaW5nKCBmb3JtYXR0ZXIuc3RyKCkgKSA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBleGNlcHRpb24gc2FmZXR5IHRlc3QgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0RFQ0wKLWV4Y2VwdGlvbl9zYWZldHkoIGNhbGxiYWNrMDw+IGNvbnN0JiBGLCBjb25zdF9zdHJpbmcgdGVzdF9uYW1lICkKLXsKLSAgICBleGNlcHRpb25fc2FmZXR5X3Rlc3RlciBlc3QoIHRlc3RfbmFtZSApOwotCi0gICAgZG8gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgRigpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCBleGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6dW5pcXVlX2V4Y2VwdGlvbiBjb25zdCYgKSB7fQotCi0gICAgfSB3aGlsZSggZXN0Lm5leHRfZXhlY3V0aW9uX3BhdGgoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19ICAvLyBuYW1lc3BhY2UgaXRlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBub24tYW5jaWVudCBjb21waWxlcgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fU0FGRVRZX0lQUF8xMTIwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE1OTkzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzY3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIGFuZCBVbGxyaWNoIEtvZXRoZSAxOTk1LTIwMDEuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogcHJvdmlkZXMgZXhlY3V0aW9uIG1vbml0b3IgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBzdXBwb3J0ZWQKLS8vICBjb25maWd1cmF0aW9ucywgaW5jbHVkaW5nIE1pY3Jvc29mdCBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbiBiYXNlZCwgdW5peCBzaWduYWxzCi0vLyAgYmFzZWQgYW5kIHNwZWNpYWwgd29ya2Fyb3VuZHMgZm9yIGJvcmxhbmQKLS8vCi0vLyAgTm90ZSB0aGF0IHdoZW4gdGVzdGluZyByZXF1aXJlbWVudHMgb3IgdXNlciB3aXNoZXMgcHJlY2x1ZGUgdXNlIG9mIHRoaXMKLS8vICBmaWxlIGFzIGEgc2VwYXJhdGUgY29tcGlsYXRpb24gdW5pdCwgaXQgbWF5IGJlIGluY2x1ZGVkIGFzIGEgaGVhZGVyIGZpbGUuCi0vLwotLy8gIEhlYWRlciBkZXBlbmRlbmNpZXMgYXJlIGRlbGliZXJhdGVseSByZXN0cmljdGVkIHRvIHJlZHVjZSBjb3VwbGluZyB0byBvdGhlcgotLy8gIGJvb3N0IGxpYnJhcmllcy4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX01PTklUT1JfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0VYRUNVVElPTl9NT05JVE9SX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+ICAgIC8vIGZvciBleGl0IGNvZGVzCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgIC8vIGZvciB3b3JrYXJvdW5kcwotI2luY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9nZXRfZXJyb3JfaW5mby5ocHA+IC8vIGZvciBnZXRfZXJyb3JfaW5mbwotI2luY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9jdXJyZW50X2V4Y2VwdGlvbl9jYXN0LmhwcD4gLy8gZm9yIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3QKLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgICAgICAgICAgIC8vIGZvciBzdGQ6OnN0cmluZwotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYWRfYWxsb2MKLSNpbmNsdWRlIDx0eXBlaW5mbz4gICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFkX2Nhc3QsIHN0ZDo6YmFkX3R5cGVpZAotI2luY2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAvLyBmb3Igc3RkOjpleGNlcHRpb24sIHN0ZDo6YmFkX2V4Y2VwdGlvbgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4gICAgICAgICAgICAvLyBmb3Igc3RkIGV4Y2VwdGlvbiBoaWVyYXJjaHkKLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZm9yIEMgc3RyaW5nIEFQSQotI2luY2x1ZGUgPGNhc3NlcnQ+ICAgICAgICAgICAgICAvLyBmb3IgYXNzZXJ0Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgIC8vIGZvciBOVUxMCi0jaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGZvciB2c25wcmludGYKLSNpbmNsdWRlIDxjc3RkYXJnPiAgICAgICAgICAgICAgLy8gZm9yIHZhcmFyZ3MKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpzdHJlcnJvcjsgdXNpbmcgOjpzdHJsZW47IHVzaW5nIDo6c3RybmNhdDsgfQotI2VuZGlmCi0KLS8vIHRvIHVzZSB2c25wcmludGYKLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBkZWZpbmVkKF9fU3VuT1MpCi0jICBpbmNsdWRlIDxzdGRpby5oPgotIyAgaW5jbHVkZSA8c3RkYXJnLmg+Ci11c2luZyBzdGQ6OnZhX2xpc3Q7Ci0jZW5kaWYKLQotLy8gdG8gdXNlIHZzbnByaW50ZiAKLSNpZiBkZWZpbmVkKF9fUU5YTlRPX18pIAotIyAgaW5jbHVkZSA8c3RkaW8uaD4gCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKSAmJiAgICAgICAgICAgICAgICAgIFwKLSAgICAoIWRlZmluZWQoX19DT01PX18pICYmICFkZWZpbmVkKF9fTVdFUktTX18pICYmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBcCi0gICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPj0gMHgzMDAwKSkKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1NFSF9CQVNFRF9TSUdOQUxfSEFORExJTkcKLQotIyAgaW5jbHVkZSA8d2luZG93cy5oPgotCi0jICBpZiBkZWZpbmVkKF9fTVdFUktTX18pIHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChVTkRFUl9DRSkpCi0jICAgIGluY2x1ZGUgPGVoLmg+Ci0jICBlbmRpZgotCi0jICBpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgX19CT1JMQU5EQ19fID49IDB4NTYwIHx8IGRlZmluZWQoX19NV0VSS1NfXykKLSMgICAgaW5jbHVkZSA8c3RkaW50Lmg+Ci0jICBlbmRpZgotCi0jICBpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgX19CT1JMQU5EQ19fIDwgMHg1NjAKLSAgICB0eXBlZGVmIHVuc2lnbmVkIHVpbnRwdHJfdDsKLSMgIGVuZGlmCi0KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX01TQ19WRVIsICA8IDEzMDAgKSB8fCBkZWZpbmVkKFVOREVSX0NFKQotdHlwZWRlZiB2b2lkKiB1aW50cHRyX3Q7Ci0jICBlbmRpZgotCi0vLyBmb3IgdGhlIEZQIGNvbnRyb2wgcm91dGluZXMKLSNpbmNsdWRlIDxmbG9hdC5oPgotCi0jaWZuZGVmIEVNX0lOVkFMSUQKLSNkZWZpbmUgRU1fSU5WQUxJRCBfRU1fSU5WQUxJRAotI2VuZGlmCi0KLSNpZm5kZWYgRU1fREVOT1JNQUwKLSNkZWZpbmUgRU1fREVOT1JNQUwgX0VNX0RFTk9STUFMCi0jZW5kaWYKLQotI2lmbmRlZiBFTV9aRVJPRElWSURFCi0jZGVmaW5lIEVNX1pFUk9ESVZJREUgX0VNX1pFUk9ESVZJREUKLSNlbmRpZgotCi0jaWZuZGVmIEVNX09WRVJGTE9XCi0jZGVmaW5lIEVNX09WRVJGTE9XIF9FTV9PVkVSRkxPVwotI2VuZGlmCi0KLSNpZm5kZWYgRU1fVU5ERVJGTE9XCi0jZGVmaW5lIEVNX1VOREVSRkxPVyBfRU1fVU5ERVJGTE9XCi0jZW5kaWYKLQotI2lmbmRlZiBNQ1dfRU0KLSNkZWZpbmUgTUNXX0VNIF9NQ1dfRU0KLSNlbmRpZgotCi0jICBpZiAhZGVmaW5lZChOREVCVUcpICYmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKFVOREVSX0NFKQotIyAgICBpbmNsdWRlIDxjcnRkYmcuaD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0hPT0tfVFlQRSAgICBfQ1JUX1JFUE9SVF9IT09LCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9BU1NFUlQgICAgICAgX0NSVF9BU1NFUlQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0VSUk9SICAgICAgICBfQ1JUX0VSUk9SCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9TRVRfSE9PSyhIKSAgX0NydFNldFJlcG9ydEhvb2soSCkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0hPT0tfVFlQRSAgICB2b2lkKgotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfQVNTRVJUICAgICAgIDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0VSUk9SICAgICAgICAxCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9TRVRfSE9PSyhIKSAgKHZvaWQqKShIKQotIyAgZW5kaWYKLQotIyAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX01TQ19WRVIsICA+PSAxNDAwICkgfHwgZGVmaW5lZChVTkRFUl9DRSkKLQotdHlwZWRlZiB2b2lkKiBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcjsKLQotaW5saW5lIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyCi1fc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIGFyZyApCi17Ci0gICAgcmV0dXJuIGFyZzsKLX0KLQotIyAgZW5kaWYKLQotIyAgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA1NjQpKSB8fCBkZWZpbmVkKFVOREVSX0NFKQotCi1uYW1lc3BhY2UgeyB2b2lkIF9zZXRfc2VfdHJhbnNsYXRvciggdm9pZCogKSB7fSB9Ci0KLSMgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1NJR0FDVElPTikKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1NJR0FDVElPTl9CQVNFRF9TSUdOQUxfSEFORExJTkcKLQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jICBpbmNsdWRlIDxzaWduYWwuaD4KLSMgIGluY2x1ZGUgPHNldGptcC5oPgotCi0jICBpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAgCi0KLSMgICAgaWZuZGVmIFNJR1BPTEwKLSMgICAgICBkZWZpbmUgU0lHUE9MTCBTSUdJTwotIyAgICBlbmRpZgotCi0jICAgIGlmIChfX0ZyZWVCU0RfdmVyc2lvbiA8IDcwMTAwKQotCi0jICAgICAgZGVmaW5lIElMTF9JTExBRFIgMCAvLyBJTExfUkVTQURfRkFVTFQKLSMgICAgICBkZWZpbmUgSUxMX1BSVk9QQyBJTExfUFJJVklOX0ZBVUxUCi0jICAgICAgZGVmaW5lIElMTF9JTExPUE4gMiAvLyBJTExfUkVTT1BfRkFVTFQKLSMgICAgICBkZWZpbmUgSUxMX0NPUFJPQyBJTExfRlBPUF9GQVVMVAotCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotIyAgICAgIGRlZmluZSBORE5CT09TVF9URVNUX0lHTk9SRV9TSUdDSExECi0KLSMgICAgZW5kaWYgCi0jICBlbmRpZiAKLQotIyAgaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoX19RTlhOVE9fXykKLSMgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0jICBlbmRpZgotCi0jICBpZiBkZWZpbmVkKFNJR1BPTEwpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgXAotICAgICAgIShkZWZpbmVkKG1hY2ludG9zaCkgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19BUFBMRV9DQ19fKSkgICYmIFwKLSAgICAgICFkZWZpbmVkKF9fTmV0QlNEX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBcCi0gICAgICAhZGVmaW5lZChfX1FOWE5UT19fKQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DQVRDSF9TSUdQT0xMCi0jICBlbmRpZgotCi0jICBpZmRlZiBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQUxUX1NUQUNLX1NJWkUgU0lHU1RLU1oKLSMgIGVuZGlmCi0KLSNlbHNlCi0KLSMgIGRlZmluZSBORE5CT09TVF9OT19TSUdOQUxfSEFORExJTkcKLQotI2VuZGlmCi0KLSNpZm5kZWYgVU5ERVJfQ0UKLSNpbmNsdWRlIDxlcnJuby5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHJlcG9ydF9lcnJvciAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1ZTTlBSSU5URiggYTEsIGEyLCBhMywgYTQgKSBzdGQ6OnZzbnByaW50ZiggKGExKSwgKGEyKSwgKGEzKSwgKGE0KSApCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfVkVSLCA8PSAxMzEwKSB8fCBcCi0gICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDApKSB8fCBcCi0gICAgICBkZWZpbmVkKFVOREVSX0NFKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfVlNOUFJJTlRGKCBhMSwgYTIsIGEzLCBhNCApIF92c25wcmludGYoIChhMSksIChhMiksIChhMyksIChhNCkgKQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1ZTTlBSSU5URiggYTEsIGEyLCBhMywgYTQgKSB2c25wcmludGYoIChhMSksIChhMiksIChhMyksIChhNCkgKQotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFcnJvckluZm8+Ci10eXBlbmFtZSBFcnJvckluZm86OnZhbHVlX3R5cGUKLWV4dHJhY3QoIG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3QqIGV4ICkKLXsKLSAgICBpZiggIWV4ICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB0eXBlbmFtZSBFcnJvckluZm86OnZhbHVlX3R5cGUgY29uc3QgKiB2YWwgPSBuZG5ib29zdDo6Z2V0X2Vycm9yX2luZm88RXJyb3JJbmZvPiggKmV4ICk7Ci0KLSAgICByZXR1cm4gdmFsID8gKnZhbCA6IDA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1yZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmVycm9yX2NvZGUgZWMsIG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3QqIGJlLCBjaGFyIGNvbnN0KiBmb3JtYXQsIHZhX2xpc3QqIGFyZ3MgKQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgUkVQT1JUX0VSUk9SX0JVRkZFUl9TSVpFID0gNTEyOwotICAgIHN0YXRpYyBjaGFyIGJ1ZltSRVBPUlRfRVJST1JfQlVGRkVSX1NJWkVdOwotCi0gICAgTkROQk9PU1RfVEVTVF9WU05QUklOVEYoIGJ1Ziwgc2l6ZW9mKGJ1ZiktMSwgZm9ybWF0LCAqYXJncyApOyAKLSAgICBidWZbc2l6ZW9mKGJ1ZiktMV0gPSAwOwotCi0gICAgdmFfZW5kKCAqYXJncyApOwotCi0gICAgdGhyb3cgZXhlY3V0aW9uX2V4Y2VwdGlvbiggZWMsIGJ1ZiwgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6bG9jYXRpb24oIGV4dHJhY3Q8dGhyb3dfZmlsZT4oIGJlICksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0PHRocm93X2xpbmU+KCBiZSApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0PHRocm93X2Z1bmN0aW9uPiggYmUgKSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1yZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmVycm9yX2NvZGUgZWMsIGNoYXIgY29uc3QqIGZvcm1hdCwgLi4uICkKLXsKLSAgICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQoIGFyZ3MsIGZvcm1hdCApOwotCi0gICAgcmVwb3J0X2Vycm9yKCBlYywgMCwgZm9ybWF0LCAmYXJncyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjplcnJvcl9jb2RlIGVjLCBuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0KiBiZSwgY2hhciBjb25zdCogZm9ybWF0LCAuLi4gKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCggYXJncywgZm9ybWF0ICk7Ci0KLSAgICByZXBvcnRfZXJyb3IoIGVjLCBiZSwgZm9ybWF0LCAmYXJncyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcix0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIGludAotZG9faW52b2tlKCBUciBjb25zdCYgdHIsIEZ1bmN0b3IgY29uc3QmIEYgKQotewotICAgIHJldHVybiB0ciA/ICgqdHIpKCBGICkgOiBGKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TSUdBQ1RJT05fQkFTRURfU0lHTkFMX0hBTkRMSU5HKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgU2lnYWN0aW9uIGJhc2VkIHNpZ25hbCBoYW5kbGluZyAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgbmRuYm9vc3Q6OmRldGFpbDo6c3lzdGVtX3NpZ25hbF9leGNlcHRpb24gICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uKCkKLSAgICA6IG1fc2lnX2luZm8oIDAgKQotICAgICwgbV9jb250ZXh0KCAwICkKLSAgICB7fQotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBzaWdpbmZvX3QqIGksIHZvaWQqIGMgKQotICAgIHsKLSAgICAgICAgbV9zaWdfaW5mbyAgPSBpOwotICAgICAgICBtX2NvbnRleHQgICA9IGM7Ci0gICAgfQotICAgIHZvaWQgICAgICAgIHJlcG9ydCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHNpZ2luZm9fdCogIG1fc2lnX2luZm87IC8vIHN5c3RlbSBzaWduYWwgZGV0YWlsZWQgaW5mbwotICAgIHZvaWQqICAgICAgIG1fY29udGV4dDsgIC8vIHNpZ25hbCBjb250ZXh0Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1zeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbjo6cmVwb3J0KCkgY29uc3QKLXsKLSAgICBpZiggIW1fc2lnX2luZm8gKQotICAgICAgICByZXR1cm47IC8vIG5vIGVycm9yIGFjdHVhbGx5IG9jY3VyPwotCi0gICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotICAgIGNhc2UgU0lfVVNFUjoKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZ2VuZXJhdGVkIGJ5IGtpbGwoKSAob3IgZmFtaWx5KTsgdWlkPSVkOyBwaWQ9JWQiLAotICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNJX1FVRVVFOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBzZW50IGJ5IHNpZ3F1ZXVlKCkiICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0lfVElNRVI6Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHRoZSBleHBpcmF0aW9uIG9mIGEgdGltZXIgc2V0IGJ5IHRpbWVyX3NldHRpbWVyKCkiICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0lfQVNZTkNJTzoKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZ2VuZXJhdGVkIGJ5IHRoZSBjb21wbGV0aW9uIG9mIGFuIGFzeW5jaHJvbm91cyBJL08gcmVxdWVzdCIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTSV9NRVNHUToKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZ2VuZXJhdGVkIGJ5IHRoZSB0aGUgYXJyaXZhbCBvZiBhIG1lc3NhZ2Ugb24gYW4gZW1wdHkgbWVzc2FnZSBxdWV1ZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9zaWdubyApIHsKLSAgICBjYXNlIFNJR0lMTDoKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgY2FzZSBJTExfSUxMT1BDOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGlsbGVnYWwgb3Bjb2RlOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfSUxMVFJQOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGlsbGVnYWwgdHJhcDsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSUxMX1BSVlJFRzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBwcml2aWxlZ2VkIHJlZ2lzdGVyOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfQkFEU1RLOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGludGVybmFsIHN0YWNrIGVycm9yOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgICBjYXNlIElMTF9JTExPUE46Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaWxsZWdhbCBvcGVyYW5kOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfSUxMQURSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGlsbGVnYWwgYWRkcmVzc2luZyBtb2RlOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfUFJWT1BDOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHByaXZpbGVnZWQgb3Bjb2RlOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfQ09QUk9DOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGNvLXByb2Nlc3NvciBlcnJvcjsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IAotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdJTEwsIHNpX2NvZGU6ICVkIChpbGxlZ2FsIGluc3RydWN0aW9uOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgpIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsgCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHRlBFOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0gICAgICAgIGNhc2UgRlBFX0lOVERJVjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbnRlZ2VyIGRpdmlkZSBieSB6ZXJvOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfSU5UT1ZGOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGludGVnZXIgb3ZlcmZsb3c7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRESVY6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZmxvYXRpbmcgcG9pbnQgZGl2aWRlIGJ5IHplcm87IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRPVkY6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZmxvYXRpbmcgcG9pbnQgb3ZlcmZsb3c7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRVTkQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZmxvYXRpbmcgcG9pbnQgdW5kZXJmbG93OyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUUkVTOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGZsb2F0aW5nIHBvaW50IGluZXhhY3QgcmVzdWx0OyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUSU5WOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGludmFsaWQgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9uOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUU1VCOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHN1YnNjcmlwdCBvdXQgb2YgcmFuZ2U7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR0ZQRSwgc2lfY29kZTogJWQgKGVycm5vbmVvdXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciwgbV9zaWdfaW5mby0+c2lfY29kZSApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNJR1NFR1Y6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgIGNhc2UgU0VHVl9NQVBFUlI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IG5vIG1hcHBpbmcgYXQgZmF1bHQgYWRkcmVzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNFR1ZfQUNDRVJSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4OiBpbnZhbGlkIHBlcm1pc3Npb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdTRUdWLCBzaV9jb2RlOiAlZCAobWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyLCBtX3NpZ19pbmZvLT5zaV9jb2RlICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHQlVTOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICBjYXNlIEJVU19BRFJBTE46Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IGludmFsaWQgYWRkcmVzcyBhbGlnbm1lbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCVVNfQURSRVJSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4OiBub24tZXhpc3RlbnQgcGh5c2ljYWwgYWRkcmVzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJVU19PQkpFUlI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IG9iamVjdCBzcGVjaWZpYyBoYXJkd2FyZSBlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHU0VHViwgc2lfY29kZTogJWQgKG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciwgbV9zaWdfaW5mby0+c2lfY29kZSApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNJR0NITEQ6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgIGNhc2UgQ0xEX0VYSVRFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGQgaGFzIGV4aXRlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfS0lMTEVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZCB3YXMga2lsbGVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENMRF9EVU1QRUQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkIHRlcm1pbmF0ZWQgYWJub3JtYWxseTsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfVFJBUFBFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhY2VkIGNoaWxkIGhhcyB0cmFwcGVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENMRF9TVE9QUEVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZCBoYXMgc3RvcHBlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfQ09OVElOVUVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzdG9wcGVkIGNoaWxkIGhhZCBjb250aW51ZWQ7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cyApOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdDSExELCBzaV9jb2RlOiAlZCAoY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cywgbV9zaWdfaW5mby0+c2lfY29kZSApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfQ0FUQ0hfU0lHUE9MTCkKLQotICAgIGNhc2UgU0lHUE9MTDoKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgY2FzZSBQT0xMX0lOOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhIGlucHV0IGF2YWlsYWJsZTsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUE9MTF9PVVQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBidWZmZXJzIGF2YWlsYWJsZTsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUE9MTF9NU0c6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IG1lc3NhZ2UgYXZhaWxhYmxlOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQT0xMX0VSUjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaS9vIGVycm9yOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQT0xMX1BSSToKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlnaCBwcmlvcml0eSBpbnB1dCBhdmFpbGFibGU7IGJhbmQgZXZlbnQgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2lmIGRlZmluZWQoUE9MTF9FUlIpICYmIGRlZmluZWQoUE9MTF9IVVApICYmIChQT0xMX0VSUiAtIFBPTExfSFVQKQotICAgICAgICBjYXNlIFBPTExfSFVQOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJkZXZpY2UgZGlzY29ubmVjdGVkOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6IAotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdQT0xMLCBzaV9jb2RlOiAlZCAoYXN5bmNocm9ub3VzIEkvTyBldmVudCBvY2N1cmVkOyBiYW5kIGV2ZW50ICVkKSIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsgCi0gICAgICAgICAgICBicmVhazsgCi0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSNlbmRpZgotCi0gICAgY2FzZSBTSUdBQlJUOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdBQlJUIChhcHBsaWNhdGlvbiBhYm9ydCByZXF1ZXN0ZWQpIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHQUxSTToKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjp0aW1lb3V0X2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR0FMUk0gKHRpbWVvdXQgd2hpbGUgZXhlY3V0aW5nIGZ1bmN0aW9uKSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgInVucmVjb2duaXplZCBzaWduYWwiICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaWduYWxfYWN0aW9uICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vIEZvcndhcmQgZGVjbGFyYXRpb24KLWV4dGVybiAiQyIgewotc3RhdGljIHZvaWQgZXhlY3V0aW9uX21vbml0b3JfanVtcGluZ19zaWduYWxfaGFuZGxlciggaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjb250ZXh0ICk7Ci1zdGF0aWMgdm9pZCBleGVjdXRpb25fbW9uaXRvcl9hdHRhY2hpbmdfc2lnbmFsX2hhbmRsZXIoIGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogY29udGV4dCApOwotfQotCi1jbGFzcyBzaWduYWxfYWN0aW9uIHsKLSAgICB0eXBlZGVmIHN0cnVjdCBzaWdhY3Rpb24qIHNpZ2FjdGlvbl9wdHI7Ci1wdWJsaWM6Ci0gICAgLy9Db25zdHJ1Y3RvcgotICAgIHNpZ25hbF9hY3Rpb24oKTsKLSAgICBzaWduYWxfYWN0aW9uKCBpbnQgc2lnLCBib29sIGluc3RhbGwsIGJvb2wgYXR0YWNoX2RiZywgY2hhciogYWx0X3N0YWNrICk7Ci0gICAgfnNpZ25hbF9hY3Rpb24oKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1fc2lnOwotICAgIGJvb2wgICAgICAgICAgICAgICAgbV9pbnN0YWxsZWQ7Ci0gICAgc3RydWN0IHNpZ2FjdGlvbiAgICBtX25ld19hY3Rpb247Ci0gICAgc3RydWN0IHNpZ2FjdGlvbiAgICBtX29sZF9hY3Rpb247Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zaWduYWxfYWN0aW9uOjpzaWduYWxfYWN0aW9uKCkKLTogbV9pbnN0YWxsZWQoIGZhbHNlICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXNpZ25hbF9hY3Rpb246OnNpZ25hbF9hY3Rpb24oIGludCBzaWcsIGJvb2wgaW5zdGFsbCwgYm9vbCBhdHRhY2hfZGJnLCBjaGFyKiBhbHRfc3RhY2sgKQotOiBtX3NpZyggc2lnICkKLSwgbV9pbnN0YWxsZWQoIGluc3RhbGwgKQotewotICAgIGlmKCAhaW5zdGFsbCApCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0ZDo6bWVtc2V0KCAmbV9uZXdfYWN0aW9uLCAwLCBzaXplb2Yoc3RydWN0IHNpZ2FjdGlvbikgKTsKLQotICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhY3Rpb24oIG1fc2lnICwgc2lnYWN0aW9uX3B0cigpLCAmbV9uZXdfYWN0aW9uICkgIT0gLTEgKTsKLQotICAgIGlmKCBtX25ld19hY3Rpb24uc2Ffc2lnYWN0aW9uIHx8IG1fbmV3X2FjdGlvbi5zYV9oYW5kbGVyICkgewotICAgICAgICBtX2luc3RhbGxlZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9uZXdfYWN0aW9uLnNhX2ZsYWdzICAgICB8PSBTQV9TSUdJTkZPOwotICAgIG1fbmV3X2FjdGlvbi5zYV9zaWdhY3Rpb24gID0gYXR0YWNoX2RiZyA/ICZleGVjdXRpb25fbW9uaXRvcl9hdHRhY2hpbmdfc2lnbmFsX2hhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAmZXhlY3V0aW9uX21vbml0b3JfanVtcGluZ19zaWduYWxfaGFuZGxlcjsKLSAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIHNpZ2VtcHR5c2V0KCAmbV9uZXdfYWN0aW9uLnNhX21hc2sgKSAhPSAtMSApOwotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0gICAgaWYoIGFsdF9zdGFjayApCi0gICAgICAgIG1fbmV3X2FjdGlvbi5zYV9mbGFncyB8PSBTQV9PTlNUQUNLOwotI2VuZGlmCi0KLSAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIDo6c2lnYWN0aW9uKCBtX3NpZywgJm1fbmV3X2FjdGlvbiwgJm1fb2xkX2FjdGlvbiApICE9IC0xICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXNpZ25hbF9hY3Rpb246On5zaWduYWxfYWN0aW9uKCkKLXsKLSAgICBpZiggbV9pbnN0YWxsZWQgKQotICAgICAgICA6OnNpZ2FjdGlvbiggbV9zaWcsICZtX29sZF9hY3Rpb24gLCBzaWdhY3Rpb25fcHRyKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaWduYWxfaGFuZGxlciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzaWduYWxfaGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBzaWduYWxfaGFuZGxlciggYm9vbCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBpbnQgdGltZW91dCwgYm9vbCBhdHRhY2hfZGJnLCBjaGFyKiBhbHRfc3RhY2sgKTsKLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB+c2lnbmFsX2hhbmRsZXIoKTsKLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgc3RhdGljIHNpZ2ptcF9idWYmICAgICAganVtcF9idWZmZXIoKQotICAgIHsKLSAgICAgICAgYXNzZXJ0KCAhIXNfYWN0aXZlX2hhbmRsZXIgKTsKLQotICAgICAgICByZXR1cm4gc19hY3RpdmVfaGFuZGxlci0+bV9zaWdqbXBfYnVmOwotICAgIH0KLQotICAgIHN0YXRpYyBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiYgIHN5c19zaWcoKQotICAgIHsKLSAgICAgICAgYXNzZXJ0KCAhIXNfYWN0aXZlX2hhbmRsZXIgKTsKLQotICAgICAgICByZXR1cm4gc19hY3RpdmVfaGFuZGxlci0+bV9zeXNfc2lnOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzaWduYWxfaGFuZGxlciogICAgICAgICBtX3ByZXZfaGFuZGxlcjsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX3RpbWVvdXQ7Ci0KLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0lMTF9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9GUEVfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fU0VHVl9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9CVVNfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fQ0hMRF9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9QT0xMX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0FCUlRfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fQUxSTV9hY3Rpb247Ci0KLSAgICBzaWdqbXBfYnVmICAgICAgICAgICAgICBtX3NpZ2ptcF9idWY7Ci0gICAgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24gbV9zeXNfc2lnOwotCi0gICAgc3RhdGljIHNpZ25hbF9oYW5kbGVyKiAgc19hY3RpdmVfaGFuZGxlcjsKLX07Ci0KLS8vICEhIG5lZWQgdG8gYmUgcGxhY2VkIGluIHRocmVhZCBzcGVjaWZpYyBzdG9yYWdlCi10eXBlZGVmIHNpZ25hbF9oYW5kbGVyKiBzaWduYWxfaGFuZGxlcl9wdHI7Ci1zaWduYWxfaGFuZGxlciogc2lnbmFsX2hhbmRsZXI6OnNfYWN0aXZlX2hhbmRsZXIgPSBzaWduYWxfaGFuZGxlcl9wdHIoKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc2lnbmFsX2hhbmRsZXI6OnNpZ25hbF9oYW5kbGVyKCBib29sIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGludCB0aW1lb3V0LCBib29sIGF0dGFjaF9kYmcsIGNoYXIqIGFsdF9zdGFjayApCi06IG1fcHJldl9oYW5kbGVyKCBzX2FjdGl2ZV9oYW5kbGVyICkKLSwgbV90aW1lb3V0KCB0aW1lb3V0ICkKLSwgbV9JTExfYWN0aW9uICggU0lHSUxMICwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9GUEVfYWN0aW9uICggU0lHRlBFICwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9TRUdWX2FjdGlvbiggU0lHU0VHViwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9CVVNfYWN0aW9uICggU0lHQlVTICwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9JR05PUkVfU0lHQ0hMRAotLCBtX0NITERfYWN0aW9uKCBTSUdDSExELCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9DQVRDSF9TSUdQT0xMCi0sIG1fUE9MTF9hY3Rpb24oIFNJR1BPTEwsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0jZW5kaWYKLSwgbV9BQlJUX2FjdGlvbiggU0lHQUJSVCwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9BTFJNX2FjdGlvbiggU0lHQUxSTSwgdGltZW91dCA+IDAgICAgICAgICwgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLXsKLSAgICBzX2FjdGl2ZV9oYW5kbGVyID0gdGhpczsKLQotICAgIGlmKCBtX3RpbWVvdXQgPiAwICkgewotICAgICAgICA6OmFsYXJtKCAwICk7Ci0gICAgICAgIDo6YWxhcm0oIHRpbWVvdXQgKTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSAgICBpZiggYWx0X3N0YWNrICkgewotICAgICAgICBzdGFja190IHNpZ3N0azsKLSAgICAgICAgc3RkOjptZW1zZXQoICZzaWdzdGssIDAsIHNpemVvZihzdGFja190KSApOwotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhbHRzdGFjayggMCwgJnNpZ3N0ayApICE9IC0xICk7Ci0KLSAgICAgICAgaWYoIHNpZ3N0ay5zc19mbGFncyAmIFNTX0RJU0FCTEUgKSB7Ci0gICAgICAgICAgICBzaWdzdGsuc3Nfc3AgICAgPSBhbHRfc3RhY2s7Ci0gICAgICAgICAgICBzaWdzdGsuc3Nfc2l6ZSAgPSBORE5CT09TVF9URVNUX0FMVF9TVEFDS19TSVpFOwotICAgICAgICAgICAgc2lnc3RrLnNzX2ZsYWdzID0gMDsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhbHRzdGFjayggJnNpZ3N0aywgMCApICE9IC0xICk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc2lnbmFsX2hhbmRsZXI6On5zaWduYWxfaGFuZGxlcigpCi17Ci0gICAgYXNzZXJ0KCBzX2FjdGl2ZV9oYW5kbGVyID09IHRoaXMgKTsKLQotICAgIGlmKCBtX3RpbWVvdXQgPiAwICkKLSAgICAgICAgOjphbGFybSggMCApOwotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0jaWZkZWYgX19HTlVDX18KLSAgICAvLyBXZSBzaG91bGRuJ3QgbmVlZCB0byBleHBsaWNpdGx5IGluaXRpYWxpemUgYWxsIHRoZSBtZW1iZXJzIGhlcmUsCi0gICAgLy8gYnV0IGdjYyB3YXJucyBpZiB3ZSBkb24ndCwgc28gYWRkIGluaXRpYWxpemVycyBmb3IgZWFjaCBvZiB0aGUKLSAgICAvLyBtZW1iZXJzIHNwZWNpZmllZCBpbiB0aGUgUE9TSVggc3RkOgotICAgIHN0YWNrX3Qgc2lnc3RrID0geyAwLCAwLCAwIH07Ci0jZWxzZQotICAgIHN0YWNrX3Qgc2lnc3RrID0geyB9OwotI2VuZGlmCi0KLSAgICBzaWdzdGsuc3Nfc2l6ZSAgPSBNSU5TSUdTVEtTWjsKLSAgICBzaWdzdGsuc3NfZmxhZ3MgPSBTU19ESVNBQkxFOwotICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhbHRzdGFjayggJnNpZ3N0aywgMCApICE9IC0xICk7Ci0jZW5kaWYKLQotICAgIHNfYWN0aXZlX2hhbmRsZXIgPSBtX3ByZXZfaGFuZGxlcjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yX3NpZ25hbF9oYW5kbGVyICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1leHRlcm4gIkMiIHsKLQotc3RhdGljIGJvb2wgaWdub3JlX3NpZ2NoaWxkKCBzaWdpbmZvX3QqIGluZm8gKQotewotICAgIHJldHVybiBpbmZvLT5zaV9zaWdubyA9PSBTSUdDSExECi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICAgICAgJiYgaW5mby0+c2lfY29kZSA9PSBDTERfRVhJVEVEIAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9JR05PUkVfTk9OX1pFUk9fQ0hJTERfQ09ERQotICAgICAgICAgICAgOwotI2Vsc2UKLSAgICAgICAgICAgICYmIChpbnQpaW5mby0+c2lfc3RhdHVzID09IDA7Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQgZXhlY3V0aW9uX21vbml0b3JfanVtcGluZ19zaWduYWxfaGFuZGxlciggaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjb250ZXh0ICkKLXsKLSAgICBpZiggaWdub3JlX3NpZ2NoaWxkKCBpbmZvICkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaWduYWxfaGFuZGxlcjo6c3lzX3NpZygpKCBpbmZvLCBjb250ZXh0ICk7Ci0KLSAgICBzaWdsb25nam1wKCBzaWduYWxfaGFuZGxlcjo6anVtcF9idWZmZXIoKSwgc2lnICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkIGV4ZWN1dGlvbl9tb25pdG9yX2F0dGFjaGluZ19zaWduYWxfaGFuZGxlciggaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjb250ZXh0ICkKLXsKLSAgICBpZiggaWdub3JlX3NpZ2NoaWxkKCBpbmZvICkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggIWRlYnVnOjphdHRhY2hfZGVidWdnZXIoIGZhbHNlICkgKQotICAgICAgICBleGVjdXRpb25fbW9uaXRvcl9qdW1waW5nX3NpZ25hbF9oYW5kbGVyKCBzaWcsIGluZm8sIGNvbnRleHQgKTsKLQotICAgIC8vIGRlYnVnZ2VyIGF0dGFjaGVkOyBpdCB3aWxsIGhhbmRsZSB0aGUgc2lnbmFsCi0gICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCA6OnNpZ25hbCggc2lnLCBTSUdfREZMICkgIT0gU0lHX0VSUiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yOjpjYXRjaF9zaWduYWxzICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludAotZXhlY3V0aW9uX21vbml0b3I6OmNhdGNoX3NpZ25hbHMoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0KLSNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCi0gICAgcF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlID0gZmFsc2U7Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSwotICAgIGlmKCAhIXBfdXNlX2FsdF9zdGFjayAmJiAhbV9hbHRfc3RhY2sgKQotICAgICAgICBtX2FsdF9zdGFjay5yZXNldCggbmV3IGNoYXJbTkROQk9PU1RfVEVTVF9BTFRfU1RBQ0tfU0laRV0gKTsKLSNlbHNlCi0gICAgcF91c2VfYWx0X3N0YWNrLnZhbHVlID0gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHNpZ25hbF9oYW5kbGVyIGxvY2FsX3NpZ25hbF9oYW5kbGVyKCBwX2NhdGNoX3N5c3RlbV9lcnJvcnMsIHBfdGltZW91dCwgcF9hdXRvX3N0YXJ0X2RiZywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwX3VzZV9hbHRfc3RhY2sgPyAwIDogbV9hbHRfc3RhY2suZ2V0KCkgKTsKLQotICAgIGlmKCAhc2lnc2V0am1wKCBzaWduYWxfaGFuZGxlcjo6anVtcF9idWZmZXIoKSwgMSApICkKLSAgICAgICAgcmV0dXJuIGRldGFpbDo6ZG9faW52b2tlKCBtX2N1c3RvbV90cmFuc2xhdG9ycyAsIEYgKTsKLSAgICBlbHNlCi0gICAgICAgIHRocm93IGxvY2FsX3NpZ25hbF9oYW5kbGVyLnN5c19zaWcoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9TRUhfQkFTRURfU0lHTkFMX0hBTkRMSU5HKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICBNaWNyb3NvZnQgc3RydWN0dXJlZCBleGNlcHRpb24gaGFuZGxpbmcgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDU2NCkpCi1uYW1lc3BhY2UgeyB2b2lkIF9zZXRfc2VfdHJhbnNsYXRvciggdm9pZCogKSB7fSB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBuZG5ib29zdDo6ZGV0YWlsOjpzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3Mgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24gewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgICAgICBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiggZXhlY3V0aW9uX21vbml0b3IqIGVtICkKLSAgICA6IG1fZW0oIGVtICkKLSAgICAsIG1fc2VfaWQoIDAgKQotICAgICwgbV9mYXVsdF9hZGRyZXNzKCAwICkKLSAgICAsIG1fZGlyKCBmYWxzZSApCi0gICAge30KLQotICAgIHZvaWQgICAgICAgICAgICAgICAgcmVwb3J0KCkgY29uc3Q7Ci0gICAgaW50ICAgICAgICAgICAgICAgICBvcGVyYXRvcigpKCB1bnNpZ25lZCBpbnQgaWQsIF9FWENFUFRJT05fUE9JTlRFUlMqIGV4cHMgKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBleGVjdXRpb25fbW9uaXRvciogIG1fZW07Ci0KLSAgICB1bnNpZ25lZCBpbnQgICAgICAgIG1fc2VfaWQ7Ci0gICAgdm9pZCogICAgICAgICAgICAgICBtX2ZhdWx0X2FkZHJlc3M7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBtX2RpcjsKLX07Ci0KLXN0YXRpYyB2b2lkCi1zZWhfY2F0Y2hfcHJldmVudGVyKCB1bnNpZ25lZCBpbnQgLyogaWQgKi8sIF9FWENFUFRJT05fUE9JTlRFUlMqIC8qIGV4cHMgKi8gKQotewotICAgIHRocm93OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbnQKLXN5c3RlbV9zaWduYWxfZXhjZXB0aW9uOjpvcGVyYXRvcigpKCB1bnNpZ25lZCBpbnQgaWQsIF9FWENFUFRJT05fUE9JTlRFUlMqIGV4cHMgKQotewotICAgIGNvbnN0IHVuc2lnbmVkIGludCBNU0ZUX0NQUF9FWENFUFQgPSAweEUwNmQ3MzYzOyAvLyBFTVNDCi0KLSAgICBpZiggIW1fZW0tPnBfY2F0Y2hfc3lzdGVtX2Vycm9ycyB8fCAoaWQgPT0gTVNGVF9DUFBfRVhDRVBUKSApCi0gICAgICAgIHJldHVybiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOwotCi0gICAgaWYoICEhbV9lbS0+cF9hdXRvX3N0YXJ0X2RiZyAmJiBkZWJ1Zzo6YXR0YWNoX2RlYnVnZ2VyKCBmYWxzZSApICkgewotICAgICAgICBtX2VtLT5wX2NhdGNoX3N5c3RlbV9lcnJvcnMudmFsdWUgPSBmYWxzZTsKLSAgICAgICAgX3NldF9zZV90cmFuc2xhdG9yKCAmc2VoX2NhdGNoX3ByZXZlbnRlciApOwotCi0gICAgICAgIHJldHVybiBFWENFUFRJT05fQ09OVElOVUVfRVhFQ1VUSU9OOwotICAgIH0KLQotICAgIG1fc2VfaWQgPSBpZDsKLSAgICBpZiggbV9zZV9pZCA9PSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTiAmJiBleHBzLT5FeGNlcHRpb25SZWNvcmQtPk51bWJlclBhcmFtZXRlcnMgPT0gMiApIHsKLSAgICAgICAgbV9mYXVsdF9hZGRyZXNzID0gKHZvaWQqKWV4cHMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uSW5mb3JtYXRpb25bMV07Ci0gICAgICAgIG1fZGlyICAgICAgICAgICA9IGV4cHMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uSW5mb3JtYXRpb25bMF0gPT0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotc3lzdGVtX3NpZ25hbF9leGNlcHRpb246OnJlcG9ydCgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoKCBtX3NlX2lkICkgewotICAgIC8vIGNhc2VzIGNsYXNzaWZpZWQgYXMgc3lzdGVtX2ZhdGFsX2Vycm9yCi0gICAgY2FzZSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTjogewotICAgICAgICBpZiggIW1fZmF1bHRfYWRkcmVzcyApCi0gICAgICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24iICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKAotICAgICAgICAgICAgICAgIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIG9jY3VycmVkIGF0IGFkZHJlc3MgMHglMDhseCwgd2hpbGUgYXR0ZW1wdGluZyB0byAlcyIsCi0gICAgICAgICAgICAgICAgICAgIG1fZmF1bHRfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgbV9kaXIgPyAiIHJlYWQgaW5hY2Nlc3NpYmxlIGRhdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogIiB3cml0ZSB0byBhbiBpbmFjY2Vzc2libGUgKG9yIHByb3RlY3RlZCkgYWRkcmVzcyIKLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBFWENFUFRJT05fSUxMRUdBTF9JTlNUUlVDVElPTjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgImlsbGVnYWwgaW5zdHJ1Y3Rpb24iICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fUFJJVl9JTlNUUlVDVElPTjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgInRyaWVkIHRvIGV4ZWN1dGUgYW4gaW5zdHJ1Y3Rpb24gd2hvc2Ugb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IG1hY2hpbmUgbW9kZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9JTl9QQUdFX0VSUk9SOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAiYWNjZXNzIHRvIGEgbWVtb3J5IHBhZ2UgdGhhdCBpcyBub3QgcHJlc2VudCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9TVEFDS19PVkVSRkxPVzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgInN0YWNrIG92ZXJmbG93IiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgInRyaWVkIHRvIGNvbnRpbnVlIGV4ZWN1dGlvbiBhZnRlciBhIG5vbiBjb250aW51YWJsZSBleGNlcHRpb24gb2NjdXJyZWQiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLy8gY2FzZXMgY2xhc3NpZmllZCBhcyAobm9uLWZhdGFsKSBzeXN0ZW1fdHJhcAotICAgIGNhc2UgRVhDRVBUSU9OX0RBVEFUWVBFX01JU0FMSUdOTUVOVDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImRhdGEgbWlzYWxpZ25tZW50IiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImludGVnZXIgZGl2aWRlIGJ5IHplcm8iICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fSU5UX09WRVJGTE9XOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiaW50ZWdlciBvdmVyZmxvdyIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9BUlJBWV9CT1VORFNfRVhDRUVERUQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJhcnJheSBib3VuZHMgZXhjZWVkZWQiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX0RJVklERV9CWV9aRVJPOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiZmxvYXRpbmcgcG9pbnQgZGl2aWRlIGJ5IHplcm8iICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX1NUQUNLX0NIRUNLOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YWNrIG92ZXJmbG93ZWQgb3IgdW5kZXJmbG93ZWQgYXMgdGhlIHJlc3VsdCBvZiBhIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbiIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfREVOT1JNQUxfT1BFUkFORDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIG9mIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbiBpcyBkZW5vcm1hbCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSMgaWYgMCAvLyAhISA/PyAKLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfSU5FWEFDVF9SRVNVTFQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGNhbm5vdCBiZSByZXByZXNlbnRlZCBleGFjdGx5IiApOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX09WRVJGTE9XOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cG9uZW50IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWFnbml0dWRlIGFsbG93ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfVU5ERVJGTE9XOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cG9uZW50IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGlzIGxlc3MgdGhhbiB0aGUgbWFnbml0dWRlIGFsbG93ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfSU5WQUxJRF9PUEVSQVRJT046Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJmbG9hdGluZyBwb2ludCBlcnJvciIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9CUkVBS1BPSU5UOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiYnJlYWtwb2ludCBlbmNvdW50ZXJlZCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAidW5yZWNvZ25pemVkIGV4Y2VwdGlvbi4gSWQ6IDB4JTA4bHgiLCBtX3NlX2lkICk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIGFzc2VydF9yZXBvcnRpbmdfZnVuY3Rpb24gICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLWFzc2VydF9yZXBvcnRpbmdfZnVuY3Rpb24oIGludCByZXBvcnRUeXBlLCBjaGFyKiB1c2VyTWVzc2FnZSwgaW50KiApCi17Ci0gICAgc3dpdGNoKCByZXBvcnRUeXBlICkgewotICAgIGNhc2UgTkROQk9PU1RfVEVTVF9DUlRfQVNTRVJUOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dXNlcl9lcnJvciwgdXNlck1lc3NhZ2UgKTsKLQotICAgICAgICByZXR1cm4gMTsgLy8gcmV0dXJuIHZhbHVlIGFuZCByZXRWYWwgYXJlIG5vdCBpbXBvcnRhbnQgc2luY2Ugd2UgbmV2ZXIgcmVhY2ggdGhpcyBsaW5lCi0gICAgY2FzZSBORE5CT09TVF9URVNUX0NSVF9FUlJPUjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgdXNlck1lc3NhZ2UgKTsKLQotICAgICAgICByZXR1cm4gMTsgLy8gcmV0dXJuIHZhbHVlIGFuZCByZXRWYWwgYXJlIG5vdCBpbXBvcnRhbnQgc2luY2Ugd2UgbmV2ZXIgcmVhY2ggdGhpcyBsaW5lCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7IC8vIHVzZSB1c3VhbCByZXBvcnRpbmcgbWV0aG9kCi0gICAgfQotfSAvLyBhc3NlcnRfcmVwb3J0aW5nX2Z1bmN0aW9uCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLWludmFsaWRfcGFyYW1faGFuZGxlciggd2NoYXJfdCBjb25zdCogLyogZXhwciAqLywgCi0gICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIC8qIGZ1bmMgKi8sIAotICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAvKiBmaWxlICovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICAgLyogbGluZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgdWludHB0cl90ICAgICAgLyogcmVzZXJ2ZWQgKi8pCi17Ci0gICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnVzZXJfZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBwYXJhbWV0ZXIgZGV0ZWN0ZWQgYnkgQyBydW50aW1lIGxpYnJhcnkiICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLXN3aXRjaF9mcF9leGNlcHRpb25zKCBib29sIG9uX29mZiApCi17Ci0gICAgaWYoICFvbl9vZmYgKQotICAgICAgICBfY2xlYXJmcCgpOwotCi0gICAgaW50IGN3ID0gOjpfY29udHJvbGZwKCAwLCAwICk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uc19tYXNrID0gRU1fSU5WQUxJRHxFTV9ERU5PUk1BTHxFTV9aRVJPRElWSURFfEVNX09WRVJGTE9XfEVNX1VOREVSRkxPVzsKLQotICAgIGlmKCBvbl9vZmYgKQotICAgICAgICBjdyAmPSB+ZXhjZXB0aW9uc19tYXNrOyAvLyBTZXQgdGhlIGV4Y2VwdGlvbiBtYXNrcyBvbiwgdHVybiBleGNlcHRpb25zIG9mZgotICAgIGVsc2UKLSAgICAgICAgY3cgfD0gZXhjZXB0aW9uc19tYXNrOyAgLy8gU2V0IHRoZSBleGNlcHRpb24gbWFza3Mgb2ZmLCB0dXJuIGV4Y2VwdGlvbnMgb24KLQotICAgIGlmKCBvbl9vZmYgKQotICAgICAgICBfY2xlYXJmcCgpOwotICAgICAgICAKLSAgICAvLyBTZXQgdGhlIGNvbnRyb2wgd29yZAotICAgIDo6X2NvbnRyb2xmcCggY3csIE1DV19FTSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBleGVjdXRpb25fbW9uaXRvcjo6Y2F0Y2hfc2lnbmFscyAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQKLWV4ZWN1dGlvbl9tb25pdG9yOjpjYXRjaF9zaWduYWxzKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkKLXsKLSAgICBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBvbGRfaXBoID0gX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoKTsKLSAgICBORE5CT09TVF9URVNUX0NSVF9IT09LX1RZUEUgb2xkX2NydF9ob29rID0gMDsKLQotICAgIGlmKCAhcF9jYXRjaF9zeXN0ZW1fZXJyb3JzICkKLSAgICAgICAgX3NldF9zZV90cmFuc2xhdG9yKCAmZGV0YWlsOjpzZWhfY2F0Y2hfcHJldmVudGVyICk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmKCAhIXBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMgKQotICAgICAgICAgICAgZGV0YWlsOjpzd2l0Y2hfZnBfZXhjZXB0aW9ucyggdHJ1ZSApOwotCi0gICAgICAgb2xkX2NydF9ob29rID0gTkROQk9PU1RfVEVTVF9DUlRfU0VUX0hPT0soICZkZXRhaWw6OmFzc2VydF9yZXBvcnRpbmdfZnVuY3Rpb24gKTsKLQotICAgICAgIG9sZF9pcGggPSBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoIAotICAgICAgICAgICByZWludGVycHJldF9jYXN0PF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyPiggJmRldGFpbDo6aW52YWxpZF9wYXJhbV9oYW5kbGVyICkgKTsKLSAgICB9Ci0KLSAgICBkZXRhaWw6OnN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIFNTRSggdGhpcyApOwotICAgIAotICAgIGludCByZXRfdmFsID0gMDsKLQotICAgIF9fdHJ5IHsKLSAgICAgICAgX190cnkgewotICAgICAgICAgICAgcmV0X3ZhbCA9IGRldGFpbDo6ZG9faW52b2tlKCBtX2N1c3RvbV90cmFuc2xhdG9ycywgRiApOwotICAgICAgICB9Ci0gICAgICAgIF9fZXhjZXB0KCBTU0UoIEdldEV4Y2VwdGlvbkNvZGUoKSwgR2V0RXhjZXB0aW9uSW5mb3JtYXRpb24oKSApICkgewotICAgICAgICAgICAgdGhyb3cgU1NFOwotICAgICAgICB9Ci0gICAgfQotICAgIF9fZmluYWxseSB7Ci0gICAgICAgIGlmKCAhIXBfY2F0Y2hfc3lzdGVtX2Vycm9ycyApIHsKLSAgICAgICAgICAgIGlmKCAhIXBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMgKQotICAgICAgICAgICAgICAgIGRldGFpbDo6c3dpdGNoX2ZwX2V4Y2VwdGlvbnMoIGZhbHNlICk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfQ1JUX1NFVF9IT09LKCBvbGRfY3J0X2hvb2sgKTsKLQotICAgICAgICAgICBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoIG9sZF9pcGggKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXRfdmFsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZWxzZSAgLy8gZGVmYXVsdCBzaWduYWwgaGFuZGxlcgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotY2xhc3Mgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24gewotcHVibGljOgotICAgIHZvaWQgICByZXBvcnQoKSBjb25zdCB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLWludAotZXhlY3V0aW9uX21vbml0b3I6OmNhdGNoX3NpZ25hbHMoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKQotewotICAgIHJldHVybiBkZXRhaWw6OmRvX2ludm9rZSggbV9jdXN0b21fdHJhbnNsYXRvcnMgLCBGICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZiAgLy8gY2hvb3NlIHNpZ25hbCBoYW5kbGVyCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBleGVjdXRpb25fbW9uaXRvcjo6ZXhlY3V0ZSAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50Ci1leGVjdXRpb25fbW9uaXRvcjo6ZXhlY3V0ZSggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApCi17Ci0gICAgaWYoIGRlYnVnOjp1bmRlcl9kZWJ1Z2dlcigpICkKLSAgICAgICAgcF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlID0gZmFsc2U7Ci0KLSAgICB0cnkgewotICAgICAgICByZXR1cm4gY2F0Y2hfc2lnbmFscyggRiApOwotICAgIH0KLQotICAgIC8vICBDYXRjaC1jbGF1c2UgcmVmZXJlbmNlIGFyZ3VtZW50cyBhcmUgYSBiaXQgZGlmZmVyZW50IGZyb20gZnVuY3Rpb24KLSAgICAvLyAgYXJndW1lbnRzIChJU08gMTUuMyBwYXJhZ3JhcGhzIDE4ICYgMTkpLiAgQXBwYXJlbnRseSBjb25zdCBpc24ndAotICAgIC8vICByZXF1aXJlZC4gIFByb2dyYW1tZXJzIGFzayBmb3IgY29uc3QgYW55aG93LCBzbyB3ZSBzdXBwbHkgaXQuICBUaGF0J3MKLSAgICAvLyAgZWFzaWVyIHRoYW4gYW5zd2VyaW5nIHF1ZXN0aW9ucyBhYm91dCBub24tY29uc3QgdXNhZ2UuCi0KLSAgICBjYXRjaCggY2hhciBjb25zdCogZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDIHN0cmluZzogJXMiLCBleCApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6c3RyaW5nIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OnN0cmluZzogJXMiLCBleC5jX3N0cigpICk7IH0KLQotICAgIC8vICBzdGQ6OiBleGNlcHRpb25zCi0KLSAgICBjYXRjaCggc3RkOjpiYWRfYWxsb2MgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX2FsbG9jOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgIGNhdGNoKCBzdGQ6OmJhZF9jYXN0IGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF9jYXN0IiApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6YmFkX3R5cGVpZCBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfdHlwZWlkIiApOyB9Ci0jZWxzZQotICAgIGNhdGNoKCBzdGQ6OmJhZF9jYXN0IGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF9jYXN0OiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6YmFkX3R5cGVpZCBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfdHlwZWlkOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0jZW5kaWYKLQotICAgIGNhdGNoKCBzdGQ6OmJhZF9leGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX2V4Y2VwdGlvbjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OmRvbWFpbl9lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpkb21haW5fZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjppbnZhbGlkX2FyZ3VtZW50IGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmludmFsaWRfYXJndW1lbnQ6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpsZW5ndGhfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6bGVuZ3RoX2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6b3V0X29mX3JhbmdlIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6Om91dF9vZl9yYW5nZTogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OnJhbmdlX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OnJhbmdlX2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6b3ZlcmZsb3dfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6b3ZlcmZsb3dfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjp1bmRlcmZsb3dfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6dW5kZXJmbG93X2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6bG9naWNfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6bG9naWNfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpydW50aW1lX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OnJ1bnRpbWVfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpleGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6ZXhjZXB0aW9uOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0KLSAgICBjYXRjaCggbmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdCYgZXggKQotICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBuZG5ib29zdDo6ZXhjZXB0aW9uIiApOyB9Ci0KLSAgICAvLyBzeXN0ZW0gZXJyb3JzCi0gICAgY2F0Y2goIHN5c3RlbV9lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtX2Vycm9yIHByb2R1Y2VkIGJ5OiAlczogJXMiLCBleC5wX2ZhaWxlZF9leHAuZ2V0KCksIHN0ZDo6c3RyZXJyb3IoIGV4LnBfZXJybm8gKSApOyB9Ci0gICAgY2F0Y2goIGRldGFpbDo6c3lzdGVtX3NpZ25hbF9leGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICAgIHsgZXgucmVwb3J0KCk7IH0KLQotICAgIC8vIG5vdCBhbiBlcnJvcgotICAgIGNhdGNoKCBleGVjdXRpb25fYWJvcnRlZCBjb25zdCYgKQotICAgICAgeyByZXR1cm4gMDsgfQotCi0gICAgLy8ganVzdCBmb3J3YXJkCi0gICAgY2F0Y2goIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkKLSAgICAgIHsgdGhyb3c7IH0KLQotICAgIC8vIHVua25vd24gZXJyb3IKLSAgICBjYXRjaCggLi4uICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsICJ1bmtub3duIHR5cGUiICk7IH0KLQotICAgIHJldHVybiAwOyAgLy8gbmV2ZXIgcmVhY2hlZDsgc3VwcGxpZWQgdG8gcXVpZXQgY29tcGlsZXIgd2FybmluZ3MKLX0gLy8gZXhlY3V0ZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzeXN0ZW1fZXJyb3IgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN5c3RlbV9lcnJvcjo6c3lzdGVtX2Vycm9yKCBjaGFyIGNvbnN0KiBleHAgKQotI2lmZGVmIFVOREVSX0NFCi06IHBfZXJybm8oIEdldExhc3RFcnJvcigpICkKLSNlbHNlCi06IHBfZXJybm8oIGVycm5vICkKLSNlbmRpZgotLCBwX2ZhaWxlZF9leHAoIGV4cCApCi17fQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGV4ZWN1dGlvbl9leGNlcHRpb24gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWV4ZWN1dGlvbl9leGNlcHRpb246OmV4ZWN1dGlvbl9leGNlcHRpb24oIGVycm9yX2NvZGUgZWNfLCBjb25zdF9zdHJpbmcgd2hhdF9tc2dfLCBsb2NhdGlvbiBjb25zdCYgbG9jYXRpb25fICkKLTogbV9lcnJvcl9jb2RlKCBlY18gKQotLCBtX3doYXQoIHdoYXRfbXNnXy5lbXB0eSgpID8gTkROQk9PU1RfVEVTVF9MKCAidW5jYXVnaHQgZXhjZXB0aW9uLCBzeXN0ZW0gZXJyb3Igb3IgYWJvcnQgcmVxdWVzdGVkIiApIDogd2hhdF9tc2dfICkKLSwgbV9sb2NhdGlvbiggbG9jYXRpb25fICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4ZWN1dGlvbl9leGNlcHRpb246OmxvY2F0aW9uOjpsb2NhdGlvbiggY2hhciBjb25zdCogZmlsZV9uYW1lLCBzaXplX3QgbGluZV9udW0sIGNoYXIgY29uc3QqIGZ1bmMgKQotOiBtX2ZpbGVfbmFtZSggZmlsZV9uYW1lID8gZmlsZV9uYW1lIDogInVua25vd24gbG9jYXRpb24iICkKLSwgbV9saW5lX251bSggbGluZV9udW0gKQotLCBtX2Z1bmN0aW9uKCBmdW5jICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fTU9OSVRPUl9JUFBfMDEyMjA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ZyYW1ld29yay5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9mcmFtZXdvcmsuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGE5MGM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ZyYW1ld29yay5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTEgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgZnJhbWV3b3JrIEFQSSAtIG1haW4gZHJpdmVyIGZvciB0aGUgdGVzdAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSVBQXzAyMTAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZSQU1FV09SS19JUFBfMDIxMDA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGltZXIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8Y3RpbWU+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6dGltZTsgdXNpbmcgOjpzcmFuZDsgfQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICB0ZXN0X3N0YXJ0IGNhbGxzIHdyYXBwZXIgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1zdHJ1Y3QgdGVzdF9zdGFydF9jYWxsZXIgewotICAgIHRlc3Rfc3RhcnRfY2FsbGVyKCB0ZXN0X29ic2VydmVyKiB0bywgY291bnRlcl90IHRjX2Ftb3VudCApCi0gICAgOiBtX3RvKCB0byApCi0gICAgLCBtX3RjX2Ftb3VudCggdGNfYW1vdW50ICkKLSAgICB7fQotCi0gICAgaW50IG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgbV90by0+dGVzdF9zdGFydCggbV90Y19hbW91bnQgKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHRlc3Rfb2JzZXJ2ZXIqICBtX3RvOwotICAgIGNvdW50ZXJfdCAgICAgICBtX3RjX2Ftb3VudDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCB0ZXN0X2luaXRfY2FsbGVyIHsKLSAgICBleHBsaWNpdCAgICB0ZXN0X2luaXRfY2FsbGVyKCBpbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYyApIAotICAgIDogbV9pbml0X2Z1bmMoIGluaXRfZnVuYyApCi0gICAge30KLSAgICBpbnQgICAgICAgICBvcGVyYXRvcigpKCkKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotICAgICAgICBpZiggISgqbV9pbml0X2Z1bmMpKCkgKQotICAgICAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCAidGVzdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIiApOwotI2Vsc2UKLSAgICAgICAgdGVzdF9zdWl0ZSogIG1hbnVhbF90ZXN0X3VuaXRzID0gKCptX2luaXRfZnVuYykoIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5hcmdjLCBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkuYXJndiApOwotCi0gICAgICAgIGlmKCBtYW51YWxfdGVzdF91bml0cyApCi0gICAgICAgICAgICBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkuYWRkKCBtYW51YWxfdGVzdF91bml0cyApOwotI2VuZGlmCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGluaXRfdW5pdF90ZXN0X2Z1bmMgbV9pbml0X2Z1bmM7Ci19OwotCi19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgZnJhbWV3b3JrX2ltcGwgOiBwdWJsaWMgdGVzdF90cmVlX3Zpc2l0b3IgewotcHVibGljOgotICAgIGZyYW1ld29ya19pbXBsKCkKLSAgICA6IG1fbWFzdGVyX3Rlc3Rfc3VpdGUoIDAgKQotICAgICwgbV9jdXJyX3Rlc3RfY2FzZSggSU5WX1RFU1RfVU5JVF9JRCApCi0gICAgLCBtX25leHRfdGVzdF9jYXNlX2lkKCBNSU5fVEVTVF9DQVNFX0lEICkKLSAgICAsIG1fbmV4dF90ZXN0X3N1aXRlX2lkKCBNSU5fVEVTVF9TVUlURV9JRCApCi0gICAgLCBtX2lzX2luaXRpYWxpemVkKCBmYWxzZSApCi0gICAgLCBtX3Rlc3RfaW5fcHJvZ3Jlc3MoIGZhbHNlICkKLSAgICB7fQotCi0gICAgfmZyYW1ld29ya19pbXBsKCkgeyBjbGVhcigpOyB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgY2xlYXIoKQotICAgIHsKLSAgICAgICAgd2hpbGUoICFtX3Rlc3RfdW5pdHMuZW1wdHkoKSApIHsKLSAgICAgICAgICAgIHRlc3RfdW5pdF9zdG9yZTo6dmFsdWVfdHlwZSBjb25zdCYgdHUgICAgID0gKm1fdGVzdF91bml0cy5iZWdpbigpOwotICAgICAgICAgICAgdGVzdF91bml0KiAgICAgICAgICAgICAgICAgICAgICAgICB0dV9wdHIgPSB0dS5zZWNvbmQ7Ci0KLSAgICAgICAgICAgIC8vIHRoZSBkZWxldGUgd2lsbCBlcmFzZSB0aGlzIGVsZW1lbnQgZnJvbSBtYXAKLSAgICAgICAgICAgIGlmKCB1dF9kZXRhaWw6OnRlc3RfaWRfMl91bml0X3R5cGUoIHR1LnNlY29uZC0+cF9pZCApID09IHR1dF9zdWl0ZSApCi0gICAgICAgICAgICAgICAgZGVsZXRlICAodGVzdF9zdWl0ZSBjb25zdCopdHVfcHRyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRlbGV0ZSAgKHRlc3RfY2FzZSBjb25zdCopdHVfcHRyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCAgICAgICAgICAgIHNldF90dV9pZCggdGVzdF91bml0JiB0dSwgdGVzdF91bml0X2lkIGlkICkgeyB0dS5wX2lkLnZhbHVlID0gaWQ7IH0KLQotICAgIC8vIHRlc3RfdHJlZV92aXNpdG9yIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgICAgICB2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi0gICAgewotICAgICAgICBpZiggIXRjLmNoZWNrX2RlcGVuZGVuY2llcygpICkgewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgICAgICB0by0+dGVzdF91bml0X3NraXBwZWQoIHRjICk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF91bml0X3N0YXJ0KCB0YyApOwotCi0gICAgICAgIG5kbmJvb3N0Ojp0aW1lciB0Y190aW1lcjsKLSAgICAgICAgdGVzdF91bml0X2lkIGJrdXAgPSBtX2N1cnJfdGVzdF9jYXNlOwotICAgICAgICBtX2N1cnJfdGVzdF9jYXNlID0gdGMucF9pZDsKLSAgICAgICAgdW5pdF90ZXN0X21vbml0b3JfdDo6ZXJyb3JfbGV2ZWwgcnVuX3Jlc3VsdCA9IHVuaXRfdGVzdF9tb25pdG9yLmV4ZWN1dGVfYW5kX3RyYW5zbGF0ZSggdGMgKTsKLQotICAgICAgICB1bnNpZ25lZCBsb25nIGVsYXBzZWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPiggdGNfdGltZXIuZWxhcHNlZCgpICogMWU2ICk7Ci0KLSAgICAgICAgaWYoIHVuaXRfdGVzdF9tb25pdG9yLmlzX2NyaXRpY2FsX2Vycm9yKCBydW5fcmVzdWx0ICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgICAgIHRvLT50ZXN0X2Fib3J0ZWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF91bml0X2ZpbmlzaCggdGMsIGVsYXBzZWQgKTsKLQotICAgICAgICBtX2N1cnJfdGVzdF9jYXNlID0gYmt1cDsKLQotICAgICAgICBpZiggdW5pdF90ZXN0X21vbml0b3IuaXNfY3JpdGljYWxfZXJyb3IoIHJ1bl9yZXN1bHQgKSApCi0gICAgICAgICAgICB0aHJvdyB0ZXN0X2JlaW5nX2Fib3J0ZWQoKTsKLSAgICB9Ci0KLSAgICBib29sICAgICAgICAgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgaWYoICF0cy5jaGVja19kZXBlbmRlbmNpZXMoKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9za2lwcGVkKCB0cyApOwotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9zdGFydCggdHMgKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgdGVzdF9zdWl0ZV9maW5pc2goIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF91bml0X2ZpbmlzaCggdHMsIDAgKTsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICBzdHJ1Y3QgcHJpb3JpdHlfb3JkZXIgewotICAgICAgICBib29sIG9wZXJhdG9yKCkoIHRlc3Rfb2JzZXJ2ZXIqIGxocywgdGVzdF9vYnNlcnZlciogcmhzICkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChsaHMtPnByaW9yaXR5KCkgPCByaHMtPnByaW9yaXR5KCkpIHx8ICgobGhzLT5wcmlvcml0eSgpID09IHJocy0+cHJpb3JpdHkoKSkgJiYgKGxocyA8IHJocykpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgc3RkOjptYXA8dGVzdF91bml0X2lkLHRlc3RfdW5pdCo+ICAgICAgIHRlc3RfdW5pdF9zdG9yZTsKLSAgICB0eXBlZGVmIHN0ZDo6c2V0PHRlc3Rfb2JzZXJ2ZXIqLHByaW9yaXR5X29yZGVyPiBvYnNlcnZlcl9zdG9yZTsKLQotICAgIG1hc3Rlcl90ZXN0X3N1aXRlX3QqIG1fbWFzdGVyX3Rlc3Rfc3VpdGU7Ci0gICAgdGVzdF91bml0X2lkICAgIG1fY3Vycl90ZXN0X2Nhc2U7Ci0gICAgdGVzdF91bml0X3N0b3JlIG1fdGVzdF91bml0czsKLQotICAgIHRlc3RfdW5pdF9pZCAgICBtX25leHRfdGVzdF9jYXNlX2lkOwotICAgIHRlc3RfdW5pdF9pZCAgICBtX25leHRfdGVzdF9zdWl0ZV9pZDsKLQotICAgIGJvb2wgICAgICAgICAgICBtX2lzX2luaXRpYWxpemVkOwotICAgIGJvb2wgICAgICAgICAgICBtX3Rlc3RfaW5fcHJvZ3Jlc3M7Ci0KLSAgICBvYnNlcnZlcl9zdG9yZSAgbV9vYnNlcnZlcnM7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgewotCi0jaWYgZGVmaW5lZChfX0NZR1dJTl9fKQotZnJhbWV3b3JrX2ltcGwmIHNfZnJrX2ltcGwoKSB7IHN0YXRpYyBmcmFtZXdvcmtfaW1wbCogdGhlX2luc3QgPSAwOyBpZighdGhlX2luc3QpIHRoZV9pbnN0ID0gbmV3IGZyYW1ld29ya19pbXBsOyByZXR1cm4gKnRoZV9pbnN0OyB9Ci0jZWxzZQotZnJhbWV3b3JrX2ltcGwmIHNfZnJrX2ltcGwoKSB7IHN0YXRpYyBmcmFtZXdvcmtfaW1wbCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9Ci0jZW5kaWYKLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIGZyYW1ld29yayB7Ci0KLXZvaWQKLWluaXQoIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jLCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICBydW50aW1lX2NvbmZpZzo6aW5pdCggYXJnYywgYXJndiApOwotCi0gICAgLy8gc2V0IHRoZSBsb2cgbGV2ZWwgYW5kIGZvcm1hdAotICAgIHVuaXRfdGVzdF9sb2cuc2V0X3RocmVzaG9sZF9sZXZlbCggcnVudGltZV9jb25maWc6OmxvZ19sZXZlbCgpICk7Ci0gICAgdW5pdF90ZXN0X2xvZy5zZXRfZm9ybWF0KCBydW50aW1lX2NvbmZpZzo6bG9nX2Zvcm1hdCgpICk7Ci0KLSAgICAvLyBzZXQgdGhlIHJlcG9ydCBsZXZlbCBhbmQgZm9ybWF0Ci0gICAgcmVzdWx0c19yZXBvcnRlcjo6c2V0X2xldmVsKCBydW50aW1lX2NvbmZpZzo6cmVwb3J0X2xldmVsKCkgKTsKLSAgICByZXN1bHRzX3JlcG9ydGVyOjpzZXRfZm9ybWF0KCBydW50aW1lX2NvbmZpZzo6cmVwb3J0X2Zvcm1hdCgpICk7Ci0KLSAgICByZWdpc3Rlcl9vYnNlcnZlciggcmVzdWx0c19jb2xsZWN0b3IgKTsKLSAgICByZWdpc3Rlcl9vYnNlcnZlciggdW5pdF90ZXN0X2xvZyApOwotCi0gICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpzaG93X3Byb2dyZXNzKCkgKQotICAgICAgICByZWdpc3Rlcl9vYnNlcnZlciggcHJvZ3Jlc3NfbW9uaXRvciApOwotCi0gICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpkZXRlY3RfbWVtb3J5X2xlYWtzKCkgPiAwICkgewotICAgICAgICBkZWJ1Zzo6ZGV0ZWN0X21lbW9yeV9sZWFrcyggdHJ1ZSApOwotICAgICAgICBkZWJ1Zzo6YnJlYWtfbWVtb3J5X2FsbG9jKCBydW50aW1lX2NvbmZpZzo6ZGV0ZWN0X21lbW9yeV9sZWFrcygpICk7Ci0gICAgfQotCi0gICAgLy8gaW5pdCBtYXN0ZXIgdW5pdCB0ZXN0IHN1aXRlCi0gICAgbWFzdGVyX3Rlc3Rfc3VpdGUoKS5hcmdjID0gYXJnYzsKLSAgICBtYXN0ZXJfdGVzdF9zdWl0ZSgpLmFyZ3YgPSBhcmd2OwotCi0gICAgdHJ5IHsKLSAgICAgICAgbmRuYm9vc3Q6OmV4ZWN1dGlvbl9tb25pdG9yIGVtOwotCi0gICAgICAgIHV0X2RldGFpbDo6dGVzdF9pbml0X2NhbGxlciB0aWMoIGluaXRfZnVuYyApOwotCi0gICAgICAgIGVtLmV4ZWN1dGUoIHRpYyApOwotICAgIH0KLSAgICBjYXRjaCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKSAgewotICAgICAgICB0aHJvdyBzZXR1cF9lcnJvciggZXgud2hhdCgpICk7Ci0gICAgfQotCi0gICAgc19mcmtfaW1wbCgpLm1faXNfaW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1pc19pbml0aWFsaXplZCgpCi17Ci0gICAgcmV0dXJuICBzX2Zya19pbXBsKCkubV9pc19pbml0aWFsaXplZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X2Nhc2UqIHRjICkKLXsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggdGMtPnBfaWQgPT0gSU5WX1RFU1RfVU5JVF9JRCwgTkROQk9PU1RfVEVTVF9MKCAidGVzdCBjYXNlIGFscmVhZHkgcmVnaXN0ZXJlZCIgKSApOwotCi0gICAgdGVzdF91bml0X2lkIG5ld19pZCA9IHNfZnJrX2ltcGwoKS5tX25leHRfdGVzdF9jYXNlX2lkOwotCi0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIG5ld19pZCAhPSBNQVhfVEVTVF9DQVNFX0lELCBORE5CT09TVF9URVNUX0woICJ0b28gbWFueSB0ZXN0IGNhc2VzIiApICk7Ci0KLSAgICB0eXBlZGVmIGZyYW1ld29ya19pbXBsOjp0ZXN0X3VuaXRfc3RvcmU6OnZhbHVlX3R5cGUgbWFwX3ZhbHVlX3R5cGU7Ci0KLSAgICBzX2Zya19pbXBsKCkubV90ZXN0X3VuaXRzLmluc2VydCggbWFwX3ZhbHVlX3R5cGUoIG5ld19pZCwgdGMgKSApOwotICAgIHNfZnJrX2ltcGwoKS5tX25leHRfdGVzdF9jYXNlX2lkKys7Ci0KLSAgICBzX2Zya19pbXBsKCkuc2V0X3R1X2lkKCAqdGMsIG5ld19pZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3Rfc3VpdGUqIHRzICkKLXsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggdHMtPnBfaWQgPT0gSU5WX1RFU1RfVU5JVF9JRCwgTkROQk9PU1RfVEVTVF9MKCAidGVzdCBzdWl0ZSBhbHJlYWR5IHJlZ2lzdGVyZWQiICkgKTsKLQotICAgIHRlc3RfdW5pdF9pZCBuZXdfaWQgPSBzX2Zya19pbXBsKCkubV9uZXh0X3Rlc3Rfc3VpdGVfaWQ7Ci0KLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggbmV3X2lkICE9IE1BWF9URVNUX1NVSVRFX0lELCBORE5CT09TVF9URVNUX0woICJ0b28gbWFueSB0ZXN0IHN1aXRlcyIgKSApOwotCi0gICAgdHlwZWRlZiBmcmFtZXdvcmtfaW1wbDo6dGVzdF91bml0X3N0b3JlOjp2YWx1ZV90eXBlIG1hcF92YWx1ZV90eXBlOwotICAgIHNfZnJrX2ltcGwoKS5tX3Rlc3RfdW5pdHMuaW5zZXJ0KCBtYXBfdmFsdWVfdHlwZSggbmV3X2lkLCB0cyApICk7Ci0gICAgc19mcmtfaW1wbCgpLm1fbmV4dF90ZXN0X3N1aXRlX2lkKys7Ci0KLSAgICBzX2Zya19pbXBsKCkuc2V0X3R1X2lkKCAqdHMsIG5ld19pZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1kZXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF91bml0KiB0dSApCi17Ci0gICAgc19mcmtfaW1wbCgpLm1fdGVzdF91bml0cy5lcmFzZSggdHUtPnBfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY2xlYXIoKQotewotICAgIHNfZnJrX2ltcGwoKS5jbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZWdpc3Rlcl9vYnNlcnZlciggdGVzdF9vYnNlcnZlciYgdG8gKQotewotICAgIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycy5pbnNlcnQoICZ0byApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1kZXJlZ2lzdGVyX29ic2VydmVyKCB0ZXN0X29ic2VydmVyJiB0byApCi17Ci0gICAgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzLmVyYXNlKCAmdG8gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzZXRfb2JzZXJ2ZXJzKCkKLXsKLSAgICBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMuY2xlYXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbWFzdGVyX3Rlc3Rfc3VpdGVfdCYKLW1hc3Rlcl90ZXN0X3N1aXRlKCkKLXsKLSAgICBpZiggIXNfZnJrX2ltcGwoKS5tX21hc3Rlcl90ZXN0X3N1aXRlICkKLSAgICAgICAgc19mcmtfaW1wbCgpLm1fbWFzdGVyX3Rlc3Rfc3VpdGUgPSBuZXcgbWFzdGVyX3Rlc3Rfc3VpdGVfdDsKLQotICAgIHJldHVybiAqc19mcmtfaW1wbCgpLm1fbWFzdGVyX3Rlc3Rfc3VpdGU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfY2FzZSBjb25zdCYKLWN1cnJlbnRfdGVzdF9jYXNlKCkKLXsKLSAgICByZXR1cm4gZ2V0PHRlc3RfY2FzZT4oIHNfZnJrX2ltcGwoKS5tX2N1cnJfdGVzdF9jYXNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfdW5pdCYKLWdldCggdGVzdF91bml0X2lkIGlkLCB0ZXN0X3VuaXRfdHlwZSB0ICkKLXsKLSAgICB0ZXN0X3VuaXQqIHJlcyA9IHNfZnJrX2ltcGwoKS5tX3Rlc3RfdW5pdHNbaWRdOwotCi0gICAgaWYoIChyZXMtPnBfdHlwZSAmIHQpID09IDAgKQotICAgICAgICB0aHJvdyBpbnRlcm5hbF9lcnJvciggIkludmFsaWQgdGVzdCB1bml0IHR5cGUiICk7Ci0KLSAgICByZXR1cm4gKnJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcnVuKCB0ZXN0X3VuaXRfaWQgaWQsIGJvb2wgY29udGludWVfdGVzdCApCi17Ci0gICAgaWYoIGlkID09IElOVl9URVNUX1VOSVRfSUQgKQotICAgICAgICBpZCA9IG1hc3Rlcl90ZXN0X3N1aXRlKCkucF9pZDsKLQotICAgIHRlc3RfY2FzZV9jb3VudGVyIHRjYzsKLSAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGlkLCB0Y2MgKTsKLQotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCB0Y2MucF9jb3VudCAhPSAwICwgcnVudGltZV9jb25maWc6OnRlc3RfdG9fcnVuKCkuaXNfZW1wdHkoKSAKLSAgICAgICAgPyBORE5CT09TVF9URVNUX0woICJ0ZXN0IHRyZWUgaXMgZW1wdHkiICkgCi0gICAgICAgIDogTkROQk9PU1RfVEVTVF9MKCAibm8gdGVzdCBjYXNlcyBtYXRjaGluZyBmaWx0ZXIiICkgKTsKLQotICAgIGJvb2wgICAgY2FsbF9zdGFydF9maW5pc2ggICA9ICFjb250aW51ZV90ZXN0IHx8ICFzX2Zya19pbXBsKCkubV90ZXN0X2luX3Byb2dyZXNzOwotICAgIGJvb2wgICAgd2FzX2luX3Byb2dyZXNzICAgICA9IHNfZnJrX2ltcGwoKS5tX3Rlc3RfaW5fcHJvZ3Jlc3M7Ci0KLSAgICBzX2Zya19pbXBsKCkubV90ZXN0X2luX3Byb2dyZXNzID0gdHJ1ZTsKLQotICAgIGlmKCBjYWxsX3N0YXJ0X2ZpbmlzaCApIHsKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpleGVjdXRpb25fbW9uaXRvciBlbTsKLQotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBlbS5leGVjdXRlKCB1dF9kZXRhaWw6OnRlc3Rfc3RhcnRfY2FsbGVyKCB0bywgdGNjLnBfY291bnQgKSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2goIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkgIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBzZXR1cF9lcnJvciggZXgud2hhdCgpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2goIHJ1bnRpbWVfY29uZmlnOjpyYW5kb21fc2VlZCgpICkgewotICAgIGNhc2UgMDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOiB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzZWVkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Piggc3RkOjp0aW1lKCAwICkgKTsKLSAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVGVzdCBjYXNlcyBvcmRlciBpcyBzaHVmZmxlZCB1c2luZyBzZWVkOiAiIDw8IHNlZWQgKTsKLSAgICAgICAgc3RkOjpzcmFuZCggc2VlZCApOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVGVzdCBjYXNlcyBvcmRlciBpcyBzaHVmZmxlZCB1c2luZyBzZWVkOiAiIDw8IHJ1bnRpbWVfY29uZmlnOjpyYW5kb21fc2VlZCgpICk7Ci0gICAgICAgIHN0ZDo6c3JhbmQoIHJ1bnRpbWVfY29uZmlnOjpyYW5kb21fc2VlZCgpICk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBpZCwgc19mcmtfaW1wbCgpICk7Ci0gICAgfQotICAgIGNhdGNoKCB0ZXN0X2JlaW5nX2Fib3J0ZWQgY29uc3QmICkgewotICAgICAgICAvLyBhYm9ydCBhbHJlYWR5IHJlcG9ydGVkCi0gICAgfQotCi0gICAgaWYoIGNhbGxfc3RhcnRfZmluaXNoICkgewotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgIHRvLT50ZXN0X2ZpbmlzaCgpOwotICAgIH0KLQotICAgIHNfZnJrX2ltcGwoKS5tX3Rlc3RfaW5fcHJvZ3Jlc3MgPSB3YXNfaW5fcHJvZ3Jlc3M7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJ1biggdGVzdF91bml0IGNvbnN0KiB0dSwgYm9vbCBjb250aW51ZV90ZXN0ICkKLXsKLSAgICBydW4oIHR1LT5wX2lkLCBjb250aW51ZV90ZXN0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICkKLXsKLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzICkKLSAgICAgICAgdG8tPmFzc2VydGlvbl9yZXN1bHQoIHBhc3NlZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApCi0gICAgICAgIHRvLT5leGNlcHRpb25fY2F1Z2h0KCBleCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApCi0gICAgICAgIHRvLT50ZXN0X3VuaXRfYWJvcnRlZCggdHUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZnJhbWV3b3JrCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0lQUF8wMjEwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ludGVyYWN0aW9uX2Jhc2VkLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ludGVyYWN0aW9uX2Jhc2VkLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQxMmZhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9pbnRlcmFjdGlvbl9iYXNlZC5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRmFjaWxpdGllcyB0byBwZXJmb3JtIGludGVyYWN0aW9uLWJhc2VkIHRlc3RpbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfSU5URVJBQ1RJT05fQkFTRURfSVBQXzExMjEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0lQUF8xMTIxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLSNpZiBORE5CT09TVF9URVNUX1NVUFBPUlRfSU5URVJBQ1RJT05fVEVTVElORwotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L21vY2tfb2JqZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+ICAgICAvLyBmb3Igc2V0dXBfZXJyb3IKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPHN0cmluZz4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGl0ZXN0IHsgLy8gaW50ZXJhY3Rpb24tYmFzZWQgdGVzdGluZwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIG1hbmFnZXIgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW1hbmFnZXI6Om1hbmFnZXIoKQotewotICAgIGluc3RhbmNlX3B0ciggdHJ1ZSwgdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1tYW5hZ2VyOjp+bWFuYWdlcigpCi17Ci0gICAgaW5zdGFuY2VfcHRyKCB0cnVlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1tYW5hZ2VyKgotbWFuYWdlcjo6aW5zdGFuY2VfcHRyKCBib29sIHJlc2V0LCBtYW5hZ2VyKiBuZXdfcHRyICkKLXsKLSAgICBzdGF0aWMgbWFuYWdlciBkdW1teSggMCApOwotICAgIAotICAgIHN0YXRpYyBtYW5hZ2VyKiBwdHIgPSAmZHVtbXk7Ci0gICAgCi0gICAgaWYoIHJlc2V0ICkgewotICAgICAgICBpZiggbmV3X3B0ciApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBwdHIgPT0gJmR1bW15LCBORE5CT09TVF9URVNUX0woICJDYW4ndCBydW4gdHdvIGludGVyYXRpb24gYmFzZWQgdGVzdCB0aGUgc2FtZSB0aW1lIiApICk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBwdHIgPSBuZXdfcHRyOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHB0ciA9ICZkdW1teTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHB0cjsKLX0KLSAgICAKLX0gIC8vIG5hbWVzcGFjZSBpdGVzdAotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBub3QgYW5jaWVudCBjb21waWxlcgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9JUFBfMTEyMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9sb2dnZWRfZXhwZWN0YXRpb25zLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2xvZ2dlZF9leHBlY3RhdGlvbnMuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmU5NjFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2xvZ2dlZF9leHBlY3RhdGlvbnMuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBFTE9HX1ZFUiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRmFjaWxpdGllcyB0byBwZXJmb3JtIGludGVyYWN0aW9uIGJhc2VkIHRlc3RuZyBvZiBsb2dnZWQgZXhwZWN0YXRpb25zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0xPR0dFRF9FWFBFQ1RBVElPTlNfSVBQXzEyMDkwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0xPR0dFRF9FWFBFQ1RBVElPTlNfSVBQXzEyMDkwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotI2lmIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9JTlRFUkFDVElPTl9URVNUSU5HCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8ZnN0cmVhbT4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdXNpbmcgbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDsKLQotbmFtZXNwYWNlIGl0ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIGxvZ2dlZCBleHBlY3RhdGlvbiB0ZXN0IGltcGxlbWVudGF0aW9uICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZXhwZWN0YXRpb25zX2xvZ2dlciA6IGl0ZXN0OjptYW5hZ2VyIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGVjdGF0aW9uc19sb2dnZXIoIGNvbnN0X3N0cmluZyBsb2dfZmlsZV9uYW1lLCBib29sIHRlc3Rfb3JfbG9nICk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGRlY2lzaW9uX3BvaW50KCBjb25zdF9zdHJpbmcsIHN0ZDo6c2l6ZV90ICk7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCAgICBlbnRlcl9zY29wZSggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGFsbG9jYXRlZCggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgdm9pZCosIHN0ZDo6c2l6ZV90IHMgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGRhdGFfZmxvdyggY29uc3Rfc3RyaW5nIGQgKTsKLSAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIHJldHVybl92YWx1ZSggY29uc3Rfc3RyaW5nIGRlZmF1bHRfdmFsdWUgKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgYm9vbCAgICAgICAgICAgIG1fdGVzdF9vcl9sb2c7Ci0gICAgc3RkOjpmc3RyZWFtICAgIG1fbG9nX2ZpbGU7Ci19OwotCi1saXRlcmFsX3N0cmluZyBFTE9HX1ZFUiAgICAgPSAiMS4wIjsKLWxpdGVyYWxfc3RyaW5nIENMTU5fU0VQICAgICA9ICJ8IjsKLXN0YXRpYyBjb25zdCBjaGFyIExJTkVfU0VQICA9ICdcbic7Ci0KLWxpdGVyYWxfc3RyaW5nIEZJTEVfU0lHICAgICA9ICJFTE9HIjsKLWxpdGVyYWxfc3RyaW5nIFNDT1BFX1NJRyAgICA9ICJTQ09QRSI7Ci1saXRlcmFsX3N0cmluZyBBTExPQ19TSUcgICAgPSAiQUxMT0MiOwotbGl0ZXJhbF9zdHJpbmcgRFBfU0lHICAgICAgID0gIlNXSVRDSCI7Ci1saXRlcmFsX3N0cmluZyBEQVRBX1NJRyAgICAgPSAiREFUQSI7Ci1saXRlcmFsX3N0cmluZyBSRVRVUk5fU0lHICAgPSAiUkVUVVJOIjsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZXhwZWN0YXRpb25zX2xvZ2dlcjo6ZXhwZWN0YXRpb25zX2xvZ2dlciggY29uc3Rfc3RyaW5nIGxvZ19maWxlX25hbWUsIGJvb2wgdGVzdF9vcl9sb2cgKQotOiBtX3Rlc3Rfb3JfbG9nKCB0ZXN0X29yX2xvZyApCi17Ci0gICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCAhbG9nX2ZpbGVfbmFtZS5pc19lbXB0eSgpLCAiRW1wdHkgZXhwZWN0YXRpb25zIGxvZyBmaWxlIG5hbWUiICk7Ci0KLSAgICBtX2xvZ19maWxlLm9wZW4oIGxvZ19maWxlX25hbWUuYmVnaW4oKSwgdGVzdF9vcl9sb2cgPyBzdGQ6Omlvczo6aW4gOiBzdGQ6Omlvczo6b3V0ICk7Ci0KLSAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fbG9nX2ZpbGUuaXNfb3BlbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IG9wZW4gZXhwZWN0YXRpb25zIGxvZyBmaWxlICIgPDwgbG9nX2ZpbGVfbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGZvciAiIDw8ICggbV90ZXN0X29yX2xvZyA/ICJyZWFkaW5nIiA6ICJ3cml0aW5nIikgKTsKLQotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLQotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgRklMRV9TSUcgKTsgCi0gICAgICAgICsrdGl0OwotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgRUxPR19WRVIgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgRklMRV9TSUcgPDwgQ0xNTl9TRVAgPDwgRUxPR19WRVIgPDwgTElORV9TRVA7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjpkZWNpc2lvbl9wb2ludCggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCApCi17Ci0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIERQX1NJRyApOyArK3RpdDsKLSAgICAgICAgcmV0dXJuIGxleGljYWxfY2FzdDxib29sPiggKnRpdCApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9sb2dfZmlsZSA8PCBEUF9TSUcgPDwgQ0xNTl9TRVAgPDwgc3RkOjpib29sYWxwaGEgPDwgdHJ1ZSA8PCBMSU5FX1NFUDsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLXVuc2lnbmVkCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjplbnRlcl9zY29wZSggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKQotewotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBTQ09QRV9TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBzY29wZV9uYW1lICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IFNDT1BFX1NJRyA8PCBDTE1OX1NFUCA8PCBzY29wZV9uYW1lIDw8IExJTkVfU0VQOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLSAgICAKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4cGVjdGF0aW9uc19sb2dnZXI6OmFsbG9jYXRlZCggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgdm9pZCosIHN0ZDo6c2l6ZV90IHMgKQotewotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBBTExPQ19TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCBsZXhpY2FsX2Nhc3Q8c3RkOjpzaXplX3Q+KCAqdGl0ICksIHMgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgQUxMT0NfU0lHIDw8IENMTU5fU0VQIDw8IHMgPDwgTElORV9TRVA7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjpkYXRhX2Zsb3coIGNvbnN0X3N0cmluZyBkICkKLXsKLSAgICBpZiggbV90ZXN0X29yX2xvZyApIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6Z2V0bGluZSggbV9sb2dfZmlsZSwgbGluZSwgTElORV9TRVAgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyBjbGluZSggbGluZSApOwotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBjbGluZSwgKGRyb3BwZWRfZGVsaW1ldGVycyA9IENMTU5fU0VQLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSk7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgREFUQV9TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBkICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IERBVEFfU0lHIDw8IENMTU5fU0VQIDw8IGQgPDwgTElORV9TRVA7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6OnN0cmluZwotZXhwZWN0YXRpb25zX2xvZ2dlcjo6cmV0dXJuX3ZhbHVlKCBjb25zdF9zdHJpbmcgZGVmYXVsdF92YWx1ZSApCi17Ci0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIFJFVFVSTl9TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoIHRpdC0+YmVnaW4oKSwgdGl0LT5zaXplKCkgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgUkVUVVJOX1NJRyA8PCBDTE1OX1NFUCA8PCBkZWZhdWx0X3ZhbHVlIDw8IExJTkVfU0VQOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgbG9nZ2VkIGV4cGVjdGF0aW9ucyB0ZXN0ICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0RFQ0wKLWxvZ2dlZF9leHBlY3RhdGlvbnMoIGNhbGxiYWNrMDw+IGNvbnN0JiBGLCBjb25zdF9zdHJpbmcgbG9nX2ZpbGVfbmFtZSwgYm9vbCB0ZXN0X29yX2xvZyApCi17Ci0gICAgZXhwZWN0YXRpb25zX2xvZ2dlciBlbCggbG9nX2ZpbGVfbmFtZSwgdGVzdF9vcl9sb2cgKTsKLQotICAgIEYoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAgLy8gbmFtZXNwYWNlIGl0ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gbm90IGFuY2llbnQgY29tcGlsZXIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTE9HR0VEX0VYUEVDVEFUSU9OU19JUFBfMTIwOTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2JmZDFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBwbGFpbiByZXBvcnQgZm9ybWF0dGVyIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2N1c3RvbV9tYW5pcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb21hbmlwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpsb2cxMDsgfQotIyBlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLW5hbWVzcGFjZSB7Ci0KLXR5cGVkZWYgY3VzdG9tX21hbmlwPHN0cnVjdCBxdW90ZV90PiBxdW90ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0mCi1vcGVyYXRvcjw8KCBjdXN0b21fcHJpbnRlcjxxdW90ZT4gY29uc3QmIHAsIFQgY29uc3QmIHZhbHVlICkKLXsKLSAgICAqcCA8PCAnIicgPDwgdmFsdWUgPDwgJyInOwotCi0gICAgcmV0dXJuICpwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcmludF9zdGF0X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNvdW50ZXJfdCB2LCBjb3VudGVyX3QgaW5kZW50LCBjb3VudGVyX3QgdG90YWwsCi0gICAgICAgICAgICAgICAgICBjb25zdF9zdHJpbmcgbmFtZSwgY29uc3Rfc3RyaW5nIHJlcyApCi17Ci0gICAgaWYoIHYgPiAwICkgewotICAgICAgICBvc3RyIDw8IHN0ZDo6c2V0dyggaW5kZW50ICkgPDwgIiIKLSAgICAgICAgICAgICA8PCB2IDw8ICcgJyA8PCBuYW1lIDw8ICggdiAhPSAxID8gInMiIDogIiIgKTsKLSAgICAgICAgaWYoIHRvdGFsID4gMCApCi0gICAgICAgICAgICBvc3RyIDw8ICIgb3V0IG9mICIgPDwgdG90YWw7Ci0KLSAgICAgICAgb3N0ciA8PCAnICcgPDwgcmVzIDw8ICdcbic7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcGxhaW5fcmVwb3J0X2Zvcm1hdHRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG1faW5kZW50ID0gMDsKLSAgICBvc3RyIDw8ICdcbic7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyLmZsdXNoKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciA9IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHR1LnBfaWQgKTsKLQotICAgIGNvbnN0X3N0cmluZyBkZXNjcjsKLQotICAgIGlmKCB0ci5wYXNzZWQoKSApCi0gICAgICAgIGRlc2NyID0gInBhc3NlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9za2lwcGVkICkKLSAgICAgICAgZGVzY3IgPSAic2tpcHBlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9hYm9ydGVkICkKLSAgICAgICAgZGVzY3IgPSAiYWJvcnRlZCI7Ci0gICAgZWxzZQotICAgICAgICBkZXNjciA9ICJmYWlsZWQiOwotCi0gICAgb3N0ciA8PCBzdGQ6OnNldHcoIG1faW5kZW50ICkgPDwgIiIKLSAgICAgICAgIDw8ICJUZXN0ICIgPDwgKHR1LnBfdHlwZSA9PSB0dXRfY2FzZSA/ICJjYXNlICIgOiAic3VpdGUgIiApIDw8IHF1b3RlKCkgPDwgdHUucF9uYW1lIDw8ICcgJyA8PCBkZXNjcjsKLQotICAgIGlmKCB0ci5wX3NraXBwZWQgKSB7Ci0gICAgICAgIG9zdHIgPDwgIiBkdWUgdG8gIiA8PCAodHUuY2hlY2tfZGVwZW5kZW5jaWVzKCkgPyAidGVzdCBhYm9ydGluZ1xuIiA6ICJmYWlsZWQgZGVwZW5kYW5jeVxuIiApOwotICAgICAgICBtX2luZGVudCArPSAyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGNvdW50ZXJfdCB0b3RhbF9hc3NlcnRpb25zICA9IHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQgKyB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkOwotICAgIGNvdW50ZXJfdCB0b3RhbF90YyAgICAgICAgICA9IHRyLnBfdGVzdF9jYXNlc19wYXNzZWQgKyB0ci5wX3Rlc3RfY2FzZXNfZmFpbGVkICsgdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQ7Ci0KLSAgICBpZiggdG90YWxfYXNzZXJ0aW9ucyA+IDAgfHwgdG90YWxfdGMgPiAwICkKLSAgICAgICAgb3N0ciA8PCAiIHdpdGg6IjsKLQotICAgIG9zdHIgPDwgJ1xuJzsKLSAgICBtX2luZGVudCArPSAyOwotCi0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF9hc3NlcnRpb25zX3Bhc3NlZCwgbV9pbmRlbnQsIHRvdGFsX2Fzc2VydGlvbnMsICJhc3NlcnRpb24iLCAicGFzc2VkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQsIG1faW5kZW50LCB0b3RhbF9hc3NlcnRpb25zLCAiYXNzZXJ0aW9uIiwgImZhaWxlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzLCBtX2luZGVudCwgMCAgICAgICAgICAgICAgICwgImZhaWx1cmUiICAsICJleHBlY3RlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX3Rlc3RfY2FzZXNfcGFzc2VkLCBtX2luZGVudCwgdG90YWxfdGMgICAgICAgICwgInRlc3QgY2FzZSIsICJwYXNzZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF90ZXN0X2Nhc2VzX2ZhaWxlZCwgbV9pbmRlbnQsIHRvdGFsX3RjICAgICAgICAsICJ0ZXN0IGNhc2UiLCAiZmFpbGVkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfdGVzdF9jYXNlc19za2lwcGVkLCBtX2luZGVudCwgdG90YWxfdGMgICAgICAgLCAidGVzdCBjYXNlIiwgInNraXBwZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF90ZXN0X2Nhc2VzX2Fib3J0ZWQsIG1faW5kZW50LCB0b3RhbF90YyAgICAgICAsICJ0ZXN0IGNhc2UiLCAiYWJvcnRlZCIgKTsKLSAgICAKLSAgICBvc3RyIDw8ICdcbic7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mICkKLXsKLSAgICBtX2luZGVudCAtPSAyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wbGFpbl9yZXBvcnRfZm9ybWF0dGVyOjpkb19jb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXQgY29uc3QmIHR1LCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgPSByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0dS5wX2lkICk7Ci0gICAgCi0gICAgaWYoIHRyLnBhc3NlZCgpICkgewotICAgICAgICBvc3RyIDw8ICIqKiogTm8gZXJyb3JzIGRldGVjdGVkXG4iOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBpZiggdHIucF9za2lwcGVkICkgewotICAgICAgICBvc3RyIDw8ICIqKiogVGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgc2tpcHBlZCBkdWUgdG8gIiAKLSAgICAgICAgICAgICA8PCAodHUuY2hlY2tfZGVwZW5kZW5jaWVzKCkgPyAidGVzdCBhYm9ydGluZ1xuIiA6ICJmYWlsZWQgZGVwZW5kYW5jeVxuIiApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYoIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQgPT0gMCApIHsKLSAgICAgICAgb3N0ciA8PCAiKioqIGVycm9ycyBkZXRlY3RlZCBpbiB0ZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiAiIDw8IHF1b3RlKCkgPDwgdHUucF9uYW1lCi0gICAgICAgICAgICAgPDwgIjsgc2VlIHN0YW5kYXJkIG91dHB1dCBmb3IgZGV0YWlsc1xuIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvdW50ZXJfdCBudW1fZmFpbHVyZXMgPSB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkOwotICAgIAotICAgIG9zdHIgPDwgIioqKiAiIDw8IG51bV9mYWlsdXJlcyA8PCAiIGZhaWx1cmUiIDw8ICggbnVtX2ZhaWx1cmVzICE9IDEgPyAicyIgOiAiIiApIDw8ICIgZGV0ZWN0ZWQiOwotICAgIAotICAgIGlmKCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzID4gMCApCi0gICAgICAgIG9zdHIgPDwgIiAoIiA8PCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzIDw8ICIgZmFpbHVyZSIgPDwgKCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzICE9IDEgPyAicyIgOiAiIiApIDw8ICIgZXhwZWN0ZWQpIjsKLSAgICAKLSAgICBvc3RyIDw8ICIgaW4gdGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgIiA8PCBxdW90ZSgpIDw8IHR1LnBfbmFtZSA8PCAiXG4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QTEFJTl9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Byb2dyZXNzX21vbml0b3IuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcHJvZ3Jlc3NfbW9uaXRvci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNGVlODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcHJvZ3Jlc3NfbW9uaXRvci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgc2ltcGxlIHRleHQgYmFzZWQgcHJvZ3Jlc3MgbW9uaXRvcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJvZ3Jlc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9wdHIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHByb2dyZXNzX21vbml0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgcHJvZ3Jlc3NfbW9uaXRvcl9pbXBsIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHByb2dyZXNzX21vbml0b3JfaW1wbCgpCi0gICAgICAgIDogbV9zdHJlYW0oIHJ1bnRpbWVfY29uZmlnOjpsb2dfc2luaygpICkKLSAgICB7fQotCi0gICAgc3RkOjpvc3RyZWFtKiAgICAgICAgICAgICAgICBtX3N0cmVhbTsKLSAgICBzY29wZWRfcHRyPHByb2dyZXNzX2Rpc3BsYXk+IG1fcHJvZ3Jlc3NfZGlzcGxheTsKLX07Ci0KLXByb2dyZXNzX21vbml0b3JfaW1wbCYgc19wbV9pbXBsKCkgeyBzdGF0aWMgcHJvZ3Jlc3NfbW9uaXRvcl9pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJvZ3Jlc3NfbW9uaXRvcl90Ojp0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKQotewotICAgIHNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheS5yZXNldCggbmV3IHByb2dyZXNzX2Rpc3BsYXkoIHRlc3RfY2FzZXNfYW1vdW50LCAqc19wbV9pbXBsKCkubV9zdHJlYW0gKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcm9ncmVzc19tb25pdG9yX3Q6OnRlc3RfYWJvcnRlZCgpCi17Ci0gICAgKCpzX3BtX2ltcGwoKS5tX3Byb2dyZXNzX2Rpc3BsYXkpICs9IHNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheS0+Y291bnQoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJvZ3Jlc3NfbW9uaXRvcl90Ojp0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9jYXNlICkKLSAgICAgICAgKysoKnNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheSk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByb2dyZXNzX21vbml0b3JfdDo6dGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIHRlc3RfY2FzZV9jb3VudGVyIHRjYzsKLSAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHR1LCB0Y2MgKTsKLSAgICAKLSAgICAoKnNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheSkgKz0gdGNjLnBfY291bnQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByb2dyZXNzX21vbml0b3JfdDo6c2V0X3N0cmVhbSggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBzX3BtX2ltcGwoKS5tX3N0cmVhbSA9ICZvc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfY29sbGVjdG9yLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfY29sbGVjdG9yLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg2MmY2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9yZXN1bHRzX2NvbGxlY3Rvci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgVW5pdCBUZXN0IHJlc3VsdHMgY29sbGVjdGluZyBmYWNpbGl0eS4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSVBQXzAyMTEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0lQUF8wMjExMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtYXA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlc3RfcmVzdWx0czo6dGVzdF9yZXN1bHRzKCkKLXsKLSAgICBjbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi10ZXN0X3Jlc3VsdHM6OnBhc3NlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICAhcF9za2lwcGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICBwX3Rlc3RfY2FzZXNfZmFpbGVkID09IDAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICBwX2Fzc2VydGlvbnNfZmFpbGVkIDw9IHBfZXhwZWN0ZWRfZmFpbHVyZXMgICYmCi0gICAgICAgICAgICAhcF9hYm9ydGVkOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbnQKLXRlc3RfcmVzdWx0czo6cmVzdWx0X2NvZGUoKSBjb25zdAotewotICAgIHJldHVybiBwYXNzZWQoKSA/IGV4aXRfc3VjY2VzcwotICAgICAgICAgICA6ICggKHBfYXNzZXJ0aW9uc19mYWlsZWQgPiBwX2V4cGVjdGVkX2ZhaWx1cmVzIHx8IHBfc2tpcHBlZCApCi0gICAgICAgICAgICAgICAgICAgID8gZXhpdF90ZXN0X2ZhaWx1cmUKLSAgICAgICAgICAgICAgICAgICAgOiBleGl0X2V4Y2VwdGlvbl9mYWlsdXJlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3RfcmVzdWx0czo6b3BlcmF0b3IrPSggdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciApCi17Ci0gICAgcF9hc3NlcnRpb25zX3Bhc3NlZC52YWx1ZSAgICs9IHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQ7Ci0gICAgcF9hc3NlcnRpb25zX2ZhaWxlZC52YWx1ZSAgICs9IHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQ7Ci0gICAgcF90ZXN0X2Nhc2VzX3Bhc3NlZC52YWx1ZSAgICs9IHRyLnBfdGVzdF9jYXNlc19wYXNzZWQ7Ci0gICAgcF90ZXN0X2Nhc2VzX2ZhaWxlZC52YWx1ZSAgICs9IHRyLnBfdGVzdF9jYXNlc19mYWlsZWQ7Ci0gICAgcF90ZXN0X2Nhc2VzX3NraXBwZWQudmFsdWUgICs9IHRyLnBfdGVzdF9jYXNlc19za2lwcGVkOwotICAgIHBfdGVzdF9jYXNlc19hYm9ydGVkLnZhbHVlICArPSB0ci5wX3Rlc3RfY2FzZXNfYWJvcnRlZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF9yZXN1bHRzOjpjbGVhcigpCi17Ci0gICAgcF9hc3NlcnRpb25zX3Bhc3NlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF9hc3NlcnRpb25zX2ZhaWxlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF9leHBlY3RlZF9mYWlsdXJlcy52YWx1ZSAgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX3Bhc3NlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX2ZhaWxlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX3NraXBwZWQudmFsdWUgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX2Fib3J0ZWQudmFsdWUgICA9IDA7Ci0gICAgcF9hYm9ydGVkLnZhbHVlICAgICAgICAgICAgICA9IGZhbHNlOwotICAgIHBfc2tpcHBlZC52YWx1ZSAgICAgICAgICAgICAgPSB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVzdWx0c19jb2xsZWN0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPDEzMDApCi0KLW5hbWVzcGFjZSB7Ci0KLXN0cnVjdCByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsIHsKLSAgICBzdGQ6Om1hcDx0ZXN0X3VuaXRfaWQsdGVzdF9yZXN1bHRzPiBtX3Jlc3VsdHNfc3RvcmU7Ci19OwotCi1yZXN1bHRzX2NvbGxlY3Rvcl9pbXBsJiBzX3JjX2ltcGwoKSB7IHN0YXRpYyByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotI2Vsc2UKLQotc3RydWN0IHJlc3VsdHNfY29sbGVjdG9yX2ltcGwgewotICAgIHN0ZDo6bWFwPHRlc3RfdW5pdF9pZCx0ZXN0X3Jlc3VsdHM+IG1fcmVzdWx0c19zdG9yZTsKLX07Ci0KLXN0YXRpYyByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsJiBzX3JjX2ltcGwoKSB7IHN0YXRpYyByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3Rfc3RhcnQoIGNvdW50ZXJfdCApCi17Ci0gICAgc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlLmNsZWFyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfZmluaXNoKCkKLXsKLSAgICAvLyBkbyBub3RoaW5nCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfYWJvcnRlZCgpCi17Ci0gICAgLy8gZG8gbm90aGluZwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIC8vIGluaXQgdGVzdF9yZXN1bHRzIGVudHJ5Ci0gICAgdGVzdF9yZXN1bHRzJiB0ciA9IHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXTsKLQotICAgIHRyLmNsZWFyKCk7Ci0gICAgCi0gICAgdHIucF9leHBlY3RlZF9mYWlsdXJlcy52YWx1ZSAgICA9IHR1LnBfZXhwZWN0ZWRfZmFpbHVyZXM7Ci0gICAgdHIucF9za2lwcGVkLnZhbHVlICAgICAgICAgICAgICA9IGZhbHNlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1jbGFzcyByZXN1bHRzX2NvbGxlY3RfaGVscGVyIDogcHVibGljIHRlc3RfdHJlZV92aXNpdG9yIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCByZXN1bHRzX2NvbGxlY3RfaGVscGVyKCB0ZXN0X3Jlc3VsdHMmIHRyLCB0ZXN0X3VuaXQgY29uc3QmIHRzICkgOiBtX3RyKCB0ciApLCBtX3RzKCB0cyApIHt9Ci0KLSAgICB2b2lkICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmIHRjICkKLSAgICB7Ci0gICAgICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgPSByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0Yy5wX2lkICk7Ci0gICAgICAgIG1fdHIgKz0gdHI7Ci0KLSAgICAgICAgaWYoIHRyLnBhc3NlZCgpICkKLSAgICAgICAgICAgIG1fdHIucF90ZXN0X2Nhc2VzX3Bhc3NlZC52YWx1ZSsrOwotICAgICAgICBlbHNlIGlmKCB0ci5wX3NraXBwZWQgKQotICAgICAgICAgICAgbV90ci5wX3Rlc3RfY2FzZXNfc2tpcHBlZC52YWx1ZSsrOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmKCB0ci5wX2Fib3J0ZWQgKQotICAgICAgICAgICAgICAgIG1fdHIucF90ZXN0X2Nhc2VzX2Fib3J0ZWQudmFsdWUrKzsKLSAgICAgICAgICAgIG1fdHIucF90ZXN0X2Nhc2VzX2ZhaWxlZC52YWx1ZSsrOwotICAgICAgICB9Ci0gICAgfQotICAgIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgaWYoIG1fdHMucF9pZCA9PSB0cy5wX2lkICkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fdHIgKz0gcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdHMucF9pZCApOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHRlc3RfcmVzdWx0cyYgICAgICAgbV90cjsKLSAgICB0ZXN0X3VuaXQgY29uc3QmICAgIG1fdHM7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9zdWl0ZSApIHsKLSAgICAgICAgcmVzdWx0c19jb2xsZWN0X2hlbHBlciBjaCggc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW3R1LnBfaWRdLCB0dSApOwotCi0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdHUsIGNoICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICB0ZXN0X3Jlc3VsdHMgY29uc3QmIHRyID0gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW3R1LnBfaWRdOwotICAgICAgICAKLSAgICAgICAgYm9vbCBudW1fZmFpbHVyZXNfbWF0Y2ggPSB0ci5wX2Fib3J0ZWQgfHwgdHIucF9hc3NlcnRpb25zX2ZhaWxlZCA+PSB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzOwotICAgICAgICBpZiggIW51bV9mYWlsdXJlc19tYXRjaCApCi0gICAgICAgICAgICBORE5CT09TVF9URVNUX01FU1NBR0UoICJUZXN0IGNhc2UgIiA8PCB0dS5wX25hbWUgPDwgIiBoYXMgZmV3ZXIgZmFpbHVyZXMgdGhhbiBleHBlY3RlZCIgKTsKLQotICAgICAgICBib29sIGNoZWNrX2FueV9hc3NlcnRpb25zID0gdHIucF9hYm9ydGVkIHx8ICh0ci5wX2Fzc2VydGlvbnNfZmFpbGVkICE9IDApIHx8ICh0ci5wX2Fzc2VydGlvbnNfcGFzc2VkICE9IDApOwotICAgICAgICBpZiggIWNoZWNrX2FueV9hc3NlcnRpb25zICkKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggIlRlc3QgY2FzZSAiIDw8IHR1LnBfbmFtZSA8PCAiIGRpZCBub3QgY2hlY2sgYW55IGFzc2VydGlvbnMiICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgaWYoIHR1LnBfdHlwZSA9PSB0dXRfc3VpdGUgKSB7Ci0gICAgICAgIHRlc3RfY2FzZV9jb3VudGVyIHRjYzsKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0dSwgdGNjICk7Ci0KLSAgICAgICAgdGVzdF9yZXN1bHRzJiB0ciA9IHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXTsKLQotICAgICAgICB0ci5jbGVhcigpOwotICAgIAotICAgICAgICB0ci5wX3NraXBwZWQudmFsdWUgICAgICAgICAgICAgID0gdHJ1ZTsKLSAgICAgICAgdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQudmFsdWUgICA9IHRjYy5wX2NvdW50OwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6YXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKQotewotICAgIHRlc3RfcmVzdWx0cyYgdHIgPSBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbZnJhbWV3b3JrOjpjdXJyZW50X3Rlc3RfY2FzZSgpLnBfaWRdOwotCi0gICAgaWYoIHBhc3NlZCApCi0gICAgICAgIHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQudmFsdWUrKzsKLSAgICBlbHNlCi0gICAgICAgIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQudmFsdWUrKzsKLQotICAgIGlmKCB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkID09IDEgKQotICAgICAgICBmaXJzdF9mYWlsZWRfYXNzZXJ0aW9uKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OmV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkKLXsKLSAgICB0ZXN0X3Jlc3VsdHMmIHRyID0gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW2ZyYW1ld29yazo6Y3VycmVudF90ZXN0X2Nhc2UoKS5wX2lkXTsKLQotICAgIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQudmFsdWUrKzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXS5wX2Fib3J0ZWQudmFsdWUgPSB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3Jlc3VsdHMgY29uc3QmCi1yZXN1bHRzX2NvbGxlY3Rvcl90OjpyZXN1bHRzKCB0ZXN0X3VuaXRfaWQgaWQgKSBjb25zdAotewotICAgIHJldHVybiBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbaWRdOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0lQUF8wMjExMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfcmVwb3J0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19yZXBvcnRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NmZhODQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19yZXBvcnRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHJlc3VsdCByZXBvcnRpbmcgZmFjaWx0aWVzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvL2lvc19zdGF0ZS5ocHA+Ci10eXBlZGVmIDo6bmRuYm9vc3Q6OmlvOjppb3NfYmFzZV9hbGxfc2F2ZXIgaW9fc2F2ZXJfdHlwZTsKLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgcmVzdWx0c19yZXBvcnRlciB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcmVzdWx0IHJlcG9ydGVyIGltcGxlbWVudGF0aW9uICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotc3RydWN0IHJlc3VsdHNfcmVwb3J0ZXJfaW1wbCA6IHRlc3RfdHJlZV92aXNpdG9yIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHJlc3VsdHNfcmVwb3J0ZXJfaW1wbCgpCi0gICAgOiBtX291dHB1dCggcnVudGltZV9jb25maWc6OnJlcG9ydF9zaW5rKCkgKQotICAgICwgbV9zdHJlYW1fc3RhdGVfc2F2ZXIoIG5ldyBpb19zYXZlcl90eXBlKCAqbV9vdXRwdXQgKSApCi0gICAgLCBtX3JlcG9ydF9sZXZlbCggQ09ORklSTUFUSU9OX1JFUE9SVCApCi0gICAgLCBtX2Zvcm1hdHRlciggbmV3IG91dHB1dDo6cGxhaW5fcmVwb3J0X2Zvcm1hdHRlciApCi0gICAge30KLQotICAgIC8vIHRlc3QgdHJlZSB2aXNpdG9yIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRjLCAqbV9vdXRwdXQgKTsKLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0YywgKm1fb3V0cHV0ICk7Ci0gICAgfQotICAgIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRzLCAqbV9vdXRwdXQgKTsKLQotICAgICAgICBpZiggbV9yZXBvcnRfbGV2ZWwgPT0gREVUQUlMRURfUkVQT1JUICYmICFyZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0cy5wX2lkICkucF9za2lwcGVkICkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIG1fZm9ybWF0dGVyLT50ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdHMsICptX291dHB1dCApOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHZvaWQgICAgdGVzdF9zdWl0ZV9maW5pc2goIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLT50ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdHMsICptX291dHB1dCApOwotICAgIH0KLQotICAgIHR5cGVkZWYgc2NvcGVkX3B0cjxpb19zYXZlcl90eXBlPiBzYXZlcl9wdHI7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzdGQ6Om9zdHJlYW0qICAgICAgIG1fb3V0cHV0OwotICAgIHNhdmVyX3B0ciAgICAgICAgICAgbV9zdHJlYW1fc3RhdGVfc2F2ZXI7Ci0gICAgcmVwb3J0X2xldmVsICAgICAgICBtX3JlcG9ydF9sZXZlbDsKLSAgICBzY29wZWRfcHRyPGZvcm1hdD4gIG1fZm9ybWF0dGVyOwotfTsKLQotcmVzdWx0c19yZXBvcnRlcl9pbXBsJiBzX3JyX2ltcGwoKSB7IHN0YXRpYyByZXN1bHRzX3JlcG9ydGVyX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJlcG9ydCBjb25maWd1cmF0aW9uICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXNldF9sZXZlbCggcmVwb3J0X2xldmVsIGwgKQotewotICAgIGlmKCBsICE9IElOVl9SRVBPUlRfTEVWRUwgKQotICAgICAgICBzX3JyX2ltcGwoKS5tX3JlcG9ydF9sZXZlbCA9IGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgc19ycl9pbXBsKCkubV9vdXRwdXQgPSAmb3N0cjsKLSAgICBzX3JyX2ltcGwoKS5tX3N0cmVhbV9zdGF0ZV9zYXZlci5yZXNldCggbmV3IGlvX3NhdmVyX3R5cGUoIG9zdHIgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6Om9zdHJlYW0mCi1nZXRfc3RyZWFtKCkKLXsKLSAgICByZXR1cm4gKnNfcnJfaW1wbCgpLm1fb3V0cHV0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1zZXRfZm9ybWF0KCBvdXRwdXRfZm9ybWF0IHJmICkKLXsKLSAgICBzd2l0Y2goIHJmICkgewotICAgIGNhc2UgQ0xGOgotICAgICAgICBzZXRfZm9ybWF0KCBuZXcgb3V0cHV0OjpwbGFpbl9yZXBvcnRfZm9ybWF0dGVyICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MOgotICAgICAgICBzZXRfZm9ybWF0KCBuZXcgb3V0cHV0Ojp4bWxfcmVwb3J0X2Zvcm1hdHRlciApOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXNldF9mb3JtYXQoIHJlc3VsdHNfcmVwb3J0ZXI6OmZvcm1hdCogZiApCi17Ci0gICAgaWYoIGYgKQotICAgICAgICBzX3JyX2ltcGwoKS5tX2Zvcm1hdHRlci5yZXNldCggZiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICByZXBvcnQgaW5pdGlhdGlvbiAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLW1ha2VfcmVwb3J0KCByZXBvcnRfbGV2ZWwgbCwgdGVzdF91bml0X2lkIGlkICkKLXsKLSAgICBpZiggbCA9PSBJTlZfUkVQT1JUX0xFVkVMICkKLSAgICAgICAgbCA9IHNfcnJfaW1wbCgpLm1fcmVwb3J0X2xldmVsOwotCi0gICAgaWYoIGwgPT0gTk9fUkVQT1JUICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIGlkID09IElOVl9URVNUX1VOSVRfSUQgKQotICAgICAgICBpZCA9IGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX2lkOwotCi0gICAgc19ycl9pbXBsKCkubV9zdHJlYW1fc3RhdGVfc2F2ZXItPnJlc3RvcmUoKTsKLQotICAgIHJlcG9ydF9sZXZlbCBia3VwID0gc19ycl9pbXBsKCkubV9yZXBvcnRfbGV2ZWw7Ci0gICAgc19ycl9pbXBsKCkubV9yZXBvcnRfbGV2ZWwgPSBsOwotCi0gICAgc19ycl9pbXBsKCkubV9mb3JtYXR0ZXItPnJlc3VsdHNfcmVwb3J0X3N0YXJ0KCAqc19ycl9pbXBsKCkubV9vdXRwdXQgKTsKLQotICAgIHN3aXRjaCggbCApIHsKLSAgICBjYXNlIENPTkZJUk1BVElPTl9SRVBPUlQ6Ci0gICAgICAgIHNfcnJfaW1wbCgpLm1fZm9ybWF0dGVyLT5kb19jb25maXJtYXRpb25fcmVwb3J0KCBmcmFtZXdvcms6OmdldDx0ZXN0X3VuaXQ+KCBpZCApLCAqc19ycl9pbXBsKCkubV9vdXRwdXQgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTSE9SVF9SRVBPUlQ6Ci0gICAgY2FzZSBERVRBSUxFRF9SRVBPUlQ6Ci0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggaWQsIHNfcnJfaW1wbCgpICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHNfcnJfaW1wbCgpLm1fZm9ybWF0dGVyLT5yZXN1bHRzX3JlcG9ydF9maW5pc2goICpzX3JyX2ltcGwoKS5tX291dHB1dCApOwotICAgIHNfcnJfaW1wbCgpLm1fcmVwb3J0X2xldmVsID0gYmt1cDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcmVzdWx0c19yZXBvcnRlcgotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF9tYWluLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Rlc3RfbWFpbi5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMzE4M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF9tYWluLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTUtMjAwMS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtYWluIGZ1bmN0aW9uIGZvciBUZXN0IEV4ZWN1dGlvbiBNb25pdG9yLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZS5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4dGVybiBpbnQgdGVzdF9tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICk7ICAgIC8vIHByb3RvdHlwZSBmb3IgdXNlcidzIHRlc3RfbWFpbigpCi0KLXN0cnVjdCB0ZXN0X21haW5fY2FsbGVyIHsKLSAgICB0ZXN0X21haW5fY2FsbGVyKCBpbnQgYXJnYywgY2hhcioqIGFyZ3YgKSA6IG1fYXJnYyggYXJnYyApLCBtX2FyZ3YoIGFyZ3YgKSB7fQotICAgIAotICAgIHZvaWQgb3BlcmF0b3IoKSgpIHsKLSAgICAgICAgaW50IHRlc3RfbWFpbl9yZXN1bHQgPSB0ZXN0X21haW4oIG1fYXJnYywgbV9hcmd2ICk7Ci0KLSAgICAgICAgLy8gdHJhbnNsYXRlIGEgdGVzdF9tYWluIG5vbi1zdWNjZXNzIHJldHVybiBpbnRvIGEgdGVzdCBlcnJvcgotICAgICAgICBORE5CT09TVF9DSEVDSyggdGVzdF9tYWluX3Jlc3VsdCA9PSAwIHx8IHRlc3RfbWFpbl9yZXN1bHQgPT0gbmRuYm9vc3Q6OmV4aXRfc3VjY2VzcyApOwotICAgIH0KLSAgCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycyAgICAKLSAgICBpbnQgICAgICBtX2FyZ2M7Ci0gICAgY2hhcioqICAgbV9hcmd2OwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHRlc3QgbWFpbiAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi06Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnRlc3Rfc3VpdGUqCi1pbml0X3VuaXRfdGVzdF9zdWl0ZSggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6dW5pdF90ZXN0OwotICAgIAotICAgIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX25hbWUudmFsdWUgPSAiVGVzdCBQcm9ncmFtIjsKLSAgICAKLSAgICBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkuYWRkKCBORE5CT09TVF9URVNUX0NBU0UoIHRlc3RfbWFpbl9jYWxsZXIoIGFyZ2MsIGFyZ3YgKSApICk7Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF90b29scy5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X3Rvb2xzLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg4YWYzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X3Rvb2xzLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc3VwcGxpZXMgb2ZmbGluZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFRlc3QgVG9vbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4gLy8gZXhlY3V0aW9uX2Fib3J0ZWQKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxmc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPGNjdHlwZT4KLSNpbmNsdWRlIDxjd2NoYXI+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGlvcz4KLQotLy8gISEgc2hvdWxkIHdlIHVzZSAjaW5jbHVkZSA8Y3N0ZGFyZz4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotIyBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6c3RyY21wOyB1c2luZyA6OnN0cmxlbjsgdXNpbmcgOjppc3ByaW50OyB9Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NXQ0hBUiApCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjp3Y3NjbXA7IH0KLSNlbmRpZgotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdGVzdF90b29scyB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBwcmludF9sb2dfdmFsdWUgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotcHJpbnRfbG9nX3ZhbHVlPGNoYXI+OjpvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNoYXIgdCApCi17Ci0gICAgaWYoIChzdGQ6OmlzcHJpbnQpKCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0KSApICkKLSAgICAgICAgb3N0ciA8PCAnXCcnIDw8IHQgPDwgJ1wnJzsKLSAgICBlbHNlCi0gICAgICAgIG9zdHIgPDwgc3RkOjpoZXgKLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFCi0gICAgICAgIDw8IHN0ZDo6c2hvd2Jhc2UKLSNlbHNlCi0gICAgICAgIDw8ICIweCIKLSNlbmRpZgotICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KHQpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcmludF9sb2dfdmFsdWU8dW5zaWduZWQgY2hhcj46Om9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgdW5zaWduZWQgY2hhciB0ICkKLXsKLSAgICBvc3RyIDw8IHN0ZDo6aGV4Ci0gICAgICAgIC8vIHNob3diYXNlIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBuZXcgc3R5bGUgc3RyZWFtczoKLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFCi0gICAgICAgIDw8IHN0ZDo6c2hvd2Jhc2UKLSNlbHNlCi0gICAgICAgIDw8ICIweCIKLSNlbmRpZgotICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KHQpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcmludF9sb2dfdmFsdWU8Y2hhciBjb25zdCo+OjpvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNoYXIgY29uc3QqIHQgKQotewotICAgIG9zdHIgPDwgKCB0ID8gdCA6ICJudWxsIHN0cmluZyIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJpbnRfbG9nX3ZhbHVlPHdjaGFyX3QgY29uc3QqPjo6b3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCB3Y2hhcl90IGNvbnN0KiB0ICkKLXsKLSAgICBvc3RyIDw8ICggdCA/IHQgOiBMIm51bGwgc3RyaW5nIiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgdHRfZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgVE9PTCBCT1ggSW1wbGVtZW50YXRpb24gICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi11c2luZyA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbTsKLQotYm9vbAotY2hlY2tfaW1wbCggcHJlZGljYXRlX3Jlc3VsdCBjb25zdCYgcHIsIGxhenlfb3N0cmVhbSBjb25zdCYgY2hlY2tfZGVzY3IsCi0gICAgICAgICAgICBjb25zdF9zdHJpbmcgZmlsZV9uYW1lLCBzdGQ6OnNpemVfdCBsaW5lX251bSwKLSAgICAgICAgICAgIHRvb2xfbGV2ZWwgdGwsIGNoZWNrX3R5cGUgY3QsCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBudW1fb2ZfYXJncywgLi4uICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgdW5pdF90ZXN0OwotCi0gICAgaWYoICFmcmFtZXdvcms6OmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoICJjYW4ndCB1c2UgdGVzdGluZyB0b29scyBiZWZvcmUgZnJhbWV3b3JrIGlzIGluaXRpYWxpemVkIiApOwotCi0gICAgaWYoICEhcHIgKQotICAgICAgICB0bCA9IFBBU1M7Ci0KLSAgICBsb2dfbGV2ZWwgICAgbGw7Ci0gICAgY2hhciBjb25zdCogIHByZWZpeDsKLSAgICBjaGFyIGNvbnN0KiAgc3VmZml4OwotICAgICAgIAotICAgIHN3aXRjaCggdGwgKSB7Ci0gICAgY2FzZSBQQVNTOgotICAgICAgICBsbCAgICAgID0gbG9nX3N1Y2Nlc3NmdWxfdGVzdHM7Ci0gICAgICAgIHByZWZpeCAgPSAiY2hlY2sgIjsKLSAgICAgICAgc3VmZml4ICA9ICIgcGFzc2VkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXQVJOOgotICAgICAgICBsbCAgICAgID0gbG9nX3dhcm5pbmdzOwotICAgICAgICBwcmVmaXggID0gImNvbmRpdGlvbiAiOwotICAgICAgICBzdWZmaXggID0gIiBpcyBub3Qgc2F0aXNmaWVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDSEVDSzoKLSAgICAgICAgbGwgICAgICA9IGxvZ19hbGxfZXJyb3JzOwotICAgICAgICBwcmVmaXggID0gImNoZWNrICI7Ci0gICAgICAgIHN1ZmZpeCAgPSAiIGZhaWxlZCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUkVRVUlSRToKLSAgICAgICAgbGwgICAgICA9IGxvZ19mYXRhbF9lcnJvcnM7Ci0gICAgICAgIHByZWZpeCAgPSAiY3JpdGljYWwgY2hlY2sgIjsKLSAgICAgICAgc3VmZml4ICA9ICIgZmFpbGVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3dpdGNoKCBjdCApIHsKLSAgICBjYXNlIENIRUNLX1BSRUQ6Ci0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbGwgPDwgcHJlZml4IDw8IGNoZWNrX2Rlc2NyIDw8IHN1ZmZpeDsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotICAgICAgICAKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDSEVDS19NU0c6Ci0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgPDwgbGw7Ci0gICAgICAgIAotICAgICAgICBpZiggdGwgPT0gUEFTUyApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHByZWZpeCA8PCAiJyIgPDwgY2hlY2tfZGVzY3IgPDwgIiciIDw8IHN1ZmZpeDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCBjaGVja19kZXNjcjsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ0hFQ0tfRVFVQUw6IAotICAgIGNhc2UgQ0hFQ0tfTkU6IAotICAgIGNhc2UgQ0hFQ0tfTFQ6IAotICAgIGNhc2UgQ0hFQ0tfTEU6IAotICAgIGNhc2UgQ0hFQ0tfR1Q6IAotICAgIGNhc2UgQ0hFQ0tfR0U6IHsKLSAgICAgICAgc3RhdGljIGNoYXIgY29uc3QqIGNoZWNrX3N0ciBbXSA9IHsgIiA9PSAiLCAiICE9ICIsICIgPCAiICwgIiA8PSAiLCAiID4gIiAsICIgPj0gIiB9OwotICAgICAgICBzdGF0aWMgY2hhciBjb25zdCogcmV2ZXJfc3RyIFtdID0geyAiICE9ICIsICIgPT0gIiwgIiA+PSAiLCAiID4gIiAsICIgPD0gIiwgIiA8ICIgIH07Ci0KLSAgICAgICAgdmFfbGlzdCBhcmdzOwotCi0gICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotICAgICAgICBjaGFyIGNvbnN0KiAgICAgICAgIGFyZzFfZGVzY3IgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIGFyZzFfdmFsICAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMl9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMl92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIAotICAgICAgICAgICAgICAgICAgICAgIDw8IGxsIDw8IHByZWZpeCA8PCBhcmcxX2Rlc2NyIDw8IGNoZWNrX3N0cltjdC1DSEVDS19FUVVBTF0gPDwgYXJnMl9kZXNjciA8PCBzdWZmaXg7Ci0KLSAgICAgICAgaWYoIHRsICE9IFBBU1MgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiIFsiIDw8ICphcmcxX3ZhbCA8PCByZXZlcl9zdHJbY3QtQ0hFQ0tfRVFVQUxdIDw8ICphcmcyX3ZhbCA8PCAiXSIgOwotCi0gICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQ0hFQ0tfQ0xPU0U6Ci0gICAgY2FzZSBDSEVDS19DTE9TRV9GUkFDVElPTjogewotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMV9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMV92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgY2hhciBjb25zdCogICAgICAgICBhcmcyX2Rlc2NyICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiBhcmcyX3ZhbCAgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotICAgICAgICAvKiB0b2xlcl9kZXNjciA9ICovICAgICAgICAgICAgICAgdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIHRvbGVyX3ZhbCAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSA8PCBsbDsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICJkaWZmZXJlbmNleyIgPDwgcHIubWVzc2FnZSgpIDw8IChjdCA9PSBDSEVDS19DTE9TRSA/ICIlIiA6ICIiKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9IGJldHdlZW4gIiA8PCBhcmcxX2Rlc2NyIDw8ICJ7IiA8PCAqYXJnMV92YWwKLSAgICAgICAgICAgICAgICAgICAgICA8PCAifSBhbmQgIiAgICAgICAgICAgICAgIDw8IGFyZzJfZGVzY3IgPDwgInsiIDw8ICphcmcyX3ZhbAotICAgICAgICAgICAgICAgICAgICAgIDw8ICggdGwgPT0gUEFTUyA/ICJ9IGRvZXNuJ3QgZXhjZWVkICIgOiAifSBleGNlZWRzICIgKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICp0b2xlcl92YWw7Ci0gICAgICAgIGlmKCBjdCA9PSBDSEVDS19DTE9TRSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIlIjsKLQotICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDSEVDS19TTUFMTDogewotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMV9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMV92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgLyogdG9sZXJfZGVzY3IgPSAqLyAgICAgICAgICAgICAgIHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiB0b2xlcl92YWwgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgPDwgbGw7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiYWJzb2x1dGUgdmFsdWUgb2YgIiA8PCBhcmcxX2Rlc2NyIDw8ICJ7IiA8PCAqYXJnMV92YWwgPDwgIn0iIAotICAgICAgICAgICAgICAgICAgICAgIDw8ICggdGwgPT0gUEFTUyA/ICIgZG9lc24ndCBleGNlZWQgIiA6ICIgZXhjZWVkcyAiICkKLSAgICAgICAgICAgICAgICAgICAgICA8PCAqdG9sZXJfdmFsOwotCi0gICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQ0hFQ0tfUFJFRF9XSVRIX0FSR1M6IHsKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSAKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggPDwgY2hlY2tfZGVzY3I7Ci0KLSAgICAgICAgLy8gcHJpbnQgcHJlZGljYXRlIGNhbGwgZGVzY3JpcHRpb24KLSAgICAgICAgewotICAgICAgICAgICAgdmFfbGlzdCBhcmdzOwotICAgICAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0KLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiggIjsKLSAgICAgICAgICAgIGZvciggc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBudW1fb2ZfYXJnczsgKytpICkgewotICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICAgICAgICAgIHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOyAvLyBza2lwIGFyZ3VtZW50IHZhbHVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmKCBpICE9IG51bV9vZl9hcmdzLTEgKQotICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIsICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIgKSIgPDwgc3VmZml4OwotICAgICAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBpZiggdGwgIT0gUEFTUyApIHsKLSAgICAgICAgICAgIHZhX2xpc3QgYXJnczsKLSAgICAgICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIgZm9yICggIjsKLSAgICAgICAgICAgIGZvciggc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBudW1fb2ZfYXJnczsgKytpICkgewotICAgICAgICAgICAgICAgIHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsgLy8gc2tpcCBhcmd1bWVudCBkZXNjcmlwdGlvbjsgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICp2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiggaSAhPSBudW1fb2ZfYXJncy0xICkKLSAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLCAiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiICkiOwotICAgICAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIH0KLSAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQ0hFQ0tfRVFVQUxfQ09MTDogewotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIGxlZnRfYmVnaW5fZGVzY3IgICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIGxlZnRfZW5kX2Rlc2NyICAgICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIHJpZ2h0X2JlZ2luX2Rlc2NyICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIHJpZ2h0X2VuZF9kZXNjciAgICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSAKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggCi0gICAgICAgICAgICAgICAgICAgICAgPDwgInsgIiA8PCBsZWZ0X2JlZ2luX2Rlc2NyICA8PCAiLCAiIDw8IGxlZnRfZW5kX2Rlc2NyICA8PCAiIH0gPT0geyAiIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcmlnaHRfYmVnaW5fZGVzY3IgPDwgIiwgIiA8PCByaWdodF9lbmRfZGVzY3IgPDwgIiB9IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHN1ZmZpeDsKLQotICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENIRUNLX0JJVFdJU0VfRVFVQUw6IHsKLSAgICAgICAgdmFfbGlzdCBhcmdzOwotCi0gICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotICAgICAgICBjaGFyIGNvbnN0KiBsZWZ0X2Rlc2NyICAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBjaGFyIGNvbnN0KiByaWdodF9kZXNjciAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggPDwgbGVmdF9kZXNjciAgPDwgIiA9Lj0gIiA8PCByaWdodF9kZXNjciA8PCBzdWZmaXg7Ci0KLSAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIHN3aXRjaCggdGwgKSB7Ci0gICAgY2FzZSBQQVNTOgotICAgICAgICBmcmFtZXdvcms6OmFzc2VydGlvbl9yZXN1bHQoIHRydWUgKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIFdBUk46Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNhc2UgQ0hFQ0s6Ci0gICAgICAgIGZyYW1ld29yazo6YXNzZXJ0aW9uX3Jlc3VsdCggZmFsc2UgKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICBjYXNlIFJFUVVJUkU6Ci0gICAgICAgIGZyYW1ld29yazo6YXNzZXJ0aW9uX3Jlc3VsdCggZmFsc2UgKTsKLQotICAgICAgICBmcmFtZXdvcms6OnRlc3RfdW5pdF9hYm9ydGVkKCBmcmFtZXdvcms6OmN1cnJlbnRfdGVzdF9jYXNlKCkgKTsKLQotICAgICAgICB0aHJvdyBleGVjdXRpb25fYWJvcnRlZCgpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1lcXVhbF9pbXBsKCBjaGFyIGNvbnN0KiBsZWZ0LCBjaGFyIGNvbnN0KiByaWdodCApCi17Ci0gICAgcmV0dXJuIChsZWZ0ICYmIHJpZ2h0KSA/IHN0ZDo6c3RyY21wKCBsZWZ0LCByaWdodCApID09IDAgOiAobGVmdCA9PSByaWdodCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1dDSEFSICkKLQotcHJlZGljYXRlX3Jlc3VsdAotZXF1YWxfaW1wbCggd2NoYXJfdCBjb25zdCogbGVmdCwgd2NoYXJfdCBjb25zdCogcmlnaHQgKQotewotICAgIHJldHVybiAobGVmdCAmJiByaWdodCkgPyBzdGQ6Ondjc2NtcCggbGVmdCwgcmlnaHQgKSA9PSAwIDogKGxlZnQgPT0gcmlnaHQpOwotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX0NXQ0hBUiApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWlzX2RlZmluZWRfaW1wbCggY29uc3Rfc3RyaW5nIHN5bWJvbF9uYW1lLCBjb25zdF9zdHJpbmcgc3ltYm9sX3ZhbHVlICkKLXsKLSAgICBzeW1ib2xfdmFsdWUudHJpbV9sZWZ0KCAyICk7Ci0gICAgcmV0dXJuIHN5bWJvbF9uYW1lICE9IHN5bWJvbF92YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdHRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG91dHB1dF90ZXN0X3N0cmVhbSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IG91dHB1dF90ZXN0X3N0cmVhbTo6SW1wbAotewotICAgIHN0ZDo6ZnN0cmVhbSAgICBtX3BhdHRlcm47Ci0gICAgYm9vbCAgICAgICAgICAgIG1fbWF0Y2hfb3Jfc2F2ZTsKLSAgICBib29sICAgICAgICAgICAgbV90ZXh0X29yX2JpbmFyeTsKLSAgICBzdGQ6OnN0cmluZyAgICAgbV9zeW5jZWRfc3RyaW5nOwotCi0gICAgY2hhciAgICAgICAgICAgIGdldF9jaGFyKCkKLSAgICB7Ci0gICAgICAgIGNoYXIgcmVzOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBtX3BhdHRlcm4uZ2V0KCByZXMgKTsKLSAgICAgICAgfSB3aGlsZSggbV90ZXh0X29yX2JpbmFyeSAmJiByZXMgPT0gJ1xyJyAmJiAhbV9wYXR0ZXJuLmZhaWwoKSAmJiAhbV9wYXR0ZXJuLmVvZigpICk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgY2hlY2tfYW5kX2ZpbGwoIHByZWRpY2F0ZV9yZXN1bHQmIHJlcyApCi0gICAgewotICAgICAgICBpZiggIXJlcy5wX3ByZWRpY2F0ZV92YWx1ZSApCi0gICAgICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJPdXRwdXQgY29udGVudDogXCIiIDw8IG1fc3luY2VkX3N0cmluZyA8PCAnXCInOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW91dHB1dF90ZXN0X3N0cmVhbTo6b3V0cHV0X3Rlc3Rfc3RyZWFtKCBjb25zdF9zdHJpbmcgcGF0dGVybl9maWxlX25hbWUsIGJvb2wgbWF0Y2hfb3Jfc2F2ZSwgYm9vbCB0ZXh0X29yX2JpbmFyeSApCi06IG1fcGltcGwoIG5ldyBJbXBsICkKLXsKLSAgICBpZiggIXBhdHRlcm5fZmlsZV9uYW1lLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIHN0ZDo6aW9zOjpvcGVubW9kZSBtID0gbWF0Y2hfb3Jfc2F2ZSA/IHN0ZDo6aW9zOjppbiA6IHN0ZDo6aW9zOjpvdXQ7Ci0gICAgICAgIGlmKCAhdGV4dF9vcl9iaW5hcnkgKQotICAgICAgICAgICAgbSB8PSBzdGQ6Omlvczo6YmluYXJ5OwotCi0gICAgICAgIG1fcGltcGwtPm1fcGF0dGVybi5vcGVuKCBwYXR0ZXJuX2ZpbGVfbmFtZS5iZWdpbigpLCBtICk7Ci0KLSAgICAgICAgTkROQk9PU1RfV0FSTl9NRVNTQUdFKCBtX3BpbXBsLT5tX3BhdHRlcm4uaXNfb3BlbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3Qgb3BlbiBwYXR0ZXJuIGZpbGUgIiA8PCBwYXR0ZXJuX2ZpbGVfbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGZvciAiIDw8IChtYXRjaF9vcl9zYXZlID8gInJlYWRpbmciIDogIndyaXRpbmciKSApOwotICAgIH0KLQotICAgIG1fcGltcGwtPm1fbWF0Y2hfb3Jfc2F2ZSAgICA9IG1hdGNoX29yX3NhdmU7Ci0gICAgbV9waW1wbC0+bV90ZXh0X29yX2JpbmFyeSAgID0gdGV4dF9vcl9iaW5hcnk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW91dHB1dF90ZXN0X3N0cmVhbTo6fm91dHB1dF90ZXN0X3N0cmVhbSgpCi17Ci0gICAgZGVsZXRlIG1fcGltcGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQKLW91dHB1dF90ZXN0X3N0cmVhbTo6aXNfZW1wdHkoIGJvb2wgZmx1c2hfc3RyZWFtICkKLXsKLSAgICBzeW5jKCk7Ci0KLSAgICByZXN1bHRfdHlwZSByZXMoIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5lbXB0eSgpICk7Ci0KLSAgICBtX3BpbXBsLT5jaGVja19hbmRfZmlsbCggcmVzICk7Ci0KLSAgICBpZiggZmx1c2hfc3RyZWFtICkKLSAgICAgICAgZmx1c2goKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQKLW91dHB1dF90ZXN0X3N0cmVhbTo6Y2hlY2tfbGVuZ3RoKCBzdGQ6OnNpemVfdCBsZW5ndGhfLCBib29sIGZsdXNoX3N0cmVhbSApCi17Ci0gICAgc3luYygpOwotCi0gICAgcmVzdWx0X3R5cGUgcmVzKCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCkgPT0gbGVuZ3RoXyApOwotCi0gICAgbV9waW1wbC0+Y2hlY2tfYW5kX2ZpbGwoIHJlcyApOwotCi0gICAgaWYoIGZsdXNoX3N0cmVhbSApCi0gICAgICAgIGZsdXNoKCk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1vdXRwdXRfdGVzdF9zdHJlYW06OmlzX2VxdWFsKCBjb25zdF9zdHJpbmcgYXJnLCBib29sIGZsdXNoX3N0cmVhbSApCi17Ci0gICAgc3luYygpOwotCi0gICAgcmVzdWx0X3R5cGUgcmVzKCBjb25zdF9zdHJpbmcoIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZyApID09IGFyZyApOwotCi0gICAgbV9waW1wbC0+Y2hlY2tfYW5kX2ZpbGwoIHJlcyApOwotCi0gICAgaWYoIGZsdXNoX3N0cmVhbSApCi0gICAgICAgIGZsdXNoKCk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1vdXRwdXRfdGVzdF9zdHJlYW06Om1hdGNoX3BhdHRlcm4oIGJvb2wgZmx1c2hfc3RyZWFtICkKLXsKLSAgICBzeW5jKCk7Ci0KLSAgICByZXN1bHRfdHlwZSByZXN1bHQoIHRydWUgKTsKLQotICAgIGlmKCAhbV9waW1wbC0+bV9wYXR0ZXJuLmlzX29wZW4oKSApIHsKLSAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5tZXNzYWdlKCkgPDwgIlBhdHRlcm4gZmlsZSBjYW4ndCBiZSBvcGVuZWQhIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmKCBtX3BpbXBsLT5tX21hdGNoX29yX3NhdmUgKSB7Ci0gICAgICAgICAgICBmb3IgKCBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGkgPSAwOyBpIDwgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpOyArK2kgKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBjID0gbV9waW1wbC0+Z2V0X2NoYXIoKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdCA9ICFtX3BpbXBsLT5tX3BhdHRlcm4uZmFpbCgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgIW1fcGltcGwtPm1fcGF0dGVybi5lb2YoKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAobV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nW2ldID09IGMpOwotCi0gICAgICAgICAgICAgICAgaWYoICFyZXN1bHQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgc3VmZml4X3NpemUgID0gKHN0ZDo6bWluKSggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpIC0gaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc6OnNpemVfdHlwZT4oNSkgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyB0cnkgdG8gbG9nIGFyZWEgYXJvdW5kIHRoZSBtaXNtYXRjaAotICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZSgpIDw8ICJNaXNtYXRjaCBhdCBwb3NpdGlvbiAiIDw8IGkgPDwgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIi4uLiIgPDwgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLnN1YnN0ciggaSwgc3VmZml4X3NpemUgKSA8PCAiLi4uIiA8PCAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLi4uIiA8PCBjOwotCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY291bnRlciA9IHN1ZmZpeF9zaXplOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSggLS1jb3VudGVyICkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gbV9waW1wbC0+Z2V0X2NoYXIoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIG1fcGltcGwtPm1fcGF0dGVybi5mYWlsKCkgfHwgbV9waW1wbC0+bV9wYXR0ZXJuLmVvZigpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1lc3NhZ2UoKSA8PCBjOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1lc3NhZ2UoKSA8PCAiLi4uIjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBza2lwIHJlc3Qgb2YgdGhlIGJ5dGVzLiBNYXkgaGVscCBmb3IgZnVydGhlciBtYXRjaGluZwotICAgICAgICAgICAgICAgICAgICBtX3BpbXBsLT5tX3BhdHRlcm4uaWdub3JlKCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5sZW5ndGgoKSAtIGkgLSBzdWZmaXhfc2l6ZSkgKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9waW1wbC0+bV9wYXR0ZXJuLndyaXRlKCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPiggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpICkgKTsKLSAgICAgICAgICAgIG1fcGltcGwtPm1fcGF0dGVybi5mbHVzaCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoIGZsdXNoX3N0cmVhbSApCi0gICAgICAgIGZsdXNoKCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1vdXRwdXRfdGVzdF9zdHJlYW06OmZsdXNoKCkKLXsKLSAgICBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcuZXJhc2UoKTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSAgICBzdHIoIHN0ZDo6c3RyaW5nKCkgKTsKLSNlbHNlCi0gICAgc2Vla3AoIDAsIHN0ZDo6aW9zOjpiZWcgKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6OnNpemVfdAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjpsZW5ndGgoKQotewotICAgIHN5bmMoKTsKLQotICAgIHJldHVybiBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLW91dHB1dF90ZXN0X3N0cmVhbTo6c3luYygpCi17Ci0jaWZkZWYgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0gICAgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmFzc2lnbiggc3RyKCksIHBjb3VudCgpICk7Ci0gICAgZnJlZXplKCBmYWxzZSApOwotI2Vsc2UKLSAgICBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcgPSBzdHIoKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9URVNUX1RPT0xTX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9sb2cuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X2xvZy5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1YjdjMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X2xvZy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NDQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWV0cyBVbml0IFRlc3QgTG9nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2dfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9sb2dfZm9ybWF0dGVyLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwPgotdHlwZWRlZiA6Om5kbmJvb3N0Ojppbzo6aW9zX2Jhc2VfYWxsX3NhdmVyIGlvX3NhdmVyX3R5cGU7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZW50cnlfdmFsdWVfY29sbGVjdG9yICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3IgY29uc3QmCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3I6Om9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgdiApIGNvbnN0Ci17Ci0gICAgdW5pdF90ZXN0X2xvZyA8PCB2OwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3IgY29uc3QmIAotZW50cnlfdmFsdWVfY29sbGVjdG9yOjpvcGVyYXRvcjw8KCBjb25zdF9zdHJpbmcgdiApIGNvbnN0Ci17Ci0gICAgdW5pdF90ZXN0X2xvZyA8PCB2OwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3I6On5lbnRyeV92YWx1ZV9jb2xsZWN0b3IoKQotewotICAgIGlmKCBtX2xhc3QgKQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IGxvZzo6ZW5kKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLXN0cnVjdCB1bml0X3Rlc3RfbG9nX2ltcGwgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdW5pdF90ZXN0X2xvZ19pbXBsKCkKLSAgICA6IG1fc3RyZWFtKCBydW50aW1lX2NvbmZpZzo6bG9nX3NpbmsoKSApCi0gICAgLCBtX3N0cmVhbV9zdGF0ZV9zYXZlciggbmV3IGlvX3NhdmVyX3R5cGUoICptX3N0cmVhbSApICkKLSAgICAsIG1fdGhyZXNob2xkX2xldmVsKCBsb2dfYWxsX2Vycm9ycyApCi0gICAgLCBtX2xvZ19mb3JtYXR0ZXIoIG5ldyBvdXRwdXQ6OmNvbXBpbGVyX2xvZ19mb3JtYXR0ZXIgKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBsb2cgZGF0YQotICAgIHR5cGVkZWYgc2NvcGVkX3B0cjx1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcj4gZm9ybWF0dGVyX3B0cjsKLSAgICB0eXBlZGVmIHNjb3BlZF9wdHI8aW9fc2F2ZXJfdHlwZT4gICAgICAgICAgIHNhdmVyX3B0cjsKLQotICAgIHN0ZDo6b3N0cmVhbSogICAgICAgbV9zdHJlYW07Ci0gICAgc2F2ZXJfcHRyICAgICAgICAgICBtX3N0cmVhbV9zdGF0ZV9zYXZlcjsKLSAgICBsb2dfbGV2ZWwgICAgICAgICAgIG1fdGhyZXNob2xkX2xldmVsOwotICAgIGZvcm1hdHRlcl9wdHIgICAgICAgbV9sb2dfZm9ybWF0dGVyOwotCi0gICAgLy8gZW50cnkgZGF0YQotICAgIGJvb2wgICAgICAgICAgICAgICAgbV9lbnRyeV9pbl9wcm9ncmVzczsKLSAgICBib29sICAgICAgICAgICAgICAgIG1fZW50cnlfc3RhcnRlZDsKLSAgICBsb2dfZW50cnlfZGF0YSAgICAgIG1fZW50cnlfZGF0YTsKLQotICAgIC8vIGNoZWNrIHBvaW50IGRhdGEKLSAgICBsb2dfY2hlY2twb2ludF9kYXRhIG1fY2hlY2twb2ludF9kYXRhOwotCi0gICAgLy8gaGVscGVyIGZ1bmN0aW9ucwotICAgIHN0ZDo6b3N0cmVhbSYgICAgICAgc3RyZWFtKCkgICAgICAgICAgICB7IHJldHVybiAqbV9zdHJlYW07IH0KLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9jaGVja3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBtc2cgKQotICAgIHsKLSAgICAgICAgYXNzaWduX29wKCBtX2NoZWNrcG9pbnRfZGF0YS5tX21lc3NhZ2UsIG1zZywgMCApOwotICAgICAgICBtX2NoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZSAgICA9IGZpbGU7Ci0gICAgICAgIG1fY2hlY2twb2ludF9kYXRhLm1fbGluZV9udW0gICAgPSBsaW5lX251bTsKLSAgICB9Ci19OwotCi11bml0X3Rlc3RfbG9nX2ltcGwmIHNfbG9nX2ltcGwoKSB7IHN0YXRpYyB1bml0X3Rlc3RfbG9nX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3Rfc3RhcnQoIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA9PSBsb2dfbm90aGluZyApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotCi0gICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpzaG93X2J1aWxkX2luZm8oKSApCi0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19idWlsZF9pbmZvKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCkgKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzID0gZmFsc2U7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF9maW5pc2goKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPT0gbG9nX25vdGhpbmcgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZmluaXNoKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCkgKTsKLQotICAgIHNfbG9nX2ltcGwoKS5zdHJlYW0oKS5mbHVzaCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfYWJvcnRlZCgpCi17Ci0gICAgTkROQk9PU1RfVEVTVF9MT0dfRU5UUlkoIGxvZ19tZXNzYWdlcyApIDw8ICJUZXN0IGlzIGFib3J0ZWQiOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA+IGxvZ190ZXN0X3VuaXRzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgKnRoaXMgPDwgbG9nOjplbmQoKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPnRlc3RfdW5pdF9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB0dSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA+IGxvZ190ZXN0X3VuaXRzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc19sb2dfaW1wbCgpLm1fY2hlY2twb2ludF9kYXRhLmNsZWFyKCk7Ci0KLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+dGVzdF91bml0X2ZpbmlzaCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB0dSwgZWxhcHNlZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsID4gbG9nX3Rlc3RfdW5pdHMgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+dGVzdF91bml0X3NraXBwZWQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdHUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApCi17Ci0gICAgLy8gZG8gbm90aGluZwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OmFzc2VydGlvbl9yZXN1bHQoIGJvb2wgKQotewotICAgIC8vIGRvIG5vdGhpbmcKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi17Ci0gICAgbG9nX2xldmVsIGwgPQotICAgICAgICBleC5jb2RlKCkgPD0gZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciAgID8gbG9nX2NwcF9leGNlcHRpb25fZXJyb3JzIDoKLSAgICAgICAgKGV4LmNvZGUoKSA8PSBleGVjdXRpb25fZXhjZXB0aW9uOjp0aW1lb3V0X2Vycm9yICAgICAgICA/IGxvZ19zeXN0ZW1fZXJyb3JzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsb2dfZmF0YWxfZXJyb3JzICk7Ci0KLSAgICBpZiggbCA+PSBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgKSB7Ci0gICAgICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19leGNlcHRpb24oIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fY2hlY2twb2ludF9kYXRhLCBleCApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpzZXRfY2hlY2twb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgbXNnICkKLXsKLSAgICBzX2xvZ19pbXBsKCkuc2V0X2NoZWNrcG9pbnQoIGZpbGUsIGxpbmVfbnVtLCBtc2cgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotY2hhcgotc2V0X3VuaXhfc2xhc2goIGNoYXIgaW4gKQotewotICAgIHJldHVybiBpbiA9PSAnXFwnID8gJy8nIDogaW47Ci19Ci0gICAgCi11bml0X3Rlc3RfbG9nX3QmCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yPDwoIGxvZzo6YmVnaW4gY29uc3QmIGIgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgICp0aGlzIDw8IGxvZzo6ZW5kKCk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9zdHJlYW1fc3RhdGVfc2F2ZXItPnJlc3RvcmUoKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEuY2xlYXIoKTsKLQotICAgIGFzc2lnbl9vcCggc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2ZpbGVfbmFtZSwgYi5tX2ZpbGVfbmFtZSwgMCApOwotCi0gICAgLy8gbm9ybWFsaXplIGZpbGUgbmFtZQotICAgIHN0ZDo6dHJhbnNmb3JtKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fZmlsZV9uYW1lLmJlZ2luKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9maWxlX25hbWUuZW5kKCksCi0gICAgICAgICAgICAgICAgICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9maWxlX25hbWUuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgJnNldF91bml4X3NsYXNoICk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fbGluZV9udW0gPSBiLm1fbGluZV9udW07Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggbG9nOjplbmQgY29uc3QmICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfZmluaXNoKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCkgKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzID0gZmFsc2U7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggbG9nX2xldmVsIGwgKQotewotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9sZXZlbCA9IGw7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXV0X2RldGFpbDo6ZW50cnlfdmFsdWVfY29sbGVjdG9yCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yKCkoIGxvZ19sZXZlbCBsICkKLXsKLSAgICAqdGhpcyA8PCBsOwotCi0gICAgcmV0dXJuIHV0X2RldGFpbDo6ZW50cnlfdmFsdWVfY29sbGVjdG9yKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXVuaXRfdGVzdF9sb2dfdDo6bG9nX2VudHJ5X3N0YXJ0KCkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKSAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBzd2l0Y2goIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9sZXZlbCApIHsKLSAgICBjYXNlIGxvZ19zdWNjZXNzZnVsX3Rlc3RzOgotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6TkROQk9PU1RfVVRMX0VUX0lORk8gKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBsb2dfbWVzc2FnZXM6Ci0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpORE5CT09TVF9VVExfRVRfTUVTU0FHRSApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGxvZ193YXJuaW5nczoKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6Ok5ETkJPT1NUX1VUTF9FVF9XQVJOSU5HICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgbG9nX2FsbF9lcnJvcnM6Ci0gICAgY2FzZSBsb2dfY3BwX2V4Y2VwdGlvbl9lcnJvcnM6Ci0gICAgY2FzZSBsb2dfc3lzdGVtX2Vycm9yczoKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6Ok5ETkJPT1NUX1VUTF9FVF9FUlJPUiApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGxvZ19mYXRhbF9lcnJvcnM6Ci0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpORE5CT09TVF9VVExfRVRfRkFUQUxfRVJST1IgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBsb2dfbm90aGluZzoKLSAgICBjYXNlIGxvZ190ZXN0X3VuaXRzOgotICAgIGNhc2UgaW52YWxpZF9sb2dfbGV2ZWw6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyA9IHRydWU7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0X2xvZ190JgotdW5pdF90ZXN0X2xvZ190OjpvcGVyYXRvcjw8KCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fbGV2ZWwgPj0gc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsICYmICF2YWx1ZS5lbXB0eSgpICYmIGxvZ19lbnRyeV9zdGFydCgpICkKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3ZhbHVlKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHZhbHVlICk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9sZXZlbCA+PSBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgJiYgIXZhbHVlLmVtcHR5KCkgJiYgbG9nX2VudHJ5X3N0YXJ0KCkgKQotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfdmFsdWUoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdmFsdWUgKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mIHN0ciApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc19sb2dfaW1wbCgpLm1fc3RyZWFtID0gJnN0cjsKLSAgICBzX2xvZ19pbXBsKCkubV9zdHJlYW1fc3RhdGVfc2F2ZXIucmVzZXQoIG5ldyBpb19zYXZlcl90eXBlKCBzdHIgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnNldF90aHJlc2hvbGRfbGV2ZWwoIGxvZ19sZXZlbCBsZXYgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyB8fCBsZXYgPT0gaW52YWxpZF9sb2dfbGV2ZWwgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPSBsZXY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6c2V0X2Zvcm1hdCggb3V0cHV0X2Zvcm1hdCBsb2dfZm9ybWF0ICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggbG9nX2Zvcm1hdCA9PSBDTEYgKQotICAgICAgICBzZXRfZm9ybWF0dGVyKCBuZXcgb3V0cHV0Ojpjb21waWxlcl9sb2dfZm9ybWF0dGVyICk7Ci0gICAgZWxzZQotICAgICAgICBzZXRfZm9ybWF0dGVyKCBuZXcgb3V0cHV0Ojp4bWxfbG9nX2Zvcm1hdHRlciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnNldF9mb3JtYXR0ZXIoIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyKiB0aGVfZm9ybWF0dGVyICkKLXsKLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLnJlc2V0KCB0aGVfZm9ybWF0dGVyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiBvc3RyLCBsYXp5X29zdHJlYW0gY29uc3QmIHZhbHVlICkKLXsKLSAgICBsb2dfZW50cnlfdmFsdWUoIG9zdHIsICh3cmFwX3N0cmluZ3N0cmVhbSgpLnJlZigpIDw8IHZhbHVlKS5zdHIoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21haW4uaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21haW4uaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjY5MWY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9tYWluLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogbWFpbiBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgVW5pdCBUZXN0IEZyYW1ld29yawotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8IDEzMDAgKSAmJiAhTkROQk9PU1RfV09SS0FST1VORCggX19TVU5QUk9fQ0MsIDwgMHg1MTAwICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TVVBQT1JUX1JVTl9CWV9OQU1FCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHA+Ci0jZW5kaWYKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfZmlsdGVyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyB0ZXN0X2Nhc2VfZmlsdGVyIDogcHVibGljIHRlc3RfdHJlZV92aXNpdG9yIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3Qgc2luZ2xlX2ZpbHRlciB7Ci0gICAgICAgIHNpbmdsZV9maWx0ZXIoIGNvbnN0X3N0cmluZyBpbiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCBpbiA9PSAiKiIgKQotICAgICAgICAgICAgICAgIG1fa2luZCAgPSBTRktfQUxMOwotICAgICAgICAgICAgZWxzZSBpZiggZmlyc3RfY2hhciggaW4gKSA9PSAnKicgJiYgbGFzdF9jaGFyKCBpbiApID09ICcqJyApIHsKLSAgICAgICAgICAgICAgICBtX2tpbmQgID0gU0ZLX1NVQlNUUjsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW4uc3Vic3RyKCAxLCBpbi5zaXplKCktMSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiggZmlyc3RfY2hhciggaW4gKSA9PSAnKicgKSB7Ci0gICAgICAgICAgICAgICAgbV9raW5kICA9IFNGS19UUkFJTElORzsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW4uc3Vic3RyKCAxICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKCBsYXN0X2NoYXIoIGluICkgPT0gJyonICkgewotICAgICAgICAgICAgICAgIG1fa2luZCAgPSBTRktfTEVBRElORzsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW4uc3Vic3RyKCAwLCBpbi5zaXplKCktMSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9raW5kICA9IFNGS19NQVRDSDsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYm9vbCAgICAgICAgICAgIHBhc3MoIHRlc3RfdW5pdCBjb25zdCYgdHUgKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdF9zdHJpbmcgbmFtZSggdHUucF9uYW1lICk7Ci0gICAgCi0gICAgICAgICAgICBzd2l0Y2goIG1fa2luZCApIHsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjYXNlIFNGS19BTEw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIGNhc2UgU0ZLX0xFQURJTkc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyKCAwLCBtX3ZhbHVlLnNpemUoKSApID09IG1fdmFsdWU7Ci0KLSAgICAgICAgICAgIGNhc2UgU0ZLX1RSQUlMSU5HOgotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLnNpemUoKSA+PSBtX3ZhbHVlLnNpemUoKSAmJiBuYW1lLnN1YnN0ciggbmFtZS5zaXplKCkgLSBtX3ZhbHVlLnNpemUoKSApID09IG1fdmFsdWU7Ci0KLSAgICAgICAgICAgIGNhc2UgU0ZLX1NVQlNUUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5maW5kKCBtX3ZhbHVlICkgIT0gY29uc3Rfc3RyaW5nOjpucG9zOwotCi0gICAgICAgICAgICBjYXNlIFNGS19NQVRDSDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSB0dS5wX25hbWUuZ2V0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZW51bSBraW5kIHsgU0ZLX0FMTCwgU0ZLX0xFQURJTkcsIFNGS19UUkFJTElORywgU0ZLX1NVQlNUUiwgU0ZLX01BVENIIH07Ci0KLSAgICAgICAga2luZCAgICAgICAgICAgIG1fa2luZDsKLSAgICAgICAgY29uc3Rfc3RyaW5nICAgIG1fdmFsdWU7Ci0gICAgfTsKLSAgICAvLyBDb25zdHJ1Y3RvcgotI2lmbmRlZiBORE5CT09TVF9URVNUX1NVUFBPUlRfUlVOX0JZX05BTUUKLSAgICBleHBsaWNpdCAgICAgICAgdGVzdF9jYXNlX2ZpbHRlciggY29uc3Rfc3RyaW5nICkgOiBtX2RlcHRoKCAwICkge30KLSNlbHNlCi0gICAgZXhwbGljaXQgICAgICAgIHRlc3RfY2FzZV9maWx0ZXIoIGNvbnN0X3N0cmluZyB0Y190b19ydW4gKSAKLSAgICA6IG1fZGVwdGgoIDAgKQotICAgIHsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggdGNfdG9fcnVuLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gIi8iLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSApOwotCi0gICAgICAgIHdoaWxlKCB0aXQgIT0gc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCkgKSB7Ci0gICAgICAgICAgICBtX2ZpbHRlcnMucHVzaF9iYWNrKCAKLSAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzaW5nbGVfZmlsdGVyPiggc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCAqdGl0LCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gIiwiLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSAgKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvcigpICkgKTsKLQotICAgICAgICAgICAgKyt0aXQ7ICAgICAgICAgICAKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIAotICAgIHZvaWQgICAgICAgICAgICBmaWx0ZXJfdW5pdCggdGVzdF91bml0IGNvbnN0JiB0dSApCi0gICAgewotICAgICAgICBpZiggKCsrbV9kZXB0aCAtIDEpID4gbV9maWx0ZXJzLnNpemUoKSApIHsKLSAgICAgICAgICAgIHR1LnBfZW5hYmxlZC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggbV9kZXB0aCA9PSAxICkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzdGQ6OnZlY3RvcjxzaW5nbGVfZmlsdGVyPiBjb25zdCYgZmlsdGVycyA9IG1fZmlsdGVyc1ttX2RlcHRoLTJdOwotCi0gICAgICAgIHR1LnBfZW5hYmxlZC52YWx1ZSA9Ci0gICAgICAgICAgICBzdGQ6OmZpbmRfaWYoIGZpbHRlcnMuYmVnaW4oKSwgZmlsdGVycy5lbmQoKSwgYmluZCggJnNpbmdsZV9maWx0ZXI6OnBhc3MsIF8xLCBuZG5ib29zdDo6cmVmKHR1KSApICkgIT0gZmlsdGVycy5lbmQoKTsKLSAgICB9Ci0KLSAgICAvLyB0ZXN0IHRyZWUgdmlzaXRvciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotICAgIHsKLSAgICAgICAgaWYoIG1fZGVwdGggPCBtX2ZpbHRlcnMuc2l6ZSgpICkgewotICAgICAgICAgICAgdGMucF9lbmFibGVkLnZhbHVlID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmaWx0ZXJfdW5pdCggdGMgKTsKLQotICAgICAgICAtLW1fZGVwdGg7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sICAgIHRlc3Rfc3VpdGVfc3RhcnQoIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7IAotICAgICAgICBmaWx0ZXJfdW5pdCggdHMgKTsKLQotICAgICAgICBpZiggIXRzLnBfZW5hYmxlZCApCi0gICAgICAgICAgICAtLW1fZGVwdGg7Ci0KLSAgICAgICAgcmV0dXJuIHRzLnBfZW5hYmxlZDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9zdWl0ZV9maW5pc2goIHRlc3Rfc3VpdGUgY29uc3QmICkgIHsgLS1tX2RlcHRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8c2luZ2xlX2ZpbHRlcj4gPiAgICBtX2ZpbHRlcnM7Ci0gICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RlcHRoOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X21haW4gICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgTkROQk9PU1RfVEVTVF9ERUNMCi11bml0X3Rlc3RfbWFpbiggaW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMsIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIHRyeSB7Ci0gICAgICAgIGZyYW1ld29yazo6aW5pdCggaW5pdF9mdW5jLCBhcmdjLCBhcmd2ICk7Ci0KLSAgICAgICAgaWYoICFydW50aW1lX2NvbmZpZzo6dGVzdF90b19ydW4oKS5pc19lbXB0eSgpICkgewotICAgICAgICAgICAgdGVzdF9jYXNlX2ZpbHRlciBmaWx0ZXIoIHJ1bnRpbWVfY29uZmlnOjp0ZXN0X3RvX3J1bigpICk7Ci0KLSAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfaWQsIGZpbHRlciApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJhbWV3b3JrOjpydW4oKTsKLQotICAgICAgICByZXN1bHRzX3JlcG9ydGVyOjptYWtlX3JlcG9ydCgpOwotCi0gICAgICAgIHJldHVybiBydW50aW1lX2NvbmZpZzo6bm9fcmVzdWx0X2NvZGUoKSAKLSAgICAgICAgICAgICAgICAgICAgPyBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzCi0gICAgICAgICAgICAgICAgICAgIDogcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfaWQgKS5yZXN1bHRfY29kZSgpOwotICAgIH0KLSAgICBjYXRjaCggZnJhbWV3b3JrOjpub3RoaW5nX3RvX3Rlc3QgY29uc3QmICkgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfc3VjY2VzczsKLSAgICB9Ci0gICAgY2F0Y2goIGZyYW1ld29yazo6aW50ZXJuYWxfZXJyb3IgY29uc3QmIGV4ICkgewotICAgICAgICByZXN1bHRzX3JlcG9ydGVyOjpnZXRfc3RyZWFtKCkgPDwgIkJvb3N0LlRlc3QgZnJhbWV3b3JrIGludGVybmFsIGVycm9yOiAiIDw8IGV4LndoYXQoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotICAgIGNhdGNoKCBmcmFtZXdvcms6OnNldHVwX2Vycm9yIGNvbnN0JiBleCApIHsKLSAgICAgICAgcmVzdWx0c19yZXBvcnRlcjo6Z2V0X3N0cmVhbSgpIDw8ICJUZXN0IHNldHVwIGVycm9yOiAiIDw8IGV4LndoYXQoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotICAgIGNhdGNoKCAuLi4gKSB7Ci0gICAgICAgIHJlc3VsdHNfcmVwb3J0ZXI6OmdldF9zdHJlYW0oKSA8PCAiQm9vc3QuVGVzdCBmcmFtZXdvcmsgaW50ZXJuYWwgZXJyb3I6IHVua25vd24gcmVhc29uIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTk9fTUFJTikKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBtYWluIGZ1bmN0aW9uIGZvciB0ZXN0cyB1c2luZyBsaWIgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLW1haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIC8vIHByb3RvdHlwZSBmb3IgdXNlcidzIHVuaXQgdGVzdCBpbml0IGZ1bmN0aW9uCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotICAgIGV4dGVybiBib29sIGluaXRfdW5pdF90ZXN0KCk7Ci0KLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojppbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYyA9ICZpbml0X3VuaXRfdGVzdDsKLSNlbHNlCi0gICAgZXh0ZXJuIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZSogaW5pdF91bml0X3Rlc3Rfc3VpdGUoIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsKLQotICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jID0gJmluaXRfdW5pdF90ZXN0X3N1aXRlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbWFpbiggaW5pdF9mdW5jLCBhcmdjLCBhcmd2ICk7Ci19Ci0KLSNlbmRpZiAvLyAhTkROQk9PU1RfVEVTVF9EWU5fTElOSyAmJiAhTkROQk9PU1RfVEVTVF9OT19NQUlOCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbW9uaXRvci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbW9uaXRvci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NDcwMWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21vbml0b3IuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIHNwZWNpZmljIHN1YmNsYXNzIG9mIEV4ZWN1dG9uIE1vbml0b3IgdXNlZCBieSBVbml0Ci0vLyAgVGVzdCBGcmFtZXdvcmsgdG8gbW9uaXRvciB0ZXN0IGNhc2VzIHJ1bi4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCB6ZXJvX3JldHVybl93cmFwcGVyX3QgewotICAgIGV4cGxpY2l0IHplcm9fcmV0dXJuX3dyYXBwZXJfdCggRiBjb25zdCYgZiApIDogbV9mKCBmICkge30KLSAgICAKLSAgICBpbnQgb3BlcmF0b3IoKSgpIHsgbV9mKCk7IHJldHVybiAwOyB9Ci0gICAgCi0gICAgRiBjb25zdCYgbV9mOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXplcm9fcmV0dXJuX3dyYXBwZXJfdDxGPgotemVyb19yZXR1cm5fd3JhcHBlciggRiBjb25zdCYgZiApCi17Ci0gICAgcmV0dXJuIHplcm9fcmV0dXJuX3dyYXBwZXJfdDxGPiggZiApOwotfQotCi19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHVuaXRfdGVzdF9tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdW5pdF90ZXN0X21vbml0b3JfdDo6ZXJyb3JfbGV2ZWwKLXVuaXRfdGVzdF9tb25pdG9yX3Q6OmV4ZWN1dGVfYW5kX3RyYW5zbGF0ZSggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgcF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlICAgICA9IHJ1bnRpbWVfY29uZmlnOjpjYXRjaF9zeXNfZXJyb3JzKCk7Ci0gICAgICAgIHBfdGltZW91dC52YWx1ZSAgICAgICAgICAgICAgICAgPSB0Yy5wX3RpbWVvdXQuZ2V0KCk7Ci0gICAgICAgIHBfYXV0b19zdGFydF9kYmcudmFsdWUgICAgICAgICAgPSBydW50aW1lX2NvbmZpZzo6YXV0b19zdGFydF9kYmcoKTsKLSAgICAgICAgcF91c2VfYWx0X3N0YWNrLnZhbHVlICAgICAgICAgICA9IHJ1bnRpbWVfY29uZmlnOjp1c2VfYWx0X3N0YWNrKCk7Ci0gICAgICAgIHBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMudmFsdWUgICAgPSBydW50aW1lX2NvbmZpZzo6ZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMoKTsKLQotICAgICAgICBleGVjdXRlKCBjYWxsYmFjazA8aW50PiggemVyb19yZXR1cm5fd3JhcHBlciggdGMudGVzdF9mdW5jKCkgKSApICk7Ci0gICAgfQotICAgIGNhdGNoKCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApIHsKLSAgICAgICAgZnJhbWV3b3JrOjpleGNlcHRpb25fY2F1Z2h0KCBleCApOwotICAgICAgICBmcmFtZXdvcms6OnRlc3RfdW5pdF9hYm9ydGVkKCBmcmFtZXdvcms6OmN1cnJlbnRfdGVzdF9jYXNlKCkgKTsKLQotICAgICAgICAvLyB0cmFuc2xhdGUgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6ZXJyb3JfY29kZSB0byBlcnJvcl9sZXZlbAotICAgICAgICBzd2l0Y2goIGV4LmNvZGUoKSApIHsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjpub19lcnJvcjogICAgICAgICAgICAgcmV0dXJuIHRlc3Rfb2s7Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dXNlcl9lcnJvcjogICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX2V4Y2VwdGlvbjsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yOiAgcmV0dXJuIHVuZXhwZWN0ZWRfZXhjZXB0aW9uOwotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvcjogICAgICAgICByZXR1cm4gb3NfZXhjZXB0aW9uOwotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnRpbWVvdXRfZXJyb3I6ICAgICAgICByZXR1cm4gb3NfdGltZW91dDsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjp1c2VyX2ZhdGFsX2Vycm9yOgotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvcjogICByZXR1cm4gZmF0YWxfZXJyb3I7Ci0gICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX2V4Y2VwdGlvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0ZXN0X29rOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmM2ZhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfcGFyYW1ldGVycy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MjcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNjM2NDAgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgVW5pdCBUZXN0IEZyYW1ld29yayBwYXJhbWV0ZXIKLS8vICBoYW5kbGluZyByb3V0aW5lcy4gTWF5IGJlIHJld3JpdHRlbiBpbiBmdXR1cmUgdG8gdXNlIHNvbWUga2luZCBvZgotLy8gIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcGFyc2luZyBmYWNpbGl0eSBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGUgaGFuZGxpbmcKLS8vICBmYWNpbGl0eQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZpeGVkX21hcHBpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGVidWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwPgotCi1uYW1lc3BhY2UgcnQgID0gbmRuYm9vc3Q6OnJ1bnRpbWU7Ci1uYW1lc3BhY2UgY2xhID0gcnQ6OmNsYTsKLQotCi0jaWZuZGVmIFVOREVSX0NFCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi92YXJpYWJsZS5ocHA+Ci0KLW5hbWVzcGFjZSBlbnYgPSBydDo6ZW52OwotI2VuZGlmCi0KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPGZzdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSMgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmdldGVudjsgdXNpbmcgOjpzdHJuY21wOyB1c2luZyA6OnN0cmNtcDsgfQotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIGlucHV0IG9wZXJhdGlvbnMgZm9yIHVuaXRfdGVzdCdzIGVudW1zICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGQ6OmlzdHJlYW0mCi1vcGVyYXRvcj4+KCBzdGQ6OmlzdHJlYW0mIGluLCB1bml0X3Rlc3Q6OmxvZ19sZXZlbCYgbGwgKQotewotICAgIHN0YXRpYyBmaXhlZF9tYXBwaW5nPGNvbnN0X3N0cmluZyx1bml0X3Rlc3Q6OmxvZ19sZXZlbCxjYXNlX2luc19sZXNzPGNoYXIgY29uc3Q+ID4gbG9nX2xldmVsX25hbWUoCi0gICAgICAgICJhbGwiICAgICAgICAgICAsIGxvZ19zdWNjZXNzZnVsX3Rlc3RzLAotICAgICAgICAic3VjY2VzcyIgICAgICAgLCBsb2dfc3VjY2Vzc2Z1bF90ZXN0cywKLSAgICAgICAgInRlc3Rfc3VpdGUiICAgICwgbG9nX3Rlc3RfdW5pdHMsCi0gICAgICAgICJ1bml0X3Njb3BlIiAgICAsIGxvZ190ZXN0X3VuaXRzLAotICAgICAgICAibWVzc2FnZSIgICAgICAgLCBsb2dfbWVzc2FnZXMsCi0gICAgICAgICJ3YXJuaW5nIiAgICAgICAsIGxvZ193YXJuaW5ncywKLSAgICAgICAgImVycm9yIiAgICAgICAgICwgbG9nX2FsbF9lcnJvcnMsCi0gICAgICAgICJjcHBfZXhjZXB0aW9uIiAsIGxvZ19jcHBfZXhjZXB0aW9uX2Vycm9ycywKLSAgICAgICAgInN5c3RlbV9lcnJvciIgICwgbG9nX3N5c3RlbV9lcnJvcnMsCi0gICAgICAgICJmYXRhbF9lcnJvciIgICAsIGxvZ19mYXRhbF9lcnJvcnMsCi0gICAgICAgICJub3RoaW5nIiAgICAgICAsIGxvZ19ub3RoaW5nLAotCi0gICAgICAgIGludmFsaWRfbG9nX2xldmVsCi0gICAgICAgICk7Ci0KLSAgICBzdGQ6OnN0cmluZyB2YWw7Ci0gICAgaW4gPj4gdmFsOwotCi0gICAgbGwgPSBsb2dfbGV2ZWxfbmFtZVt2YWxdOwotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBsbCAhPSB1bml0X3Rlc3Q6OmludmFsaWRfbG9nX2xldmVsLCAiaW52YWxpZCBsb2cgbGV2ZWwgIiArIHZhbCApOwotCi0gICAgcmV0dXJuIGluOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6OmlzdHJlYW0mCi1vcGVyYXRvcj4+KCBzdGQ6OmlzdHJlYW0mIGluLCB1bml0X3Rlc3Q6OnJlcG9ydF9sZXZlbCYgcmwgKQotewotICAgIGZpeGVkX21hcHBpbmc8Y29uc3Rfc3RyaW5nLHVuaXRfdGVzdDo6cmVwb3J0X2xldmVsLGNhc2VfaW5zX2xlc3M8Y2hhciBjb25zdD4gPiByZXBvcnRfbGV2ZWxfbmFtZSAoCi0gICAgICAgICJjb25maXJtIiwgIENPTkZJUk1BVElPTl9SRVBPUlQsCi0gICAgICAgICJzaG9ydCIsICAgIFNIT1JUX1JFUE9SVCwKLSAgICAgICAgImRldGFpbGVkIiwgREVUQUlMRURfUkVQT1JULAotICAgICAgICAibm8iLCAgICAgICBOT19SRVBPUlQsCi0KLSAgICAgICAgSU5WX1JFUE9SVF9MRVZFTAotICAgICAgICApOwotCi0gICAgc3RkOjpzdHJpbmcgdmFsOwotICAgIGluID4+IHZhbDsKLQotICAgIHJsID0gcmVwb3J0X2xldmVsX25hbWVbdmFsXTsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggcmwgIT0gSU5WX1JFUE9SVF9MRVZFTCwgImludmFsaWQgcmVwb3J0IGxldmVsICIgKyB2YWwgKTsKLQotICAgIHJldHVybiBpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjppc3RyZWFtJgotb3BlcmF0b3I+Piggc3RkOjppc3RyZWFtJiBpbiwgdW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0JiBvZiApCi17Ci0gICAgZml4ZWRfbWFwcGluZzxjb25zdF9zdHJpbmcsdW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0LGNhc2VfaW5zX2xlc3M8Y2hhciBjb25zdD4gPiBvdXRwdXRfZm9ybWF0X25hbWUgKAotICAgICAgICAiSFJGIiwgdW5pdF90ZXN0OjpDTEYsCi0gICAgICAgICJDTEYiLCB1bml0X3Rlc3Q6OkNMRiwKLSAgICAgICAgIlhNTCIsIHVuaXRfdGVzdDo6WE1MLAotCi0gICAgICAgIHVuaXRfdGVzdDo6SU5WX09GCi0gICAgICAgICk7Ci0KLSAgICBzdGQ6OnN0cmluZyB2YWw7Ci0gICAgaW4gPj4gdmFsOwotCi0gICAgb2YgPSBvdXRwdXRfZm9ybWF0X25hbWVbdmFsXTsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggb2YgIT0gdW5pdF90ZXN0OjpJTlZfT0YsICJpbnZhbGlkIG91dHB1dCBmb3JtYXQgIiArIHZhbCApOwotCi0gICAgcmV0dXJuIGluOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHJ1bnRpbWVfY29uZmlnICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBydW50aW1lX2NvbmZpZyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIGZyYW1ld29yayBwYXJhbWV0ZXJzIGFuZCBjb3JyZXNwb25kaW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKLXN0ZDo6c3RyaW5nIEFVVE9fU1RBUlRfREJHICAgID0gImF1dG9fc3RhcnRfZGJnIjsKLXN0ZDo6c3RyaW5nIEJSRUFLX0VYRUNfUEFUSCAgID0gImJyZWFrX2V4ZWNfcGF0aCI7Ci1zdGQ6OnN0cmluZyBCVUlMRF9JTkZPICAgICAgICA9ICJidWlsZF9pbmZvIjsKLXN0ZDo6c3RyaW5nIENBVENIX1NZU19FUlJPUlMgID0gImNhdGNoX3N5c3RlbV9lcnJvcnMiOwotc3RkOjpzdHJpbmcgREVURUNUX0ZQX0VYQ0VQVCAgPSAiZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMiOwotc3RkOjpzdHJpbmcgREVURUNUX01FTV9MRUFLUyAgPSAiZGV0ZWN0X21lbW9yeV9sZWFrcyI7Ci1zdGQ6OnN0cmluZyBMT0dfRk9STUFUICAgICAgICA9ICJsb2dfZm9ybWF0IjsKLXN0ZDo6c3RyaW5nIExPR19MRVZFTCAgICAgICAgID0gImxvZ19sZXZlbCI7Ci1zdGQ6OnN0cmluZyBMT0dfU0lOSyAgICAgICAgICA9ICJsb2dfc2luayI7Ci1zdGQ6OnN0cmluZyBPVVRQVVRfRk9STUFUICAgICA9ICJvdXRwdXRfZm9ybWF0IjsKLXN0ZDo6c3RyaW5nIFJBTkRPTV9TRUVEICAgICAgID0gInJhbmRvbSI7Ci1zdGQ6OnN0cmluZyBSRVBPUlRfRk9STUFUICAgICA9ICJyZXBvcnRfZm9ybWF0IjsKLXN0ZDo6c3RyaW5nIFJFUE9SVF9MRVZFTCAgICAgID0gInJlcG9ydF9sZXZlbCI7Ci1zdGQ6OnN0cmluZyBSRVBPUlRfU0lOSyAgICAgICA9ICJyZXBvcnRfc2luayI7Ci1zdGQ6OnN0cmluZyBSRVNVTFRfQ09ERSAgICAgICA9ICJyZXN1bHRfY29kZSI7Ci1zdGQ6OnN0cmluZyBURVNUU19UT19SVU4gICAgICA9ICJydW5fdGVzdCI7Ci1zdGQ6OnN0cmluZyBTQVZFX1RFU1RfUEFUVEVSTiA9ICJzYXZlX3BhdHRlcm4iOwotc3RkOjpzdHJpbmcgU0hPV19QUk9HUkVTUyAgICAgPSAic2hvd19wcm9ncmVzcyI7Ci1zdGQ6OnN0cmluZyBVU0VfQUxUX1NUQUNLICAgICA9ICJ1c2VfYWx0X3N0YWNrIjsKLQotZml4ZWRfbWFwcGluZzxjb25zdF9zdHJpbmcsY29uc3Rfc3RyaW5nPiBwYXJhbWV0ZXJfMl9lbnZfdmFyKAotICAgIEFVVE9fU1RBUlRfREJHICAgICwgIk5ETkJPT1NUX1RFU1RfQVVUT19TVEFSVF9EQkciLAotICAgIEJSRUFLX0VYRUNfUEFUSCAgICwgIk5ETkJPT1NUX1RFU1RfQlJFQUtfRVhFQ19QQVRIIiwKLSAgICBCVUlMRF9JTkZPICAgICAgICAsICJORE5CT09TVF9URVNUX0JVSUxEX0lORk8iLAotICAgIENBVENIX1NZU19FUlJPUlMgICwgIk5ETkJPT1NUX1RFU1RfQ0FUQ0hfU1lTVEVNX0VSUk9SUyIsCi0gICAgREVURUNUX0ZQX0VYQ0VQVCAgLCAiTkROQk9PU1RfVEVTVF9ERVRFQ1RfRlBfRVhDRVBUSU9OUyIsCi0gICAgREVURUNUX01FTV9MRUFLUyAgLCAiTkROQk9PU1RfVEVTVF9ERVRFQ1RfTUVNT1JZX0xFQUsiLAotICAgIExPR19GT1JNQVQgICAgICAgICwgIk5ETkJPT1NUX1RFU1RfTE9HX0ZPUk1BVCIsCi0gICAgTE9HX0xFVkVMICAgICAgICAgLCAiTkROQk9PU1RfVEVTVF9MT0dfTEVWRUwiLAotICAgIExPR19TSU5LICAgICAgICAgICwgIk5ETkJPT1NUX1RFU1RfTE9HX1NJTksiLAotICAgIE9VVFBVVF9GT1JNQVQgICAgICwgIk5ETkJPT1NUX1RFU1RfT1VUUFVUX0ZPUk1BVCIsCi0gICAgUkFORE9NX1NFRUQgICAgICAgLCAiTkROQk9PU1RfVEVTVF9SQU5ET00iLAotICAgIFJFUE9SVF9GT1JNQVQgICAgICwgIk5ETkJPT1NUX1RFU1RfUkVQT1JUX0ZPUk1BVCIsCi0gICAgUkVQT1JUX0xFVkVMICAgICAgLCAiTkROQk9PU1RfVEVTVF9SRVBPUlRfTEVWRUwiLAotICAgIFJFUE9SVF9TSU5LICAgICAgICwgIk5ETkJPT1NUX1RFU1RfUkVQT1JUX1NJTksiLAotICAgIFJFU1VMVF9DT0RFICAgICAgICwgIk5ETkJPT1NUX1RFU1RfUkVTVUxUX0NPREUiLAotICAgIFRFU1RTX1RPX1JVTiAgICAgICwgIk5ETkJPT1NUX1RFU1RTX1RPX1JVTiIsCi0gICAgU0FWRV9URVNUX1BBVFRFUk4gLCAiTkROQk9PU1RfVEVTVF9TQVZFX1BBVFRFUk4iLAotICAgIFNIT1dfUFJPR1JFU1MgICAgICwgIk5ETkJPT1NUX1RFU1RfU0hPV19QUk9HUkVTUyIsCi0gICAgVVNFX0FMVF9TVEFDSyAgICAgLCAiTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLIiwKLQotICAgICIiCi0pOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzdG9yYWdlIGZvciB0aGUgQ0xBcwotY2xhOjpwYXJzZXIgICAgIHNfY2xhX3BhcnNlcjsKLXN0ZDo6c3RyaW5nICAgICBzX2VtcHR5OwotCi1vdXRwdXRfZm9ybWF0ICAgc19yZXBvcnRfZm9ybWF0Owotb3V0cHV0X2Zvcm1hdCAgIHNfbG9nX2Zvcm1hdDsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVQKLXJldHJpZXZlX3BhcmFtZXRlciggY29uc3Rfc3RyaW5nIHBhcmFtZXRlcl9uYW1lLCBjbGE6OnBhcnNlciBjb25zdCYgc19jbGFfcGFyc2VyLCBUIGNvbnN0JiBkZWZhdWx0X3ZhbHVlID0gVCgpLCBUIGNvbnN0JiBvcHRpb25hbF92YWx1ZSA9IFQoKSApCi17Ci0gICAgcnQ6OmNvbnN0X2FyZ3VtZW50X3B0ciBhcmcgPSBzX2NsYV9wYXJzZXJbcGFyYW1ldGVyX25hbWVdOwotICAgIGlmKCBhcmcgKSB7Ci0gICAgICAgIGlmKCBydHRpOjp0eXBlX2lkPFQ+KCkgPT0gcnR0aTo6dHlwZV9pZDxib29sPigpIHx8Ci0gICAgICAgICAgICAhc3RhdGljX2Nhc3Q8Y2xhOjpwYXJhbWV0ZXIgY29uc3QmPiggYXJnLT5wX2Zvcm1hbF9wYXJhbWV0ZXIuZ2V0KCkgKS5wX29wdGlvbmFsX3ZhbHVlICkKLSAgICAgICAgICAgIHJldHVybiBzX2NsYV9wYXJzZXIuZ2V0PFQ+KCBwYXJhbWV0ZXJfbmFtZSApOwotCi0gICAgICAgIG9wdGlvbmFsPFQ+IHZhbCA9IHNfY2xhX3BhcnNlci5nZXQ8b3B0aW9uYWw8VD4gPiggcGFyYW1ldGVyX25hbWUgKTsKLSAgICAgICAgaWYoIHZhbCApCi0gICAgICAgICAgICByZXR1cm4gKnZhbDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG9wdGlvbmFsX3ZhbHVlOwotICAgIH0KLQotICAgIG5kbmJvb3N0OjpvcHRpb25hbDxUPiB2OwotCi0jaWZuZGVmIFVOREVSX0NFCi0gICAgZW52OjpnZXQoIHBhcmFtZXRlcl8yX2Vudl92YXJbcGFyYW1ldGVyX25hbWVdLCB2ICk7Ci0jZW5kaWYKLQotICAgIGlmKCB2ICkKLSAgICAgICAgcmV0dXJuICp2OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlIAotCi12b2lkCi1pbml0KCBpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2ICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgY2xhOwotCi0gICAgdHJ5IHsKLSAgICAgICAgc19jbGFfcGFyc2VyIC0gY2xhOjppZ25vcmVfbWlzbWF0Y2gKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8Ym9vbD4oIEFVVE9fU1RBUlRfREJHICsgInxkIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBdXRvbWF0aWNhbGx5IHN0YXJ0cyBkZWJ1Z2dlciBpZiBzeXN0ZW0gbGV2ZWwgZXJyb3IgKHNpZ25hbCkgb2NjdXJzIikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIEJSRUFLX0VYRUNfUEFUSCApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkZvciB0aGUgZXhjZXB0aW9uIHNhZmV0eSB0ZXN0aW5nIGFsbG93cyB0byBicmVhayBhdCBzcGVjaWZpYyBleGVjdXRpb24gcGF0aCIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBCVUlMRF9JTkZPICsgInxpIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTaG93cyBsaWJyYXJ5IGJ1aWxkIGluZm9ybWF0aW9uIiApCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBDQVRDSF9TWVNfRVJST1JTICsgInxzIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gY2F0Y2hpbmcgYW5kIGlnbm9yaW5nIHN5c3RlbSBlcnJvcnMgKHNpZ25hbHMpIikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxib29sPiggREVURUNUX0ZQX0VYQ0VQVCApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBzd2l0Y2ggYmV0d2VlbiBjYXRjaGluZyBhbmQgaWdub3JpbmcgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9ucyIpCi0gICAgICAgICAgPDwgY2xhOjpuYW1lZF9wYXJhbWV0ZXI8bG9uZz4oIERFVEVDVF9NRU1fTEVBS1MgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS0iLGNsYTo6c2VwYXJhdG9yID0gIj0iLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gY2F0Y2hpbmcgYW5kIGlnbm9yaW5nIG1lbW9yeSBsZWFrcyIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHVuaXRfdGVzdDo6b3V0cHV0X2Zvcm1hdD4oIExPR19GT1JNQVQgKyAifGYiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyBsb2cgZm9ybWF0IikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8dW5pdF90ZXN0Ojpsb2dfbGV2ZWw+KCBMT0dfTEVWRUwgKyAifGwiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyBsb2cgbGV2ZWwiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIExPR19TSU5LICsgInxrIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgbG9nIHNpbms6c3Rkb3V0KGRlZmF1bHQpLHN0ZGVyciBvciBmaWxlIG5hbWUiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjx1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQ+KCBPVVRQVVRfRk9STUFUICsgInxvIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgb3V0cHV0IGZvcm1hdCAoYm90aCBsb2cgYW5kIHJlcG9ydCkiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxpbnQ+KCBSQU5ET01fU0VFRCArICJ8YSIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCxjbGE6Om9wdGlvbmFsX3ZhbHVlLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gc2VxdWVudGlhbCBhbmQgcmFuZG9tIG9yZGVyIG9mIHRlc3QgdW5pdHMgZXhlY3V0aW9uLlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcHRpb25hbGx5IGFsbG93cyB0byBzcGVjaWZ5IGNvbmNyZXRlIHNlZWQgZm9yIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8dW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0PiggUkVQT1JUX0ZPUk1BVCArICJ8bSIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIHJlcG9ydCBmb3JtYXQiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjx1bml0X3Rlc3Q6OnJlcG9ydF9sZXZlbD4oUkVQT1JUX0xFVkVMICsgInxyIikKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyByZXBvcnQgbGV2ZWwiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIFJFUE9SVF9TSU5LICsgInxlIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgcmVwb3J0IHNpbms6c3RkZXJyKGRlZmF1bHQpLHN0ZG91dCBvciBmaWxlIG5hbWUiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggUkVTVUxUX0NPREUgKyAifGMiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBkaXNhYmxlIHRlc3QgbW9kdWxlcydzIHJlc3VsdCBjb2RlIGdlbmVyYXRpb24iKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIFRFU1RTX1RPX1JVTiArICJ8dCIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIGZpbHRlciB3aGljaCB0ZXN0IHVuaXRzIHRvIHJ1biIpCi0gICAgICAgICAgPDwgY2xhOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbD4oIFNBVkVfVEVTVF9QQVRURVJOICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tIixjbGE6OnNlcGFyYXRvciA9ICI9IixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIHNhdmluZyBhbmQgbWF0Y2hpbmcgYWdhaW5zdCB0ZXN0IHBhdHRlcm4gZmlsZSIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBTSE9XX1BST0dSRVNTICsgInxwIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJUdXJucyBvbiBwcm9ncmVzcyBkaXNwbGF5IikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxib29sPiggVVNFX0FMVF9TVEFDSyApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlR1cm5zIG9uL29mZiB1c2FnZSBvZiBhbiBhbHRlcm5hdGl2ZSBzdGFjayBmb3Igc2lnbmFsIGhhbmRsaW5nIikKLQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggImhlbHB8PyIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gInRoaXMgaGVscCBtZXNzYWdlIikKLSAgICAgICAgICAgIDsKLQotICAgICAgICBzX2NsYV9wYXJzZXIucGFyc2UoIGFyZ2MsIGFyZ3YgKTsKLQotICAgICAgICBpZiggc19jbGFfcGFyc2VyWyJoZWxwIl0gKSB7Ci0gICAgICAgICAgICBzX2NsYV9wYXJzZXIuaGVscCggc3RkOjpjb3V0ICk7Ci0gICAgICAgICAgICB0aHJvdyBmcmFtZXdvcms6Om5vdGhpbmdfdG9fdGVzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc19yZXBvcnRfZm9ybWF0ICAgICA9IHJldHJpZXZlX3BhcmFtZXRlciggUkVQT1JUX0ZPUk1BVCwgc19jbGFfcGFyc2VyLCB1bml0X3Rlc3Q6OkNMRiApOwotICAgICAgICBzX2xvZ19mb3JtYXQgICAgICAgID0gcmV0cmlldmVfcGFyYW1ldGVyKCBMT0dfRk9STUFULCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6Q0xGICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0IG9mID0gcmV0cmlldmVfcGFyYW1ldGVyKCBPVVRQVVRfRk9STUFULCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6SU5WX09GICk7Ci0KLSAgICAgICAgaWYoIG9mICE9IHVuaXRfdGVzdDo6SU5WX09GICkKLSAgICAgICAgICAgIHNfcmVwb3J0X2Zvcm1hdCA9IHNfbG9nX2Zvcm1hdCA9IG9mOwotICAgIH0KLSAgICBjYXRjaCggcnQ6OmxvZ2ljX2Vycm9yIGNvbnN0JiBleCApIHsKLSAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIGVycjsKLSAgICAgICAgCi0gICAgICAgIGVyciA8PCAiRmFpbCB0byBwcm9jZXNzIHJ1bnRpbWUgcGFyYW1ldGVyczogIiA8PCBleC5tc2coKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHNfY2xhX3BhcnNlci51c2FnZSggZXJyICk7Ci0KLSAgICAgICAgdGhyb3cgZnJhbWV3b3JrOjpzZXR1cF9lcnJvciggZXJyLnN0cigpICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bml0X3Rlc3Q6OmxvZ19sZXZlbAotbG9nX2xldmVsKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBMT0dfTEVWRUwsIHNfY2xhX3BhcnNlciwgdW5pdF90ZXN0Ojpsb2dfYWxsX2Vycm9ycyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1ub19yZXN1bHRfY29kZSgpCi17Ci0gICAgcmV0dXJuICFyZXRyaWV2ZV9wYXJhbWV0ZXIoIFJFU1VMVF9DT0RFLCBzX2NsYV9wYXJzZXIsIHRydWUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0OjpyZXBvcnRfbGV2ZWwKLXJlcG9ydF9sZXZlbCgpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggUkVQT1JUX0xFVkVMLCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6Q09ORklSTUFUSU9OX1JFUE9SVCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1jb25zdF9zdHJpbmcKLXRlc3RfdG9fcnVuKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpzdHJpbmcgc190ZXN0X3RvX3J1biA9IHJldHJpZXZlX3BhcmFtZXRlciggVEVTVFNfVE9fUlVOLCBzX2NsYV9wYXJzZXIsIHNfZW1wdHkgKTsKLQotICAgIHJldHVybiBzX3Rlc3RfdG9fcnVuOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1jb25zdF9zdHJpbmcKLWJyZWFrX2V4ZWNfcGF0aCgpCi17Ci0gICAgc3RhdGljIHN0ZDo6c3RyaW5nIHNfYnJlYWtfZXhlY19wYXRoID0gcmV0cmlldmVfcGFyYW1ldGVyKCBCUkVBS19FWEVDX1BBVEgsIHNfY2xhX3BhcnNlciwgc19lbXB0eSApOwotCi0gICAgcmV0dXJuIHNfYnJlYWtfZXhlY19wYXRoOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1zYXZlX3BhdHRlcm4oKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIFNBVkVfVEVTVF9QQVRURVJOLCBzX2NsYV9wYXJzZXIsIGZhbHNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXNob3dfcHJvZ3Jlc3MoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIFNIT1dfUFJPR1JFU1MsIHNfY2xhX3BhcnNlciwgZmFsc2UgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotc2hvd19idWlsZF9pbmZvKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBCVUlMRF9JTkZPLCBzX2NsYV9wYXJzZXIsIGZhbHNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWNhdGNoX3N5c19lcnJvcnMoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIENBVENIX1NZU19FUlJPUlMsIHNfY2xhX3BhcnNlciwgCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9ERUZBVUxUU19UT19DT1JFX0RVTVAKLSAgICAgICAgZmFsc2UKLSNlbHNlCi0gICAgICAgIHRydWUgCi0jZW5kaWYKLSAgICAgICAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotYXV0b19zdGFydF9kYmcoKQotewotICAgIC8vICEhIHNldCBkZWJ1Z2dlciBhcyBhbiBvcHRpb24KLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBBVVRPX1NUQVJUX0RCRywgc19jbGFfcGFyc2VyLCBmYWxzZSApOwotOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi11c2VfYWx0X3N0YWNrKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBVU0VfQUxUX1NUQUNLLCBzX2NsYV9wYXJzZXIsIHRydWUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIERFVEVDVF9GUF9FWENFUFQsIHNfY2xhX3BhcnNlciwgZmFsc2UgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotb3V0cHV0X2Zvcm1hdAotcmVwb3J0X2Zvcm1hdCgpCi17Ci0gICAgcmV0dXJuIHNfcmVwb3J0X2Zvcm1hdDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotb3V0cHV0X2Zvcm1hdAotbG9nX2Zvcm1hdCgpCi17Ci0gICAgcmV0dXJuIHNfbG9nX2Zvcm1hdDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjpvc3RyZWFtKgotcmVwb3J0X3NpbmsoKQotewotICAgIHN0ZDo6c3RyaW5nIHNpbmtfbmFtZSA9IHJldHJpZXZlX3BhcmFtZXRlciggUkVQT1JUX1NJTkssIHNfY2xhX3BhcnNlciwgc19lbXB0eSApOwotCi0gICAgaWYoIHNpbmtfbmFtZS5lbXB0eSgpIHx8IHNpbmtfbmFtZSA9PSAic3RkZXJyIiApCi0gICAgICAgIHJldHVybiAmc3RkOjpjZXJyOyAgICAKLSAgICAKLSAgICBpZiggc2lua19uYW1lID09ICJzdGRvdXQiICkKLSAgICAgICAgcmV0dXJuICZzdGQ6OmNvdXQ7Ci0KLSAgICBzdGF0aWMgc3RkOjpvZnN0cmVhbSBsb2dfZmlsZSggc2lua19uYW1lLmNfc3RyKCkgKTsKLSAgICByZXR1cm4gJmxvZ19maWxlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6Om9zdHJlYW0qCi1sb2dfc2luaygpCi17Ci0gICAgc3RkOjpzdHJpbmcgc2lua19uYW1lID0gcmV0cmlldmVfcGFyYW1ldGVyKCBMT0dfU0lOSywgc19jbGFfcGFyc2VyLCBzX2VtcHR5ICk7Ci0KLSAgICBpZiggc2lua19uYW1lLmVtcHR5KCkgfHwgc2lua19uYW1lID09ICJzdGRvdXQiICkKLSAgICAgICAgcmV0dXJuICZzdGQ6OmNvdXQ7ICAgIAotCi0gICAgaWYoIHNpbmtfbmFtZSA9PSAic3RkZXJyIiApCi0gICAgICAgIHJldHVybiAmc3RkOjpjZXJyOyAgICAKLQotICAgIHN0YXRpYyBzdGQ6Om9mc3RyZWFtIHJlcG9ydF9maWxlKCBzaW5rX25hbWUuY19zdHIoKSApOwotICAgIHJldHVybiAmcmVwb3J0X2ZpbGU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWxvbmcKLWRldGVjdF9tZW1vcnlfbGVha3MoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIERFVEVDVF9NRU1fTEVBS1MsIHNfY2xhX3BhcnNlciwgc3RhdGljX2Nhc3Q8bG9uZz4oMSkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW50Ci1yYW5kb21fc2VlZCgpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggUkFORE9NX1NFRUQsIHNfY2xhX3BhcnNlciwgMCwgMSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydW50aW1lX2NvbmZpZwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9zdWl0ZS5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3Rfc3VpdGUuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWEzOTZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9zdWl0ZS5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHByaXZpZGVzIGNvcmUgaW1wbGVtZW50YXRpb24gZm9yIFVuaXQgVGVzdCBGcmFtZXdvcmsuCi0vLyAgICAgICAgICAgICAgICBFeHRlbnNpb25zIGNhbiBiZSBwcm92aWRlZCBpbiBzZXBhcmF0ZSBmaWxlcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3RpbWVyLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA8PSAweDQ1MCkgXAotICAgIC8qKi8KLSAgICB1c2luZyBzdGQ6OnJhbmQ7IC8vIHJhbmQgaXMgaW4gc3RkIGFuZCByYW5kb21fc2h1ZmZsZSBpcyBpbiBfU1RMCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICB0ZXN0X3VuaXQgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVzdF91bml0Ojp0ZXN0X3VuaXQoIGNvbnN0X3N0cmluZyBuYW1lLCB0ZXN0X3VuaXRfdHlwZSB0ICkKLTogcF90eXBlKCB0ICkKLSwgcF90eXBlX25hbWUoIHQgPT0gdHV0X2Nhc2UgPyAiY2FzZSIgOiAic3VpdGUiICkKLSwgcF9pZCggSU5WX1RFU1RfVU5JVF9JRCApCi0sIHBfbmFtZSggc3RkOjpzdHJpbmcoIG5hbWUuYmVnaW4oKSwgbmFtZS5zaXplKCkgKSApCi0sIHBfZW5hYmxlZCggdHJ1ZSApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfdW5pdDo6fnRlc3RfdW5pdCgpCi17Ci0gICAgZnJhbWV3b3JrOjpkZXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3VuaXQ6OmRlcGVuZHNfb24oIHRlc3RfdW5pdCogdHUgKQotewotICAgIG1fZGVwZW5kZW5jaWVzLnB1c2hfYmFjayggdHUtPnBfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotdGVzdF91bml0OjpjaGVja19kZXBlbmRlbmNpZXMoKSBjb25zdAotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF91bml0X2lkLCB0dV9pZCwgbV9kZXBlbmRlbmNpZXMgKSB7Ci0gICAgICAgIGlmKCAhdW5pdF90ZXN0OjpyZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0dV9pZCApLnBhc3NlZCgpICkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF91bml0OjppbmNyZWFzZV9leHBfZmFpbCggdW5zaWduZWQgbnVtICkKLXsKLSAgICBwX2V4cGVjdGVkX2ZhaWx1cmVzLnZhbHVlICs9IG51bTsKLQotICAgIGlmKCBwX3BhcmVudF9pZCAhPSAwICkKLSAgICAgICAgZnJhbWV3b3JrOjpnZXQ8dGVzdF9zdWl0ZT4oIHBfcGFyZW50X2lkICkuaW5jcmVhc2VfZXhwX2ZhaWwoIG51bSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlc3RfY2FzZTo6dGVzdF9jYXNlKCBjb25zdF9zdHJpbmcgbmFtZSwgY2FsbGJhY2swPD4gY29uc3QmIHRlc3RfZnVuYyApCi06IHRlc3RfdW5pdCggbmFtZSwgc3RhdGljX2Nhc3Q8dGVzdF91bml0X3R5cGU+KHR5cGUpICkKLSwgbV90ZXN0X2Z1bmMoIHRlc3RfZnVuYyApCi17Ci0gICAgIC8vICEhIHdlaXJkZXN0IE1TVkMgQlVHOyB0cnkgdG8gcmVtb3ZlIHRoaXMgc3RhdGVtZW50OyBsb29rcyBsaWtlIGl0IGVhdHMgZmlyc3QgdG9rZW4gb2YgbmV4dCBzdGF0ZW1lbnQgICAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPDEzMDApICAgCi0gICAgIDA7ICAgCi0jZW5kaWYgCi0gICAgZnJhbWV3b3JrOjpyZWdpc3Rlcl90ZXN0X3VuaXQoIHRoaXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgdGVzdF9zdWl0ZSAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3N1aXRlOjp0ZXN0X3N1aXRlKCBjb25zdF9zdHJpbmcgbmFtZSApCi06IHRlc3RfdW5pdCggbmFtZSwgc3RhdGljX2Nhc3Q8dGVzdF91bml0X3R5cGU+KHR5cGUpICkKLXsKLSAgICBmcmFtZXdvcms6OnJlZ2lzdGVyX3Rlc3RfdW5pdCggdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3N1aXRlOjphZGQoIHRlc3RfdW5pdCogdHUsIGNvdW50ZXJfdCBleHBlY3RlZF9mYWlsdXJlcywgdW5zaWduZWQgdGltZW91dCApCi17Ci0gICAgaWYoIHRpbWVvdXQgIT0gMCApCi0gICAgICAgIHR1LT5wX3RpbWVvdXQudmFsdWUgPSB0aW1lb3V0OwotCi0gICAgbV9tZW1iZXJzLnB1c2hfYmFjayggdHUtPnBfaWQgKTsKLSAgICB0dS0+cF9wYXJlbnRfaWQudmFsdWUgPSBwX2lkOwotCi0gICAgaWYoIHR1LT5wX2V4cGVjdGVkX2ZhaWx1cmVzICkKLSAgICAgICAgaW5jcmVhc2VfZXhwX2ZhaWwoIHR1LT5wX2V4cGVjdGVkX2ZhaWx1cmVzICk7Ci0KLSAgICBpZiggZXhwZWN0ZWRfZmFpbHVyZXMgKQotICAgICAgICB0dS0+aW5jcmVhc2VfZXhwX2ZhaWwoIGV4cGVjdGVkX2ZhaWx1cmVzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3Rfc3VpdGU6OmFkZCggdGVzdF91bml0X2dlbmVyYXRvciBjb25zdCYgZ2VuLCB1bnNpZ25lZCB0aW1lb3V0ICkKLXsKLSAgICB0ZXN0X3VuaXQqIHR1OwotICAgIHdoaWxlKCh0dSA9IGdlbi5uZXh0KCksIHR1KSkKLSAgICAgICAgYWRkKCB0dSwgMCwgdGltZW91dCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3N1aXRlOjpyZW1vdmUoIHRlc3RfdW5pdF9pZCBpZCApCi17Ci0gICAgc3RkOjp2ZWN0b3I8dGVzdF91bml0X2lkPjo6aXRlcmF0b3IgaXQgPSBzdGQ6OmZpbmQoIG1fbWVtYmVycy5iZWdpbigpLCBtX21lbWJlcnMuZW5kKCksIGlkICk7Ci0KLSAgICBpZiggaXQgIT0gbV9tZW1iZXJzLmVuZCgpICkKLSAgICAgICAgbV9tZW1iZXJzLmVyYXNlKCBpdCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3VuaXRfaWQKLXRlc3Rfc3VpdGU6OmdldCggY29uc3Rfc3RyaW5nIHR1X25hbWUgKSBjb25zdAotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF91bml0X2lkLCBpZCwgbV9tZW1iZXJzICkgewotICAgICAgICBpZiggdHVfbmFtZSA9PSBmcmFtZXdvcms6OmdldCggaWQsIHV0X2RldGFpbDo6dGVzdF9pZF8yX3VuaXRfdHlwZSggaWQgKSApLnBfbmFtZS5nZXQoKSApCi0gICAgICAgICAgICByZXR1cm4gaWQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIElOVl9URVNUX1VOSVRfSUQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X2Nhc2UgY29uc3QmIHRjLCB0ZXN0X3RyZWVfdmlzaXRvciYgViApCi17Ci0gICAgaWYoIHRjLnBfZW5hYmxlZCApCi0gICAgVi52aXNpdCggdGMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3N1aXRlIGNvbnN0JiBzdWl0ZSwgdGVzdF90cmVlX3Zpc2l0b3ImIFYgKQotewotICAgIGlmKCAhc3VpdGUucF9lbmFibGVkIHx8ICFWLnRlc3Rfc3VpdGVfc3RhcnQoIHN1aXRlICkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0cnkgewotICAgICAgICBpZiggcnVudGltZV9jb25maWc6OnJhbmRvbV9zZWVkKCkgPT0gMCApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF91bml0X2lkLCBpZCwgc3VpdGUubV9tZW1iZXJzICkKLSAgICAgICAgICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGlkLCBWICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnZlY3Rvcjx0ZXN0X3VuaXRfaWQ+IG1lbWJlcnMoIHN1aXRlLm1fbWVtYmVycyApOwotICAgICAgICAgICAgc3RkOjpyYW5kb21fc2h1ZmZsZSggbWVtYmVycy5iZWdpbigpLCBtZW1iZXJzLmVuZCgpICk7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3RfdW5pdF9pZCwgaWQsIG1lbWJlcnMgKQotICAgICAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggaWQsIFYgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICB9IGNhdGNoKCB0ZXN0X2JlaW5nX2Fib3J0ZWQgY29uc3QmICkgewotICAgICAgICBWLnRlc3Rfc3VpdGVfZmluaXNoKCBzdWl0ZSApOwotICAgICAgICBmcmFtZXdvcms6OnRlc3RfdW5pdF9hYm9ydGVkKCBzdWl0ZSApOwotCi0gICAgICAgIHRocm93OwotICAgIH0KLQotICAgIFYudGVzdF9zdWl0ZV9maW5pc2goIHN1aXRlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF91bml0X2lkIGlkLCB0ZXN0X3RyZWVfdmlzaXRvciYgViApCi17Ci0gICAgaWYoIHV0X2RldGFpbDo6dGVzdF9pZF8yX3VuaXRfdHlwZSggaWQgKSA9PSB0dXRfY2FzZSApCi0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggZnJhbWV3b3JrOjpnZXQ8dGVzdF9jYXNlPiggaWQgKSwgViApOwotICAgIGVsc2UKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBmcmFtZXdvcms6OmdldDx0ZXN0X3N1aXRlPiggaWQgKSwgViApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgdGVzdF9jYXNlX2NvdW50ZXIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXRlc3RfY2FzZV9jb3VudGVyOjp2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi17Ci0gICAgaWYoIHRjLnBfZW5hYmxlZCApCi0gICAgICAgICsrcF9jb3VudC52YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgb2JqZWN0IGdlbmVyYXRvcnMgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotc3RkOjpzdHJpbmcKLW5vcm1hbGl6ZV90ZXN0X2Nhc2VfbmFtZSggY29uc3Rfc3RyaW5nIG5hbWUgKQotewotICAgIHJldHVybiAoIG5hbWVbMF0gPT0gJyYnCi0gICAgICAgICAgICAgICAgPyBzdGQ6OnN0cmluZyggbmFtZS5iZWdpbigpKzEsIG5hbWUuc2l6ZSgpLTEgKQotICAgICAgICAgICAgICAgIDogc3RkOjpzdHJpbmcoIG5hbWUuYmVnaW4oKSwgbmFtZS5zaXplKCkgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCB0ZXN0X2Nhc2UqIHRjLCBjb3VudGVyX3QgZXhwX2ZhaWwgKQotewotICAgIGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPmFkZCggdGMsIGV4cF9mYWlsICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBjb25zdF9zdHJpbmcgdHNfbmFtZSApCi17Ci0gICAgdGVzdF91bml0X2lkIGlkID0gY3Vycl90c19zdG9yZSgpLmJhY2soKS0+Z2V0KCB0c19uYW1lICk7Ci0KLSAgICB0ZXN0X3N1aXRlKiB0czsKLQotICAgIGlmKCBpZCAhPSBJTlZfVEVTVF9VTklUX0lEICkgewotICAgICAgICB0cyA9ICZmcmFtZXdvcms6OmdldDx0ZXN0X3N1aXRlPiggaWQgKTsgLy8gISEgdGVzdCBmb3IgaW52YWxpZCB0dSB0eXBlCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggdHMtPnBfcGFyZW50X2lkID09IGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPnBfaWQgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRzID0gbmV3IHRlc3Rfc3VpdGUoIHRzX25hbWUgKTsKLSAgICAgICAgY3Vycl90c19zdG9yZSgpLmJhY2soKS0+YWRkKCB0cyApOwotICAgIH0KLQotICAgIGN1cnJfdHNfc3RvcmUoKS5wdXNoX2JhY2soIHRzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCB0ZXN0X3VuaXRfZ2VuZXJhdG9yIGNvbnN0JiB0Y19nZW4gKQotewotICAgIGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPmFkZCggdGNfZ2VuICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBpbnQgKQotewotICAgIGlmKCBjdXJyX3RzX3N0b3JlKCkuc2l6ZSgpID09IDAgKQotICAgICAgICByZXR1cm47IC8vIHJlcG9ydCBlcnJvcj8KLQotICAgIGN1cnJfdHNfc3RvcmUoKS5wb3BfYmFjaygpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6Omxpc3Q8dGVzdF9zdWl0ZSo+JgotYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyOjpjdXJyX3RzX3N0b3JlKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpsaXN0PHRlc3Rfc3VpdGUqPiBpbnN0KCAxLCAmZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpICk7Ci0gICAgcmV0dXJuIGluc3Q7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZ2xvYmFsX2ZpeHR1cmUgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWdsb2JhbF9maXh0dXJlOjpnbG9iYWxfZml4dHVyZSgpCi17Ci0gICAgZnJhbWV3b3JrOjpyZWdpc3Rlcl9vYnNlcnZlciggKnRoaXMgKTsKLX0gCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9sb2dfZm9ybWF0dGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9sb2dfZm9ybWF0dGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkzMjFjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfbG9nX2Zvcm1hdHRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIFhNTCBMb2cgZm9ybWF0dGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC94bWxfbG9nX2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3htbF9wcmludGVyLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotc3RhdGljIGNvbnN0X3N0cmluZyB0dV90eXBlX25hbWUoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIHJldHVybiB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgPyAiVGVzdENhc2UiIDogIlRlc3RTdWl0ZSI7Ci19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHhtbF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyLCBjb3VudGVyX3QgKQotewotICAgIG9zdHIgIDw8ICI8VGVzdExvZz4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyICA8PCAiPC9UZXN0TG9nPiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyICA8PCAiPEJ1aWxkSW5mbyIKLSAgICAgICAgICAgIDw8ICIgcGxhdGZvcm0iICA8PCBhdHRyX3ZhbHVlKCkgPDwgTkROQk9PU1RfUExBVEZPUk0KLSAgICAgICAgICAgIDw8ICIgY29tcGlsZXIiICA8PCBhdHRyX3ZhbHVlKCkgPDwgTkROQk9PU1RfQ09NUElMRVIKLSAgICAgICAgICAgIDw8ICIgc3RsIiAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgTkROQk9PU1RfU1RETElCCi0gICAgICAgICAgICA8PCAiIGJvb3N0PVwiIiAgPDwgTkROQk9PU1RfVkVSU0lPTi8xMDAwMDAgICAgIDw8ICIuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX1ZFUlNJT04vMTAwICUgMTAwMCA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9WRVJTSU9OICUgMTAwICAgICAgPDwgJ1wiJwotICAgICAgICAgICAgPDwgIi8+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBvc3RyIDw8ICI8IiA8PCB0dV90eXBlX25hbWUoIHR1ICkgPDwgIiBuYW1lIiA8PCBhdHRyX3ZhbHVlKCkgPDwgdHUucF9uYW1lLmdldCgpIDw8ICI+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9jYXNlICkKLSAgICAgICAgb3N0ciA8PCAiPFRlc3RpbmdUaW1lPiIgPDwgZWxhcHNlZCA8PCAiPC9UZXN0aW5nVGltZT4iOwotICAgICAgICAKLSAgICBvc3RyIDw8ICI8LyIgPDwgdHVfdHlwZV9uYW1lKCB0dSApIDw8ICI+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9za2lwcGVkKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIG9zdHIgPDwgIjwiIDw8IHR1X3R5cGVfbmFtZSggdHUgKQotICAgICAgICAgPDwgIiBuYW1lIiAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHUucF9uYW1lLmdldCgpCi0gICAgICAgICA8PCAiIHNraXBwZWQiIDw8IGF0dHJfdmFsdWUoKSA8PCAieWVzIgotICAgICAgICAgPDwgIi8+IjsKLX0KLSAgICAKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmIGNoZWNrcG9pbnRfZGF0YSwgZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotewotICAgIGV4ZWN1dGlvbl9leGNlcHRpb246OmxvY2F0aW9uIGNvbnN0JiBsb2MgPSBleC53aGVyZSgpOwotCi0gICAgb3N0ciA8PCAiPEV4Y2VwdGlvbiBmaWxlIiA8PCBhdHRyX3ZhbHVlKCkgPDwgbG9jLm1fZmlsZV9uYW1lCi0gICAgICAgICA8PCAiIGxpbmUiICAgICAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgbG9jLm1fbGluZV9udW07Ci0KLSAgICBpZiggIWxvYy5tX2Z1bmN0aW9uLmlzX2VtcHR5KCkgKQotICAgICAgICBvc3RyIDw8ICIgZnVuY3Rpb24iICAgPDwgYXR0cl92YWx1ZSgpIDw8IGxvYy5tX2Z1bmN0aW9uOwotCi0gICAgb3N0ciA8PCAiPiIgPDwgY2RhdGEoKSA8PCBleC53aGF0KCk7Ci0KLSAgICBpZiggIWNoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZS5pc19lbXB0eSgpICkgewotICAgICAgICBvc3RyIDw8ICI8TGFzdENoZWNrcG9pbnQgZmlsZSIgPDwgYXR0cl92YWx1ZSgpIDw8IGNoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZQotICAgICAgICAgICAgIDw8ICIgbGluZSIgICAgICAgICAgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IGNoZWNrcG9pbnRfZGF0YS5tX2xpbmVfbnVtCi0gICAgICAgICAgICAgPDwgIj4iCi0gICAgICAgICAgICAgPDwgY2RhdGEoKSA8PCBjaGVja3BvaW50X2RhdGEubV9tZXNzYWdlCi0gICAgICAgICAgICAgPDwgIjwvTGFzdENoZWNrcG9pbnQ+IjsKLSAgICB9Ci0KLSAgICBvc3RyIDw8ICI8L0V4Y2VwdGlvbj4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiBlbnRyeV9kYXRhLCBsb2dfZW50cnlfdHlwZXMgbGV0ICkKLXsKLSAgICBzdGF0aWMgbGl0ZXJhbF9zdHJpbmcgeG1sX3RhZ3NbXSA9IHsgIkluZm8iLCAiTWVzc2FnZSIsICJXYXJuaW5nIiwgIkVycm9yIiwgIkZhdGFsRXJyb3IiIH07Ci0KLSAgICBtX2N1cnJfdGFnID0geG1sX3RhZ3NbbGV0XTsKLSAgICBvc3RyIDw8ICc8JyA8PCBtX2N1cnJfdGFnCi0gICAgICAgICA8PCBORE5CT09TVF9URVNUX0woICIgZmlsZSIgKSA8PCBhdHRyX3ZhbHVlKCkgPDwgZW50cnlfZGF0YS5tX2ZpbGVfbmFtZQotICAgICAgICAgPDwgTkROQk9PU1RfVEVTVF9MKCAiIGxpbmUiICkgPDwgYXR0cl92YWx1ZSgpIDw8IGVudHJ5X2RhdGEubV9saW5lX251bQotICAgICAgICAgPDwgTkROQk9PU1RfVEVTVF9MKCAiPjwhW0NEQVRBWyIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiBvc3RyLCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIG9zdHIgPDwgdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgPDwgTkROQk9PU1RfVEVTVF9MKCAiXV0+PC8iICkgPDwgbV9jdXJyX3RhZyA8PCBORE5CT09TVF9URVNUX0woICI+IiApOwotCi0gICAgbV9jdXJyX3RhZy5jbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfcmVwb3J0X2Zvcm1hdHRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfcmVwb3J0X2Zvcm1hdHRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyYjI4YTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogWE1MIHJlcG9ydCBmb3JtYXR0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMveG1sX3ByaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotdm9pZAoteG1sX3JlcG9ydF9mb3JtYXR0ZXI6OnJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgPDwgIjxUZXN0UmVzdWx0PiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9yZXBvcnRfZm9ybWF0dGVyOjpyZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciA8PCAiPC9UZXN0UmVzdWx0PiI7Ci19Ci0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX3JlcG9ydF9mb3JtYXR0ZXI6OnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciA9IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHR1LnBfaWQgKTsKLQotICAgIGNvbnN0X3N0cmluZyBkZXNjcjsKLQotICAgIGlmKCB0ci5wYXNzZWQoKSApCi0gICAgICAgIGRlc2NyID0gInBhc3NlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9za2lwcGVkICkKLSAgICAgICAgZGVzY3IgPSAic2tpcHBlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9hYm9ydGVkICkKLSAgICAgICAgZGVzY3IgPSAiYWJvcnRlZCI7Ci0gICAgZWxzZQotICAgICAgICBkZXNjciA9ICJmYWlsZWQiOwotCi0gICAgb3N0ciA8PCAnPCcgPDwgKCB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgPyAiVGVzdENhc2UiIDogIlRlc3RTdWl0ZSIgKSAKLSAgICAgICAgIDw8ICIgbmFtZSIgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0dS5wX25hbWUuZ2V0KCkKLSAgICAgICAgIDw8ICIgcmVzdWx0IiAgIDw8IGF0dHJfdmFsdWUoKSA8PCBkZXNjcgotICAgICAgICAgPDwgIiBhc3NlcnRpb25zX3Bhc3NlZCIgICAgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX2Fzc2VydGlvbnNfcGFzc2VkCi0gICAgICAgICA8PCAiIGFzc2VydGlvbnNfZmFpbGVkIiAgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQKLSAgICAgICAgIDw8ICIgZXhwZWN0ZWRfZmFpbHVyZXMiICAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF9leHBlY3RlZF9mYWlsdXJlczsKLQotICAgIGlmKCB0dS5wX3R5cGUgPT0gdHV0X3N1aXRlICkKLSAgICAgICAgb3N0ciA8PCAiIHRlc3RfY2FzZXNfcGFzc2VkIiAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF90ZXN0X2Nhc2VzX3Bhc3NlZAotICAgICAgICAgICAgIDw8ICIgdGVzdF9jYXNlc19mYWlsZWQiICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX3Rlc3RfY2FzZXNfZmFpbGVkCi0gICAgICAgICAgICAgPDwgIiB0ZXN0X2Nhc2VzX3NraXBwZWQiICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfdGVzdF9jYXNlc19za2lwcGVkCi0gICAgICAgICAgICAgPDwgIiB0ZXN0X2Nhc2VzX2Fib3J0ZWQiICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfdGVzdF9jYXNlc19hYm9ydGVkOwotICAgICAgICAgICAgIAotICAgIAotICAgIG9zdHIgPDwgJz4nOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfcmVwb3J0X2Zvcm1hdHRlcjo6dGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciA8PCAiPC8iIDw8ICggdHUucF90eXBlID09IHR1dF9jYXNlID8gIlRlc3RDYXNlIiA6ICJUZXN0U3VpdGUiICkgPDwgJz4nOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfcmVwb3J0X2Zvcm1hdHRlcjo6ZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0JiB0dSwgc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICB0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0dSwgb3N0ciApOwotICAgIHRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0dSwgb3N0ciApOyAgICAKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMTU4YzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEZhY2lsaXRpZXMgdG8gcGVyZm9ybSBpbnRlcmFjdGlvbi1iYXNlZCB0ZXN0aW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0hQUF8xMTIxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9IUFBfMTEyMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9FUE9JTlQoIGRlc2NyaXB0aW9uICkgXAotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmV4Y2VwdGlvbl9wb2ludCggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18sIGRlc2NyaXB0aW9uICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfRFBPSU5UICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX0RQT0lOVCgpIFwKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5kZWNpc2lvbl9wb2ludCggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18gKQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfU0NPUEUoIHNjb3BlX25hbWUgKSBcCi0gICAgOjpuZG5ib29zdDo6aXRlc3Q6OnNjb3BlX2d1YXJkIGl0ZXN0X3Njb3BlX2d1YXJkICMjIF9fTElORV9fKCBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCBfX0xJTkVfXywgTkROQk9PU1RfU1RSSU5HSVpFKHNjb3BlX25hbWUpICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9ORVcgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX05FVyggdHlwZV9uYW1lICkgXAotICAgIG5ldyAoIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18gKSApIHR5cGVfbmFtZQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX0RBVEFfRkxPVyAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfREFUQV9GTE9XKCB2ICkgXAotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmdlbmVyaWNfZGF0YV9mbG93KCB2ICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfUkVUVVJOICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX1JFVFVSTiggdHlwZSwgZGVmYXVsdF92YWx1ZSApIFwKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5nZW5lcmljX3JldHVybjx0eXBlPiggZGVmYXVsdF92YWx1ZSApCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfTU9DS19GVU5DICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9NT0NLX0ZVTkMoIGZ1bmN0aW9uX25hbWUgKSAgICAgICAgICBcCi0gICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIGZ1bmN0aW9uX25hbWUgKTsgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoIDAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiA6Om5kbmJvb3N0OjppdGVzdDo6bW9ja19vYmplY3Q8Pjo6cHJvdG90eXBlKCk7ICBcCi0vKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBpdGVzdCB7IC8vIGludGVyYWN0aW9uLWJhc2VkIHRlc3RpbmcKLQotdXNpbmcgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmc7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIG1hbmFnZXIgewotcHVibGljOgotICAgIC8vIGluc3RhbmNlIGFjY2VzcwotICAgIHN0YXRpYyBtYW5hZ2VyJiAgICAgaW5zdGFuY2UoKSB7IHJldHVybiAqaW5zdGFuY2VfcHRyKCk7IH0KLQotICAgIC8vIE1vY2sgb2JqZWN0cyBpbnRlcmZhY2UgaG9va3MKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGV4Y2VwdGlvbl9wb2ludCggY29uc3Rfc3RyaW5nIC8qZmlsZSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgLypsaW5lX251bSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIC8qZGVzY3IqLyApe30KLSAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGRlY2lzaW9uX3BvaW50KCBjb25zdF9zdHJpbmcgLypmaWxlKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IC8qbGluZV9udW0qLyApICAgICAgICAgIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkICAgIGVudGVyX3Njb3BlKCBjb25zdF9zdHJpbmcgLypmaWxlKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IC8qbGluZV9udW0qLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9zdHJpbmcgLypzY29wZV9uYW1lKi8peyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbGVhdmVfc2NvcGUoIHVuc2lnbmVkICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBhbGxvY2F0ZWQoIGNvbnN0X3N0cmluZyAvKmZpbGUqLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IC8qbGluZV9udW0qLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIC8qcCovLCBzdGQ6OnNpemVfdCAvKnMqLyApICAgICAgICAge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGZyZWVkKCB2b2lkKiAvKnAqLyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZGF0YV9mbG93KCBjb25zdF9zdHJpbmcgLypkKi8gKSAgICAgICAgICAgICAgICAgICAgIHt9Ci0gICAgdmlydHVhbCBzdGQ6OnN0cmluZyByZXR1cm5fdmFsdWUoIGNvbnN0X3N0cmluZyAvKmRlZmF1bHRfdmFsdWUgKi8gKSAgICAgeyByZXR1cm4gIiI7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBnZW5lcmljX2RhdGFfZmxvdyggVCBjb25zdCYgdCApCi0gICAgewotICAgICAgICB3cmFwX3N0cmluZ3N0cmVhbSB3czsKLQotICAgICAgICBkYXRhX2Zsb3coICh3cyA8PCB0KS5zdHIoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgotICAgIFQgICAgICAgICAgICAgICAgICAgZ2VuZXJpY19yZXR1cm4oIERlZmF1bHRWYWx1ZVR5cGUgY29uc3QmIGR2ICkKLSAgICB7Ci0gICAgICAgIHdyYXBfc3RyaW5nc3RyZWFtIHdzOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiByZXMgPSByZXR1cm5fdmFsdWUoICh3cyA8PCBkdikuc3RyKCkgKTsKLQotICAgICAgICBpZiggcmVzLmVtcHR5KCkgKQotICAgICAgICAgICAgcmV0dXJuIGR2OwotCi0gICAgICAgIHJldHVybiBsZXhpY2FsX2Nhc3Q8VD4oIHJlcyApOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIG1hbmFnZXIoKTsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgCi1wdWJsaWM6Ci0jZW5kaWYKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH5tYW5hZ2VyKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IGR1bW15X2NvbnN0cnt9OwotICAgIGV4cGxpY2l0IG1hbmFnZXIoIGR1bW15X2NvbnN0ciogKSB7fQotCi0gICAgc3RhdGljIG1hbmFnZXIqICAgICBpbnN0YW5jZV9wdHIoIGJvb2wgcmVzZXQgPSBmYWxzZSwgbWFuYWdlciogcHRyID0gMCApOwotfTsgLy8gbWFuYWdlcgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzY29wZV9ndWFyZCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHNjb3BlX2d1YXJkIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHNjb3BlX2d1YXJkKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBzY29wZV9uYW1lICkKLSAgICB7Ci0gICAgICAgIG1fc2NvcGVfaW5kZXggPSBtYW5hZ2VyOjppbnN0YW5jZSgpLmVudGVyX3Njb3BlKCBmaWxlLCBsaW5lX251bSwgc2NvcGVfbmFtZSApOwotICAgIH0KLSAgICB+c2NvcGVfZ3VhcmQoKQotICAgIHsKLSAgICAgICAgbWFuYWdlcjo6aW5zdGFuY2UoKS5sZWF2ZV9zY29wZSggbV9zY29wZV9pbmRleCApOwotICAgIH0KLQotICAgIHVuc2lnbmVkIG1fc2NvcGVfaW5kZXg7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBsb2NhdGlvbiB7Ci0gICAgbG9jYXRpb24oIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lICkgCi0gICAgOiBtX2ZpbGVfbmFtZSggZmlsZSApCi0gICAgLCBtX2xpbmVfbnVtKCBsaW5lICkKLSAgICB7fQotCi0gICAgY29uc3Rfc3RyaW5nICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICBtX2xpbmVfbnVtOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGl0ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgb3BlcmF0b3IgbmV3IG92ZXJsb2FkICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lURVNUX05PX05FV19PVkVSTE9BRFMpCi0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdGRsaWI+Ci0KLSMgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6Om1hbGxvYzsgdXNpbmcgOjpmcmVlOyB9Ci0jIGVuZGlmCi0jIGlmZGVmIF9DUlREQkdfTUFQX0FMTE9DCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpfbWFsbG9jX2RiZzsgdXNpbmcgOjpfZnJlZV9kYmc7IH0KLSMgZW5kaWYKLQotaW5saW5lIHZvaWQqCi1vcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90IHMsIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiBjb25zdCYgbCApCi17Ci0gICAgdm9pZCogcmVzID0gc3RkOjptYWxsb2MocyA/IHMgOiAxKTsKLQotICAgIGlmKCByZXMgKQotICAgICAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5hbGxvY2F0ZWQoIGwubV9maWxlX25hbWUsIGwubV9saW5lX251bSwgcmVzLCBzICk7Ci0gICAgZWxzZQotICAgICAgICB0aHJvdyBzdGQ6OmJhZF9hbGxvYygpOwotICAgICAgICAKLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZCoKLW9wZXJhdG9yIG5ld1tdKCBzdGQ6OnNpemVfdCBzLCA6Om5kbmJvb3N0OjppdGVzdDo6bG9jYXRpb24gY29uc3QmIGwgKQotewotICAgIHZvaWQqIHJlcyA9IHN0ZDo6bWFsbG9jKHMgPyBzIDogMSk7Ci0KLSAgICBpZiggcmVzICkKLSAgICAgICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuYWxsb2NhdGVkKCBsLm1fZmlsZV9uYW1lLCBsLm1fbGluZV9udW0sIHJlcywgcyApOwotICAgIGVsc2UKLSAgICAgICAgdGhyb3cgc3RkOjpiYWRfYWxsb2MoKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQKLW9wZXJhdG9yIGRlbGV0ZSggdm9pZCogcCwgOjpuZG5ib29zdDo6aXRlc3Q6OmxvY2F0aW9uIGNvbnN0JiApCi17Ci0gICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuZnJlZWQoIHAgKTsKLQotICAgIHN0ZDo6ZnJlZSggcCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZAotb3BlcmF0b3IgZGVsZXRlW10oIHZvaWQqIHAsIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiBjb25zdCYgKQotewotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmZyZWVkKCBwICk7Ci0KLSAgICBzdGQ6OmZyZWUoIHAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9IUFBfMTEyMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbWluaW1hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbWluaW1hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMDU5ZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21pbmltYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDItMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIG1pbmltYWwgdGVzdGluZyBkZWZpbml0aW9ucyBhbmQgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTUlOSU1BTF9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUlOSU1BTF9IUFBfMDcxODk0R0VSCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0soZXhwKSAgICAgICBcCi0gICggKGV4cCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgPyBzdGF0aWNfY2FzdDx2b2lkPigwKSAgIFwKLSAgICAgIDogbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6cmVwb3J0X2Vycm9yKCNleHAsX19GSUxFX18sX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pICkKLQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFKGV4cCkgICAgIFwKLSAgKCAoZXhwKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA/IHN0YXRpY19jYXN0PHZvaWQ+KDApICAgXAotICAgICAgOiBuZG5ib29zdDo6bWluaW1hbF90ZXN0OjpyZXBvcnRfY3JpdGljYWxfZXJyb3IoI2V4cCxfX0ZJTEVfXyxfX0xJTkVfXyxORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OKSkKLQotI2RlZmluZSBORE5CT09TVF9FUlJPUiggbXNnXyApICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6cmVwb3J0X2Vycm9yKCAobXNnXyksX19GSUxFX18sX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIHRydWUgKQotI2RlZmluZSBORE5CT09TVF9GQUlMKCBtc2dfICkgICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6cmVwb3J0X2NyaXRpY2FsX2Vycm9yKCAobXNnXyksX19GSUxFX18sX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIHRydWUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9pbXBsL2RlYnVnLmlwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+ICAgICAgICAgICAgLy8gZm9yIGV4aXQgY29kZXMjaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+ICAgICAgICAgICAgLy8gZm9yIGV4aXQgY29kZXMKLSNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4gICAvLyBmb3IgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4gICAgICAgICAgICAgICAgICAgICAvLyBzdGQ6OmNlcnIsIHN0ZDo6ZW5kbAotI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6c3RyaW5nCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWludCB0ZXN0X21haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsgIC8vIHByb3RvdHlwZSBmb3IgdXNlcnMgdGVzdF9tYWluKCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBtaW5pbWFsX3Rlc3QgewotCi10eXBlZGVmIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBjb25zdF9zdHJpbmc7Ci0KLWlubGluZSB1bml0X3Rlc3Q6OmNvdW50ZXJfdCYgZXJyb3JzX2NvdW50ZXIoKSB7IHN0YXRpYyB1bml0X3Rlc3Q6OmNvdW50ZXJfdCBlYyA9IDA7IHJldHVybiBlYzsgfQotCi1pbmxpbmUgdm9pZAotcmVwb3J0X2Vycm9yKCBjb25zdCBjaGFyKiBtc2csIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdF9zdHJpbmcgZnVuY19uYW1lLCBib29sIGlzX21zZyA9IGZhbHNlICkKLXsKLSAgICArK2Vycm9yc19jb3VudGVyKCk7Ci0gICAgc3RkOjpjZXJyIDw8IGZpbGUgPDwgIigiIDw8IGxpbmUgPDwgIik6ICI7Ci0KLSAgICBpZiggaXNfbXNnICkKLSAgICAgICAgc3RkOjpjZXJyIDw8IG1zZzsKLSAgICBlbHNlCi0gICAgICAgIHN0ZDo6Y2VyciA8PCAidGVzdCAiIDw8IG1zZyA8PCAiIGZhaWxlZCI7Ci0KLSAgICBpZiggZnVuY19uYW1lICE9ICIodW5rbm93bikiICkKLSAgICAgICAgc3RkOjpjZXJyIDw8ICIgaW4gZnVuY3Rpb246ICciIDw8IGZ1bmNfbmFtZSA8PCAiJyI7Ci0KLSAgICBzdGQ6OmNlcnIgPDwgc3RkOjplbmRsOwotfQotCi1pbmxpbmUgdm9pZAotcmVwb3J0X2NyaXRpY2FsX2Vycm9yKCBjb25zdCBjaGFyKiBtc2csIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdF9zdHJpbmcgZnVuY19uYW1lLCBib29sIGlzX21zZyA9IGZhbHNlICkKLXsKLSAgICByZXBvcnRfZXJyb3IoIG1zZywgZmlsZSwgbGluZSwgZnVuY19uYW1lLCBpc19tc2cgKTsKLQotICAgIHRocm93IG5kbmJvb3N0OjpleGVjdXRpb25fYWJvcnRlZCgpOwotfQotCi1jbGFzcyBjYWxsZXIgewotcHVibGljOgotICAgIC8vIGNvbnN0cnVjdG9yCi0gICAgY2FsbGVyKCBpbnQgYXJnYywgY2hhcioqIGFyZ3YgKQotICAgIDogbV9hcmdjKCBhcmdjICksIG1fYXJndiggYXJndiApIHt9Ci0KLSAgICAvLyBleGVjdXRpb24gbW9uaXRvciBob29rIGltcGxlbWVudGF0aW9uCi0gICAgaW50IG9wZXJhdG9yKCkoKSB7IHJldHVybiB0ZXN0X21haW4oIG1fYXJnYywgbV9hcmd2ICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgICAgICAgICBtX2FyZ2M7Ci0gICAgY2hhcioqICAgICAgbV9hcmd2OwotfTsgLy8gbW9uaXRvcgotCi19IC8vIG5hbWVzcGFjZSBtaW5pbWFsX3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMIG1haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBuZG5ib29zdDo6bWluaW1hbF90ZXN0OwotCi0gICAgdHJ5IHsKLSAgICAgICAgOjpuZG5ib29zdDo6ZXhlY3V0aW9uX21vbml0b3IgZXhfbW9uOwotICAgICAgICBpbnQgcnVuX3Jlc3VsdCA9IGV4X21vbi5leGVjdXRlKCBjYWxsZXIoIGFyZ2MsIGFyZ3YgKSApOwotCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLKCBydW5fcmVzdWx0ID09IDAgfHwgcnVuX3Jlc3VsdCA9PSBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzICk7Ci0gICAgfQotICAgIGNhdGNoKCBuZG5ib29zdDo6ZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXhleCApIHsKLSAgICAgICAgaWYoIGV4ZXguY29kZSgpICE9IG5kbmJvb3N0OjpleGVjdXRpb25fZXhjZXB0aW9uOjpub19lcnJvciApCi0gICAgICAgICAgICBORE5CT09TVF9FUlJPUiggKHN0ZDo6c3RyaW5nKCAiZXhjZXB0aW9uIFwiIiApLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCggZXhleC53aGF0KCkuYmVnaW4oKSwgZXhleC53aGF0KCkuZW5kKCkgKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoICJcIiBjYXVnaHQiICkgKS5jX3N0cigpICk7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiXG4qKioqIFRlc3RpbmcgYWJvcnRlZC4iOwotICAgIH0KLQotICAgIGlmKCBuZG5ib29zdDo6bWluaW1hbF90ZXN0OjplcnJvcnNfY291bnRlcigpICE9IDAgKSB7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiXG4qKioqICIgPDwgZXJyb3JzX2NvdW50ZXIoKQotICAgICAgICAgICAgICAgICAgPDwgIiBlcnJvciIgPDwgKGVycm9yc19jb3VudGVyKCkgPiAxID8gInMiIDogIiIgKSA8PCAiIGRldGVjdGVkXG4iOwotCi0gICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF90ZXN0X2ZhaWx1cmU7Ci0gICAgfQotCi0gICAgc3RkOjpjb3V0IDw8ICJcbioqKiogbm8gZXJyb3JzIGRldGVjdGVkXG4iOwotICAgIAotICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTUlOSU1BTF9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbW9ja19vYmplY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21vY2tfb2JqZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg1ZDk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbW9ja19vYmplY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBGYWNpbGl0aWVzIHRvIHBlcmZvcm0gZXhjZXB0aW9uIHNhZmV0eV90ZXN0cwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9NT0NLX09CSkVDVF9IUFBfMTEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTU9DS19PQkpFQ1RfSFBQXzExMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWEuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgaXRlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgbW9ja19vYmplY3RfYmFzZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIG1vY2tfb2JqZWN0X2Jhc2UgewotcHVibGljOgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoKSB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgbW9ja19vYmplY3RfYmFzZSggVDEgY29uc3QmICkge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBtb2NrX29iamVjdF9iYXNlKCBUMSBjb25zdCYsIFQyIGNvbnN0JiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYgKSB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgbW9ja19vYmplY3RfYmFzZSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiwgVDQgY29uc3QmICkge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAgICBtb2NrX29iamVjdF9iYXNlKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmLCBUNCBjb25zdCYsIFQ1IGNvbnN0JiApIHt9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBtb2NrX29iamVjdCBpbXBsZW1lbnRhdGlvbiBoZWxwZXJzICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCByZXQgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om9wZXJhdG9yIG9wICk7ICAgICAgICAgIFwKLSAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoIGRlc2NyICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gcmV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBNT19VTkFSWV9PUCggb3AsIGRlc2NyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc2VsZl90eXBlIGNvbnN0JiBvcGVyYXRvciBvcCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgcHJvdG90eXBlKCkgKTsgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE1PX1VOQVJZX0JPT0xfT1AoIG9wLCBkZXNjciApICAgICAgICAgICAgICAgICAgICAgICBcCi1ib29sIG9wZXJhdG9yIG9wKCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCAoISFORE5CT09TVF9JVEVTVF9EUE9JTlQoKSkgKTsgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTU9fQklOQVJZX09QKCBvcCwgZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpMSwgdHlwZW5hbWUgQmFzZTEsaW50IGkyLCB0eXBlbmFtZSBCYXNlMj4gICAgIFwKLWlubGluZSBtb2NrX29iamVjdDxpMSxCYXNlMT4gY29uc3QmICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBtb2NrX29iamVjdDxpMSxCYXNlMT4gY29uc3QmIG1vLCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBtb2NrX29iamVjdDxpMixCYXNlMj4gY29uc3QmICkgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIG1vICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiBtbywgVCBjb25zdCYgKSAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIG1vICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBUIGNvbnN0JiwgbW9ja19vYmplY3Q8aSxCYXNlPiBjb25zdCYgbW8gKSAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIG1vICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBNT19CSU5BUllfQk9PTF9PUCggb3AsIGRlc2NyICkgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGkxLCB0eXBlbmFtZSBCYXNlMSxpbnQgaTIsIHR5cGVuYW1lIEJhc2UyPiAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIG1vY2tfb2JqZWN0PGkxLEJhc2UxPiBjb25zdCYsICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIG1vY2tfb2JqZWN0PGkyLEJhc2UyPiBjb25zdCYgKSAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgKTsgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGksIHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIG1vY2tfb2JqZWN0PGksQmFzZT4gY29uc3QmLCBUIGNvbnN0JiApICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgKTsgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGksIHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIFQgY29uc3QmLCBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiApICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgKTsgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBtb2NrX29iamVjdCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGludCBpID0gMCwgdHlwZW5hbWUgQmFzZT1tb2NrX29iamVjdF9iYXNlPgotY2xhc3MgbW9ja19vYmplY3Q7Ci0KLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlPgotY2xhc3MgbW9ja19vYmplY3QgOiBwdWJsaWMgQmFzZSB7Ci0gICAgLy8gUHJpdmF0ZSB0eXBlZWZzCi0gICAgdHlwZWRlZiBtb2NrX29iamVjdDxpLEJhc2U+IHNlbGZfdHlwZTsKLSAgICBzdHJ1Y3QgZHVtbXkgeyB2b2lkIG5vbm51bGwoKSB7fTsgfTsKLSAgICB0eXBlZGVmIHZvaWQgKGR1bW15Ojoqc2FmZV9ib29sKSgpOwotCi0gICAgLy8gcHJvdG90eXBlIGNvbnN0cnVjdG9yCi0gICAgbW9ja19vYmplY3QoIGR1bW15KiApIHt9Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgbW9ja19vYmplY3QmIHByb3RvdHlwZSgpCi0gICAgewotICAgICAgICBzdGF0aWMgbW9ja19vYmplY3QgcCggcmVpbnRlcnByZXRfY2FzdDxkdW1teSo+KDApICk7IAotICAgICAgICByZXR1cm4gcDsKLSAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBtb2NrX29iamVjdCgpCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGRlZmF1bHQgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxICkKLSAgICA6IG1vY2tfb2JqZWN0X2Jhc2UoIGFyZzEgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxLCBUMiBjb25zdCYgYXJnMiApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxLCBhcmcyICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBtb2NrX29iamVjdCggVDEgY29uc3QmIGFyZzEsIFQyIGNvbnN0JiBhcmcyLCBUMyBjb25zdCYgYXJnMyApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxLCBhcmcyLCBhcmczICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxLCBUMiBjb25zdCYgYXJnMiwgVDMgY29uc3QmIGFyZzMsIFQ0IGNvbnN0JiBhcmc0ICkKLSAgICA6IG1vY2tfb2JqZWN0X2Jhc2UoIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxLCBUMiBjb25zdCYgYXJnMiwgVDMgY29uc3QmIGFyZzMsIFQ0IGNvbnN0JiBhcmc0LCBUNSBjb25zdCYgYXJnNSApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1ICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgbW9ja19vYmplY3QoIG1vY2tfb2JqZWN0IGNvbnN0JiApCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGNvcHkgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgLy8gYXNzaWdubWVudAotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgPSggbW9ja19vYmplY3QgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoID0sICJDb3B5IGFzc2lnbm1lbnQiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgPSggVCBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggPSwgIkNvcHkgYXNzaWdubWVudCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotCi0gICAgLy8gVW5hcnkgb3BlcmF0b3JzCi0gICAgTU9fVU5BUllfQk9PTF9PUCggISwgIkxvZ2ljYWwgTk9UIG9wZXJhdG9yIiApCi0gICAgTU9fVU5BUllfT1AoICYsICJBZGRyZXNzLW9mIG9wZXJhdG9yIiApCi0gICAgTU9fVU5BUllfT1AoIH4sICJPbmUncyBjb21wbGVtZW50IG9wZXJhdG9yIiApCi0gICAgTU9fVU5BUllfT1AoICosICJQb2ludGVyIGRlcmVmZXJlbmNlIiApCi0gICAgTU9fVU5BUllfT1AoICssICJVbmFyeSBwbHVzIiApCi0KLSAgICAvLyBJbmNyZW1lbnQgYW5kIERlY3JlbWVudAotICAgIE1PX1VOQVJZX09QKCArKywgIlByZWZpeCBpbmNyZW1lbnQiICkKLSAgICBNT19VTkFSWV9PUCggLS0sICJQcmVmaXggZGVjcmVtZW50IiApCi0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciArKyhpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCArKywgIlBvc3RmaXggaW5jcmVtZW50IiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAtLShpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAtLSwgIlBvc3RmaXggZGVjcmVtZW50IiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0KLSAgICAvLyBCb29sIGNvbnRleHQgY29udmVydGlvbgotICAgIG9wZXJhdG9yIHNhZmVfYm9vbCgpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCBzYWZlX2Jvb2wsICJCb29sIGNvbnRleHQgY29udmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgIChORE5CT09TVF9JVEVTVF9EUE9JTlQoKSA/IDAgOiAmZHVtbXk6Om5vbm51bGwpICk7Ci0gICAgfQotCi0gICAgLy8gRnVuY3Rpb24tY2FsbCBvcGVyYXRvcnMKLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICgpLCAiMC1hcml0eSBmdW5jdGlvbi1jYWxsIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmIGFyZzEgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICIxLWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmLCBUMiBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICIyLWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKCkoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICIzLWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmLCBUNCBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICI0LWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiwgVDQgY29uc3QmLCBUNSBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICI1LWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIC8vIFN1YnN0cmlwdGluZwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciBbXSggVCBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggW10sICJTdWJzdHJpcHRpbmciLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIC8vIENsYXNzIG1lbWJlciBhY2Nlc3MKLSAgICBzZWxmX3R5cGUgY29uc3QqICAgIG9wZXJhdG9yLT4oKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggLT4sICJDbGFzcyBtZW1iZXIgYWNjZXNzIiwgdGhpcyApOwotICAgIH0KLX07Ci0KLS8vICEhIE1PX0JJTkFSWV9PUCggTkROQk9PU1RfUFBfQ09NTUEoKSwgIkNvbW1hIG9wZXJhdG9yIiApCi0KLU1PX0JJTkFSWV9CT09MX09QKCAhPSwgIkluZXF1YWxpdHkiICkKLU1PX0JJTkFSWV9PUCggJSwgIk1vZHVsdXMiICkKLU1PX0JJTkFSWV9PUCggJT0sICJNb2R1bHVzL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggJiwgIkJpdHdpc2UgQU5EIiApCi1NT19CSU5BUllfQk9PTF9PUCggJiYsICJMb2dpY2FsIEFORCIgKQotTU9fQklOQVJZX09QKCAmPSwgIkJpdHdpc2UgQU5EL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggKiwgIk11bHRpcGxpY2F0aW9uIiApCi1NT19CSU5BUllfT1AoICo9LCAiTXVsdGlwbGljYXRpb24vYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCArLCAiQWRkaXRpb24iICkKLU1PX0JJTkFSWV9PUCggKz0sICJBZGRpdGlvbi9hc3NpZ25tZW50IiApCi0vL01PX0JJTkFSWV9PUCggLSwgIlN1YnRyYWN0aW9uIiApCi1NT19CSU5BUllfT1AoIC09LCAiU3VidHJhY3Rpb24vYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCAtPiosICJQb2ludGVyLXRvLW1lbWJlciBzZWxlY3Rpb24iICkKLU1PX0JJTkFSWV9PUCggLywgIkRpdmlzaW9uIiApCi1NT19CSU5BUllfT1AoIC89LCAiRGl2aXNpb24vYXNzaWdubWVudCIgKQotTU9fQklOQVJZX0JPT0xfT1AoIDwsICJMZXNzIHRoYW4iICkKLU1PX0JJTkFSWV9PUCggPDw9LCAiTGVmdCBzaGlmdC9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfQk9PTF9PUCggPD0sICJMZXNzIHRoYW4gb3IgZXF1YWwgdG8iICkKLU1PX0JJTkFSWV9CT09MX09QKCA9PSwgIkVxdWFsaXR5IiApCi1NT19CSU5BUllfQk9PTF9PUCggPiwgIkdyZWF0ZXIgdGhhbiIgKQotTU9fQklOQVJZX0JPT0xfT1AoID49LCAiR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIiApCi1NT19CSU5BUllfT1AoID4+PSwgIlJpZ2h0IHNoaWZ0L2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggXiwgIkV4Y2x1c2l2ZSBPUiIgKQotTU9fQklOQVJZX09QKCBePSwgIkV4Y2x1c2l2ZSBPUi9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfT1AoIHwsICJCaXR3aXNlIGluY2x1c2l2ZSBPUiIgKQotTU9fQklOQVJZX09QKCB8PSwgIkJpdHdpc2UgaW5jbHVzaXZlIE9SL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9CT09MX09QKCB8fCwgIkxvZ2ljYWwgT1IiICkKLQotTU9fQklOQVJZX09QKCA8PCwgIkxlZnQgc2hpZnQiICkKLU1PX0JJTkFSWV9PUCggPj4sICJSaWdodCBzaGlmdCIgKQotCi19IC8vIG5hbWVzcGFjZSBpdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTU9DS19PQkpFQ1RfSFBQXzExMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MWRmMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgY29tcGlsZXIgbGlrZSBMb2cgZm9ybWF0dGVyIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGNvbXBpbGVyX2xvZ19mb3JtYXR0ZXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgY29tcGlsZXJfbG9nX2Zvcm1hdHRlciA6IHB1YmxpYyB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9ybWF0dGVyIGludGVyZmFjZQotICAgIHZvaWQgICAgbG9nX3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKTsKLSAgICB2b2lkICAgIGxvZ19maW5pc2goIHN0ZDo6b3N0cmVhbSYgKTsKLSAgICB2b2lkICAgIGxvZ19idWlsZF9pbmZvKCBzdGQ6Om9zdHJlYW0mICk7Ci0KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9zdGFydCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSApOwotICAgIHZvaWQgICAgdGVzdF91bml0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc2tpcHBlZCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSApOwotCi0gICAgdm9pZCAgICBsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mLCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiwgZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKTsKLQotICAgIHZvaWQgICAgbG9nX2VudHJ5X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBsb2dfZW50cnlfZGF0YSBjb25zdCYsIGxvZ19lbnRyeV90eXBlcyBsZXQgKTsKLSAgICB2b2lkICAgIGxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiwgY29uc3Rfc3RyaW5nIHZhbHVlICk7Ci0gICAgdm9pZCAgICBsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYsIGxhenlfb3N0cmVhbSBjb25zdCYgdmFsdWUgKTsKLSAgICB2b2lkICAgIGxvZ19lbnRyeV9maW5pc2goIHN0ZDo6b3N0cmVhbSYgKTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCAgICBwcmludF9wcmVmaXgoIHN0ZDo6b3N0cmVhbSYsIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lICk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTA3YzNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHBsYWluIHJlcG9ydCBmb3JtYXR0ZXIgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcGxhaW5fcmVwb3J0X2Zvcm1hdHRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHBsYWluX3JlcG9ydF9mb3JtYXR0ZXIgOiBwdWJsaWMgcmVzdWx0c19yZXBvcnRlcjo6Zm9ybWF0IHsKLXB1YmxpYzoKLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLQotICAgIHZvaWQgICAgZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY291bnRlcl90IG1faW5kZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9sb2dfZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX2xvZ19mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTU0OGFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX2xvZ19mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBYTUwgTG9nIGZvcm1hdHRlciBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RkZGVmPiAvLyBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHhtbF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgeG1sX2xvZ19mb3JtYXR0ZXIgOiBwdWJsaWMgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIgewotcHVibGljOgotICAgIC8vIEZvcm1hdHRlciBpbnRlcmZhY2UKLSAgICB2b2lkICAgIGxvZ19zdGFydCggc3RkOjpvc3RyZWFtJiwgY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0gICAgdm9pZCAgICBsb2dfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICk7Ci0gICAgdm9pZCAgICBsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiApOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApOwotICAgIHZvaWQgICAgdGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUgKTsKLQotICAgIHZvaWQgICAgbG9nX2V4Y2VwdGlvbiggc3RkOjpvc3RyZWFtJiwgbG9nX2NoZWNrcG9pbnRfZGF0YSBjb25zdCYsIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICk7Ci0KLSAgICB2b2lkICAgIGxvZ19lbnRyeV9zdGFydCggc3RkOjpvc3RyZWFtJiwgbG9nX2VudHJ5X2RhdGEgY29uc3QmLCBsb2dfZW50cnlfdHlwZXMgbGV0ICk7Ci0gICAgdXNpbmcgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3ZhbHVlOyAvLyBicmluZyBiYXNlIGNsYXNzIGZ1bmN0aW9ucyBpbnRvIG92ZXJsb2FkIHNldAotICAgIHZvaWQgICAgbG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mLCBjb25zdF9zdHJpbmcgdmFsdWUgKTsKLSAgICB2b2lkICAgIGxvZ19lbnRyeV9maW5pc2goIHN0ZDo6b3N0cmVhbSYgKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjb25zdF9zdHJpbmcgICAgbV9jdXJyX3RhZzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC94bWxfcmVwb3J0X2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdmMDJjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogWE1MIHJlcG9ydCBmb3JtYXR0ZXIgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgeG1sX3JlcG9ydF9mb3JtYXR0ZXIgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgeG1sX3JlcG9ydF9mb3JtYXR0ZXIgOiBwdWJsaWMgcmVzdWx0c19yZXBvcnRlcjo6Zm9ybWF0IHsKLXB1YmxpYzoKLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLQotICAgIHZvaWQgICAgZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9YTUxfUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0X3Rlc3Rfc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjBhYjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBvdXRwdXRfdGVzdF9zdHJlYW0gY2xhc3MgZGVmaW5pdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9PVVRQVVRfVEVTVF9TVFJFQU1fSFBQXzAxMjcwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX09VVFBVVF9URVNUX1NUUkVBTV9IUFBfMDEyNzA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG91dHB1dF90ZXN0X3N0cmVhbSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gY2xhc3MgdG8gYmUgdXNlZCB0byBzaW1wbGlmeSB0ZXN0aW5nIG9mIG9zdHJlYW0tYmFzZWQgb3V0cHV0IG9wZXJhdGlvbnMKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgb3V0cHV0X3Rlc3Rfc3RyZWFtIDogcHVibGljIHdyYXBfc3RyaW5nc3RyZWFtOjp3cmFwcGVkX3N0cmVhbSB7Ci0gICAgdHlwZWRlZiB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBjb25zdF9zdHJpbmc7Ci0gICAgdHlwZWRlZiBwcmVkaWNhdGVfcmVzdWx0ICAgICAgICByZXN1bHRfdHlwZTsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICBvdXRwdXRfdGVzdF9zdHJlYW0oIGNvbnN0X3N0cmluZyAgICBwYXR0ZXJuX2ZpbGVfbmFtZSA9IGNvbnN0X3N0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICBtYXRjaF9vcl9zYXZlICAgICA9IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIHRleHRfb3JfYmluYXJ5ICAgID0gdHJ1ZSApOwotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIH5vdXRwdXRfdGVzdF9zdHJlYW0oKTsKLQotICAgIC8vIGNoZWNraW5nIGZ1bmN0aW9uCi0gICAgcmVzdWx0X3R5cGUgICAgIGlzX2VtcHR5KCBib29sIGZsdXNoX3N0cmVhbSA9IHRydWUgKTsKLSAgICByZXN1bHRfdHlwZSAgICAgY2hlY2tfbGVuZ3RoKCBzdGQ6OnNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2hfc3RyZWFtID0gdHJ1ZSApOwotICAgIHJlc3VsdF90eXBlICAgICBpc19lcXVhbCggY29uc3Rfc3RyaW5nIGFyZ18sIGJvb2wgZmx1c2hfc3RyZWFtID0gdHJ1ZSApOwotICAgIHJlc3VsdF90eXBlICAgICBtYXRjaF9wYXR0ZXJuKCBib29sIGZsdXNoX3N0cmVhbSA9IHRydWUgKTsKLQotICAgIC8vIGV4cGxpY2l0IGZsdXNoCi0gICAgdm9pZCAgICAgICAgICAgIGZsdXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gaGVscGVyIGZ1bmN0aW9ucwotICAgIHN0ZDo6c2l6ZV90ICAgICBsZW5ndGgoKTsKLSAgICB2b2lkICAgICAgICAgICAgc3luYygpOwotCi0gICAgc3RydWN0IEltcGw7Ci0gICAgSW1wbCogICAgICAgICAgIG1fcGltcGw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9PVVRQVVRfVEVTVF9TVFJFQU1fSFBQXzAxMjcwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJiNjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZW5oYW5jZWQgcmVzdWx0IGZvciB0ZXN0IHByZWRpY2F0ZSB0aGF0IGluY2x1ZGUgbWVzc2FnZSBleHBsYWluaW5nIGZhaWx1cmUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUFJFRElDQVRFX1JFU1VMVF9IUFBfMDEyNzA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUFJFRElDQVRFX1JFU1VMVF9IUFBfMDEyNzA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdGVzdF90b29scyB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfcmVzdWx0ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHByZWRpY2F0ZV9yZXN1bHQgewotICAgIHR5cGVkZWYgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgICAgICBjb25zdF9zdHJpbmc7Ci0gICAgc3RydWN0IGR1bW15IHsgdm9pZCBub25udWxsKCkge307IH07Ci0gICAgdHlwZWRlZiB2b2lkIChkdW1teTo6KnNhZmVfYm9vbCkoKTsKLQotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgcHJlZGljYXRlX3Jlc3VsdCggYm9vbCBwdl8gKSAKLSAgICA6IHBfcHJlZGljYXRlX3ZhbHVlKCBwdl8gKQotICAgIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb29sQ29udmVydGFibGU+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCggQm9vbENvbnZlcnRhYmxlIGNvbnN0JiBwdl8gKSA6IHBfcHJlZGljYXRlX3ZhbHVlKCAhIXB2XyApIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuICFwX3ByZWRpY2F0ZV92YWx1ZTsgfQotICAgIHZvaWQgICAgICAgICAgICAgICAgb3BlcmF0b3I9KCBib29sIHB2XyApICAgICAgIHsgcF9wcmVkaWNhdGVfdmFsdWUudmFsdWUgPSBwdl87IH0KLSAgICBvcGVyYXRvciAgICAgICAgICAgIHNhZmVfYm9vbCgpIGNvbnN0ICAgICAgICAgICB7IHJldHVybiAhIXBfcHJlZGljYXRlX3ZhbHVlID8gJmR1bW15Ojpub25udWxsIDogMDsgfQotCi0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggYm9vbCwgKHByZWRpY2F0ZV9yZXN1bHQpICkgcF9wcmVkaWNhdGVfdmFsdWU7Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICAgICAgaGFzX2VtcHR5X21lc3NhZ2UoKSBjb25zdCAgIHsgcmV0dXJuICFtX21lc3NhZ2U7IH0KLSAgICB3cmFwX3N0cmluZ3N0cmVhbSYgIG1lc3NhZ2UoKQotICAgIHsKLSAgICAgICAgaWYoICFtX21lc3NhZ2UgKQotICAgICAgICAgICAgbV9tZXNzYWdlLnJlc2V0KCBuZXcgd3JhcF9zdHJpbmdzdHJlYW0gKTsKLQotICAgICAgICByZXR1cm4gKm1fbWVzc2FnZTsKLSAgICB9Ci0gICAgY29uc3Rfc3RyaW5nICAgICAgICBtZXNzYWdlKCkgY29uc3QgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gIW1fbWVzc2FnZSA/IGNvbnN0X3N0cmluZygpIDogY29uc3Rfc3RyaW5nKCBtX21lc3NhZ2UtPnN0cigpICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzaGFyZWRfcHRyPHdyYXBfc3RyaW5nc3RyZWFtPiBtX21lc3NhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QUkVESUNBVEVfUkVTVUxUX0hQUF8wMTI3MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcm9ncmVzc19tb25pdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcm9ncmVzc19tb25pdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYyYzQ4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgc2ltcGxlIHRleHQgYmFzZWQgcHJvZ3Jlc3MgbW9uaXRvcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0hQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0hQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4gICAvLyBmb3Igc3RkOjpvc3RyZWFtJgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHByb2dyZXNzX21vbml0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgcHJvZ3Jlc3NfbW9uaXRvcl90IDogcHVibGljIHRlc3Rfb2JzZXJ2ZXIsIHB1YmxpYyBzaW5nbGV0b248cHJvZ3Jlc3NfbW9uaXRvcl90PiB7Ci1wdWJsaWM6Ci0gICAgLy8gdGVzdCBvYnNlcnZlciBpbnRlcmZhY2UKLSAgICB2b2lkICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotICAgIHZvaWQgICAgdGVzdF9maW5pc2goKSB7fQotICAgIHZvaWQgICAgdGVzdF9hYm9ydGVkKCk7Ci0KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiApIHt9Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCB1bnNpZ25lZCBsb25nICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKSB7fQotCi0gICAgdm9pZCAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sICkge30KLSAgICB2b2lkICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkge30KLQotICAgIC8vIGNvbmZpZ3VyYXRpb24KLSAgICB2b2lkICAgIHNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgKTsKLQotcHJpdmF0ZToKLSAgICBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCBwcm9ncmVzc19tb25pdG9yX3QgKTsKLX07IC8vIHByb2dyZXNzX21vbml0b3JfdAotCi1ORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCBwcm9ncmVzc19tb25pdG9yICkKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0hQUF8wMjAxMDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZGNjZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgY2xhc3MgdW5pdF90ZXN0X3Jlc3VsdCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciAKLS8vICBnYXRoZXJpbmcgdGVzdCByZXN1bHRzIGFuZCBwcmVzZW50aW5nIHRoaXMgaW5mb3JtYXRpb24gdG8gZW5kLXVzZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIGZpcnN0IGZhaWxlZCBhc3NlcnRpb24gZGVidWdnZXIgaG9vayAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLWlubGluZSB2b2lkIGZpcnN0X2ZhaWxlZF9hc3NlcnRpb24oKSB7fQotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3Jlc3VsdHMgewotcHVibGljOgotICAgIHRlc3RfcmVzdWx0cygpOwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggY291bnRlcl90LCAocmVzdWx0c19jb2xsZWN0b3JfdCkodGVzdF9yZXN1bHRzKShyZXN1bHRzX2NvbGxlY3RfaGVscGVyKSApIGNvdW50ZXJfcHJvcDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKCBib29sLCAgICAgIChyZXN1bHRzX2NvbGxlY3Rvcl90KSh0ZXN0X3Jlc3VsdHMpKHJlc3VsdHNfY29sbGVjdF9oZWxwZXIpICkgYm9vbF9wcm9wOwotCi0gICAgY291bnRlcl9wcm9wICAgIHBfYXNzZXJ0aW9uc19wYXNzZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfYXNzZXJ0aW9uc19mYWlsZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfZXhwZWN0ZWRfZmFpbHVyZXM7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfdGVzdF9jYXNlc19wYXNzZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfdGVzdF9jYXNlc19mYWlsZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfdGVzdF9jYXNlc19za2lwcGVkOwotICAgIGNvdW50ZXJfcHJvcCAgICBwX3Rlc3RfY2FzZXNfYWJvcnRlZDsKLSAgICBib29sX3Byb3AgICAgICAgcF9hYm9ydGVkOwotICAgIGJvb2xfcHJvcCAgICAgICBwX3NraXBwZWQ7Ci0KLSAgICAvLyAiY29uY2x1c2lvbiIgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICBwYXNzZWQoKSBjb25zdDsKLSAgICBpbnQgICAgICAgICAgICAgcmVzdWx0X2NvZGUoKSBjb25zdDsKLQotICAgIC8vIGNvbGxlY3Rpb24gaGVscGVyCi0gICAgdm9pZCAgICAgICAgICAgIG9wZXJhdG9yKz0oIHRlc3RfcmVzdWx0cyBjb25zdCYgKTsKLQotICAgIHZvaWQgICAgICAgICAgICBjbGVhcigpOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVzdWx0c19jb2xsZWN0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgcmVzdWx0c19jb2xsZWN0b3JfdCA6IHB1YmxpYyB0ZXN0X29ic2VydmVyLCBwdWJsaWMgc2luZ2xldG9uPHJlc3VsdHNfY29sbGVjdG9yX3Q+IHsKLXB1YmxpYzoKLSAgICAvLyB0ZXN0X29ic2VydmVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9zdGFydCggY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X2ZpbmlzaCgpOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9hYm9ydGVkKCk7Ci0KLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLQotICAgIHZvaWQgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICk7Ci0KLSAgICAvLyByZXN1bHRzIGFjY2VzcwotICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgcmVzdWx0cyggdGVzdF91bml0X2lkICkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fQ09OUyggcmVzdWx0c19jb2xsZWN0b3JfdCApOwotfTsKLQotTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggcmVzdWx0c19jb2xsZWN0b3IgKQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmI5ZWMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBjbGFzcyB1bml0X3Rlc3RfcmVzdWx0IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIAotLy8gIGdhdGhlcmluZyB0ZXN0IHJlc3VsdHMgYW5kIHByZXNlbnRpbmcgdGhpcyBpbmZvcm1hdGlvbiB0byBlbmQtdXNlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0hQUF8wMjEyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0hQUF8wMjEyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4gICAvLyBmb3Igc3RkOjpvc3RyZWFtJgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHJlc3VsdHNfcmVwb3J0ZXIgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGZvcm1hdHRlciBpbnRlcmZhY2UgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBmb3JtYXQgewotcHVibGljOgotICAgIC8vIERlc3RydWN0b3IKLSAgICB2aXJ0dWFsIH5mb3JtYXQoKSB7fQotCi0gICAgdmlydHVhbCB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCAgICBkb19jb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA9IDA7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJlcG9ydCBjb25maWd1cmF0aW9uICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHNldF9sZXZlbCggcmVwb3J0X2xldmVsICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBzZXRfZm9ybWF0KCBvdXRwdXRfZm9ybWF0ICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBzZXRfZm9ybWF0KCByZXN1bHRzX3JlcG9ydGVyOjpmb3JtYXQqICk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6Om9zdHJlYW0mIGdldF9zdHJlYW0oKTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVwb3J0IGluaXRpYXRpb24gICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBtYWtlX3JlcG9ydCggcmVwb3J0X2xldmVsIGwgPSBJTlZfUkVQT1JUX0xFVkVMLCB0ZXN0X3VuaXRfaWQgPSBJTlZfVEVTVF9VTklUX0lEICk7Ci1pbmxpbmUgdm9pZCAgICAgICAgICAgICBjb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXRfaWQgaWQgPSBJTlZfVEVTVF9VTklUX0lEICkgICAKLXsgbWFrZV9yZXBvcnQoIENPTkZJUk1BVElPTl9SRVBPUlQsIGlkICk7IH0KLWlubGluZSB2b2lkICAgICAgICAgICAgIHNob3J0X3JlcG9ydCggdGVzdF91bml0X2lkIGlkID0gSU5WX1RFU1RfVU5JVF9JRCApCi17IG1ha2VfcmVwb3J0KCBTSE9SVF9SRVBPUlQsIGlkICk7IH0KLWlubGluZSB2b2lkICAgICAgICAgICAgIGRldGFpbGVkX3JlcG9ydCggdGVzdF91bml0X2lkIGlkID0gSU5WX1RFU1RfVU5JVF9JRCApCi17IG1ha2VfcmVwb3J0KCBERVRBSUxFRF9SRVBPUlQsIGlkICk7IH0KLQotfSAvLyBuYW1lc3BhY2UgcmVzdWx0c19yZXBvcnRlcgotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSFBQXzAyMTIwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NTdhOTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGFic3RyYWN0IGludGVyZmFjZSBmb3IgdGVzdCBvYnNlcnZlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9URVNUX09CU0VSVkVSX0hQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9URVNUX09CU0VSVkVSX0hQUF8wMjEwMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdGVzdF9vYnNlcnZlciAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3Rfb2JzZXJ2ZXIgewotcHVibGljOgotICAgIC8vIHRlc3Qgb2JzZXJ2ZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCAvKiB0ZXN0X2Nhc2VzX2Ftb3VudCAqLyApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfZmluaXNoKCkge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9hYm9ydGVkKCkge30KLQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCB1bnNpZ25lZCBsb25nIC8qIGVsYXBzZWQgKi8gKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmICkge30KLQotICAgIHZpcnR1YWwgdm9pZCAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sIC8qIHBhc3NlZCAqLyApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkge30KLQotICAgIHZpcnR1YWwgaW50ICAgICBwcmlvcml0eSgpIHsgcmV0dXJuIDA7IH0KLQotcHJvdGVjdGVkOgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfnRlc3Rfb2JzZXJ2ZXIoKSB7fQotfTsKLQotfSAvLyB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RFU1RfT0JTRVJWRVJfSFBQXzAyMTAwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNzFjMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzE5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgZGVmaW5pdGlvbiBmb3IgYWxsIHRlc3QgdG9vbHMgaW4gdGVzdCB0b29sYm94Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSFBQXzAxMjcwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSFBQXzAxMjcwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBmb3Igc3RkOjpzaXplX3QKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8aW9zPiAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6Ym9vbGFscGhhCi0jaW5jbHVkZSA8Y2xpbWl0cz4gICAgICAgICAgLy8gZm9yIENIQVJfQklUCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMjcpIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIFRPT0wgQk9YICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vIEluIG1hY3JvcyBiZWxvdyBmb2xsb3dpbmcgYXJndW1lbnQgYWJicmV2aWF0aW9ucyBhcmUgdXNlZDoKLS8vIFAgLSBwcmVkaWNhdGUKLS8vIE0gLSBtZXNzYWdlCi0vLyBTIC0gc3RhdGVtZW50Ci0vLyBFIC0gZXhjZXB0aW9uCi0vLyBMIC0gbGVmdCBhcmd1bWVudAotLy8gUiAtIHJpZ2h0IGFyZ3VtZW50Ci0vLyBUTCAtIHRvb2wgbGV2ZWwKLS8vIENUIC0gY2hlY2sgdHlwZQotLy8gQVJHUyAtIGFyZ3VtZW50cyBsaXN0Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9UT09MX0lNUEwoIGZ1bmMsIFAsIGNoZWNrX2Rlc2NyLCBUTCwgQ1QgKSAgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmZ1bmMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgUCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpsYXp5X29zdHJlYW06Omluc3RhbmNlKCkgPDwgY2hlY2tfZGVzY3IsICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KF9fTElORV9fKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpUTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpDVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9DSEVDS19JTVBMKCBQLCBjaGVja19kZXNjciwgVEwsIENUICkgICAgICAgICAgICAgICAgICBcCi1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1BBU1NQT0lOVCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfVE9PTF9JTVBMKCBjaGVja19pbXBsLCBQLCBjaGVja19kZXNjciwgVEwsIENUICksIDAgKTtcCi19IHdoaWxlKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpkdW1teV9jb25kICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX1BBU1NfQVJHX0lORk8oIHIsIGRhdGEsIGFyZyApICwgYXJnLCBORE5CT09TVF9TVFJJTkdJWkUoIGFyZyApCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIFAsIGNoZWNrX2Rlc2NyLCBUTCwgQ1QsIEFSR1MgKSAgXAotZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9QQVNTUE9JTlQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggY2hlY2tfZnJ3ZCwgUCwgY2hlY2tfZGVzY3IsIFRMLCBDVCApICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSCggTkROQk9PU1RfVEVTVF9QQVNTX0FSR19JTkZPLCAnXycsIEFSR1MgKSApOyBcCi19IHdoaWxlKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpkdW1teV9jb25kICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOKCBQICkgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIFdBUk4sIENIRUNLX1BSRUQgKQotI2RlZmluZSBORE5CT09TVF9DSEVDSyggUCApICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIENIRUNLLCBDSEVDS19QUkVEICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRSggUCApICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggKFApLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBSRVFVSVJFLCBDSEVDS19QUkVEICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX01FU1NBR0UoIFAsIE0gKSAgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE0sIFdBUk4sIENIRUNLX01TRyApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX01FU1NBR0UoIFAsIE0gKSAgICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTSwgQ0hFQ0ssIENIRUNLX01TRyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggUCwgTSApICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTSwgUkVRVUlSRSwgQ0hFQ0tfTVNHICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9FUlJPUiggTSApICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DSEVDS19NRVNTQUdFKCBmYWxzZSwgTSApCi0jZGVmaW5lIE5ETkJPT1NUX0ZBSUwoIE0gKSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggZmFsc2UsIE0gKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIFAsIHByZWZpeCwgVEwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX1BBU1NQT0lOVCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggZmFsc2UsICJleGNlcHRpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoIEUgKSAiIGlzIGV4cGVjdGVkIiwgVEwsIENIRUNLX01TRyApOyB9ICAgXAotICAgIGNhdGNoKCBFIGNvbnN0JiBleCApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoIGV4ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggUCwgcHJlZml4IE5ETkJPT1NUX1NUUklOR0laRSggRSApICIgaXMgY2F1Z2h0IiwgVEwsIENIRUNLX01TRyApOyAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9USFJPVyggUywgRSApICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgdHJ1ZSwgImV4Y2VwdGlvbiAiLCBXQVJOICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfVEhST1coIFMsIEUgKSAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgdHJ1ZSwgImV4Y2VwdGlvbiAiLCBDSEVDSyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfVEhST1coIFMsIEUgKSAgICAgICAgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIHRydWUsICJleGNlcHRpb24gIiwgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9FWENFUFRJT04oIFMsIEUsIFAgKSAgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgUCggZXggKSwgImluY29ycmVjdCBleGNlcHRpb24gIiwgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0VYQ0VQVElPTiggUywgRSwgUCApICAgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIFAoIGV4ICksICJpbmNvcnJlY3QgZXhjZXB0aW9uICIsIENIRUNLICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9FWENFUFRJT04oIFMsIEUsIFAgKSAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgUCggZXggKSwgImluY29ycmVjdCBleGNlcHRpb24gIiwgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1dfSU1QTCggUywgVEwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBTOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggdHJ1ZSwgIm5vIGV4Y2VwdGlvbnMgdGhyb3duIGJ5ICIgTkROQk9PU1RfU1RSSU5HSVpFKCBTICksIFRMLCBDSEVDS19NU0cgKTsgfSBcCi0gICAgY2F0Y2goIC4uLiApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCBmYWxzZSwgImV4Y2VwdGlvbiB0aHJvd24gYnkgIiBORE5CT09TVF9TVFJJTkdJWkUoIFMgKSwgVEwsIENIRUNLX01TRyApOyAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9OT19USFJPVyggUyApICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1dfSU1QTCggUywgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX05PX1RIUk9XKCBTICkgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX05PX1RIUk9XX0lNUEwoIFMsIENIRUNLICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9OT19USFJPVyggUyApICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1dfSU1QTCggUywgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9FUVVBTCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9pbXBsX2Zyd2QoKSwgIiIsIFdBUk4sIENIRUNLX0VRVUFMLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19FUVVBTCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9pbXBsX2Zyd2QoKSwgIiIsIENIRUNLLCBDSEVDS19FUVVBTCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9FUVVBTCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9pbXBsX2Zyd2QoKSwgIiIsIFJFUVVJUkUsIENIRUNLX0VRVUFMLCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fTkUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bmVfaW1wbCgpLCAiIiwgV0FSTiwgQ0hFQ0tfTkUsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX05FKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Om5lX2ltcGwoKSwgIiIsIENIRUNLLCBDSEVDS19ORSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9ORSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpuZV9pbXBsKCksICIiLCBSRVFVSVJFLCBDSEVDS19ORSwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0xUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omx0X2ltcGwoKSwgIiIsIFdBUk4sIENIRUNLX0xULCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19MVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsdF9pbXBsKCksICIiLCBDSEVDSywgQ0hFQ0tfTFQsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfTFQoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bHRfaW1wbCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfTFQsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9MRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsZV9pbXBsKCksICIiLCBXQVJOLCBDSEVDS19MRSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTEUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bGVfaW1wbCgpLCAiIiwgQ0hFQ0ssIENIRUNLX0xFLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0xFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmxlX2ltcGwoKSwgIiIsIFJFUVVJUkUsIENIRUNLX0xFLCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fR1QoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z3RfaW1wbCgpLCAiIiwgV0FSTiwgQ0hFQ0tfR1QsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0dUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omd0X2ltcGwoKSwgIiIsIENIRUNLLCBDSEVDS19HVCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9HVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpndF9pbXBsKCksICIiLCBSRVFVSVJFLCBDSEVDS19HVCwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0dFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmdlX2ltcGwoKSwgIiIsIFdBUk4sIENIRUNLX0dFLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19HRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpnZV9pbXBsKCksICIiLCBDSEVDSywgQ0hFQ0tfR0UsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfR0UoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z2VfaW1wbCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfR0UsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9DTE9TRSggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBXQVJOLCBDSEVDS19DTE9TRSwgXAotICAgICAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6cGVyY2VudF90b2xlcmFuY2UoVCkpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfQ0xPU0UoIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgQ0hFQ0ssIENIRUNLX0NMT1NFLCBcCi0gICAgICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpwZXJjZW50X3RvbGVyYW5jZShUKSkgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0NMT1NFKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIFJFUVVJUkUsIENIRUNLX0NMT1NFLCBcCi0gICAgICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpwZXJjZW50X3RvbGVyYW5jZShUKSkgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fQ0xPU0VfRlJBQ1RJT04oIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgV0FSTiwgQ0hFQ0tfQ0xPU0VfRlJBQ1RJT04sIFwKLSAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6ZnJhY3Rpb25fdG9sZXJhbmNlKFQpKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0NMT1NFX0ZSQUNUSU9OKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIENIRUNLLCBDSEVDS19DTE9TRV9GUkFDVElPTiwgXAotICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpmcmFjdGlvbl90b2xlcmFuY2UoVCkpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9DTE9TRV9GUkFDVElPTiggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBSRVFVSVJFLCBDSEVDS19DTE9TRV9GUkFDVElPTiwgXAotICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpmcmFjdGlvbl90b2xlcmFuY2UoVCkpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX1NNQUxMKCBGUFYsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX3NtYWxsLCAiIiwgV0FSTiwgQ0hFQ0tfU01BTEwsIChGUFYpKFQpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfU01BTEwoIEZQViwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfc21hbGwsICIiLCBDSEVDSywgQ0hFQ0tfU01BTEwsIChGUFYpKFQpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9TTUFMTCggRlBWLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19zbWFsbCwgIiIsIFJFUVVJUkUsIENIRUNLX1NNQUxMLCAoRlBWKShUKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9QUkVESUNBVEUoIFAsIEFSR1MgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIFAsIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIFdBUk4sIENIRUNLX1BSRURfV0lUSF9BUkdTLCBBUkdTICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfUFJFRElDQVRFKCBQLCBBUkdTICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCBQLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBDSEVDSywgQ0hFQ0tfUFJFRF9XSVRIX0FSR1MsIEFSR1MgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX1BSRURJQ0FURSggUCwgQVJHUyApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggUCwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIFAgKSwgUkVRVUlSRSwgQ0hFQ0tfUFJFRF9XSVRIX0FSR1MsIEFSR1MgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0VRVUFMX0NPTExFQ1RJT05TX0lNUEwoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCwgVEwgKSAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggY2hlY2tfaW1wbCwgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9jb2xsX2ltcGwoIFwKLSAgICAgICAgKExfYmVnaW4pLCAoTF9lbmQpLCAoUl9iZWdpbiksIChSX2VuZCkgKSwgIiIsIFRMLCBDSEVDS19FUVVBTF9DT0xMICksICAgXAotICAgIDQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfU1RSSU5HSVpFKCBMX2JlZ2luICksIE5ETkJPT1NUX1NUUklOR0laRSggTF9lbmQgKSwgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9TVFJJTkdJWkUoIFJfYmVnaW4gKSwgTkROQk9PU1RfU1RSSU5HSVpFKCBSX2VuZCApICkgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fRVFVQUxfQ09MTEVDVElPTlMoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCApICAgICAgICAgIFwKLSAgICBORE5CT09TVF9FUVVBTF9DT0xMRUNUSU9OU19JTVBMKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQsIFdBUk4gKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19FUVVBTF9DT0xMRUNUSU9OUyggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kICkgICAgICAgICBcCi0gICAgTkROQk9PU1RfRVFVQUxfQ09MTEVDVElPTlNfSU1QTCggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kLCBDSEVDSyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfRVFVQUxfQ09MTEVDVElPTlMoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCApICAgICAgIFwKLSAgICBORE5CT09TVF9FUVVBTF9DT0xMRUNUSU9OU19JTVBMKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQsIFJFUVVJUkUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUxfSU1QTCggTCwgUiwgVEwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggY2hlY2tfaW1wbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpiaXR3aXNlX2VxdWFsX2ltcGwoIChMKSwgKFIpICksICAgICAgICAgICBcCi0gICAgICAiIiwgVEwsIENIRUNLX0JJVFdJU0VfRVFVQUwgKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAyLCBORE5CT09TVF9TVFJJTkdJWkUoIEwgKSwgTkROQk9PU1RfU1RSSU5HSVpFKCBSICkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fQklUV0lTRV9FUVVBTCggTCwgUiApICAgIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUxfSU1QTCggTCwgUiwgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0JJVFdJU0VfRVFVQUwoIEwsIFIgKSAgIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUxfSU1QTCggTCwgUiwgQ0hFQ0sgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0JJVFdJU0VfRVFVQUwoIEwsIFIgKSBORE5CT09TVF9CSVRXSVNFX0VRVUFMX0lNUEwoIEwsIFIsIFJFUVVJUkUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lTX0RFRklORUQoIHN5bWIgKSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6aXNfZGVmaW5lZF9pbXBsKCAjc3ltYiwgTkROQk9PU1RfU1RSSU5HSVpFKD0gc3ltYikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gZGVwcmVjYXRlZCBpbnRlcmZhY2UKLQotI2RlZmluZSBORE5CT09TVF9CSVRXSVNFX0VRVUFMKCBMLCBSICkgICAgICAgICBORE5CT09TVF9DSEVDS19CSVRXSVNFX0VRVUFMKCBMLCBSICkKLSNkZWZpbmUgTkROQk9PU1RfTUVTU0FHRSggTSApICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCBNICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tQT0lOVCggTSApICAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9DSEVDS1BPSU5UKCBNICkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi10eXBlZGVmIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nICAgICAgY29uc3Rfc3RyaW5nOwotCi1uYW1lc3BhY2UgeyBib29sIGR1bW15X2NvbmQgPSBmYWxzZTsgfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgcHJpbnRfbG9nX3ZhbHVlICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcHJpbnRfbG9nX3ZhbHVlIHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgVCBjb25zdCYgdCApCi0gICAgewotICAgICAgICAvLyBhdm9pZCB3YXJuaW5nOiAnbmRuYm9vc3Q6OnRlc3RfdG9vbHM6Ojx1bm5hbWVkPjo6ZHVtbXlfY29uZCcgZGVmaW5lZCBidXQgbm90IHVzZWQgCi0gICAgICAgIGlmICg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpkdW1teV9jb25kKSB7fQotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpvcl88aXNfYXJyYXk8VD4saXNfZnVuY3Rpb248VD4saXNfYWJzdHJhY3Q8VD4gPjo6dHlwZSBjYW50X3VzZV9ubDsKLQotICAgICAgICBzZXRfcHJlY2lzaW9uKCBvc3RyLCBjYW50X3VzZV9ubCgpICk7Ci0KLSAgICAgICAgb3N0ciA8PCB0OyAvLyBieSBkZWZhdWx0IHByaW50IHRoZSB2YWx1ZQotICAgIH0KLQotICAgIHZvaWQgc2V0X3ByZWNpc2lvbiggc3RkOjpvc3RyZWFtJiBvc3RyLCBtcGw6OmZhbHNlXyApCi0gICAgewotICAgICAgICBpZiggc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6cmFkaXggPT0gMiApCi0gICAgICAgICAgICBvc3RyLnByZWNpc2lvbiggMiArIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyAqIDMwMS8xMDAwICk7IAotICAgIH0KLQotICAgIHZvaWQgc2V0X3ByZWNpc2lvbiggc3RkOjpvc3RyZWFtJiwgbXBsOjp0cnVlXyApIHt9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRE9OVF9QUklOVF9MT0dfVkFMVUUoIHRoZV90eXBlICkgICAgICAgICBcCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdGVzdF90b29scyB7ICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgcHJpbnRfbG9nX3ZhbHVlPHRoZV90eXBlID4geyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mLCB0aGVfdHlwZSBjb25zdCYgKSB7fSAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4gPgotc3RydWN0IHByaW50X2xvZ192YWx1ZTwgVFtOXSA+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgVCBjb25zdCogdCApCi0gICAgewotICAgICAgICBvc3RyIDw8IHQ7Ci0gICAgfQotfTsKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHByaW50X2xvZ192YWx1ZTxib29sPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGJvb2wgdCApCi0gICAgewotICAgICAgICAgb3N0ciA8PCBzdGQ6OmJvb2xhbHBoYSA8PCB0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgcHJpbnRfbG9nX3ZhbHVlPGNoYXI+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY2hhciB0ICk7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHByaW50X2xvZ192YWx1ZTx1bnNpZ25lZCBjaGFyPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHVuc2lnbmVkIGNoYXIgdCApOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBwcmludF9sb2dfdmFsdWU8Y2hhciBjb25zdCo+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY2hhciBjb25zdCogdCApOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBwcmludF9sb2dfdmFsdWU8d2NoYXJfdCBjb25zdCo+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgd2NoYXJfdCBjb25zdCogdCApOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIHR0X2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgdG9vbHMgY2xhc3NpZmljYXRpb24gICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZW51bSBjaGVja190eXBlIHsKLSAgICBDSEVDS19QUkVELCAKLSAgICBDSEVDS19NU0csCi0gICAgQ0hFQ0tfRVFVQUwsCi0gICAgQ0hFQ0tfTkUsCi0gICAgQ0hFQ0tfTFQsCi0gICAgQ0hFQ0tfTEUsCi0gICAgQ0hFQ0tfR1QsCi0gICAgQ0hFQ0tfR0UsCi0gICAgQ0hFQ0tfQ0xPU0UsCi0gICAgQ0hFQ0tfQ0xPU0VfRlJBQ1RJT04sCi0gICAgQ0hFQ0tfU01BTEwsCi0gICAgQ0hFQ0tfQklUV0lTRV9FUVVBTCwKLSAgICBDSEVDS19QUkVEX1dJVEhfQVJHUywKLSAgICBDSEVDS19FUVVBTF9DT0xMCi19OwotCi1lbnVtIHRvb2xfbGV2ZWwgewotICAgIFdBUk4sIENIRUNLLCBSRVFVSVJFLCBQQVNTCi19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHByaW50X2hlbHBlciAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyBBZGRzIGxldmVsIG9mIGluZGlyZWN0aW9uIHRvIHRoZSBvdXRwdXQgb3BlcmF0aW9uLCBhbGxvd2luZyB1cyB0byBjdXN0b21pemUgCi0vLyBpdCBmb3IgdHlwZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBvcGVyYXRvciA8PCBkaXJlY3RseSBvciBmb3IgYW55IG90aGVyIHJlYXNvbgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHByaW50X2hlbHBlcl90IHsKLSAgICBleHBsaWNpdCAgICBwcmludF9oZWxwZXJfdCggVCBjb25zdCYgdCApIDogbV90KCB0ICkge30KLQotICAgIFQgY29uc3QmICAgIG1fdDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgCi0vLyBCb3JsYW5kIHN1ZmZlcnMgcHJlbWF0dXJlIHBvaW50ZXIgZGVjYXkgcGFzc2luZyBhcnJheXMgYnkgcmVmZXJlbmNlCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOID4KLXN0cnVjdCBwcmludF9oZWxwZXJfdDwgVFtOXSA+IHsKLSAgICBleHBsaWNpdCAgICBwcmludF9oZWxwZXJfdCggVCBjb25zdCAqIHQgKSA6IG1fdCggdCApIHt9Ci0KLSAgICBUIGNvbnN0ICogICBtX3Q7Ci19OwotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgcHJpbnRfaGVscGVyX3Q8VD4gcHJpbnRfaGVscGVyKCBUIGNvbnN0JiB0ICkKLXsKLSAgICByZXR1cm4gcHJpbnRfaGVscGVyX3Q8VD4oIHQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0mIAotb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvc3RyLCBwcmludF9oZWxwZXJfdDxUPiBjb25zdCYgcGggKQotewotICAgIHByaW50X2xvZ192YWx1ZTxUPigpKCBvc3RyLCBwaC5tX3QgKTsKLQotICAgIHJldHVybiBvc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBUT09MIEJPWCBJbXBsZW1lbnRhdGlvbiAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1RFU1RfREVDTCAKLWJvb2wgY2hlY2tfaW1wbCggcHJlZGljYXRlX3Jlc3VsdCBjb25zdCYgcHIsIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtIGNvbnN0JiBjaGVja19kZXNjciwKLSAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIGZpbGVfbmFtZSwgc3RkOjpzaXplX3QgbGluZV9udW0sCi0gICAgICAgICAgICAgICAgIHRvb2xfbGV2ZWwgdGwsIGNoZWNrX3R5cGUgY3QsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG51bV9hcmdzLCAuLi4gKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBURU1QTF9QQVJBTVMoIHosIG0sIGR1bW15ICkgLCB0eXBlbmFtZSBORE5CT09TVF9KT0lOKCBBcmcsIG0gKQotI2RlZmluZSBGVU5DX1BBUkFNUyggeiwgbSwgZHVtbXkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICwgTkROQk9PU1RfSk9JTiggQXJnLCBtICkgY29uc3QmIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICwgY2hhciBjb25zdCogTkROQk9PU1RfSk9JTiggTkROQk9PU1RfSk9JTiggYXJnLCBtICksIF9kZXNjciApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIFBSRURfUEFSQU1TKCB6LCBtLCBkdW1teSApIE5ETkJPT1NUX1BQX0NPTU1BX0lGKCBtICkgTkROQk9PU1RfSk9JTiggYXJnLCBtICkgCi0KLSNkZWZpbmUgQVJHX0lORk8oIHosIG0sIGR1bW15ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAsIE5ETkJPT1NUX0pPSU4oIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApLCBfZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAsICZzdGF0aWNfY2FzdDxjb25zdCB1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbSY+KHVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtOjppbnN0YW5jZSgpIFwKLSAgICAgICAgPDwgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpwcmludF9oZWxwZXIoIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApICkpICAgIFwKLS8qKi8KLQotI2RlZmluZSBJTVBMX0ZSV0QoIHosIG4sIGR1bW15ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8dHlwZW5hbWUgUHJlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBORE5CT09TVF9QUF9BREQoIG4sIDEgKSwgVEVNUExfUEFSQU1TLCBfICk+ICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2hlY2tfZnJ3ZCggUHJlZCBQLCB1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbSBjb25zdCYgY2hlY2tfZGVzY3IsICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgY29uc3Rfc3RyaW5nIGZpbGVfbmFtZSwgc3RkOjpzaXplX3QgbGluZV9udW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdG9vbF9sZXZlbCB0bCwgY2hlY2tfdHlwZSBjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBORE5CT09TVF9QUF9BREQoIG4sIDEgKSwgRlVOQ19QQVJBTVMsIF8gKSAgICAgICAgICAgXAotKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNoZWNrX2ltcGwoIFAoIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggTkROQk9PU1RfUFBfQUREKCBuLCAxICksIFBSRURfUEFSQU1TLCBfICkgKSwgXAotICAgICAgICAgICAgICAgIGNoZWNrX2Rlc2NyLCBmaWxlX25hbWUsIGxpbmVfbnVtLCB0bCwgY3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0FERCggbiwgMSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggTkROQk9PU1RfUFBfQUREKCBuLCAxICksIEFSR19JTkZPLCBfICkgICAgICAgICAgXAotICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTUFYX1BSRURJQ0FURV9BUklUWQotI2RlZmluZSBORE5CT09TVF9URVNUX01BWF9QUkVESUNBVEVfQVJJVFkgNQotI2VuZGlmCi0KLU5ETkJPT1NUX1BQX1JFUEVBVCggTkROQk9PU1RfVEVTVF9NQVhfUFJFRElDQVRFX0FSSVRZLCBJTVBMX0ZSV0QsIF8gKQotCi0jdW5kZWYgVEVNUExfUEFSQU1TCi0jdW5kZWYgRlVOQ19QQVJBTVMKLSN1bmRlZiBQUkVEX0lORk8KLSN1bmRlZiBBUkdfSU5GTwotI3VuZGVmIElNUExfRlJXRAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci1wcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi17Ci0gICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQgICAgICAgIE5ETkJPT1NUX1RFU1RfREVDTCBlcXVhbF9pbXBsKCBjaGFyIGNvbnN0KiBsZWZ0LCBjaGFyIGNvbnN0KiByaWdodCApOwotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggY2hhciogbGVmdCwgY2hhciBjb25zdCogcmlnaHQgKSB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihyaWdodCkgKTsgfQotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggY2hhciBjb25zdCogbGVmdCwgY2hhciogcmlnaHQgKSB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihyaWdodCkgKTsgfQotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggY2hhciogbGVmdCwgY2hhciogcmlnaHQgKSAgICAgICB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihyaWdodCkgKTsgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NXQ0hBUiApCi1wcmVkaWNhdGVfcmVzdWx0ICAgICAgICBORE5CT09TVF9URVNUX0RFQ0wgZXF1YWxfaW1wbCggd2NoYXJfdCBjb25zdCogbGVmdCwgd2NoYXJfdCBjb25zdCogcmlnaHQgKTsKLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIHdjaGFyX3QqIGxlZnQsIHdjaGFyX3QgY29uc3QqIHJpZ2h0ICkgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4ocmlnaHQpICk7IH0KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIHdjaGFyX3QgY29uc3QqIGxlZnQsIHdjaGFyX3QqIHJpZ2h0ICkgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4ocmlnaHQpICk7IH0KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIHdjaGFyX3QqIGxlZnQsIHdjaGFyX3QqIHJpZ2h0ICkgICAgICAgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4ocmlnaHQpICk7IH0KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgZXF1YWxfaW1wbF9mcndkIHsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVmdCwgdHlwZW5hbWUgUmlnaHQ+Ci0gICAgaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQKLSAgICBjYWxsX2ltcGwoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCwgbXBsOjpmYWxzZV8gKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGVxdWFsX2ltcGwoIGxlZnQsIHJpZ2h0ICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIExlZnQsIHR5cGVuYW1lIFJpZ2h0PgotICAgIGlubGluZSBwcmVkaWNhdGVfcmVzdWx0Ci0gICAgY2FsbF9pbXBsKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQsIG1wbDo6dHJ1ZV8gKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICgqdGhpcykoIHJpZ2h0LCAmbGVmdFswXSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZWZ0LCB0eXBlbmFtZSBSaWdodD4KLSAgICBpbmxpbmUgcHJlZGljYXRlX3Jlc3VsdAotICAgIG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlzX2FycmF5PExlZnQ+Ojp0eXBlIGxlZnRfaXNfYXJyYXk7Ci0gICAgICAgIHJldHVybiBjYWxsX2ltcGwoIGxlZnQsIHJpZ2h0LCBsZWZ0X2lzX2FycmF5KCkgKTsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgbmVfaW1wbCB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotICAgIHByZWRpY2F0ZV9yZXN1bHQgb3BlcmF0b3IoKSggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhZXF1YWxfaW1wbF9mcndkKCkoIGxlZnQsIHJpZ2h0ICk7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGx0X2ltcGwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLSAgICBwcmVkaWNhdGVfcmVzdWx0IG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi0gICAgewotICAgICAgICByZXR1cm4gbGVmdCA8IHJpZ2h0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBsZV9pbXBsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPD0gcmlnaHQ7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGd0X2ltcGwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLSAgICBwcmVkaWNhdGVfcmVzdWx0IG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi0gICAgewotICAgICAgICByZXR1cm4gbGVmdCA+IHJpZ2h0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBnZV9pbXBsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPj0gcmlnaHQ7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIExlZnQsIHR5cGVuYW1lIFJpZ2h0PgotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQKLWVxdWFsX2NvbGxfaW1wbCggTGVmdCBsZWZ0X2JlZ2luLCBMZWZ0IGxlZnRfZW5kLCBSaWdodCByaWdodF9iZWdpbiwgUmlnaHQgcmlnaHRfZW5kICkKLXsKLSAgICBwcmVkaWNhdGVfcmVzdWx0ICAgIHJlcyggdHJ1ZSApOwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgcG9zID0gMDsKLQotICAgIGZvciggOyBsZWZ0X2JlZ2luICE9IGxlZnRfZW5kICYmIHJpZ2h0X2JlZ2luICE9IHJpZ2h0X2VuZDsgKytsZWZ0X2JlZ2luLCArK3JpZ2h0X2JlZ2luLCArK3BvcyApIHsKLSAgICAgICAgaWYoICpsZWZ0X2JlZ2luICE9ICpyaWdodF9iZWdpbiApIHsKLSAgICAgICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiXG5NaXNtYXRjaCBpbiBhIHBvc2l0aW9uICIgPDwgcG9zIDw8ICI6ICIgIDw8ICpsZWZ0X2JlZ2luIDw8ICIgIT0gIiA8PCAqcmlnaHRfYmVnaW47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggbGVmdF9iZWdpbiAhPSBsZWZ0X2VuZCApIHsKLSAgICAgICAgc3RkOjpzaXplX3Qgcl9zaXplID0gcG9zOwotICAgICAgICB3aGlsZSggbGVmdF9iZWdpbiAhPSBsZWZ0X2VuZCApIHsKLSAgICAgICAgICAgICsrcG9zOwotICAgICAgICAgICAgKytsZWZ0X2JlZ2luOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgIlxuQ29sbGVjdGlvbnMgc2l6ZSBtaXNtYXRjaDogIiA8PCBwb3MgPDwgIiAhPSAiIDw8IHJfc2l6ZTsKLSAgICB9Ci0KLSAgICBpZiggcmlnaHRfYmVnaW4gIT0gcmlnaHRfZW5kICkgewotICAgICAgICBzdGQ6OnNpemVfdCBsX3NpemUgPSBwb3M7Ci0gICAgICAgIHdoaWxlKCByaWdodF9iZWdpbiAhPSByaWdodF9lbmQgKSB7Ci0gICAgICAgICAgICArK3BvczsKLSAgICAgICAgICAgICsrcmlnaHRfYmVnaW47Ci0gICAgICAgIH0KLQotICAgICAgICByZXMgPSBmYWxzZTsKLSAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiXG5Db2xsZWN0aW9ucyBzaXplIG1pc21hdGNoOiAiIDw8IGxfc2l6ZSA8PCAiICE9ICIgPDwgcG9zOwotICAgIH0KLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0Ci1iaXR3aXNlX2VxdWFsX2ltcGwoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi17Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCAgICByZXMoIHRydWUgKTsKLQotICAgIHN0ZDo6c2l6ZV90IGxlZnRfYml0X3NpemUgID0gc2l6ZW9mKExlZnQpKkNIQVJfQklUOwotICAgIHN0ZDo6c2l6ZV90IHJpZ2h0X2JpdF9zaXplID0gc2l6ZW9mKFJpZ2h0KSpDSEFSX0JJVDsKLQotICAgIHN0YXRpYyBMZWZ0IGNvbnN0IGxlZnRPbmUoIDEgKTsKLSAgICBzdGF0aWMgUmlnaHQgY29uc3QgcmlnaHRPbmUoIDEgKTsKLQotICAgIHN0ZDo6c2l6ZV90IHRvdGFsX2JpdHMgPSBsZWZ0X2JpdF9zaXplIDwgcmlnaHRfYml0X3NpemUgPyBsZWZ0X2JpdF9zaXplIDogcmlnaHRfYml0X3NpemU7Ci0KLSAgICBmb3IoIHN0ZDo6c2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgdG90YWxfYml0czsgKytjb3VudGVyICkgewotICAgICAgICBpZiggKCBsZWZ0ICYgKCBsZWZ0T25lIDw8IGNvdW50ZXIgKSApICE9ICggcmlnaHQgJiAoIHJpZ2h0T25lIDw8IGNvdW50ZXIgKSApICkgewotICAgICAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJcbk1pc21hdGNoIGluIGEgcG9zaXRpb24gIiA8PCBjb3VudGVyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoIGxlZnRfYml0X3NpemUgIT0gcmlnaHRfYml0X3NpemUgKSB7Ci0gICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJcbk9wZXJhbmRzIGJpdCBzaXplcyBtaXNtYXRjaDogIiA8PCBsZWZ0X2JpdF9zaXplIDw8ICIgIT0gIiA8PCByaWdodF9iaXRfc2l6ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sIE5ETkJPT1NUX1RFU1RfREVDTCBpc19kZWZpbmVkX2ltcGwoIGNvbnN0X3N0cmluZyBzeW1ib2xfbmFtZSwgY29uc3Rfc3RyaW5nIHN5bWJvbF92YWx1ZSApOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0dF9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgdGVzdF90b29scwotCi1uYW1lc3BhY2UgdGVzdF90b29sYm94ID0gdGVzdF90b29sczsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSFBQXzAxMjcwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFkYjgwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRW50cnkgcG9pbnQgZm9yIHRoZSBlbmQgdXNlciBpbnRvIHRoZSBVbml0IFRlc3QgRnJhbWV3b3JrLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBBdXRvIExpbmtpbmcgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9OT19MSUIpICYmIFwKLSAgICAhZGVmaW5lZChORE5CT09TVF9URVNUX1NPVVJDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9JTkNMVURFRCkKLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrCi0KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspCi0jICAgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0KLSNlbmRpZiAgLy8gYXV0by1saW5raW5nIGRpc2FibGVkCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9tYWluICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLWludCBORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0X21haW4oIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jLCBpbnQgYXJnYywgY2hhciogYXJndltdICk7Ci0KLX19Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspICYmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9NQUlOKSAmJiAhZGVmaW5lZChORE5CT09TVF9URVNUX05PX01BSU4pCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgbWFpbiBmdW5jdGlvbiBmb3IgdGVzdHMgdXNpbmcgZGxsICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICByZXR1cm4gOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbWFpbiggJmluaXRfdW5pdF90ZXN0LCBhcmdjLCBhcmd2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0RZTl9MSU5LICYmIE5ETkJPT1NUX1RFU1RfTUFJTiAmJiAhTkROQk9PU1RfVEVTVF9OT19NQUlOCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZmNkZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBzaW5nbGV0b24gY2xhc3MgdW5pdF90ZXN0X2xvZyBhbmQgYWxsIG1hbmlwdWxhdG9ycy4KLS8vICB1bml0X3Rlc3RfbG9nIGhhcyBvdXRwdXQgc3RyZWFtIGxpa2UgaW50ZXJmYWNlLiBJdCdzIGltcGxlbWVudGF0aW9uIGlzCi0vLyAgY29tcGxldGVseSBoaWRkZW4gd2l0aCBwaW1wbGUgaWRpb20KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgLy8gZm9yIHN0ZDo6b3N0cmVhbSYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBsb2cgbWFuaXB1bGF0b3JzICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGxvZyB7Ci0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgYmVnaW4gewotICAgIGJlZ2luKCBjb25zdF9zdHJpbmcgZm4sIHN0ZDo6c2l6ZV90IGxuICkKLSAgICA6IG1fZmlsZV9uYW1lKCBmbiApCi0gICAgLCBtX2xpbmVfbnVtKCBsbiApCi0gICAge30KLQotICAgIGNvbnN0X3N0cmluZyBtX2ZpbGVfbmFtZTsKLSAgICBzdGQ6OnNpemVfdCBtX2xpbmVfbnVtOwotfTsKLQotc3RydWN0IGVuZCB7fTsKLQotfSAvLyBuYW1lc3BhY2UgbG9nCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGVudHJ5X3ZhbHVlX2NvbGxlY3RvcigpIDogbV9sYXN0KCB0cnVlICkge30KLSAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IoIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciBjb25zdCYgcmhzICkgOiBtX2xhc3QoIHRydWUgKSB7IHJocy5tX2xhc3QgPSBmYWxzZTsgfQotICAgIH5lbnRyeV92YWx1ZV9jb2xsZWN0b3IoKTsKLQotICAgIC8vIGNvbGxlY3Rpb24gaW50ZXJmYWNlCi0gICAgZW50cnlfdmFsdWVfY29sbGVjdG9yIGNvbnN0JiBvcGVyYXRvcjw8KCBsYXp5X29zdHJlYW0gY29uc3QmICkgY29uc3Q7Ci0gICAgZW50cnlfdmFsdWVfY29sbGVjdG9yIGNvbnN0JiBvcGVyYXRvcjw8KCBjb25zdF9zdHJpbmcgKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBtdXRhYmxlIGJvb2wgICAgbV9sYXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdF9sb2dfdCA6IHB1YmxpYyB0ZXN0X29ic2VydmVyLCBwdWJsaWMgc2luZ2xldG9uPHVuaXRfdGVzdF9sb2dfdD4gewotcHVibGljOgotICAgIC8vIHRlc3Rfb2JzZXJ2ZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfZmluaXNoKCk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X2Fib3J0ZWQoKTsKLQotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApOwotCi0gICAgdm9pZCAgICAgICAgICAgICAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKTsKLQotICAgIHZpcnR1YWwgaW50ICAgICAgICAgcHJpb3JpdHkoKSB7IHJldHVybiAxOyB9Ci0KLSAgICAvLyBsb2cgY29uZmlndXJhdGlvbiBtZXRob2RzCi0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfdGhyZXNob2xkX2xldmVsKCBsb2dfbGV2ZWwgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9mb3JtYXQoIG91dHB1dF9mb3JtYXQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9mb3JtYXR0ZXIoIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyKiApOwotCi0gICAgLy8gdGVzdCBwcm9ncmVzcyBsb2dnaW5nCi0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfY2hlY2twb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgbXNnID0gY29uc3Rfc3RyaW5nKCkgKTsKLQotICAgIC8vIGVudHJ5IGxvZ2dpbmcKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxvZzo6YmVnaW4gY29uc3QmICk7ICAgICAgICAvLyBiZWdpbiBlbnRyeSAKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxvZzo6ZW5kIGNvbnN0JiApOyAgICAgICAgICAvLyBlbmQgZW50cnkKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxvZ19sZXZlbCApOyAgICAgICAgICAgICAgICAvLyBzZXQgZW50cnkgbGV2ZWwKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGNvbnN0X3N0cmluZyApOyAgICAgICAgICAgICAvLyBsb2cgZW50cnkgdmFsdWUKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgKTsgICAgICAvLyBsb2cgZW50cnkgdmFsdWUKLQotICAgIHV0X2RldGFpbDo6ZW50cnlfdmFsdWVfY29sbGVjdG9yIG9wZXJhdG9yKCkoIGxvZ19sZXZlbCApOyAgIC8vIGluaXRpYXRlIGVudHJ5IGNvbGxlY3Rpb24KLQotcHJpdmF0ZToKLSAgICBib29sICAgICAgICAgICAgbG9nX2VudHJ5X3N0YXJ0KCk7Ci0KLSAgICBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCB1bml0X3Rlc3RfbG9nX3QgKTsKLX07IC8vIHVuaXRfdGVzdF9sb2dfdAotCi1ORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCB1bml0X3Rlc3RfbG9nICkKLQotLy8gaGVscGVyIG1hY3JvcwotI2RlZmluZSBORE5CT09TVF9URVNUX0xPR19FTlRSWSggbGwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICg6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnVuaXRfdGVzdF9sb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA8PCA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksIF9fTElORV9fICkpKGxsKSAgXAotLyoqLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIFVuaXQgdGVzdCBsb2cgaW50ZXJmYWNlIGhlbHBlcnMgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggTSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfTE9HX0VOVFJZKCA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmxvZ19tZXNzYWdlcyApICAgIFwKLSAgICA8PCAoOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpsYXp5X29zdHJlYW06Omluc3RhbmNlKCkgPDwgTSkgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QQVNTUE9JTlQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nLnNldF9jaGVja3BvaW50KCAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KF9fTElORV9fKSApICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DSEVDS1BPSU5UKCBNICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nLnNldF9jaGVja3BvaW50KCAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KF9fTElORV9fKSwgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICg6Om5kbmJvb3N0Ojp3cmFwX3N0cmluZ3N0cmVhbSgpLnJlZigpIDw8IE0pLnN0cigpICkgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWQyMTYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMy0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19GT1JNQVRURVJfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfRk9STUFUVEVSX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8c3RyaW5nPiAvLyBmb3Igc3RkOjpzdHJpbmcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBsb2dfZW50cnlfZGF0YSAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBsb2dfZW50cnlfZGF0YSB7Ci0gICAgbG9nX2VudHJ5X2RhdGEoKQotICAgIHsKLSAgICAgICAgbV9maWxlX25hbWUucmVzZXJ2ZSggMjAwICk7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICBtX2xpbmVfbnVtOwotICAgIGxvZ19sZXZlbCAgICAgICBtX2xldmVsOwotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX2ZpbGVfbmFtZS5lcmFzZSgpOwotICAgICAgICBtX2xpbmVfbnVtICAgICAgPSAwOwotICAgICAgICBtX2xldmVsICAgICA9IGxvZ19ub3RoaW5nOwotICAgIH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBjaGVja3BvaW50X2RhdGEgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBsb2dfY2hlY2twb2ludF9kYXRhCi17Ci0gICAgY29uc3Rfc3RyaW5nICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICBtX2xpbmVfbnVtOwotICAgIHN0ZDo6c3RyaW5nICAgICBtX21lc3NhZ2U7Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fZmlsZV9uYW1lLmNsZWFyKCk7Ci0gICAgICAgIG1fbGluZV9udW0gICAgPSAwOwotICAgICAgICBtX21lc3NhZ2UgPSBzdGQ6OnN0cmluZygpOwotICAgIH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIGxvZ19lbnRyeV90eXBlcyB7IE5ETkJPT1NUX1VUTF9FVF9JTkZPLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VUTF9FVF9NRVNTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVVRMX0VUX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9VVExfRVRfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9VVExfRVRfRkFUQUxfRVJST1IgfTsKLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB2aXJ0dWFsICAgICAgICAgICAgIH51bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcigpIHt9Ci0KLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19maW5pc2goIHN0ZDo6b3N0cmVhbSYgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiApID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgdGVzdF91bml0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgdGVzdF91bml0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgdGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYgb3MsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmIGNkLCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi0gICAgewotICAgICAgICAvLyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotICAgICAgICBsb2dfZXhjZXB0aW9uKCBvcywgY2QsIGV4LndoYXQoKSApOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmLCBjb25zdF9zdHJpbmcgLyogZXhwbGFuYXRpb24gKi8gKSB7fQotCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZW50cnlfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiwgbG9nX2VudHJ5X3R5cGVzIGxldCApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiwgY29uc3Rfc3RyaW5nIHZhbHVlICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mLCBsYXp5X29zdHJlYW0gY29uc3QmIHZhbHVlICk7IC8vIHRoZXJlIGlzIGEgZGVmYXVsdCBpbXBsCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZW50cnlfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0ZPUk1BVFRFUl9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbW9uaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X21vbml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzQzNzhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbW9uaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgc3BlY2lmaWMgdmVyc2lvbiBvZiBleGVjdXRpb24gbW9uaXRvciB1c2VkIHRvIG1hbmFnZWQgCi0vLyAgcnVuIHVuaXQgb2YgdGVzdCBjYXNlcy4gVHJhbnNsYXRlcyBleGVjdXRpb24gZXhjZXB0aW9uIGludG8gZXJyb3IgbGV2ZWwKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSFBQXzAyMDkwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0hQUF8wMjA5MDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHVuaXRfdGVzdF9tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdF9tb25pdG9yX3QgOiBwdWJsaWMgc2luZ2xldG9uPHVuaXRfdGVzdF9tb25pdG9yX3Q+LCBwdWJsaWMgZXhlY3V0aW9uX21vbml0b3IgewotcHVibGljOgotICAgIGVudW0gZXJyb3JfbGV2ZWwgeyAKLSAgICAgICAgdGVzdF9mYWlsICAgICAgICAgICAgICAgPSAgMSwKLSAgICAgICAgdGVzdF9vayAgICAgICAgICAgICAgICAgPSAgMCwKLSAgICAgICAgY29uc3RydWN0b3JfZXJyb3IgICAgICAgPSAtMSwgCi0gICAgICAgIHVuZXhwZWN0ZWRfZXhjZXB0aW9uICAgID0gLTIsIAotICAgICAgICBvc19leGNlcHRpb24gICAgICAgICAgICA9IC0zLCAKLSAgICAgICAgb3NfdGltZW91dCAgICAgICAgICAgICAgPSAtNCwgCi0gICAgICAgIGZhdGFsX2Vycm9yICAgICAgICAgICAgID0gLTUsICAvLyBpbmNsdWRlcyBib3RoIHN5c3RlbSBhbmQgdXNlcgotICAgICAgICBkZXN0cnVjdG9yX2Vycm9yICAgICAgICA9IC02Ci0gICAgfTsKLQotICAgIHN0YXRpYyBib29sIGlzX2NyaXRpY2FsX2Vycm9yKCBlcnJvcl9sZXZlbCBlICkgeyByZXR1cm4gZSA8PSBmYXRhbF9lcnJvcjsgfQotCi0gICAgLy8gbW9uaXRvciBtZXRob2QKLSAgICBlcnJvcl9sZXZlbCBleGVjdXRlX2FuZF90cmFuc2xhdGUoIHRlc3RfY2FzZSBjb25zdCYgKTsKLQotcHJpdmF0ZToKLSAgICBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCB1bml0X3Rlc3RfbW9uaXRvcl90ICk7Ci19OwotCi1ORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCB1bml0X3Rlc3RfbW9uaXRvciApCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSFBQXzAyMDkwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM3MGNhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgVW5pdCBUZXN0IEZyYW1ld29yayBwdWJsaWMgQVBJCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIE5vbi1hdXRvIChleHBsaWNpdCkgdGVzdCBjYXNlIGludGVyZmFjZSAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FTRSggdGVzdF9mdW5jdGlvbiApIFwKLW5kbmJvb3N0Ojp1bml0X3Rlc3Q6Om1ha2VfdGVzdF9jYXNlKCBuZG5ib29zdDo6dW5pdF90ZXN0OjpjYWxsYmFjazA8Pih0ZXN0X2Z1bmN0aW9uKSwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIHRlc3RfZnVuY3Rpb24gKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NMQVNTX1RFU1RfQ0FTRSggdGVzdF9mdW5jdGlvbiwgdGNfaW5zdGFuY2UgKSBcCi1uZG5ib29zdDo6dW5pdF90ZXN0OjptYWtlX3Rlc3RfY2FzZSgodGVzdF9mdW5jdGlvbiksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCB0ZXN0X2Z1bmN0aW9uICksIHRjX2luc3RhbmNlICkKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9TVUlURSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1VJVEUoIHRlc3RzdWl0ZV9uYW1lICkgXAotKCBuZXcgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZSggdGVzdHN1aXRlX25hbWUgKSApCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfU1VJVEUgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfU1VJVEUoIHN1aXRlX25hbWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbmFtZXNwYWNlIHN1aXRlX25hbWUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfQVVUT19UVV9SRUdJU1RSQVIoIHN1aXRlX25hbWUgKSggTkROQk9PU1RfU1RSSU5HSVpFKCBzdWl0ZV9uYW1lICkgKTsgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBORE5CT09TVF9GSVhUVVJFX1RFU1RfU1VJVEUgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfRklYVFVSRV9URVNUX1NVSVRFKCBzdWl0ZV9uYW1lLCBGICkgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0FVVE9fVEVTVF9TVUlURSggc3VpdGVfbmFtZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXR5cGVkZWYgRiBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVEVTVF9TVUlURV9FTkQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggTkROQk9PU1RfSk9JTiggZW5kX3N1aXRlLCBfX0xJTkVfXyApICkoIDEgKTsgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9FWFBFQ1RFRF9GQUlMVVJFUyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9FWFBFQ1RFRF9GQUlMVVJFUyggdGVzdF9uYW1lLCBuICkgICAgICAgICAgXAotc3RydWN0IE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIHN0cnVjdCBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9leHBfZmFpbF9udW1fc3BlYyApICAgICAgICAgICAgICAgXAotOiBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBhdXRvX3RjX2V4cF9mYWlsPE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKSA+ICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX2V4cF9mYWlsX251bV9zcGVjICkoKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIDogbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgYXV0b190Y19leHBfZmFpbDxORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICkgPiggbiApICAgICAgXAotICAgIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9leHBfZmFpbF9udW1fc3BlY19pbnN0ICk7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRSAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0UoIHRlc3RfbmFtZSwgRiApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0ZXN0X25hbWUgOiBwdWJsaWMgRiB7IHZvaWQgdGVzdF9tZXRob2QoKTsgfTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyB2b2lkIE5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICkoKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZXN0X25hbWUgdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0LnRlc3RfbWV0aG9kKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICkge307ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0FVVE9fVFVfUkVHSVNUUkFSKCB0ZXN0X25hbWUgKSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0OjptYWtlX3Rlc3RfY2FzZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgJk5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICksICN0ZXN0X25hbWUgKSwgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OmF1dG9fdGNfZXhwX2ZhaWw8ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApPjo6aW5zdGFuY2UoKS0+dmFsdWUoKSApOyAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXZvaWQgdGVzdF9uYW1lOjp0ZXN0X21ldGhvZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFKCB0ZXN0X25hbWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRSggdGVzdF9uYW1lLCBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFX1RFTVBMQVRFICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFX1RFTVBMQVRFKCB0ZXN0X25hbWUsIHR5cGVfbmFtZSwgVEwsIEYgKSBcCi10ZW1wbGF0ZTx0eXBlbmFtZSB0eXBlX25hbWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdGVzdF9uYW1lIDogcHVibGljIEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17IHZvaWQgdGVzdF9tZXRob2QoKTsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkROQk9PU1RfQVVUT19UQ19JTlZPS0VSKCB0ZXN0X25hbWUgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVzdFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHZvaWQgcnVuKCBuZG5ib29zdDo6dHlwZTxUZXN0VHlwZT4qID0gMCApICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlc3RfbmFtZTxUZXN0VHlwZT4gdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHQudGVzdF9tZXRob2QoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggdGVzdF9uYW1lICkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjp0ZW1wbGF0ZV90ZXN0X2Nhc2VfZ2VuPCAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICksVEwgPiggICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgTkROQk9PU1RfU1RSSU5HSVpFKCB0ZXN0X25hbWUgKSApICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTx0eXBlbmFtZSB0eXBlX25hbWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIHRlc3RfbmFtZTx0eXBlX25hbWU+Ojp0ZXN0X21ldGhvZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfVEVNUExBVEUgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9URU1QTEFURSggdGVzdF9uYW1lLCB0eXBlX25hbWUsIFRMICkgICAgICAgXAotTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0VfVEVNUExBVEUoIHRlc3RfbmFtZSwgdHlwZV9uYW1lLCBUTCwgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRklYVFVSRSApCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgTkROQk9PU1RfVEVTVF9DQVNFX1RFTVBMQVRFICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0NBU0VfVEVNUExBVEUoIG5hbWUsIHR5cGVsaXN0ICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OnRlbXBsYXRlX3Rlc3RfY2FzZV9nZW48bmFtZSx0eXBlbGlzdCA+KCAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBuYW1lICkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBORE5CT09TVF9URVNUX0NBU0VfVEVNUExBVEVfRlVOQ1RJT04gICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DQVNFX1RFTVBMQVRFX0ZVTkNUSU9OKCBuYW1lLCB0eXBlX25hbWUgKSAgICBcCi10ZW1wbGF0ZTx0eXBlbmFtZSB0eXBlX25hbWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdm9pZCBORE5CT09TVF9KT0lOKCBuYW1lLCBfaW1wbCApKCBuZG5ib29zdDo6dHlwZTx0eXBlX25hbWU+KiApOyAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgbmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlc3RUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgdm9pZCBydW4oIG5kbmJvb3N0Ojp0eXBlPFRlc3RUeXBlPiogZnJ3cmQgPSAwICkgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIE5ETkJPT1NUX0pPSU4oIG5hbWUsIF9pbXBsICkoIGZyd3JkICk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPHR5cGVuYW1lIHR5cGVfbmFtZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIE5ETkJPT1NUX0pPSU4oIG5hbWUsIF9pbXBsICkoIG5kbmJvb3N0Ojp0eXBlPHR5cGVfbmFtZT4qICkgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIE5ETkJPT1NUX0dMT0JBTF9GSVhVUkUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfR0xPQkFMX0ZJWFRVUkUoIEYgKSBcCi1zdGF0aWMgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjpnbG9iYWxfZml4dHVyZV9pbXBsPEY+IE5ETkJPT1NUX0pPSU4oIGdmXywgRiApIDsgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bml0X3Rlc3QgeyBuYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotc3RydWN0IG5pbF90IHt9OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLX0gLy8gdW5pdF90ZXN0Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyBJbnRlbnRpb25hbGx5IGlzIGluIGdsb2JhbCBuYW1lc3BhY2UsIHNvIHRoYXQgRklYVVJFX1RFU1RfU1VJVEUgY2FuIHJlc2V0IGl0IGluIHVzZXIgY29kZS4KLXR5cGVkZWYgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6Om5pbF90IE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0ZJWFRVUkU7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgIEF1dG8gcmVnaXN0cmF0aW9uIGZhY2lsaXR5IGhlbHBlciBtYWNyb3MgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggdGVzdF9uYW1lICkgICAgXAotc3RhdGljIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyIE5ETkJPT1NUX0pPSU4oIE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX3JlZ2lzdHJhciApLCBfX0xJTkVfXyApCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICkgICAgICBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9pbnZva2VyICkKLSNkZWZpbmUgTkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApICAgIE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX2lkICkKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfTUFJTiAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9URVNUX01BSU4pCi0KLSNpZmRlZiBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi1ib29sIGluaXRfdW5pdF90ZXN0KCkgICAgICAgICAgICAgICAgICAgewotI2Vsc2UKLTo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZSoKLWluaXRfdW5pdF90ZXN0X3N1aXRlKCBpbnQsIGNoYXIqIFtdICkgICB7Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfTU9EVUxFCi0gICAgdXNpbmcgbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDsKLSAgICBhc3NpZ25fb3AoIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX25hbWUudmFsdWUsIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBORE5CT09TVF9URVNUX01PRFVMRSApLnRyaW0oICJcIiIgKSwgMCApOwotICAgIAotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZWxzZQotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlMTA5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDM0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyB0ZXN0X3VuaXQsIHRlc3RfY2FzZSwgdGVzdF9jYXNlX3Jlc3VsdHMsIHRlc3Rfc3VpdGUgYW5kIHRlc3RfdHJlZV92aXNpdG9yCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JTVBMX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSU1QTF9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mb3JfZWFjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHR5cGVpbmZvPiAvLyBmb3IgdHlwZWlkCi0jaW5jbHVkZSA8c3RyaW5nPiAgIC8vIGZvciBzdGQ6OnN0cmluZwotI2luY2x1ZGUgPGxpc3Q+ICAgICAvLyBmb3Igc3RkOjpsaXN0Ci0jaW5jbHVkZSA8dmVjdG9yPiAgIC8vIGZvciBzdGQ6OnZlY3RvcgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHRlc3RfdW5pdCAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF91bml0IHsKLXB1YmxpYzoKLSAgICBlbnVtIHsgdHlwZSA9IHR1dF9hbnkgfTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdGVzdF91bml0KCBjb25zdF9zdHJpbmcgdHVfbmFtZSwgdGVzdF91bml0X3R5cGUgdCApOwotCi0gICAgLy8gZGVwZW5kZW5jaWVzIG1hbmFnZW1lbnQKLSAgICB2b2lkICAgIGRlcGVuZHNfb24oIHRlc3RfdW5pdCogdHUgKTsKLSAgICBib29sICAgIGNoZWNrX2RlcGVuZGVuY2llcygpIGNvbnN0OwotCi0gICAgLy8gUHVibGljIHIvbyBwcm9wZXJ0aWVzCi0gICAgdHlwZWRlZiBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSh0ZXN0X3VuaXRfaWQsKGZyYW1ld29ya19pbXBsKSkgIGlkX3Q7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSh0ZXN0X3VuaXRfaWQsKHRlc3Rfc3VpdGUpKSAgICAgIHBhcmVudF9pZF90OwotICAgIHJlYWRvbmx5X3Byb3BlcnR5PHRlc3RfdW5pdF90eXBlPiAgIHBfdHlwZTsgICAgICAgICAgICAgICAgIC8vIHR5cGUgZm9yIHRoaXMgdGVzdCB1bml0Ci0gICAgcmVhZG9ubHlfcHJvcGVydHk8Y29uc3Rfc3RyaW5nPiAgICAgcF90eXBlX25hbWU7ICAgICAgICAgICAgLy8gImNhc2UiLyJzdWl0ZSIKLSAgICBpZF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2lkOyAgICAgICAgICAgICAgICAgICAvLyB1bmlxdWUgaWQgZm9yIHRoaXMgdGVzdCB1bml0Ci0gICAgcGFyZW50X2lkX3QgICAgICAgICAgICAgICAgICAgICAgICAgcF9wYXJlbnRfaWQ7ICAgICAgICAgICAgLy8gcGFyZW50IHRlc3Qgc3VpdGUgaWQKLQotICAgIC8vIFB1YmxpYyByL3cgcHJvcGVydGllcwotICAgIHJlYWR3cml0ZV9wcm9wZXJ0eTxzdGQ6OnN0cmluZz4gICAgIHBfbmFtZTsgICAgICAgICAgICAgICAgIC8vIG5hbWUgZm9yIHRoaXMgdGVzdCB1bml0Ci0gICAgcmVhZHdyaXRlX3Byb3BlcnR5PHVuc2lnbmVkPiAgICAgICAgcF90aW1lb3V0OyAgICAgICAgICAgICAgLy8gdGltZW91dCBmb3IgdGhlIHRlc3QgdW5pdCBleGVjdXRpb24gCi0gICAgcmVhZHdyaXRlX3Byb3BlcnR5PGNvdW50ZXJfdD4gICAgICAgcF9leHBlY3RlZF9mYWlsdXJlczsgICAgLy8gbnVtYmVyIG9mIGV4cGVjdGVkIGZhaWx1cmVzIGluIHRoaXMgdGVzdCB1bml0Ci0gICAgbXV0YWJsZSByZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgcF9lbmFibGVkOyAgICAgICAgICAgICAgLy8gZW5hYmxlZCBzdGF0dXMgZm9yIHRoaXMgdW5pdAotCi0gICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VfZXhwX2ZhaWwoIHVuc2lnbmVkIG51bSApOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfnRlc3RfdW5pdCgpOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHN0ZDo6bGlzdDx0ZXN0X3VuaXRfaWQ+ICAgICAgICAgICAgIG1fZGVwZW5kZW5jaWVzOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICB0ZXN0X2Nhc2VfZ2VuZXJhdG9yICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF91bml0X2dlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB0ZXN0X3VuaXQqICBuZXh0KCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+dGVzdF91bml0X2dlbmVyYXRvcigpIHt9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdF91bml0IHsKLXB1YmxpYzoKLSAgICBlbnVtIHsgdHlwZSA9IHR1dF9jYXNlIH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlc3RfY2FzZSggY29uc3Rfc3RyaW5nIHRjX25hbWUsIGNhbGxiYWNrMDw+IGNvbnN0JiB0ZXN0X2Z1bmMgKTsKLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgY2FsbGJhY2swPD4gY29uc3QmICB0ZXN0X2Z1bmMoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RfZnVuYzsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBmcmFtZXdvcmtfaW1wbDsKLSAgICB+dGVzdF9jYXNlKCkge30KLQotICAgIC8vIE5ETkJPT1NUX01TVkMgPD0gMTIwMCBoYXZlIHByb2JsZW1zIHdpdGggY2FsbGJhY2sgYXMgcHJvcGVydHkKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjYWxsYmFjazA8PiBtX3Rlc3RfZnVuYzsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHRlc3Rfc3VpdGUgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3Rfc3VpdGUgOiBwdWJsaWMgdGVzdF91bml0IHsKLXB1YmxpYzoKLSAgICBlbnVtIHsgdHlwZSA9IHR1dF9zdWl0ZSB9OwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgdGVzdF9zdWl0ZSggY29uc3Rfc3RyaW5nIHRzX25hbWUgKTsKLQotICAgIC8vIHRlc3QgdW5pdCBsaXN0IG1hbmFnZW1lbnQKLSAgICB2b2lkICAgICAgICAgICAgYWRkKCB0ZXN0X3VuaXQqIHR1LCBjb3VudGVyX3QgZXhwZWN0ZWRfZmFpbHVyZXMgPSAwLCB1bnNpZ25lZCB0aW1lb3V0ID0gMCApOwotICAgIHZvaWQgICAgICAgICAgICBhZGQoIHRlc3RfdW5pdF9nZW5lcmF0b3IgY29uc3QmIGdlbiwgdW5zaWduZWQgdGltZW91dCA9IDAgKTsKLSAgICB2b2lkICAgICAgICAgICAgcmVtb3ZlKCB0ZXN0X3VuaXRfaWQgaWQgKTsKLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgdGVzdF91bml0X2lkICAgIGdldCggY29uc3Rfc3RyaW5nIHR1X25hbWUgKSBjb25zdDsKLSAgICBzdGQ6OnNpemVfdCAgICAgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtYmVycy5zaXplKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIGZyaWVuZCBORE5CT09TVF9URVNUX0RFQ0wgCi0gICAgdm9pZCAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3N1aXRlIGNvbnN0JiwgdGVzdF90cmVlX3Zpc2l0b3ImICk7Ci0gICAgZnJpZW5kIGNsYXNzIGZyYW1ld29ya19pbXBsOwotICAgIHZpcnR1YWwgICAgIH50ZXN0X3N1aXRlKCkge30KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHN0ZDo6dmVjdG9yPHRlc3RfdW5pdF9pZD4gbV9tZW1iZXJzOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgbWFzdGVyX3Rlc3Rfc3VpdGUgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgbWFzdGVyX3Rlc3Rfc3VpdGVfdCA6IHB1YmxpYyB0ZXN0X3N1aXRlIHsKLXB1YmxpYzoKLSAgICBtYXN0ZXJfdGVzdF9zdWl0ZV90KCkgOiB0ZXN0X3N1aXRlKCAiTWFzdGVyIFRlc3QgU3VpdGUiICkKLSAgICAsIGFyZ2MoIDAgKQotICAgICwgYXJndiggMCApCi0gICAge30KLSAgICAKLSAgICAvLyBEYXRhIG1lbWJlcnMgICAgCi0gICAgaW50ICAgICAgYXJnYzsKLSAgICBjaGFyKiogICBhcmd2OwotfTsKLQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB0ZXN0X3RyZWVfdmlzaXRvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3RyZWVfdmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gdGVzdCB0cmVlIHZpc2l0b3IgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmICkgICAgICAgICAgICAgICB7fQotICAgIHZpcnR1YWwgYm9vbCAgICB0ZXN0X3N1aXRlX3N0YXJ0KCB0ZXN0X3N1aXRlIGNvbnN0JiApICAgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3N1aXRlX2ZpbmlzaCggdGVzdF9zdWl0ZSBjb25zdCYgKSAge30KLQotcHJvdGVjdGVkOgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfnRlc3RfdHJlZV92aXNpdG9yKCkge30KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X2Nhc2UgY29uc3QmLCB0ZXN0X3RyZWVfdmlzaXRvciYgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF9zdWl0ZSBjb25zdCYsIHRlc3RfdHJlZV92aXNpdG9yJiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3VuaXRfaWQgICAgICwgdGVzdF90cmVlX3Zpc2l0b3ImICk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB2b2lkCi10cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHRlc3RfdHJlZV92aXNpdG9yJiBWICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9jYXNlICkKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBzdGF0aWNfY2FzdDx0ZXN0X2Nhc2UgY29uc3QmPiggdHUgKSwgViApOwotICAgIGVsc2UKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBzdGF0aWNfY2FzdDx0ZXN0X3N1aXRlIGNvbnN0Jj4oIHR1ICksIFYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9jb3VudGVyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyB0ZXN0X2Nhc2VfY291bnRlciA6IHB1YmxpYyB0ZXN0X3RyZWVfdmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0ZXN0X2Nhc2VfY291bnRlcigpIDogcF9jb3VudCggMCApIHt9Ci0KLSAgICBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggY291bnRlcl90LCAodGVzdF9jYXNlX2NvdW50ZXIpKSBwX2NvdW50OwotcHJpdmF0ZToKLSAgICAvLyB0ZXN0IHRyZWUgdmlzaXRvciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgKTsKLSAgICB2aXJ0dWFsIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKSAgICB7IHJldHVybiB0cy5wX2VuYWJsZWQ7IH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRlc3RfYmVpbmdfYWJvcnRlZCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X2JlaW5nX2Fib3J0ZWQge307Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG9iamVjdCBnZW5lcmF0b3JzICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6OnN0cmluZyBub3JtYWxpemVfdGVzdF9jYXNlX25hbWUoIGNvbnN0X3N0cmluZyB0dV9uYW1lICk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEluc3RhbmNlVHlwZSx0eXBlbmFtZSBVc2VyVGVzdENhc2U+Ci1zdHJ1Y3QgdXNlcl90Y19tZXRob2RfaW52b2tlciB7Ci0gICAgdHlwZWRlZiB2b2lkIChVc2VyVGVzdENhc2U6OipUZXN0TWV0aG9kICkoKTsKLQotICAgIHVzZXJfdGNfbWV0aG9kX2ludm9rZXIoIHNoYXJlZF9wdHI8SW5zdGFuY2VUeXBlPiBpbnN0LCBUZXN0TWV0aG9kIHRlc3RfbWV0aG9kICkKLSAgICA6IG1faW5zdCggaW5zdCApLCBtX3Rlc3RfbWV0aG9kKCB0ZXN0X21ldGhvZCApIHt9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSB7ICgoKm1faW5zdCkuKm1fdGVzdF9tZXRob2QpKCk7IH0KLQotICAgIHNoYXJlZF9wdHI8SW5zdGFuY2VUeXBlPiBtX2luc3Q7Ci0gICAgVGVzdE1ldGhvZCAgICAgICAgICAgICAgIG1fdGVzdF9tZXRob2Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHRlc3RfY2FzZSoKLW1ha2VfdGVzdF9jYXNlKCBjYWxsYmFjazA8PiBjb25zdCYgdGVzdF9mdW5jLCBjb25zdF9zdHJpbmcgdGNfbmFtZSApCi17Ci0gICAgcmV0dXJuIG5ldyB0ZXN0X2Nhc2UoIHV0X2RldGFpbDo6bm9ybWFsaXplX3Rlc3RfY2FzZV9uYW1lKCB0Y19uYW1lICksIHRlc3RfZnVuYyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VyVGVzdENhc2UsIHR5cGVuYW1lIEluc3RhbmNlVHlwZT4KLWlubGluZSB0ZXN0X2Nhc2UqCi1tYWtlX3Rlc3RfY2FzZSggdm9pZCAoVXNlclRlc3RDYXNlOjoqICAgICAgICAgICB0ZXN0X21ldGhvZCApKCksCi0gICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nICAgICAgICAgICAgICAgICAgICB0Y19uYW1lLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPEluc3RhbmNlVHlwZT4gdXNlcl90ZXN0X2Nhc2UgKQotewotICAgIHJldHVybiBuZXcgdGVzdF9jYXNlKCB1dF9kZXRhaWw6Om5vcm1hbGl6ZV90ZXN0X2Nhc2VfbmFtZSggdGNfbmFtZSApLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdXRfZGV0YWlsOjp1c2VyX3RjX21ldGhvZF9pbnZva2VyPEluc3RhbmNlVHlwZSxVc2VyVGVzdENhc2U+KCB1c2VyX3Rlc3RfY2FzZSwgdGVzdF9tZXRob2QgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcgotewotICAgIC8vIENvbnN0cnVjdG9ycwotICAgICAgICAgICAgICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggdGVzdF9jYXNlKiB0YywgY291bnRlcl90IGV4cF9mYWlsICk7Ci0gICAgZXhwbGljaXQgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBjb25zdF9zdHJpbmcgdHNfbmFtZSApOwotICAgIGV4cGxpY2l0ICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggdGVzdF91bml0X2dlbmVyYXRvciBjb25zdCYgdGNfZ2VuICk7Ci0gICAgZXhwbGljaXQgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBpbnQgKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjpsaXN0PHRlc3Rfc3VpdGUqPiYgY3Vycl90c19zdG9yZSgpOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBhdXRvX3RjX2V4cF9mYWlsIHsKLSAgICBhdXRvX3RjX2V4cF9mYWlsKCkgOiBtX3ZhbHVlKCAwICkge30KLQotICAgIGV4cGxpY2l0ICAgIGF1dG9fdGNfZXhwX2ZhaWwoIHVuc2lnbmVkIHYgKQotICAgIDogbV92YWx1ZSggdiApCi0gICAgewotICAgICAgICBpbnN0YW5jZSgpID0gdGhpczsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYXV0b190Y19leHBfZmFpbComIGluc3RhbmNlKCkgCi0gICAgewotICAgICAgICBzdGF0aWMgYXV0b190Y19leHBfZmFpbCAgICAgaW5zdDsgCi0gICAgICAgIHN0YXRpYyBhdXRvX3RjX2V4cF9mYWlsKiAgICBpbnN0X3B0ciA9ICZpbnN0OyAKLQotICAgICAgICByZXR1cm4gaW5zdF9wdHI7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgICAgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgdW5zaWduZWQgICAgbV92YWx1ZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZ2xvYmFsX2ZpeHR1cmUgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBnbG9iYWxfZml4dHVyZSA6IHB1YmxpYyB0ZXN0X29ic2VydmVyIHsgCi1wdWJsaWM6IAotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZ2xvYmFsX2ZpeHR1cmUoKTsKLX07IAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4gCi1zdHJ1Y3QgZ2xvYmFsX2ZpeHR1cmVfaW1wbCA6IHB1YmxpYyBnbG9iYWxfZml4dHVyZSB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBnbG9iYWxfZml4dHVyZV9pbXBsKCk6IG1fZml4dXJlKCAwICkgICAge30KLQotICAgIC8vIHRlc3Qgb2JzZXJ2ZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCApIHsgbV9maXh1cmUgPSBuZXcgRjsgfQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X2ZpbmlzaCgpICAgICAgICAgICB7IGRlbGV0ZSBtX2ZpeHVyZTsgbV9maXh1cmUgPSAwOyB9IAotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X2Fib3J0ZWQoKSAgICAgICAgICB7IGRlbGV0ZSBtX2ZpeHVyZTsgbV9maXh1cmUgPSAwOyB9IAotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEYqICBtX2ZpeHVyZTsKLX07IAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgdGVzdF9jYXNlX3RlbXBsYXRlX2ludm9rZXIgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFRlc3RDYXNlVGVtcGxhdGUsdHlwZW5hbWUgVGVzdFR5cGU+Ci1jbGFzcyB0ZXN0X2Nhc2VfdGVtcGxhdGVfaW52b2tlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCkgICAgeyBUZXN0Q2FzZVRlbXBsYXRlOjpydW4oIChuZG5ib29zdDo6dHlwZTxUZXN0VHlwZT4qKTAgKTsgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBnZW5lcmF0ZV90ZXN0X2Nhc2VfNF90eXBlICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBHZW5lcmF0b3IsdHlwZW5hbWUgVGVzdENhc2VUZW1wbGF0ZT4KLXN0cnVjdCBnZW5lcmF0ZV90ZXN0X2Nhc2VfNF90eXBlIHsKLSAgICBleHBsaWNpdCAgICBnZW5lcmF0ZV90ZXN0X2Nhc2VfNF90eXBlKCBjb25zdF9zdHJpbmcgdGNfbmFtZSwgR2VuZXJhdG9yJiBHICkKLSAgICA6IG1fdGVzdF9jYXNlX25hbWUoIHRjX25hbWUgKQotICAgICwgbV9ob2xkZXIoIEcgKQotICAgIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXN0VHlwZT4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBtcGw6OmlkZW50aXR5PFRlc3RUeXBlPiApCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyBmdWxsX25hbWU7Ci0gICAgICAgIGFzc2lnbl9vcCggZnVsbF9uYW1lLCBtX3Rlc3RfY2FzZV9uYW1lLCAwICk7Ci0gICAgICAgIGZ1bGxfbmFtZSArPSAnPCc7Ci0gICAgICAgIGZ1bGxfbmFtZSArPSB0eXBlaWQoVGVzdFR5cGUpLm5hbWUoKTsKLSAgICAgICAgaWYoIG5kbmJvb3N0Ojppc19jb25zdDxUZXN0VHlwZT46OnZhbHVlICkKLSAgICAgICAgICAgIGZ1bGxfbmFtZSArPSAiIGNvbnN0IjsKLSAgICAgICAgZnVsbF9uYW1lICs9ICc+JzsKLQotICAgICAgICBtX2hvbGRlci5tX3Rlc3RfY2FzZXMucHVzaF9iYWNrKCAKLSAgICAgICAgICAgIG5ldyB0ZXN0X2Nhc2UoIGZ1bGxfbmFtZSwgdGVzdF9jYXNlX3RlbXBsYXRlX2ludm9rZXI8VGVzdENhc2VUZW1wbGF0ZSxUZXN0VHlwZT4oKSApICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNvbnN0X3N0cmluZyAgICBtX3Rlc3RfY2FzZV9uYW1lOwotICAgIEdlbmVyYXRvciYgICAgICBtX2hvbGRlcjsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgdGVzdF9jYXNlX3RlbXBsYXRlICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVGVzdENhc2VUZW1wbGF0ZSx0eXBlbmFtZSBUZXN0VHlwZXNMaXN0PgotY2xhc3MgdGVtcGxhdGVfdGVzdF9jYXNlX2dlbiA6IHB1YmxpYyB0ZXN0X3VuaXRfZ2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlbXBsYXRlX3Rlc3RfY2FzZV9nZW4oIGNvbnN0X3N0cmluZyB0Y19uYW1lICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZ2VuZXJhdGVfdGVzdF9jYXNlXzRfdHlwZTx0ZW1wbGF0ZV90ZXN0X2Nhc2VfZ2VuPFRlc3RDYXNlVGVtcGxhdGUsVGVzdFR5cGVzTGlzdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0Q2FzZVRlbXBsYXRlCi0gICAgICAgID4gc2luZ2xlX3Rlc3RfZ2VuOwotICAgICAgICBtcGw6OmZvcl9lYWNoPFRlc3RUeXBlc0xpc3QsbXBsOjptYWtlX2lkZW50aXR5PG1wbDo6Xz4gPiggc2luZ2xlX3Rlc3RfZ2VuKCB0Y19uYW1lLCAqdGhpcyApICk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB0ZXN0X3VuaXQqIG5leHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYoIG1fdGVzdF9jYXNlcy5lbXB0eSgpICkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgICAgICB0ZXN0X3VuaXQqIHJlcyA9IG1fdGVzdF9jYXNlcy5mcm9udCgpOwotICAgICAgICBtX3Rlc3RfY2FzZXMucG9wX2Zyb250KCk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBtdXRhYmxlIHN0ZDo6bGlzdDx0ZXN0X3VuaXQqPiBtX3Rlc3RfY2FzZXM7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotfSAvLyB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JTVBMX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2FsZ29yaXRobS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZmN2QwNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGFkZGl0aW9uIHRvIFNUTCBhbGdvcml0aG1zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9BTEdPUklUSE1fSFBQXzA2MjMwNEdFUgotI2RlZmluZSBORE5CT09TVF9BTEdPUklUSE1fSFBQXzA2MjMwNEdFUgotCi0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIHN0ZDo6ZmluZAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+IC8vIHN0ZDo6YmluZDFzdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCB0d28gY29sbGVjdGlvbnMgZm9yIGZpcnN0IG1pc21hdGNoIHBvc2l0aW9uIHRoYXQgZ2V0IHJldHVybmVkIGFzIGEgcGFpcgotLy8vIG9mIGl0ZXJhdG9ycywgZmlyc3QgcG9pbnRpbmcgdG8gdGhlIG1pc21hdGNoIHBvc2l0aW9uIGluIGZpcnN0IGNvbGxlY3Rpb24sIHNlY29uZCBpdGVyYXRvciBpbiBzZWNvbmQgb25lCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyMSwgY2xhc3MgSW5wdXRJdGVyMj4KLWlubGluZSBzdGQ6OnBhaXI8SW5wdXRJdGVyMSwgSW5wdXRJdGVyMj4KLW1pc21hdGNoKCBJbnB1dEl0ZXIxIGZpcnN0MSwgSW5wdXRJdGVyMSBsYXN0MSwKLSAgICAgICAgICBJbnB1dEl0ZXIyIGZpcnN0MiwgSW5wdXRJdGVyMiBsYXN0MiApCi17Ci0gICAgd2hpbGUoIGZpcnN0MSAhPSBsYXN0MSAmJiBmaXJzdDIgIT0gbGFzdDIgJiYgKmZpcnN0MSA9PSAqZmlyc3QyICkgewotICAgICAgICArK2ZpcnN0MTsKLSAgICAgICAgKytmaXJzdDI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6cGFpcjxJbnB1dEl0ZXIxLCBJbnB1dEl0ZXIyPihmaXJzdDEsIGZpcnN0Mik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggdHdvIGNvbGxlY3Rpb25zIGZvciBmaXJzdCBtaXNtYXRjaCBwb3NpdGlvbiB0aGF0IGdldCByZXR1cm5lZCBhcyBhIHBhaXIKLS8vLyBvZiBpdGVyYXRvcnMsIGZpcnN0IHBvaW50aW5nIHRvIHRoZSBtaXNtYXRjaCBwb3NpdGlvbiBpbiBmaXJzdCBjb2xsZWN0aW9uLCBzZWNvbmQgaXRlcmF0b3IgaW4gc2Vjb25kIG9uZS4gVGhpcyBhbGdvcml0aG1zCi0vLy8gdXNlcyBzdXBwbGllZCBwcmVkaWNhdGUgZm9yIGNvbGxlY3Rpb24gZWxlbWVudHMgY29tcGFyaXNvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcjEsIGNsYXNzIElucHV0SXRlcjIsIGNsYXNzIFByZWRpY2F0ZT4KLWlubGluZSBzdGQ6OnBhaXI8SW5wdXRJdGVyMSwgSW5wdXRJdGVyMj4KLW1pc21hdGNoKCBJbnB1dEl0ZXIxIGZpcnN0MSwgSW5wdXRJdGVyMSBsYXN0MSwKLSAgICAgICAgICBJbnB1dEl0ZXIyIGZpcnN0MiwgSW5wdXRJdGVyMiBsYXN0MiwKLSAgICAgICAgICBQcmVkaWNhdGUgcHJlZCApCi17Ci0gICAgd2hpbGUoIGZpcnN0MSAhPSBsYXN0MSAmJiBmaXJzdDIgIT0gbGFzdDIgJiYgcHJlZCggKmZpcnN0MSwgKmZpcnN0MiApICkgewotICAgICAgICArK2ZpcnN0MTsKLSAgICAgICAgKytmaXJzdDI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6cGFpcjxJbnB1dEl0ZXIxLCBJbnB1dEl0ZXIyPihmaXJzdDEsIGZpcnN0Mik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgZmlyc3QgZWxlbWVudCB0aGF0IGRvZXMgbm90IGJlbG9uZyBhIHNlY29uZCBvbmUKLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLXRlbXBsYXRlPGNsYXNzIEZvcndhcmRJdGVyYXRvcjEsIGNsYXNzIEZvcndhcmRJdGVyYXRvcjI+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yMQotZmluZF9maXJzdF9ub3Rfb2YoIEZvcndhcmRJdGVyYXRvcjEgZmlyc3QxLCBGb3J3YXJkSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiApCi17Ci0gICAgd2hpbGUoIGZpcnN0MSAhPSBsYXN0MSApIHsKLSAgICAgICAgaWYoIHN0ZDo6ZmluZCggZmlyc3QyLCBsYXN0MiwgKmZpcnN0MSApID09IGxhc3QyICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICArK2ZpcnN0MTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmlyc3QxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGZpcnN0IGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBzYXRpc2Z5IGJpbmFyeSAKLS8vLyBwcmVkaWNhdGUgaW4gY29uanVuY3Rpb24gd2lsbCBhbnkgZWxlbWVudCBpbiBzZWNvbmQgY29sbGVjdGlvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGU8Y2xhc3MgRm9yd2FyZEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMiwgY2xhc3MgUHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvcjEKLWZpbmRfZmlyc3Rfbm90X29mKCBGb3J3YXJkSXRlcmF0b3IxIGZpcnN0MSwgRm9yd2FyZEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIsIAotICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZSBwcmVkICkKLXsKLSAgICB3aGlsZSggZmlyc3QxICE9IGxhc3QxICkgewotICAgICAgICBpZiggc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICpmaXJzdDEgKSApID09IGxhc3QyICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICArK2ZpcnN0MTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmlyc3QxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGxhc3QgZWxlbWVudCB0aGF0IGJlbG9uZ3MgdG8gYSBzZWNvbmQgb25lCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi10ZW1wbGF0ZTxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3IyPgotaW5saW5lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEKLWZpbmRfbGFzdF9vZiggQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBmaXJzdDEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiApCi17Ci0gICAgaWYoIGZpcnN0MSA9PSBsYXN0MSB8fCBmaXJzdDIgPT0gbGFzdDIgKQotICAgICAgICByZXR1cm4gbGFzdDE7Ci0KLSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGl0MSA9IGxhc3QxOwotICAgIHdoaWxlKCAtLWl0MSAhPSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgPT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgPT0gbGFzdDIgPyBsYXN0MSA6IGl0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBsYXN0IGVsZW1lbnQgdGhhdCBzYXRpc2Z5IGJpbmFyeSAKLS8vLyBwcmVkaWNhdGUgaW4gY29uanVuY3Rpb24gd2lsbCBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiBzZWNvbmQgY29sbGVjdGlvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGU8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMiwgY2xhc3MgUHJlZGljYXRlPgotaW5saW5lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEKLWZpbmRfbGFzdF9vZiggQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBmaXJzdDEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiwgCi0gICAgICAgICAgICAgIFByZWRpY2F0ZSBwcmVkICkKLXsKLSAgICBpZiggZmlyc3QxID09IGxhc3QxIHx8IGZpcnN0MiA9PSBsYXN0MiApCi0gICAgICAgIHJldHVybiBsYXN0MTsKLQotICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgaXQxID0gbGFzdDE7Ci0gICAgd2hpbGUoIC0taXQxICE9IGZpcnN0MSAmJiBzdGQ6OmZpbmRfaWYoIGZpcnN0MiwgbGFzdDIsIHN0ZDo6YmluZDFzdCggcHJlZCwgKml0MSApICkgPT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICppdDEgKSApID09IGxhc3QyID8gbGFzdDEgOiBpdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgbGFzdCBlbGVtZW50IHRoYXQgZG9lcyBub3QgYmVsb25nIHRvIGEgc2Vjb25kIG9uZQotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotdGVtcGxhdGU8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMj4KLWlubGluZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxCi1maW5kX2xhc3Rfbm90X29mKCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGZpcnN0MSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiApCi17Ci0gICAgaWYoIGZpcnN0MSA9PSBsYXN0MSB8fCBmaXJzdDIgPT0gbGFzdDIgKQotICAgICAgICByZXR1cm4gbGFzdDE7Ci0KLSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGl0MSA9IGxhc3QxOwotICAgIHdoaWxlKCAtLWl0MSAhPSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgIT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgIT0gbGFzdDIgPyBsYXN0MSA6IGl0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBsYXN0IGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBzYXRpc2Z5IGJpbmFyeSAKLS8vLyBwcmVkaWNhdGUgaW4gY29uanVuY3Rpb24gd2lsbCBhbnkgZWxlbWVudCBpbiBzZWNvbmQgY29sbGVjdGlvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGU8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMiwgY2xhc3MgUHJlZGljYXRlPgotaW5saW5lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEKLWZpbmRfbGFzdF9ub3Rfb2YoIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgZmlyc3QxLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyLCAKLSAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZSBwcmVkICkKLXsKLSAgICBpZiggZmlyc3QxID09IGxhc3QxIHx8IGZpcnN0MiA9PSBsYXN0MiApCi0gICAgICAgIHJldHVybiBsYXN0MTsKLQotICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgaXQxID0gbGFzdDE7Ci0gICAgd2hpbGUoIC0taXQxICE9IGZpcnN0MSAmJiBzdGQ6OmZpbmRfaWYoIGZpcnN0MiwgbGFzdDIsIHN0ZDo6YmluZDFzdCggcHJlZCwgKml0MSApICkgIT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICppdDEgKSApID09IGxhc3QyID8gbGFzdDEgOiBpdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0FMR09SSVRITV9IUFBfMDYyMzA0R0VSCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Fzc2lnbl9vcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYXNzaWduX29wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU0YmUwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYXNzaWduX29wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogb3ZlcmxvYWRhYmxlIGFzc2lnbm1lbnQKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQVNTSUdOX09QXzAzMzAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0FTU0lHTl9PUF8wMzMwMDVHRVIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBnZW5lcmljIGFzc2lnbiBvcGVyYXRvciAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gZ2VuZXJpYwotdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBTPgotaW5saW5lIHZvaWQKLWFzc2lnbl9vcCggVCYgdCwgUyBjb25zdCYgcywgbG9uZyApCi17Ci0gICAgdCA9IHM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9BU1NJR05fT1BfMDMzMDA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYTY0Y2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjbGFzcyBiYXNpY19jc3RyaW5nIHdyYXBzIEMgc3RyaW5nIGFuZCBwcm92aWRlIHN0ZF9zdHJpbmcgbGlrZSAKLS8vICAgICAgICAgICAgICAgIGludGVyZmFjZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jjc19jaGFyX3RyYWl0cy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBiYXNpY19jc3RyaW5nICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1jbGFzcyBiYXNpY19jc3RyaW5nIHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8Q2hhclQ+ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZl90eXBlOwotcHVibGljOgotICAgIC8vIFN1YnR5cGVzCi0gICAgdHlwZWRlZiB1dF9kZXRhaWw6OmJjc19jaGFyX3RyYWl0czxDaGFyVD4gICAgICAgICAgIHRyYWl0c190eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdXRfZGV0YWlsOjpiY3NfY2hhcl90cmFpdHM8Q2hhclQ+OjpzdGRfc3RyaW5nICBzdGRfc3RyaW5nOwotCi0gICAgdHlwZWRlZiBDaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlIGNvbnN0KiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSBjb25zdCogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0KLSAgICAvLyAhISBzaG91bGQgYWxzbyBwcmVzZW50IHJldmVyc2VfaXRlcmF0b3IsIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotICAgIGVudW0gbnBvc190eXBlIHsgbnBvcyA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oLTEpIH07Ci0jZWxzZQotICAgIC8vIElCTS9WaXN1YWxBZ2UgdmVyc2lvbiA2IGlzIG5vdCBhYmxlIHRvIGhhbmRsZSBlbnVtcyBsYXJnZXIgdGhhbiA0IGJ5dGVzLgotICAgIC8vIEJ1dCBzaXplX3R5cGUgaXMgOCBieXRlcyBpbiA2NGJpdCBtb2RlLgotICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgbnBvcyA9IC0xIDsKLSNlbmRpZgotCi0gICAgc3RhdGljIHBvaW50ZXIgIG51bGxfc3RyKCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnM7IGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBpcyBnZW5lcmF0ZWQgYnkgY29tcGlsZXIKLSAgICBiYXNpY19jc3RyaW5nKCk7Ci0gICAgYmFzaWNfY3N0cmluZyggc3RkX3N0cmluZyBjb25zdCYgcyApOwotICAgIGJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgcyApOwotICAgIGJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgcywgc2l6ZV90eXBlIGFyZ19zaXplICk7Ci0gICAgYmFzaWNfY3N0cmluZyggcG9pbnRlciBmaXJzdCwgcG9pbnRlciBsYXN0ICk7Ci0KLSAgICAvLyBkYXRhIGFjY2VzcyBtZXRob2RzCi0gICAgdmFsdWVfdHlwZSAgICAgIG9wZXJhdG9yW10oIHNpemVfdHlwZSBpbmRleCApIGNvbnN0OwotICAgIHZhbHVlX3R5cGUgICAgICBhdCggc2l6ZV90eXBlIGluZGV4ICkgY29uc3Q7Ci0KLSAgICAvLyBzaXplIG9wZXJhdG9ycwotICAgIHNpemVfdHlwZSAgICAgICBzaXplKCkgY29uc3Q7Ci0gICAgYm9vbCAgICAgICAgICAgIGlzX2VtcHR5KCkgY29uc3Q7Ci0gICAgdm9pZCAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlc2l6ZSggc2l6ZV90eXBlIG5ld19sZW4gKTsKLQotICAgIC8vICEhIG9ubHkgZm9yIFNUTCBjb250YWluZXIgY29uZm9ybWFuY2UgdXNlIGlzX2VtcHR5IGluc3RlYWQKLSAgICBib29sICAgICAgICAgICAgZW1wdHkoKSBjb25zdDsgCi0KLSAgICAvLyBUcmltbWluZwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBzaXplX3R5cGUgdHJpbV9zaXplICk7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fbGVmdCggc2l6ZV90eXBlIHRyaW1fc2l6ZSApOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBpdGVyYXRvciBpdCApOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX2xlZnQoIGl0ZXJhdG9yIGl0ICk7Ci0jaWZuZGVmIF9fSUJNQ1BQX18KLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9sZWZ0KCBzZWxmX3R5cGUgZXhjbHVzaW9ucyA9IHNlbGZfdHlwZSgpICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBzZWxmX3R5cGUgZXhjbHVzaW9ucyA9IHNlbGZfdHlwZSgpICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltKCBzZWxmX3R5cGUgZXhjbHVzaW9ucyA9IHNlbGZfdHlwZSgpICkgOwotI2Vsc2UKLSAgICAvLyBWaXN1YWxBZ2UgdmVyc2lvbiA2IGhhcyBpbiB0aGlzIGNhc2UgYSBwcm9ibGVtIHdpdGggdGhlIGRlZmF1bHQgYXJndW1lbnRzLgotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX2xlZnQoIHNlbGZfdHlwZSBleGNsdXNpb25zICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBzZWxmX3R5cGUgZXhjbHVzaW9ucyApIDsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbSggc2VsZl90eXBlIGV4Y2x1c2lvbnMgKSA7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fbGVmdCgpIHsgdHJpbV9sZWZ0KCBzZWxmX3R5cGUoKSApIDsgfQotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCkgeyB0cmltX3JpZ2h0KCBzZWxmX3R5cGUoKSApIDsgfQotICAgIHNlbGZfdHlwZSYgICAgICB0cmltKCkgeyB0cmltKCBzZWxmX3R5cGUoKSApIDsgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9ycwotICAgIGJhc2ljX2NzdHJpbmcmICBvcGVyYXRvcj0oIHNlbGZfdHlwZSBjb25zdCYgcyApOwotICAgIGJhc2ljX2NzdHJpbmcmICBvcGVyYXRvcj0oIHN0ZF9zdHJpbmcgY29uc3QmIHMgKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgb3BlcmF0b3I9KCBwb2ludGVyIHMgKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMj4KLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBiYXNpY19jc3RyaW5nPENoYXJUMj4gY29uc3QmIHMgKSB7ICp0aGlzID0gYmFzaWNfY3N0cmluZzxDaGFyVD4oIHMuYmVnaW4oKSwgcy5lbmQoKSApOyByZXR1cm4gKnRoaXM7IH0KLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBzZWxmX3R5cGUgY29uc3QmIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBsZW4gKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBzdGRfc3RyaW5nIGNvbnN0JiBzICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggc3RkX3N0cmluZyBjb25zdCYgcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIGxlbiApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHBvaW50ZXIgcyApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHBvaW50ZXIgcywgc2l6ZV90eXBlIGxlbiApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHBvaW50ZXIgZiwgcG9pbnRlciBsICk7Ci0KLSAgICAvLyBzd2FwcGluZwotICAgIHZvaWQgICAgICAgICAgICBzd2FwKCBzZWxmX3R5cGUmIHMgKTsKLQotICAgIC8vIEl0ZXJhdG9ycwotICAgIGl0ZXJhdG9yICAgICAgICBiZWdpbigpOwotICAgIGNvbnN0X2l0ZXJhdG9yICBiZWdpbigpIGNvbnN0OwotICAgIGl0ZXJhdG9yICAgICAgICBlbmQoKTsKLSAgICBjb25zdF9pdGVyYXRvciAgZW5kKCkgY29uc3Q7Ci0KLSAgICAvLyAhISBzaG91bGQgaGF2ZSByYmVnaW4sIHJlbmQKLQotICAgIC8vIHN1YnN0cmluZyBzZWFyY2ggb3BlcmF0aW9uCi0gICAgc2l6ZV90eXBlICAgICAgIGZpbmQoIGJhc2ljX2NzdHJpbmcgKSBjb25zdDsKLSAgICBzaXplX3R5cGUgICAgICAgcmZpbmQoIGJhc2ljX2NzdHJpbmcgKSBjb25zdDsKLSAgICBzZWxmX3R5cGUgICAgICAgc3Vic3RyKCBzaXplX3R5cGUgYmVnX2luZGV4LCBzaXplX3R5cGUgZW5kX2luZGV4ID0gbnBvcyApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBzZWxmX3R5cGUgZGVmYXVsdF90cmltX2V4KCk7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpdGVyYXRvciAgICAgICAgbV9iZWdpbjsKLSAgICBpdGVyYXRvciAgICAgICAgbV9lbmQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6cG9pbnRlcgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om51bGxfc3RyKCkKLXsKLSAgICBzdGF0aWMgQ2hhclQgbnVsbCA9IDA7Ci0gICAgcmV0dXJuICZudWxsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoKQotOiBtX2JlZ2luKCBudWxsX3N0cigpICkKLSwgbV9lbmQoIG1fYmVnaW4gKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoIHN0ZF9zdHJpbmcgY29uc3QmIHMgKQotOiBtX2JlZ2luKCBzLmNfc3RyKCkgKQotLCBtX2VuZCggbV9iZWdpbiArIHMuc2l6ZSgpICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiYXNpY19jc3RyaW5nKCBwb2ludGVyIHMgKQotOiBtX2JlZ2luKCBzID8gcyA6IG51bGxfc3RyKCkgKQotLCBtX2VuZCAgKCBtX2JlZ2luICsgKHMgPyB0cmFpdHNfdHlwZTo6bGVuZ3RoKCBzICkgOiAwICkgKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgcywgc2l6ZV90eXBlIGFyZ19zaXplICkKLTogbV9iZWdpbiggcyApLCBtX2VuZCggbV9iZWdpbiArIGFyZ19zaXplICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiYXNpY19jc3RyaW5nKCBwb2ludGVyIGZpcnN0LCBwb2ludGVyIGxhc3QgKQotOiBtX2JlZ2luKCBmaXJzdCApCi0sIG1fZW5kKCBsYXN0ICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpvcGVyYXRvcltdKCBzaXplX3R5cGUgaW5kZXggKSBjb25zdAotewotICAgIHJldHVybiBtX2JlZ2luW2luZGV4XTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjphdCggc2l6ZV90eXBlIGluZGV4ICkgY29uc3QKLXsKLSAgICBpZiggbV9iZWdpbiArIGluZGV4ID49IG1fZW5kICkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KDApOwotCi0gICAgcmV0dXJuIG1fYmVnaW5baW5kZXhdOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c2l6ZV90eXBlCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZW5kIC0gbV9iZWdpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotYmFzaWNfY3N0cmluZzxDaGFyVD46OmlzX2VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbmQgPT0gbV9iZWdpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotYmFzaWNfY3N0cmluZzxDaGFyVD46OmVtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNfZW1wdHkoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdm9pZAotYmFzaWNfY3N0cmluZzxDaGFyVD46OmNsZWFyKCkKLXsKLSAgICBtX2JlZ2luID0gbV9lbmQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHZvaWQKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpyZXNpemUoIHNpemVfdHlwZSBuZXdfbGVuICkKLXsKLSAgICBpZiggbV9iZWdpbiArIG5ld19sZW4gPCBtX2VuZCApCi0gICAgICAgIG1fZW5kID0gbV9iZWdpbiArIG5ld19sZW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW1fbGVmdCggc2l6ZV90eXBlIHRyaW1fc2l6ZSApCi17Ci0gICAgbV9iZWdpbiArPSB0cmltX3NpemU7Ci0gICAgaWYoIG1fZW5kIDw9IG1fYmVnaW4gKQotICAgICAgICBjbGVhcigpOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX2xlZnQoIGl0ZXJhdG9yIGl0ICkKLXsKLSAgICBtX2JlZ2luID0gaXQ7Ci0gICAgaWYoIG1fZW5kIDw9IG1fYmVnaW4gKQotICAgICAgICBjbGVhcigpOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX2xlZnQoIGJhc2ljX2NzdHJpbmcgZXhjbHVzaW9ucyApCi17Ci0gICAgaWYoIGV4Y2x1c2lvbnMuaXNfZW1wdHkoKSApCi0gICAgICAgIGV4Y2x1c2lvbnMgPSBkZWZhdWx0X3RyaW1fZXgoKTsKLQotICAgIGl0ZXJhdG9yIGl0OwotICAgIGZvciggaXQgPSBiZWdpbigpOyBpdCAhPSBlbmQoKTsgKytpdCApIHsKLSAgICAgICAgaWYoIHRyYWl0c190eXBlOjpmaW5kKCBleGNsdXNpb25zLmJlZ2luKCksIGV4Y2x1c2lvbnMuc2l6ZSgpLCAqaXQgKSA9PSByZWludGVycHJldF9jYXN0PHBvaW50ZXI+KDApICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJpbV9sZWZ0KCBpdCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX3JpZ2h0KCBzaXplX3R5cGUgdHJpbV9zaXplICkKLXsKLSAgICBtX2VuZCAgLT0gdHJpbV9zaXplOwotICAgIGlmKCBtX2VuZCA8PSBtX2JlZ2luICkKLSAgICAgICAgY2xlYXIoKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbV9yaWdodCggaXRlcmF0b3IgaXQgKQotewotICAgIG1fZW5kID0gaXQ7Ci0gICAgaWYoIG1fZW5kIDw9IG1fYmVnaW4gKQotICAgICAgICBjbGVhcigpOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX3JpZ2h0KCBiYXNpY19jc3RyaW5nIGV4Y2x1c2lvbnMgKQotewotICAgIGlmKCBleGNsdXNpb25zLmlzX2VtcHR5KCkgKQotICAgICAgICBleGNsdXNpb25zID0gZGVmYXVsdF90cmltX2V4KCk7Ci0KLSAgICBpdGVyYXRvciBpdDsKLQotICAgIGZvciggaXQgPSBlbmQoKS0xOyBpdCAhPSBiZWdpbigpLTE7IC0taXQgKSB7Ci0gICAgICAgIGlmKCBzZWxmX3R5cGU6OnRyYWl0c190eXBlOjpmaW5kKCBleGNsdXNpb25zLmJlZ2luKCksICBleGNsdXNpb25zLnNpemUoKSwgKml0ICkgPT0gcmVpbnRlcnByZXRfY2FzdDxwb2ludGVyPigwKSApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRyaW1fcmlnaHQoIGl0KzEgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbSggYmFzaWNfY3N0cmluZyBleGNsdXNpb25zICkKLXsKLSAgICB0cmltX2xlZnQoIGV4Y2x1c2lvbnMgKTsKLSAgICB0cmltX3JpZ2h0KCBleGNsdXNpb25zICk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om9wZXJhdG9yPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMgKQotewotICAgIG1fYmVnaW4gPSBzLm1fYmVnaW47Ci0gICAgbV9lbmQgICA9IHMubV9lbmQ7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om9wZXJhdG9yPSggc3RkX3N0cmluZyBjb25zdCYgcyApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om9wZXJhdG9yPSggcG9pbnRlciBzICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIGxlbiApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzLm1fYmVnaW4gKyBwb3MsIGxlbiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHN0ZF9zdHJpbmcgY29uc3QmIHMgKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHN0ZF9zdHJpbmcgY29uc3QmIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBsZW4gKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcy5jX3N0cigpICsgcG9zLCBsZW4gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBwb2ludGVyIHMgKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHBvaW50ZXIgcywgc2l6ZV90eXBlIGxlbiApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzLCBsZW4gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBwb2ludGVyIGYsIHBvaW50ZXIgbCApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBmLCBsICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHZvaWQKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojpzd2FwKCBiYXNpY19jc3RyaW5nPENoYXJUPiYgcyApCi17Ci0gICAgLy8gZG8gbm90IHdhbnQgdG8gaW5jbHVkZSBhbG9ncml0aG0KLSAgICBwb2ludGVyIHRtcDEgICAgPSBtX2JlZ2luOwotICAgIHBvaW50ZXIgdG1wMiAgICA9IG1fZW5kOwotCi0gICAgbV9iZWdpbiAgICAgICAgID0gcy5tX2JlZ2luOwotICAgIG1fZW5kICAgICAgICAgICA9IHMubV9lbmQ7Ci0KLSAgICBzLm1fYmVnaW4gICAgICAgPSB0bXAxOwotICAgIHMubV9lbmQgICAgICAgICA9IHRtcDI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjppdGVyYXRvcgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJlZ2luKCkKLXsKLSAgICByZXR1cm4gbV9iZWdpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OmNvbnN0X2l0ZXJhdG9yCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBtX2JlZ2luOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6aXRlcmF0b3IKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjplbmQoKQotewotICAgIHJldHVybiBtX2VuZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OmNvbnN0X2l0ZXJhdG9yCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbmQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzaXplX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpmaW5kKCBiYXNpY19jc3RyaW5nPENoYXJUPiBzdHIgKSBjb25zdAotewotICAgIGlmKCBzdHIuaXNfZW1wdHkoKSB8fCBzdHIuc2l6ZSgpID4gc2l6ZSgpICkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4obnBvcyk7Ci0KLSAgICBjb25zdF9pdGVyYXRvciBpdCAgID0gYmVnaW4oKTsKLSAgICBjb25zdF9pdGVyYXRvciBsYXN0ID0gZW5kKCkgLSBzdHIuc2l6ZSgpICsgMTsKLQotICAgIHdoaWxlKCBpdCAhPSBsYXN0ICkgewotICAgICAgICBpZiggdHJhaXRzX3R5cGU6OmNvbXBhcmUoIGl0LCBzdHIuYmVnaW4oKSwgc3RyLnNpemUoKSApID09IDAgKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgKytpdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaXQgPT0gbGFzdCA/IHN0YXRpY19jYXN0PHNpemVfdHlwZT4obnBvcykgOiBpdCAtIGJlZ2luKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzaXplX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpyZmluZCggYmFzaWNfY3N0cmluZzxDaGFyVD4gc3RyICkgY29uc3QKLXsKLSAgICBpZiggc3RyLmlzX2VtcHR5KCkgfHwgc3RyLnNpemUoKSA+IHNpemUoKSApCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KG5wb3MpOwotCi0gICAgY29uc3RfaXRlcmF0b3IgaXQgICA9IGVuZCgpIC0gc3RyLnNpemUoKTsKLSAgICBjb25zdF9pdGVyYXRvciBsYXN0ID0gYmVnaW4oKS0xOwotCi0gICAgd2hpbGUoIGl0ICE9IGxhc3QgKSB7Ci0gICAgICAgIGlmKCB0cmFpdHNfdHlwZTo6Y29tcGFyZSggaXQsIHN0ci5iZWdpbigpLCBzdHIuc2l6ZSgpICkgPT0gMCApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAtLWl0OwotICAgIH0KLQotICAgIHJldHVybiBpdCA9PSBsYXN0ID8gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihucG9zKSA6IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oaXQgLSBiZWdpbigpKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4KLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzdWJzdHIoIHNpemVfdHlwZSBiZWdfaW5kZXgsIHNpemVfdHlwZSBlbmRfaW5kZXggKSBjb25zdAotewotICAgIHJldHVybiBiZWdfaW5kZXggPiBzaXplKCkKLSAgICAgICAgICAgID8gICAgICAgc2VsZl90eXBlKCkKLSAgICAgICAgICAgIDogZW5kX2luZGV4ID4gc2l6ZSgpCi0gICAgICAgICAgICAgICAgPyAgIHNlbGZfdHlwZSggbV9iZWdpbiArIGJlZ19pbmRleCwgbV9lbmQgKQotICAgICAgICAgICAgICAgIDogICBzZWxmX3R5cGUoIG1fYmVnaW4gKyBiZWdfaW5kZXgsIG1fYmVnaW4gKyBlbmRfaW5kZXggKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4KLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpkZWZhdWx0X3RyaW1fZXgoKQotewotICAgIHN0YXRpYyBDaGFyVCB3c1szXSA9IHsgQ2hhclQoJyAnKSwgQ2hhclQoJ1x0JyksIENoYXJUKCdcbicpIH07IC8vICEhIHdpZGUgY2FzZQotCi0gICAgcmV0dXJuIHNlbGZfdHlwZSggd3MsIDMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGNvbXBhcmlzb24gb3BlcmF0b3JzICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQxPiBjb25zdCYgczEsIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBjb25zdCYgczIgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVDE+Ojp0cmFpdHNfdHlwZSB0cmFpdHNfdHlwZTsKLSAgICByZXR1cm4gczEuc2l6ZSgpID09IHMyLnNpemUoKSAmJiAKLSAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjpjb21wYXJlKCBzMS5iZWdpbigpLCBzMi5iZWdpbigpLCBzMS5zaXplKCkgKSA9PSAwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQxPiBjb25zdCYgczEsIENoYXJUMiogczIgKQotewotI2lmICFkZWZpbmVkKF9fRE1DX18pCi0gICAgcmV0dXJuIHMxID09IGJhc2ljX2NzdHJpbmc8Q2hhclQyPiggczIgKTsKLSNlbHNlCi0gICAgcmV0dXJuIHMxID09IGJhc2ljX2NzdHJpbmc8Q2hhclQyIGNvbnN0PiggczIgKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEsIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzdGRfc3RyaW5nIGNvbnN0JiBzMiApCi17Ci0gICAgcmV0dXJuIHMxID09IGJhc2ljX2NzdHJpbmc8Q2hhclQ+KCBzMiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIENoYXJUMSogczIsIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiBzMSA9PSBzMjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnN0ZF9zdHJpbmcgY29uc3QmIHMyLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiBzMSA9PSBzMjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxLCBDaGFyVCogczIgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggQ2hhclQqIHMyLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczIgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxLCB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c3RkX3N0cmluZyBjb25zdCYgczIgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnN0ZF9zdHJpbmcgY29uc3QmIHMyLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgZmlyc3RfY2hhciAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZQotZmlyc3RfY2hhciggYmFzaWNfY3N0cmluZzxDaGFyVD4gc291cmNlICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlIHN0cmluZ192YWx1ZV90eXBlOwotCi0gICAgcmV0dXJuIHNvdXJjZS5pc19lbXB0eSgpID8gc3RhdGljX2Nhc3Q8c3RyaW5nX3ZhbHVlX3R5cGU+KDApIDogKnNvdXJjZS5iZWdpbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBsYXN0X2NoYXIgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlCi1sYXN0X2NoYXIoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHNvdXJjZSApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZSBzdHJpbmdfdmFsdWVfdHlwZTsKLQotICAgIHJldHVybiBzb3VyY2UuaXNfZW1wdHkoKSA/IHN0YXRpY19jYXN0PHN0cmluZ192YWx1ZV90eXBlPigwKSA6ICooc291cmNlLmVuZCgpLTEpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBhc3NpZ25fb3AgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSwgdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIHZvaWQKLWFzc2lnbl9vcCggc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQxPiYgdGFyZ2V0LCBiYXNpY19jc3RyaW5nPENoYXJUMj4gc3JjLCBpbnQgKQotewotICAgIHRhcmdldC5hc3NpZ24oIHNyYy5iZWdpbigpLCBzcmMuc2l6ZSgpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOWFkYjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZ19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBiYXNpY19jc3RyaW5nIGNsYXNzIHdyYXAgQyBzdHJpbmcgYW5kIHByb3ZpZGUgc3RkX3N0cmluZyBsaWtlIAotLy8gICAgICAgICAgICAgICAgaW50ZXJmYWNlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfRldEX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0ZXRF9IUFBfMDcxODk0R0VSCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4gY2xhc3MgICAgICBiYXNpY19jc3RyaW5nOwotdHlwZWRlZiBiYXNpY19jc3RyaW5nPGNoYXIgY29uc3Q+ICAgY29uc3Rfc3RyaW5nOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDEpKQotdHlwZWRlZiBjb25zdF9zdHJpbmcgICAgICAgICAgICAgICAgbGl0ZXJhbF9zdHJpbmc7Ci0jZWxzZQotdHlwZWRlZiBjb25zdF9zdHJpbmcgY29uc3QgICAgICAgICAgbGl0ZXJhbF9zdHJpbmc7Ci0jZW5kaWYKLQotdHlwZWRlZiBjaGFyIGNvbnN0KiBjb25zdCAgICAgICAgICAgY19saXRlcmFsX3N0cmluZzsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfRldEX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmNzX2NoYXJfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jjc19jaGFyX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YWZjYjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmNzX2NoYXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGdlbmVyaWMgY2hhciB0cmFpdHMgY2xhc3M7IHdyYXBzIHN0ZDo6Y2hhcl90cmFpdHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQkNTX0NIQVJfVFJBSVRTX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9CQ1NfQ0hBUl9UUkFJVFNfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RkOjpjaGFyX3RyYWl0cwotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+IHN0cnVjdCBiY3NfYmFzZV9jaGFyICAgICAgICAgICB7IHR5cGVkZWYgQ2hhclQgdHlwZTsgfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2Jhc2VfY2hhcjxjaGFyIGNvbnN0PiAgICAgICAgICAgICB7IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2Jhc2VfY2hhcjx1bnNpZ25lZCBjaGFyPiAgICAgICAgICB7IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19iYXNlX2NoYXI8dW5zaWduZWQgY2hhciBjb25zdD4gICAgeyB0eXBlZGVmIGNoYXIgdHlwZTsgfTsKLSNlbmRpZgotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfYmFzZV9jaGFyPHdjaGFyX3QgY29uc3Q+ICAgICAgICAgIHsgdHlwZWRlZiB3Y2hhcl90IHR5cGU7IH07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGJjc19jaGFyX3RyYWl0cyAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1zdHJ1Y3QgYmNzX2NoYXJfdHJhaXRzX2ltcGwKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSAgICB0eXBlZGVmIENoYXJUIGNvbnN0IGNvbnN0X2NoYXI7Ci0jZWxzZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9jb25zdDxDaGFyVD46OnR5cGUgY29uc3RfY2hhcjsKLSNlbmRpZgotICAgIHN0YXRpYyBib29sIGVxKCBDaGFyVCBjMSwgQ2hhclQgYzIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGMxID09IGMyOwotICAgIH0KLSAgICBzdGF0aWMgYm9vbCBsdCggQ2hhclQgYzEsIENoYXJUIGMyICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjMSA8IGMyOwotICAgIH0KLQotICAgIHN0YXRpYyBpbnQgY29tcGFyZSggY29uc3RfY2hhciogY3N0cjEsIGNvbnN0X2NoYXIqIGNzdHIyLCBzdGQ6OnNpemVfdCBuICkKLSAgICB7Ci0gICAgICAgIHdoaWxlKCBuID4gMCApIHsKLSAgICAgICAgICAgIGlmKCAhZXEoICpjc3RyMSwgKmNzdHIyICkgKQotICAgICAgICAgICAgICAgIHJldHVybiBsdCggKmNzdHIxLCAqY3N0cjIgKSA/IC0xIDogMTsKLSAgICAgICAgICAgICsrY3N0cjE7Ci0gICAgICAgICAgICArK2NzdHIyOwotICAgICAgICAgICAgLS1uOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc3RhdGljIHN0ZDo6c2l6ZV90IGxlbmd0aCggY29uc3RfY2hhciogY3N0ciApCi0gICAgewotICAgICAgICBjb25zdF9jaGFyIG51bGxfY2hhciA9IENoYXJUKCk7Ci0KLSAgICAgICAgY29uc3RfY2hhciogcHRyID0gY3N0cjsKLSAgICAgICAgd2hpbGUoICFlcSggKnB0ciwgbnVsbF9jaGFyICkgKQotICAgICAgICAgICAgKytwdHI7Ci0KLSAgICAgICAgcmV0dXJuIHB0ciAtIGNzdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0X2NoYXIqIGZpbmQoIGNvbnN0X2NoYXIqIHMsIHN0ZDo6c2l6ZV90IG4sIENoYXJUIGMgKQotICAgIHsKLSAgICAgICAgd2hpbGUoIG4gPiAwICkgewotICAgICAgICAgICAgaWYoIGVxKCAqcywgYyApICkKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLQotICAgICAgICAgICAgKytzOwotICAgICAgICAgICAgLS1uOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1zdHJ1Y3QgY2hhcl90cmFpdHNfd2l0aF9maW5kIDogc3RkOjpzdHJpbmdfY2hhcl90cmFpdHM8Q2hhclQ+IHsKLSAgICBzdGF0aWMgQ2hhclQgY29uc3QqIGZpbmQoIENoYXJUIGNvbnN0KiBzLCBzdGQ6OnNpemVfdCBuLCBDaGFyVCBjICkKLSAgICB7Ci0gICAgICAgIHdoaWxlKCBuID4gMCApIHsKLSAgICAgICAgICAgIGlmKCBlcSggKnMsIGMgKSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0KLSAgICAgICAgICAgICsrczsKLSAgICAgICAgICAgIC0tbjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfY2hhcl90cmFpdHNfaW1wbDxjaGFyPiA6IGNoYXJfdHJhaXRzX3dpdGhfZmluZDxjaGFyPiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsPHdjaGFyX3Q+IDogY2hhcl90cmFpdHNfd2l0aF9maW5kPHdjaGFyX3Q+IHt9OwotI2Vsc2UKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsPGNoYXI+IDogc3RkOjpjaGFyX3RyYWl0czxjaGFyPiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsPHdjaGFyX3Q+IDogc3RkOjpjaGFyX3RyYWl0czx3Y2hhcl90PiB7fTsKLSNlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWNsYXNzIGJjc19jaGFyX3RyYWl0cyA6IHB1YmxpYyBiY3NfY2hhcl90cmFpdHNfaW1wbDxDaGFyVD4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdXRfZGV0YWlsOjpiY3NfYmFzZV9jaGFyPENoYXJUPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZV9iYXNlX2NoYXI7Ci1wdWJsaWM6Ci0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPHRoZV9iYXNlX2NoYXIsIHN0ZDo6c3RyaW5nX2NoYXJfdHJhaXRzPHRoZV9iYXNlX2NoYXI+ID4gICBzdGRfc3RyaW5nOwotI2Vsc2UKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPHRoZV9iYXNlX2NoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8dGhlX2Jhc2VfY2hhcj4gPiAgICAgICAgICBzdGRfc3RyaW5nOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9CQ1NfQ0hBUl9UUkFJVFNfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg4MGM4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNsYXNzIGJhc2ljX2NzdHJpbmcgY29tcGFyaXNvbnMgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmICBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfQ09NUEFSRV9IUFBfMDcxODk0R0VSCi0jZGVmaW5lICBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfQ09NUEFSRV9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8Y2N0eXBlPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NzApCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjp0b3VwcGVyOyB9Ci0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgY2FzZV9pbnNfY29tcGFyZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyVD4KLXN0cnVjdCBjYXNlX2lucwotewotICAgIHN0YXRpYyBib29sICAgICAgICAgZXEoIENoYXJUIGMxLCBDaGFyVCBjMiApIHsgcmV0dXJuIChzdGQ6OnRvdXBwZXIpKCBjMSApID09IChzdGQ6OnRvdXBwZXIpKCBjMiApOyB9Ci0gICAgc3RhdGljIGJvb2wgICAgICAgICBsdCggQ2hhclQgYzEsIENoYXJUIGMyICkgeyByZXR1cm4gKHN0ZDo6dG91cHBlcikoIGMxICkgPCAgKHN0ZDo6dG91cHBlcikoIGMyICk7IH0KLQotICAgIHN0YXRpYyBpbnQgICAgICAgICAgY29tcGFyZSggQ2hhclQgY29uc3QqIHMxLCBDaGFyVCBjb25zdCogczIsIHN0ZDo6c2l6ZV90IG4gKQotICAgIHsKLSAgICAgICAgZm9yKCBzdGQ6OnNpemVfdCBpID0gMDsgaSA8IG47ICsraSApIHsKLSAgICAgICAgICAgIGlmKCAhZXEoIHMxW2ldLCBzMltpXSApICkKLSAgICAgICAgICAgICAgICByZXR1cm4gbHQoIHMxW2ldLCBzMltpXSApID8gLTEgOiAxOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBjYXNlX2luc19lcSAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIENoYXJUPgotaW5saW5lIGJvb2wKLWNhc2VfaW5zX2VxKCBiYXNpY19jc3RyaW5nPENoYXJUPiB4LCBiYXNpY19jc3RyaW5nPENoYXJUPiB5ICkKLXsKLSAgICByZXR1cm4geC5zaXplKCkgPT0geS5zaXplKCkgJiYgdXRfZGV0YWlsOjpjYXNlX2luczxDaGFyVD46OmNvbXBhcmUoIHguYmVnaW4oKSwgeS5iZWdpbigpLCB4LnNpemUoKSApID09IDA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgY2FzZV9pbnNfbGVzcyAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgQ2hhclQ+Ci1jbGFzcyBjYXNlX2luc19sZXNzIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPGJhc2ljX2NzdHJpbmc8Q2hhclQ+LGJhc2ljX2NzdHJpbmc8Q2hhclQ+LGJvb2w+Ci17Ci1wdWJsaWM6Ci0gICAgYm9vbCBvcGVyYXRvcigpKCBiYXNpY19jc3RyaW5nPENoYXJUPiB4LCBiYXNpY19jc3RyaW5nPENoYXJUPiB5ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB4LnNpemUoKSAhPSB5LnNpemUoKSAKLSAgICAgICAgICAgICAgICA/IHguc2l6ZSgpIDwgeS5zaXplKCkgCi0gICAgICAgICAgICAgICAgOiB1dF9kZXRhaWw6OmNhc2VfaW5zPENoYXJUPjo6Y29tcGFyZSggeC5iZWdpbigpLCB5LmJlZ2luKCksIHguc2l6ZSgpICkgPCAwOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yIDwgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IgPCggbmRuYm9vc3Q6OnVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHgsCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgeSApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPENoYXJUPjo6dHJhaXRzX3R5cGUgdHJhaXRzX3R5cGU7Ci0gICAgcmV0dXJuIHguc2l6ZSgpICE9IHkuc2l6ZSgpIAotICAgICAgICAgICAgPyB4LnNpemUoKSA8IHkuc2l6ZSgpIAotICAgICAgICAgICAgOiB0cmFpdHNfdHlwZTo6Y29tcGFyZSggeC5iZWdpbigpLCB5LmJlZ2luKCksIHguc2l6ZSgpICkgPCAwOwotfQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfQ09NUEFSRV9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZDc3MGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBiYXNpY19jc3RyaW5nIGkvbyBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19JT19IUFBfMDcxODk0R0VSCi0jZGVmaW5lICBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSU9fSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotI2lmZGVmIE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHN0ZDo6b3N0cmVhbSYKLW9wZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSYgb3MsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzdHIgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdXRfZGV0YWlsOjpiY3NfYmFzZV9jaGFyPENoYXJUPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgY2hhcl90eXBlIGNvbnN0KiBjb25zdCBiZWcgPSByZWludGVycHJldF9jYXN0PGNoYXJfdHlwZSBjb25zdCogY29uc3Q+KCBzdHIuYmVnaW4oKSApOwotICAgIGNoYXJfdHlwZSBjb25zdCogY29uc3QgZW5kID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyX3R5cGUgY29uc3QqIGNvbnN0Piggc3RyLmVuZCgpICk7Ci0gICAgb3MgPDwgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiggYmVnLCBlbmQgLSBiZWcgKTsKLQotICAgIHJldHVybiBvczsKLX0KLQotI2Vsc2UKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQxLCB0eXBlbmFtZSBUcix0eXBlbmFtZSBDaGFyVDI+Ci1pbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJUMSxUcj4mCi1vcGVyYXRvcjw8KCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQxLFRyPiYgb3MsIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBjb25zdCYgc3RyICkKLXsKLSAgICBDaGFyVDEgY29uc3QqIGNvbnN0IGJlZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2hhclQxIGNvbnN0Kj4oIHN0ci5iZWdpbigpICk7IC8vICEhCi0gICAgQ2hhclQxIGNvbnN0KiBjb25zdCBlbmQgPSByZWludGVycHJldF9jYXN0PENoYXJUMSBjb25zdCo+KCBzdHIuZW5kKCkgKTsKLSAgICBvcyA8PCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVDEsVHI+KCBiZWcsIGVuZCAtIGJlZyApOwotCi0gICAgcmV0dXJuIG9zOwotfQotCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSU9fSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZDc4NmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ0FMTEJBQ0tfMDIwNTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FMTEJBQ0tfMDIwNTA1R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTCwgPD0gNzAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0NBTExCQUNLX0VYUExJQ0lUX0NPUFlfQ09OU1RSVUNUT1IKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXN0cnVjdCB1bnVzZWQge307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaW52b2tlciB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBSICAgICAgIGludm9rZSggRnVuY3RvciYgZiApICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gZigpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDE+Ci0gICAgUiAgICAgICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxICkgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGYoIHQxICk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgUiAgICAgICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxLCBUMiB0MiApICAgICAgICAgIHsgcmV0dXJuIGYoIHQxLCB0MiApOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBSICAgICAgIGludm9rZSggRnVuY3RvciYgZiwgVDEgdDEsIFQyIHQyLCBUMyB0MyApICAgeyByZXR1cm4gZiggdDEsIHQyLCB0MyApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW52b2tlcjx1bnVzZWQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHVudXNlZCAgaW52b2tlKCBGdW5jdG9yJiBmICkgICAgICAgICAgICAgICAgICAgICAgICB7IGYoKTsgcmV0dXJuIHVudXNlZCgpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDE+Ci0gICAgdW51c2VkICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxICkgICAgICAgICAgICAgICAgIHsgZiggdDEgKTsgcmV0dXJuIHVudXNlZCgpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIHVudXNlZCAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSwgVDIgdDIgKSAgICAgICAgICB7IGYoIHQxLCB0MiApOyByZXR1cm4gdW51c2VkKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIHVudXNlZCAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSwgVDIgdDIsIFQzIHQzICkgICB7IGYoIHQxLCB0MiwgdDMgKTsgcmV0dXJuIHVudXNlZCgpOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2swICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXN0cnVjdCBjYWxsYmFjazBfaW1wbCB7Ci0gICAgdmlydHVhbCB+Y2FsbGJhY2swX2ltcGwoKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSgpID0gMDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdHJ1Y3QgY2FsbGJhY2swX2ltcGxfdCA6IGNhbGxiYWNrMF9pbXBsPFI+IHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0IGNhbGxiYWNrMF9pbXBsX3QoIEZ1bmN0b3IgZiApIDogbV9mKCBmICkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoKSB7IHJldHVybiBpbnZva2VyPFI+KCkuaW52b2tlKCBtX2YgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZ1bmN0b3IgbV9mOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIgPSB1dF9kZXRhaWw6OnVudXNlZD4KLWNsYXNzIGNhbGxiYWNrMCB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgY2FsbGJhY2swKCkge30KLSNpZmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0gICAgY2FsbGJhY2swKCBjYWxsYmFjazAgY29uc3QmIHJocyApIDogbV9pbXBsKCByaHMubV9pbXBsICkge30KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBjYWxsYmFjazAoIEZ1bmN0b3IgZiApCi0gICAgOiBtX2ltcGwoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMF9pbXBsX3Q8UixGdW5jdG9yPiggZiApICkge30KLSAgICAKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIGNhbGxiYWNrMCBjb25zdCYgcmhzICkgeyBtX2ltcGwgPSByaHMubV9pbXBsOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggRnVuY3RvciBmICkgeyBtX2ltcGwucmVzZXQoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMF9pbXBsX3Q8UixGdW5jdG9yPiggZiApICk7ICB9Ci0KLSAgICBSICAgICAgICAgICBvcGVyYXRvcigpKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pbnZva2UoKTsgfQotCi0gICAgYm9vbCAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHV0X2RldGFpbDo6Y2FsbGJhY2swX2ltcGw8Uj4gPiBtX2ltcGw7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgdW5pdF90ZXN0OjpjYWxsYmFjazEgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMT4KLXN0cnVjdCBjYWxsYmFjazFfaW1wbCB7Ci0gICAgdmlydHVhbCB+Y2FsbGJhY2sxX2ltcGwoKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEgKSA9IDA7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSx0eXBlbmFtZSBGdW5jdG9yPgotc3RydWN0IGNhbGxiYWNrMV9pbXBsX3QgOiBjYWxsYmFjazFfaW1wbDxSLFQxPiB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBjYWxsYmFjazFfaW1wbF90KCBGdW5jdG9yIGYgKSA6IG1fZiggZiApIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSApIHsgcmV0dXJuIGludm9rZXI8Uj4oKS5pbnZva2UoIG1fZiwgdDEgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZ1bmN0b3IgbV9mOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQxLHR5cGVuYW1lIFIgPSB1dF9kZXRhaWw6OnVudXNlZD4KLWNsYXNzIGNhbGxiYWNrMSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgY2FsbGJhY2sxKCkge30KLSNpZmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0gICAgY2FsbGJhY2sxKCBjYWxsYmFjazEgY29uc3QmIHJocyApIDogbV9pbXBsKCByaHMubV9pbXBsICkge30KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBjYWxsYmFjazEoIEZ1bmN0b3IgZiApCi0gICAgOiBtX2ltcGwoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMV9pbXBsX3Q8UixUMSxGdW5jdG9yPiggZiApICkge30KLQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggY2FsbGJhY2sxIGNvbnN0JiByaHMgKSB7IG1faW1wbCA9IHJocy5tX2ltcGw7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBGdW5jdG9yIGYgKSB7IG1faW1wbC5yZXNldCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2sxX2ltcGxfdDxSLFQxLEZ1bmN0b3I+KCBmICkgKTsgIH0KLQotICAgIFIgICAgICAgICAgIG9wZXJhdG9yKCkoIFQxIHQxICkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pbnZva2UoIHQxICk7IH0KLQotICAgIGJvb2wgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjx1dF9kZXRhaWw6OmNhbGxiYWNrMV9pbXBsPFIsVDE+ID4gbV9pbXBsOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2syICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgY2FsbGJhY2syX2ltcGwgewotICAgIHZpcnR1YWwgfmNhbGxiYWNrMl9pbXBsKCkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxLCBUMiB0MiApID0gMDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgRnVuY3Rvcj4KLXN0cnVjdCBjYWxsYmFjazJfaW1wbF90IDogY2FsbGJhY2syX2ltcGw8UixUMSxUMj4gewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgY2FsbGJhY2syX2ltcGxfdCggRnVuY3RvciBmICkgOiBtX2YoIGYgKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEsIFQyIHQyICkgeyByZXR1cm4gaW52b2tlcjxSPigpLnRlbXBsYXRlIGludm9rZTxGdW5jdG9yLFQxLFQyPiggbV9mLCB0MSwgdDIgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZ1bmN0b3IgbV9mOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQxLHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBSID0gdXRfZGV0YWlsOjp1bnVzZWQ+Ci1jbGFzcyBjYWxsYmFjazIgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGNhbGxiYWNrMigpIHt9Ci0jaWZkZWYgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotICAgIGNhbGxiYWNrMiggY2FsbGJhY2syIGNvbnN0JiByaHMgKSA6IG1faW1wbCggcmhzLm1faW1wbCApIHt9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2syKCBGdW5jdG9yIGYgKSA6IG1faW1wbCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2syX2ltcGxfdDxSLFQxLFQyLEZ1bmN0b3I+KCBmICkgKSB7fQotCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBjYWxsYmFjazIgY29uc3QmIHJocyApIHsgbV9pbXBsID0gcmhzLm1faW1wbDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIEZ1bmN0b3IgZiApIHsgbV9pbXBsLnJlc2V0KCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazJfaW1wbF90PFIsVDEsVDIsRnVuY3Rvcj4oIGYgKSApOyAgfQotCi0gICAgUiAgICAgICAgICAgb3BlcmF0b3IoKSggVDEgdDEsIFQyIHQyICkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pbnZva2UoIHQxLCB0MiApOyB9Ci0KLSAgICBib29sICAgICAgICBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8dXRfZGV0YWlsOjpjYWxsYmFjazJfaW1wbDxSLFQxLFQyPiA+IG1faW1wbDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMyAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1zdHJ1Y3QgY2FsbGJhY2szX2ltcGwgewotICAgIHZpcnR1YWwgfmNhbGxiYWNrM19pbXBsKCkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxLCBUMiB0MiwgVDMgdDMgKSA9IDA7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBGdW5jdG9yPgotc3RydWN0IGNhbGxiYWNrM19pbXBsX3QgOiBjYWxsYmFjazNfaW1wbDxSLFQxLFQyLFQzPiB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBjYWxsYmFjazNfaW1wbF90KCBGdW5jdG9yIGYgKSA6IG1fZiggZiApIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSwgVDIgdDIsIFQzIHQzICkgeyByZXR1cm4gaW52b2tlcjxSPigpLmludm9rZSggbV9mLCB0MSwgdDIsIHQzICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBGdW5jdG9yIG1fZjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSx0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFIgPSB1dF9kZXRhaWw6OnVudXNlZD4KLWNsYXNzIGNhbGxiYWNrMyB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgY2FsbGJhY2szKCkge30KLSNpZmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0gICAgY2FsbGJhY2szKCBjYWxsYmFjazMgY29uc3QmIHJocyApIDogbV9pbXBsKCByaHMubV9pbXBsICkge30KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBjYWxsYmFjazMoIEZ1bmN0b3IgZiApCi0gICAgOiBtX2ltcGwoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrM19pbXBsX3Q8UixUMSxUMixUMyxGdW5jdG9yPiggZiApICkge30KLQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggY2FsbGJhY2szIGNvbnN0JiByaHMgKSB7IG1faW1wbCA9IHJocy5tX2ltcGw7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBGdW5jdG9yIGYgKSB7IG1faW1wbC5yZXNldCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2szX2ltcGxfdDxSLFQxLFQyLFQzLEZ1bmN0b3I+KCBmICkgKTsgIH0KLQotICAgIFIgICAgICAgICAgIG9wZXJhdG9yKCkoIFQxIHQxLCBUMiB0MiwgVDMgdDMgKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmludm9rZSggdDEsIHQyLCB0MyApOyB9Ci0KLSAgICBib29sICAgICAgICBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8dXRfZGV0YWlsOjpjYWxsYmFjazNfaW1wbDxSLFQxLFQyLFQzPiA+IG1faW1wbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jdW5kZWYgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ0FMTEJBQ0tfMDIwNTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZWE5OTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIGZhY2lsaXR5IHRoYXQgbWltbWljIG5vdGlvbiBvZiByZWFkLW9ubHkgcmVhZC13cml0ZSAKLS8vICBwcm9wZXJ0aWVzIGluIEMrKyBjbGFzc2VzLiBPcmlnaW5hbCBpZGVhIGJ5IEhlbnJpayBSYXZuLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DTEFTU19QUk9QRVJUSUVTX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DTEFTU19QUk9QRVJUSUVTX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGNsYXNzX3Byb3BlcnR5ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4KLWNsYXNzIGNsYXNzX3Byb3BlcnR5IHsKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzPFByb3BlcnR5VHlwZT46OmNvbnN0X3JlZmVyZW5jZSAgICAgcmVhZF9hY2Nlc3NfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzPFByb3BlcnR5VHlwZT46OnBhcmFtX3R5cGUgICAgICAgICAgd3JpdGVfcGFyYW1fdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9wb2ludGVyPHR5cGVuYW1lIGFkZF9jb25zdDxQcm9wZXJ0eVR5cGU+Ojp0eXBlPjo6dHlwZSBhZGRyZXNzX3Jlc190OwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgICAgIGNsYXNzX3Byb3BlcnR5KCkgOiB2YWx1ZSggUHJvcGVydHlUeXBlKCkgKSB7fQotICAgIGV4cGxpY2l0ICAgICAgICBjbGFzc19wcm9wZXJ0eSggd3JpdGVfcGFyYW1fdCBpbml0X3ZhbHVlICkKLSAgICA6IHZhbHVlKCBpbml0X3ZhbHVlICkge30KLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgb3BlcmF0b3IgICAgICAgIHJlYWRfYWNjZXNzX3QoKSBjb25zdCAgIHsgcmV0dXJuIHZhbHVlOyB9Ci0gICAgcmVhZF9hY2Nlc3NfdCAgIGdldCgpIGNvbnN0ICAgICAgICAgICAgIHsgcmV0dXJuIHZhbHVlOyB9Ci0gICAgYm9vbCAgICAgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0ICAgICAgIHsgcmV0dXJuICF2YWx1ZTsgfQotICAgIGFkZHJlc3NfcmVzX3QgICBvcGVyYXRvciYoKSBjb25zdCAgICAgICB7IHJldHVybiAmdmFsdWU7IH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotI2lmbmRlZiBORE5CT09TVF9URVNUX05PX1BST1RFQ1RFRF9VU0lORwotcHJvdGVjdGVkOgotI2VuZGlmCi0gICAgUHJvcGVydHlUeXBlICAgICAgICB2YWx1ZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtJgotb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvcywgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcCApCi0KLSNlbHNlCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSwgdHlwZW5hbWUgVHIsY2xhc3MgUHJvcGVydHlUeXBlPgotaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVDEsVHI+Jgotb3BlcmF0b3I8PCggc3RkOjpiYXNpY19vc3RyZWFtPENoYXJUMSxUcj4mIG9zLCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBwICkKLQotI2VuZGlmCi17Ci0gICAgcmV0dXJuIG9zIDw8IHAuZ2V0KCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgREVGSU5FX1BST1BFUlRZX0ZSRUVfQklOQVJZX09QRVJBVE9SKCBvcCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBQcm9wZXJ0eVR5cGUgY29uc3QmIGxocywgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcmhzICkgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGxocyBvcCByaHMuZ2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBsaHMsIFByb3BlcnR5VHlwZSBjb25zdCYgcmhzICkgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGxocy5nZXQoKSBvcCByaHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBsaHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIHJocyApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gbGhzLmdldCgpIG9wIHJocy5nZXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLURFRklORV9QUk9QRVJUWV9GUkVFX0JJTkFSWV9PUEVSQVRPUiggPT0gKQotREVGSU5FX1BST1BFUlRZX0ZSRUVfQklOQVJZX09QRVJBVE9SKCAhPSApCi0KLSN1bmRlZiBERUZJTkVfUFJPUEVSVFlfRlJFRV9CSU5BUllfT1BFUkFUT1IKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotCi0jZGVmaW5lIERFRklORV9QUk9QRVJUWV9MT0dJQ0FMX09QRVJBVE9SKCBvcCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggYm9vbCBiLCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBwICkgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBiIG9wIHAuZ2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcCwgYm9vbCBiICkgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBiIG9wIHAuZ2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotREVGSU5FX1BST1BFUlRZX0xPR0lDQUxfT1BFUkFUT1IoICYmICkKLURFRklORV9QUk9QRVJUWV9MT0dJQ0FMX09QRVJBVE9SKCB8fCApCi0KLSNlbmRpZgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICByZWFkb25seV9wcm9wZXJ0eSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4KLWNsYXNzIHJlYWRvbmx5X3Byb3BlcnR5IDogcHVibGljIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gewotICAgIHR5cGVkZWYgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiAgICAgICAgIGJhc2VfcHJvcDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfcHJvcDo6YWRkcmVzc19yZXNfdCAgICBhcnJvd19yZXNfdDsKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfcHJvcDo6d3JpdGVfcGFyYW1fdCAgICB3cml0ZV9wYXJhbV90OwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5X3Byb3BlcnR5KCkge30KLSAgICBleHBsaWNpdCAgICAgICAgcmVhZG9ubHlfcHJvcGVydHkoIHdyaXRlX3BhcmFtX3QgaW5pdF92YWx1ZSApIDogYmFzZV9wcm9wKCBpbml0X3ZhbHVlICkge30KLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgYXJyb3dfcmVzX3QgICAgIG9wZXJhdG9yLT4oKSBjb25zdCAgICAgIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YoIGJhc2VfcHJvcDo6dmFsdWUgKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIHByb3BlcnR5X3R5cGUsIGZyaWVuZHMgKSBuZG5ib29zdDo6dW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8cHJvcGVydHlfdHlwZSA+Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFlfREVDTEFSRV9GUklFTkQociwgZGF0YSwgZWxlbSkgZnJpZW5kIGNsYXNzIGVsZW07Ci0KLSNkZWZpbmUgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIHByb3BlcnR5X3R5cGUsIGZyaWVuZHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWNsYXNzIE5ETkJPT1NUX0pPSU4oIHJlYWRvbmx5X3Byb3BlcnR5LCBfX0xJTkVfXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLTogcHVibGljIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PHByb3BlcnR5X3R5cGUgPiB7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PHByb3BlcnR5X3R5cGUgPiBiYXNlX3Byb3A7ICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0goIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZX0RFQ0xBUkVfRlJJRU5ELCAnICcsIGZyaWVuZHMgKSAgIFwKLSAgICB0eXBlZGVmIGJhc2VfcHJvcDo6d3JpdGVfcGFyYW1fdCAgd3JpdGVfcGFyYW1fdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9KT0lOKCByZWFkb25seV9wcm9wZXJ0eSwgX19MSU5FX18gKSgpIHt9ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCAgICBORE5CT09TVF9KT0lOKCByZWFkb25seV9wcm9wZXJ0eSwgX19MSU5FX18gKSggd3JpdGVfcGFyYW1fdCBpbml0X3YgICkgIFwKLSAgICA6IGJhc2VfcHJvcCggaW5pdF92ICkge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2VuZGlmCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcmVhZHdyaXRlX3Byb3BlcnR5ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPgotY2xhc3MgcmVhZHdyaXRlX3Byb3BlcnR5IDogcHVibGljIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gewotICAgIHR5cGVkZWYgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICBiYXNlX3Byb3A7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcG9pbnRlcjxQcm9wZXJ0eVR5cGU+Ojp0eXBlICAgIGFycm93X3Jlc190OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9wcm9wOjphZGRyZXNzX3Jlc190ICAgICAgICAgICBjb25zdF9hcnJvd19yZXNfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfcHJvcDo6d3JpdGVfcGFyYW1fdCAgICAgICAgICAgd3JpdGVfcGFyYW1fdDsKLXB1YmxpYzoKLSAgICAgICAgICAgICAgICAgICAgcmVhZHdyaXRlX3Byb3BlcnR5KCkgOiBiYXNlX3Byb3AoKSB7fQotICAgIGV4cGxpY2l0ICAgICAgICByZWFkd3JpdGVfcHJvcGVydHkoIHdyaXRlX3BhcmFtX3QgaW5pdF92YWx1ZSApIDogYmFzZV9wcm9wKCBpbml0X3ZhbHVlICkge30KLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgdm9pZCAgICAgICAgICAgIHNldCggd3JpdGVfcGFyYW1fdCB2ICkgIHsgYmFzZV9wcm9wOjp2YWx1ZSA9IHY7IH0KLSAgICBhcnJvd19yZXNfdCAgICAgb3BlcmF0b3ItPigpICAgICAgICAgICAgeyByZXR1cm4gbmRuYm9vc3Q6OmFkZHJlc3NvZiggYmFzZV9wcm9wOjp2YWx1ZSApOyB9Ci0gICAgY29uc3RfYXJyb3dfcmVzX3Qgb3BlcmF0b3ItPigpIGNvbnN0ICAgIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YoIGJhc2VfcHJvcDo6dmFsdWUgKTsgfQotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTk9fUFJPVEVDVEVEX1VTSU5HCi0gICAgdXNpbmcgICAgICAgICAgIGJhc2VfcHJvcDo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVEVTVF9OT19QUk9URUNURURfVVNJTkcKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ0xBU1NfUFJPUEVSVElFU19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY3VzdG9tX21hbmlwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jdXN0b21fbWFuaXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVkZGM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jdXN0b21fbWFuaXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgaGVscGVycyBmb3IgY3JlYXRpbmcgY3Vzb20gb3V0cHV0IG1hbmlwdWxhdG9ycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DVVNUT01fTUFOSVBfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NVU1RPTV9NQU5JUF9IUFBfMDcxODk0R0VSCi0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBjdXN0b20gbWFuaXB1bGF0b3JzIGhlbHBlcnMgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTWFuaXA+Ci1zdHJ1Y3QgY3VzdG9tX3ByaW50ZXIgewotICAgIGV4cGxpY2l0IGN1c3RvbV9wcmludGVyKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA6IG1fb3N0ciggJm9zdHIgKSB7fQotCi0gICAgc3RkOjpvc3RyZWFtJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqbV9vc3RyOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjpvc3RyZWFtKiBjb25zdCBtX29zdHI7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbmlxPiBzdHJ1Y3QgY3VzdG9tX21hbmlwIHt9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbmlxPgotaW5saW5lIGN1c3RvbV9wcmludGVyPGN1c3RvbV9tYW5pcDxVbmlxPiA+Ci1vcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGN1c3RvbV9tYW5pcDxVbmlxPiBjb25zdCYgKSB7IHJldHVybiBjdXN0b21fcHJpbnRlcjxjdXN0b21fbWFuaXA8VW5pcT4gPiggb3N0ciApOyB9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ1VTVE9NX01BTklQX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9maXhlZF9tYXBwaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9maXhlZF9tYXBwaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZhYjMwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZml4ZWRfbWFwcGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBmaXhlZCBzaXplZCBtYXBwaW5nIHdpdGggc3BlY2lmaWVkIGludmFsaWQgdmFsdWUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRklYRURfTUFQUElOR19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRklYRURfTUFQUElOR19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvYmluYXJ5X3NlYXJjaC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gY29uZmlndXJhYmxlIG1heGltdW0gZml4ZWQgc2l6ZWQgbWFwcGluZyBzaXplIHN1cHBvcnRlZCBieSB0aGlzIGhlYWRlci4KLS8vIFlvdSBjYW4gcmVkZWZpbmUgaXQgYmVmb3JlIGluY2x1c2lvbiBvZiB0aGlzIGZpbGUuCi0jaWZuZGVmIE1BWF9NQVBfU0laRQotI2RlZmluZSBNQVhfTUFQX1NJWkUgMjAKLSNlbmRpZgotCi0jZGVmaW5lIENPTlNUUl9ERUNMX01JRCggeiwgaSwgZHVtbXkxICkga2V5X3BhcmFtX3R5cGUga2V5IyNpLCB2YWx1ZV9wYXJhbV90eXBlIHYjI2ksCi0jZGVmaW5lIENPTlNUUl9CT0RZX01JRCggeiwgaSwgZHVtbXkxICkgYWRkX3BhaXIoIGtleSMjaSwgdiMjaSApOwotCi0jZGVmaW5lIENPTlNUUl9ERUNMKCB6LCBuLCBkdW1teTEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmaXhlZF9tYXBwaW5nKCBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIG4sIENPTlNUUl9ERUNMX01JRCwgIiIgKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3BhcmFtX3R5cGUgaW52YWxpZF92YWx1ZSApICAgICAgICAgICBcCi0gICAgOiBtX2ludmFsaWRfdmFsdWUoIGludmFsaWRfdmFsdWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIG4sIENPTlNUUl9CT0RZX01JRCwgIiIgKSAgICAgICAgICAgICBcCi0gICAgICAgIGluaXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIENPTlRSVUNUT1JTKCBuICkgTkROQk9PU1RfUFBfUkVQRUFUKCBuLCBDT05TVFJfREVDTCwgIiIgKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBDb21wYXJlID0gc3RkOjpsZXNzPEtleT4gPgotY2xhc3MgZml4ZWRfbWFwcGluZwotewotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEtleSxWYWx1ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbV90eXBlOwotICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8ZWxlbV90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxlbGVtX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHM8S2V5Pjo6cGFyYW1fdHlwZSAgICAgICAgICAga2V5X3BhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0czxWYWx1ZT46OnBhcmFtX3R5cGUgICAgICAgICB2YWx1ZV9wYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHM8VmFsdWU+Ojpjb25zdF9yZWZlcmVuY2UgICAgdmFsdWVfcmVmX3R5cGU7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSkKLSAgICBzdHJ1Y3QgcDE7IGZyaWVuZCBzdHJ1Y3QgcDE7Ci0gICAgc3RydWN0IHAyOyBmcmllbmQgc3RydWN0IHAyOwotI2VuZGlmCi0KLSAgICAvLyBiaW5kKCBDb21wYXJlKCksIGJpbmQoc2VsZWN0MXN0PGVsZW1fdHlwZT4oKSwgXzEpLCAgYmluZChpZGVudGl0eTxLZXk+KCksIF8yKSApCi0gICAgc3RydWN0IHAxIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPGVsZW1fdHlwZSxLZXksYm9vbD4KLSAgICB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKSggZWxlbV90eXBlIGNvbnN0JiB4LCBLZXkgY29uc3QmIHkgKSBjb25zdCB7IHJldHVybiBDb21wYXJlKCkoIHguZmlyc3QsIHkgKTsgfQotICAgIH07Ci0KLSAgICAvLyBiaW5kKCBDb21wYXJlKCksIGJpbmQoc2VsZWN0MXN0PGVsZW1fdHlwZT4oKSwgXzEpLCBiaW5kKHNlbGVjdDFzdDxlbGVtX3R5cGU+KCksIF8yKSApCi0gICAgc3RydWN0IHAyIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPGVsZW1fdHlwZSxlbGVtX3R5cGUsYm9vbD4KLSAgICB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKSggZWxlbV90eXBlIGNvbnN0JiB4LCBlbGVtX3R5cGUgY29uc3QmIHkgKSBjb25zdCB7IHJldHVybiBDb21wYXJlKCkoIHguZmlyc3QsIHkuZmlyc3QgKTsgfQotICAgIH07Ci0KLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBDT05UUlVDVE9SUyggTkROQk9PU1RfUFBfQUREKCBNQVhfTUFQX1NJWkUsIDEgKSApCi0KLSAgICAvLyBrZXkgLT4gdmFsdWUgYWNjZXNzCi0gICAgdmFsdWVfcmVmX3R5cGUgIG9wZXJhdG9yW10oIGtleV9wYXJhbV90eXBlIGtleSApIGNvbnN0Ci0gICAgewotICAgICAgICBpdGVyYXRvciBpdCA9IG5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2JvdW5kKCBtX21hcC5iZWdpbigpLCBtX21hcC5lbmQoKSwga2V5LCBwMSgpICk7Ci0KLSAgICAgICAgcmV0dXJuIChpdCA9PSBtX21hcC5lbmQoKSB8fCBDb21wYXJlKCkoIGtleSwgaXQtPmZpcnN0ICkgKSA/IG1faW52YWxpZF92YWx1ZSA6IGl0LT5zZWNvbmQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIEltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgIGluaXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnNvcnQoIG1fbWFwLmJlZ2luKCksIG1fbWFwLmVuZCgpLCBwMigpICk7IH0KLSAgICB2b2lkICAgICAgICAgICAgYWRkX3BhaXIoIGtleV9wYXJhbV90eXBlIGtleSwgdmFsdWVfcGFyYW1fdHlwZSB2YWx1ZSApICB7IG1fbWFwLnB1c2hfYmFjayggZWxlbV90eXBlKCBrZXksIHZhbHVlICkgKTsgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgVmFsdWUgICAgICAgICAgIG1faW52YWxpZF92YWx1ZTsKLSAgICBtYXBfdHlwZSAgICAgICAgbV9tYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSN1bmRlZiBNQVhfTUFQX1NJWkUKLSN1bmRlZiBDT05TVFJfREVDTF9NSUQKLSN1bmRlZiBDT05TVFJfQk9EWV9NSUQKLSN1bmRlZiBDT05TVFJfREVDTAotI3VuZGVmIENPTlRSVUNUT1JTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0ZJWEVEX01BUFBJTkdfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYzIwMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEVyaWMgTmllYmxlciAyMDA0LTIwMDUKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiB0aGlzIGlzIGFuIGFicmlkZ2VkIHZlcnNpb24gb2YgYW4gZXhjZWxlbnQgTkROQk9PU1RfRk9SRUFDSCBmYWNpbGl0eQotLy8gIHByZXNlbnRlZCBieSBFcmljIE5pZWJsZXIuIEkgYW0gc28gZm9uZCBvZiBpdCBzbyBJIGNhbid0IHdhaXQgdGlsbCBpdCAKLS8vICBnb2luZyB0byBiZSBhY2NlcHRlZCBpbnRvIEJvb3N0LiBBbHNvIEkgbmVlZCB2ZXJzaW9uIHdpdGggbGVzcyBudW1iZXIgb2YgZGVwZW5kZW5jaWVzIAotLy8gIGFuZCBtb3JlIHBvcnRhYmxlLiBUaGlzIHZlcnNpb24gZG9lc24ndCBzdXBwb3J0IHJ2YWx1ZXMgYW5kIHdpbGwgcmVldmVsdWF0ZSBpdCdzIAotLy8gIHBhcmFtZXRlcnMsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2ggZm9yIG15IHB1cnBvc2VzLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GT1JFQUNIX0hQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GT1JFQUNIX0hQUF8wMjEwMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIGZvcl9lYWNoIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgc3RhdGljX2FueSAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3Qgc3RhdGljX2FueV9iYXNlCi17Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgotc3RydWN0IHN0YXRpY19hbnkgOiBzdGF0aWNfYW55X2Jhc2UKLXsKLSAgICBzdGF0aWNfYW55KCBJdGVyIGNvbnN0JiB0ICkgOiBtX2l0KCB0ICkge30KLQotICAgIG11dGFibGUgSXRlciBtX2l0OwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdHlwZWRlZiBzdGF0aWNfYW55X2Jhc2UgY29uc3QmIHN0YXRpY19hbnlfdDsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLWlubGluZSBJdGVyJgotc3RhdGljX2FueV9jYXN0KCBzdGF0aWNfYW55X3QgYSwgSXRlciogPSAwICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlciY+KCBzdGF0aWNfY2FzdDxzdGF0aWNfYW55PEl0ZXI+IGNvbnN0Jj4oIGEgKS5tX2l0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBpc19jb25zdCAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBpc19jb25zdDxDPgotaXNfY29uc3RfY29sbCggQyYgKQotewotICAgIHJldHVybiBpc19jb25zdDxDPigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICBiZWdpbiAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPgotYmVnaW4oIEMmIHQsIG1wbDo6ZmFsc2VfICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggdC5iZWdpbigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPgotYmVnaW4oIEMgY29uc3QmIHQsIG1wbDo6dHJ1ZV8gKQotewotICAgIHJldHVybiBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCB0LmJlZ2luKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgIGVuZCAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4KLWVuZCggQyYgdCwgbXBsOjpmYWxzZV8gKQotewotICAgIHJldHVybiBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCB0LmVuZCgpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPgotZW5kKCBDIGNvbnN0JiB0LCBtcGw6OnRydWVfICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggdC5lbmQoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgZG9uZSAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgYm9vbAotZG9uZSggc3RhdGljX2FueV90IGN1ciwgc3RhdGljX2FueV90IGVuZCwgQyYsIG1wbDo6ZmFsc2VfICkKLXsKLSAgICByZXR1cm4gIHN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggY3VyICkgPT0KLSAgICAgICAgICAgIHN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggZW5kICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgYm9vbAotZG9uZSggc3RhdGljX2FueV90IGN1ciwgc3RhdGljX2FueV90IGVuZCwgQyBjb25zdCYsIG1wbDo6dHJ1ZV8gKQotewotICAgIHJldHVybiAgc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCBjdXIgKSA9PQotICAgICAgICAgICAgc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCBlbmQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgIG5leHQgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHZvaWQKLW5leHQoIHN0YXRpY19hbnlfdCBjdXIsIEMmLCBtcGw6OmZhbHNlXyApCi17Ci0gICAgKytzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4oIGN1ciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHZvaWQKLW5leHQoIHN0YXRpY19hbnlfdCBjdXIsIEMgY29uc3QmLCBtcGw6OnRydWVfICkKLXsKLSAgICArK3N0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggY3VyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICBkZXJlZiAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgUmVmVHlwZSx0eXBlbmFtZSBDPgotaW5saW5lIFJlZlR5cGUKLWRlcmVmKCBzdGF0aWNfYW55X3QgY3VyLCBDJiwgOjpuZG5ib29zdDo6dHlwZTxSZWZUeXBlPiwgbXBsOjpmYWxzZV8gKQotewotICAgIHJldHVybiAqc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCBjdXIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Y2xhc3MgUmVmVHlwZSx0eXBlbmFtZSBDPgotaW5saW5lIFJlZlR5cGUKLWRlcmVmKCBzdGF0aWNfYW55X3QgY3VyLCBDIGNvbnN0JiwgOjpuZG5ib29zdDo6dHlwZTxSZWZUeXBlPiwgbXBsOjp0cnVlXyApCi17Ci0gICAgcmV0dXJuICpzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4oIGN1ciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9BTlkgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6c3RhdGljX2FueV90Ci0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OmlzX2NvbnN0X2NvbGwoIENPTCApCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9CRUcoIENPTCApICAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OmJlZ2luKCAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfRU5EKCBDT0wgKSAgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjplbmQoICAgICAgXAotICAgICAgICBDT0wsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICkgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0RPTkUoIENPTCApICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6ZG9uZSggICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9DVVJfVkFSLCAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0VORF9WQVIsICAgICAgICAgICAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfTkVYVCggQ09MICkgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjpuZXh0KCAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0NVUl9WQVIsICAgICAgICAgICAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZPUkVBQ0hfTk9PUChDT0wpICAgICAgICAgICAgIFwKLSAgICAoKHZvaWQpJihDT0wpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfREVSRUYoIENPTCwgUmVmVHlwZSApIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjpkZXJlZiggICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0NVUl9WQVIsICAgICAgICAgICAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZTxSZWZUeXBlID4oKSwgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0lTX0NPTlNUKCBDT0wgKSApICAgICBcCi0vKiovCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA9PSAxMzEwICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MSU5FX05VTQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MSU5FX05VTSAgICAgX19MSU5FX18KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfQ1VSX1ZBUiAgIE5ETkJPT1NUX0pPSU4oIF9mZV9jdXJfLCBORE5CT09TVF9URVNUX0xJTkVfTlVNICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9FTkRfVkFSICAgTkROQk9PU1RfSk9JTiggX2ZlX2VuZF8sIE5ETkJPT1NUX1RFU1RfTElORV9OVU0gKQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgICBORE5CT09TVF9KT0lOKCBfZmVfY29uXywgTkROQk9PU1RfVEVTVF9MSU5FX05VTSApCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBSZWZUeXBlLCB2YXIsIENPTCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaWYoIE5ETkJPT1NUX1RFU1RfRkVfQU5ZIE5ETkJPT1NUX1RFU1RfRkVfQ1VSX1ZBUiA9IE5ETkJPT1NUX1RFU1RfRkVfQkVHKCBDT0wgKSApIHt9IGVsc2UgICAgICAgICAgICBcCi1pZiggTkROQk9PU1RfVEVTVF9GRV9BTlkgTkROQk9PU1RfVEVTVF9GRV9FTkRfVkFSID0gTkROQk9PU1RfVEVTVF9GRV9FTkQoIENPTCApICkge30gZWxzZSAgICAgICAgICAgIFwKLWZvciggYm9vbCBORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgPSB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiAmJiAhTkROQk9PU1RfVEVTVF9GRV9ET05FKCBDT0wgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSID8gTkROQk9PU1RfVEVTVF9GRV9ORVhUKCBDT0wgKSA6IE5ETkJPT1NUX0ZPUkVBQ0hfTk9PUCggQ09MICkpICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKCAoTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSID0gZmFsc2UsIGZhbHNlKSApIHt9IGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZm9yKCBSZWZUeXBlIHZhciA9IE5ETkJPT1NUX1RFU1RfRkVfREVSRUYoIENPTCwgUmVmVHlwZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICFORE5CT09TVF9URVNUX0ZFX0NPTl9WQVI7IE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiA9IHRydWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBmb3JfZWFjaAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0ZPUkVBQ0hfSFBQXzAyMTAwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL2lucHV0X2l0ZXJhdG9yX2ZhY2FkZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvaW5wdXRfaXRlcmF0b3JfZmFjYWRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc2M2ZjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvaW5wdXRfaXRlcmF0b3JfZmFjYWRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IElucHV0IGl0ZXJhdG9yIGZhY2FkZSAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX0lOUFVUX0lURVJBVE9SX0ZBQ0FERV9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX0lOUFVUX0lURVJBVE9SX0ZBQ0FERV9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzcyAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3MKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXB1YmxpYzoKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIEksIGNsYXNzIFYsIGNsYXNzIFIsIGNsYXNzIFRDPiBmcmllbmQgY2xhc3MgaW5wdXRfaXRlcmF0b3JfZmFjYWRlOwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlPgotICAgIHN0YXRpYyBib29sIGdldCggRmFjYWRlJiBmICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmLmdldCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBvYmplY3RzIG9mIHRoaXMgY2xhc3MgYXJlIHVzZWxlc3MKLSAgICBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzcygpOyAvL3VuZGVmaW5lZAotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfZmFjYWRlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLAotICAgICAgICAgdHlwZW5hbWUgVmFsdWVUeXBlLAotICAgICAgICAgdHlwZW5hbWUgUmVmZXJlbmNlID0gVmFsdWVUeXBlIGNvbnN0JiwKLSAgICAgICAgIHR5cGVuYW1lIFRyYXZlcnNhbCA9IHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWc+Ci1jbGFzcyBpbnB1dF9pdGVyYXRvcl9mYWNhZGUgOiBwdWJsaWMgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsVmFsdWVUeXBlLFRyYXZlcnNhbCxSZWZlcmVuY2U+Ci17Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBpbnB1dF9pdGVyYXRvcl9mYWNhZGUoKSA6IG1fdmFsaWQoIGZhbHNlICksIG1fdmFsdWUoKSB7fQotCi1wcm90ZWN0ZWQ6IC8vIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBEZXJpdmVkCi0gICAgdm9pZCAgICAgICAgICAgICAgICBpbml0KCkKLSAgICB7Ci0gICAgICAgIG1fdmFsaWQgPSB0cnVlOwotICAgICAgICBpbmNyZW1lbnQoKTsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBtdXRhYmxlIGJvb2wgICAgICAgIG1fdmFsaWQ7Ci0gICAgVmFsdWVUeXBlICAgICAgICAgICBtX3ZhbHVlOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBuZG5ib29zdDo6aXRlcmF0b3JfY29yZV9hY2Nlc3M7Ci0KLSAgICAvLyBpdGVyYXRvciBmYWNhZGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgICAgICBpbmNyZW1lbnQoKQotICAgIHsKLSAgICAgICAgLy8gd2UgbWFrZSBwb3N0LWVuZCBpbmNyZW1lbnRhdGlvbiBpbmRlZmluZXRseSBzYWZlIAotICAgICAgICBpZiggbV92YWxpZCApCi0gICAgICAgICAgICBtX3ZhbGlkID0gaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3M6OmdldCggKnN0YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKSApOwotICAgIH0KLSAgICBSZWZlcmVuY2UgICAgICAgICAgIGRlcmVmZXJlbmNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KLQotICAgIC8vIGl0ZXJhdG9yIGZhY2FkZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICBib29sICAgICAgICAgICAgICAgIGVxdWFsKCBpbnB1dF9pdGVyYXRvcl9mYWNhZGUgY29uc3QmIHJocyApIGNvbnN0Ci0gICAgewotICAgICAgICAvLyB0d28gaW52YWxpZCBpdGVyYXRvciBlcXVhbHMsIGluZXF1YWwgb3RoZXJ3aXNlCi0gICAgICAgIHJldHVybiAhbV92YWxpZCAmJiAhcmhzLm1fdmFsaWQ7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU5QVVRfSVRFUkFUT1JfRkFDQURFX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYzk5ZmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHRva2VuIGl0ZXJhdG9yIGZvciBzdHJpbmcgYW5kIHJhbmdlIHRva2VuaXphdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVE9LRU5fSVRFUkFUT1JfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9UT0tFTl9JVEVSQVRPUl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci9pbnB1dF9pdGVyYXRvcl9mYWNhZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPGNjdHlwZT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkeyB1c2luZyA6OmlzcHVuY3Q7IHVzaW5nIDo6aXNzcGFjZTsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB0aV9kZWxpbWV0ZXJfdHlwZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWVudW0gdGlfZGVsaW1ldGVyX3R5cGUgeyAKLSAgICBkdF9jaGFyLCAgICAgICAgLy8gY2hhcmFjdGVyIGlzIGRlbGltZXRlciBpZiBpdCBhbW9uZyBleHBsaWNpdCBsaXN0IG9mIHNvbWUgY2hhcmFjdGVycwotICAgIGR0X2lzcHVuY3QsICAgICAvLyBjaGFyYWN0ZXIgaXMgZGVsaW1ldGVyIGlmIGl0IHNhdGlzZmllcyBpc3B1bmN0IGZ1bmN0b3IKLSAgICBkdF9pc3NwYWNlLCAgICAgLy8gY2hhcmFjdGVyIGlzIGRlbGltZXRlciBpZiBpdCBzYXRpc2ZpZXMgaXNzcGFjZSBmdW5jdG9yCi0gICAgZHRfbm9uZSAgICAgICAgIC8vIG5vIGNoYXJhY3RlciBpcyBkZWxpbWV0ZXIKLX07Ci0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZGVmYXVsdF9jaGFyX2NvbXBhcmUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotY2xhc3MgZGVmYXVsdF9jaGFyX2NvbXBhcmUgewotcHVibGljOgotICAgIGJvb2wgb3BlcmF0b3IoKSggQ2hhclQgYzEsIENoYXJUIGMyICkKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nX2NoYXJfdHJhaXRzPENoYXJUPjo6ZXEoIGMxLCBjMiApOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIHN0ZDo6Y2hhcl90cmFpdHM8Q2hhclQ+OjplcSggYzEsIGMyICk7Ci0jZW5kaWYKLSAgICB9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGRlbGltX3BvbGljeSAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULHR5cGVuYW1lIENoYXJDb21wYXJlPgotY2xhc3MgZGVsaW1fcG9saWN5IHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8Q2hhclQgY29uc3Q+IGNzdHJpbmc7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICBkZWxpbV9wb2xpY3koIHRpX2RlbGltZXRlcl90eXBlIHQgPSBkdF9jaGFyLCBjc3RyaW5nIGQgPSBjc3RyaW5nKCkgKQotICAgIDogbV90eXBlKCB0ICkKLSAgICB7Ci0gICAgICAgIHNldF9kZWxpbWV0ZXJzKCBkICk7Ci0gICAgfQotCi0gICAgdm9pZCAgICAgICAgc2V0X2RlbGltZXRlcnMoIHRpX2RlbGltZXRlcl90eXBlIHQgKSB7IG1fdHlwZSA9IHQ7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcmM+Ci0gICAgdm9pZCAgICAgICAgc2V0X2RlbGltZXRlcnMoIFNyYyBkICkKLSAgICB7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG1fZGVsaW1ldGVycywgZCApOwotICAgICAgICAKLSAgICAgICAgaWYoICFtX2RlbGltZXRlcnMuaXNfZW1wdHkoKSApCi0gICAgICAgICAgICBtX3R5cGUgPSBkdF9jaGFyOwotICAgIH0KLQotICAgIGJvb2wgICAgICAgIG9wZXJhdG9yKCkoIENoYXJUIGMgKQotICAgIHsKLSAgICAgICAgc3dpdGNoKCBtX3R5cGUgKSB7Ci0gICAgICAgIGNhc2UgZHRfY2hhcjogewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBDaGFyVCwgZGVsaW0sIG1fZGVsaW1ldGVycyApCi0gICAgICAgICAgICAgICAgaWYoIENoYXJDb21wYXJlKCkoIGRlbGltLCBjICkgKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgZHRfaXNwdW5jdDoKLSAgICAgICAgICAgIHJldHVybiAoc3RkOjppc3B1bmN0KSggYyApICE9IDA7Ci0gICAgICAgIGNhc2UgZHRfaXNzcGFjZToKLSAgICAgICAgICAgIHJldHVybiAoc3RkOjppc3NwYWNlKSggYyApICE9IDA7Ci0gICAgICAgIGNhc2UgZHRfbm9uZToKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY3N0cmluZyAgICAgICAgICAgICBtX2RlbGltZXRlcnM7Ci0gICAgdGlfZGVsaW1ldGVyX3R5cGUgICBtX3R5cGU7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRva2VuX2Fzc2lnbmVyICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFRyYXZlcnNhbFRhZz4KLXN0cnVjdCB0b2tlbl9hc3NpZ25lciB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsIDwgMzA2ICkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgQywgdHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBhc3NpZ24oIEl0ZXJhdG9yIGIsIEl0ZXJhdG9yIGUsIHN0ZDo6YmFzaWNfc3RyaW5nPEMsVD4mIHQgKQotICAgIHsgZm9yKCA7IGIgIT0gZTsgKytiICkgdCArPSAqYjsgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBDPgotICAgIHN0YXRpYyB2b2lkIGFzc2lnbiggSXRlcmF0b3IgYiwgSXRlcmF0b3IgZSwgYmFzaWNfY3N0cmluZzxDPiYgdCApICB7IHQuYXNzaWduKCBiLCBlICk7IH0KLSNlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFRva2VuPgotICAgIHN0YXRpYyB2b2lkIGFzc2lnbiggSXRlcmF0b3IgYiwgSXRlcmF0b3IgZSwgVG9rZW4mIHQgKSAgeyB0LmFzc2lnbiggYiwgZSApOyB9Ci0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgVG9rZW4+Ci0gICAgc3RhdGljIHZvaWQgYXBwZW5kX21vdmUoIEl0ZXJhdG9yJiBiLCBUb2tlbiYgKSAgICAgICAgICB7ICsrYjsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IHRva2VuX2Fzc2lnbmVyPHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgVG9rZW4+Ci0gICAgc3RhdGljIHZvaWQgYXNzaWduKCBJdGVyYXRvciBiLCBJdGVyYXRvciBlLCBUb2tlbiYgdCApICB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFRva2VuPgotICAgIHN0YXRpYyB2b2lkIGFwcGVuZF9tb3ZlKCBJdGVyYXRvciYgYiwgVG9rZW4mIHQgKSAgICAgICAgeyB0ICs9ICpiOyArK2I7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBtb2RpZmllcnMgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGRyb3BwZWRfZGVsaW1ldGVyc190ID4gICAgICAgICAgIGRyb3BwZWRfZGVsaW1ldGVyczsKLW5mcDo6a2V5d29yZDxzdHJ1Y3Qga2VwdF9kZWxpbWV0ZXJzX3QgPiAgICAgICAgICAgICAga2VwdF9kZWxpbWV0ZXJzOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IGtlZXBfZW1wdHlfdG9rZW5zX3QgPiBrZWVwX2VtcHR5X3Rva2VuczsKLW5mcDo6dHlwZWRfa2V5d29yZDxzdGQ6OnNpemVfdCxzdHJ1Y3QgbWF4X3Rva2Vuc190ID4gbWF4X3Rva2VuczsKLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHRva2VuX2l0ZXJhdG9yX2Jhc2UgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLAotICAgICAgICAgdHlwZW5hbWUgQ2hhclQsCi0gICAgICAgICB0eXBlbmFtZSBDaGFyQ29tcGFyZSAgID0gdXRfZGV0YWlsOjpkZWZhdWx0X2NoYXJfY29tcGFyZTxDaGFyVD4sCi0gICAgICAgICB0eXBlbmFtZSBWYWx1ZVR5cGUgICAgID0gYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4sCi0gICAgICAgICB0eXBlbmFtZSBSZWZlcmVuY2UgICAgID0gYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4sCi0gICAgICAgICB0eXBlbmFtZSBUcmF2ZXJzYWwgICAgID0gZm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotY2xhc3MgdG9rZW5faXRlcmF0b3JfYmFzZQotOiBwdWJsaWMgaW5wdXRfaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsVmFsdWVUeXBlLFJlZmVyZW5jZSxUcmF2ZXJzYWw+IHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8Q2hhclQgY29uc3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyaW5nOwotICAgIHR5cGVkZWYgdXRfZGV0YWlsOjpkZWxpbV9wb2xpY3k8Q2hhclQsQ2hhckNvbXBhcmU+ICAgICAgICAgICAgICAgICAgICAgIGRlbGltX3BvbGljeTsKLSAgICB0eXBlZGVmIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLFZhbHVlVHlwZSxSZWZlcmVuY2UsVHJhdmVyc2FsPiAgICBiYXNlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICB0b2tlbl9pdGVyYXRvcl9iYXNlKCkKLSAgICA6IG1faXNfZHJvcHBlZCggZHRfaXNzcGFjZSApCi0gICAgLCBtX2lzX2tlcHQoIGR0X2lzcHVuY3QgKQotICAgICwgbV9rZWVwX2VtcHR5X3Rva2VucyggZmFsc2UgKQotICAgICwgbV90b2tlbnNfbGVmdCggc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KC0xKSApCi0gICAgLCBtX3Rva2VuX3Byb2R1Y2VkKCBmYWxzZSApCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQKLSAgICBhcHBseV9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgaWYoIG0uaGFzKCBkcm9wcGVkX2RlbGltZXRlcnMgKSApCi0gICAgICAgICAgICBtX2lzX2Ryb3BwZWQuc2V0X2RlbGltZXRlcnMoIG1bZHJvcHBlZF9kZWxpbWV0ZXJzXSApOwotCi0gICAgICAgIGlmKCBtLmhhcygga2VwdF9kZWxpbWV0ZXJzICkgKQotICAgICAgICAgICAgbV9pc19rZXB0LnNldF9kZWxpbWV0ZXJzKCBtW2tlcHRfZGVsaW1ldGVyc10gKTsKLQotICAgICAgICBpZiggbS5oYXMoIGtlZXBfZW1wdHlfdG9rZW5zICkgKQotICAgICAgICAgICAgbV9rZWVwX2VtcHR5X3Rva2VucyA9IHRydWU7Ci0KLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggbV90b2tlbnNfbGVmdCwgbSwgbWF4X3Rva2VucyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+IAotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGdldCggSXRlciYgYmVnaW4sIEl0ZXIgZW5kICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdXRfZGV0YWlsOjp0b2tlbl9hc3NpZ25lcjxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGl0ZXJhdG9yX3RyYXZlcnNhbDxJdGVyPjo6dHlwZT4gQXNzaWduZXI7Ci0gICAgICAgIEl0ZXIgY2hlY2tfcG9pbnQ7Ci0KLSAgICAgICAgdGhpcy0+bV92YWx1ZS5jbGVhcigpOwotCi0gICAgICAgIGlmKCAhbV9rZWVwX2VtcHR5X3Rva2VucyApIHsKLSAgICAgICAgICAgIHdoaWxlKCBiZWdpbiAhPSBlbmQgJiYgbV9pc19kcm9wcGVkKCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgKytiZWdpbjsKLQotICAgICAgICAgICAgaWYoIGJlZ2luID09IGVuZCApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBjaGVja19wb2ludCA9IGJlZ2luOwotCi0gICAgICAgICAgICBpZiggbV90b2tlbnNfbGVmdCA9PSAxICkKLSAgICAgICAgICAgICAgICB3aGlsZSggYmVnaW4gIT0gZW5kICkKLSAgICAgICAgICAgICAgICAgICAgQXNzaWduZXI6OmFwcGVuZF9tb3ZlKCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotICAgICAgICAgICAgZWxzZSBpZiggbV9pc19rZXB0KCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgQXNzaWduZXI6OmFwcGVuZF9tb3ZlKCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdoaWxlKCBiZWdpbiAhPSBlbmQgJiYgIW1faXNfZHJvcHBlZCggKmJlZ2luICkgJiYgIW1faXNfa2VwdCggKmJlZ2luICkgKQotICAgICAgICAgICAgICAgICAgICBBc3NpZ25lcjo6YXBwZW5kX21vdmUoIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0KLSAgICAgICAgICAgIC0tbV90b2tlbnNfbGVmdDsKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZSB7IC8vIG1fa2VlcF9lbXB0eV90b2tlbnMgaXMgdHJ1ZQotICAgICAgICAgICAgY2hlY2tfcG9pbnQgPSBiZWdpbjsKLQotICAgICAgICAgICAgaWYoIGJlZ2luID09IGVuZCApIHsKLSAgICAgICAgICAgICAgICBpZiggbV90b2tlbl9wcm9kdWNlZCApIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBtX3Rva2VuX3Byb2R1Y2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKCBtX2lzX2tlcHQoICpiZWdpbiApICkgewotICAgICAgICAgICAgICAgIGlmKCBtX3Rva2VuX3Byb2R1Y2VkICkgCi0gICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyOjphcHBlbmRfbW92ZSggYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLQotICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQgPSAhbV90b2tlbl9wcm9kdWNlZDsKLSAgICAgICAgICAgIH0gCi0gICAgICAgICAgICBlbHNlIGlmKCAhbV90b2tlbl9wcm9kdWNlZCAmJiBtX2lzX2Ryb3BwZWQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICBtX3Rva2VuX3Byb2R1Y2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmKCBtX2lzX2Ryb3BwZWQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tfcG9pbnQgPSArK2JlZ2luOwotCi0gICAgICAgICAgICAgICAgd2hpbGUoIGJlZ2luICE9IGVuZCAmJiAhbV9pc19kcm9wcGVkKCAqYmVnaW4gKSAmJiAhbV9pc19rZXB0KCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyOjphcHBlbmRfbW92ZSggYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLQotICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgQXNzaWduZXI6OmFzc2lnbiggY2hlY2tfcG9pbnQsIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGRlbGltX3BvbGljeSAgICAgICAgICAgIG1faXNfZHJvcHBlZDsKLSAgICBkZWxpbV9wb2xpY3kgICAgICAgICAgICBtX2lzX2tlcHQ7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgbV9rZWVwX2VtcHR5X3Rva2VuczsKLSAgICBzdGQ6OnNpemVfdCAgICAgICAgICAgICBtX3Rva2Vuc19sZWZ0OwotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQ7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULAotICAgICAgICAgdHlwZW5hbWUgQ2hhckNvbXBhcmUgPSB1dF9kZXRhaWw6OmRlZmF1bHRfY2hhcl9jb21wYXJlPENoYXJUPiA+Ci1jbGFzcyBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IKLTogcHVibGljIHRva2VuX2l0ZXJhdG9yX2Jhc2U8YmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPENoYXJULENoYXJDb21wYXJlPixDaGFyVCxDaGFyQ29tcGFyZT4gewotICAgIHR5cGVkZWYgYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4gY3N0cmluZzsKLSAgICB0eXBlZGVmIHRva2VuX2l0ZXJhdG9yX2Jhc2U8YmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPENoYXJULENoYXJDb21wYXJlPixDaGFyVCxDaGFyQ29tcGFyZT4gYmFzZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAgICBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IoKSB7fQotICAgIGV4cGxpY2l0ICAgIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvciggY3N0cmluZyBzcmMgKQotICAgIDogbV9zcmMoIHNyYyApCi0gICAgewotICAgICAgICB0aGlzLT5pbml0KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3JjLCB0eXBlbmFtZSBNb2RpZmllcj4KLSAgICBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IoIFNyYyBzcmMsIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICA6IG1fc3JjKCBzcmMgKQotICAgIHsKLSAgICAgICAgdGhpcy0+YXBwbHlfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICB0aGlzLT5pbml0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgIC8vIGlucHV0IGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uCi0gICAgYm9vbCAgICAgICAgZ2V0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIGNzdHJpbmc6Oml0ZXJhdG9yIGJlZ2luID0gbV9zcmMuYmVnaW4oKTsKLSAgICAgICAgYm9vbCByZXMgPSBiYXNlOjpnZXQoIGJlZ2luLCBtX3NyYy5lbmQoKSApOwotCi0gICAgICAgIG1fc3JjLmFzc2lnbiggYmVnaW4sIG1fc3JjLmVuZCgpICk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjc3RyaW5nICAgICBtX3NyYzsKLX07Ci0KLXR5cGVkZWYgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPGNoYXI+ICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvcjsKLXR5cGVkZWYgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPHdjaGFyX3Q+ICAgIHdzdHJpbmdfdG9rZW5faXRlcmF0b3I7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlciwKLSAgICAgICAgIHR5cGVuYW1lIENoYXJDb21wYXJlID0gdXRfZGV0YWlsOjpkZWZhdWx0X2NoYXJfY29tcGFyZTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGl0ZXJhdG9yX3ZhbHVlPEl0ZXI+Ojp0eXBlPiwKLSAgICAgICAgIHR5cGVuYW1lIFZhbHVlVHlwZSAgID0gc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpdGVyYXRvcl92YWx1ZTxJdGVyPjo6dHlwZT4sCi0gICAgICAgICB0eXBlbmFtZSBSZWZlcmVuY2UgICA9IFZhbHVlVHlwZSBjb25zdCY+Ci1jbGFzcyByYW5nZV90b2tlbl9pdGVyYXRvcgotOiBwdWJsaWMgdG9rZW5faXRlcmF0b3JfYmFzZTxyYW5nZV90b2tlbl9pdGVyYXRvcjxJdGVyLENoYXJDb21wYXJlLFZhbHVlVHlwZSxSZWZlcmVuY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl92YWx1ZTxJdGVyPjo6dHlwZSxDaGFyQ29tcGFyZSxWYWx1ZVR5cGUsUmVmZXJlbmNlPiB7Ci0gICAgdHlwZWRlZiBiYXNpY19jc3RyaW5nPHR5cGVuYW1lIFZhbHVlVHlwZTo6dmFsdWVfdHlwZT4gY3N0cmluZzsKLSAgICB0eXBlZGVmIHRva2VuX2l0ZXJhdG9yX2Jhc2U8cmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcixDaGFyQ29tcGFyZSxWYWx1ZVR5cGUsUmVmZXJlbmNlPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdmFsdWU8SXRlcj46OnR5cGUsQ2hhckNvbXBhcmUsVmFsdWVUeXBlLFJlZmVyZW5jZT4gYmFzZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAgICByYW5nZV90b2tlbl9pdGVyYXRvcigpIHt9Ci0gICAgZXhwbGljaXQgICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IoIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kID0gSXRlcigpICkKLSAgICA6IG1fYmVnaW4oIGJlZ2luICksIG1fZW5kKCBlbmQgKQotICAgIHsKLSAgICAgICAgdGhpcy0+aW5pdCgpOwotICAgIH0KLSAgICByYW5nZV90b2tlbl9pdGVyYXRvciggcmFuZ2VfdG9rZW5faXRlcmF0b3IgY29uc3QmIHJocyApCi0gICAgOiBiYXNlKCByaHMgKQotICAgIHsKLSAgICAgICAgaWYoIHRoaXMtPm1fdmFsaWQgKSB7Ci0gICAgICAgICAgICBtX2JlZ2luID0gcmhzLm1fYmVnaW47Ci0gICAgICAgICAgICBtX2VuZCAgID0gcmhzLm1fZW5kOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IoIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kLCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgOiBtX2JlZ2luKCBiZWdpbiApLCBtX2VuZCggZW5kICkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmFwcGx5X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgdGhpcy0+aW5pdCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3M7Ci0KLSAgICAvLyBpbnB1dCBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbgotICAgIGJvb2wgICAgICAgIGdldCgpCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZTo6Z2V0KCBtX2JlZ2luLCBtX2VuZCApOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEl0ZXIgbV9iZWdpbjsKLSAgICBJdGVyIG1fZW5kOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgbWFrZV9yYW5nZV90b2tlbl9pdGVyYXRvciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgotaW5saW5lIHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXI+Ci1tYWtlX3JhbmdlX3Rva2VuX2l0ZXJhdG9yKCBJdGVyIGJlZ2luLCBJdGVyIGVuZCA9IEl0ZXIoKSApCi17Ci0gICAgcmV0dXJuIHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXI+KCBiZWdpbiwgZW5kICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsdHlwZW5hbWUgTW9kaWZpZXI+Ci1pbmxpbmUgcmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcj4KLW1ha2VfcmFuZ2VfdG9rZW5faXRlcmF0b3IoIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kLCBNb2RpZmllciBjb25zdCYgbSApCi17Ci0gICAgcmV0dXJuIHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXI+KCBiZWdpbiwgZW5kLCBtICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RPS0VOX0lURVJBVE9SX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2xhenlfb3N0cmVhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEzZmEyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBkZWZpbml0aW9uIGZvciBhbGwgdGVzdCB0b29scyBpbiB0ZXN0IHRvb2xib3gKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTEFaWV9PU1RSRUFNX0hQUF8wNzA3MDhHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MQVpZX09TVFJFQU1fSFBQXzA3MDcwOEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBsYXp5X29zdHJlYW0gICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1jbGFzcyBsYXp5X29zdHJlYW0gewotcHVibGljOgotICAgIHN0YXRpYyBsYXp5X29zdHJlYW0mICAgIGluc3RhbmNlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWMgbGF6eV9vc3RyZWFtIGluc3Q7IHJldHVybiBpbnN0OyB9Ci0KLSAgICBmcmllbmQgc3RkOjpvc3RyZWFtJiAgICBvcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGxhenlfb3N0cmVhbSBjb25zdCYgbyApIHsgcmV0dXJuIG8oIG9zdHIgKTsgfQotCi0gICAgLy8gYWNjZXNzIG1ldGhvZAotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGVtcHR5KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV9lbXB0eTsgfQotCi0gICAgLy8gYWN0dWFsIHByaW50aW5nIGludGVyZmFjZTsgdG8gYmUgYWNjZXNzZWQgb25seSBieSB0aGlzIGNsYXNzIGFuZCBjaGlsZHJlbgotICAgIHZpcnR1YWwgc3RkOjpvc3RyZWFtJiAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciApIGNvbnN0ICAgICAgICAgICAgICAgICAgeyByZXR1cm4gb3N0cjsgfQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0ICAgICAgICAgICAgICAgIGxhenlfb3N0cmVhbSggYm9vbCBlbXB0eSA9IHRydWUgKSA6IG1fZW1wdHkoIGVtcHR5ICkgICAge30KLQotICAgIC8vIHByb3RlY3RlZCBkZXN0cnVjdG9yIHRvIG1ha2Ugc3VyZSByaWdodCBvbmUgaXMgY2FsbGVkCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MikpCi1wdWJsaWM6Ci0jZW5kaWYKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH5sYXp5X29zdHJlYW0oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgbV9lbXB0eTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBsYXp5X29zdHJlYW1faW1wbCA6IHB1YmxpYyBsYXp5X29zdHJlYW0gewotcHVibGljOgotICAgIGxhenlfb3N0cmVhbV9pbXBsKCBsYXp5X29zdHJlYW0gY29uc3QmIHByZXYsIFQgdmFsdWUgKQotICAgIDogbGF6eV9vc3RyZWFtKCBmYWxzZSApCi0gICAgLCBtX3ByZXYoIHByZXYgKQotICAgICwgbV92YWx1ZSggdmFsdWUgKQotICAgIHt9Ci1wcml2YXRlOgotICAgIHZpcnR1YWwgc3RkOjpvc3RyZWFtJiAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmV2KG9zdHIpIDw8IG1fdmFsdWU7Ci0gICAgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbGF6eV9vc3RyZWFtIGNvbnN0JiAgICAgbV9wcmV2OwotICAgIFQgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGxhenlfb3N0cmVhbV9pbXBsPFQgY29uc3QmPgotb3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiBwcmV2LCBUIGNvbnN0JiB2ICkKLXsKLSAgICByZXR1cm4gbGF6eV9vc3RyZWFtX2ltcGw8VCBjb25zdCY+KCBwcmV2LCB2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsdHlwZW5hbWUgUz4KLWlubGluZSBsYXp5X29zdHJlYW1faW1wbDxSJiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKikoUyYpPgotb3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiBwcmV2LCBSJiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKm1hbikoUyYpICkKLXsKLSAgICByZXR1cm4gbGF6eV9vc3RyZWFtX2ltcGw8UiYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICopKFMmKT4oIHByZXYsIG1hbiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9MQVpZX09TVFJFQU1fSFBQXzA3MDcwOEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEyMGU1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGZhY2lsaXRpZXMgZm9yIG5hbWVkIGZ1bmN0aW9uIHBhcmFtZXRlcnMgc3VwcG9ydAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9OQU1FRF9QQVJBTV8wMjI1MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9OQU1FRF9QQVJBTV8wMjI1MDVHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9hc3NpZ25fb3AuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBuZnAgeyAvLyBuYW1lZCBmdW5jdGlvbiBwYXJhbWV0ZXJzCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgZm9yd2FyZCBkZWNsYXJhdGlvbnMgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgdW5pcXVlX2lkLHR5cGVuYW1lIFJlZlR5cGU+ICAgc3RydWN0IG5hbWVkX3BhcmFtZXRlcjsKLXRlbXBsYXRlPHR5cGVuYW1lIHVuaXF1ZV9pZCxib29sIHJlcXVpcmVkPiAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXl3b3JkOwotCi1uYW1lc3BhY2UgbmZwX2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE5QMSx0eXBlbmFtZSBOUDI+ICAgICAgICBzdHJ1Y3QgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBhY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGFjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlciB7fTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQgCi1yZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCkKLXsKLSAgICB0aHJvdyBhY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICBuaWwgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgbmlsIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpIHx8IGRlZmluZWQoX19FREdfXykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKLSAgICBvcGVyYXRvciBUKCkgY29uc3QKLSNlbHNlCi0gICAgb3BlcmF0b3IgVCBjb25zdCYoKSBjb25zdAotI2VuZGlmCi0gICAgeyByZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7IHN0YXRpYyBUKiB2ID0gMDsgcmV0dXJuICp2OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgYW55X2Nhc3QoKSBjb25zdAotICAgIHsgcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOyBzdGF0aWMgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSogdiA9IDA7IHJldHVybiAqdjsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnMT4KLSAgICBuaWwgb3BlcmF0b3IoKSggQXJnMSBjb25zdCYgKQotICAgIHsgcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOyByZXR1cm4gbmlsKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZzEsdHlwZW5hbWUgQXJnMj4KLSAgICBuaWwgb3BlcmF0b3IoKSggQXJnMSBjb25zdCYsIEFyZzIgY29uc3QmICkKLSAgICB7IHJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsgcmV0dXJuIG5pbCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmcxLHR5cGVuYW1lIEFyZzIsdHlwZW5hbWUgQXJnMz4KLSAgICBuaWwgb3BlcmF0b3IoKSggQXJnMSBjb25zdCYsIEFyZzIgY29uc3QmLCBBcmczIGNvbnN0JiApCi0gICAgeyByZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7IHJldHVybiBuaWwoKTsgfQotCi0gICAgLy8gVmlzaXRhdGlvbiBzdXBwb3J0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLSAgICB2b2lkICAgICAgICAgICAgYXBwbHlfdG8oIFZpc2l0b3ImIFYgKSBjb25zdCB7fQotCi0gICAgc3RhdGljIG5pbCYgICAgIGluc3QoKSB7IHN0YXRpYyBuaWwgc19pbnN0OyByZXR1cm4gc19pbnN0OyB9Ci1wcml2YXRlOgotICAgIG5pbCgpIHt9Ci19OwotICAgIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBuYW1lZF9wYXJhbWV0ZXJfYmFzZSAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkPgotc3RydWN0IG5hbWVkX3BhcmFtZXRlcl9iYXNlIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOUD4KLSAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxEZXJpdmVkPgotICAgIG9wZXJhdG9yLCggTlAgY29uc3QmIG5wICkgY29uc3QgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsRGVyaXZlZD4oIG5wLCAqc3RhdGljX2Nhc3Q8RGVyaXZlZCBjb25zdCo+KHRoaXMpICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZSAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTlAsIHR5cGVuYW1lIFJlc3QgPSBuaWw+Ci1zdHJ1Y3QgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmUgCi06IFJlc3QKLSwgbmFtZWRfcGFyYW1ldGVyX2Jhc2U8bmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsUmVzdD4gPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBOUDo6cmVmX3R5cGUgIHJlc190eXBlOwotICAgIHR5cGVkZWYgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsUmVzdD4gc2VsZl90eXBlOwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZSggTlAgY29uc3QmIG5wLCBSZXN0IGNvbnN0JiByICkKLSAgICA6IFJlc3QoIHIgKQotICAgICwgbV9wYXJhbSggbnAgKQotICAgIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIHJlc190eXBlICAgIG9wZXJhdG9yW10oIGtleXdvcmQ8dHlwZW5hbWUgTlA6OmlkLHRydWU+IGt3ICkgY29uc3QgICAgeyByZXR1cm4gbV9wYXJhbVtrd107IH0KLSAgICByZXNfdHlwZSAgICBvcGVyYXRvcltdKCBrZXl3b3JkPHR5cGVuYW1lIE5QOjppZCxmYWxzZT4ga3cgKSBjb25zdCAgIHsgcmV0dXJuIG1fcGFyYW1ba3ddOyB9Ci0gICAgdXNpbmcgICAgICAgUmVzdDo6b3BlcmF0b3JbXTsKLQotICAgIGJvb2wgICAgICAgIGhhcygga2V5d29yZDx0eXBlbmFtZSBOUDo6aWQsZmFsc2U+IGt3ICkgY29uc3QgICAgICAgICAgeyByZXR1cm4gbV9wYXJhbS5oYXMoIGt3ICk7IH0KLSAgICB1c2luZyAgICAgICBSZXN0OjpoYXM7Ci0KLSAgICB2b2lkICAgICAgICBlcmFzZSgga2V5d29yZDx0eXBlbmFtZSBOUDo6aWQsZmFsc2U+IGt3ICkgY29uc3QgICAgICAgIHsgbV9wYXJhbS5lcmFzZSgga3cgKTsgfQotICAgIHVzaW5nICAgICAgIFJlc3Q6OmVyYXNlOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjA2KSkgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEwKSkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOUD4KLSAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxzZWxmX3R5cGU+IG9wZXJhdG9yLCggTlAgY29uc3QmIG5wICkgY29uc3QKLSAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxzZWxmX3R5cGU+KCBucCwgKnRoaXMgKTsgfQotI2Vsc2UKLSAgICB1c2luZyAgICAgICBuYW1lZF9wYXJhbWV0ZXJfYmFzZTxuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxSZXN0PiA+OjpvcGVyYXRvciw7Ci0jZW5kaWYKLQotICAgIC8vIFZpc2l0YXRpb24gc3VwcG9ydAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci0gICAgdm9pZCAgICAgICAgICAgIGFwcGx5X3RvKCBWaXNpdG9yJiBWICkgY29uc3QKLSAgICB7Ci0gICAgICAgIG1fcGFyYW0uYXBwbHlfdG8oIFYgKTsKLQotICAgICAgICBSZXN0OjphcHBseV90byggViApOwotICAgIH0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgTlAgICAgICAgICAgbV9wYXJhbTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5mcF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBuYW1lZF9wYXJhbWV0ZXIgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSB1bmlxdWVfaWQsdHlwZW5hbWUgUmVmZXJlbmNlVHlwZT1UJj4KLXN0cnVjdCBuYW1lZF9wYXJhbWV0ZXIKLTogbmZwX2RldGFpbDo6bmFtZWRfcGFyYW1ldGVyX2Jhc2U8bmFtZWRfcGFyYW1ldGVyPFQsIHVuaXF1ZV9pZCxSZWZlcmVuY2VUeXBlPiA+Ci17Ci0gICAgdHlwZWRlZiBuZnBfZGV0YWlsOjpuaWwgbmlsX3Q7Ci0gICAgdHlwZWRlZiBUICAgICAgICAgICAgICAgZGF0YV90eXBlOwotICAgIHR5cGVkZWYgUmVmZXJlbmNlVHlwZSAgIHJlZl90eXBlOwotICAgIHR5cGVkZWYgdW5pcXVlX2lkICAgICAgIGlkOwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgbmFtZWRfcGFyYW1ldGVyKCByZWZfdHlwZSB2ICkgCi0gICAgOiBtX3ZhbHVlKCB2ICkKLSAgICAsIG1fZXJhc2VkKCBmYWxzZSApCi0gICAge30KLSAgICBuYW1lZF9wYXJhbWV0ZXIoIG5hbWVkX3BhcmFtZXRlciBjb25zdCYgbnAgKQotICAgIDogbV92YWx1ZSggbnAubV92YWx1ZSApCi0gICAgLCBtX2VyYXNlZCggbnAubV9lcmFzZWQgKQotICAgIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIHJlZl90eXBlICAgICAgICBvcGVyYXRvcltdKCBrZXl3b3JkPHVuaXF1ZV9pZCx0cnVlPiApIGNvbnN0ICAgICB7IHJldHVybiBtX2VyYXNlZCA/IG5pbF90OjppbnN0KCkudGVtcGxhdGUgYW55X2Nhc3Q8cmVmX3R5cGU+KCkgOiAgbV92YWx1ZTsgfQotICAgIHJlZl90eXBlICAgICAgICBvcGVyYXRvcltdKCBrZXl3b3JkPHVuaXF1ZV9pZCxmYWxzZT4gKSBjb25zdCAgICB7IHJldHVybiBtX2VyYXNlZCA/IG5pbF90OjppbnN0KCkudGVtcGxhdGUgYW55X2Nhc3Q8cmVmX3R5cGU+KCkgOiAgbV92YWx1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVua25vd25JZD4KLSAgICBuaWxfdCAgICAgICAgICAgb3BlcmF0b3JbXSgga2V5d29yZDxVbmtub3duSWQsZmFsc2U+ICkgY29uc3QgICAgeyByZXR1cm4gbmlsX3Q6Omluc3QoKTsgfQotCi0gICAgYm9vbCAgICAgICAgICAgIGhhcygga2V5d29yZDx1bmlxdWVfaWQsZmFsc2U+ICkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuICFtX2VyYXNlZDsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVua25vd25JZD4KLSAgICBib29sICAgICAgICAgICAgaGFzKCBrZXl3b3JkPFVua25vd25JZCxmYWxzZT4gKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgICAgICAgICAgICBlcmFzZSgga2V5d29yZDx1bmlxdWVfaWQsZmFsc2U+ICkgY29uc3QgICAgICAgICB7IG1fZXJhc2VkID0gdHJ1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVua25vd25JZD4KLSAgICB2b2lkICAgICAgICAgICAgZXJhc2UoIGtleXdvcmQ8VW5rbm93bklkLGZhbHNlPiApIGNvbnN0ICAgICAgICAge30KLQotICAgIC8vIFZpc2l0YXRpb24gc3VwcG9ydAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci0gICAgdm9pZCAgICAgICAgICAgIGFwcGx5X3RvKCBWaXNpdG9yJiBWICkgY29uc3QKLSAgICB7Ci0gICAgICAgIFYuc2V0X3BhcmFtZXRlciggcnR0aTo6dHlwZV9pZDx1bmlxdWVfaWQ+KCksIG1fdmFsdWUgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgcmVmX3R5cGUgICAgICAgIG1fdmFsdWU7Ci0gICAgbXV0YWJsZSBib29sICAgIG1fZXJhc2VkOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICBub19wYXJhbXMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbmZwX2RldGFpbCB7Ci10eXBlZGVmIG5hbWVkX3BhcmFtZXRlcjxjaGFyLCBzdHJ1Y3Qgbm9fcGFyYW1zX3R5cGVfdCxjaGFyPiBub19wYXJhbXNfdHlwZTsKLX0gLy8gbmFtZXNwYWNlIG5mcF9kZXRhaWwKLQotbmFtZXNwYWNlIHsKLW5mcF9kZXRhaWw6Om5vX3BhcmFtc190eXBlIG5vX3BhcmFtcyggJ1wwJyApOwotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAga2V5d29yZCAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSB1bmlxdWVfaWQsIGJvb2wgcmVxdWlyZWQgPSBmYWxzZT4KLXN0cnVjdCBrZXl3b3JkIHsKLSAgICB0eXBlZGVmIHVuaXF1ZV9pZCBpZDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgbmFtZWRfcGFyYW1ldGVyPFQgY29uc3QsdW5pcXVlX2lkPgotICAgIG9wZXJhdG9yPSggVCBjb25zdCYgdCApIGNvbnN0ICAgICAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcjxUIGNvbnN0LHVuaXF1ZV9pZD4oIHQgKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBuYW1lZF9wYXJhbWV0ZXI8VCx1bmlxdWVfaWQ+Ci0gICAgb3BlcmF0b3I9KCBUJiB0ICkgY29uc3QgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8VCx1bmlxdWVfaWQ+KCB0ICk7IH0KLQotICAgIG5hbWVkX3BhcmFtZXRlcjxjaGFyIGNvbnN0Kix1bmlxdWVfaWQsY2hhciBjb25zdCo+Ci0gICAgb3BlcmF0b3I9KCBjaGFyIGNvbnN0KiB0ICkgY29uc3QgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8Y2hhciBjb25zdCosdW5pcXVlX2lkLGNoYXIgY29uc3QqPiggdCApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICB0eXBlZF9rZXl3b3JkICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHVuaXF1ZV9pZCwgYm9vbCByZXF1aXJlZCA9IGZhbHNlPgotc3RydWN0IHR5cGVkX2tleXdvcmQgOiBrZXl3b3JkPHVuaXF1ZV9pZCxyZXF1aXJlZD4gewotICAgIG5hbWVkX3BhcmFtZXRlcjxUIGNvbnN0LHVuaXF1ZV9pZD4KLSAgICBvcGVyYXRvcj0oIFQgY29uc3QmIHQgKSBjb25zdCAgICAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8VCBjb25zdCx1bmlxdWVfaWQ+KCB0ICk7IH0KLQotICAgIG5hbWVkX3BhcmFtZXRlcjxULHVuaXF1ZV9pZD4KLSAgICBvcGVyYXRvcj0oIFQmIHQgKSBjb25zdCAgICAgICAgICAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8VCx1bmlxdWVfaWQ+KCB0ICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIHVuaXF1ZV9pZD4KLXN0cnVjdCB0eXBlZF9rZXl3b3JkPGJvb2wsdW5pcXVlX2lkLGZhbHNlPgotOiBrZXl3b3JkPHVuaXF1ZV9pZCxmYWxzZT4KLSwgbmFtZWRfcGFyYW1ldGVyPGJvb2wsdW5pcXVlX2lkLGJvb2w+IHsKLSAgICB0eXBlZGVmIHVuaXF1ZV9pZCBpZDsKLQotICAgIHR5cGVkX2tleXdvcmQoKSA6IG5hbWVkX3BhcmFtZXRlcjxib29sLHVuaXF1ZV9pZCxib29sPiggdHJ1ZSApIHt9Ci0KLSAgICBuYW1lZF9wYXJhbWV0ZXI8Ym9vbCx1bmlxdWVfaWQsYm9vbD4KLSAgICBvcGVyYXRvciEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyPGJvb2wsdW5pcXVlX2lkLGJvb2w+KCBmYWxzZSApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgb3B0aW9uYWxseV9hc3NpZ24gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotb3B0aW9uYWxseV9hc3NpZ24oIFQmLCBuZnBfZGV0YWlsOjpuaWwgKQotewotICAgIG5mcF9kZXRhaWw6OnJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU291cmNlPgotaW5saW5lIHZvaWQKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoIDB4MzAwMyApICkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSApCi1vcHRpb25hbGx5X2Fzc2lnbiggVCYgdGFyZ2V0LCBTb3VyY2Ugc3JjICkKLSNlbHNlCi1vcHRpb25hbGx5X2Fzc2lnbiggVCYgdGFyZ2V0LCBTb3VyY2UgY29uc3QmIHNyYyApCi0jZW5kaWYKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgdW5pdF90ZXN0OwotCi0gICAgYXNzaWduX29wKCB0YXJnZXQsIHNyYywgc3RhdGljX2Nhc3Q8aW50PigwKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQYXJhbXMsIHR5cGVuYW1lIEtleXdvcmQ+Ci1pbmxpbmUgdm9pZAotb3B0aW9uYWxseV9hc3NpZ24oIFQmIHRhcmdldCwgUGFyYW1zIGNvbnN0JiBwLCBLZXl3b3JkIGsgKQotewotICAgIGlmKCBwLmhhcyhrKSApCi0gICAgICAgIG9wdGlvbmFsbHlfYXNzaWduKCB0YXJnZXQsIHBba10gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgbmZwCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9OQU1FRF9QQVJBTV8wMjI1MDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQ3YWQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIGZhY2lsaXRpZXMgZm9yIGFjY2Vzc2luZyB0eXBlIGluZm9ybWF0aW9uIGF0IHJ1bnRpbWUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUlRUSV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUlRUSV9IUFBfMDYyNjA0R0VSCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgcnR0aSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBydHRpOjp0eXBlX2lkICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBpZF90OwotCi1uYW1lc3BhY2UgcnR0aV9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJ0dGlkX2hvbGRlciB7Ci0gICAgc3RhdGljIGlkX3QgaWQoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGlkX3Q+KCAmaW5zdCgpICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgcnR0aWQge307Ci0KLSAgICBzdGF0aWMgcnR0aWQgY29uc3QmIGluc3QoKSB7IHN0YXRpYyBydHRpZCBzX2luc3Q7ICByZXR1cm4gc19pbnN0OyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBydHRpX2RldGFpbAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgIAotaW5saW5lIGlkX3QKLXR5cGVfaWQoKQotewotICAgIHJldHVybiBydHRpX2RldGFpbDo6cnR0aWRfaG9sZGVyPFQ+OjppZCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1JUVElfU1dJVENIKCB0eXBlX2lkXyApIGlmKCA6Om5kbmJvb3N0OjpydHRpOjppZF90IHN3aXRjaF9ieV9pZCA9IHR5cGVfaWRfICkKLSNkZWZpbmUgTkROQk9PU1RfUlRUSV9DQVNFKCB0eXBlICkgICAgICAgaWYoIHN3aXRjaF9ieV9pZCA9PSA6Om5kbmJvb3N0OjpydHRpOjp0eXBlX2lkPHR5cGU+KCkgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydHRpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9SVFRJX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEyYjI5ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBtb2RlbCBvZiBhY3R1YWwgYXJndW1lbnQgKGJvdGggdHlwZWQgYW5kIGFic3RyYWN0IGludGVyZmFjZSkKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0FSR1VNRU5UX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQVJHVU1FTlRfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcnVudGltZTo6YXJndW1lbnQgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLQotY2xhc3MgYXJndW1lbnQgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgYXJndW1lbnQoIHBhcmFtZXRlciBjb25zdCYgcCwgcnR0aTo6aWRfdCB2YWx1ZV90eXBlICkKLSAgICA6IHBfZm9ybWFsX3BhcmFtZXRlciggcCApCi0gICAgLCBwX3ZhbHVlX3R5cGUoIHZhbHVlX3R5cGUgKQotICAgIHt9Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgdmlydHVhbCAgICAgfmFyZ3VtZW50KCkgIHt9Ci0KLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8cGFyYW1ldGVyIGNvbnN0Jj4gcF9mb3JtYWxfcGFyYW1ldGVyOwotICAgIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8cnR0aTo6aWRfdD4gICAgICAgcF92YWx1ZV90eXBlOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OnR5cGVkX2FyZ3VtZW50ICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgdHlwZWRfYXJndW1lbnQgOiBwdWJsaWMgYXJndW1lbnQgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgdHlwZWRfYXJndW1lbnQoIHBhcmFtZXRlciBjb25zdCYgcCApCi0gICAgOiBhcmd1bWVudCggcCwgcnR0aTo6dHlwZV9pZDxUPigpICkKLSAgICB7fQotICAgIHR5cGVkX2FyZ3VtZW50KCBwYXJhbWV0ZXIgY29uc3QmIHAsIFQgY29uc3QmIHQgKQotICAgIDogYXJndW1lbnQoIHAsIHJ0dGk6OnR5cGVfaWQ8VD4oKSApCi0gICAgLCBwX3ZhbHVlKCB0ICkKLSAgICB7fQotCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8VD4gICAgcF92YWx1ZTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHJ1bnRpbWU6OmFyZ192YWx1ZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUIGNvbnN0JgotYXJnX3ZhbHVlKCBhcmd1bWVudCBjb25zdCYgYXJnXyApCi17Ci0gICAgYXNzZXJ0KCBhcmdfLnBfdmFsdWVfdHlwZSA9PSBydHRpOjp0eXBlX2lkPFQ+KCkgKTsgLy8gZGV0ZWN0IGxvZ2ljIGVycm9yCi0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZWRfYXJndW1lbnQ8VD4gY29uc3QmPiggYXJnXyApLnBfdmFsdWUudmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCYKLWFyZ192YWx1ZSggYXJndW1lbnQmIGFyZ18gKQotewotICAgIGFzc2VydCggYXJnXy5wX3ZhbHVlX3R5cGUgPT0gcnR0aTo6dHlwZV9pZDxUPigpICk7IC8vIGRldGVjdCBsb2dpYyBlcnJvcgotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVkX2FyZ3VtZW50PFQ+Jj4oIGFyZ18gKS5wX3ZhbHVlLnZhbHVlOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQVJHVU1FTlRfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3VtZW50X2ZhY3RvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3VtZW50X2ZhY3RvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGYxZGY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd1bWVudF9mYWN0b3J5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBnZW5lcmljIHR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2dlbmVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9oYW5kbGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsL2FyZ3VtZW50X3ZhbHVlX3VzYWdlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBkZWZhdWx0X3ZhbHVlX2ludGVycHJldGVyICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLXN0cnVjdCBkZWZhdWx0X3ZhbHVlX2ludGVycHJldGVyIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgb3BlcmF0b3IoKSggYXJndl90cmF2ZXJzZXImIHRyLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHZhbHVlICkKLSAgICB7Ci0gICAgICAgIGlmKCBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIHRyLnRva2VuKCksIHZhbHVlLCAwICkgKQotICAgICAgICAgICAgdHIubmV4dF90b2tlbigpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkgOiBwdWJsaWMgYXJndW1lbnRfZmFjdG9yeSB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0eXBlZF9hcmd1bWVudF9mYWN0b3J5KCkKLSAgICA6IG1fdmFsdWVfaW50ZXJwcmV0ZXIoIHJ0X2NsYV9kZXRhaWw6OmRlZmF1bHRfdmFsdWVfaW50ZXJwcmV0ZXIoKSApCi0gICAge30KLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH50eXBlZF9hcmd1bWVudF9mYWN0b3J5KCkge30KLQotICAgIC8vIHByb3BlcnRpZXMgbW9kaWZpY2F0aW9uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG9wdGlvbmFsbHlfYXNzaWduKCBtX3ZhbHVlX2hhbmRsZXIsIG0sIGhhbmRsZXIgKTsKLSAgICAgICAgb3B0aW9uYWxseV9hc3NpZ24oIG1fdmFsdWVfaW50ZXJwcmV0ZXIsIG0sIGludGVycHJldGVyICk7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBkZWZhdWx0X3ZhbHVlICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIW1fdmFsdWVfZ2VuZXJhdG9yLCAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAibXVsdGlwbGUgdmFsdWUgZ2VuZXJhdG9ycyBmb3IgcGFyYW1ldGVyIiApICk7Ci0KLSAgICAgICAgICAgIFQgY29uc3QmIGR2X3JlZiA9IG1bZGVmYXVsdF92YWx1ZV07Ci0gICAgICAgICAgICBtX3ZhbHVlX2dlbmVyYXRvciA9IHJ0X2NsYV9kZXRhaWw6OmNvbnN0X2dlbmVyYXRvcjxUPiggZHZfcmVmICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggbS5oYXMoIGRlZmF1bHRfcmVmZXJfdG8gKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhbV92YWx1ZV9nZW5lcmF0b3IsIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJtdWx0aXBsZSB2YWx1ZSBnZW5lcmF0b3JzIGZvciBwYXJhbWV0ZXIiICkgKTsKLQotICAgICAgICAgICAgY3N0cmluZyByZWZfaWQgPSBtW2RlZmF1bHRfcmVmZXJfdG9dOwotICAgICAgICAgICAgbV92YWx1ZV9nZW5lcmF0b3IgPSBydF9jbGFfZGV0YWlsOjpyZWZfZ2VuZXJhdG9yPFQ+KCByZWZfaWQgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBtLmhhcyggYXNzaWduX3RvICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIW1fdmFsdWVfaGFuZGxlciwgCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIm11bHRpcGxlIHZhbHVlIGhhbmRsZXJzIGZvciBwYXJhbWV0ZXIiICkgKTsKLQotICAgICAgICAgICAgbV92YWx1ZV9oYW5kbGVyID0gcnRfY2xhX2RldGFpbDo6YXNzaWduZXI8VD4oIG1bYXNzaWduX3RvXSApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQXJndW1lbnQgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgYXJndW1lbnRfcHRyIHByb2R1Y2VfdXNpbmcoIHBhcmFtZXRlciYgcCwgYXJndl90cmF2ZXJzZXImIHRyICk7Ci0gICAgdmlydHVhbCBhcmd1bWVudF9wdHIgcHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBwYXJzZXIgY29uc3QmICk7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICAgYXJndW1lbnRfdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKTsKLQotLy8gISEgcHJpdmF0ZT8KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMjxwYXJhbWV0ZXIgY29uc3QmLFQmPiAgICAgICAgICAgICAgICAgICBtX3ZhbHVlX2hhbmRsZXI7Ci0gICAgdW5pdF90ZXN0OjpjYWxsYmFjazI8cGFyc2VyIGNvbnN0JixuZG5ib29zdDo6b3B0aW9uYWw8VD4mPiAgICAgbV92YWx1ZV9nZW5lcmF0b3I7Ci0gICAgdW5pdF90ZXN0OjpjYWxsYmFjazI8YXJndl90cmF2ZXJzZXImLG5kbmJvb3N0OjpvcHRpb25hbDxUPiY+ICAgbV92YWx1ZV9pbnRlcnByZXRlcjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYXJndW1lbnRfcHRyCi10eXBlZF9hcmd1bWVudF9mYWN0b3J5PFQ+Ojpwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciApCi17Ci0gICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotCi0gICAgdHJ5IHsKLSAgICAgICAgbV92YWx1ZV9pbnRlcnByZXRlciggdHIsIHZhbHVlICk7Ci0gICAgfQotICAgIGNhdGNoKCAuLi4gKSB7IC8vICEhIHNob3VsZCB3ZSBkbyB0aGF0PwotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkZhaWwgdG8gcGFyc2UgYXJndW1lbnQgdmFsdWUiICk7Ci0KLSAgICAgICAgaWYoICFwLnBfb3B0aW9uYWxfdmFsdWUgKQotICAgICAgICAgICAgdGhyb3c7Ci0gICAgfQotCi0gICAgYXJndW1lbnRfcHRyIGFjdHVhbF9hcmcgPSBwLmFjdHVhbF9hcmd1bWVudCgpOwotCi0gICAgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCAhIXZhbHVlIHx8IHAucF9vcHRpb25hbF92YWx1ZSwgdHIsIAotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiQXJndW1lbnQgdmFsdWUgbWlzc2luZyBmb3IgcGFyYW1ldGVyICIgKSA8PCBwLmlkXzJfcmVwb3J0KCkgKTsKLQotICAgIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFURV9JTlBVVCggIWFjdHVhbF9hcmcgfHwgcC5wX211bHRpcGxpY2FibGUsIHRyLCAKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIlVuZXhwZWN0ZWQgcmVwZXRpdGlvbiBvZiB0aGUgcGFyYW1ldGVyICIgKSA8PCBwLmlkXzJfcmVwb3J0KCkgKTsKLQotICAgIGlmKCAhIXZhbHVlICYmICEhbV92YWx1ZV9oYW5kbGVyICkKLSAgICAgICAgbV92YWx1ZV9oYW5kbGVyKCBwLCAqdmFsdWUgKTsKLQotICAgIGlmKCAhcC5wX211bHRpcGxpY2FibGUgKQotICAgICAgICBhY3R1YWxfYXJnLnJlc2V0KCBwLnBfb3B0aW9uYWxfdmFsdWUgJiYgKHJ0dGk6OnR5cGVfaWQ8VD4oKSAhPSBydHRpOjp0eXBlX2lkPGJvb2w+KCkpCi0gICAgICAgICAgICA/IHN0YXRpY19jYXN0PGFyZ3VtZW50Kj4obmV3IHR5cGVkX2FyZ3VtZW50PG5kbmJvb3N0OjpvcHRpb25hbDxUPiA+KCBwLCB2YWx1ZSApKQotICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxhcmd1bWVudCo+KG5ldyB0eXBlZF9hcmd1bWVudDxUPiggcCwgKnZhbHVlICkpICk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpsaXN0PG5kbmJvb3N0OjpvcHRpb25hbDxUPiA+IG9wdGlvbmFsX2xpc3Q7Ci0KLSAgICAgICAgaWYoICFhY3R1YWxfYXJnICkKLSAgICAgICAgICAgIGFjdHVhbF9hcmcucmVzZXQoIHAucF9vcHRpb25hbF92YWx1ZSAKLSAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PGFyZ3VtZW50Kj4obmV3IHR5cGVkX2FyZ3VtZW50PG9wdGlvbmFsX2xpc3Q+KCBwICkpCi0gICAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxhcmd1bWVudCo+KG5ldyB0eXBlZF9hcmd1bWVudDxzdGQ6Omxpc3Q8VD4gPiggcCApKSApOwotCi0gICAgICAgIGlmKCBwLnBfb3B0aW9uYWxfdmFsdWUgKSB7Ci0gICAgICAgICAgICBvcHRpb25hbF9saXN0JiB2YWx1ZXMgPSBhcmdfdmFsdWU8b3B0aW9uYWxfbGlzdD4oICphY3R1YWxfYXJnICk7Ci0KLSAgICAgICAgICAgIHZhbHVlcy5wdXNoX2JhY2soIHZhbHVlICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6Omxpc3Q8VD4mIHZhbHVlcyA9IGFyZ192YWx1ZTxzdGQ6Omxpc3Q8VD4gPiggKmFjdHVhbF9hcmcgKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWVzLnB1c2hfYmFjayggKnZhbHVlICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYWN0dWFsX2FyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBhcmd1bWVudF9wdHIgCi10eXBlZF9hcmd1bWVudF9mYWN0b3J5PFQ+Ojpwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIHBhcnNlciBjb25zdCYgcGEgKQotewotICAgIGFyZ3VtZW50X3B0ciBhY3R1YWxfYXJnOwotCi0gICAgaWYoICFtX3ZhbHVlX2dlbmVyYXRvciApCi0gICAgICAgIHJldHVybiBhY3R1YWxfYXJnOwotCi0gICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotICAgIG1fdmFsdWVfZ2VuZXJhdG9yKCBwYSwgdmFsdWUgKTsKLQotICAgIGlmKCAhdmFsdWUgKQotICAgICAgICByZXR1cm4gYWN0dWFsX2FyZzsKLQotICAgIGlmKCAhIW1fdmFsdWVfaGFuZGxlciApCi0gICAgICAgIG1fdmFsdWVfaGFuZGxlciggcCwgKnZhbHVlICk7Ci0KLSAgICBhY3R1YWxfYXJnLnJlc2V0KCBuZXcgdHlwZWRfYXJndW1lbnQ8VD4oIHAsICp2YWx1ZSApICk7Ci0KLSAgICByZXR1cm4gYWN0dWFsX2FyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkCi10eXBlZF9hcmd1bWVudF9mYWN0b3J5PFQ+Ojphcmd1bWVudF91c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApCi17Ci0gICAgcnRfY2xhX2RldGFpbDo6YXJndW1lbnRfdmFsdWVfdXNhZ2UoIGZzLCAwLCByZWludGVycHJldF9jYXN0PFQqPigwKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUxZjdiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBmYWNpbGl0eSB0byBoaWRlIGlucHV0IHRyYXZlcnNpbmcgZGV0YWlscwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uY29weWFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6YXJndl90cmF2ZXJzZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBhcmd2X3RyYXZlcnNlciA6IG5vbmNvcHlhYmxlIHsKLSAgICBjbGFzcyBwYXJzZXI7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBhcmd2X3RyYXZlcnNlcigpOwotCi0gICAgLy8gcHVibGljX3Byb3BlcnRpZXMKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiAgICAgICAgIHBfaWdub3JlX21pc21hdGNoOwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGNoYXJfdHlwZT4gICAgcF9zZXBhcmF0b3I7Ci0KLSAgICAvLyBhcmdjK2FyZ3YgPC0+IGludGVybmFsIGJ1ZmZlciBleGNoYW5nZQotICAgIHZvaWQgICAgICAgICAgICBpbml0KCBpbnQgYXJnYywgY2hhcl90eXBlKiogYXJndiApOwotICAgIHZvaWQgICAgICAgICAgICByZW1haW5kZXIoIGludCYgYXJnYywgY2hhcl90eXBlKiogYXJndiApOwotCi0gICAgLy8gdG9rZW4gYmFzZWQgcGFyc2luZwotICAgIGNzdHJpbmcgICAgICAgICB0b2tlbigpIGNvbnN0OwotICAgIHZvaWQgICAgICAgICAgICBuZXh0X3Rva2VuKCk7Ci0KLSAgICAvLyB3aG9sZSBpbnB1dCBwYXJzaW5nCi0gICAgY3N0cmluZyAgICAgICAgIGlucHV0KCkgY29uc3Q7Ci0gICAgdm9pZCAgICAgICAgICAgIHRyaW0oIHN0ZDo6c2l6ZV90IHNpemUgKTsKLSAgICBib29sICAgICAgICAgICAgbWF0Y2hfZnJvbnQoIGNzdHJpbmcgKTsKLSAgICBib29sICAgICAgICAgICAgbWF0Y2hfZnJvbnQoIGNoYXJfdHlwZSBjICk7Ci0gICAgYm9vbCAgICAgICAgICAgIGVvaSgpIGNvbnN0OwotCi0gICAgLy8gdHJhbnNhY3Rpb24gbG9naWMgc3VwcG9ydAotICAgIHZvaWQgICAgICAgICAgICBjb21taXQoKTsKLSAgICB2b2lkICAgICAgICAgICAgcm9sbGJhY2soKTsKLQotICAgIC8vIGN1cnJlbnQgcG9zaXRpb24gYWNjZXNzOyB1c2VkIHRvIHNhdmUgc29tZSByZWZlcmVuY2UgcG9pbnRzIGluIGlucHV0Ci0gICAgc3RkOjpzaXplX3QgICAgIGlucHV0X3BvcygpIGNvbnN0OwotCi0gICAgLy8gcmV0dXJucyB0cnVlIGlmIG1pc21hdGNoIGRldGVjdGVkIGR1cmluZyBpbnB1dCBwYXJzaW5nIGhhbmRsZWQgc3VjY2Vzc2Z1bGx5Ci0gICAgYm9vbCAgICAgICAgICAgIGhhbmRsZV9taXNtYXRjaCgpOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGRzdHJpbmcgICAgICAgICAgICAgICAgIG1fYnVmZmVyOwotICAgIGNzdHJpbmcgICAgICAgICAgICAgICAgIG1fd29ya19idWZmZXI7Ci0KLSAgICBjc3RyaW5nICAgICAgICAgICAgICAgICBtX3Rva2VuOwotICAgIGNzdHJpbmc6Oml0ZXJhdG9yICAgICAgIG1fY29tbWl0ZWRfZW5kOwotCi0gICAgc2hhcmVkX2FycmF5PGNoYXJfdHlwZT4gbV9yZW1haW5kZXI7Ci0gICAgc3RkOjpzaXplX3QgICAgICAgICAgICAgbV9yZW1haW5kZXJfc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YzA0N2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIGZhY2lsaXR5IHRvIGhpZGUgaW5wdXQgdHJhdmVyc2luZyBkZXRhaWxzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSVBQXzA3MDYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSVBQXzA3MDYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6bWVtY3B5OyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgcnVudGltZTo6Y2xhOjphcmd2X3RyYXZlcnNlciAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORQotYXJndl90cmF2ZXJzZXI6OmFyZ3ZfdHJhdmVyc2VyKCkKLTogcF9pZ25vcmVfbWlzbWF0Y2goIGZhbHNlICksIHBfc2VwYXJhdG9yKCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKSApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6aW5pdCggaW50IGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKQotewotICAgIGZvciggaW50IGluZGV4ID0gMTsgaW5kZXggPCBhcmdjOyArK2luZGV4ICkgewotICAgICAgICBtX2J1ZmZlciArPSBhcmd2W2luZGV4XTsKLSAgICAgICAgaWYoIGluZGV4ICE9IGFyZ2MtMSApCi0gICAgICAgICAgICBtX2J1ZmZlciArPSBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKTsKLSAgICB9Ci0KLSAgICBtX3JlbWFpbmRlci5yZXNldCggbmV3IGNoYXJfdHlwZVttX2J1ZmZlci5zaXplKCkrMV0gKTsKLSAgICBtX3JlbWFpbmRlcl9zaXplICAgID0gMDsKLSAgICBtX3dvcmtfYnVmZmVyICAgICAgID0gbV9idWZmZXI7Ci0gICAgbV9jb21taXRlZF9lbmQgICAgICA9IG1fd29ya19idWZmZXIuYmVnaW4oKTsKLQotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiSW5wdXQgYnVmZmVyOiAiIDw8IG1fYnVmZmVyICk7Ci0KLSAgICBuZXh0X3Rva2VuKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6cmVtYWluZGVyKCBpbnQmIGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKQotewotICAgIGFyZ2MgPSAxOwotICAgIHN0ZDo6c2l6ZV90IHBvcyA9IDA7Ci0gICAgd2hpbGUocG9zIDwgbV9yZW1haW5kZXJfc2l6ZSApIHsKLSAgICAgICAgYXJndlthcmdjKytdID0gbV9yZW1haW5kZXIuZ2V0KCkgKyBwb3M7Ci0KLSAgICAgICAgcG9zID0gc3RkOjpmaW5kKCBtX3JlbWFpbmRlci5nZXQoKSArIHBvcywgbV9yZW1haW5kZXIuZ2V0KCkgKyBtX3JlbWFpbmRlcl9zaXplLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKSApIC0gbV9yZW1haW5kZXIuZ2V0KCk7Ci0gICAgICAgIG1fcmVtYWluZGVyW3BvcysrXSA9IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICdcMCcgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBjc3RyaW5nCi1hcmd2X3RyYXZlcnNlcjo6dG9rZW4oKSBjb25zdAotewotICAgIHJldHVybiBtX3Rva2VuOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYXJndl90cmF2ZXJzZXI6Om5leHRfdG9rZW4oKQotewotICAgIGlmKCBtX3dvcmtfYnVmZmVyLmlzX2VtcHR5KCkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dvcmtfYnVmZmVyLnRyaW1fbGVmdCggbV90b2tlbi5zaXplKCkgKTsgLy8gc2tpcCByZW1haW5kZXIgb2YgY3VycmVudCB0b2tlbgotCi0gICAgaWYoIG1fd29ya19idWZmZXIuc2l6ZSgpICE9IG1fYnVmZmVyLnNpemUoKSApIC8vICEhIGlzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBpZGVudGlmeSBmaXJzdCB0b2tlbgotICAgICAgICBtX3dvcmtfYnVmZmVyLnRyaW1fbGVmdCggMSApOyAvLyBza2lwIHNlcGFyYXRvciBpZiBub3QgZmlyc3QgdG9rZW47Ci0KLSAgICBtX3Rva2VuLmFzc2lnbiggbV93b3JrX2J1ZmZlci5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmZpbmQoIG1fd29ya19idWZmZXIuYmVnaW4oKSwgbV93b3JrX2J1ZmZlci5lbmQoKSwgcF9zZXBhcmF0b3IgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgY3N0cmluZwotYXJndl90cmF2ZXJzZXI6OmlucHV0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93b3JrX2J1ZmZlcjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjp0cmltKCBzdGQ6OnNpemVfdCBzaXplICkKLXsKLSAgICBtX3dvcmtfYnVmZmVyLnRyaW1fbGVmdCggc2l6ZSApOwotCi0gICAgaWYoIHNpemUgPD0gbV90b2tlbi5zaXplKCkgKQotICAgICAgICBtX3Rva2VuLnRyaW1fbGVmdCggc2l6ZSApOwotICAgIGVsc2UgewotICAgICAgICBtX3Rva2VuLmFzc2lnbiggbV93b3JrX2J1ZmZlci5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmaW5kKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksIG1fd29ya19idWZmZXIuZW5kKCksIHBfc2VwYXJhdG9yICkgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1hcmd2X3RyYXZlcnNlcjo6bWF0Y2hfZnJvbnQoIGNzdHJpbmcgc3RyICkKLXsKLSAgICByZXR1cm4gbV93b3JrX2J1ZmZlci5zaXplKCkgPCBzdHIuc2l6ZSgpID8gZmFsc2UgOiBtX3dvcmtfYnVmZmVyLnN1YnN0ciggMCwgc3RyLnNpemUoKSApID09IHN0cjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWFyZ3ZfdHJhdmVyc2VyOjptYXRjaF9mcm9udCggY2hhcl90eXBlIGMgKQotewotICAgIHJldHVybiBmaXJzdF9jaGFyKCBtX3dvcmtfYnVmZmVyICkgPT0gYzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWFyZ3ZfdHJhdmVyc2VyOjplb2koKSBjb25zdAotewotICAgIHJldHVybiBtX3dvcmtfYnVmZmVyLmlzX2VtcHR5KCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6Y29tbWl0KCkKLXsKLSAgICBtX2NvbW1pdGVkX2VuZCA9IG1fd29ya19idWZmZXIuYmVnaW4oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjpyb2xsYmFjaygpCi17Ci0gICAgbV93b3JrX2J1ZmZlci5hc3NpZ24oIG1fY29tbWl0ZWRfZW5kLCBtX3dvcmtfYnVmZmVyLmVuZCgpICk7Ci0gICAgbV90b2tlbi5hc3NpZ24oIG1fd29ya19idWZmZXIuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpmaW5kKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksIG1fd29ya19idWZmZXIuZW5kKCksIHBfc2VwYXJhdG9yICkgKTsKLQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgc3RkOjpzaXplX3QKLWFyZ3ZfdHJhdmVyc2VyOjppbnB1dF9wb3MoKSBjb25zdAotewotICAgIHJldHVybiBtX3dvcmtfYnVmZmVyLmJlZ2luKCkgLSBtX2NvbW1pdGVkX2VuZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWFyZ3ZfdHJhdmVyc2VyOjpoYW5kbGVfbWlzbWF0Y2goKQotewotICAgIGlmKCAhcF9pZ25vcmVfbWlzbWF0Y2ggKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGQ6Om1lbWNweSggbV9yZW1haW5kZXIuZ2V0KCkgKyBtX3JlbWFpbmRlcl9zaXplLCB0b2tlbigpLmJlZ2luKCksIHRva2VuKCkuc2l6ZSgpICk7Ci0gICAgbV9yZW1haW5kZXJfc2l6ZSArPSB0b2tlbigpLnNpemUoKTsKLSAgICBtX3JlbWFpbmRlclttX3JlbWFpbmRlcl9zaXplKytdID0gcF9zZXBhcmF0b3I7Ci0KLSAgICBuZXh0X3Rva2VuKCk7Ci0gICAgY29tbWl0KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0lQUF8wNzA2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9iYXNpY19wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Jhc2ljX3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZWMyYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Jhc2ljX3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBnZW5lcmljIGN1c3RvbSBwYXJhbWV0ZXIgZ2VuZXJhdG9yCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQkFTSUNfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0JBU0lDX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3R5cGVkX3BhcmFtZXRlci5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgcnVudGltZTo6Y2xhOjpiYXNpY19wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJZFBvbGljeT4KLWNsYXNzIGJhc2ljX3BhcmFtZXRlciA6IHByaXZhdGUgYmFzZV9mcm9tX21lbWJlcjxJZFBvbGljeT4sIHB1YmxpYyB0eXBlZF9wYXJhbWV0ZXI8VD4gewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGV4cGxpY2l0ICAgIGJhc2ljX3BhcmFtZXRlciggY3N0cmluZyBuICkgCi0gICAgOiBiYXNlX2Zyb21fbWVtYmVyPElkUG9saWN5PigpCi0gICAgLCB0eXBlZF9wYXJhbWV0ZXI8VD4oIGJhc2VfZnJvbV9tZW1iZXI8SWRQb2xpY3k+OjptZW1iZXIgKQotICAgIHsKLSAgICAgICAgdGhpcy0+YWNjZXB0X21vZGlmaWVyKCBuYW1lID0gbiApOwotICAgIH0KLQotICAgIC8vIHBhcmFtZXRlciBwcm9wZXJ0aWVzIG1vZGlmaWNhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgdHlwZWRfcGFyYW1ldGVyPFQ+OjphY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICBiYXNlX2Zyb21fbWVtYmVyPElkUG9saWN5Pjo6bWVtYmVyLmFjY2VwdF9tb2RpZmllciggbSApOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNX0dFTkVSQVRPUlMoIHBhcmFtX3R5cGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBzaGFyZWRfcHRyPHBhcmFtX3R5cGUgIyMgX3Q8VD4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXBhcmFtX3R5cGUoIGNzdHJpbmcgbmFtZSA9IGNzdHJpbmcoKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxwYXJhbV90eXBlICMjIF90PFQ+ID4oIG5ldyBwYXJhbV90eXBlICMjIF90PFQ+KCBuYW1lICkgKTsgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBzaGFyZWRfcHRyPHBhcmFtX3R5cGUgIyMgX3Q8Y3N0cmluZz4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXBhcmFtX3R5cGUoIGNzdHJpbmcgbmFtZSA9IGNzdHJpbmcoKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxwYXJhbV90eXBlICMjIF90PGNzdHJpbmc+ID4oIG5ldyBwYXJhbV90eXBlICMjIF90PGNzdHJpbmc+KCBuYW1lICkgKTsgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0JBU0lDX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5YWJjYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBwYXJhbWV0ZXIgd2l0aCBzaW5nbGUgY2hhciBuYW1lCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYmFzaWNfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgY2hhcl9uYW1lX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBjaGFyX25hbWVfcG9saWN5IDogcHVibGljIGJhc2ljX25hbWluZ19wb2xpY3kgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgY2hhcl9uYW1lX3BvbGljeSgpOwotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwgfmNoYXJfbmFtZV9wb2xpY3koKSB7fQotCi0gICAgLy8gcG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICBjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmICkgY29uc3Q7Ci0KLSAgICAvLyBBY2NlcHQgbW9kaWZpZXIKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgICAgICAgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBiYXNpY19uYW1pbmdfcG9saWN5OjphY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggcF9uYW1lLT5zaXplKCkgPD0gMSwgIkludmFsaWQgcGFyYW1ldGVyIG5hbWUgIiAgPDwgcF9uYW1lICk7Ci0gICAgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6Y2hhcl9wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgY2hhcl9wYXJhbWV0ZXJfdCA6IHB1YmxpYyBiYXNpY19wYXJhbWV0ZXI8VCxjaGFyX25hbWVfcG9saWN5PiB7Ci0gICAgdHlwZWRlZiBiYXNpY19wYXJhbWV0ZXI8VCxjaGFyX25hbWVfcG9saWN5PiBiYXNlOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGV4cGxpY2l0ICAgIGNoYXJfcGFyYW1ldGVyX3QoIGNoYXJfdHlwZSBuYW1lICkgOiBiYXNlKCBjc3RyaW5nKCAmbmFtZSwgMSApICkge30KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc2hhcmVkX3B0cjxjaGFyX3BhcmFtZXRlcl90PFQ+ID4KLWNoYXJfcGFyYW1ldGVyKCBjaGFyX3R5cGUgbmFtZSApCi17Ci0gICAgcmV0dXJuIHNoYXJlZF9wdHI8Y2hhcl9wYXJhbWV0ZXJfdDxUPiA+KCBuZXcgY2hhcl9wYXJhbWV0ZXJfdDxUPiggbmFtZSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSBzaGFyZWRfcHRyPGNoYXJfcGFyYW1ldGVyX3Q8Y3N0cmluZz4gPgotY2hhcl9wYXJhbWV0ZXIoIGNoYXJfdHlwZSBuYW1lICkKLXsKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxjaGFyX3BhcmFtZXRlcl90PGNzdHJpbmc+ID4oIG5ldyBjaGFyX3BhcmFtZXRlcl90PGNzdHJpbmc+KCBuYW1lICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IxZGI2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtb2RlbCBvZiBwYXJhbWV0ZXIgd2l0aCBzaW5nbGUgY2hhciBuYW1lCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgY2hhcl9uYW1lX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgCi1jaGFyX25hbWVfcG9saWN5OjpjaGFyX25hbWVfcG9saWN5KCkKLTogYmFzaWNfbmFtaW5nX3BvbGljeSggcnR0aTo6dHlwZV9pZDxjaGFyX25hbWVfcG9saWN5PigpICkKLXsKLSAgICBhc3NpZ25fb3AoIHBfcHJlZml4LnZhbHVlLCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICItIiApLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1jaGFyX25hbWVfcG9saWN5Ojpjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmIGlkICkgY29uc3QKLXsKLSAgICByZXR1cm4gaWQucF90eXBlX2lkID09IHBfdHlwZV9pZCAmJiAKLSAgICAgICAgICAgcF9uYW1lID09IHN0YXRpY19jYXN0PGNoYXJfbmFtZV9wb2xpY3kgY29uc3QmPiggaWQgKS5wX25hbWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsL2FyZ3VtZW50X3ZhbHVlX3VzYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kZXRhaWwvYXJndW1lbnRfdmFsdWVfdXNhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODA1MGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kZXRhaWwvYXJndW1lbnRfdmFsdWVfdXNhZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQotLy8gIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KLS8vICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHksCi0vLyAgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KLSAgCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBhcmd1bWVudCB1c2FnZSBwcmludGluZyBoZWxwZXJzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfVkFMVUVfVVNBR0VfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfVkFMVUVfVVNBR0VfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotCi0vLyBTVEwKLS8vICEhIGNhbiB3ZSBlbGltaW5hdGUgdGhlc2UgaW5jbHVkZXM/Ci0jaW5jbHVkZSA8bGlzdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBhcmd1bWVudF92YWx1ZV91c2FnZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gZ2VuZXJpYyBjYXNlCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLWFyZ3VtZW50X3ZhbHVlX3VzYWdlKCBmb3JtYXRfc3RyZWFtJiBmcywgbG9uZywgVCogPSAwICkKLXsKLSAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICI8dmFsdWU+IiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgbGlzdCBvZiB2YWx1ZXMKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotYXJndW1lbnRfdmFsdWVfdXNhZ2UoIGZvcm1hdF9zdHJlYW0mIGZzLCBpbnQsIHN0ZDo6bGlzdDxUPiogPSAwICkKLXsKLSAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICIoPHZhbHVlMT4sIC4uLiwgPHZhbHVlTj4pIiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgdHlwZSBib29sCi1pbmxpbmUgdm9pZAotYXJndW1lbnRfdmFsdWVfdXNhZ2UoIGZvcm1hdF9zdHJlYW0mIGZzLCAgaW50LCBib29sKiA9IDAgKQotewotICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggInllc3x5fG5vfG4iICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX1ZBTFVFX1VTQUdFX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM4YzAwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIG1vZGVsIG9mIGdlbmVyaWMgcGFyYW1ldGVyIHdpdGggZHVhbCBuYW1pbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGR1YWxfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgZHVhbF9uYW1lX3BvbGljeSA6IHB1YmxpYyBkdWFsX2lkX3BvbGljeTxkdWFsX25hbWVfcG9saWN5LHN0cmluZ19uYW1lX3BvbGljeSxjaGFyX25hbWVfcG9saWN5PiB7Ci1wdWJsaWM6Ci0gICAgZHVhbF9uYW1lX3BvbGljeSgpOwotCi0gICAgLy8gQWNjZXB0IG1vZGlmaWVyCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGlmKCBtLmhhcyggcHJlZml4ICkgKSB7Ci0gICAgICAgICAgICBzZXRfcHJlZml4KCBtW3ByZWZpeF0gKTsKLSAgICAgICAgICAgIG0uZXJhc2UoIHByZWZpeCApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBuYW1lICkgKSB7Ci0gICAgICAgICAgICBzZXRfbmFtZSggbVtuYW1lXSApOwotICAgICAgICAgICAgbS5lcmFzZSggbmFtZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBzZXBhcmF0b3IgKSApIHsKLSAgICAgICAgICAgIHNldF9zZXBhcmF0b3IoIG1bc2VwYXJhdG9yXSApOwotICAgICAgICAgICAgbS5lcmFzZSggc2VwYXJhdG9yICk7Ci0gICAgICAgIH0KLQotICAgICAgICBkdWFsX2lkX3BvbGljeTxkdWFsX25hbWVfcG9saWN5LHN0cmluZ19uYW1lX3BvbGljeSxjaGFyX25hbWVfcG9saWN5Pjo6YWNjZXB0X21vZGlmaWVyKCBtICk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICB2b2lkICAgIHNldF9wcmVmaXgoIGNzdHJpbmcgKTsKLSAgICB2b2lkICAgIHNldF9uYW1lKCBjc3RyaW5nICk7Ci0gICAgdm9pZCAgICBzZXRfc2VwYXJhdG9yKCBjc3RyaW5nICk7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgcnVudGltZTo6Y2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBkdWFsX25hbWVfcGFyYW1ldGVyX3QgOiBwdWJsaWMgYmFzaWNfcGFyYW1ldGVyPFQsZHVhbF9uYW1lX3BvbGljeT4gewotICAgIHR5cGVkZWYgYmFzaWNfcGFyYW1ldGVyPFQsZHVhbF9uYW1lX3BvbGljeT4gYmFzZTsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBleHBsaWNpdCAgICBkdWFsX25hbWVfcGFyYW1ldGVyX3QoIGNzdHJpbmcgbmFtZSApIDogYmFzZSggbmFtZSApIHt9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1fR0VORVJBVE9SUyggZHVhbF9uYW1lX3BhcmFtZXRlciApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNhZjM4Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIG1vZGVsIG9mIGdlbmVyaWMgcGFyYW1ldGVyIHdpdGggZHVhbCBuYW1pbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgZHVhbF9uYW1lX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgCi1kdWFsX25hbWVfcG9saWN5OjpkdWFsX25hbWVfcG9saWN5KCkKLXsKLSAgICBtX3ByaW1hcnkuYWNjZXB0X21vZGlmaWVyKCBwcmVmaXggPSBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICItLSIgKSApOwotICAgIG1fc2Vjb25kYXJ5LmFjY2VwdF9tb2RpZmllciggcHJlZml4ID0gTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiLSIgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIHZvaWQKLXNwbGl0KCBzdHJpbmdfbmFtZV9wb2xpY3kmIHNucCwgY2hhcl9uYW1lX3BvbGljeSYgY25wLCBjc3RyaW5nIHNyYywgSyBjb25zdCYgayApCi17Ci0gICAgY3N0cmluZzo6aXRlcmF0b3Igc2VwID0gc3RkOjpmaW5kKCBzcmMuYmVnaW4oKSwgc3JjLmVuZCgpLCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnfCcgKSApOwotICAgIAotICAgIGlmKCBzZXAgIT0gc3JjLmJlZ2luKCkgKQotICAgICAgICBzbnAuYWNjZXB0X21vZGlmaWVyKCBrID0gY3N0cmluZyggc3JjLmJlZ2luKCksIHNlcCApICk7Ci0KLSAgICBpZiggc2VwICE9IHNyYy5lbmQoKSApCi0gICAgICAgIGNucC5hY2NlcHRfbW9kaWZpZXIoIGsgPSBjc3RyaW5nKCBzZXArMSwgc3JjLmVuZCgpICkgKTsKLX0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWR1YWxfbmFtZV9wb2xpY3k6OnNldF9wcmVmaXgoIGNzdHJpbmcgc3JjICkKLXsKLSAgICBzcGxpdCggbV9wcmltYXJ5LCBtX3NlY29uZGFyeSwgc3JjLCBwcmVmaXggKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWR1YWxfbmFtZV9wb2xpY3k6OnNldF9uYW1lKCBjc3RyaW5nIHNyYyApCi17Ci0gICAgc3BsaXQoIG1fcHJpbWFyeSwgbV9zZWNvbmRhcnksIHNyYywgbmFtZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotZHVhbF9uYW1lX3BvbGljeTo6c2V0X3NlcGFyYXRvciggY3N0cmluZyBzcmMgKQotewotICAgIHNwbGl0KCBtX3ByaW1hcnksIG1fc2Vjb25kYXJ5LCBzcmMsIHNlcGFyYXRvciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfRFVBTF9OQU1FX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjIxODA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY2xhIHN1YnN5c3RlbSBmb3J3YXJkIGRlY2xhcmF0aW9ucwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0ZXRF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9GV0RfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLWNsYXNzIHBhcnNlcjsKLWNsYXNzIHBhcmFtZXRlcjsKLXR5cGVkZWYgc2hhcmVkX3B0cjxwYXJhbWV0ZXI+IHBhcmFtZXRlcl9wdHI7Ci1jbGFzcyBuYW1pbmdfcG9saWN5OwotdHlwZWRlZiBzaGFyZWRfcHRyPG5hbWluZ19wb2xpY3k+IG5hbWluZ19wb2xpY3lfcHRyOwotY2xhc3MgYXJndl90cmF2ZXJzZXI7Ci0KLW5hbWVzcGFjZSBydF9jbGFfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgY29uc3RfZ2VuZXJhdG9yOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgcmVmX2dlbmVyYXRvcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgYXNzaWduZXI7Ci0KLWNsYXNzIG5hbWVkX3BhcmFtZXRlcl9iYXNlOwotY2xhc3MgcG9zaXRpb25hbF9wYXJhbWV0ZXJfYmFzZTsKLQotfSAvLyBuYW1lc3BhY2UgcnRfY2xhX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfRldEX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNTg3YjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNvbWUgZ2VuZXJpYyBpZGVudGlmaWNhdGlvbiBwb2xpY2llcyBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2lkX3BvbGljeS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgbmFtaW5nX3BvbGljeV9iYXNlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gbW9kZWw6IDxwcmVmaXg+IDxuYW1lPiA8c2VwYXJ0b3I+Ci0KLWNsYXNzIGJhc2ljX25hbWluZ19wb2xpY3kgOiBwdWJsaWMgaWRlbnRpZmljYXRpb25fcG9saWN5IHsKLXB1YmxpYzoKLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGRzdHJpbmc+ICAgIHBfcHJlZml4OwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGRzdHJpbmc+ICAgIHBfbmFtZTsKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxkc3RyaW5nPiAgICBwX3NlcGFyYXRvcjsKLQotICAgIC8vIFBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgcmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0ICAgICAgIHsgcmV0dXJuIHBfbmFtZSA9PSBuYW1lOyB9Ci0gICAgdmlydHVhbCBjc3RyaW5nIGlkXzJfcmVwb3J0KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBwX25hbWUuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hpbmcoIHBhcmFtZXRlciBjb25zdCYgcCwgYXJndl90cmF2ZXJzZXImIHRyLCBib29sIHByaW1hcnkgKSBjb25zdDsKLQotICAgIC8vIEFjY2VwdCBtb2RpZmllcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIHBfcHJlZml4LnZhbHVlLCAgICBtLCBwcmVmaXggKTsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggcF9uYW1lLnZhbHVlLCAgICAgIG0sIG5hbWUgKTsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggcF9zZXBhcmF0b3IudmFsdWUsIG0sIHNlcGFyYXRvciApOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IGJhc2ljX25hbWluZ19wb2xpY3koIHJ0dGk6OmlkX3QgZHluX3R5cGUgKQotICAgIDogaWRlbnRpZmljYXRpb25fcG9saWN5KCBkeW5fdHlwZSApCi0gICAge30KLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH5iYXNpY19uYW1pbmdfcG9saWN5KCkge30KLQotICAgIC8vIE5hbWluZyBwb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIG1hdGNoX3ByZWZpeCggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sICAgIG1hdGNoX25hbWUoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaF9zZXBhcmF0b3IoIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBvcHRpb25hbF92YWx1ZSApIGNvbnN0OwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBkdWFsX2lkX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb3N0RGVyaXZlZCx0eXBlbmFtZSBQcmltYXJ5SWQsdHlwZW5hbWUgU2Vjb25kSWQ+Ci1jbGFzcyBkdWFsX2lkX3BvbGljeSA6IHB1YmxpYyBpZGVudGlmaWNhdGlvbl9wb2xpY3kgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZHVhbF9pZF9wb2xpY3koKQotICAgIDogaWRlbnRpZmljYXRpb25fcG9saWN5KCBydHRpOjp0eXBlX2lkPE1vc3REZXJpdmVkPigpICkKLSAgICAsIG1fcHJpbWFyeSgpCi0gICAgLCBtX3NlY29uZGFyeSgpCi0gICAge30KLQotICAgIC8vIFBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgcmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmltYXJ5LnJlc3BvbmRzX3RvKCBuYW1lICkgfHwgbV9zZWNvbmRhcnkucmVzcG9uZHNfdG8oIG5hbWUgKTsKLSAgICB9Ci0gICAgdmlydHVhbCBib29sICAgIGNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgaWRfcCApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaWRfcC5jb25mbGljdF93aXRoKCBtX3ByaW1hcnkgKSB8fCBpZF9wLmNvbmZsaWN0X3dpdGgoIG1fc2Vjb25kYXJ5ICk7Ci0gICAgfQotICAgIHZpcnR1YWwgY3N0cmluZyBpZF8yX3JlcG9ydCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmltYXJ5LmlkXzJfcmVwb3J0KCk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCAgICB1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0Ci0gICAgewotICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAneycgKTsKLSAgICAgICAgbV9wcmltYXJ5LnVzYWdlX2luZm8oIGZzICk7Ci0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICd8JyApOwotICAgICAgICBtX3NlY29uZGFyeS51c2FnZV9pbmZvKCBmcyApOwotICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnfScgKTsKLSAgICB9Ci0gICAgdmlydHVhbCBib29sICAgIG1hdGNoaW5nKCBwYXJhbWV0ZXIgY29uc3QmIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBwcmltYXJ5ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ByaW1hcnkubWF0Y2hpbmcoIHAsIHRyLCBwcmltYXJ5ICkgfHwgbV9zZWNvbmRhcnkubWF0Y2hpbmcoIHAsIHRyLCBwcmltYXJ5ICk7Ci0gICAgfQotCi0gICAgLy8gQWNjZXB0IG1vZGlmaWVyCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG1fcHJpbWFyeS5hY2NlcHRfbW9kaWZpZXIoIG0gKTsKLSAgICAgICAgbV9zZWNvbmRhcnkuYWNjZXB0X21vZGlmaWVyKCBtICk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTCB+ZHVhbF9pZF9wb2xpY3koKSB7fQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgUHJpbWFyeUlkICAgICAgIG1fcHJpbWFyeTsKLSAgICBTZWNvbmRJZCAgICAgICAgbV9zZWNvbmRhcnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDlhNDYyZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzb21lIGdlbmVyaWMgaWRlbnRpZmljYXRpb24gcG9saWNpZXMgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBiYXNpY19uYW1pbmdfcG9saWN5ICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYmFzaWNfbmFtaW5nX3BvbGljeTo6dXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSBjb25zdAotewotICAgIGZzIDw8IHBfcHJlZml4IDw8IHBfbmFtZSA8PCBwX3NlcGFyYXRvcjsKLQotICAgIGlmKCBwX3NlcGFyYXRvci0+ZW1wdHkoKSApCi0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcgJyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hfcHJlZml4KCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdAotewotICAgIGlmKCAhdHIubWF0Y2hfZnJvbnQoIHBfcHJlZml4LmdldCgpICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0ci50cmltKCBwX3ByZWZpeC0+c2l6ZSgpICk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hfbmFtZSggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3QKLXsKLSAgICBpZiggIXRyLm1hdGNoX2Zyb250KCBwX25hbWUuZ2V0KCkgKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRyLnRyaW0oIHBfbmFtZS0+c2l6ZSgpICk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hfc2VwYXJhdG9yKCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgb3B0aW9uYWxfdmFsdWUgKSBjb25zdAotewotICAgIGlmKCBwX3NlcGFyYXRvci0+ZW1wdHkoKSApIHsKLSAgICAgICAgaWYoICF0ci50b2tlbigpLmlzX2VtcHR5KCkgKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHRyLnRyaW0oIDEgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmKCAhdHIubWF0Y2hfZnJvbnQoIHBfc2VwYXJhdG9yLmdldCgpICkgKSB7Ci0gICAgICAgICAgICAvLyBpZiBwYXJhbWV0ZXIgaGFzIG9wdGlvbmFsIHZhbHVlIHNlcGFyYXRvciBpcyBvcHRpb25hbCBhcyB3ZWxsCi0gICAgICAgICAgICBpZiggb3B0aW9uYWxfdmFsdWUgJiYgKCB0ci5lb2koKSB8fCB0ci5tYXRjaF9mcm9udCggJyAnICkgKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRyLnRyaW0oIHBfc2VwYXJhdG9yLT5zaXplKCkgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWJhc2ljX25hbWluZ19wb2xpY3k6Om1hdGNoaW5nKCBwYXJhbWV0ZXIgY29uc3QmIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCApIGNvbnN0Ci17Ci0gICAgaWYoICFtYXRjaF9wcmVmaXgoIHRyICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgIGlmKCAhbWF0Y2hfbmFtZSggdHIgKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmKCAhbWF0Y2hfc2VwYXJhdG9yKCB0ciwgcC5wX29wdGlvbmFsX3ZhbHVlICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOTBiYjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2FyZ3VtZW50X2ZhY3RvcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBpbnRlcmZhY2UgZm9yIGFyZ3VtZW50X2ZhY3RvcnkKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0lGQUNFX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBhcmd1bWVudF9mYWN0b3J5ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIGFub3RoZXIgbmFtZSBjYW4gYmUgYXJndW1lbnQgcHJvZHVjdGlvbiBwb2xpY3kKLQotY2xhc3MgYXJndW1lbnRfZmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgLy8gQXJndW1lbnQgZmFjdG9yeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGFyZ3VtZW50X3B0ciBwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciApID0gMDsgIC8vLyBwcm9kdWNlIGFyZ3VtZW50IGJhc2VkIG9uIGlucHV0Ci0gICAgdmlydHVhbCBhcmd1bWVudF9wdHIgcHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBwYXJzZXIgY29uc3QmICkgICAgICA9IDA7ICAvLy8gcHJvZHVjZSBhcmd1bWVudCBiYXNlZCBvbiBpbnRlcm5hbCBnZW5lcmF0b3IgYW5kL29yIHZhbHVlcyBvZiBvdGhlciBwYXJhbWV0ZXJzCi0gICAgdmlydHVhbCB2b2lkICAgICAgICAgYXJndW1lbnRfdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSAgICAgICAgICA9IDA7ICAvLy8gYXJndW1lbnQgdmFsdWUgZm9ybWF0IGluZm9ybWF0aW9uCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+YXJndW1lbnRfZmFjdG9yeSgpIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfSUZBQ0VfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvaWRfcG9saWN5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9pZF9wb2xpY3kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmEwZDBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9pZF9wb2xpY3kuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgaW50ZXJmYWNlIGZvciBpZGVudGlmaWNhdGlvbl9wb2xpY3kKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfSUZBQ0VfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgaWRlbnRpZmljYXRpb25fcG9saWN5ICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0KLWNsYXNzIGlkZW50aWZpY2F0aW9uX3BvbGljeSB7Ci1wdWJsaWM6Ci0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxydHRpOjppZF90PiAgICBwX3R5cGVfaWQ7Ci0KLSAgICAvLyBQb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIHJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjc3RyaW5nIGlkXzJfcmVwb3J0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICB1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hpbmcoIHBhcmFtZXRlciBjb25zdCYgcCwgYXJndl90cmF2ZXJzZXImIHRyLCBib29sIHByaW1hcnkgKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgICAgY29uZmxpY3Rfd2l0aCggaWRlbnRpZmljYXRpb25fcG9saWN5IGNvbnN0JiApIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgIGlkZW50aWZpY2F0aW9uX3BvbGljeSggcnR0aTo6aWRfdCBkeW5fdHlwZSApCi0gICAgOiBwX3R5cGVfaWQoIGR5bl90eXBlICkKLSAgICB7fQotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfmlkZW50aWZpY2F0aW9uX3BvbGljeSgpIHt9Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MmU0MDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHBhcmFtZXRlciBtb2RpZmllcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgbW9kaWZpZXJzICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3Qgb3B0aW9uYWxfdD4gICAgICAgICAgICAgIG9wdGlvbmFsX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLG9wdGlvbmFsX3QsYm9vbD4gICAgICAgICAgICAgIG9wdGlvbmFsKCB0cnVlICk7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3QgcmVxdWlyZWRfdD4gICAgICAgICAgICAgIHJlcXVpcmVkX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLHJlcXVpcmVkX3QsYm9vbD4gICAgICAgICAgICAgIHJlcXVpcmVkKCB0cnVlICk7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3QgbXVsdGlwbGljYWJsZV90PiAgICAgICAgIG11bHRpcGxpY2FibGVfbTsKLW5mcDo6bmFtZWRfcGFyYW1ldGVyPGJvb2wsbXVsdGlwbGljYWJsZV90LGJvb2w+ICAgICAgICAgbXVsdGlwbGljYWJsZSggdHJ1ZSApOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IGd1ZXNzX25hbWVfdD4gICAgICAgICAgICBndWVzc19uYW1lX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLGd1ZXNzX25hbWVfdCxib29sPiAgICAgICAgICAgIGd1ZXNzX25hbWUoIHRydWUgKTsKLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCBpZ25vcmVfbWlzbWF0Y2hfdD4gICAgICAgaWdub3JlX21pc21hdGNoX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLGlnbm9yZV9taXNtYXRjaF90LGJvb2w+ICAgICAgIGlnbm9yZV9taXNtYXRjaCggdHJ1ZSApOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IG9wdGlvbmFsX3ZhbHVlX3Q+ICAgICAgICBvcHRpb25hbF92YWx1ZV9tOwotbmZwOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbCxvcHRpb25hbF92YWx1ZV90LGJvb2w+ICAgICAgICBvcHRpb25hbF92YWx1ZSggdHJ1ZSApOwotCi1uZnA6OnR5cGVkX2tleXdvcmQ8Y2hhcl90eXBlLHN0cnVjdCBpbnB1dF9zZXBhcmF0b3JfdD4gIGlucHV0X3NlcGFyYXRvcjsKLW5mcDo6dHlwZWRfa2V5d29yZDxjc3RyaW5nLHN0cnVjdCBwcmVmaXhfdD4gICAgICAgICAgICAgcHJlZml4OwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IG5hbWVfdD4gICAgICAgICAgICAgICBuYW1lOwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IHNlcGFyYXRvcl90PiAgICAgICAgICBzZXBhcmF0b3I7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3QgZGVzY3JpcHRpb25fdD4gICAgICAgIGRlc2NyaXB0aW9uOwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IHJlZmVyX3RvX3Q+ICAgICAgICAgICBkZWZhdWx0X3JlZmVyX3RvOwotCi1uZnA6OmtleXdvcmQ8c3RydWN0IGRlZmF1bHRfdmFsdWVfdD4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdmFsdWU7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGhhbmRsZXJfdD4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGludGVycHJldGVyX3Q+ICAgICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyOwotbmZwOjprZXl3b3JkPHN0cnVjdCBhc3NpZ25fdG9fdD4gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25fdG87Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTYwZjc5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBuYW1lZCBwYXJhbWV0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYmFzaWNfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBzdHJpbmdfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzdHJpbmdfbmFtZV9wb2xpY3kgOiBwdWJsaWMgYmFzaWNfbmFtaW5nX3BvbGljeSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBzdHJpbmdfbmFtZV9wb2xpY3koKTsKLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH5zdHJpbmdfbmFtZV9wb2xpY3koKSB7fQotCi0gICAgLy8gcG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICByZXNwb25kc190byggY3N0cmluZyBuYW1lICkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sICAgIGNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgKSBjb25zdDsKLQotICAgIC8vIEFjY2VwdCBtb2RpZmllcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGJhc2ljX25hbWluZ19wb2xpY3k6OmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgICAgIGlmKCBtLmhhcyggZ3Vlc3NfbmFtZV9tICkgKQotICAgICAgICAgICAgbV9ndWVzc19uYW1lID0gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gTmFtaW5nIHBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hfbmFtZSggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3Q7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBib29sICAgICAgICAgICAgbV9ndWVzc19uYW1lOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgcnVudGltZTo6Y2xhOjpuYW1lZF9wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgbmFtZWRfcGFyYW1ldGVyX3QgOiBwdWJsaWMgYmFzaWNfcGFyYW1ldGVyPFQsc3RyaW5nX25hbWVfcG9saWN5PiB7Ci0gICAgdHlwZWRlZiBiYXNpY19wYXJhbWV0ZXI8VCxzdHJpbmdfbmFtZV9wb2xpY3k+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgZXhwbGljaXQgICAgbmFtZWRfcGFyYW1ldGVyX3QoIGNzdHJpbmcgbmFtZSApIDogYmFzZSggbmFtZSApIHt9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1fR0VORVJBVE9SUyggbmFtZWRfcGFyYW1ldGVyICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MjZlZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtb2RlbCBvZiBuYW1lZCBwYXJhbWV0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHN0cmluZ19uYW1lX3BvbGljeSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSAKLXN0cmluZ19uYW1lX3BvbGljeTo6c3RyaW5nX25hbWVfcG9saWN5KCkKLTogYmFzaWNfbmFtaW5nX3BvbGljeSggcnR0aTo6dHlwZV9pZDxzdHJpbmdfbmFtZV9wb2xpY3k+KCkgKQotLCBtX2d1ZXNzX25hbWUoIGZhbHNlICkKLXsKLSAgICBhc3NpZ25fb3AoIHBfcHJlZml4LnZhbHVlLCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICItIiApLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1zdHJpbmdfbmFtZV9wb2xpY3k6OnJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdAotewotICAgIHN0ZDo6cGFpcjxjc3RyaW5nOjppdGVyYXRvcixkc3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbW1fcG9zOwotCi0gICAgbW1fcG9zID0gdW5pdF90ZXN0OjptaXNtYXRjaCggbmFtZS5iZWdpbigpLCBuYW1lLmVuZCgpLCBwX25hbWUtPmJlZ2luKCksIHBfbmFtZS0+ZW5kKCkgKTsKLQotICAgIHJldHVybiBtbV9wb3MuZmlyc3QgPT0gbmFtZS5lbmQoKSAmJiAobV9ndWVzc19uYW1lIHx8IChtbV9wb3Muc2Vjb25kID09IHBfbmFtZS0+ZW5kKCkpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1zdHJpbmdfbmFtZV9wb2xpY3k6OmNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgaWQgKSBjb25zdAotewotICAgIGlmKCBpZC5wX3R5cGVfaWQgPT0gcF90eXBlX2lkICkgewotICAgICAgICBzdHJpbmdfbmFtZV9wb2xpY3kgY29uc3QmIHNucCA9IHN0YXRpY19jYXN0PHN0cmluZ19uYW1lX3BvbGljeSBjb25zdCY+KCBpZCApOwotCi0gICAgICAgIGlmKCBwX25hbWUtPmVtcHR5KCkgfHwgc25wLnBfbmFtZS0+ZW1wdHkoKSApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYoIHBfcHJlZml4ICE9IHNucC5wX3ByZWZpeCApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc3RkOjpwYWlyPGRzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yLGRzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtbV9wb3MgPQotICAgICAgICAgICAgdW5pdF90ZXN0OjptaXNtYXRjaCggcF9uYW1lLT5iZWdpbigpLCBwX25hbWUtPmVuZCgpLCBzbnAucF9uYW1lLT5iZWdpbigpLCBzbnAucF9uYW1lLT5lbmQoKSApOwotCi0gICAgICAgIHJldHVybiBtbV9wb3MuZmlyc3QgIT0gcF9uYW1lLT5iZWdpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIC8vIHRoZXJlIGlzIGNvbW1vbiBzdWJzdHJpbmcKLSAgICAgICAgICAgICAgICAoKG1fZ3Vlc3NfbmFtZSAgICAmJiAobW1fcG9zLnNlY29uZCA9PSBzbnAucF9uYW1lLT5lbmQoKSkgKSB8fCAgLy8gdGhhdCBtYXRjaCBvdGhlciBndXkgYW5kIEkgYW0gZ3Vlc3NpbmcKLSAgICAgICAgICAgICAgICAoc25wLm1fZ3Vlc3NfbmFtZSAmJiAobW1fcG9zLmZpcnN0ICA9PSBwX25hbWUtPmVuZCgpKSApKTsgICAgICAgLy8gb3IgbWUgYW5kIHRoZSBvdGhlciBndXkgaXMKLSAgICB9Ci0gICAgCi0gICAgaWYoIGlkLnBfdHlwZV9pZCA9PSBydHRpOjp0eXBlX2lkPGNoYXJfbmFtZV9wb2xpY3k+KCkgKSB7Ci0gICAgICAgIGNoYXJfbmFtZV9wb2xpY3kgY29uc3QmIGNucCA9IHN0YXRpY19jYXN0PGNoYXJfbmFtZV9wb2xpY3kgY29uc3QmPiggaWQgKTsKLQotICAgICAgICByZXR1cm4gbV9ndWVzc19uYW1lICAgICAgICAgICAgICAgICAmJiAKLSAgICAgICAgICAgICAgIChwX3ByZWZpeCA9PSBjbnAucF9wcmVmaXgpICAgJiYgCi0gICAgICAgICAgICAgICB1bml0X3Rlc3Q6OmZpcnN0X2NoYXIoIGNzdHJpbmcoIHBfbmFtZSApICkgPT0gdW5pdF90ZXN0OjpmaXJzdF9jaGFyKCBjc3RyaW5nKCBjbnAucF9uYW1lICkgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOyAgICAKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotc3RyaW5nX25hbWVfcG9saWN5OjptYXRjaF9uYW1lKCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdAotewotICAgIGlmKCAhbV9ndWVzc19uYW1lICkKLSAgICAgICAgcmV0dXJuIGJhc2ljX25hbWluZ19wb2xpY3k6Om1hdGNoX25hbWUoIHRyICk7Ci0KLSAgICBjc3RyaW5nIGluID0gdHIuaW5wdXQoKTsKLQotICAgIHN0ZDo6cGFpcjxjc3RyaW5nOjppdGVyYXRvcixkc3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbW1fcG9zOwotICAgIAotICAgIG1tX3BvcyA9IHVuaXRfdGVzdDo6bWlzbWF0Y2goIGluLmJlZ2luKCksIGluLmVuZCgpLCBwX25hbWUtPmJlZ2luKCksIHBfbmFtZS0+ZW5kKCkgKTsKLQotICAgIGlmKCBtbV9wb3MuZmlyc3QgPT0gaW4uYmVnaW4oKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRyLnRyaW0oIG1tX3Bvcy5maXJzdCAtIGluLmJlZ2luKCkgKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDYwZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA4MTkxMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBmb3JtYWwgcGFyYW1ldGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9hcmd1bWVudF9mYWN0b3J5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2lkX3BvbGljeS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cGFyYW1ldGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgcGFyYW1ldGVyIDogcHVibGljIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6cGFyYW1ldGVyIHsKLXB1YmxpYzoKLSAgICBwYXJhbWV0ZXIoIGlkZW50aWZpY2F0aW9uX3BvbGljeSYgSUQsIGFyZ3VtZW50X2ZhY3RvcnkmIEYsIGJvb2wgb3B0aW9uYWxfdmFsdWUgPSBmYWxzZSApCi0gICAgOiBwX29wdGlvbmFsKCBmYWxzZSApCi0gICAgLCBwX211bHRpcGxpY2FibGUoIGZhbHNlICkKLSAgICAsIHBfb3B0aW9uYWxfdmFsdWUoIG9wdGlvbmFsX3ZhbHVlICkKLSAgICAsIG1faWRfcG9saWN5KCBJRCApCi0gICAgLCBtX2FyZ19mYWN0b3J5KCBGICkKLSAgICB7fQotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIHZpcnR1YWwgICAgICAgICB+cGFyYW1ldGVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0KLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiAgICAgIHBfb3B0aW9uYWw7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgICBwX211bHRpcGxpY2FibGU7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgICBwX29wdGlvbmFsX3ZhbHVlOwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGRzdHJpbmc+ICAgcF9kZXNjcmlwdGlvbjsKLQotICAgIC8vIHBhcmFtZXRlciBwcm9wZXJ0aWVzIG1vZGlmaWNhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGlmKCBtLmhhcyggb3B0aW9uYWxfbSApICkKLSAgICAgICAgICAgIHBfb3B0aW9uYWwudmFsdWUgPSB0cnVlOwotCi0gICAgICAgIGlmKCBtLmhhcyggcmVxdWlyZWRfbSApICkKLSAgICAgICAgICAgIHBfb3B0aW9uYWwudmFsdWUgPSBmYWxzZTsKLQotICAgICAgICBpZiggbS5oYXMoIG11bHRpcGxpY2FibGVfbSApICkKLSAgICAgICAgICAgIHBfbXVsdGlwbGljYWJsZS52YWx1ZSA9IHRydWU7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBvcHRpb25hbF92YWx1ZV9tICkgKQotICAgICAgICAgICAgcF9vcHRpb25hbF92YWx1ZS52YWx1ZSA9IHRydWU7Ci0KLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggcF9kZXNjcmlwdGlvbi52YWx1ZSwgbSwgZGVzY3JpcHRpb24gKTsKLSAgICB9Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICBoYXNfYXJndW1lbnQoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1fYWN0dWFsX2FyZ3VtZW50IT0wOyB9Ci0gICAgYXJndW1lbnQgY29uc3QmIGFjdHVhbF9hcmd1bWVudCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKm1fYWN0dWFsX2FyZ3VtZW50OyB9Ci0gICAgYXJndW1lbnRfcHRyICAgIGFjdHVhbF9hcmd1bWVudCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV9hY3R1YWxfYXJndW1lbnQ7IH0KLQotCi0gICAgLy8gaWRlbnRpZmljYXRpb24gaW50ZXJmYWNlCi0gICAgYm9vbCAgICAgICAgICAgIHJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9pZF9wb2xpY3kucmVzcG9uZHNfdG8oIG5hbWUgKTsgfQotICAgIGJvb2wgICAgICAgICAgICBjb25mbGljdF93aXRoKCBwYXJhbWV0ZXIgY29uc3QmIHAgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChpZF8yX3JlcG9ydCgpID09IHAuaWRfMl9yZXBvcnQoKSAmJiAhaWRfMl9yZXBvcnQoKS5pc19lbXB0eSgpKSAgfHwKLSAgICAgICAgICAgICAgIG1faWRfcG9saWN5LmNvbmZsaWN0X3dpdGgoIHAubV9pZF9wb2xpY3kgKSAgICAgICAgICAgICAgICAgICAgICAgfHwgCi0gICAgICAgICAgICAgICAoKG1faWRfcG9saWN5LnBfdHlwZV9pZCAhPSBwLm1faWRfcG9saWN5LnBfdHlwZV9pZCkgJiYgcC5tX2lkX3BvbGljeS5jb25mbGljdF93aXRoKCBtX2lkX3BvbGljeSApKTsKLSAgICB9Ci0gICAgY3N0cmluZyAgICAgICAgIGlkXzJfcmVwb3J0KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV9pZF9wb2xpY3kuaWRfMl9yZXBvcnQoKTsgfQotICAgIHZvaWQgICAgICAgICAgICB1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgbV9pZF9wb2xpY3kudXNhZ2VfaW5mbyggZnMgKTsKLSAgICAgICAgaWYoIHBfb3B0aW9uYWxfdmFsdWUgKQotICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ1snICk7Ci0KLSAgICAgICAgbV9hcmdfZmFjdG9yeS5hcmd1bWVudF91c2FnZV9pbmZvKCBmcyApOwotCi0gICAgICAgIGlmKCBwX29wdGlvbmFsX3ZhbHVlICkKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICddJyApOwotICAgIH0KLQotICAgIC8vIGFyZ3VtZW50IG1hdGNoL3Byb2R1Y2UgYmFzZWQgb24gaW5wdXQKLSAgICBib29sICAgICAgICAgICAgbWF0Y2hpbmcoIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBwcmltYXJ5ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkX3BvbGljeS5tYXRjaGluZyggKnRoaXMsIHRyLCBwcmltYXJ5ICk7Ci0gICAgfQotCi0gICAgLy8gYXJndW1lbnQgcHJvZHVjdGlvbiBiYXNlZCBvbiBkaWZmZXJlbnQgc291cmNlCi0gICAgdm9pZCAgICAgICAgICAgIHByb2R1Y2VfYXJndW1lbnQoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApCi0gICAgewotICAgICAgICBtX2lkX3BvbGljeS5tYXRjaGluZyggKnRoaXMsIHRyLCB0cnVlICk7IC8vICEhIGNhbiB3ZSBzYXZlIHRoaXMgcG9zaXRpb24gc29tZWhvdwotICAgICAgICBtX2FjdHVhbF9hcmd1bWVudCA9IG1fYXJnX2ZhY3RvcnkucHJvZHVjZV91c2luZyggKnRoaXMsIHRyICk7Ci0gICAgfQotICAgIHZvaWQgICAgICAgICAgICBwcm9kdWNlX2FyZ3VtZW50KCBwYXJzZXIgY29uc3QmIHAgKQotICAgIHsKLSAgICAgICAgbV9hY3R1YWxfYXJndW1lbnQgPSBtX2FyZ19mYWN0b3J5LnByb2R1Y2VfdXNpbmcoICp0aGlzLCBwICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vRGF0YSBtZW1iZXJzCi0gICAgaWRlbnRpZmljYXRpb25fcG9saWN5JiAgbV9pZF9wb2xpY3k7Ci0gICAgYXJndW1lbnRfZmFjdG9yeSYgICAgICAgbV9hcmdfZmFjdG9yeTsKLSAgICBhcmd1bWVudF9wdHIgICAgICAgICAgICBtX2FjdHVhbF9hcmd1bWVudDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhcmFtZXRlcix0eXBlbmFtZSBNb2RpZmllcj4KLWlubGluZSBzaGFyZWRfcHRyPFBhcmFtZXRlcj4KLW9wZXJhdG9yLSggc2hhcmVkX3B0cjxQYXJhbWV0ZXI+IHAsIE1vZGlmaWVyIGNvbnN0JiBtICkKLXsKLSAgICBwLT5hY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgIHJldHVybiBwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMDNmNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBwYXJzZXIgLSBwdWJsaWMgaW50ZXJmYWNlIGZvciBDTEEgcGFyc2luZyBhbmQgYWNjZXNzaW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGxpc3Q+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cGFyc2VyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgY2xhX2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotY2xhc3MgZ2xvYmFsX21vZF9wYXJzZXIgewotcHVibGljOgotICAgIGdsb2JhbF9tb2RfcGFyc2VyKCBwYXJzZXImIHAsIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICA6IG1fcGFyc2VyKCBwICkKLSAgICAsIG1fbW9kaWZpZXJzKCBtICkKLSAgICB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGFyYW0+Ci0gICAgZ2xvYmFsX21vZF9wYXJzZXIgY29uc3QmCi0gICAgb3BlcmF0b3I8PCggc2hhcmVkX3B0cjxQYXJhbT4gcGFyYW0gKSBjb25zdAotICAgIHsKLSAgICAgICAgcGFyYW0tPmFjY2VwdF9tb2RpZmllciggbV9tb2RpZmllcnMgKTsKLQotICAgICAgICBtX3BhcnNlciA8PCBwYXJhbTsKLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVyczsKLSAgICBwYXJzZXImICAgICAgICAgICAgIG1fcGFyc2VyOwotICAgIE1vZGlmaWVyIGNvbnN0JiAgICAgbV9tb2RpZmllcnM7Ci19OwotCi19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjpjbGE6OnBhcnNlciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgcGFyc2VyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6bGlzdDxwYXJhbWV0ZXJfcHRyPjo6Y29uc3RfaXRlcmF0b3IgcGFyYW1faXRlcmF0b3I7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICAgICAgcGFyc2VyKCBjc3RyaW5nIHByb2dyYW1fbmFtZSA9IGNzdHJpbmcoKSApOwotCi0gICAgLy8gcGFyYW1ldGVyIGxpc3QgY29uc3RydWN0aW9uIGludGVyZmFjZQotICAgIHBhcnNlciYgICAgICAgICAgICAgb3BlcmF0b3I8PCggcGFyYW1ldGVyX3B0ciBwYXJhbSApOwotCi0gICAgLy8gcGFyc2VyIGFuZCBnbG9iYWwgcGFyYW1ldGVycyBtb2RpZmllcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICBjbGFfZGV0YWlsOjpnbG9iYWxfbW9kX3BhcnNlcjxNb2RpZmllcj4KLSAgICBvcGVyYXRvci0oIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG1fdHJhdmVyc2VyLnBfc2VwYXJhdG9yLnZhbHVlLCBtLCBpbnB1dF9zZXBhcmF0b3IgKTsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggbV90cmF2ZXJzZXIucF9pZ25vcmVfbWlzbWF0Y2gudmFsdWUsIG0sIGlnbm9yZV9taXNtYXRjaF9tICk7Ci0KLSAgICAgICAgcmV0dXJuIGNsYV9kZXRhaWw6Omdsb2JhbF9tb2RfcGFyc2VyPE1vZGlmaWVyPiggKnRoaXMsIG0gKTsKLSAgICB9Ci0KLSAgICAvLyBpbnB1dCBwcm9jZXNzaW5nIG1ldGhvZAotICAgIHZvaWQgICAgICAgICAgICAgICAgcGFyc2UoIGludCYgYXJnYywgY2hhcl90eXBlKiogYXJndiApOwotCi0gICAgLy8gcGFyYW1ldGVycyBhY2Nlc3MKLSAgICBwYXJhbV9pdGVyYXRvciAgICAgIGZpcnN0X3BhcmFtKCkgY29uc3Q7Ci0gICAgcGFyYW1faXRlcmF0b3IgICAgICBsYXN0X3BhcmFtKCkgY29uc3Q7Ci0KLSAgICAvLyBhcmd1bWVudHMgYWNjZXNzCi0gICAgY29uc3RfYXJndW1lbnRfcHRyICBvcGVyYXRvcltdKCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0OwotICAgIGNzdHJpbmcgICAgICAgICAgICAgZ2V0KCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0OyAgICAKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBjb25zdCYgICAgICAgICAgICBnZXQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhcmdfdmFsdWU8VD4oIHZhbGlkX2FyZ3VtZW50KCBzdHJpbmdfaWQgKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBnZXQoIGNzdHJpbmcgc3RyaW5nX2lkLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcyApIGNvbnN0Ci0gICAgewotICAgICAgICBjb25zdF9hcmd1bWVudF9wdHIgYWN0dWFsX2FyZyA9ICgqdGhpcylbc3RyaW5nX2lkXTsKLQotICAgICAgICBpZiggYWN0dWFsX2FyZyApCi0gICAgICAgICAgICByZXMgPSBhcmdfdmFsdWU8VD4oICphY3R1YWxfYXJnICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcy5yZXNldCgpOwotICAgIH0KLQotICAgIC8vIGhlbHAvdXNhZ2UKLSAgICB2b2lkICAgICAgICAgICAgICAgIHVzYWdlKCBvdXRfc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBoZWxwKCAgb3V0X3N0cmVhbSYgb3N0ciApOwotCi1wcml2YXRlOgotICAgIGFyZ3VtZW50IGNvbnN0JiAgICAgdmFsaWRfYXJndW1lbnQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3Q7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBhcmd2X3RyYXZlcnNlciAgICAgICAgICAgICAgbV90cmF2ZXJzZXI7Ci0gICAgc3RkOjpsaXN0PHBhcmFtZXRlcl9wdHI+ICAgIG1fcGFyYW1ldGVyczsKLSAgICBkc3RyaW5nICAgICAgICAgICAgICAgICAgICAgbV9wcm9ncmFtX25hbWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzOTQ4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBwYXJzZXIgLSBwdWJsaWMgaW50ZXJmYWNlIGZvciBDTEEgcGFyc2luZyBhbmQgYWNjZXNzaW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9JUFBfMDYyOTA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cGFyc2VyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUKLXBhcnNlcjo6cGFyc2VyKCBjc3RyaW5nIHByb2dyYW1fbmFtZSApCi17Ci0gICAgYXNzaWduX29wKCBtX3Byb2dyYW1fbmFtZSwgcHJvZ3JhbV9uYW1lLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBwYXJzZXI6OnBhcmFtX2l0ZXJhdG9yCi1wYXJzZXI6OmZpcnN0X3BhcmFtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLmJlZ2luKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBwYXJzZXI6OnBhcmFtX2l0ZXJhdG9yCi1wYXJzZXI6Omxhc3RfcGFyYW0oKSBjb25zdAotewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMuZW5kKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBhcmd1bWVudCBjb25zdCYKLXBhcnNlcjo6dmFsaWRfYXJndW1lbnQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3QKLXsKLSAgICBjb25zdF9hcmd1bWVudF9wdHIgYXJnID0gKCp0aGlzKVtzdHJpbmdfaWRdOwotCi0gICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICEhYXJnLCAiQWN0dWFsIGFyZ3VtZW50IGZvciBwYXJhbWV0ZXIgIiA8PCBzdHJpbmdfaWQgPDwgIiBpcyBub3QgcHJlc2VudCIgKTsKLQotICAgIHJldHVybiAqYXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgcGFyc2VyJgotcGFyc2VyOjpvcGVyYXRvcjw8KCBwYXJhbWV0ZXJfcHRyIG5ld19wYXJhbSApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyLCBvbGRfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFvbGRfcGFyYW0tPmNvbmZsaWN0X3dpdGgoICpuZXdfcGFyYW0gKSwKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJEZWZpbml0aW9uIG9mIHBhcmFtZXRlciAiICkgICAgICAgICAgICAgICAgPDwgbmV3X3BhcmFtLT5pZF8yX3JlcG9ydCgpIDw8IAotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIiBjb25mbGljdHMgd2l0aCBkZWZpbnRpb24gb2YgcGFyYW1ldGVyICIgKSA8PCBvbGRfcGFyYW0tPmlkXzJfcmVwb3J0KCkgKTsKLSAgICB9Ci0KLSAgICBtX3BhcmFtZXRlcnMucHVzaF9iYWNrKCBuZXdfcGFyYW0gKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXBhcnNlcjo6cGFyc2UoIGludCYgYXJnYywgY2hhcl90eXBlKiogYXJndiApCi17Ci0gICAgaWYoIG1fcHJvZ3JhbV9uYW1lLmVtcHR5KCkgKSB7Ci0gICAgICAgIG1fcHJvZ3JhbV9uYW1lLmFzc2lnbiggYXJndlswXSApOwotICAgICAgICBkc3RyaW5nOjpzaXplX3R5cGUgcG9zID0gbV9wcm9ncmFtX25hbWUuZmluZF9sYXN0X29mKCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiL1xcIiApICk7Ci0KLSAgICAgICAgaWYoIHBvcyAhPSBzdGF0aWNfY2FzdDxkc3RyaW5nOjpzaXplX3R5cGU+KGNzdHJpbmc6Om5wb3MpICkKLSAgICAgICAgICAgIG1fcHJvZ3JhbV9uYW1lLmVyYXNlKCAwLCBwb3MrMSApOwotICAgIH0KLQotICAgIG1fdHJhdmVyc2VyLmluaXQoIGFyZ2MsIGFyZ3YgKTsKLQotICAgIHRyeSB7Ci0gICAgICAgIHdoaWxlKCAhbV90cmF2ZXJzZXIuZW9pKCkgKSB7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJfcHRyIGZvdW5kX3BhcmFtOwotCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIlRvdGFsICIgPDwgbV9wYXJhbWV0ZXJzLnNpemUoKSA8PCAiIHBhcmFtZXRlcnMgcmVnaXN0ZXJlZCIgKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyIGNvbnN0JiwgY3Vycl9wYXJhbSwgbV9wYXJhbWV0ZXJzICkgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiVHJ5IHBhcmFtZXRlciAiIDw8IGN1cnJfcGFyYW0tPmlkXzJfcmVwb3J0KCkgKTsKLQotICAgICAgICAgICAgICAgIGlmKCBjdXJyX3BhcmFtLT5tYXRjaGluZyggbV90cmF2ZXJzZXIsICFmb3VuZF9wYXJhbSApICkgewotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIk1hdGNoIGZvdW5kIiApOwotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9DTEFfVkFMSURBVEVfSU5QVVQoICFmb3VuZF9wYXJhbSwgKG1fdHJhdmVyc2VyLnJvbGxiYWNrKCksbV90cmF2ZXJzZXIpLCAiQW1iaWd1b3VzIGlucHV0IiApOwotCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kX3BhcmFtID0gY3Vycl9wYXJhbTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtX3RyYXZlcnNlci5yb2xsYmFjaygpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiggIWZvdW5kX3BhcmFtICkgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiTm8gbWF0Y2ggZm91bmQiICk7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCBtX3RyYXZlcnNlci5oYW5kbGVfbWlzbWF0Y2goKSwgbV90cmF2ZXJzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiVW5leHBlY3RlZCBpbnB1dCIgKSApOwotCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiUGFyc2UgYXJndW1lbnQgdmFsdWUiICk7Ci0gICAgICAgICAgICBmb3VuZF9wYXJhbS0+cHJvZHVjZV9hcmd1bWVudCggbV90cmF2ZXJzZXIgKTsKLQotICAgICAgICAgICAgbV90cmF2ZXJzZXIuY29tbWl0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIgY29uc3QmLCBjdXJyX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgICAgICBpZiggIWN1cnJfcGFyYW0tPnBfb3B0aW9uYWwgJiYgIWN1cnJfcGFyYW0tPmFjdHVhbF9hcmd1bWVudCgpICkgewotICAgICAgICAgICAgICAgIGN1cnJfcGFyYW0tPnByb2R1Y2VfYXJndW1lbnQoICp0aGlzICk7Ci0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggY3Vycl9wYXJhbS0+YWN0dWFsX2FyZ3VtZW50KCksCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJSZXF1aXJlZCBhcmd1bWVudCBmb3IgcGFyYW1ldGVyICIgKSA8PCBjdXJyX3BhcmFtLT5pZF8yX3JlcG9ydCgpCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIGlzIG1pc3NpbmciICkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaCggYmFkX2xleGljYWxfY2FzdCBjb25zdCYgKSB7Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1JFUE9SVF9MT0dJQ19FUlJPUiggCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiU3RyaW5nIHRvIHZhbHVlIGNvbnZlcnRpb24gZXJyb3IgZHVyaW5nIGlucHV0IHBhcnNpbmciICkgKTsKLSAgICB9Ci0KLSAgICBtX3RyYXZlcnNlci5yZW1haW5kZXIoIGFyZ2MsIGFyZ3YgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGNvbnN0X2FyZ3VtZW50X3B0cgotcGFyc2VyOjpvcGVyYXRvcltdKCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0Ci17Ci0gICAgcGFyYW1ldGVyX3B0ciBmb3VuZF9wYXJhbTsKLQotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciBjb25zdCYsIGN1cnJfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnJlc3BvbmRzX3RvKCBzdHJpbmdfaWQgKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhZm91bmRfcGFyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIkFtYmlndW91cyBwYXJhbWV0ZXIgc3RyaW5nIGlkOiAiICkgPDwgc3RyaW5nX2lkICk7Ci0KLSAgICAgICAgICAgIGZvdW5kX3BhcmFtID0gY3Vycl9wYXJhbTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmb3VuZF9wYXJhbSA/IGZvdW5kX3BhcmFtLT5hY3R1YWxfYXJndW1lbnQoKSA6IGFyZ3VtZW50X3B0cigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgY3N0cmluZwotcGFyc2VyOjpnZXQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3QKLXsKLSAgICByZXR1cm4gZ2V0PGNzdHJpbmc+KCBzdHJpbmdfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXBhcnNlcjo6dXNhZ2UoIG91dF9zdHJlYW0mIG9zdHIgKQotewotICAgIGlmKCBtX3Byb2dyYW1fbmFtZS5lbXB0eSgpICkKLSAgICAgICAgYXNzaWduX29wKCBtX3Byb2dyYW1fbmFtZSwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiPHByb2dyYW0+IiApLCAwICk7Ci0KLSAgICBmb3JtYXRfc3RyZWFtIGZzOwotCi0gICAgZnMgPDwgbV9wcm9ncmFtX25hbWU7Ci0KLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIgY29uc3QmLCBjdXJyX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcgJyApOwotCi0gICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX29wdGlvbmFsICkKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICdbJyApOwotCi0gICAgICAgIGN1cnJfcGFyYW0tPnVzYWdlX2luZm8oIGZzICk7Ci0KLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfb3B0aW9uYWwgKQotICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ10nICk7Ci0KLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfbXVsdGlwbGljYWJsZSApIHsKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIiAuLi4gIiApOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiggY3Vycl9wYXJhbS0+cF9vcHRpb25hbCApCi0gICAgICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ1snICk7Ci0KLSAgICAgICAgICAgIGN1cnJfcGFyYW0tPnVzYWdlX2luZm8oIGZzICk7Ci0KLSAgICAgICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX29wdGlvbmFsICkKLSAgICAgICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnXScgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG9zdHIgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiVXNhZ2U6XG4iICkgPDwgZnMuc3RyKCkgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotcGFyc2VyOjpoZWxwKCBvdXRfc3RyZWFtJiBvc3RyICkKLXsKLSAgICB1c2FnZSggb3N0ciApOwotCi0gICAgYm9vbCBuZWVkX3doZXJlID0gdHJ1ZTsKLQotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciBjb25zdCYsIGN1cnJfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfZGVzY3JpcHRpb24tPmVtcHR5KCkgKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYoIG5lZWRfd2hlcmUgKSB7Ci0gICAgICAgICAgICBvc3RyIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIndoZXJlOlxuIiApOwotICAgICAgICAgICAgbmVlZF93aGVyZSA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgb3N0ciA8PCBjdXJyX3BhcmFtLT5pZF8yX3JlcG9ydCgpIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIiAtICIgKSA8PCBjdXJyX3BhcmFtLT5wX2Rlc2NyaXB0aW9uIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSVBQXzA2MjkwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3R5cGVkX3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdHlwZWRfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQzZDc1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdHlwZWRfcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGdlbmVyaWMgdHlwZWQgcGFyYW1ldGVyIG1vZGVsCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfVFlQRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1RZUEVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd1bWVudF9mYWN0b3J5LmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgcnVudGltZTo6Y2xhOjp0eXBlZF9wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgdHlwZWRfcGFyYW1ldGVyIDogcHVibGljIGNsYTo6cGFyYW1ldGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCB0eXBlZF9wYXJhbWV0ZXIoIGlkZW50aWZpY2F0aW9uX3BvbGljeSYgSUQgKSAKLSAgICA6IGNsYTo6cGFyYW1ldGVyKCBJRCwgbV9hcmdfZmFjdG9yeSwgcnR0aTo6dHlwZV9pZDxUPigpID09IHJ0dGk6OnR5cGVfaWQ8Ym9vbD4oKSApIAotICAgIHt9Ci0KLSAgICAvLyBwYXJhbWV0ZXIgcHJvcGVydGllcyBtb2RpZmljYXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgY2xhOjpwYXJhbWV0ZXI6OmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgICAgIG1fYXJnX2ZhY3RvcnkuYWNjZXB0X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFwX29wdGlvbmFsIHx8ICFtX2FyZ19mYWN0b3J5Lm1fdmFsdWVfZ2VuZXJhdG9yLAotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggImNhbid0IGRlZmluZSBhIHZhbHVlIGdlbmVyYXRvciBmb3Igb3B0aW9uYWwgcGFyYW1ldGVyICIgKSA8PCBpZF8yX3JlcG9ydCgpICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHR5cGVkX2FyZ3VtZW50X2ZhY3Rvcnk8VD4gICBtX2FyZ19mYWN0b3J5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1RZUEVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMWNmYmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW5wdXQgdmFsaWRhdGlvbiBoZWxwZXJzIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBydW50aW1lOjpjbGE6OnJlcG9ydF9pbnB1dF9lcnJvciAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCByZXBvcnRfaW5wdXRfZXJyb3IoIGFyZ3ZfdHJhdmVyc2VyIGNvbnN0JiB0ciwgZm9ybWF0X3N0cmVhbSYgbXNnICk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCBiLCB0ciwgbXNnICkgXAotICAgIGlmKCBiICkgOyBlbHNlIDo6bmRuYm9vc3Q6Ok5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6Y2xhOjpyZXBvcnRfaW5wdXRfZXJyb3IoIHRyLCBmb3JtYXRfc3RyZWFtKCkucmVmKCkgPDwgbXNnICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWY5MzcwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGlucHV0IHZhbGlkYXRpb24gaGVscGVycyBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSVBQXzA3MDYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9JUFBfMDcwNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4gLy8gTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpsb2dpY19lcnJvcgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIFNUTAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgcnVudGltZTo6Y2xhOjp2YWxpZGF0aW9uICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXJlcG9ydF9pbnB1dF9lcnJvciggYXJndl90cmF2ZXJzZXIgY29uc3QmIHRyLCBmb3JtYXRfc3RyZWFtJiBtc2cgKQotewotICAgIGlmKCB0ci5lb2koKSApCi0gICAgICAgIG1zZyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIGF0IHRoZSBlbmQgb2YgaW5wdXQiICk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1zZyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIGluIHRoZSBmb2xsb3dpbmcgcG9zaXRpb246ICIgKTsKLQotICAgICAgICBpZiggdHIuaW5wdXQoKS5zaXplKCkgPiA1ICkKLSAgICAgICAgICAgIG1zZyA8PCB0ci5pbnB1dCgpLnN1YnN0ciggMCwgNSApIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIuLi4iICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1zZyA8PCB0ci5pbnB1dCgpOwotICAgIH0KLQotICAgIHRocm93IE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6bG9naWNfZXJyb3IoIG1zZy5zdHIoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9JUFBfMDcwNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfZ2VuZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9nZW5lcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjkyYzM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9nZW5lcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc3BlY2lmaWMgdmFsdWUgZ2VuZXJhdG9ycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0dFTkVSQVRPUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9HRU5FUkFUT1JfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcnVudGltZTo6Y2xhOjpjb25zdF9nZW5lcmF0b3IgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGNvbnN0X2dlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICBjb25zdF9nZW5lcmF0b3IoIFQgY29uc3QmIHQgKSA6IG1fY29uc3RfdmFsdWUoIHQgKSB7fQotCi0gICAgLy8gZ2VuZXJhdG9yIGludGVyZmFjZQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yKCkoIHBhcnNlciBjb25zdCYsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgdCApIGNvbnN0ICAgeyB0ID0gbV9jb25zdF92YWx1ZTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIFQgICAgICAgICAgIG1fY29uc3RfdmFsdWU7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBydW50aW1lOjpjbGE6OnJlZl9nZW5lcmF0b3IgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyByZWZfZ2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIHJlZl9nZW5lcmF0b3IoIGNzdHJpbmcgcmVmX2lkICkgOiBtX3JlZl9pZCggcmVmX2lkICkge30KLQotICAgIC8vIGdlbmVyYXRvciBpbnRlcmZhY2UKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBwYXJzZXIgY29uc3QmIHAsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgdCApIGNvbnN0Ci0gICAgewotICAgICAgICBwLmdldCggbV9yZWZfaWQsIHQgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY3N0cmluZyAgICAgbV9yZWZfaWQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydF9jbGFfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9HRU5FUkFUT1JfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2hhbmRsZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2hhbmRsZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDkwNjAzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9oYW5kbGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNwZWNpZmljIHZhbHVlIGhhbmRsZXJzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfVkFMVUVfSEFORExFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9IQU5ETEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6YXNzaWduZXIgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGFzc2lnbmVyIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIGFzc2lnbmVyKCBUJiBsb2MgKSA6IG1fdGFyZ2V0KCBsb2MgKSAgICB7fQotCi0gICAgLy8gdmFsdWUgaGFuZGxlciBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yKCkoIHBhcmFtZXRlciBjb25zdCYsIFQmIHQgKSAgeyBtX3RhcmdldCA9IHQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBUJiAgICAgICAgICBtX3RhcmdldDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0hBTkRMRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZjhmMTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IFJ1bnRpbWUuUGFyYW0gbGlicmFyeSBjb25maWd1cmF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DT05GSUdfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DT05GSUdfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTExKSAvLyBjb3B5IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODEpIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlOyBpZ25vcmVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ2NzUpIC8vIHJlc29sdmVkIG92ZXJsb2FkIHdhcyBmb3VuZCBieSBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwCi0jZW5kaWYKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+IC8vIG9wZXJhdG9yPDwobmRuYm9vc3Q6OnJ1bnRpbWU6OmNzdHJpbmcpCi0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxjc3RkbGliPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX0NVU1RPTV9TVFJJTkcKLSMgIGlmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9XSURFX1NUUklORwotIyAgICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRlX3J1bnRpbWUKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fU1VOUFJPX0NDCi1leHRlcm4gaW50IHB1dGVudihjaGFyKik7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fQ1VTVE9NX1NUUklORwotIyAgaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX1dJREVfU1RSSU5HCi0KLXR5cGVkZWYgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci10eXBlZGVmIHN0ZDo6c3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0cmluZzsKLXR5cGVkZWYgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyaW5nOwotdHlwZWRlZiB1bml0X3Rlc3Q6OmxpdGVyYWxfc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfY3N0cmluZzsKLXR5cGVkZWYgd3JhcF9zdHJpbmdzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3RyZWFtOwotCi0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLXR5cGVkZWYgc3RkOjpvc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtOwotI2Vsc2UKLXR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJfdHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtOwotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpIC8vIHB1dGVudgotI2VuZGlmCi0KLSNpZm5kZWYgVU5ERVJfQ0UKLSNpZiBkZWZpbmVkKF9fQ09NT19fKSAmJiAwCi1pbmxpbmUgdm9pZAotcHV0ZW52X2ltcGwoIGNzdHJpbmcgbmFtZSwgY3N0cmluZyB2YWx1ZSApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAvLyAhISB0aGlzIG1heSBhY3R1YWxseSBmYWlsLiBXaGF0IHNob3VsZCB3ZSBkbz8KLSAgICBzZXRlbnYoIG5hbWUuYmVnaW4oKSwgdmFsdWUuYmVnaW4oKSwgMSApOwotfQotI2Vsc2UKLWlubGluZSB2b2lkCi1wdXRlbnZfaW1wbCggY3N0cmluZyBuYW1lLCBjc3RyaW5nIHZhbHVlICkKLXsKLSAgICBmb3JtYXRfc3RyZWFtIGZzOwotCi0gICAgZnMgPDwgbmFtZSA8PCAnPScgPDwgdmFsdWU7Ci0KLSAgICAvLyAhISB0aGlzIG1heSBhY3R1YWxseSBmYWlsLiBXaGF0IHNob3VsZCB3ZSBkbz8KLSAgICAvLyBjb25zdF9jYXN0IGlzIHVzZWQgdG8gc2F0aXNmeSBwdXRlbnYgaW50ZXJmYWNlCi0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBwdXRlbnYoIGNvbnN0X2Nhc3Q8Y2hhcio+KCBmcy5zdHIoKS5jX3N0cigpICkgKTsKLX0KLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDIAotI3ByYWdtYSB3YXJuaW5nKHBvcCkgCi0jZW5kaWYgCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggbCApIGwKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCBsICkgY3N0cmluZyggbCwgc2l6ZW9mKCBsICkgLSAxICkKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fR0VURU5WIGdldGVudgotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9QVVRFTlYgOjpuZG5ib29zdDo6TkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpwdXRlbnZfaW1wbAotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9FWENFUFRJT05fSU5IRVJJVF9TVEQKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotIyAgZWxzZQotCi10eXBlZGVmIHdjaGFyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdHJpbmc7Ci10eXBlZGVmIHVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzx3Y2hhcl90IGNvbnN0PiAgICAgICAgICAgICAgICAgY3N0cmluZzsKLXR5cGVkZWYgY29uc3QgdW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPHdjaGFyX3QgY29uc3Q+ICAgICAgICAgICBsaXRlcmFsX2NzdHJpbmc7Ci10eXBlZGVmIHdyYXBfd3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmVhbTsKLXR5cGVkZWYgc3RkOjp3b3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtOwotCi0jaWZuZGVmIFVOREVSX0NFCi1pbmxpbmUgdm9pZAotcHV0ZW52X2ltcGwoIGNzdHJpbmcgbmFtZSwgY3N0cmluZyB2YWx1ZSApCi17Ci0gICAgZm9ybWF0X3N0cmVhbSBmczsKLQotICAgIGZzIDw8IG5hbWUgPDwgJz0nIDw8IHZhbHVlOwotCi0gICAgLy8gISEgdGhpcyBtYXkgYWN0dWFsbHkgZmFpbC4gV2hhdCBzaG91bGQgd2UgZG8/Ci0gICAgLy8gY29uc3RfY2FzdCBpcyB1c2VkIHRvIHNhdGlzZnkgcHV0ZW52IGludGVyZmFjZQotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgd3B1dGVudiggY29uc3RfY2FzdDx3Y2hhcl90Kj4oIGZzLnN0cigpLmNfc3RyKCkgKSApOwotfQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggbCApIEwgIyMgbAotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoIGwgKSBjc3RyaW5nKCBMICMjIGwsIHNpemVvZiggTCAjIyBsICkvc2l6ZW9mKHdjaGFyX3QpIC0gMSApCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0dFVEVOViB3Z2V0ZW52Ci0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1BVVEVOViBwdXRlbnZfaW1wbAotCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBfX0dOVUNfXwotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIHZpcnR1YWwKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NPTkZJR19IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYzNGZhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBhbmQgaW1wbGVtZW50cyBpbmxpbmUgbW9kZWwgb2YgcHJvZ3JhbSBlbnZpcm9ubWVudCAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9IUFBfMDYyNjA0R0VSCi0KLSNpZmRlZiBVTkRFUl9DRQotI2Vycm9yIFdpbmRvd3MgQ0UgZG9lcyBub3Qgc3VwcG9ydCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0jZW5kaWYKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvbW9kaWZpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQgaW1wbGVtZW50YXRpb24gICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi1uYW1lc3BhY2UgcnRfZW52X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1vZGlmaWVycz4KLXZhcmlhYmxlX2RhdGEmCi1pbml0X25ld192YXIoIGNzdHJpbmcgdmFyX25hbWUsIE1vZGlmaWVycyBtID0gbmZwOjpub19wYXJhbXMgKQotewotICAgIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEmIG5ld192ZCA9IG5ld192YXJfcmVjb3JkKCB2YXJfbmFtZSApOwotCi0gICAgY3N0cmluZyBzdHJfdmFsdWUgPSBzeXNfcmVhZF92YXIoIG5ld192ZC5tX3Zhcl9uYW1lICk7Ci0KLSAgICBpZiggIXN0cl92YWx1ZS5pc19lbXB0eSgpICkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotCi0gICAgICAgICAgICBpZiggbS5oYXMoIGludGVycHJldGVyICkgKQotICAgICAgICAgICAgICAgIG1baW50ZXJwcmV0ZXJdKCBzdHJfdmFsdWUsIHZhbHVlICk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlKCBzdHJfdmFsdWUsIHZhbHVlLCAwICk7Ci0KLSAgICAgICAgICAgIGlmKCAhIXZhbHVlICkgewotICAgICAgICAgICAgICAgIG5ld192ZC5tX3ZhbHVlLnJlc2V0KCBuZXcgdHlwZWRfYXJndW1lbnQ8VD4oIG5ld192ZCApICk7Ci0KLSAgICAgICAgICAgICAgICBhcmdfdmFsdWU8VD4oICpuZXdfdmQubV92YWx1ZSApID0gKnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCAuLi4gKSB7IC8vICEhIGNvdWxkIHdlIGRvIHRoYXQKLSAgICAgICAgICAgIC8vICEhIHNob3VsZCB3ZSByZXBvcnQgYW4gZXJyb3I/Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggIW5ld192ZC5tX3ZhbHVlICYmIG0uaGFzKCBkZWZhdWx0X3ZhbHVlICkgKSB7Ci0gICAgICAgIG5ld192ZC5tX3ZhbHVlLnJlc2V0KCBuZXcgdHlwZWRfYXJndW1lbnQ8VD4oIG5ld192ZCApICk7Ci0KLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggYXJnX3ZhbHVlPFQ+KCAqbmV3X3ZkLm1fdmFsdWUgKSwgbVtkZWZhdWx0X3ZhbHVlXSApOwotICAgIH0KLQotICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG5ld192ZC5tX2dsb2JhbF9pZCwgbSwgZ2xvYmFsX2lkICk7Ci0KLSAgICByZXR1cm4gbmV3X3ZkOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydF9lbnZfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjplbnZpcm9ubWVudCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotICAgIC8vIHZhcmlhYmxlIGFjY2VzcwotICAgIHZhcmlhYmxlX2Jhc2UKLSAgICB2YXIoIGNzdHJpbmcgdmFyX25hbWUgKTsKLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZhcmlhYmxlPFQ+Ci0gICAgdmFyKCBjc3RyaW5nIHZhcl9uYW1lICkKLSAgICB7Ci0gICAgICAgIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEqIHZkID0gcnRfZW52X2RldGFpbDo6ZmluZF92YXJfcmVjb3JkKCB2YXJfbmFtZSApOwotCi0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDo6dmFyaWFibGU8VD4oICF2ZCA/IHJ0X2Vudl9kZXRhaWw6OmluaXRfbmV3X3ZhcjxUPiggdmFyX25hbWUsIG5mcDo6bm9fcGFyYW1zICkgOiAqdmQgKTsKLSAgICB9Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNb2RpZmllcnM+Ci0gICAgaW5saW5lIHZhcmlhYmxlPFQ+Ci0gICAgdmFyKCBjc3RyaW5nIHZhcl9uYW1lLCBNb2RpZmllcnMgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSogdmQgPSBydF9lbnZfZGV0YWlsOjpmaW5kX3Zhcl9yZWNvcmQoIHZhcl9uYW1lICk7Ci0KLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Ojp2YXJpYWJsZTxUPiggIXZkID8gcnRfZW52X2RldGFpbDo6aW5pdF9uZXdfdmFyPFQ+KCB2YXJfbmFtZSwgbSApIDogKnZkICk7Ci0gICAgfQotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0gICAgLy8gZGlyZWN0IHZhcmlhYmxlIHZhbHVlIGFjY2VzcwotICAgIGlubGluZSBjc3RyaW5nCi0gICAgZ2V0KCBjc3RyaW5nIHZhcl9uYW1lICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDo6dmFyPGNzdHJpbmc+KCB2YXJfbmFtZSApLnZhbHVlKCk7Ci0gICAgfQotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgVCBjb25zdCYKLSAgICBnZXQoIGNzdHJpbmcgdmFyX25hbWUgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Ojp2YXI8VD4oIHZhcl9uYW1lICkudmFsdWUoKTsKLSAgICB9Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkCi0gICAgZ2V0KCBjc3RyaW5nIHZhcl9uYW1lLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcyApCi0gICAgewotICAgICAgICB2YXJpYWJsZTxUPiBjb25zdCYgdiA9IGVudmlyb25tZW50Ojp2YXI8VD4oIHZhcl9uYW1lICk7Ci0gICAgICAgIHYudmFsdWUoIHJlcyApOwotICAgIH0KLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotbmFtZXNwYWNlIGVudiA9IGVudmlyb25tZW50OwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RkNzhmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtb2RlbCBvZiBwcm9ncmFtIGVudmlyb25tZW50IAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bGlzdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjplbnZpcm9ubWVudCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwgewotCi10eXBlZGVmIHN0ZDo6bWFwPGNzdHJpbmcscnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YT4gcmVnaXN0cnk7Ci10eXBlZGVmIHN0ZDo6bGlzdDxkc3RyaW5nPiBrZXlzOwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgcmVnaXN0cnkmIHNfcmVnaXN0cnkoKSAgICB7IHN0YXRpYyByZWdpc3RyeSBpbnN0YW5jZTsgcmV0dXJuIGluc3RhbmNlOyB9Ci1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUga2V5cyYgICAgIHNfa2V5cygpICAgICAgICB7IHN0YXRpYyBrZXlzIGluc3RhbmNlOyByZXR1cm4gaW5zdGFuY2U7IH0KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZhcmlhYmxlX2RhdGEmCi1uZXdfdmFyX3JlY29yZCggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgLy8gc2F2ZSB0aGUgbmFtZSBpbiBsaXN0IG9mIGtleXMKLSAgICBzX2tleXMoKS5wdXNoX2JhY2soIGRzdHJpbmcoKSApOwotICAgIGRzdHJpbmcmIGtleSA9IHNfa2V5cygpLmJhY2soKTsKLSAgICBhc3NpZ25fb3AoIGtleSwgdmFyX25hbWUsIDAgKTsKLQotICAgIC8vIGNyZWF0ZSBhbmQgcmV0dXJuIG5ldyByZWNvcmQKLSAgICB2YXJpYWJsZV9kYXRhJiBuZXdfdmFyX2RhdGEgPSBzX3JlZ2lzdHJ5KClba2V5XTsKLSAgICAKLSAgICBuZXdfdmFyX2RhdGEubV92YXJfbmFtZSA9IGtleTsKLSAgICAKLSAgICByZXR1cm4gbmV3X3Zhcl9kYXRhOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdmFyaWFibGVfZGF0YSoKLWZpbmRfdmFyX3JlY29yZCggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgcmVnaXN0cnk6Oml0ZXJhdG9yIGl0ID0gc19yZWdpc3RyeSgpLmZpbmQoIHZhcl9uYW1lICk7Ci0KLSAgICByZXR1cm4gaXQgPT0gc19yZWdpc3RyeSgpLmVuZCgpID8gMCA6ICYoaXQtPnNlY29uZCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDIAotI3ByYWdtYSB3YXJuaW5nKHB1c2gpIAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgLy8gZ2V0ZW52Ci0jZW5kaWYKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGNzdHJpbmcKLXN5c19yZWFkX3ZhciggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICByZXR1cm4gTkROQk9PU1RfUlRfUEFSQU1fR0VURU5WKCB2YXJfbmFtZS5iZWdpbigpICk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDIAotI3ByYWdtYSB3YXJuaW5nKHBvcCkgCi0jZW5kaWYKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1zeXNfd3JpdGVfdmFyKCBjc3RyaW5nIHZhcl9uYW1lLCBmb3JtYXRfc3RyZWFtJiB2YXJfdmFsdWUgKQotewotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1BVVEVOViggdmFyX25hbWUsIGNzdHJpbmcoIHZhcl92YWx1ZS5zdHIoKSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZhcmlhYmxlX2Jhc2UKLXZhciggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSogdmQgPSBydF9lbnZfZGV0YWlsOjpmaW5kX3Zhcl9yZWNvcmQoIHZhcl9uYW1lICk7Ci0KLSAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggISF2ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIkZpcnN0IGFjY2VzcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgIiApIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHZhcl9uYW1lIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIgc2hvdWxkIGJlIHR5cGVkIiApICk7Ci0KLSAgICByZXR1cm4gdmFyaWFibGVfYmFzZSggKnZkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNzIxZmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGVudmlyb25tZW50IHN1YnN5c3RlbSBmb3J3YXJkIGRlY2xhcmF0aW9ucwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRU5WX0ZXRF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0VOVl9GV0RfSFBQXzA2MjYwNEdFUgotCi0jaWZkZWYgVU5ERVJfQ0UKLSNlcnJvciBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotI2VuZGlmCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi1jbGFzcyB2YXJpYWJsZV9iYXNlOwotdmFyaWFibGVfYmFzZSB2YXIoIGNzdHJpbmcgdmFyX25hbWUgKTsKLQotbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwgewotCi1zdHJ1Y3QgdmFyaWFibGVfZGF0YTsKLQotdmFyaWFibGVfZGF0YSYgIG5ld192YXJfcmVjb3JkKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci12YXJpYWJsZV9kYXRhKiAgZmluZF92YXJfcmVjb3JkKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci0KLWNzdHJpbmcgICAgICAgICBzeXNfcmVhZF92YXIoIGNzdHJpbmcgdmFyX25hbWUgKTsKLXZvaWQgICAgICAgICAgICBzeXNfd3JpdGVfdmFyKCBjc3RyaW5nIHZhcl9uYW1lLCBmb3JtYXRfc3RyZWFtJiB2YXJfdmFsdWUgKTsKLQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgdmFyaWFibGU7Ci0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRU5WX0ZXRF9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvbW9kaWZpZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L21vZGlmaWVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNmY2ZmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvbW9kaWZpZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgdmFyaWFibGUgbW9kaWZpZXJzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9FTlZfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9FTlZfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9uYW1lZF9wYXJhbXMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgbW9kaWZpZXJzICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3QgZ2xvYmFsX2lkX3Q+ICAgZ2xvYmFsX2lkOwotbmZwOjprZXl3b3JkPHN0cnVjdCBkZWZhdWx0X3ZhbHVlX3Q+ICAgICAgICAgICAgIGRlZmF1bHRfdmFsdWU7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGludGVycHJldGVyX3Q+ICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXI7Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0VOVl9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg2YmIyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA4MTkxMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBwcm9ncmFtIGVudmlyb25tZW50IHZhcmlhYmxlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9FTlZfVkFSSUFCTEVfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9FTlZfVkFSSUFCTEVfSFBQXzA2MjYwNEdFUgotCi0jaWZkZWYgVU5ERVJfQ0UKLSNlcnJvciBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotI2VuZGlmCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZndkLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBydW50aW1lOjplbnZpcm9ubWVudDo6dmFyaWFibGVfZGF0YSAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBydF9lbnZfZGV0YWlsIHsKLQotc3RydWN0IHZhcmlhYmxlX2RhdGEgOiBwdWJsaWMgcnVudGltZTo6cGFyYW1ldGVyIHsKLSAgICBjc3RyaW5nICAgICAgICAgbV92YXJfbmFtZTsKLSAgICBkc3RyaW5nICAgICAgICAgbV9nbG9iYWxfaWQ7Ci0gICAgYXJndW1lbnRfcHRyICAgIG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBydF9lbnZfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQ6OnZhcmlhYmxlX2Jhc2UgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgdmFyaWFibGVfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgICAgdmFyaWFibGVfYmFzZSggcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSYgZGF0YSApIDogbV9kYXRhKCAmZGF0YSApIHt9Ci0KLSAgICAvLyBhcmd1bWVudHMgYWNjZXNzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGNvbnN0JiAgICB2YWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXJnX3ZhbHVlPFQ+KCAqbV9kYXRhLT5tX3ZhbHVlICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkICAgICAgICB2YWx1ZSggbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYoIGhhc192YWx1ZSgpICkKLSAgICAgICAgICAgIHJlcyA9IGFyZ192YWx1ZTxUPiggKm1fZGF0YS0+bV92YWx1ZSApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMucmVzZXQoKTsKLSAgICB9Ci0KLSAgICBib29sICAgICAgICBoYXNfdmFsdWUoKSBjb25zdCAgIHsgcmV0dXJuIG1fZGF0YS0+bV92YWx1ZSE9MDsgfQotICAgIGNzdHJpbmcgICAgIG5hbWUoKSBjb25zdCAgICAgICAgeyByZXR1cm4gbV9kYXRhLT5tX3Zhcl9uYW1lOyB9Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhKiAgbV9kYXRhOwotfSA7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQ6OnZhcmlhYmxlICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCA9IGNzdHJpbmc+Ci1jbGFzcyB2YXJpYWJsZSA6IHB1YmxpYyB2YXJpYWJsZV9iYXNlIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBleHBsaWNpdCAgICB2YXJpYWJsZSggY3N0cmluZyB2YXJfbmFtZSApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXJzPgotICAgIGV4cGxpY2l0ICAgIHZhcmlhYmxlKCBjc3RyaW5nIHZhcl9uYW1lLCBNb2RpZmllcnMgY29uc3QmIG0gKTsKLQotICAgIGV4cGxpY2l0ICAgIHZhcmlhYmxlKCBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhJiBkYXRhICkgCi0gICAgOiB2YXJpYWJsZV9iYXNlKCBkYXRhICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotCi0gICAgLy8gb3RoZXIgdmFyaWFibGUgYXNzaWdubWVudAotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggdmFyaWFibGUgY29uc3QmIHYgKSAgICAgICAgICAgICAgeyBtX2RhdGEgPSB2Lm1fZGF0YTsgfQotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICBUIGNvbnN0JiAgICB2YWx1ZSgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHZhcmlhYmxlX2Jhc2U6OnZhbHVlPFQ+KCk7IH0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwNikpIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDU5MykpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkICAgICAgICB2YWx1ZSggbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKSBjb25zdCAgICAgIHsgdmFyaWFibGVfYmFzZTo6dmFsdWUoIHJlcyApOyB9Ci0jZWxzZQotICAgIHVzaW5nICAgICAgIHZhcmlhYmxlX2Jhc2U6OnZhbHVlOwotI2VuZGlmCi0KLSAgICAvLyBWYWx1ZSBhc3NpZ25tZW50Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIFYgY29uc3QmIHYgKQotICAgIHsKLSAgICAgICAgaWYoICFoYXNfdmFsdWUoKSApCi0gICAgICAgICAgICBtX2RhdGEtPm1fdmFsdWUucmVzZXQoIG5ldyB0eXBlZF9hcmd1bWVudDxUPiggKm1fZGF0YSApICk7Ci0KLSAgICAgICAgYXJnX3ZhbHVlPFQ+KCAqbV9kYXRhLT5tX3ZhbHVlICkgPSB2OwotCi0gICAgICAgIHJ0X2Vudl9kZXRhaWw6OnN5c193cml0ZV92YXIoIG1fZGF0YS0+bV92YXJfbmFtZSwgZm9ybWF0X3N0cmVhbSgpLnJlZigpIDw8IHZhbHVlKCkgKTsKLSAgICB9Ci19OyAvLyBjbGFzcyB2YXJpYWJsZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHIsdHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHI+Jgotb3BlcmF0b3I8PCggc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyPiYgb3MsIHZhcmlhYmxlPFQ+IGNvbnN0JiB2ICkKLXsKLSAgICBvcyA8PCB2Lm5hbWUoKSA8PCAnPSc7Ci0KLSAgICBpZiggdi5oYXNfdmFsdWUoKSApCi0gICAgICAgIG9zIDw8IHYudmFsdWUoKTsKLQotICAgIHJldHVybiBvczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCB2YXJpYWJsZTxUPiBldiwgViBjb25zdCYgdiApCi17Ci0gICAgcmV0dXJuIGV2Lmhhc192YWx1ZSgpICYmIGV2LnZhbHVlKCkgPT0gdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCBWIGNvbnN0JiB2LCB2YXJpYWJsZTxUPiBldiApCi17Ci0gICAgcmV0dXJuIGV2Lmhhc192YWx1ZSgpICYmIGV2LnZhbHVlKCkgPT0gdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCB2YXJpYWJsZTxUPiBldiwgViBjb25zdCYgdiApCi17Ci0gICAgcmV0dXJuICFldi5oYXNfdmFsdWUoKSB8fCBldi52YWx1ZSgpICE9IHY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggViBjb25zdCYgdiwgdmFyaWFibGU8VD4gZXYgKQotewotICAgIHJldHVybiAhZXYuaGFzX3ZhbHVlKCkgfHwgZXYudmFsdWUoKSAhPSB2OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyBJbXBsZW1lbnRhdGlvbgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5ocHA+Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQ6OnZhcmlhYmxlICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12YXJpYWJsZTxUPjo6dmFyaWFibGUoIGNzdHJpbmcgdmFyX25hbWUgKQotOiB2YXJpYWJsZV9iYXNlKCBlbnZpcm9ubWVudDo6dmFyPFQ+KCB2YXJfbmFtZSApICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcnM+Ci12YXJpYWJsZTxUPjo6dmFyaWFibGUoIGNzdHJpbmcgdmFyX25hbWUsIE1vZGlmaWVycyBjb25zdCYgbSApCi06IHZhcmlhYmxlX2Jhc2UoIGVudmlyb25tZW50Ojp2YXI8VD4oIHZhcl9uYW1lLCBtICkgKQote30KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9FTlZfVkFSSUFCTEVfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZmZiNTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZ2xvYmFsIGZyYW1ld29yayBsZXZlbCBmb3J3YXJkIGRlY2xhcmF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9GV0RfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9GV0RfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotY2xhc3MgcGFyYW1ldGVyOwotCi1jbGFzcyBhcmd1bWVudDsKLXR5cGVkZWYgc2hhcmVkX3B0cjxhcmd1bWVudD4gYXJndW1lbnRfcHRyOwotdHlwZWRlZiBzaGFyZWRfcHRyPGFyZ3VtZW50IGNvbnN0PiBjb25zdF9hcmd1bWVudF9wdHI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIHZhbHVlX2ludGVycHJldGVyOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgdHlwZWRfYXJndW1lbnQ7Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRldEX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2ludGVycHJldF9hcmd1bWVudF92YWx1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGVjNzYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2ludGVycHJldF9hcmd1bWVudF92YWx1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZhdWx0IGFsZ29yaXRobXMgZm9yIHN0cmluZyB0byBzcGVjaWZpYyB0eXBlIGNvbnZlcnRpb25zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9JTlRFUlBSRVRfQVJHVU1FTlRfVkFMVUVfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9JTlRFUlBSRVRfQVJHVU1FTlRfVkFMVUVfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy8gU1RMCi0vLyAhISBjb3VsZCB3ZSBlbGltaW5hdGUgdGhlc2UgaW5jbHVkZXM/Ci0jaW5jbHVkZSA8bGlzdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBydW50aW1lOjppbnRlcnByZXRfYXJndW1lbnRfdmFsdWUgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIHJldHVybnMgdHJ1ZSBpZiBzb3VyY2UgaXMgdXNlZCBmYWxzZSBvdGhlcndpc2UKLQotLy8gZ2VuZXJpYyBjYXNlCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsIHsKLSAgICBzdGF0aWMgYm9vbCBfKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDwiIDw8IHR5cGVpZChUKS5uYW1lKCkgPDwgIj4iICk7Ci0KLSAgICAgICAgcmVzID0gbGV4aWNhbF9jYXN0PFQ+KCBzb3VyY2UgKTsKLQotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIlN0cmluZyAiIDw8IHNvdXJjZSA8PCAiIGlzIGludGVycHJldGVkIGFzICIgPDwgKnJlcyApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIGRzdHJpbmcgY2FzZQotdGVtcGxhdGU8Pgotc3RydWN0IGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGRzdHJpbmc+IHsKLSAgICBzdGF0aWMgYm9vbCBfKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPGRzdHJpbmc+JiByZXMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxkc3RyaW5nPiIgKTsKLQotICAgICAgICByZXMgPSBkc3RyaW5nKCk7Ci0gICAgICAgIGFzc2lnbl9vcCggKnJlcywgc291cmNlLCAwICk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gY3N0cmluZyBjYXNlCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8Y3N0cmluZz4gewotICAgIHN0YXRpYyBib29sIF8oIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8Y3N0cmluZz4mIHJlcyApCi0gICAgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGNzdHJpbmc+IiApOwotCi0gICAgICAgIHJlcyA9IHNvdXJjZTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgdHlwZSBib29sCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8Ym9vbD4gewotICAgIHN0YXRpYyBib29sIF8oIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8Ym9vbD4mIHJlcyApCi0gICAgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGJvb2w+IiApOwotCi0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgWUVTKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJZRVMiICkgKTsKLSAgICAgICAgc3RhdGljIGxpdGVyYWxfY3N0cmluZyBZKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJZIiApICk7Ci0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgTk8oIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIk5PIiApICk7Ci0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgTiggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiTiIgKSApOwotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIG9uZSggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiMSIgKSApOwotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIHplcm8oIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIjAiICkgKTsKLQotICAgICAgICBzb3VyY2UudHJpbSgpOwotCi0gICAgICAgIGlmKCBjYXNlX2luc19lcSggc291cmNlLCBZRVMgKSB8fCBjYXNlX2luc19lcSggc291cmNlLCBZICkgfHwgY2FzZV9pbnNfZXEoIHNvdXJjZSwgb25lICkgKSB7Ci0gICAgICAgICAgICByZXMgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiggY2FzZV9pbnNfZXEoIHNvdXJjZSwgTk8gKSB8fCBjYXNlX2luc19lcSggc291cmNlLCBOICkgfHwgY2FzZV9pbnNfZXEoIHNvdXJjZSwgemVybyApICkgewotICAgICAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wKLWludGVycHJldF9hcmd1bWVudF92YWx1ZSggY3N0cmluZyBzb3VyY2UsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgcmVzLCBsb25nICkKLXsKLSAgICByZXR1cm4gaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8VD46Ol8oIHNvdXJjZSwgcmVzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIHNwZWNpYWxpemF0aW9uIGZvciBsaXN0IG9mIHZhbHVlcwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29sCi1pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8c3RkOjpsaXN0PFQ+ID4mIHJlcywgaW50ICkKLXsKLSAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZTxzdGQ6Omxpc3Q8VD4+IiApOwotCi0gICAgcmVzID0gc3RkOjpsaXN0PFQ+KCk7Ci0KLSAgICB3aGlsZSggIXNvdXJjZS5pc19lbXB0eSgpICkgewotICAgICAgICAvLyAhISBzaG91bGQgd2UgdXNlIHRva2VuX2l0ZXJhdG9yCi0gICAgICAgIGNzdHJpbmc6Oml0ZXJhdG9yIHNpbmdsZV92YWx1ZV9lbmQgPSBzdGQ6OmZpbmQoIHNvdXJjZS5iZWdpbigpLCBzb3VyY2UuZW5kKCksIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcsJyApICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotICAgICAgICBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIGNzdHJpbmcoIHNvdXJjZS5iZWdpbigpLCBzaW5nbGVfdmFsdWVfZW5kICksIHZhbHVlLCAwICk7Ci0KLSAgICAgICAgcmVzLT5wdXNoX2JhY2soICp2YWx1ZSApOwotCi0gICAgICAgIHNvdXJjZS50cmltX2xlZnQoIHNpbmdsZV92YWx1ZV9lbmQgKyAxICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfSU5URVJQUkVUX0FSR1VNRU5UX1ZBTFVFX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2ZiODFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGFic3RyYWN0IGludGVyZmFjZSBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJ1bnRpbWU6OnBhcmFtZXRlciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHBhcmFtZXRlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+cGFyYW1ldGVyKCkge30KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ0NzQyOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IG9wdGlvbmFsIGludGVybmFsIHRyYWNpbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1RSQUNFX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfVFJBQ0VfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfUlRfUEFSQU1fREVCVUcKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoIHN0ciApIHN0ZDo6Y2VyciA8PCBzdHIgPDwgc3RkOjplbmRsCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCBzdHIgKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9UUkFDRV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzhjZTc5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGV4Y2VwdGlvbnMgYW5kIHZhbGlkYXRpb24gdG9vbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLS8vIFNUTAotI2lmZGVmIE5ETkJPT1NUX1JUX1BBUkFNX0VYQ0VQVElPTl9JTkhFUklUX1NURAotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmxvZ2ljX2Vycm9yICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBsb2dpY19lcnJvciAKLSNpZmRlZiBORE5CT09TVF9SVF9QQVJBTV9FWENFUFRJT05fSU5IRVJJVF9TVEQKLTogcHVibGljIHN0ZDo6ZXhjZXB0aW9uCi0jZW5kaWYKLXsKLSAgICB0eXBlZGVmIHNoYXJlZF9wdHI8ZHN0cmluZz4gZHN0cmluZ19wdHI7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IgLy8gISEgY291bGQgd2UgZWxpbWluYXRlIHNoYXJlZF9wdHIKLSAgICBleHBsaWNpdCAgICBsb2dpY19lcnJvciggY3N0cmluZyBtc2cgKSA6IG1fbXNnKCBuZXcgZHN0cmluZyggbXNnLmJlZ2luKCksIG1zZy5zaXplKCkgKSApIHt9Ci0gICAgfmxvZ2ljX2Vycm9yKCkgdGhyb3coKSAgICAgICAgICAgICAgICAgICAgICAgICAge30KLQotICAgIGRzdHJpbmcgY29uc3QmICAgbXNnKCkgY29uc3QgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuICptX21zZzsgfQotICAgIHZpcnR1YWwgY2hhcl90eXBlIGNvbnN0KiB3aGF0KCkgY29uc3QgdGhyb3coKSAgIHsgcmV0dXJuIG1fbXNnLT5jX3N0cigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZHN0cmluZ19wdHIgbV9tc2c7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgcnVudGltZTo6cmVwb3J0X2xvZ2ljX2Vycm9yICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWlubGluZSB2b2lkCi1yZXBvcnRfbG9naWNfZXJyb3IoIGZvcm1hdF9zdHJlYW0mIG1zZyApCi17Ci0gICAgdGhyb3cgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpsb2dpY19lcnJvciggbXNnLnN0cigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fUkVQT1JUX0xPR0lDX0VSUk9SKCBtc2cgKSBcCi0gICAgbmRuYm9vc3Q6Ok5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6cmVwb3J0X2xvZ2ljX2Vycm9yKCBmb3JtYXRfc3RyZWFtKCkucmVmKCkgPDwgbXNnICkKLQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggYiwgbXNnICkgXAotICAgIGlmKCBiICkge30gZWxzZSBORE5CT09TVF9SVF9QQVJBTV9SRVBPUlRfTE9HSUNfRVJST1IoIG1zZyApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfVkFMSURBVElPTl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZjZmYwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgaGVscGVycyBmb3IgY3JlYXRpbmcgY3Vzb20gb3V0cHV0IG1hbmlwdWxhdG9ycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9UUklWSUFMX1NJR05MRVRPTl9IUFBfMDIwNTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVFJJVklBTF9TSUdOTEVUT05fSFBQXzAyMDUwNUdFUgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9ub25jb3B5YWJsZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgc2luZ2xldG9uICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+Ci1jbGFzcyBzaW5nbGV0b24gOiBwcml2YXRlIG5kbmJvb3N0Ojpub25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIERlcml2ZWQmIGluc3RhbmNlKCkgeyBzdGF0aWMgRGVyaXZlZCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9ICAgIAotcHJvdGVjdGVkOgotICAgIHNpbmdsZXRvbigpICB7fQotICAgIH5zaW5nbGV0b24oKSB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fQ09OUyggdHlwZSApICAgICAgIFwKLWZyaWVuZCBjbGFzcyBuZG5ib29zdDo6dW5pdF90ZXN0OjpzaW5nbGV0b248dHlwZT47IFwKLXR5cGUoKSB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIGluc3QgKSBcCi10ZW1wbGF0ZSBjbGFzcyB1bml0X3Rlc3Q6OnNpbmdsZXRvbjwgTkROQk9PU1RfSk9JTiggaW5zdCwgX3QgKSA+IDsgXAotbmFtZXNwYWNlIHsgTkROQk9PU1RfSk9JTiggaW5zdCwgX3QpJiBpbnN0ID0gTkROQk9PU1RfSk9JTiggaW5zdCwgX3QpOjppbnN0YW5jZSgpOyB9Ci0KLSNlbGlmIGRlZmluZWQoX19BUFBMRV9DQ19fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA8IDQKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggaW5zdCApIFwKLXN0YXRpYyBORE5CT09TVF9KT0lOKCBpbnN0LCBfdCkmIGluc3QgPSBORE5CT09TVF9KT0lOIChpbnN0LCBfdCk6Omluc3RhbmNlKCk7Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggaW5zdCApIFwKLW5hbWVzcGFjZSB7IE5ETkJPT1NUX0pPSU4oIGluc3QsIF90KSYgaW5zdCA9IE5ETkJPT1NUX0pPSU4oIGluc3QsIF90KTo6aW5zdGFuY2UoKTsgfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RSSVZJQUxfU0lHTkxFVE9OX0hQUF8wMjA1MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmUxMTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMi0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiB3cmFwcyBzdHJzdHJlYW0gYW5kIHN0cmluZ3N0cmVhbSAoZGVwZW5kcyB3aXRoIG9uZSBpcyBwcmVzZW50KQotLy8gICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB0aGUgdW5pZmllZCBpbnRlcmZhY2UKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1dSQVBfU1RSSU5HU1RSRUFNX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfV1JBUF9TVFJJTkdTVFJFQU1fSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotLy8gU1RMCi0jaWZkZWYgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0jaW5jbHVkZSA8c3Ryc3RyZWFtPiAgICAgICAgLy8gZm9yIHN0ZDo6b3N0cnN0cmVhbQotI2Vsc2UKLSNpbmNsdWRlIDxzc3RyZWFtPiAgICAgICAgICAvLyBmb3Igc3RkOjpvc3RyaW5nc3RyZWFtCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1jbGFzcyBiYXNpY193cmFwX3N0cmluZ3N0cmVhbSB7Ci1wdWJsaWM6Ci0jaWYgZGVmaW5lZChORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUykKLSAgICB0eXBlZGVmIHN0ZDo6b3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgIHdyYXBwZWRfc3RyZWFtOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJzdHJlYW08Q2hhclQ+ICAgICB3cmFwcGVkX3N0cmVhbTsKLSNlbHNlCi0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJpbmdzdHJlYW08Q2hhclQ+ICB3cmFwcGVkX3N0cmVhbTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtJiAgICAgICAgcmVmKCk7Ci0gICAgd3JhcHBlZF9zdHJlYW0mICAgICAgICAgICAgICAgICBzdHJlYW0oKTsKLSAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVD4gY29uc3QmIHN0cigpOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHdyYXBwZWRfc3RyZWFtICAgICAgICAgICAgICAgICAgbV9zdHJlYW07Ci0gICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQ+ICAgICAgICBtX3N0cjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVD4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1vcGVyYXRvcjw8KCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHRhcmcsIFQgY29uc3QmIHQgKQotewotICAgIHRhcmcuc3RyZWFtKCkgPDwgdDsKLSAgICByZXR1cm4gdGFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPjo6d3JhcHBlZF9zdHJlYW0mCi1iYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD46OnN0cmVhbSgpCi17Ci0gICAgcmV0dXJuIG1fc3RyZWFtOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JgotYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+OjpyZWYoKQoteyAKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVD4gY29uc3QmCi1iYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD46OnN0cigpCi17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSAgICBtX3N0ci5hc3NpZ24oIG1fc3RyZWFtLnN0cigpLCBtX3N0cmVhbS5wY291bnQoKSApOwotICAgIG1fc3RyZWFtLmZyZWV6ZSggZmFsc2UgKTsKLSNlbHNlCi0gICAgbV9zdHIgPSBtX3N0cmVhbS5zdHIoKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG1fc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHNyYyApCi17Ci0gICAgdGFyZyA8PCBzcmMuc3RyKCk7Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFIAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBzdGQ6Omlvc19iYXNlJiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKm1hbikoc3RkOjppb3NfYmFzZSYpICkKLXsKLSAgICB0YXJnLnN0cmVhbSgpIDw8IG1hbjsKLSAgICByZXR1cm4gdGFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsdHlwZW5hbWUgRWxlbSx0eXBlbmFtZSBUcj4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1vcGVyYXRvcjw8KCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHRhcmcsIHN0ZDo6YmFzaWNfb3N0cmVhbTxFbGVtLFRyPiYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICptYW4pKHN0ZDo6YmFzaWNfb3N0cmVhbTxFbGVtLCBUcj4mKSApCi17Ci0gICAgdGFyZy5zdHJlYW0oKSA8PCBtYW47Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULHR5cGVuYW1lIEVsZW0sdHlwZW5hbWUgVHI+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBzdGQ6OmJhc2ljX2lvczxFbGVtLCBUcj4mIChORE5CT09TVF9URVNUX0NBTExfREVDTCAqbWFuKShzdGQ6OmJhc2ljX2lvczxFbGVtLCBUcj4mKSApCi17Ci0gICAgdGFyZy5zdHJlYW0oKSA8PCBtYW47Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB3cmFwX3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXR5cGVkZWYgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Y2hhcj4gICAgICAgd3JhcF9zdHJpbmdzdHJlYW07Ci10eXBlZGVmIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPHdjaGFyX3Q+ICAgIHdyYXBfd3N0cmluZ3N0cmVhbTsKLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1dSQVBfU1RSSU5HU1RSRUFNX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy94bWxfcHJpbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMveG1sX3ByaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGYyOTcyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy94bWxfcHJpbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbW1vbiBjb2RlIHVzZWQgYnkgYW55IGFnZW50IHNlcnZpbmcgYXMgWE1MIHByaW50ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX1BSSU5URVJfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9QUklOVEVSX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZpeGVkX21hcHBpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY3VzdG9tX21hbmlwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB4bWwgcHJpbnQgaGVscGVycyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWlubGluZSB2b2lkCi1wcmludF9lc2NhcGVkKCBzdGQ6Om9zdHJlYW0mIHdoZXJlX3RvLCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIHN0YXRpYyBmaXhlZF9tYXBwaW5nPGNoYXIsY2hhciBjb25zdCo+IGNoYXJfdHlwZSgKLSAgICAgICAgJzwnICwgImx0IiwKLSAgICAgICAgJz4nICwgImd0IiwKLSAgICAgICAgJyYnICwgImFtcCIsCi0gICAgICAgICdcJycsICJhcG9zIiAsCi0gICAgICAgICciJyAsICJxdW90IiwKLQotICAgICAgICAwCi0gICAgKTsKLQotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggY2hhciwgYywgdmFsdWUgKSB7Ci0gICAgICAgIGNoYXIgY29uc3QqIHJlZiA9IGNoYXJfdHlwZVtjXTsKLQotICAgICAgICBpZiggcmVmICkKLSAgICAgICAgICAgIHdoZXJlX3RvIDw8ICcmJyA8PCByZWYgPDwgJzsnOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3aGVyZV90byA8PCBjOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQKLXByaW50X2VzY2FwZWQoIHN0ZDo6b3N0cmVhbSYgd2hlcmVfdG8sIHN0ZDo6c3RyaW5nIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgcHJpbnRfZXNjYXBlZCggd2hlcmVfdG8sIGNvbnN0X3N0cmluZyggdmFsdWUgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLXByaW50X2VzY2FwZWQoIHN0ZDo6b3N0cmVhbSYgd2hlcmVfdG8sIFQgY29uc3QmIHZhbHVlICkKLXsKLSAgICB3aGVyZV90byA8PCB2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdHlwZWRlZiBjdXN0b21fbWFuaXA8c3RydWN0IGF0dHJfdmFsdWVfdD4gYXR0cl92YWx1ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0mCi1vcGVyYXRvcjw8KCBjdXN0b21fcHJpbnRlcjxhdHRyX3ZhbHVlPiBjb25zdCYgcCwgVCBjb25zdCYgdmFsdWUgKQotewotICAgICpwIDw8ICI9XCIiOwotICAgIHByaW50X2VzY2FwZWQoICpwLCB2YWx1ZSApOwotICAgICpwIDw8ICciJzsKLQotICAgIHJldHVybiAqcDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdHlwZWRlZiBjdXN0b21fbWFuaXA8c3RydWN0IGNkYXRhX3Q+IGNkYXRhOwotCi1pbmxpbmUgc3RkOjpvc3RyZWFtJgotb3BlcmF0b3I8PCggY3VzdG9tX3ByaW50ZXI8Y2RhdGE+IGNvbnN0JiBwLCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIHJldHVybiAqcCA8PCBORE5CT09TVF9URVNUX0woICI8IVtDREFUQVsiICkgPDwgdmFsdWUgPDwgTkROQk9PU1RfVEVTVF9MKCAiXV0+IiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1hNTF9QUklOVEVSX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1YTlmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9VVUlEX0FBMTVFNzRBODU2RjExRTA4QjhEOTNGMjQ4MjQwMTlCCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfQUExNUU3NEE4NTZGMTFFMDhCOEQ5M0YyNDgyNDAxOUIKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwdXNoLDEpCi0jZW5kaWYKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSBFbWlsIERvdGNoZXZza2kgYW5kIFJldmVyZ2UgU3R1ZGlvcywgSW5jLgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L3Rocm93X2V4Y2VwdGlvbi5odG1sCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9hdHRyaWJ1dGVfbm9yZXR1cm4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRSApICYmIGRlZmluZWQoIF9fQk9STEFORENfXyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkzKSApCi0jIGRlZmluZSBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUgKSAmJiBkZWZpbmVkKCBORE5CT09TVF9NU1ZDICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPCAxMzEwICkKLSMgZGVmaW5lIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRSApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1RIUk9XX0VYQ0VQVElPTih4KSA6Om5kbmJvb3N0OjpleGNlcHRpb25fZGV0YWlsOjp0aHJvd19leGNlcHRpb25fKHgsTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTixfX0ZJTEVfXyxfX0xJTkVfXykKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9USFJPV19FWENFUFRJT04oeCkgOjpuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHgpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0jaWZkZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi12b2lkIHRocm93X2V4Y2VwdGlvbiggc3RkOjpleGNlcHRpb24gY29uc3QgJiBlICk7IC8vIHVzZXIgZGVmaW5lZAotCi0jZWxzZQotCi1pbmxpbmUgdm9pZCB0aHJvd19leGNlcHRpb25fYXNzZXJ0X2NvbXBhdGliaWxpdHkoIHN0ZDo6ZXhjZXB0aW9uIGNvbnN0ICYgKSB7IH0KLQotdGVtcGxhdGU8Y2xhc3MgRT4gTkROQk9PU1RfQVRUUklCVVRFX05PUkVUVVJOIGlubGluZSB2b2lkIHRocm93X2V4Y2VwdGlvbiggRSBjb25zdCAmIGUgKQotewotICAgIC8vQWxsIGJvb3N0IGV4Y2VwdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGRlcml2ZSBmcm9tIHN0ZDo6ZXhjZXB0aW9uLAotICAgIC8vdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBORE5CT09TVF9OT19FWENFUFRJT05TLgotICAgIHRocm93X2V4Y2VwdGlvbl9hc3NlcnRfY29tcGF0aWJpbGl0eShlKTsKLQotI2lmbmRlZiBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRQotICAgIHRocm93IGVuYWJsZV9jdXJyZW50X2V4Y2VwdGlvbihlbmFibGVfZXJyb3JfaW5mbyhlKSk7Ci0jZWxzZQotICAgIHRocm93IGU7Ci0jZW5kaWYKLX0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUgKQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4KLSAgICAgICAgdm9pZAotICAgICAgICB0aHJvd19leGNlcHRpb25fKCBFIGNvbnN0ICYgeCwgY2hhciBjb25zdCAqIGN1cnJlbnRfZnVuY3Rpb24sIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgc2V0X2luZm8oCi0gICAgICAgICAgICAgICAgICAgIHNldF9pbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2luZm8oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX2Vycm9yX2luZm8oeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dfZnVuY3Rpb24oY3VycmVudF9mdW5jdGlvbikpLAotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dfZmlsZShmaWxlKSksCi0gICAgICAgICAgICAgICAgICAgIHRocm93X2xpbmUobGluZSkpKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGltZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90aW1lci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxOWYzNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90aW1lci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgYm9vc3QgdGltZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTQtOTkuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3RpbWVyIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gIDAxIEFwciAwMSAgTW9kaWZpZWQgdG8gdXNlIG5ldyA8bmRuYm9vc3QvbGltaXRzLmhwcD4gaGVhZGVyLiAoSk1hZGRvY2spCi0vLyAgMTIgSmFuIDAxICBDaGFuZ2UgdG8gaW5saW5lIGltcGxlbWVudGF0aW9uIHRvIGFsbG93IHVzZSB3aXRob3V0IGxpYnJhcnkKLS8vICAgICAgICAgICAgIGJ1aWxkcy4gU2VlIGRvY3MgZm9yIG1vcmUgcmF0aW9uYWxlLiAoQmVtYW4gRGF3ZXMpIAotLy8gIDI1IFNlcCA5OSAgZWxhcHNlZF9tYXgoKSBhbmQgZWxhcHNlZF9taW4oKSBhZGRlZCAoSm9obiBNYWRkb2NrKQotLy8gIDE2IEp1bCA5OSAgU2Vjb25kIGJldGEKLS8vICAgNiBKdWwgOTkgIEluaXRpYWwgYm9vc3QgdmVyc2lvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1RJTUVSX0hQUAotI2RlZmluZSBORE5CT09TVF9USU1FUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3RpbWU+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLQotIyBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICAgIG5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmNsb2NrX3Q7IHVzaW5nIDo6Y2xvY2s7IH0KLSMgZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAgdGltZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQSB0aW1lciBvYmplY3QgbWVhc3VyZXMgZWxhcHNlZCB0aW1lLgotCi0vLyAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBpbXBsZW1lbnRhdGlvbnMgbWVhc3VyZSB3YWxsIGNsb2NrIHJhdGhlciB0aGFuIENQVQotLy8gIHRpbWUgc2luY2UgdGhlIGludGVuZGVkIHVzZSBpcyBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBvbiBzeXN0ZW1zIHdoZXJlCi0vLyAgdG90YWwgZWxhcHNlZCB0aW1lIGlzIG1vcmUgaW1wb3J0YW50IHRoYW4ganVzdCBwcm9jZXNzIG9yIENQVSB0aW1lLgotCi0vLyAgV2FybmluZ3M6IFRoZSBtYXhpbXVtIG1lYXN1cmFibGUgZWxhcHNlZCB0aW1lIG1heSB3ZWxsIGJlIG9ubHkgNTk2LjUrIGhvdXJzCi0vLyAgZHVlIHRvIGltcGxlbWVudGF0aW9uIGxpbWl0YXRpb25zLiAgVGhlIGFjY3VyYWN5IG9mIHRpbWluZ3MgZGVwZW5kcyBvbiB0aGUKLS8vICBhY2N1cmFjeSBvZiB0aW1pbmcgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0sIGFuZAotLy8gIHRoaXMgdmFyaWVzIGEgZ3JlYXQgZGVhbCBmcm9tIHBsYXRmb3JtIHRvIHBsYXRmb3JtLgotCi1jbGFzcyB0aW1lcgotewotIHB1YmxpYzoKLSAgICAgICAgIHRpbWVyKCkgeyBfc3RhcnRfdGltZSA9IHN0ZDo6Y2xvY2soKTsgfSAvLyBwb3N0Y29uZGl0aW9uOiBlbGFwc2VkKCk9PTAKLS8vICAgICAgICAgdGltZXIoIGNvbnN0IHRpbWVyJiBzcmMgKTsgICAgICAvLyBwb3N0OiBlbGFwc2VkKCk9PXNyYy5lbGFwc2VkKCkKLS8vICAgICAgICB+dGltZXIoKXt9Ci0vLyAgdGltZXImIG9wZXJhdG9yPSggY29uc3QgdGltZXImIHNyYyApOyAgLy8gcG9zdDogZWxhcHNlZCgpPT1zcmMuZWxhcHNlZCgpCi0gIHZvaWQgICByZXN0YXJ0KCkgeyBfc3RhcnRfdGltZSA9IHN0ZDo6Y2xvY2soKTsgfSAvLyBwb3N0OiBlbGFwc2VkKCk9PTAKLSAgZG91YmxlIGVsYXBzZWQoKSBjb25zdCAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBlbGFwc2VkIHRpbWUgaW4gc2Vjb25kcwotICAgIHsgcmV0dXJuICBkb3VibGUoc3RkOjpjbG9jaygpIC0gX3N0YXJ0X3RpbWUpIC8gQ0xPQ0tTX1BFUl9TRUM7IH0KLQotICBkb3VibGUgZWxhcHNlZF9tYXgoKSBjb25zdCAgIC8vIHJldHVybiBlc3RpbWF0ZWQgbWF4aW11bSB2YWx1ZSBmb3IgZWxhcHNlZCgpCi0gIC8vIFBvcnRhYmlsaXR5IHdhcm5pbmc6IGVsYXBzZWRfbWF4KCkgbWF5IHJldHVybiB0b28gaGlnaCBhIHZhbHVlIG9uIHN5c3RlbXMKLSAgLy8gd2hlcmUgc3RkOjpjbG9ja190IG92ZXJmbG93cyBvciByZXNldHMgYXQgc3VycHJpc2luZyB2YWx1ZXMuCi0gIHsKLSAgICByZXR1cm4gKGRvdWJsZSgoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OmNsb2NrX3Q+OjptYXgpKCkpCi0gICAgICAgLSBkb3VibGUoX3N0YXJ0X3RpbWUpKSAvIGRvdWJsZShDTE9DS1NfUEVSX1NFQyk7IAotICB9Ci0KLSAgZG91YmxlIGVsYXBzZWRfbWluKCkgY29uc3QgICAgICAgICAgICAvLyByZXR1cm4gbWluaW11bSB2YWx1ZSBmb3IgZWxhcHNlZCgpCi0gICB7IHJldHVybiBkb3VibGUoMSkvZG91YmxlKENMT0NLU19QRVJfU0VDKTsgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjpjbG9ja190IF9zdGFydF90aW1lOwotfTsgLy8gdGltZXIKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9USU1FUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiNjc3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5ODAgKzAsMCBAQAotLy8gIHR1cGxlX2Jhc2ljLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0vLyBPdXRzaWRlIGhlbHA6Ci0vLyBUaGlzIGFuZCB0aGF0LCBHYXJ5IFBvd2VsbC4KLS8vIEZpeGVkIHJldHVybiB0eXBlcyBmb3IgZ2V0X2hlYWQvZ2V0X3RhaWwKLS8vICggYW5kIG90aGVyIGJ1Z3MgKSBwZXIgc3VnZ2VzdGlvbiBvZiBKZW5zIE1hdXJlcgotLy8gc2ltcGxpZmllZCBlbGVtZW50IHR5cGUgYWNjZXNzb3JzICsgYnVnIGZpeCAgKEplcmVteSBTaWVrKQotLy8gU2V2ZXJhbCBjaGFuZ2VzL2FkZGl0aW9ucyBhY2NvcmRpbmcgdG8gc3VnZ2VzdGlvbnMgYnkgRG91Z2xhcyBHcmVnb3IsCi0vLyBXaWxsaWFtIEtlbXBmLCBWZXNhIEthcnZvbmVuLCBKb2huIE1heCBTa2FsbGVyLCBFZCBCcmV5LCBCZW1hbiBEYXdlcywKLS8vIERhdmlkIEFicmFoYW1zLgotCi0vLyBSZXZpc2lvbiBoaXN0b3J5OgotLy8gMjAwMiAwNSAwMSBIdWdvIER1bmNhbjogRml4IGZvciBCb3JsYW5kIGFmdGVyIEphYWtrbydzIHByZXZpb3VzIGNoYW5nZXMKLS8vIDIwMDIgMDQgMTggSmFha2tvOiB0dXBsZSBlbGVtZW50IHR5cGVzIGNhbiBiZSB2b2lkIG9yIHBsYWluIGZ1bmN0aW9uCi0vLyAgICAgICAgICAgICAgICAgICAgdHlwZXMsIGFzIGxvbmcgYXMgbm8gb2JqZWN0IGlzIGNyZWF0ZWQuCi0vLyAgICAgICAgICAgICAgICAgICAgVHVwbGUgb2JqZWN0cyBjYW4gbm8gaG9sZCBldmVuIG5vbmNvcHlhYmxlIHR5cGVzCi0vLyAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBhcnJheXMuCi0vLyAyMDAxIDEwIDIyIEpvaG4gTWFkZG9jawotLy8gICAgICBGaXhlcyBmb3IgQm9ybGFuZCBDKysKLS8vIDIwMDEgMDggMzAgRGF2aWQgQWJyYWhhbXMKLS8vICAgICAgQWRkZWQgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY29uczw+LgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9UVVBMRV9CQVNJQ19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFVQTEVfQkFTSUNfSFBQCi0KLQotI2luY2x1ZGUgPHV0aWxpdHk+IC8vIG5lZWRlZCBmb3IgdGhlIGFzc2lnbm1lbnQgZnJvbSBwYWlyIHRvIHR1cGxlCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcCIgLy8gbmVlZGVkIGZvciBORE5CT09TVF9XT1JLQVJPVU5ECi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHVwbGVzIHsKLQotLy8gLS0gbnVsbF90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1zdHJ1Y3QgbnVsbF90eXBlIHt9OwotCi0vLyBhIGhlbHBlciBmdW5jdGlvbiB0byBwcm92aWRlIGEgY29uc3QgbnVsbF90eXBlIHR5cGUgdGVtcG9yYXJ5Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgaW5saW5lIGNvbnN0IG51bGxfdHlwZSBjbnVsbCgpIHsgcmV0dXJuIG51bGxfdHlwZSgpOyB9Ci0KLQotLy8gLS0gaWYgY29uc3RydWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gUHJvcG9zZWQgYnkgS3J6eXN6dG9mIEN6YXJuZWNraSBhbmQgVWxyaWNoIEVpc2VuZWNrZXIKLQotdGVtcGxhdGUgPGJvb2wgSWYsIGNsYXNzIFRoZW4sIGNsYXNzIEVsc2U+IHN0cnVjdCBJRiB7IHR5cGVkZWYgVGhlbiBSRVQ7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUaGVuLCBjbGFzcyBFbHNlPiBzdHJ1Y3QgSUY8ZmFsc2UsIFRoZW4sIEVsc2U+IHsKLSAgdHlwZWRlZiBFbHNlIFJFVDsKLX07Ci0KLX0gLy8gZW5kIGRldGFpbAotCi0vLyAtIGNvbnMgZm9yd2FyZCBkZWNsYXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGUgPGNsYXNzIEhULCBjbGFzcyBUVD4gc3RydWN0IGNvbnM7Ci0KLQotLy8gLSB0dXBsZSBmb3J3YXJkIGRlY2xhcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Ci0gIGNsYXNzIFQwID0gbnVsbF90eXBlLCBjbGFzcyBUMSA9IG51bGxfdHlwZSwgY2xhc3MgVDIgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQzID0gbnVsbF90eXBlLCBjbGFzcyBUNCA9IG51bGxfdHlwZSwgY2xhc3MgVDUgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ2ID0gbnVsbF90eXBlLCBjbGFzcyBUNyA9IG51bGxfdHlwZSwgY2xhc3MgVDggPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ5ID0gbnVsbF90eXBlPgotY2xhc3MgdHVwbGU7Ci0KLS8vIHR1cGxlX2xlbmd0aCBmb3J3YXJkIGRlY2xhcmF0aW9uCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgbGVuZ3RoOwotCi0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIC0tIGdlbmVyYXRlIGVycm9yIHRlbXBsYXRlLCByZWZlcmVuY2luZyB0byBub24tZXhpc3RpbmcgbWVtYmVycyBvZiB0aGlzCi0vLyB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHByb2R1Y2UgY29tcGlsYXRpb24gZXJyb3JzIGludGVudGlvbmFsbHkKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBnZW5lcmF0ZV9lcnJvcjsKLQotdGVtcGxhdGU8aW50IE4+Ci1zdHJ1Y3QgZHJvcF9mcm9udCB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gICAgc3RydWN0IGFwcGx5IHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRyb3BfZnJvbnQ8Ti0xPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICAgICAgICBhcHBseTxUdXBsZT4gbmV4dDsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5leHQ6OnR5cGU6OnRhaWxfdHlwZSB0eXBlOwotICAgICAgICBzdGF0aWMgY29uc3QgdHlwZSYgY2FsbChjb25zdCBUdXBsZSYgdHVwKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV4dDo6Y2FsbCh0dXApLnRhaWw7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRyb3BfZnJvbnQ8MD4gewotICAgIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICAgIHN0cnVjdCBhcHBseSB7Ci0gICAgICAgIHR5cGVkZWYgVHVwbGUgdHlwZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHR5cGUmIGNhbGwoY29uc3QgVHVwbGUmIHR1cCkgewotICAgICAgICAgICAgcmV0dXJuIHR1cDsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgZGV0YWlsCi0KLQotLy8gLWNvbnMgdHlwZSBhY2Nlc3NvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PE4sVD46OnR5cGUgZ2V0cyB0aGUgdHlwZSBvZiB0aGUKLS8vIE50aCBlbGVtZW50IG90IFQsIGZpcnN0IGVsZW1lbnQgaXMgYXQgaW5kZXggMAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4KLXN0cnVjdCBlbGVtZW50Ci17Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8VD46OnR5cGU6OmhlYWRfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+Ci1zdHJ1Y3QgZWxlbWVudDxOLCBjb25zdCBUPgotewotcHJpdmF0ZToKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZHJvcF9mcm9udDxOPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICBhcHBseTxUPjo6dHlwZTo6aGVhZF90eXBlIHVucXVhbGlmaWVkX3R5cGU7Ci1wdWJsaWM6Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sPDB4NjAwKQotICB0eXBlZGVmIGNvbnN0IHVucXVhbGlmaWVkX3R5cGUgdHlwZTsKLSNlbHNlCi0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6YWRkX2NvbnN0PHVucXVhbGlmaWVkX3R5cGU+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLX07Ci0jZWxzZSAvLyBkZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVCwgYm9vbCBJc0NvbnN0Pgotc3RydWN0IGVsZW1lbnRfaW1wbAotewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PFQ+Ojp0eXBlOjpoZWFkX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPgotc3RydWN0IGVsZW1lbnRfaW1wbDxOLCBULCB0cnVlIC8qIElzQ29uc3QgKi8+Ci17Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8VD46OnR5cGU6OmhlYWRfdHlwZSB1bnF1YWxpZmllZF90eXBlOwotICB0eXBlZGVmIGNvbnN0IHVucXVhbGlmaWVkX3R5cGUgdHlwZTsKLX07Ci0KLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSBkZXRhaWwKLQotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4KLXN0cnVjdCBlbGVtZW50OgotICBwdWJsaWMgZGV0YWlsOjplbGVtZW50X2ltcGw8TiwgVCwgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlPgotewotfTsKLQotI2VuZGlmCi0KLQotLy8gLWdldCBmdW5jdGlvbiB0ZW1wbGF0ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFVzYWdlOiBnZXQ8Tj4oYVR1cGxlKQotCi0vLyAtLSBzb21lIHRyYWl0cyBjbGFzc2VzIGZvciBnZXQgZnVuY3Rpb25zCi0KLS8vIGFjY2VzcyB0cmFpdHMgbGlmdGVkIGZyb20gZGV0YWlsIG5hbWVzcGFjZSB0byBiZSBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UsCi0vLyAoSm9lbCBkZSBHdXptYW4ncyBzdWdnZXN0aW9uKS4gUmF0aW9uYWxlOiBnZXQgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZQotLy8gaW50ZXJmYWNlLCBzbyBzaG91bGQgdGhlIHdheSB0byBleHByZXNzIHRoZWlyIHJldHVybiB0eXBlcyBiZS4KLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBhY2Nlc3NfdHJhaXRzIHsKLSAgdHlwZWRlZiBjb25zdCBUJiBjb25zdF90eXBlOwotICB0eXBlZGVmIFQmIG5vbl9jb25zdF90eXBlOwotCi0gIHR5cGVkZWYgY29uc3QgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSYgcGFyYW1ldGVyX3R5cGU7Ci0KLS8vIHVzZWQgYXMgdGhlIHR1cGxlIGNvbnN0cnVjdG9ycyBwYXJhbWV0ZXIgdHlwZXMKLS8vIFJhdGlvbmFsZTogbm9uLXJlZmVyZW5jZSB0dXBsZSBlbGVtZW50IHR5cGVzIGNhbiBiZSBjdi1xdWFsaWZpZWQuCi0vLyBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaW5pdGlhbGl6ZSBzdWNoIHR5cGVzIHdpdGggdGVtcG9yYXJpZXMsCi0vLyBhbmQgd2hlbiBiaW5kaW5nIHRlbXBvcmFyaWVzIHRvIHJlZmVyZW5jZXMsIHRoZSByZWZlcmVuY2UgbXVzdAotLy8gYmUgbm9uLXZvbGF0aWxlIGFuZCBjb25zdC4gOC41LjMuICg1KQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBhY2Nlc3NfdHJhaXRzPFQmPiB7Ci0KLSAgdHlwZWRlZiBUJiBjb25zdF90eXBlOwotICB0eXBlZGVmIFQmIG5vbl9jb25zdF90eXBlOwotCi0gIHR5cGVkZWYgVCYgcGFyYW1ldGVyX3R5cGU7Ci19OwotCi0vLyBnZXQgZnVuY3Rpb24gZm9yIG5vbi1jb25zdCBjb25zLWxpc3RzLCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50Ci0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBIVCwgY2xhc3MgVFQ+Ci1pbmxpbmUgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8TiwgY29uczxIVCwgVFQ+ID46OnR5cGUKLSAgICAgICAgICAgICAgICA+Ojpub25fY29uc3RfdHlwZQotZ2V0KGNvbnM8SFQsIFRUPiYgYyBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBOKSkgewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PGNvbnM8SFQsIFRUPiA+IGltcGw7Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpbXBsOjp0eXBlIGNvbnNfZWxlbWVudDsKLSAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y29uc19lbGVtZW50Jj4oaW1wbDo6Y2FsbChjKSkuaGVhZDsKLX0KLQotLy8gZ2V0IGZ1bmN0aW9uIGZvciBjb25zdCBjb25zLWxpc3RzLCByZXR1cm5zIGEgY29uc3QgcmVmZXJlbmNlIHRvCi0vLyB0aGUgZWxlbWVudC4gSWYgdGhlIGVsZW1lbnQgaXMgYSByZWZlcmVuY2UsIHJldHVybnMgdGhlIHJlZmVyZW5jZQotLy8gYXMgc3VjaCAodGhhdCBpcywgY2FuIHJldHVybiBhIG5vbi1jb25zdCByZWZlcmVuY2UpCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgSFQsIGNsYXNzIFRUPgotaW5saW5lIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIGNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgICAgICAgPjo6Y29uc3RfdHlwZQotZ2V0KGNvbnN0IGNvbnM8SFQsIFRUPiYgYyBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBOKSkgewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PGNvbnM8SFQsIFRUPiA+IGltcGw7Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpbXBsOjp0eXBlIGNvbnNfZWxlbWVudDsKLSAgcmV0dXJuIGltcGw6OmNhbGwoYykuaGVhZDsKLX0KLQotLy8gLS0gdGhlIGNvbnMgdGVtcGxhdGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gIFRoZXNlIGhlbHBlciB0ZW1wbGF0ZXMgd3JhcCB2b2lkIHR5cGVzIGFuZCBwbGFpbiBmdW5jdGlvbiB0eXBlcy4KLS8vICBUaGUgcmVhdGlvbmFsZSBpcyB0byBhbGxvdyBvbmUgdG8gd3JpdGUgdHVwbGUgdHlwZXMgd2l0aCB0aG9zZSB0eXBlcwotLy8gIGFzIGVsZW1lbnRzLCBldmVuIHRob3VnaCBpdCBpcyBub3QgcG9zc2libGUgdG8gaW5zdGFudGlhdGUgc3VjaCBvYmplY3QuCi0vLyAgRS5nOiB0eXBlZGVmIHR1cGxlPHZvaWQ+IHNvbWVfdHlwZTsgLy8gb2sKLS8vICBidXQ6IHNvbWVfdHlwZSB4OyAvLyBmYWlscwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3Mgbm9uX3N0b3JlYWJsZV90eXBlIHsKLSAgbm9uX3N0b3JlYWJsZV90eXBlKCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHdyYXBfbm9uX3N0b3JlYWJsZV90eXBlIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBJRjwKLSAgICA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUsIG5vbl9zdG9yZWFibGVfdHlwZTxUPiwgVAotICA+OjpSRVQgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3Qgd3JhcF9ub25fc3RvcmVhYmxlX3R5cGU8dm9pZD4gewotICB0eXBlZGVmIG5vbl9zdG9yZWFibGVfdHlwZTx2b2lkPiB0eXBlOwotfTsKLQotfSAvLyBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIEhULCBjbGFzcyBUVD4KLXN0cnVjdCBjb25zIHsKLQotICB0eXBlZGVmIEhUIGhlYWRfdHlwZTsKLSAgdHlwZWRlZiBUVCB0YWlsX3R5cGU7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIGRldGFpbDo6d3JhcF9ub25fc3RvcmVhYmxlX3R5cGU8aGVhZF90eXBlPjo6dHlwZSBzdG9yZWRfaGVhZF90eXBlOwotCi0gIHN0b3JlZF9oZWFkX3R5cGUgaGVhZDsKLSAgdGFpbF90eXBlIHRhaWw7Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxzdG9yZWRfaGVhZF90eXBlPjo6bm9uX2NvbnN0X3R5cGUKLSAgZ2V0X2hlYWQoKSB7IHJldHVybiBoZWFkOyB9Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czx0YWlsX3R5cGU+Ojpub25fY29uc3RfdHlwZQotICBnZXRfdGFpbCgpIHsgcmV0dXJuIHRhaWw7IH0KLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+Ojpjb25zdF90eXBlCi0gIGdldF9oZWFkKCkgY29uc3QgeyByZXR1cm4gaGVhZDsgfQotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8dGFpbF90eXBlPjo6Y29uc3RfdHlwZQotICBnZXRfdGFpbCgpIGNvbnN0IHsgcmV0dXJuIHRhaWw7IH0KLQotICBjb25zKCkgOiBoZWFkKCksIHRhaWwoKSB7fQotICAvLyAgY29ucygpIDogaGVhZChkZXRhaWw6OmRlZmF1bHRfYXJnPEhUPjo6ZigpKSwgdGFpbCgpIHt9Ci0KLSAgLy8gdGhlIGFyZ3VtZW50IGZvciBoZWFkIGlzIG5vdCBzdHJpY3RseSBuZWVkZWQsIGJ1dCBpdCBwcmV2ZW50cwotICAvLyBhcnJheSB0eXBlIGVsZW1lbnRzLiBUaGlzIGlzIGdvb2QsIHNpbmNlIGFycmF5IHR5cGUgZWxlbWVudHMKLSAgLy8gY2Fubm90IGJlIHN1cHBvcnRlZCBwcm9wZXJseSBpbiBhbnkgY2FzZSAobm8gYXNzaWdubWVudCwKLSAgLy8gY29weSB3b3JrcyBvbmx5IGlmIHRoZSB0YWlscyBhcmUgZXhhY3RseSB0aGUgc2FtZSB0eXBlLCAuLi4pCi0KLSAgY29ucyh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+OjpwYXJhbWV0ZXJfdHlwZSBoLAotICAgICAgIGNvbnN0IHRhaWxfdHlwZSYgdCkKLSAgICA6IGhlYWQgKGgpLCB0YWlsKHQpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwKLSAgICAgICAgICAgIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTA+Ci0gIGNvbnMoIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUmIHQ1LAotICAgICAgICBUNiYgdDYsIFQ3JiB0NywgVDgmIHQ4LCBUOSYgdDksIFQxMCYgdDEwICkKLSAgICA6IGhlYWQgKHQxKSwKLSAgICAgIHRhaWwgKHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSwgdDEwLCBkZXRhaWw6OmNudWxsKCkpCi0gICAgICB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwKLSAgICAgICAgICAgIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTA+Ci0gIGNvbnMoIGNvbnN0IG51bGxfdHlwZSYgLyp0MSovLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSYgdDUsCi0gICAgICAgIFQ2JiB0NiwgVDcmIHQ3LCBUOCYgdDgsIFQ5JiB0OSwgVDEwJiB0MTAgKQotICAgIDogaGVhZCAoKSwKLSAgICAgIHRhaWwgKHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSwgdDEwLCBkZXRhaWw6OmNudWxsKCkpCi0gICAgICB7fQotCi0KLSAgdGVtcGxhdGUgPGNsYXNzIEhUMiwgY2xhc3MgVFQyPgotICBjb25zKCBjb25zdCBjb25zPEhUMiwgVFQyPiYgdSApIDogaGVhZCh1LmhlYWQpLCB0YWlsKHUudGFpbCkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSFQyLCBjbGFzcyBUVDI+Ci0gIGNvbnMmIG9wZXJhdG9yPSggY29uc3QgY29uczxIVDIsIFRUMj4mIHUgKSB7Ci0gICAgaGVhZD11LmhlYWQ7IHRhaWw9dS50YWlsOyByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICAvLyBtdXN0IGRlZmluZSBhc3NpZ25tZW50IG9wZXJhdG9yIGV4cGxpY2l0bHksIGltcGxpY2l0IHZlcnNpb24gaXMKLSAgLy8gaWxsZm9ybWVkIGlmIEhUIGlzIGEgcmVmZXJlbmNlICgxMi44LiAoMTIpKQotICBjb25zJiBvcGVyYXRvcj0oY29uc3QgY29ucyYgdSkgewotICAgIGhlYWQgPSB1LmhlYWQ7IHRhaWwgPSB1LnRhaWw7ICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICBjb25zJiBvcGVyYXRvcj0oIGNvbnN0IHN0ZDo6cGFpcjxUMSwgVDI+JiB1ICkgewotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQobGVuZ3RoPGNvbnM+Ojp2YWx1ZSA9PSAyKTsgLy8gY2hlY2sgbGVuZ3RoID0gMgotICAgIGhlYWQgPSB1LmZpcnN0OyB0YWlsLmhlYWQgPSB1LnNlY29uZDsgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gZ2V0IG1lbWJlciBmdW5jdGlvbnMgKG5vbi1jb25zdCBhbmQgY29uc3QpCi0gIHRlbXBsYXRlIDxpbnQgTj4KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIGNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgID46Om5vbl9jb25zdF90eXBlCi0gIGdldCgpIHsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnR1cGxlczo6Z2V0PE4+KCp0aGlzKTsgLy8gZGVsZWdhdGUgdG8gbm9uLW1lbWJlciBnZXQKLSAgfQotCi0gIHRlbXBsYXRlIDxpbnQgTj4KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIGNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgID46OmNvbnN0X3R5cGUKLSAgZ2V0KCkgY29uc3QgewotICAgIHJldHVybiBuZG5ib29zdDo6dHVwbGVzOjpnZXQ8Tj4oKnRoaXMpOyAvLyBkZWxlZ2F0ZSB0byBub24tbWVtYmVyIGdldAotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSFQ+Ci1zdHJ1Y3QgY29uczxIVCwgbnVsbF90eXBlPiB7Ci0KLSAgdHlwZWRlZiBIVCBoZWFkX3R5cGU7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHRhaWxfdHlwZTsKLSAgdHlwZWRlZiBjb25zPEhULCBudWxsX3R5cGU+IHNlbGZfdHlwZTsKLQotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgZGV0YWlsOjp3cmFwX25vbl9zdG9yZWFibGVfdHlwZTxoZWFkX3R5cGU+Ojp0eXBlIHN0b3JlZF9oZWFkX3R5cGU7Ci0gIHN0b3JlZF9oZWFkX3R5cGUgaGVhZDsKLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+Ojpub25fY29uc3RfdHlwZQotICBnZXRfaGVhZCgpIHsgcmV0dXJuIGhlYWQ7IH0KLQotICBudWxsX3R5cGUgZ2V0X3RhaWwoKSB7IHJldHVybiBudWxsX3R5cGUoKTsgfQotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46OmNvbnN0X3R5cGUKLSAgZ2V0X2hlYWQoKSBjb25zdCB7IHJldHVybiBoZWFkOyB9Ci0KLSAgY29uc3QgbnVsbF90eXBlIGdldF90YWlsKCkgY29uc3QgeyByZXR1cm4gbnVsbF90eXBlKCk7IH0KLQotICAvLyAgY29ucygpIDogaGVhZChkZXRhaWw6OmRlZmF1bHRfYXJnPEhUPjo6ZigpKSB7fQotICBjb25zKCkgOiBoZWFkKCkge30KLQotICBjb25zKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46OnBhcmFtZXRlcl90eXBlIGgsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiA9IG51bGxfdHlwZSgpKQotICAgIDogaGVhZCAoaCkge30KLQotICB0ZW1wbGF0ZTxjbGFzcyBUMT4KLSAgY29ucyhUMSYgdDEsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmKQotICA6IGhlYWQgKHQxKSB7fQotCi0gIGNvbnMoY29uc3QgbnVsbF90eXBlJiwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLAotICAgICAgIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJikKLSAgOiBoZWFkICgpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEhUMj4KLSAgY29ucyggY29uc3QgY29uczxIVDIsIG51bGxfdHlwZT4mIHUgKSA6IGhlYWQodS5oZWFkKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBIVDI+Ci0gIGNvbnMmIG9wZXJhdG9yPShjb25zdCBjb25zPEhUMiwgbnVsbF90eXBlPiYgdSApCi0gIHsgaGVhZCA9IHUuaGVhZDsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgLy8gbXVzdCBkZWZpbmUgYXNzaWdubWVudCBvcGVyYXRvciBleHBsaWNpdGVseSwgaW1wbGljaXQgdmVyc2lvbgotICAvLyBpcyBpbGxmb3JtZWQgaWYgSFQgaXMgYSByZWZlcmVuY2UKLSAgY29ucyYgb3BlcmF0b3I9KGNvbnN0IGNvbnMmIHUpIHsgaGVhZCA9IHUuaGVhZDsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgdGVtcGxhdGUgPGludCBOPgotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8Tiwgc2VsZl90eXBlPjo6dHlwZQotICAgICAgICAgICAgPjo6bm9uX2NvbnN0X3R5cGUKLSAgZ2V0KE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKGludCwgTikpIHsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnR1cGxlczo6Z2V0PE4+KCp0aGlzKTsKLSAgfQotCi0gIHRlbXBsYXRlIDxpbnQgTj4KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIHNlbGZfdHlwZT46OnR5cGUKLSAgICAgICAgICAgPjo6Y29uc3RfdHlwZQotICBnZXQoTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBOKSkgY29uc3QgewotICAgIHJldHVybiBuZG5ib29zdDo6dHVwbGVzOjpnZXQ8Tj4oKnRoaXMpOwotICB9Ci0KLX07Ci0KLS8vIHRlbXBsYXRlcyBmb3IgZmluZGluZyBvdXQgdGhlIGxlbmd0aCBvZiB0aGUgdHVwbGUgLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGxlbmd0aCAgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDEgKyBsZW5ndGg8dHlwZW5hbWUgVDo6dGFpbF90eXBlPjo6dmFsdWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlbmd0aDx0dXBsZTw+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlbmd0aDx0dXBsZTw+IGNvbnN0PiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVuZ3RoPG51bGxfdHlwZT4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlbmd0aDxudWxsX3R5cGUgY29uc3Q+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUdXBsZSB0byBjb25zIG1hcHBlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci1zdHJ1Y3QgbWFwX3R1cGxlX3RvX2NvbnMKLXsKLSAgdHlwZWRlZiBjb25zPFQwLAotICAgICAgICAgICAgICAgdHlwZW5hbWUgbWFwX3R1cGxlX3RvX2NvbnM8VDEsIFQyLCBUMywgVDQsIFQ1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDYsIFQ3LCBUOCwgVDksIG51bGxfdHlwZT46OnR5cGUKLSAgICAgICAgICAgICAgPiB0eXBlOwotfTsKLQotLy8gVGhlIGVtcHR5IHR1cGxlIGlzIGEgbnVsbF90eXBlCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG1hcF90dXBsZV90b19jb25zPG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZT4KLXsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0KLX0gLy8gZW5kIGRldGFpbAotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLSB0dXBsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotCi1jbGFzcyB0dXBsZSA6Ci0gIHB1YmxpYyBkZXRhaWw6Om1hcF90dXBsZV90b19jb25zPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZQotewotcHVibGljOgotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgZGV0YWlsOjptYXBfdHVwbGVfdG9fY29uczxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUgaW5oZXJpdGVkOwotICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXRlZDo6aGVhZF90eXBlIGhlYWRfdHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRhaWxfdHlwZSB0YWlsX3R5cGU7Ci0KLQotLy8gYWNjZXNzX3RyYWl0czxUPjo6cGFyYW1ldGVyX3R5cGUgdGFrZXMgbm9uLXJlZmVyZW5jZSB0eXBlcyBhcyBjb25zdCBUJgotICB0dXBsZSgpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwKQotICAgIDogaW5oZXJpdGVkKHQwLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyKQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzKQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNT46OnBhcmFtZXRlcl90eXBlIHQ1LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ2Pjo6cGFyYW1ldGVyX3R5cGUgdDYpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNT46OnBhcmFtZXRlcl90eXBlIHQ1LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ2Pjo6cGFyYW1ldGVyX3R5cGUgdDYsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDc+OjpwYXJhbWV0ZXJfdHlwZSB0NykKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNj46OnBhcmFtZXRlcl90eXBlIHQ2LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ3Pjo6cGFyYW1ldGVyX3R5cGUgdDcsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDg+OjpwYXJhbWV0ZXJfdHlwZSB0OCkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNj46OnBhcmFtZXRlcl90eXBlIHQ2LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ3Pjo6cGFyYW1ldGVyX3R5cGUgdDcsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDg+OjpwYXJhbWV0ZXJfdHlwZSB0OCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUOT46OnBhcmFtZXRlcl90eXBlIHQ5KQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KSB7fQotCi0KLSAgdGVtcGxhdGU8Y2xhc3MgVTEsIGNsYXNzIFUyPgotICB0dXBsZShjb25zdCBjb25zPFUxLCBVMj4mIHApIDogaW5oZXJpdGVkKHApIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFUxLCBjbGFzcyBVMj4KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBjb25zPFUxLCBVMj4mIGspIHsKLSAgICBpbmhlcml0ZWQ6Om9wZXJhdG9yPShrKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVTEsIGNsYXNzIFUyPgotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6cGFpcjxVMSwgVTI+JiBrKSB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChsZW5ndGg8dHVwbGU+Ojp2YWx1ZSA9PSAyKTsvLyBjaGVja19sZW5ndGggPSAyCi0gICAgdGhpcy0+aGVhZCA9IGsuZmlyc3Q7Ci0gICAgdGhpcy0+dGFpbC5oZWFkID0gay5zZWNvbmQ7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLX07Ci0KLS8vIFRoZSBlbXB0eSB0dXBsZQotdGVtcGxhdGUgPD4KLWNsYXNzIHR1cGxlPG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZT4gIDoKLSAgcHVibGljIG51bGxfdHlwZQotewotcHVibGljOgotICB0eXBlZGVmIG51bGxfdHlwZSBpbmhlcml0ZWQ7Ci19OwotCi0KLS8vIFN3YWxsb3dzIGFueSBhc3NpZ25tZW50ICAgKGJ5IERvdWcgR3JlZ29yKQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBzd2FsbG93X2Fzc2lnbjsKLXR5cGVkZWYgdm9pZCAoZGV0YWlsOjpzd2FsbG93X2Fzc2lnbjo6Kmlnbm9yZV90KSgpOwotc3RydWN0IHN3YWxsb3dfYXNzaWduIHsKLSAgc3dhbGxvd19hc3NpZ24oaWdub3JlX3QoKikoaWdub3JlX3QpKSB7fQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICBzd2FsbG93X2Fzc2lnbiBjb25zdCYgb3BlcmF0b3I9KGNvbnN0IFQmKSBjb25zdCB7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAiaWdub3JlIiBhbGxvd3MgdHVwbGUgcG9zaXRpb25zIHRvIGJlIGlnbm9yZWQgd2hlbiB1c2luZyAidGllIi4KLWlubGluZSBkZXRhaWw6Omlnbm9yZV90IGlnbm9yZShkZXRhaWw6Omlnbm9yZV90KSB7IHJldHVybiAwOyB9Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVGhlIGNhbGxfdHJhaXRzIGZvciBtYWtlX3R1cGxlCi0vLyBIb25vdXJzIHRoZSByZWZlcmVuY2Vfd3JhcHBlciBjbGFzcy4KLQotLy8gTXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBwbGFpbiBvciBjb25zdCBwbGFpbiB0eXBlcyAobm90IHdpdGggcmVmZXJlbmNlcykKLQotLy8gZnJvbSB0ZW1wbGF0ZTxjbGFzcyBUPiBmb28oY29uc3QgVCYgdCkgOiBtYWtlX3R1cGxlX3RyYWl0czxjb25zdCBUPjo6dHlwZQotLy8gZnJvbSB0ZW1wbGF0ZTxjbGFzcyBUPiBmb28oVCYgdCkgOiBtYWtlX3R1cGxlX3RyYWl0czxUPjo6dHlwZQotCi0vLyBDb252ZXJzaW9uczoKLS8vIFQgLT4gVCwKLS8vIHJlZmVyZW5jZXMgLT4gY29tcGlsZV90aW1lX2Vycm9yCi0vLyByZWZlcmVuY2Vfd3JhcHBlcjxUPiAtPiBUJgotLy8gY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLS8vIGFycmF5IC0+IGNvbnN0IHJlZiBhcnJheQotCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHMgewotICB0eXBlZGVmIFQgdHlwZTsKLQotICAvLyBjb21tZW50ZWQgYXdheSwgc2VlIGJlbG93ICAoSkopCi0gIC8vICB0eXBlZGVmIHR5cGVuYW1lIElGPAotICAvLyAgbmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZSwKLSAgLy8gIFQmLAotICAvLyAgVD46OlJFVCB0eXBlOwotCi19OwotCi0vLyBUaGUgaXNfZnVuY3Rpb24gdGVzdCB3YXMgdGhlcmUgb3JpZ2luYWxseSBmb3IgcGxhaW4gZnVuY3Rpb24gdHlwZXMsCi0vLyB3aGljaCBjYW4ndCBiZSBzdG9yZWQgYXMgc3VjaCAod2UgbXVzdCBlaXRoZXIgc3RvcmUgdGhlbSBhcyByZWZlcmVuY2VzIG9yCi0vLyBwb2ludGVycykuIFN1Y2ggYSB0eXBlIGNvdWxkIGJlIGZvcm1lZCBpZiBtYWtlX3R1cGxlIHdhcyBjYWxsZWQgd2l0aCBhCi0vLyByZWZlcmVuY2UgdG8gYSBmdW5jdGlvbi4KLS8vIEJ1dCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhIGNvbnN0IHF1YWxpZmllZCBmdW5jdGlvbiB0eXBlIHdhcyBmb3JtZWQgaW4KLS8vIHRoZSBtYWtlX3R1cGxlIGZ1bmN0aW9uIGFuZCBoZW5jZSBtYWtlX3R1cGxlIGNhbid0IHRha2UgYSBmdW5jdGlvbgotLy8gcmVmZXJlbmNlIGFzIGEgcGFyYW1ldGVyLCBhbmQgdGh1cyBUIGNhbid0IGJlIGEgZnVuY3Rpb24gdHlwZS4KLS8vIFNvIGlzX2Z1bmN0aW9uIHRlc3Qgd2FzIHJlbW92ZWQuCi0vLyAoMTQuOC4zLiBzYXlzIHRoYXQgdHlwZSBkZWR1Y3Rpb24gZmFpbHMgaWYgYSBjdi1xdWFsaWZpZWQgZnVuY3Rpb24gdHlwZQotLy8gaXMgY3JlYXRlZC4gKEl0IG9ubHkgYXBwbGllcyBmb3IgdGhlIGNhc2Ugb2YgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRlbXBsYXRlCi0vLyBhcmdzLCB0aG91Z2g/KSkgKEpKKQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPFQmPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgZGV0YWlsOjpnZW5lcmF0ZV9lcnJvcjxUJj46OgotICAgICAgIGRvX25vdF91c2Vfd2l0aF9yZWZlcmVuY2VfdHlwZSBlcnJvcjsKLX07Ci0KLS8vIEFycmF5cyBjYW4ndCBiZSBzdG9yZWQgYXMgcGxhaW4gdHlwZXM7IGNvbnZlcnQgdGhlbSB0byByZWZlcmVuY2VzLgotLy8gQWxsIGFycmF5cyBhcmUgY29udmVydGVkIHRvIGNvbnN0LiBUaGlzIGlzIGJlY2F1c2UgbWFrZV90dXBsZSB0YWtlcyBpdHMKLS8vIHBhcmFtZXRlcnMgYXMgY29uc3QgVCYgYW5kIHRodXMgdGhlIGtub3dsZWRnZSBvZiB0aGUgcG90ZW50aWFsCi0vLyBub24tY29uc3RuZXNzIG9mIGFjdHVhbCBhcmd1bWVudCBpcyBsb3N0LgotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+ICBzdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHMgPFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czxjb25zdCBUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+ICBzdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8dm9sYXRpbGUgVFtuXT4gewotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFQgKCZ0eXBlKVtuXTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPGNvbnN0IHZvbGF0aWxlIFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPHJlZmVyZW5jZV93cmFwcGVyPFQ+ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8Y29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPGRldGFpbDo6aWdub3JlX3QoZGV0YWlsOjppZ25vcmVfdCk+IHsKLSAgdHlwZWRlZiBkZXRhaWw6OnN3YWxsb3dfYXNzaWduIHR5cGU7Ci19OwotCi0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIGEgaGVscGVyIHRyYWl0cyB0byBtYWtlIHRoZSBtYWtlX3R1cGxlIGZ1bmN0aW9ucyBzaG9ydGVyIChWZXNhIEthcnZvbmVuJ3MKLS8vIHN1Z2dlc3Rpb24pCi10ZW1wbGF0ZSA8Ci0gIGNsYXNzIFQwID0gbnVsbF90eXBlLCBjbGFzcyBUMSA9IG51bGxfdHlwZSwgY2xhc3MgVDIgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQzID0gbnVsbF90eXBlLCBjbGFzcyBUNCA9IG51bGxfdHlwZSwgY2xhc3MgVDUgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ2ID0gbnVsbF90eXBlLCBjbGFzcyBUNyA9IG51bGxfdHlwZSwgY2xhc3MgVDggPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ5ID0gbnVsbF90eXBlCi0+Ci1zdHJ1Y3QgbWFrZV90dXBsZV9tYXBwZXIgewotICB0eXBlZGVmCi0gICAgdHVwbGU8dHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDA+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQxPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUMj46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDM+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ0Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUNT46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDY+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ3Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUOD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDk+Ojp0eXBlPiB0eXBlOwotfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLS8vIC1tYWtlX3R1cGxlIGZ1bmN0aW9uIHRlbXBsYXRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaW5saW5lIHR1cGxlPD4gbWFrZV90dXBsZSgpIHsKLSAgcmV0dXJuIHR1cGxlPD4oKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDA+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMD46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMD46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDE+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDE+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDE+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDI+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyPjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMz46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMz46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB0NCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNT46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDU+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNj4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNz4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKLSAgICAgICAgIGNsYXNzIFQ3LCBjbGFzcyBUOD4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUOCYgdDgpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUOCYgdDgsIGNvbnN0IFQ5JiB0OSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSk7Ci19Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHRpZV90cmFpdHMgewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGllX3RyYWl0czxpZ25vcmVfdChpZ25vcmVfdCk+IHsKLSAgdHlwZWRlZiBzd2FsbG93X2Fzc2lnbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRpZV90cmFpdHM8dm9pZD4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPAotICBjbGFzcyBUMCA9IHZvaWQsIGNsYXNzIFQxID0gdm9pZCwgY2xhc3MgVDIgPSB2b2lkLAotICBjbGFzcyBUMyA9IHZvaWQsIGNsYXNzIFQ0ID0gdm9pZCwgY2xhc3MgVDUgPSB2b2lkLAotICBjbGFzcyBUNiA9IHZvaWQsIGNsYXNzIFQ3ID0gdm9pZCwgY2xhc3MgVDggPSB2b2lkLAotICBjbGFzcyBUOSA9IHZvaWQKLT4KLXN0cnVjdCB0aWVfbWFwcGVyIHsKLSAgdHlwZWRlZgotICAgIHR1cGxlPHR5cGVuYW1lIHRpZV90cmFpdHM8VDA+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDE+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDI+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDM+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDQ+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDU+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDY+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDc+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDg+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDk+Ojp0eXBlPiB0eXBlOwotfTsKLQotfQotCi0vLyBUaWUgZnVuY3Rpb24gdGVtcGxhdGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlPGNsYXNzIFQwPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMD46OnR5cGUKLXRpZShUMCYgdDApIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDA+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDE+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyPjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMj46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0Mik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMz46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDM+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgVDQmIHQ0KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUND46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNT46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQsIFQ1JiB0NSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDY+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1LCBUNiYgdDYpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0Nik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDc+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQsIFQ1JiB0NSwgVDYmIHQ2LCBUNyYgdDcpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNywgY2xhc3MgVDg+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1LCBUNiYgdDYsIFQ3JiB0NywKLSAgICAgICAgICAgICAgICAgIFQ4JiB0OCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1LCBUNiYgdDYsIFQ3JiB0NywKLSAgICAgICAgICAgICAgICAgIFQ4JiB0OCwgVDkmIHQ5KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLXZvaWQgc3dhcCh0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIGxocywKLSAgICAgICAgICB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIHJocyk7Ci1pbmxpbmUgdm9pZCBzd2FwKG51bGxfdHlwZSYsIG51bGxfdHlwZSYpIHt9Ci10ZW1wbGF0ZTxjbGFzcyBISD4KLWlubGluZSB2b2lkIHN3YXAoY29uczxISCwgbnVsbF90eXBlPiYgbGhzLCBjb25zPEhILCBudWxsX3R5cGU+JiByaHMpIHsKLSAgOjpuZG5ib29zdDo6c3dhcChsaHMuaGVhZCwgcmhzLmhlYWQpOwotfQotdGVtcGxhdGU8Y2xhc3MgSEgsIGNsYXNzIFRUPgotaW5saW5lIHZvaWQgc3dhcChjb25zPEhILCBUVD4mIGxocywgY29uczxISCwgVFQ+JiByaHMpIHsKLSAgOjpuZG5ib29zdDo6c3dhcChsaHMuaGVhZCwgcmhzLmhlYWQpOwotICA6Om5kbmJvb3N0Ojp0dXBsZXM6OnN3YXAobGhzLnRhaWwsIHJocy50YWlsKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotaW5saW5lIHZvaWQgc3dhcCh0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIGxocywKLSAgICAgICAgICB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIHJocykgewotICB0eXBlZGVmIHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiB0dXBsZV90eXBlOwotICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OmluaGVyaXRlZCBiYXNlOwotICA6Om5kbmJvb3N0Ojp0dXBsZXM6OnN3YXAoc3RhdGljX2Nhc3Q8YmFzZSY+KGxocyksIHN0YXRpY19jYXN0PGJhc2UmPihyaHMpKTsKLX0KLQotfSAvLyBlbmQgb2YgbmFtZXNwYWNlIHR1cGxlcwotfSAvLyBlbmQgb2YgbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RVUExFX0JBU0lDX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpY19ub19wYXJ0aWFsX3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTIyMmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NjUgKzAsMCBAQAotLy8gLSB0dXBsZV9iYXNpY19ub19wYXJ0aWFsX3NwZWMuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDEgRG91Z2xhcyBHcmVnb3IgKGdyZWdvZEBycGkuZWR1KQotLy8gQ29weXJpZ2h0IChDKSAyMDAxIEdhcnkgUG93ZWxsIChnYXJ5LnBvd2VsbEBzaWVycmEuY29tKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBvciBodHRwOi8vbGFtYmRhLmNzLnV0dS5maQotCi0vLyBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMTQgMDIgMDEgICAgUmVtb3ZlIGV4dHJhICc7Jy4gQWxzbywgZml4ZWQgMTAtcGFyYW1ldGVyIHRvIG1ha2VfdHVwbGUuIChERykKLS8vICAxMCAwMiAwMSAgICBGaXhlZCAibnVsbF90eXBlIiBjb25zdHJ1Y3RvcnMuCi0vLyAgICAgICAgICAgICAgSW1wbGVtZW50ZWQgY29tcGFyaXNvbiBvcGVyYXRvcnMgZ2xvYmFsbHkuCi0vLyAgICAgICAgICAgICAgSGlkZSBlbGVtZW50X3R5cGVfcmVmIGFuZCBlbGVtZW50X3R5cGVfY29uc3RfcmVmLgotLy8gICAgICAgICAgICAgIChERykuCi0vLyAgMDkgMDIgMDEgICAgRXh0ZW5kZWQgdG8gdHVwbGVzIG9mIGxlbmd0aCAxMC4gQ2hhbmdlZCBjb21wYXJpc29uIGZvcgotLy8gICAgICAgICAgICAgIG9wZXJhdG9yPCgpCi0vLyAgICAgICAgICAgICAgdG8gdGhlIHNhbWUgdXNlZCBieSBzdGQ6OnBhaXI8PiwgYWRkZWQgY251bGxfdHlwZSgpIChHUCkKLS8vICAwMyAwMiAwMSAgICBJbml0aWFsIFZlcnNpb24gZnJvbSBvcmlnaW5hbCB0dXBsZS5ocHAgY29kZSBieSBKSi4gKERHKQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RVUExFX0JBU0lDX05PX1BBUlRJQUxfU1BFQ19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFVQTEVfQkFTSUNfTk9fUEFSVElBTF9TUEVDX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHAiCi0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxOCkgLy8gc3RvcmFnZS1jbGFzcyBvciB0eXBlIHNwZWNpZmllcihzKSB1bmV4cGVjdGVkIGhlcmU7IGlnbm9yZWQKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODEpIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMjcpIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR1cGxlcyB7Ci0KLSAgICAvLyBudWxsX3R5cGUgZGVub3RlcyB0aGUgZW5kIG9mIGEgbGlzdCBidWlsdCB3aXRoICJjb25zIgotICAgIHN0cnVjdCBudWxsX3R5cGUKLSAgICB7Ci0gICAgICBudWxsX3R5cGUoKSB7fQotICAgICAgbnVsbF90eXBlKGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYpIHt9Ci0gICAgfTsKLQotICAgIC8vIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHByb3ZpZGUgYSBjb25zdCBudWxsX3R5cGUgdHlwZSB0ZW1wb3JhcnkKLSAgICBpbmxpbmUgY29uc3QgbnVsbF90eXBlIGNudWxsX3R5cGUoKSB7IHJldHVybiBudWxsX3R5cGUoKTsgfQotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHR1cGxlCi0gICAgdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQyID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDMgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUNCA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ1ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDYgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUNyA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ4ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDkgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUMTAgPSBudWxsX3R5cGUKLSAgICA+Ci0gICAgY2xhc3MgdHVwbGU7Ci0KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgY29ucwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWwgPSBudWxsX3R5cGU+Ci0gICAgc3RydWN0IGNvbnM7Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgICAgLy8gVGFrZXMgYSBwb2ludGVyIGFuZCByb3V0ZXMgYWxsIGFzc2lnbm1lbnRzIHRvIHdoYXRldmVyIGl0IHBvaW50cyB0bwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIHN0cnVjdCBhc3NpZ25fdG9fcG9pbnRlZQotICAgICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBhc3NpZ25fdG9fcG9pbnRlZShUKiBwKSA6IHB0cihwKSB7fQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgotICAgICAgICBhc3NpZ25fdG9fcG9pbnRlZSYgb3BlcmF0b3I9KGNvbnN0IE90aGVyJiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICpwdHIgPSBvdGhlcjsKLSAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgVCogcHRyOwotICAgICAgfTsKLQotICAgICAgLy8gU3dhbGxvd3MgYW55IGFzc2lnbm1lbnQKLSAgICAgIHN0cnVjdCBzd2FsbG93X2Fzc2lnbgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzd2FsbG93X2Fzc2lnbiBjb25zdCYgb3BlcmF0b3I9KGNvbnN0IFQmKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBhZGRfY29uc3RfcmVmZXJlbmNlIDogYWRkX3JlZmVyZW5jZTx0eXBlbmFtZSBhZGRfY29uc3Q8VD46OnR5cGU+IHt9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE15VGFpbD4KLSAgICBzdHJ1Y3QgaW5pdF90YWlsCi0gICAgewotICAgICAgICAvLyBFYWNoIG9mIHZjNiBhbmQgdmM3IHNlZW0gdG8gcmVxdWlyZSBhIGRpZmZlcmVudCBmb3JtdWxhdGlvbgotICAgICAgICAvLyBvZiB0aGlzIHJldHVybiB0eXBlCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBUPgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTx0eXBlbmFtZSBhZGRfY29uc3Q8VD46OnR5cGU+Ojp0eXBlCi0jZWxzZQotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX2NvbnN0X3JlZmVyZW5jZTxUPjo6dHlwZQotI2VuZGlmCi0gICAgICAgIGV4ZWN1dGUoIGNvbnM8SCxUPiBjb25zdCYgdSwgbG9uZyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1LmdldF90YWlsKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgaW5pdF90YWlsPG51bGxfdHlwZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBIPgotICAgICAgICBzdGF0aWMgbnVsbF90eXBlIGV4ZWN1dGUoIGNvbnM8SCxudWxsX3R5cGU+IGNvbnN0JiB1LCBsb25nICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG51bGxfdHlwZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyBudWxsX3R5cGUgZXhlY3V0ZShVIGNvbnN0JiwgLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbF90eXBlKCk7Ci0gICAgICAgIH0KLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFQ+Ci0gICAgICAgIHZvaWQgZXhlY3V0ZSggY29uczxILFQ+IGNvbnN0JiwgaW50KTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE90aGVyPgotICAgIE90aGVyIGNvbnN0JgotICAgIGluaXRfaGVhZCggT3RoZXIgY29uc3QmIHUsIC4uLiApCi0gICAgewotICAgICAgICByZXR1cm4gdTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgVD4KLSAgICB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPHR5cGVuYW1lIGFkZF9jb25zdDxIPjo6dHlwZT46OnR5cGUKLSAgICBpbml0X2hlYWQoIGNvbnM8SCxUPiBjb25zdCYgdSwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB1LmdldF9oZWFkKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIGNoYXIqKioqIGluaXRfaGVhZChudWxsX3R5cGUgY29uc3QmLCBpbnQpOwotCi0gIH0gLy8gZW5kIG9mIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgIC8vIGNvbnMgYnVpbGRzIGEgaGV0ZXJvZ2Vub3VzIGxpc3Qgb2YgdHlwZXMKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICBzdHJ1Y3QgY29ucwotICAgewotICAgICB0eXBlZGVmIGNvbnMgc2VsZl90eXBlOwotICAgICB0eXBlZGVmIEhlYWQgaGVhZF90eXBlOwotICAgICB0eXBlZGVmIFRhaWwgdGFpbF90eXBlOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPGhlYWRfdHlwZT46OnR5cGUgaGVhZF9yZWY7Ci0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTx0YWlsX3R5cGU+Ojp0eXBlIHRhaWxfcmVmOwotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPGhlYWRfdHlwZT46OnR5cGUgaGVhZF9jcmVmOwotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPHRhaWxfdHlwZT46OnR5cGUgdGFpbF9jcmVmOwotICAgIHB1YmxpYzoKLSAgICAgaGVhZF90eXBlIGhlYWQ7Ci0gICAgIHRhaWxfdHlwZSB0YWlsOwotCi0gICAgIGhlYWRfcmVmIGdldF9oZWFkKCkgeyByZXR1cm4gaGVhZDsgfQotICAgICB0YWlsX3JlZiBnZXRfdGFpbCgpIHsgcmV0dXJuIHRhaWw7IH0KLQotICAgICBoZWFkX2NyZWYgZ2V0X2hlYWQoKSBjb25zdCB7IHJldHVybiBoZWFkOyB9Ci0gICAgIHRhaWxfY3JlZiBnZXRfdGFpbCgpIGNvbnN0IHsgcmV0dXJuIHRhaWw7IH0KLQotICAgICBjb25zKCkgOiBoZWFkKCksIHRhaWwoKSB7fQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9NU1ZDCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWlsPgotICAgICAgY29ucyhoZWFkX2NyZWYgaCAvKiA9IGhlYWRfdHlwZSgpICovLCAvLyBjYXVzZXMgTVNWQyA2LjUgdG8gYmFyZi4KLSAgICAgICAgICAgICAgICAgICAgY29uc3QgVGFpbCYgdCkgOiBoZWFkKGgpLCB0YWlsKHQuaGVhZCwgdC50YWlsKQotICAgICAgewotICAgICAgfQotCi0gICAgICBjb25zKGhlYWRfY3JlZiBoIC8qID0gaGVhZF90eXBlKCkgKi8sIC8vIGNhdXNlcyBNU1ZDIDYuNSB0byBiYXJmLgotICAgICAgICAgICAgICAgICAgICBjb25zdCBudWxsX3R5cGUmIHQpIDogaGVhZChoKSwgdGFpbCh0KQotICAgICAgewotICAgICAgfQotCi0jZWxzZQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIGV4cGxpY2l0IGNvbnMoaGVhZF9jcmVmIGgsIGNvbnN0IFQmIHQpIDoKLSAgICAgICAgaGVhZChoKSwgdGFpbCh0LmhlYWQsIHQudGFpbCkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgZXhwbGljaXQgY29ucyhoZWFkX2NyZWYgaCA9IGhlYWRfdHlwZSgpLAotICAgICAgICAgICAgICAgICAgICB0YWlsX2NyZWYgdCA9IHRhaWxfdHlwZSgpKSA6Ci0gICAgICAgIGhlYWQoaCksIHRhaWwodCkKLSAgICAgIHsKLSAgICAgIH0KLSNlbmRpZgotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KLSAgICAgIGNvbnMoIGNvbnN0IFUmIHUgKQotICAgICAgICA6IGhlYWQoZGV0YWlsOjppbml0X2hlYWQodSwgMCkpCi0gICAgICAgICwgdGFpbChkZXRhaWw6OmluaXRfdGFpbDxUYWlsPjo6ZXhlY3V0ZSh1LCAwTCkpCi0gICAgICAgewotICAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+Ci0gICAgICBjb25zJiBvcGVyYXRvcj0oY29uc3QgT3RoZXImIG90aGVyKQotICAgICAgewotICAgICAgICBoZWFkID0gb3RoZXIuaGVhZDsKLSAgICAgICAgdGFpbCA9IG90aGVyLnRhaWw7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAgIC8vIERldGVybWluZXMgaWYgdGhlIHBhcmFtZXRlciBpcyBudWxsX3R5cGUKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19udWxsX3R5cGUgeyBlbnVtIHsgUkVUID0gMCB9OyB9OwotICAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfbnVsbF90eXBlPG51bGxfdHlwZT4geyBlbnVtIHsgUkVUID0gMSB9OyB9OwotCi0gICAgICAvKiBCdWlsZCBhIGNvbnMgc3RydWN0dXJlIGZyb20gdGhlIGdpdmVuIEhlYWQgYW5kIFRhaWwuIElmIGJvdGggYXJlIG51bGxfdHlwZSwKLSAgICAgIHJldHVybiBudWxsX3R5cGUuICovCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgc3RydWN0IGJ1aWxkX2NvbnMKLSAgICAgIHsKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0geyB0YWlsX2lzX251bGxfdHlwZSA9IGlzX251bGxfdHlwZTxUYWlsPjo6UkVUIH07Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgY29uczxIZWFkLCBUYWlsPiBSRVQ7Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgYnVpbGRfY29uczxudWxsX3R5cGUsIG51bGxfdHlwZT4KLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiBudWxsX3R5cGUgUkVUOwotICAgICAgfTsKLQotICAgICAgLy8gTWFwIHRoZSBOIGVsZW1lbnRzIG9mIGEgdHVwbGUgaW50byBhIGNvbnMgbGlzdAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIFQxLAotICAgICAgICB0eXBlbmFtZSBUMiA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDMgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ0ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUNSA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDYgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ3ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUOCA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDkgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQxMCA9IG51bGxfdHlwZQotICAgICAgPgotICAgICAgc3RydWN0IG1hcF90dXBsZV90b19jb25zCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQxMCwgbnVsbF90eXBlICA+OjpSRVQgY29uczEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUOSwgY29uczEwPjo6UkVUIGNvbnM5OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUOCwgY29uczk+OjpSRVQgY29uczg7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ3LCBjb25zOD46OlJFVCBjb25zNzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDYsIGNvbnM3Pjo6UkVUIGNvbnM2OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUNSwgY29uczY+OjpSRVQgY29uczU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ0LCBjb25zNT46OlJFVCBjb25zNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDMsIGNvbnM0Pjo6UkVUIGNvbnMzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUMiwgY29uczM+OjpSRVQgY29uczI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQxLCBjb25zMj46OlJFVCBjb25zMTsKLSAgICAgIH07Ci0KLSAgICAgIC8vIFdvcmthcm91bmQgdGhlIGxhY2sgb2YgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBpbiBzb21lIGNvbXBpbGVycwotICAgICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgICBzdHJ1Y3QgX2VsZW1lbnRfdHlwZQotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZT4KLSAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgIHsKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR1cGxlOjp0YWlsX3R5cGUgdGFpbF90eXBlOwotICAgICAgICAgIHR5cGVkZWYgX2VsZW1lbnRfdHlwZTxOLTE+IG5leHRfZWx0X3R5cGU7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX2VsZW1lbnRfdHlwZTxOLTE+Ojp0ZW1wbGF0ZSBpbm5lcjx0YWlsX3R5cGU+OjpSRVQgUkVUOwotICAgICAgICB9OwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IF9lbGVtZW50X3R5cGU8MD4KLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHVwbGU+Ci0gICAgICAgIHN0cnVjdCBpbm5lcgotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUdXBsZTo6aGVhZF90eXBlIFJFVDsKLSAgICAgICAgfTsKLSAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotCi0gICAgLy8gUmV0dXJuIHRoZSBOdGggdHlwZSBvZiB0aGUgZ2l2ZW4gVHVwbGUKLSAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgc3RydWN0IGVsZW1lbnQKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjpfZWxlbWVudF90eXBlPE4+IG50aF90eXBlOwotCi0gICAgcHVibGljOgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBudGhfdHlwZTo6dGVtcGxhdGUgaW5uZXI8VHVwbGU+OjpSRVQgUkVUOwotICAgICAgdHlwZWRlZiBSRVQgdHlwZTsKLSAgICB9OwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID09IDEzMDApCi0gICAgICAvLyBzcGVjaWFsIHdvcmthcm91bmQgZm9yIHZjNzoKLQotICAgICAgdGVtcGxhdGUgPGJvb2wgeD4KLSAgICAgIHN0cnVjdCByZWZlcmVuY2VfYWRkZXIKLSAgICAgIHsKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgc3RydWN0IHJlYmluZAotICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgfTsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICBzdHJ1Y3QgcmVmZXJlbmNlX2FkZGVyPHRydWU+Ci0gICAgICB7Ci0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgIHN0cnVjdCByZWJpbmQKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgfTsKLSAgICAgIH07Ci0KLQotICAgICAgLy8gUmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBOdGggdHlwZSBvZiB0aGUgZ2l2ZW4gVHVwbGUKLSAgICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUdXBsZT4KLSAgICAgIHN0cnVjdCBlbGVtZW50X3JlZgotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudDxOLCBUdXBsZT46OlJFVCBlbHRfdHlwZTsKLSAgICAgICAgIGVudW0geyBpc19yZWYgPSBpc19yZWZlcmVuY2U8ZWx0X3R5cGU+Ojp2YWx1ZSB9OwotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgICB0eXBlZGVmIHJlZmVyZW5jZV9hZGRlcjxpc19yZWY+OjpyZWJpbmQ8ZWx0X3R5cGU+Ojp0eXBlIFJFVDsKLSAgICAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAvLyBSZXR1cm4gYSBjb25zdCByZWZlcmVuY2UgdG8gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgICAgc3RydWN0IGVsZW1lbnRfY29uc3RfcmVmCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50PE4sIFR1cGxlPjo6UkVUIGVsdF90eXBlOwotICAgICAgICAgZW51bSB7IGlzX3JlZiA9IGlzX3JlZmVyZW5jZTxlbHRfdHlwZT46OnZhbHVlIH07Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgIHR5cGVkZWYgcmVmZXJlbmNlX2FkZGVyPGlzX3JlZj46OnJlYmluZDxjb25zdCBlbHRfdHlwZT46OnR5cGUgUkVUOwotICAgICAgICAgdHlwZWRlZiBSRVQgdHlwZTsKLSAgICAgIH07Ci0KLSNlbHNlIC8vIHZjNwotCi0gICAgICAvLyBSZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgICAgc3RydWN0IGVsZW1lbnRfcmVmCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnQ8TiwgVHVwbGU+OjpSRVQgZWx0X3R5cGU7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPGVsdF90eXBlPjo6dHlwZSBSRVQ7Ci0gICAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAvLyBSZXR1cm4gYSBjb25zdCByZWZlcmVuY2UgdG8gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgICAgc3RydWN0IGVsZW1lbnRfY29uc3RfcmVmCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnQ8TiwgVHVwbGU+OjpSRVQgZWx0X3R5cGU7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPGNvbnN0IGVsdF90eXBlPjo6dHlwZSBSRVQ7Ci0gICAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgICB9OwotI2VuZGlmIC8vIHZjNwotCi0gICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgICAvLyBHZXQgbGVuZ3RoIG9mIHRoaXMgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZT4KLSAgICBzdHJ1Y3QgbGVuZ3RoCi0gICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAxICsgbGVuZ3RoPHR5cGVuYW1lIFR1cGxlOjp0YWlsX3R5cGU+Ojp2YWx1ZSk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IGxlbmd0aDx0dXBsZTw+ID4gewotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBsZW5ndGg8bnVsbF90eXBlPgotICAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gUmVmZXJlbmNlIHRoZSBOdGggZWxlbWVudCBpbiBhIHR1cGxlIGFuZCByZXRyaWV2ZSBpdCB3aXRoICJnZXQiCi0gICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgc3RydWN0IGdldF9jbGFzcwotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzdGF0aWMgaW5saW5lCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfcmVmPE4sIGNvbnM8SGVhZCwgVGFpbD4gPjo6UkVUCi0gICAgICBnZXQoY29uczxIZWFkLCBUYWlsPiYgdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGdldF9jbGFzczxOLTE+OjpnZXQodC50YWlsKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHN0YXRpYyBpbmxpbmUKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9jb25zdF9yZWY8TiwgY29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLSAgICAgIGdldChjb25zdCBjb25zPEhlYWQsIFRhaWw+JiB0KQotICAgICAgewotICAgICAgICByZXR1cm4gZ2V0X2NsYXNzPE4tMT46OmdldCh0LnRhaWwpOwotICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IGdldF9jbGFzczwwPgotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzdGF0aWMgaW5saW5lCi0gICAgICB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPEhlYWQ+Ojp0eXBlCi0gICAgICBnZXQoY29uczxIZWFkLCBUYWlsPiYgdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHQuaGVhZDsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHN0YXRpYyBpbmxpbmUKLSAgICAgIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8Y29uc3QgSGVhZD46OnR5cGUKLSAgICAgIGdldChjb25zdCBjb25zPEhlYWQsIFRhaWw+JiB0KQotICAgICAgewotICAgICAgICByZXR1cm4gdC5oZWFkOwotICAgICAgfQotICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgIC8vIHR1cGxlIGNsYXNzCi0gICAgdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwKLSAgICAgIHR5cGVuYW1lIFQyLAotICAgICAgdHlwZW5hbWUgVDMsCi0gICAgICB0eXBlbmFtZSBUNCwKLSAgICAgIHR5cGVuYW1lIFQ1LAotICAgICAgdHlwZW5hbWUgVDYsCi0gICAgICB0eXBlbmFtZSBUNywKLSAgICAgIHR5cGVuYW1lIFQ4LAotICAgICAgdHlwZW5hbWUgVDksCi0gICAgICB0eXBlbmFtZSBUMTAKLSAgICA+Ci0gICAgY2xhc3MgdHVwbGUgOgotICAgICAgcHVibGljIGRldGFpbDo6bWFwX3R1cGxlX3RvX2NvbnM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPjo6Y29uczEKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjptYXBfdHVwbGVfdG9fY29uczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IG1hcHBlZF90dXBsZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zMTAgY29uczEwOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM5IGNvbnM5OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM4IGNvbnM4OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM3IGNvbnM3OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM2IGNvbnM2OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM1IGNvbnM1OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM0IGNvbnM0OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnMzIGNvbnMzOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnMyIGNvbnMyOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnMxIGNvbnMxOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUMT46OnR5cGUgdDFfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQyPjo6dHlwZSB0Ml9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDM+Ojp0eXBlIHQzX2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUND46OnR5cGUgdDRfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ1Pjo6dHlwZSB0NV9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDY+Ojp0eXBlIHQ2X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUNz46OnR5cGUgdDdfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ4Pjo6dHlwZSB0OF9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDk+Ojp0eXBlIHQ5X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUMTA+Ojp0eXBlIHQxMF9jcmVmOwotICAgIHB1YmxpYzoKLSAgICAgIHR5cGVkZWYgY29uczEgaW5oZXJpdGVkOwotICAgICAgdHlwZWRlZiB0dXBsZSBzZWxmX3R5cGU7Ci0KLSAgICAgIHR1cGxlKCkgOiBjb25zMShUMSgpLCBjb25zMihUMigpLCBjb25zMyhUMygpLCBjb25zNChUNCgpLCBjb25zNShUNSgpLCBjb25zNihUNigpLGNvbnM3KFQ3KCksY29uczgoVDgoKSxjb25zOShUOSgpLGNvbnMxMChUMTAoKSkpKSkpKSkpKSkKLSAgICAgICAge30KLQotICAgICAgdHVwbGUoCi0gICAgICAgICAgdDFfY3JlZiB0MSwKLSAgICAgICAgICB0Ml9jcmVmIHQyLAotICAgICAgICAgIHQzX2NyZWYgdDMgPSBUMygpLAotICAgICAgICAgIHQ0X2NyZWYgdDQgPSBUNCgpLAotICAgICAgICAgIHQ1X2NyZWYgdDUgPSBUNSgpLAotICAgICAgICAgIHQ2X2NyZWYgdDYgPSBUNigpLAotICAgICAgICAgIHQ3X2NyZWYgdDcgPSBUNygpLAotICAgICAgICAgIHQ4X2NyZWYgdDggPSBUOCgpLAotICAgICAgICAgIHQ5X2NyZWYgdDkgPSBUOSgpLAotICAgICAgICAgIHQxMF9jcmVmIHQxMCA9IFQxMCgpCi0gICAgICApIDoKLSAgICAgICAgY29uczEodDEsIGNvbnMyKHQyLCBjb25zMyh0MywgY29uczQodDQsIGNvbnM1KHQ1LCBjb25zNih0Nixjb25zNyh0Nyxjb25zOCh0OCxjb25zOSh0OSxjb25zMTAodDEwKSkpKSkpKSkpKQotICAgICAgewotICAgICAgfQotCi0gICAgICBleHBsaWNpdCB0dXBsZSh0MV9jcmVmIHQxKQotICAgICAgICA6IGNvbnMxKHQxLCBjb25zMihUMigpLCBjb25zMyhUMygpLCBjb25zNChUNCgpLCBjb25zNShUNSgpLCBjb25zNihUNigpLGNvbnM3KFQ3KCksY29uczgoVDgoKSxjb25zOShUOSgpLGNvbnMxMChUMTAoKSkpKSkpKSkpKSkKLSAgICAgIHt9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICB0dXBsZShjb25zdCBjb25zPEhlYWQsIFRhaWw+JiBvdGhlcikgOgotICAgICAgICBjb25zMShvdGhlci5oZWFkLCBvdGhlci50YWlsKQotICAgICAgewotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgotICAgICAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY29uc3Qgc3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+JiBvdGhlcikKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+aGVhZCA9IG90aGVyLmZpcnN0OwotICAgICAgICB0aGlzLT50YWlsLmhlYWQgPSBvdGhlci5zZWNvbmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3I9KGNvbnN0IGNvbnM8SGVhZCwgVGFpbD4mIG90aGVyKQotICAgICAgewotICAgICAgICB0aGlzLT5oZWFkID0gb3RoZXIuaGVhZDsKLSAgICAgICAgdGhpcy0+dGFpbCA9IG90aGVyLnRhaWw7Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgfQotICAgIH07Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgICAgdGVtcGxhdGU8aW50IE4+IHN0cnVjdCB3b3JrYXJvdW5kX2hvbGRlciB7fTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X3JlZjxOLCBjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotICAgIGdldChjb25zPEhlYWQsIFRhaWw+JiB0LCBkZXRhaWw6Ondvcmthcm91bmRfaG9sZGVyPE4+KiA9IDApCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6Z2V0X2NsYXNzPE4+OjpnZXQodCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X2NvbnN0X3JlZjxOLCBjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotICAgIGdldChjb25zdCBjb25zPEhlYWQsIFRhaWw+JiB0LCBkZXRhaWw6Ondvcmthcm91bmRfaG9sZGVyPE4+KiA9IDApCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6Z2V0X2NsYXNzPE4+OjpnZXQodCk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDE+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxPih0MSk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMj4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDI+KHQxLCB0Mik7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzPgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MykKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMz4odDEsIHQyLCB0Myk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQ+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0Pih0MSwgdDIsIHQzLCB0NCk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+KHQxLCB0MiwgdDMsIHQ0LCB0NSk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NikKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4odDEsIHQyLCB0MywgdDQsIHQ1LCB0Nik7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pih0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0Nyk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NywgY29uc3QgVDgmIHQ4KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3LCBjb25zdCBUOCYgdDgsIGNvbnN0IFQ5JiB0OSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4odDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NywgY29uc3QgVDgmIHQ4LCBjb25zdCBUOSYgdDksIGNvbnN0IFQxMCYgdDEwKQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDksIHQxMCk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiA+Ci0gICAgdGllKFQxJiB0MSkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MikpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzKQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSkpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSwgVDYgJnQ2KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1LCBUNiAmdDYsIFQ3ICZ0NykKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4oJnQ1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+KCZ0NiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PigmdDcpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUsIFQ2ICZ0NiwgVDcgJnQ3LCBUOCAmdDgpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PigmdDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4oJnQ3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+KCZ0OCkpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOT4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSwgVDYgJnQ2LCBUNyAmdDcsIFQ4ICZ0OCwgVDkgJnQ5KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+KCZ0NyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PigmdDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOT4oJnQ5KSk7Ci0gICAgfQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOD4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ5PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDEwPiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1LCBUNiAmdDYsIFQ3ICZ0NywgVDggJnQ4LCBUOSAmdDksIFQxMCAmdDEwKQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+KCZ0NyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PigmdDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOT4oJnQ5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDEwPigmdDEwKSk7Ci0gICAgfQotICAgIC8vICJpZ25vcmUiIGFsbG93cyB0dXBsZSBwb3NpdGlvbnMgdG8gYmUgaWdub3JlZCB3aGVuIHVzaW5nICJ0aWUiLgotCi1kZXRhaWw6OnN3YWxsb3dfYXNzaWduIGNvbnN0IGlnbm9yZSA9IGRldGFpbDo6c3dhbGxvd19hc3NpZ24oKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci12b2lkIHN3YXAodHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiBsaHMsCi0gICAgICAgICAgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiByaHMpOwotaW5saW5lIHZvaWQgc3dhcChudWxsX3R5cGUmLCBudWxsX3R5cGUmKSB7fQotdGVtcGxhdGU8Y2xhc3MgSEg+Ci1pbmxpbmUgdm9pZCBzd2FwKGNvbnM8SEgsIG51bGxfdHlwZT4mIGxocywgY29uczxISCwgbnVsbF90eXBlPiYgcmhzKSB7Ci0gIDo6bmRuYm9vc3Q6OnN3YXAobGhzLmhlYWQsIHJocy5oZWFkKTsKLX0KLXRlbXBsYXRlPGNsYXNzIEhILCBjbGFzcyBUVD4KLWlubGluZSB2b2lkIHN3YXAoY29uczxISCwgVFQ+JiBsaHMsIGNvbnM8SEgsIFRUPiYgcmhzKSB7Ci0gIDo6bmRuYm9vc3Q6OnN3YXAobGhzLmhlYWQsIHJocy5oZWFkKTsKLSAgOjpuZG5ib29zdDo6dHVwbGVzOjpzd2FwKGxocy50YWlsLCByaHMudGFpbCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLWlubGluZSB2b2lkIHN3YXAodHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiBsaHMsCi0gICAgICAgICAgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiByaHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gdHVwbGVfdHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjppbmhlcml0ZWQgYmFzZTsKLSAgOjpuZG5ib29zdDo6dHVwbGVzOjpzd2FwKHN0YXRpY19jYXN0PGJhc2UmPihsaHMpLCBzdGF0aWNfY2FzdDxiYXNlJj4ocmhzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHR1cGxlcwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLSNlbmRpZiAvLyBORE5CT09TVF9UVVBMRV9CQVNJQ19OT19QQVJUSUFMX1NQRUNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvdHVwbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGI1ODA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvdHVwbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLy8gIHR1cGxlLmhwcCAtIEJvb3N0IFR1cGxlIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCi0KLSNpZm5kZWYgTkROQk9PU1RfVFVQTEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RVUExFX0hQUAotCi0jaWYgZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfQ09NUElMRVJfVkVSU0lPTikgJiYgX0NPTVBJTEVSX1ZFUlNJT04gPD0gNzMwCi0vLyBXb3JrIGFyb3VuZCBhIGNvbXBpbGVyIGJ1Zy4KLS8vIG5kbmJvb3N0OjpweXRob246OnR1cGxlIGhhcyB0byBiZSBzZWVuIGJ5IHRoZSBjb21waWxlciBiZWZvcmUgdGhlCi0vLyBuZG5ib29zdDo6dHVwbGUgY2xhc3MgdGVtcGxhdGUuCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgcHl0aG9uIHsgY2xhc3MgdHVwbGU7IH19Ci0jZW5kaWYKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHAiCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0vLyBUaGUgTVNWQyB2ZXJzaW9uCi0jaW5jbHVkZSAibmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAiCi0KLSNlbHNlCi0vLyBvdGhlciBjb21waWxlcnMKLSNpbmNsdWRlICJuZG5ib29zdC9yZWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpYy5ocHAiCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7ICAgIAotCi11c2luZyB0dXBsZXM6OnR1cGxlOwotdXNpbmcgdHVwbGVzOjptYWtlX3R1cGxlOwotdXNpbmcgdHVwbGVzOjp0aWU7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUpCi11c2luZyB0dXBsZXM6OmdldDsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0vLwotLy8gVGhlICJ1c2luZyB0dXBsZXM6OmdldCIgc3RhdGVtZW50IGNhdXNlcyB0aGUKLS8vIEJvcmxhbmQgY29tcGlsZXIgdG8gSUNFLCB1c2UgZm9yd2FyZGluZwotLy8gZnVuY3Rpb25zIGluc3RlYWQ6Ci0vLwotdGVtcGxhdGU8aW50IE4sIGNsYXNzIEhULCBjbGFzcyBUVD4KLWlubGluZSB0eXBlbmFtZSB0dXBsZXM6OmFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8TiwgdHVwbGVzOjpjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICAgICAgID46Om5vbl9jb25zdF90eXBlCi1nZXQodHVwbGVzOjpjb25zPEhULCBUVD4mIGMpIHsKLSAgcmV0dXJuIHR1cGxlczo6Z2V0PE4sSFQsVFQ+KGMpOwotfSAKLS8vIGdldCBmdW5jdGlvbiBmb3IgY29uc3QgY29ucy1saXN0cywgcmV0dXJucyBhIGNvbnN0IHJlZmVyZW5jZSB0bwotLy8gdGhlIGVsZW1lbnQuIElmIHRoZSBlbGVtZW50IGlzIGEgcmVmZXJlbmNlLCByZXR1cm5zIHRoZSByZWZlcmVuY2UKLS8vIGFzIHN1Y2ggKHRoYXQgaXMsIGNhbiByZXR1cm4gYSBub24tY29uc3QgcmVmZXJlbmNlKQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIEhULCBjbGFzcyBUVD4KLWlubGluZSB0eXBlbmFtZSB0dXBsZXM6OmFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8TiwgdHVwbGVzOjpjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICAgICAgID46OmNvbnN0X3R5cGUKLWdldChjb25zdCB0dXBsZXM6OmNvbnM8SFQsIFRUPiYgYykgewotICByZXR1cm4gdHVwbGVzOjpnZXQ8TixIVCxUVD4oYyk7Ci19Ci0jZWxzZSAgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8KLS8vIE1TVkMsIHVzaW5nIGRlY2xhcmF0aW9ucyBkb24ndCBtaXggd2l0aCB0ZW1wbGF0ZXMgd2VsbCwKLS8vIHNvIHVzZSBmb3J3YXJkaW5nIGZ1bmN0aW9ucyBpbnN0ZWFkOgotLy8KLXRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotdHlwZW5hbWUgdHVwbGVzOjpkZXRhaWw6OmVsZW1lbnRfcmVmPE4sIHR1cGxlczo6Y29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLWdldCh0dXBsZXM6OmNvbnM8SGVhZCwgVGFpbD4mIHQsIHR1cGxlczo6ZGV0YWlsOjp3b3JrYXJvdW5kX2hvbGRlcjxOPiogPSAwKQotewotICAgcmV0dXJuIHR1cGxlczo6ZGV0YWlsOjpnZXRfY2xhc3M8Tj46OmdldCh0KTsKLX0KLQotdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci10eXBlbmFtZSB0dXBsZXM6OmRldGFpbDo6ZWxlbWVudF9jb25zdF9yZWY8TiwgdHVwbGVzOjpjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotZ2V0KGNvbnN0IHR1cGxlczo6Y29uczxIZWFkLCBUYWlsPiYgdCwgdHVwbGVzOjpkZXRhaWw6Ondvcmthcm91bmRfaG9sZGVyPE4+KiA9IDApCi17Ci0gICByZXR1cm4gdHVwbGVzOjpkZXRhaWw6OmdldF9jbGFzczxOPjo6Z2V0KHQpOwotfQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0gICAKLX0gLy8gZW5kIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVVBMRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWIzNWY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9ORE5CT09TVF9EV0EyMDAxMDEyMF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVfTkROQk9PU1RfRFdBMjAwMTAxMjBfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgLy8gSnVzdCBhIHNpbXBsZSAidHlwZSBlbnZlbG9wZSIuIFVzZWZ1bCBpbiB2YXJpb3VzIGNvbnRleHRzLCBtb3N0bHkgdG8gd29yawotICAvLyBhcm91bmQgc29tZSBNU1ZDIGRlZmljaWVuY2llcy4KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCB0eXBlIHt9OwotCi19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UWVBFX05ETkJPT1NUX0RXQTIwMDEwMTIwX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjY2NlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICBTZWUgbmRuYm9vc3QvdHlwZV90cmFpdHMvKi5ocHAgZm9yIGZ1bGwgY29weXJpZ2h0IG5vdGljZXMuCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbW1vbl90eXBlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jb25kaXRpb25hbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2V4dGVudC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwIgotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoX19DVURBQ0NfXykKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmV3X29wZXJhdG9yLmhwcCIKLSNlbmRpZgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Rlc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19vcGVyYXRvci5ocHA+Ci0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc192aXJ0dWFsX2Rlc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBsZXguaHBwPgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBvdW5kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2x2YWx1ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfYXNzaWduYWJsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX29iamVjdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2x5bW9ycGhpYy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZpcnR1YWxfYmFzZV9vZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2Vfc2lnbmVkLmhwcD4KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yYW5rLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfZXh0ZW50LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3ZvbGF0aWxlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcCIKLSNpZiAhKGRlZmluZWQoX19zZ2kpICYmIGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiAoX19FREdfVkVSU0lPTl9fID09IDIzOCkpCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9wcm9tb3RlLmhwcCIKLSNlbmRpZgotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcCIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2M1ZWQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfQ09OU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9DT05TVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byBjb25zdCB0eXBlIC0gYWRkX2NvbnN0PFQ+Ci0vLyB0aGlzIGlzIG5vdCByZXF1aXJlZCBzaW5jZSB0aGUgcmVzdWx0IGlzIGFsd2F5cwotLy8gdGhlIHNhbWUgYXMgIlQgY29uc3QiLCBidXQgaXQgZG9lcyBzdXBwcmVzcyB3YXJuaW5ncwotLy8gZnJvbSBzb21lIGNvbXBpbGVyczoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLS8vIFRoaXMgYm9ndXMgd2FybmluZyB3aWxsIGFwcGVhciB3aGVuIGFkZF9jb25zdCBpcyBhcHBsaWVkIHRvIGEKLS8vIGNvbnN0IHZvbGF0aWxlIHJlZmVyZW5jZSBiZWNhdXNlIHdlIGNhbid0IGRldGVjdCBjb25zdCB2b2xhdGlsZQotLy8gcmVmZXJlbmNlcyB3aXRoIE1TVkM2LgotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTgxKSAvLyB3YXJuaW5nIEM0MTgxOiBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZSBpZ25vcmVkCi0jZW5kaWYgCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX2NvbnN0LFQsVCBjb25zdCkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX2NvbnN0LFQmLFQmKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfQ09OU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jdi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jdi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZDU2ZDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfQ1ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9DVl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byBhIGNvbnN0IHZvbGF0aWxlIHR5cGUgLSBhZGRfY3Y8VD4KLS8vIHRoaXMgaXMgbm90IHJlcXVpcmVkIHNpbmNlIHRoZSByZXN1bHQgaXMgYWx3YXlzCi0vLyB0aGUgc2FtZSBhcyAiVCBjb25zdCB2b2xhdGlsZSIsIGJ1dCBpdCBkb2VzIHN1cHByZXNzIHdhcm5pbmdzCi0vLyBmcm9tIHNvbWUgY29tcGlsZXJzOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotLy8gVGhpcyBib2d1cyB3YXJuaW5nIHdpbGwgYXBwZWFyIHdoZW4gYWRkX3ZvbGF0aWxlIGlzIGFwcGxpZWQgdG8gYQotLy8gY29uc3Qgdm9sYXRpbGUgcmVmZXJlbmNlIGJlY2F1c2Ugd2UgY2FuJ3QgZGV0ZWN0IGNvbnN0IHZvbGF0aWxlCi0vLyByZWZlcmVuY2VzIHdpdGggTVNWQzYuCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODEpIC8vIHdhcm5pbmcgQzQxODE6IHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNlbmRpZiAKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfY3YsVCxUIGNvbnN0IHZvbGF0aWxlKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfY3YsVCYsVCYpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9DVl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MmVmYzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vLyAgQ29weXJpZ2h0IDIwMTAgSm9obiBNYWRkb2NrCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfTFZBTFVFX1JFRkVSRU5DRV9fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfTFZBTFVFX1JFRkVSRU5DRV9fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF9sdmFsdWVfcmVmZXJlbmNlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGFkZF9sdmFsdWVfcmVmZXJlbmNlLFQmJixUJikKLSNlbmRpZgotCi19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9MVkFMVUVfUkVGRVJFTkNFX19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNmY2MGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUREX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDVBMCkKLS8vCi0vLyBGb3Igc29tZSByZWFzb24gdGhpcyBpbXBsZW1lbnRhdGlvbiBzdG9wcyBCb3JsYW5kcyBjb21waWxlcgotLy8gZnJvbSBkcm9wcGluZyBjdi1xdWFsaWZpZXJzLCBpdCBzdGlsbCBmYWlscyB3aXRoIHJlZmVyZW5jZXMKLS8vIHRvIGFycmF5cyBmb3Igc29tZSByZWFzb24gdGhvdWdoIChzaHJ1Zy4uLikgKEpNIDIwMDIxMTA0KQotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGwKLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbDxUJj4KLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbDxUJmNvbnN0PgotewotICAgIHR5cGVkZWYgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsPFQmdm9sYXRpbGU+Ci17Ci0gICAgdHlwZWRlZiBUKiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGw8VCZjb25zdCB2b2xhdGlsZT4KLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIG5vX3JlZl90eXBlOwotICAgIHR5cGVkZWYgbm9fcmVmX3R5cGUqIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX3BvaW50ZXIsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphZGRfcG9pbnRlcl9pbXBsPFQ+Ojp0eXBlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkzYjhiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUREX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUREX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0KLXRlbXBsYXRlIDxib29sIHg+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FkZGVyCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FkZGVyPHRydWU+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3JlZmVyZW5jZV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZWZlcmVuY2VfYWRkZXI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+IHJlc3VsdDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzdWx0Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZQotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9yZWZlcmVuY2VfcnZhbHVlX2xheWVyCi17Ci0gICAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3JlZmVyZW5jZV9ydmFsdWVfbGF5ZXI8VCYmPgotewotICAgIHR5cGVkZWYgVCYmIHR5cGU7Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9yZWZlcmVuY2VfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZV9ydmFsdWVfbGF5ZXI8VD46OnR5cGUgdHlwZTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfcmVmZXJlbmNlLFQmLFQmKQotI2VuZGlmCi0KLSNlbmRpZgotCi0vLyB0aGVzZSBmdWxsIHNwZWNpYWxpc2F0aW9ucyBhcmUgYWx3YXlzIHJlcXVpcmVkOgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMShhZGRfcmVmZXJlbmNlLHZvaWQsdm9pZCkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEoYWRkX3JlZmVyZW5jZSx2b2lkIGNvbnN0LHZvaWQgY29uc3QpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxKGFkZF9yZWZlcmVuY2Usdm9pZCB2b2xhdGlsZSx2b2lkIHZvbGF0aWxlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMShhZGRfcmVmZXJlbmNlLHZvaWQgY29uc3Qgdm9sYXRpbGUsdm9pZCBjb25zdCB2b2xhdGlsZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfcmVmZXJlbmNlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YWRkX3JlZmVyZW5jZV9pbXBsPFQ+Ojp0eXBlKQotCi0vLyBhZ3VydCwgMDcvbWFyLzAzOiB3b3JrYXJvdW5kIEJvcmxhbmQncyBpbGwtZm9ybWVkIHNlbnNpdGl2aXR5IHRvIGFuIGFkZGl0aW9uYWwKLS8vIGxldmVsIG9mIGluZGlyZWN0aW9uLCBoZXJlCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfcmVmZXJlbmNlLFQmLFQmKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2MzA3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vICBhZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgMjAxMCBWaWNlbnRlIEouIEJvdGV0IEVzY3JpYmEKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9SVkFMVUVfUkVGRVJFTkNFX19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9SVkFMVUVfUkVGRVJFTkNFX19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrMDMgaW1wbGVtZW50YXRpb24gb2YgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAyMC45LjcuMiBSZWZlcmVuY2UgbW9kaWZpY2F0aW9ucyBbbWV0YS50cmFucy5yZWZdICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgVmljZW50ZSBKLiBCb3RldCBFc2NyaWJhICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyBJZiBUIG5hbWVzIGFuIG9iamVjdCBvciBmdW5jdGlvbiB0eXBlIHRoZW4gdGhlIG1lbWJlciB0eXBlZGVmIHR5cGUKLS8vIHNoYWxsIG5hbWUgVCYmOyBvdGhlcndpc2UsIHR5cGUgc2hhbGwgbmFtZSBULiBbIE5vdGU6IFRoaXMgcnVsZSByZWZsZWN0cwotLy8gdGhlIHNlbWFudGljcyBvZiByZWZlcmVuY2UgY29sbGFwc2luZy4gRm9yIGV4YW1wbGUsIHdoZW4gYSB0eXBlIFQgbmFtZXMKLS8vIGEgdHlwZSBUMSYsIHRoZSB0eXBlIGFkZF9ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGlzIG5vdCBhbiBydmFsdWUKLS8vIHJlZmVyZW5jZS4gLWVuZCBub3RlIF0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0eXBlX3RyYWl0c19kZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgYj4KLSAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaGVscGVyCi0gICAgeyB0eXBlZGVmIFQgICB0eXBlOyB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlX2hlbHBlcjxULCB0cnVlPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUJiYgICB0eXBlOwotICAgIH07Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZV9pbXAKLSAgICB7Ci0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV90cmFpdHNfZGV0YWlsOjphZGRfcnZhbHVlX3JlZmVyZW5jZV9oZWxwZXIKLSAgICAgICAgICAgICAgICAgIDxULCAoaXNfdm9pZDxUPjo6dmFsdWUgPT0gZmFsc2UgJiYgaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA9PSBmYWxzZSkgPjo6dHlwZSB0eXBlOwotICAgIH07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfcnZhbHVlX3JlZmVyZW5jZSxULHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX3RyYWl0c19kZXRhaWw6OmFkZF9ydmFsdWVfcmVmZXJlbmNlX2ltcDxUPjo6dHlwZSkKLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9SVkFMVUVfUkVGRVJFTkNFX19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGYxMTYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9WT0xBVElMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byB2b2xhdGlsZSB0eXBlIC0gYWRkX3ZvbGF0aWxlPFQ+Ci0vLyB0aGlzIGlzIG5vdCByZXF1aXJlZCBzaW5jZSB0aGUgcmVzdWx0IGlzIGFsd2F5cwotLy8gdGhlIHNhbWUgYXMgIlQgdm9sYXRpbGUiLCBidXQgaXQgZG9lcyBzdXBwcmVzcyB3YXJuaW5ncwotLy8gZnJvbSBzb21lIGNvbXBpbGVyczoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLS8vIFRoaXMgYm9ndXMgd2FybmluZyB3aWxsIGFwcGVhciB3aGVuIGFkZF92b2xhdGlsZSBpcyBhcHBsaWVkIHRvIGEKLS8vIGNvbnN0IHZvbGF0aWxlIHJlZmVyZW5jZSBiZWNhdXNlIHdlIGNhbid0IGRldGVjdCBjb25zdCB2b2xhdGlsZQotLy8gcmVmZXJlbmNlcyB3aXRoIE1TVkM2LgotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTgxKSAvLyB3YXJuaW5nIEM0MTgxOiBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZSBpZ25vcmVkCi0jZW5kaWYgCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX3ZvbGF0aWxlLFQsVCB2b2xhdGlsZSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX3ZvbGF0aWxlLFQmLFQmKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfVk9MQVRJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZTY2YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IChDKSBKb2huIE1hZGRvY2sgMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUxJR05FRF9TVE9SQUdFX0hQUF9JTkNMVURFRAotIyAgZGVmaW5lIE5ETkJPT1NUX1RUX0FMSUdORURfU1RPUkFHRV9IUFBfSU5DTFVERUQKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2FsaWduZWRfc3RvcmFnZS5ocHA+Ci0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUxJR05FRF9TVE9SQUdFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZDM1YWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9PRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX09GX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTIxIDQ1MTIpIC8vIGFsaWdubWVudCBpcyBzZW5zaXRpdmUgdG8gcGFja2luZwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLVZ4LSAtVmUtCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBhbGlnbm1lbnRfb2Y7Ci0KLS8vIGdldCB0aGUgYWxpZ25tZW50IG9mIHNvbWUgYXJiaXRyYXJ5IHR5cGU6Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDMyNCkgLy8gc3RydWN0dXJlIHdhcyBwYWRkZWQgZHVlIHRvIF9fZGVjbHNwZWMoYWxpZ24oKSkKLSNlbmRpZgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWxpZ25tZW50X29mX2hhY2sKLXsKLSAgICBjaGFyIGM7Ci0gICAgVCB0OwotICAgIGFsaWdubWVudF9vZl9oYWNrKCk7Ci19OwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPHVuc2lnbmVkIEEsIHVuc2lnbmVkIFM+Ci1zdHJ1Y3QgYWxpZ25tZW50X2xvZ2ljCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IEEgPCBTID8gQSA6IFMpOwotfTsKLQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgYWxpZ25tZW50X29mX2ltcGwKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID49IDE0MDApCi0gICAgLy8KLSAgICAvLyBXaXRoIE1TVkMgYm90aCB0aGUgbmF0aXZlIF9fYWxpZ25vZiBvcGVyYXRvcgotICAgIC8vIGFuZCBvdXIgb3duIGxvZ2ljIGdldHMgdGhpbmdzIHdyb25nIGZyb20gdGltZSB0byB0aW1lIDotKAotICAgIC8vIFVzaW5nIGEgY29tYmluYXRpb24gb2YgdGhlIHR3byBzZWVtcyB0byBtYWtlIHRoZSBtb3N0IG9mIGEgYmFkIGpvYjoKLSAgICAvLwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbm1lbnRfbG9naWM8Ci0gICAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbm1lbnRfb2ZfaGFjazxUPikgLSBzaXplb2YoVCksCi0gICAgICAgICAgICBfX2FsaWdub2YoVCkKLSAgICAgICAgPjo6dmFsdWUpKTsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX0FMSUdOTUVOVF9PRikKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25tZW50X2xvZ2ljPAotICAgICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25tZW50X29mX2hhY2s8VD4pIC0gc2l6ZW9mKFQpLAotICAgICAgICAgICAgc2l6ZW9mKFQpCi0gICAgICAgID46OnZhbHVlKSk7Ci0jZWxzZQotICAgLy8KLSAgIC8vIFdlIHB1dCB0aGlzIGhlcmUsIHJhdGhlciB0aGFuIGluIHRoZSBkZWZpbml0aW9uIG9mCi0gICAvLyBhbGlnbm1lbnRfb2YgYmVsb3csIGJlY2F1c2UgTVNWQydzIF9fYWxpZ25vZiBkb2Vzbid0Ci0gICAvLyBhbHdheXMgd29yayBpbiB0aGF0IGNvbnRleHQgZm9yIHNvbWUgdW5leHBsYWluZWQgcmVhc29uLgotICAgLy8gKFNlZSB0eXBlX3dpdGhfYWxpZ25tZW50IHRlc3RzIGZvciB0ZXN0IGNhc2VzKS4KLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gTkROQk9PU1RfQUxJR05NRU5UX09GKFQpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfREVGMShhbGlnbm1lbnRfb2YsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmFsaWdubWVudF9vZl9pbXBsPFQ+Ojp2YWx1ZSkKLQotLy8gcmVmZXJlbmNlcyBoYXZlIHRvIGJlIHRyZWF0ZWQgc3BlY2lhbGx5LCBhc3N1bWUKLS8vIHRoYXQgYSByZWZlcmVuY2UgaXMganVzdCBhIHNwZWNpYWwgcG9pbnRlcjoKLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWxpZ25tZW50X29mPFQmPgotICAgIDogcHVibGljIGFsaWdubWVudF9vZjxUKj4KLXsKLX07Ci0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIGxvbmcgZG91YmxlIGdpdmVzIGFuIGluY29ycmVjdCB2YWx1ZSBvZiAxMCAoISkKLS8vIHVubGVzcyB3ZSBkbyB0aGlzLi4uCi1zdHJ1Y3QgbG9uZ19kb3VibGVfd3JhcHBlcnsgbG9uZyBkb3VibGUgbGQ7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBhbGlnbm1lbnRfb2Y8bG9uZyBkb3VibGU+Ci0gICA6IHB1YmxpYyBhbGlnbm1lbnRfb2Y8bG9uZ19kb3VibGVfd3JhcHBlcj57fTsKLSNlbmRpZgotCi0vLyB2b2lkIGhhcyB0byBiZSB0cmVhdGVkIHNwZWNpYWxseToKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQsMCkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQgY29uc3QsMCkKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQgdm9sYXRpbGUsMCkKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQgY29uc3Qgdm9sYXRpbGUsMCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BTElHTk1FTlRfT0ZfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYXJpdGhtZXRpY190cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hcml0aG1ldGljX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOGUxOTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hcml0aG1ldGljX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyB0cmFpdHMgY2xhc3NlcyBmb3IgYXJpdGhtZXRpYyB0eXBlczoKLS8vICBpc192b2lkLCBpc19pbnRlZ3JhbCwgaXNfZmxvYXQsIGlzX2FyaXRobWV0aWMsIGlzX2Z1bmRhbWVudGFsLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FSSVRITUVUSUNfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BUklUSE1FVElDX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQVJJVEhNRVRJQ19UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGE1ZWUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLQotLy8gIENvcHlyaWdodCAyMDAxLTIwMDMgQWxla3NleSBHdXJ0b3ZveS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHRoZXNlIGFyZSBuZWVkZWQgcmVnYXJkbGVzcyBvZiBORE5CT09TVF9UVF9OT19CUk9LRU5fQ09NUElMRVJfU1BFQyAKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGwgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXBsICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VfaW1wbCB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdHlwZWRlZiBpbnQgaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX291dHNpZGVfYWxsX25hbWVzcGFjZXM7Ci19fQotI2VuZGlmCi0KLS8vIGFndXJ0LCAyNy9qdW4vMDM6IGRpc2FibGUgdGhlIHdvcmthcm91bmQgaWYgdXNlciBkZWZpbmVkIAotLy8gTkROQk9PU1RfVFRfTk9fQlJPS0VOX0NPTVBJTEVSX1NQRUMKLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9UVF9OT19CUk9LRU5fQ09NUElMRVJfU1BFQykKLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhUKSAvKiovCi0KLSNlbHNlCi0KLS8vIHNhbWUgYXMgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMSBtYWNybywgZXhjZXB0IHRoYXQgaXQKLS8vIG5ldmVyIGdldHMgI3VuZGVmLWluZWQKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdCMjX2ltcGw8c3BlYz4gXAoteyBcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotfTsgXAotLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQ09OU1RfVk9MQVRJTEVfUkFOSzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9jb25zdCxUIGNvbnN0LFQpICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9jb25zdCxUIGNvbnN0IHZvbGF0aWxlLFQgdm9sYXRpbGUpICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV92b2xhdGlsZSxUIHZvbGF0aWxlLFQpICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV92b2xhdGlsZSxUIGNvbnN0IHZvbGF0aWxlLFQgY29uc3QpICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqLFQpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqY29uc3QsVCkgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqdm9sYXRpbGUsVCkgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqY29uc3Qgdm9sYXRpbGUsVCkgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9yZWZlcmVuY2UsVCYsVCkgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzJfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQgY29uc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQgdm9sYXRpbGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQgY29uc3Qgdm9sYXRpbGUpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9DT05TVF9WT0xBVElMRV9SQU5LMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCBjb25zdCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCBjb25zdCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiBpbnZva2VfTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfb3V0c2lkZV9hbGxfbmFtZXNwYWNlcyAgICAgICAgICAgICBcCi0gICAgICBwbGVhc2VfaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX291dHNpZGVfYWxsX25hbWVzcGFjZXM7ICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCBjb25zdCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCBjb25zdCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhib29sKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoY2hhcikKLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHdjaGFyX3QpCi0jZW5kaWYKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHNpZ25lZCBjaGFyKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUModW5zaWduZWQgY2hhcikKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHNpZ25lZCBzaG9ydCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHVuc2lnbmVkIHNob3J0KQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoc2lnbmVkIGludCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHVuc2lnbmVkIGludCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHNpZ25lZCBsb25nKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUModW5zaWduZWQgbG9uZykKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKGZsb2F0KQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoZG91YmxlKQotLy9ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhsb25nIGRvdWJsZSkKLQotLy8gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSNkZWZpbmUgTkROQk9PU1RfQlJPS0VOX0NPTVBJTEVSX1RZUEVfVFJBSVRTX1NQRUNJQUxJWkFUSU9OKFQpIFwKLSAgICBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhUKSBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29tbW9uX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MmMzNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLy8gIGNvbW1vbl90eXBlLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDA4IEhvd2FyZCBIaW5uYW50Ci0vLyAgQ29weXJpZ2h0IDIwMDggQmVtYW4gRGF3ZXMKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfQ09NTU9OX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0NPTU1PTl9UWVBFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRikKLSMgIGRlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YKLSNlbmRpZgotI2lmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GKQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRgotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0FSSVRZKQotI2RlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9BUklUWSAzCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFKSAmJiAhZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YpCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHA+ICAgLy8gYm9vc3Qgd29uZGVycyBuZXZlciBjZWFzZSEKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoQ05ELCBNU0csIFRZUEVTKSBzdGF0aWNfYXNzZXJ0KENORCxNU0cpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX1VTRVNfTVBMX0FTU0VSVCkKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoQ05ELCBNU0csIFRZUEVTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9NUExfQVNTRVJUX01TRyhuZG5ib29zdDo6bXBsOjpib29sXzwgKENORCkgPjo6dHlwZTo6dmFsdWUsIE1TRywgVFlQRVMpCi0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2RlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKENORCwgTVNHLCBUWVBFUykgTkROQk9PU1RfU1RBVElDX0FTU0VSVChDTkQpCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQpIHx8ICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX1VTRVNfTVBMX0FTU0VSVCkKLSNkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfTVVTVF9CRV9BX0NPTVBMRV9UWVBFICJtdXN0IGJlIGNvbXBsZXRlIHR5cGUiCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpICYmIGRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrMDMgaW1wbGVtZW50YXRpb24gb2YgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAyMC45LjcuNiBPdGhlciB0cmFuc2Zvcm1hdGlvbnMgW21ldGEudHJhbnMub3RoZXJdICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgSG93YXJkIEhpbm5hbnQgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgQWRhcHRlZCBmb3IgQm9vc3QgYnkgQmVtYW4gRGF3ZXMsIFZpY2VudGUgQm90ZXQgYW5kICBKZWZmcmV5IEhlbGxydW5nIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gcHJvdG90eXBlCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlOwotI2Vsc2UgLy8gb3Igbm8gc3BlY2lhbGl6YXRpb24KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSA9IHZvaWQsIGNsYXNzIFYgPSB2b2lkPgotICAgIHN0cnVjdCBjb21tb25fdHlwZQotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8dHlwZW5hbWUgY29tbW9uX3R5cGU8VCwgVT46OnR5cGUsIFY+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLSNlbmRpZgotCi0KLS8vIDEgYXJnCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgc3RydWN0IGNvbW1vbl90eXBlPFQ+Ci0jZWxzZQotICAgIHN0cnVjdCBjb21tb25fdHlwZTxULCB2b2lkLCB2b2lkPgotCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFQpID4gMCwgTkROQk9PU1RfQ09NTU9OX1RZUEVfTVVTVF9CRV9BX0NPTVBMRV9UWVBFLCAoVCkpOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLQotLy8gMiBhcmdzCi1uYW1lc3BhY2UgdHlwZV90cmFpdHNfZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgIHN0cnVjdCBjb21tb25fdHlwZV8yCi0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICAgIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFQpID4gMCwgTkROQk9PU1RfQ09NTU9OX1RZUEVfTVVTVF9CRV9BX0NPTVBMRV9UWVBFLCAoVCkpOwotICAgICAgICBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKHNpemVvZihVKSA+IDAsIE5ETkJPT1NUX0NPTU1PTl9UWVBFX01VU1RfQkVfQV9DT01QTEVfVFlQRSwgKFUpKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVjbHZhbF9ib29sKCk7ICAvLyB3b3JrYXJvdW5kIGdjYyBidWc7IG5vdCByZXF1aXJlZCBieSBzdGQKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGRlY2x2YWxfVCgpOyAgLy8gd29ya2Fyb3VuZCBnY2MgYnVnOyBub3QgcmVxdWlyZWQgYnkgc3RkCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxVPjo6dHlwZSBkZWNsdmFsX1UoKTsgIC8vIHdvcmthcm91bmQgZ2NjIGJ1Zzsgbm90IHJlcXVpcmVkIGJ5IHN0ZAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8Ym9vbD46OnR5cGUgZGVjbHZhbF9iKCk7ICAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFKQotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBkZWNsdHlwZShkZWNsdmFsPGJvb2w+KCkgPyBkZWNsdmFsPFQ+KCkgOiBkZWNsdmFsPFU+KCkpIHR5cGU7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRikKLSAgICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWxfdHlwZV90cmFpdHNfY29tbW9uX3R5cGU6OmNvbW1vbl90eXBlX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxVPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX1RQTChkZWNsdmFsX2IoKSA/IGRlY2x2YWxfVCgpIDogZGVjbHZhbF9VKCkpIHR5cGU7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDMgJiYgKF9fR05VQ19NSU5PUl9fID09IDIgfHwgX19HTlVDX01JTk9SX18gPT0gMykKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgcHVibGljX2R1bW15X2Z1bmN0aW9uX2p1c3RfdG9fc2lsZW5jZV93YXJuaW5nKCk7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlXzI8VCwgVD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgIHN0cnVjdCBjb21tb25fdHlwZTxULCBVPgotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8VCwgVSwgdm9pZD4KLSNlbmRpZgotICAgIDogcHVibGljIHR5cGVfdHJhaXRzX2RldGFpbDo6Y29tbW9uX3R5cGVfMjxULFU+Ci0gICAgeyB9OwotCi0KLS8vIDMgb3IgbW9yZSBhcmdzCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lLi4uIFY+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlPFQsIFUsIFYuLi4+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8dHlwZW5hbWUgY29tbW9uX3R5cGU8VCwgVT46OnR5cGUsIFYuLi4+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLSNlbmRpZgotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfQ09NTU9OX1RZUEVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbXBvc2l0ZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21wb3NpdGVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM1YjVlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbXBvc2l0ZV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBkZWZpbmVzIHRyYWl0cyBjbGFzc2VzIGZvciBjb21wb3NpdGUgdHlwZXM6Ci0vLyAgaXNfYXJyYXksIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfbWVtYmVyX3BvaW50ZXIsIGlzX2VudW0sIGlzX3VuaW9uLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9UVF9DT01QT1NJVEVfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DT01QT1NJVEVfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9DT01QT1NJVEVfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZGl0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25kaXRpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxYTljZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25kaXRpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDEwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ09ORElUSU9OQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NPTkRJVElPTkFMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGUgPGJvb2wgYiwgY2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBjb25kaXRpb25hbCA6IHB1YmxpYyBtcGw6OmlmX2M8YiwgVCwgVT4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NPTkRJVElPTkFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWZmZWVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ09ORklHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DT05GSUdfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8KLS8vIHdoZW5ldmVyIHdlIGhhdmUgYSBjb252ZXJzaW9uIGZ1bmN0aW9uIHdpdGggZWxsaXBzZXMKLS8vIGl0IG5lZWRzIHRvIGJlIGRlY2xhcmVkIF9fY2RlY2wgdG8gc3VwcHJlc3MgY29tcGlsZXIKLS8vIHdhcm5pbmdzIGZyb20gTVMgYW5kIEJvcmxhbmQgY29tcGlsZXJzICh0aGlzICptdXN0KgotLy8gYXBwZWFyIGJlZm9yZSB3ZSBpbmNsdWRlIGlzX3NhbWUuaHBwIGJlbG93KToKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0RFQ0wgX19jZGVjbAotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfREVDTCAvKiovCi0jZW5kaWYKLQotIyBpZiAoTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzAwMCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMSkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgIWRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDwgNjAwICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NUEwKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgZGVmaW5lZChfX2docykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKSAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTVBXX0NQTFVTLCBORE5CT09TVF9URVNURURfQVQoMHg4OTApKSAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgwKSkpICAgICAgIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX05PX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04gMQotCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0jIGRlZmluZSBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTiAxCi0jZW5kaWYKLQotLy8KLS8vIERlZmluZSBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcgCi0vLyB3aGVuIHdlIGNhbid0IHRlc3QgZm9yIGZ1bmN0aW9uIHR5cGVzIHdpdGggZWxpcHNpczoKLS8vCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotI2VuZGlmCi0KLS8vCi0vLyBkZWZpbmUgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLS8vIHdoZW4gd2Ugd2FudCB0byB0ZXN0IF9fc3RkY2FsbCBldGMgZnVuY3Rpb24gdHlwZXMgd2l0aCBpc19mdW5jdGlvbiBldGMKLS8vIChOb3RlLCBkb2VzIG5vdCB3b3JrIHdpdGggQm9ybGFuZCwgZXZlbiB0aG91Z2ggaXQgZG9lcyBzdXBwb3J0IF9fc3RkY2FsbCBldGMpOgotLy8KLSNpZiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi0jZW5kaWYKLQotLy8KLS8vIGRlZmluZSBORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QKLS8vIGlmIHRlc3RzIGZvciBjdi1xdWFsaWZpZWQgbWVtYmVyIGZ1bmN0aW9ucyBkb24ndCAKLS8vIHdvcmsgaW4gaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIKLS8vCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzAwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8PSA2MDApCi0jICBkZWZpbmUgTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NPTkZJR19IUFBfSU5DTFVERUQKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbnZlcnNpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29udmVyc2lvbl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JiMTY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29udmVyc2lvbl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwMCBKb2huIE1hZGRvY2sgKGpvaG5Aam9obm1hZGRvY2suY28udWspCi0vLyBDb3B5cmlnaHQgMjAwMCBKZXJlbXkgU2llayAoanNpZWtAbHNjLm5kLmVkdSkKLS8vIENvcHlyaWdodCAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NPTlZFUlNJT05fVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DT05WRVJTSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NPTlZFUlNJT05fVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmJhMTQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyB0cmFpdHMgY2xhc3NlcyBmb3IgY3YtcXVhbGlmaWVkIHR5cGVzOgotLy8gIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgcmVtb3ZlX2NvbnN0LCByZW1vdmVfdm9sYXRpbGUsIHJlbW92ZV9jdi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9DVl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NWX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9DVl9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RlY2F5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTczNmRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrICYgVGhvcnN0ZW4gT3R0b3NlbiAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFQ0FZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERUNBWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgZGVjYXkKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgVHk7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbXBsOjpldmFsX2lmPCAKLSAgICAgICAgICAgIGlzX2FycmF5PFR5PiwKLSAgICAgICAgICAgIG1wbDo6aWRlbnRpdHk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfYm91bmRzPFR5Pjo6dHlwZSo+LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtcGw6OmV2YWxfaWY8IAotICAgICAgICAgICAgICAgIGlzX2Z1bmN0aW9uPFR5PiwKLSAgICAgICAgICAgICAgICBhZGRfcG9pbnRlcjxUeT4sCi0gICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxUeT4KLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERUNBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY4ODQ3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTYgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMTEtMTAtMDkgMTU6Mjg6MzMgLTA3MDAgKFN1biwgMDkgT2N0IDIwMTEpICQKLS8vICRSZXZpc2lvbjogNzQ4NjUgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vCi0vLyBVbmZvcnR1bmF0ZWx5IHNvbWUgbGlicmFyaWVzIGhhdmUgc3RhcnRlZCB1c2luZyB0aGlzIGhlYWRlciB3aXRob3V0Ci0vLyBjbGVhbmluZyB1cCBhZnRlcndhcmRzOiBzbyB3ZSdkIGJldHRlciB1bmRlZiB0aGUgbWFjcm9zIGp1c3QgaW4gY2FzZSAKLS8vIHRoZXkndmUgYmVlbiBkZWZpbmVkIGFscmVhZHkuLi4uCi0vLwotI2lmZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0wKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIChfX1NVTlBST19DQyA8IDB4NTcwKQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsQz4gdHlwZTsgXAotICAgIGVudW0geyB2YWx1ZSA9IHR5cGU6OnZhbHVlIH07IFwKLSAgICAvKiovCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX01TVkMgPCAxMzAwCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLEM+IGJhc2VfOyBcCi0gICAgdXNpbmcgYmFzZV86OnZhbHVlOyBcCi0gICAgLyoqLwotCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgLyoqLwotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSA6IHB1YmxpYyA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLEM+Ci0jZW5kaWYgCi0KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKHRyYWl0LFQsQykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdHJhaXQgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHRyYWl0LChUKSkgXAotfTsgXAotXAotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSx0cmFpdCkgXAotLyoqLwotCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMih0cmFpdCxUMSxUMixDKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHRyYWl0IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMix0cmFpdCwoVDEsVDIpKSBcCi19OyBcCi1cCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLHRyYWl0KSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMyh0cmFpdCxUMSxUMixUMyxDKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCB0cmFpdCBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsdHJhaXQsKFQxLFQyLFQzKSkgXAotfTsgXAotXAotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMyx0cmFpdCkgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwLEMpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PCBzcCA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygxLHRyYWl0LChzcCkpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMih0cmFpdCxzcDEsc3AyLEMpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PCBzcDEsc3AyID4gXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsdHJhaXQsKHNwMSxzcDIpKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMSh0cmFpdCxzcCxDKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdCMjX2ltcGw8IHNwID4gXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChDKSk7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKHRyYWl0LHNwMSxzcDIsQykgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQjI19pbXBsPCBzcDEsc3AyID4gXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChDKSk7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEocGFyYW0sdHJhaXQsc3AsQykgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0PCBzcCA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMihwYXJhbTEscGFyYW0yLHRyYWl0LHNwLEMpIFwKLXRlbXBsYXRlPCBwYXJhbTEsIHBhcmFtMiA+IHN0cnVjdCB0cmFpdDwgc3AgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEocGFyYW0sdHJhaXQsc3AxLHNwMixDKSBcCi10ZW1wbGF0ZTwgcGFyYW0gPiBzdHJ1Y3QgdHJhaXQ8IHNwMSxzcDIgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMix0cmFpdCwoc3AxLHNwMikpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIocGFyYW0xLHBhcmFtMix0cmFpdCxzcDEsc3AyLEMpIFwKLXRlbXBsYXRlPCBwYXJhbTEsIHBhcmFtMiA+IHN0cnVjdCB0cmFpdDwgc3AxLHNwMiA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHBhcmFtLHRyYWl0LHNwMSxzcDIsQykgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0IyNfaW1wbDwgc3AxLHNwMiA+IFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoQykpOyBcCi19OyBcCi0vKiovCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKHRyYWl0LHNwLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3AsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMSh0cmFpdCxzcCBjb25zdCx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwIHZvbGF0aWxlLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3AgY29uc3Qgdm9sYXRpbGUsdmFsdWUpIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMSh0cmFpdCxzcCx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwLHZhbHVlKSBcCi0gICAgLyoqLwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGJkMjIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMTEtMTAtMDkgMTU6Mjg6MzMgLTA3MDAgKFN1biwgMDkgT2N0IDIwMTEpICQKLS8vICRSZXZpc2lvbjogNzQ4NjUgJAotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTAotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMwotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2NvbW1vbl90eXBlX2ltcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGRlZGY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2NvbW1vbl90eXBlX2ltcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwCi0gKgotICogQ29weXJpZ2h0IDIwMTAsIEplZmZyZXkgSGVsbHJ1bmcuCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuICAoU2VlIGFjY29tcGFueWluZwotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogc3RydWN0IG5kbmJvb3N0Ojpjb21tb25fdHlwZTxULFU+Ci0gKgotICogY29tbW9uX3R5cGU8VCxVPjo6dHlwZSBpcyB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbgotICogICAgIGIoKSA/IHgoKSA6IHkoKQotICogd2hlcmUgYigpIHJldHVybnMgYSBib29sLCB4KCkgaGFzIHJldHVybiB0eXBlIFQsIGFuZCB5KCkgaGFzIHJldHVybiB0eXBlIFUuCi0gKiBTZWUKLSAqICAgICBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDA4L24yNjYxLmh0bSNjb21tb25fdHlwZQotICoKLSAqIE5vdGUgdGhhdCB0aGlzIGV2YWx1YXRlcyB0byB2b2lkIGlmIG9uZSBvciBib3RoIG9mIFQgYW5kIFUgaXMgdm9pZC4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfREVUQUlMX0NPTU1PTl9UWVBFX0lNUF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfREVUQUlMX0NPTU1PTl9UWVBFX0lNUF9IUFAKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb250YWlucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2Vfc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsX3R5cGVfdHJhaXRzX2NvbW1vbl90eXBlCi17Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3QgcHJvcGFnYXRlX2N2PCBGcm9tLCBUbyA+Ci0gKgotICogVGhpcyBtZXRhZnVuY3Rpb24gcHJvcGFnYXRlcyBjdi1xdWFsaWZpZXJzIG9uIHR5cGUgRnJvbSB0byB0eXBlIFRvLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3YKLXsgdHlwZWRlZiBUbyB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3Y8IGNvbnN0IEZyb20sIFRvID4KLXsgdHlwZWRlZiBUbyBjb25zdCB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3Y8IHZvbGF0aWxlIEZyb20sIFRvID4KLXsgdHlwZWRlZiBUbyB2b2xhdGlsZSB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3Y8IGNvbnN0IHZvbGF0aWxlIEZyb20sIFRvID4KLXsgdHlwZWRlZiBUbyBjb25zdCB2b2xhdGlsZSB0eXBlOyB9OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IGlzX2ludGVncmFsX29yX2VudW08VD4KLSAqCi0gKiBUaGlzIG1ldGFmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIFQgaXMgYW4gaW50ZWdyYWwgdHlwZSB3aGljaCBjYW4gYmUgbWFkZQotICogc2lnbmVkIG9yIHVuc2lnbmVkLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotc3RydWN0IGlzX2ludGVncmFsX29yX2VudW0KLSAgICA6IHB1YmxpYyBtcGw6Om9yXzwgaXNfaW50ZWdyYWw8VD4sIGlzX2VudW08VD4gPgoteyB9OwotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2ludGVncmFsX29yX2VudW08IGJvb2wgPgotICAgIDogcHVibGljIGZhbHNlX3R5cGUKLXsgfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHN0cnVjdCBtYWtlX3Vuc2lnbmVkX3NvZnQ8VD4KLSAqIHN0cnVjdCBtYWtlX3NpZ25lZF9zb2Z0PFQ+Ci0gKgotICogVGhlc2UgbWV0YWZ1bmN0aW9uIGFyZSBpZGVudGljYWwgdG8gbWFrZV91bnNpZ25lZCBhbmQgbWFrZV9zaWduZWQsCi0gKiByZXNwZWN0aXZlbHksIGV4Y2VwdCBmb3Igc3BlY2lhbC1jYXNpbmcgYm9vbC4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLXN0cnVjdCBtYWtlX3Vuc2lnbmVkX3NvZnQKLSAgICA6IHB1YmxpYyBtYWtlX3Vuc2lnbmVkPFQ+Ci17IH07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFrZV91bnNpZ25lZF9zb2Z0PCBib29sID4KLXsgdHlwZWRlZiBib29sIHR5cGU7IH07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLXN0cnVjdCBtYWtlX3NpZ25lZF9zb2Z0Ci0gICAgOiBwdWJsaWMgbWFrZV9zaWduZWQ8VD4KLXsgfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtYWtlX3NpZ25lZF9zb2Z0PCBib29sID4KLXsgdHlwZWRlZiBib29sIHR5cGU7IH07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3Qgc2l6ZW9mX3Q8Tj4KLSAqIHR5cGVkZWYgLi4uIHllc190eXBlCi0gKiB0eXBlZGVmIC4uLiBub190eXBlCi0gKgotICogVGhlc2UgdHlwZXMgYXJlIGludGVncmFsIHBsYXllcnMgaW4gdGhlIHVzZSBvZiB0aGUgInNpemVvZiB0cmljayIsIGkuZS4sIHdlCi0gKiBjYW4gZGlzdGluZ3Vpc2ggb3ZlcmxvYWQgc2VsZWN0aW9uIGJ5IGluc3BlY3RpbmcgdGhlIHNpemUgb2YgdGhlIHJldHVybiB0eXBlCi0gKiBvZiB0aGUgb3ZlcmxvYWQuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzaXplb2ZfdCB7IGNoYXIgX2R1bW15W05dOyB9OwotdHlwZWRlZiBzaXplb2ZfdDwxPiB5ZXNfdHlwZTsKLXR5cGVkZWYgc2l6ZW9mX3Q8Mj4gbm9fdHlwZTsKLU5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oIHNpemVvZiggeWVzX3R5cGUgKSwgPT0sIDEgKTsKLU5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oIHNpemVvZiggbm9fdHlwZSApLCA9PSwgMiApOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogcnZhbHVlX3Rlc3QoVCYpIC0+IG5vX3R5cGUKLSAqIHJ2YWx1ZV90ZXN0KC4uLikgLT4geWVzX3R5cGUKLSAqCi0gKiBUaGVzZSBvdmVybG9hZHMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBydmFsdWUtbmVzcyBvZiBhbiBleHByZXNzaW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBub190eXBlIHJ2YWx1ZV90ZXN0KFQmKTsKLXllc190eXBlIHJ2YWx1ZV90ZXN0KC4uLik7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3QgY29udmVyc2lvbl90ZXN0X292ZXJsb2FkczwgU2VxdWVuY2UgPgotICoKLSAqIFRoaXMgc3RydWN0IGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgb2YgdGhlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gYXBwbHksIGVhY2gKLSAqIG9uZSB0YWtpbmcgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIGEgdHlwZSB3aXRoaW4gdGhlIEJvb3N0Lk1QTCBzZXF1ZW5jZQotICogU2VxdWVuY2UuICBFYWNoIHN1Y2ggYXBwbHkgb3ZlcmxvYWQgaGFzIGEgcmV0dXJuIHR5cGUgd2l0aCBzaXplb2YgZXF1YWwgdG8KLSAqIG9uZSBwbHVzIHRoZSBpbmRleCBvZiB0aGUgcGFyYW1ldGVyIHR5cGUgd2l0aGluIFNlcXVlbmNlLiAgVGh1cywgd2UgY2FuCi0gKiBkZWR1Y2UgdGhlIHR5cGUgVCBvZiBhbiBleHByZXNzaW9uIGFzIGxvbmcgYXMgd2UgY2FuIGdlbmVyYXRlIGEgZmluaXRlIHNldCBvZgotICogY2FuZGlkYXRlIHR5cGVzIGNvbnRhaW5pbmcgVCB2aWEgdGhlc2UgYXBwbHkgb3ZlcmxvYWRzIGFuZCB0aGUgInNpemVvZgotICogdHJpY2siLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIEZpcnN0LCBjbGFzcyBMYXN0LCBzdGQ6OnNpemVfdCBJbmRleCA+Ci1zdHJ1Y3QgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlCi0gICAgOiBwdWJsaWMgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDwgRmlyc3QgPjo6dHlwZSwgTGFzdCwgSW5kZXggKyAxCi0gICAgICA+Ci17Ci0gICAgdXNpbmcgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPAotICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8IEZpcnN0ID46OnR5cGUsIExhc3QsIEluZGV4ICsgMQotICAgID46OmFwcGx5OwotICAgIHN0YXRpYyBzaXplb2ZfdDwgSW5kZXggKyAxID4KLSAgICBhcHBseSh0eXBlbmFtZSBtcGw6OmRlcmVmPCBGaXJzdCA+Ojp0eXBlKTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBMYXN0LCBzdGQ6OnNpemVfdCBJbmRleCA+Ci1zdHJ1Y3QgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPCBMYXN0LCBMYXN0LCBJbmRleCA+Ci17IHN0YXRpYyBzaXplb2ZfdDwgSW5kZXggKyAxID4gYXBwbHkoLi4uKTsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFNlcXVlbmNlID4KLXN0cnVjdCBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzCi0gICAgOiBwdWJsaWMgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6YmVnaW48IFNlcXVlbmNlID46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbXBsOjplbmQ8IFNlcXVlbmNlID46OnR5cGUsCi0gICAgICAgICAgMAotICAgICAgPgoteyB9OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IHNlbGVjdDwgU2VxdWVuY2UsIEluZGV4ID4KLSAqCi0gKiBzZWxlY3QgaXMgc3lub255bW91cyB3aXRoIG1wbDo6YXRfYyB1bmxlc3MgSW5kZXggZXF1YWxzIHRoZSBzaXplIG9mIHRoZQotICogQm9vc3QuTVBMIFNlcXVlbmNlLCBpbiB3aGljaCBjYXNlIHRoaXMgZXZhbHVhdGVzIHRvIHZvaWQuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwKLSAgICBjbGFzcyBTZXF1ZW5jZSwgaW50IEluZGV4LAotICAgIGludCBOID0gbXBsOjpzaXplPCBTZXF1ZW5jZSA+Ojp2YWx1ZQotPgotc3RydWN0IHNlbGVjdAotICAgIDogcHVibGljIG1wbDo6YXRfYzwgU2VxdWVuY2UsIEluZGV4ID4KLXsgfTsKLXRlbXBsYXRlPCBjbGFzcyBTZXF1ZW5jZSwgaW50IE4gPgotc3RydWN0IHNlbGVjdDwgU2VxdWVuY2UsIE4sIE4gPgoteyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIGNsYXNzIGRlZHVjZV9jb21tb25fdHlwZTwgVCwgVSwgTm9taW5hbENhbmRpZGF0ZXMgPgotICogc3RydWN0IG5vbWluYWxfY2FuZGlkYXRlczxULFU+Ci0gKiBzdHJ1Y3QgY29tbW9uX3R5cGVfZGlzcGF0Y2hfb25fcnZhbHVlbmVzczxULFU+Ci0gKiBzdHJ1Y3QgY29tbW9uX3R5cGVfaW1wbDxULFU+Ci0gKgotICogVGhlc2UgY2xhc3NlcyBhbmQgc3RydWN0cyBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaGluZCBjb21tb25fdHlwZSwgd2hpY2ggZ29lcwotICogcm91Z2hseSBhcyBmb2xsb3dzLiAgTGV0IEMgYmUgdGhlIHR5cGUgb2YgdGhlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24KLSAqICAgICBkZWNsdmFsPCBib29sID4oKSA/IGRlY2x2YWw8VD4oKSA6IGRlY2x2YWw8VT4oKQotICogaWYgQyBpcyBhbiBydmFsdWUsIHRoZW46Ci0gKiAgICAgbGV0IFQnIGFuZCBVJyBiZSBUIGFuZCBVIHN0cmlwcGVkIG9mIHJlZmVyZW5jZS0gYW5kIGN2LXF1YWxpZmllcnMKLSAqICAgICBpZiBUJyBhbmQgVScgYXJlIHBvaW50ZXIgdHlwZXMsIHNheSwgVCcgPSBWKiBhbmQgVScgPSBXKiwgdGhlbjoKLSAqICAgICAgICAgZGVmaW5lIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgdG8gYmUKLSAqICAgICAgICAgICAgIHsgViosIFcqLCBWJyosIFcnKiB9Ci0gKiAgICAgICAgICAgd2hlcmUgVicgaXMgViB3aXRoIHdoYXRldmVyIGN2LXF1YWxpZmllcnMgYXJlIG9uIFcsIGFuZCBXJyBpcyBXCi0gKiAgICAgICAgICAgd2l0aCB3aGF0ZXZlciBjdi1xdWFsaWZpZXJzIGFyZSBvbiBWCi0gKiAgICAgZWxzZSBpZiBUJyBhbmQgVScgYXJlIGJvdGggaW50ZWdyYWwgb3IgZW51bSB0eXBlcywgdGhlbjoKLSAqICAgICAgICAgZGVmaW5lIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgdG8gYmUKLSAqICAgICAgICAgICAgIHsKLSAqICAgICAgICAgICAgICAgICB1bnNpZ25lZF9zb2Z0KFQnKSwKLSAqICAgICAgICAgICAgICAgICB1bnNpZ25lZF9zb2Z0KFUnKSwKLSAqICAgICAgICAgICAgICAgICBzaWduZWRfc29mdChUJyksCi0gKiAgICAgICAgICAgICAgICAgc2lnbmVkX3NvZnQoVScpLAotICogICAgICAgICAgICAgICAgIFQnLAotICogICAgICAgICAgICAgICAgIFUnLAotICogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKLSAqICAgICAgICAgICAgICAgICBpbnQKLSAqICAgICAgICAgICAgIH0KLSAqICAgICAgICAgICB3aGVyZSB1bnNpZ25lZF9zb2Z0KFgpIGlzIG1ha2VfdW5zaWduZWRfc29mdDxYPjo6dHlwZSBhbmQKLSAqICAgICAgICAgICBzaWduZWRfc29mdChYKSBpcyBtYWtlX3NpZ25lZF9zb2Z0PFg+Ojp0eXBlICh0aGVzZSBhcmUgYWxsCi0gKiAgICAgICAgICAgZ2VuZXJhbGx5IG5lY2Vzc2FyeSB0byBjb3ZlciB0aGUgdmFyaW91cyBpbnRlZ3JhbCBwcm9tb3Rpb24gY2FzZXMpCi0gKiAgICAgZWxzZQotICogICAgICAgICBkZWZpbmUgdGhlIHNldCBvZiBOb21pbmFsQ2FuZGlkYXRlcyB0byBiZQotICogICAgICAgICAgICAgeyBUJywgVScgfQotICogZWxzZQotICogICAgIGxldCBWIGFuZCBXIGJlIFQgYW5kIFUgc3RyaXBwZWQgb2YgcmVmZXJlbmNlLXF1YWxpZmllcnMKLSAqICAgICBkZWZpbmUgdGhlIHNldCBvZiBOb21pbmFsQ2FuZGlkYXRlcyB0byBiZQotICogICAgICAgICB7IFYmLCBXJiwgVicmLCBXJyYgfQotICogICAgIHdoZXJlIFYnIGlzIFYgd2l0aCB3aGF0ZXZlciBjdi1xdWFsaWZpZXJzIGFyZSBvbiBXLCBhbmQgVycgaXMgVyB3aXRoCi0gKiAgICAgICB3aGF0ZXZlciBjdi1xdWFsaWZpZXJzIGFyZSBvbiBWCi0gKiBkZWZpbmUgdGhlIHNldCBvZiBDYW5kaWRhdGVzIHRvIGJlIGVxdWFsIHRvIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgd2l0aAotICogZHVwbGljYXRlcyByZW1vdmVkLCBhbmQgdXNlIHRoaXMgc2V0IG9mIENhbmRpZGF0ZXMgdG8gZGV0ZXJtaW5lIEMgdXNpbmcgdGhlCi0gKiBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzIHN0cnVjdAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIE5vbWluYWxDYW5kaWRhdGVzID4KLWNsYXNzIGRlZHVjZV9jb21tb25fdHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpjb3B5PAotICAgICAgICBOb21pbmFsQ2FuZGlkYXRlcywKLSAgICAgICAgbXBsOjppbnNlcnRlcjwKLSAgICAgICAgICAgIG1wbDo6dmVjdG9yMDw+LAotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgbXBsOjpjb250YWluczwgbXBsOjpfMSwgbXBsOjpfMiA+LAotICAgICAgICAgICAgICAgIG1wbDo6XzEsCi0gICAgICAgICAgICAgICAgbXBsOjpwdXNoX2JhY2s8IG1wbDo6XzEsIG1wbDo6XzIgPgotICAgICAgICAgICAgPgotICAgICAgICA+Ci0gICAgPjo6dHlwZSBjYW5kaWRhdGVfdHlwZXM7Ci0gICAgc3RhdGljIGNvbnN0IGludCBiZXN0X2NhbmRpZGF0ZV9pbmRleCA9Ci0gICAgICAgIHNpemVvZiggY29udmVyc2lvbl90ZXN0X292ZXJsb2FkczwgY2FuZGlkYXRlX3R5cGVzID46OmFwcGx5KAotICAgICAgICAgICAgZGVjbHZhbDwgYm9vbCA+KCkgPyBkZWNsdmFsPFQ+KCkgOiBkZWNsdmFsPFU+KCkKLSAgICAgICAgKSApIC0gMTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdDwgY2FuZGlkYXRlX3R5cGVzLCBiZXN0X2NhbmRpZGF0ZV9pbmRleCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICBjbGFzcyBULCBjbGFzcyBVLAotICAgIGNsYXNzIFYgPSB0eXBlbmFtZSByZW1vdmVfY3Y8IHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgPjo6dHlwZSwKLSAgICBjbGFzcyBXID0gdHlwZW5hbWUgcmVtb3ZlX2N2PCB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlID46OnR5cGUsCi0gICAgYm9vbCA9IGlzX2ludGVncmFsX29yX2VudW08Vj46OnZhbHVlICYmIGlzX2ludGVncmFsX29yX2VudW08Vz46OnZhbHVlCi0+Ci1zdHJ1Y3Qgbm9taW5hbF9jYW5kaWRhdGVzCi17IHR5cGVkZWYgbXBsOjp2ZWN0b3IyPFYsVz4gdHlwZTsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIFcgPgotc3RydWN0IG5vbWluYWxfY2FuZGlkYXRlczwgVCwgVSwgViwgVywgdHJ1ZSA+Ci17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjp2ZWN0b3I4PAotICAgICAgICB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkX3NvZnQ8Vj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIG1ha2VfdW5zaWduZWRfc29mdDxXPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgbWFrZV9zaWduZWRfc29mdDxWPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgbWFrZV9zaWduZWRfc29mdDxXPjo6dHlwZSwKLSAgICAgICAgViwgVywgdW5zaWduZWQgaW50LCBpbnQKLSAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgVyA+Ci1zdHJ1Y3Qgbm9taW5hbF9jYW5kaWRhdGVzPCBULCBVLCBWKiwgVyosIGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIG1wbDo6dmVjdG9yNDwKLSAgICAgICAgViosIFcqLAotICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8VyxWPjo6dHlwZSAqLAotICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8VixXPjo6dHlwZSAqCi0gICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgYm9vbCBiPgotc3RydWN0IGNvbW1vbl90eXBlX2Rpc3BhdGNoX29uX3J2YWx1ZW5lc3MKLSAgICA6IHB1YmxpYyBkZWR1Y2VfY29tbW9uX3R5cGU8IFQsIFUsIHR5cGVuYW1lIG5vbWluYWxfY2FuZGlkYXRlczxULFU+Ojp0eXBlID4KLXsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUgPgotc3RydWN0IGNvbW1vbl90eXBlX2Rpc3BhdGNoX29uX3J2YWx1ZW5lc3M8IFQsIFUsIGZhbHNlID4KLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIHVucmVmZWRfVF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSB1bnJlZmVkX1VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRlZHVjZV9jb21tb25fdHlwZTwKLSAgICAgICAgVCwgVSwKLSAgICAgICAgbXBsOjp2ZWN0b3I0PAotICAgICAgICAgICAgdW5yZWZlZF9UX3R5cGUgJiwKLSAgICAgICAgICAgIHVucmVmZWRfVV90eXBlICYsCi0gICAgICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8IHVucmVmZWRfVV90eXBlLCB1bnJlZmVkX1RfdHlwZSA+Ojp0eXBlICYsCi0gICAgICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8IHVucmVmZWRfVF90eXBlLCB1bnJlZmVkX1VfdHlwZSA+Ojp0eXBlICYKLSAgICAgICAgPgotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBVID4KLXN0cnVjdCBjb21tb25fdHlwZV9pbXBsCi0gICAgOiBwdWJsaWMgY29tbW9uX3R5cGVfZGlzcGF0Y2hfb25fcnZhbHVlbmVzczxULFUsIHNpemVvZiggOjpuZG5ib29zdDo6ZGV0YWlsX3R5cGVfdHJhaXRzX2NvbW1vbl90eXBlOjpydmFsdWVfdGVzdCgKLSAgICAgICAgZGVjbHZhbDwgYm9vbCA+KCkgPyBkZWNsdmFsPFQ+KCkgOiBkZWNsdmFsPFU+KCkgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSA+Ci17IH07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGNvbW1vbl90eXBlX2ltcGw8IFQsIHZvaWQgPiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgY29tbW9uX3R5cGVfaW1wbDwgdm9pZCwgVCA+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBjb21tb25fdHlwZV9pbXBsPCB2b2lkLCB2b2lkID4geyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsX3R5cGVfdHJhaXRzX2NvbW1vbl90eXBlCi0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0RFVEFJTF9DT01NT05fVFlQRV9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTc0ZTViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0NWX1RSQUlUU19JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfQ1ZfVFJBSVRTX0lNUExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIGltcGxlbWVudGF0aW9uIGhlbHBlcjoKLQotCi0jaWYgIShORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLD09IDMpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIDw9IDIpKQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotI2Vsc2UKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci1uYW1lc3BhY2UgZ2NjODUwMyB7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHNfaW1wIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdl90cmFpdHNfaW1wPFQqPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IGZhbHNlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSBmYWxzZSk7Ci0gICAgdHlwZWRlZiBUIHVucXVhbGlmaWVkX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdl90cmFpdHNfaW1wPGNvbnN0IFQqPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IHRydWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc192b2xhdGlsZSA9IGZhbHNlKTsKLSAgICB0eXBlZGVmIFQgdW5xdWFsaWZpZWRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGN2X3RyYWl0c19pbXA8dm9sYXRpbGUgVCo+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0ID0gZmFsc2UpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc192b2xhdGlsZSA9IHRydWUpOwotICAgIHR5cGVkZWYgVCB1bnF1YWxpZmllZF90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY3ZfdHJhaXRzX2ltcDxjb25zdCB2b2xhdGlsZSBUKj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfY29uc3QgPSB0cnVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSB0cnVlKTsKLSAgICB0eXBlZGVmIFQgdW5xdWFsaWZpZWRfdHlwZTsKLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLD09IDMpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIDw9IDIpCi0vLyBXZSBoYXZlIHRvIGV4Y2x1ZGUgZnVuY3Rpb24gcG9pbnRlcnMgCi0vLyAoc2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/ODUwMykKLXllc190eXBlIG1pbmlfZnVuY3B0cl90ZXN0ZXIoLi4uKTsKLW5vX3R5cGUgIG1pbmlfZnVuY3B0cl90ZXN0ZXIoY29uc3Qgdm9sYXRpbGUgdm9pZCopOwotCi19IC8vIG5hbWVzcGFjZSBnY2M4NTAzCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBhYm92ZSBmb3Igbm9uIGZ1bmN0aW9uIHBvaW50ZXJzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgU2VsZWN0IAotICA9ICh1bnNpZ25lZClzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmdjYzg1MDM6Om1pbmlfZnVuY3B0cl90ZXN0ZXIoKFQpMCkpID4KLXN0cnVjdCBjdl90cmFpdHNfaW1wIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpnY2M4NTAzOjpjdl90cmFpdHNfaW1wPFQ+IHsgfTsKLQotLy8gRnVuY3Rpb25zIGFyZSBuZXZlciBjdi1xdWFsaWZpZWQKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzX2ltcDxUKiwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IGZhbHNlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSBmYWxzZSk7Ci0gICAgdHlwZWRlZiBUIHVucXVhbGlmaWVkX3R5cGU7Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdCAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9DVl9UUkFJVFNfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGJjMjNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9GQUxTRV9SRVNVTFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9GQUxTRV9SRVNVTFRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotLy8gVXRpbGl0eSBjbGFzcyB3aGljaCBhbHdheXMgInJldHVybnMiIGZhbHNlCi1zdHJ1Y3QgZmFsc2VfcmVzdWx0Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6dHlwZV90cmFpdHMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9GQUxTRV9SRVNVTFRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTBlZjEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLCBSb2JlcnQgU3Rld2FydCwgU3RldmVuIFdhdGFuYWJlICYgUm9tYW4gUGVyZXBlbGl0c2EuCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0vLyBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciB3aXRob3V0IGdldHRpbmcgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLyBnY2M6Ci0vLyAgICB3YXJuaW5nOiB2YWx1ZSBjb21wdXRlZCBpcyBub3QgdXNlZAotLy8gICAgd2FybmluZzogY29tcGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlciBleHByZXNzaW9ucwotLy8gbXN2YzoKLS8vICAgIHdhcm5pbmcgQzQwMTg6ICc8JyA6IHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAotLy8gICAgd2FybmluZyBDNDI0NDogJys9JyA6IGNvbnZlcnNpb24gZnJvbSAnZG91YmxlJyB0byAnY2hhcicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotLy8gICAgd2FybmluZyBDNDU0NzogJyonIDogb3BlcmF0b3IgYmVmb3JlIGNvbW1hIGhhcyBubyBlZmZlY3Q7IGV4cGVjdGVkIG9wZXJhdG9yIHdpdGggc2lkZS1lZmZlY3QKLS8vICAgIHdhcm5pbmcgQzQ4MDA6ICdpbnQnIDogZm9yY2luZyB2YWx1ZSB0byBib29sICd0cnVlJyBvciAnZmFsc2UnIChwZXJmb3JtYW5jZSB3YXJuaW5nKQotLy8gICAgd2FybmluZyBDNDgwNDogJzwnIDogdW5zYWZlIHVzZSBvZiB0eXBlICdib29sJyBpbiBvcGVyYXRpb24KLS8vICAgIHdhcm5pbmcgQzQ4MDU6ICc9PScgOiB1bnNhZmUgbWl4IG9mIHR5cGUgJ2Jvb2wnIGFuZCB0eXBlICdjaGFyJyBpbiBvcGVyYXRpb24KLS8vIGNhbm5vdCBmaW5kIGFub3RoZXIgaW1wbGVtZW50YXRpb24gLT4gZGVjbGFyZWQgYXMgc3lzdGVtIGhlYWRlciB0byBzdXBwcmVzcyB0aGVzZSB3YXJuaW5ncy4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fPT0zICYmIF9fR05VQ19NSU5PUl9fPj0xKSB8fCAoX19HTlVDX18+MykpCi0jICAgcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwdXNoICkKLSMgICBwcmFnbWEgd2FybmluZyAoIGRpc2FibGUgOiA0MDE4IDQyNDQgNDU0NyA0ODAwIDQ4MDQgNDgwNSA0OTEzICkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFRoaXMgbmFtZXNwYWNlIGVuc3VyZXMgdGhhdCBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAgZG9lcyBub3QgbWVzcyB0aGluZ3MgdXAuCi1uYW1lc3BhY2UgTkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKSB7Ci0KLS8vIDEuIGEgZnVuY3Rpb24gdG8gaGF2ZSBhbiBpbnN0YW5jZSBvZiB0eXBlIFQgd2l0aG91dCByZXF1aXJpbmcgVCB0byBiZSBkZWZhdWx0Ci0vLyBjb25zdHJ1Y3RpYmxlCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCAmbWFrZSgpOwotCi0KLS8vIDIuIHdlIHByb3ZpZGUgb3VyIG9wZXJhdG9yIGRlZmluaXRpb24gZm9yIHR5cGVzIHRoYXQgZG8gbm90IGhhdmUgb25lIGFscmVhZHkKLQotLy8gYSB0eXBlIHJldHVybmVkIGZyb20gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1Agd2hlbiBubyBzdWNoIG9wZXJhdG9yIGlzCi0vLyBmb3VuZCBpbiB0aGUgdHlwZSdzIG93biBuYW1lc3BhY2UgKG91ciBvd24gb3BlcmF0b3IgaXMgdXNlZCkgc28gdGhhdCB3ZSBoYXZlCi0vLyBhIG1lYW5zIHRvIGtub3cgdGhhdCBvdXIgb3BlcmF0b3Igd2FzIHVzZWQKLXN0cnVjdCBub19vcGVyYXRvciB7IH07Ci0KLS8vIHRoaXMgY2xhc3MgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb25zIGFuZCBtYWtlcyB0aGUgZm9sbG93aW5nIG9wZXJhdG9yCi0vLyBkZWZpbml0aW9uIGxlc3MtcHJlZmVycmVkIHRoYW4gYW55IG90aGVyIHN1Y2ggb3BlcmF0b3JzIHRoYXQgbWlnaHQgYmUgZm91bmQKLS8vIHZpYSBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAKLXN0cnVjdCBhbnkgeyB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYW55KFQgY29uc3QmKTsgfTsKLQotLy8gd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBpcyBub3QgYXZhaWxhYmxlLCB0aGlzIG9uZSBpcyB1c2VkCi1ub19vcGVyYXRvciBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCAoY29uc3QgYW55JiwgY29uc3QgYW55Jik7Ci0KLQotLy8gMy4gY2hlY2tzIGlmIHRoZSBvcGVyYXRvciByZXR1cm5zIHZvaWQgb3Igbm90Ci0vLyBjb25kaXRpb25zOiBMaHMhPXZvaWQgYW5kIFJocyE9dm9pZAotCi0vLyB3ZSBmaXJzdCByZWRlZmluZSAib3BlcmF0b3IsIiBzbyB0aGF0IHdlIGhhdmUgbm8gY29tcGlsYXRpb24gZXJyb3IgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBhbmQgd2UgY2FuIHVzZSB0aGUgcmV0dXJuIHR5cGUgb2YKLS8vIChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSB0byBkZWR1Y2UgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBvciBub3Q6Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCAgIC0+IChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIHJldHVybnNfdm9pZF90Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgIT12b2lkIC0+IChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIGludAotc3RydWN0IHJldHVybnNfdm9pZF90IHsgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCB2b2xhdGlsZSBUJiwgcmV0dXJuc192b2lkX3QpOwotCi0vLyB0aGlzIGludGVybWVkaWF0ZSB0cmFpdCBoYXMgbWVtYmVyIHZhbHVlIG9mIHR5cGUgYm9vbDoKLS8vIC0gdmFsdWU9PXRydWUgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkCi0vLyAtIHZhbHVlPT1mYWxzZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc192b2lkIHsKLSAgIC8vIG92ZXJsb2FkcyBvZiBmdW5jdGlvbiByZXR1cm5zX3ZvaWQgbWFrZSB0aGUgZGlmZmVyZW5jZQotICAgLy8geWVzX3R5cGUgYW5kIG5vX3R5cGUgaGF2ZSBkaWZmZXJlbnQgc2l6ZSBieSBjb25zdHJ1Y3Rpb24KLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgcmV0dXJuc192b2lkKHJldHVybnNfdm9pZF90KTsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSByZXR1cm5zX3ZvaWQoaW50KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKT09c2l6ZW9mKHJldHVybnNfdm9pZCgobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkscmV0dXJuc192b2lkX3QoKSkpKSkpOwotfTsKLQotCi0vLyA0LiBjaGVja3MgaWYgdGhlIHJldHVybiB0eXBlIGlzIFJldCBvciBSZXQ9PWRvbnRfY2FyZQotLy8gY29uZGl0aW9uczogTGhzIT12b2lkIGFuZCBSaHMhPXZvaWQKLQotc3RydWN0IGRvbnRfY2FyZSB7IH07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBSZXR1cm5zX3ZvaWQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBkb250X2NhcmUsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIGRvbnRfY2FyZSwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIHZvaWQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIHZvaWQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBvdGhlcndpc2UgY2hlY2tzIGlmIGl0IGlzIGNvbnZlcnRpYmxlIHRvIFJldCB1c2luZyB0aGUgc2l6ZW9mIHRyaWNrCi0vLyBiYXNlZCBvbiBvdmVybG9hZCByZXNvbHV0aW9uCi0vLyBjb25kaXRpb246IFJldCE9dm9pZCBhbmQgUmV0IT1kb250X2NhcmUgYW5kIHRoZSBvcGVyYXRvciBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBSZXQsIGZhbHNlID4gewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoUmV0KTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCBmb3IgdHlwZXMgY29udmVydGlibGUgdG8gUmV0Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KC4uLik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGlzX2NvbnZlcnRpYmxlX3RvX1JldChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA1LiBjaGVja3MgZm9yIG9wZXJhdG9yIGV4aXN0ZW5jZQotLy8gY29uZGl0aW9uOiBMaHMhPXZvaWQgYW5kIFJocyE9dm9pZAotCi0vLyBjaGVja3MgaWYgb3VyIGRlZmluaXRpb24gb2Ygb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgdXNlZCBvciBhbiBvdGhlcgotLy8gZXhpc3Rpbmcgb25lOwotLy8gdGhpcyBpcyBkb25lIHdpdGggcmVkZWZpbml0aW9uIG9mICJvcGVyYXRvciwiIHRoYXQgcmV0dXJucyBub19vcGVyYXRvciBvciBoYXNfb3BlcmF0b3IKLXN0cnVjdCBoYXNfb3BlcmF0b3IgeyB9Owotbm9fb3BlcmF0b3Igb3BlcmF0b3IsKG5vX29wZXJhdG9yLCBoYXNfb3BlcmF0b3IpOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9leGlzdHMgewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVjayhoYXNfb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIHdoZW4gb3BlcmF0b3IgZXhpc3RzCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2sobm9fb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgdXNlZCBvdGhlcndpc2UKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihjaGVjaygoKG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpKSxtYWtlPGhhc19vcGVyYXRvcj4oKSkpKT09c2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLQotLy8gNi4gbWFpbiB0cmFpdDogdG8gYXZvaWQgYW55IGNvbXBpbGF0aW9uIGVycm9yLCB0aGlzIGNsYXNzIGJlaGF2ZXMKLS8vIGRpZmZlcmVudGx5IHdoZW4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoTGhzLCBSaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUKLS8vIHN0YW5kYXJkLgotLy8gRm9yYmlkZGVuX2lmIGlzIGEgYm9vbCB0aGF0IGlzOgotLy8gLSB0cnVlIHdoZW4gdGhlIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKExocywgUmhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlIHN0YW5kYXJkCi0vLyAgICh3b3VsZCB5aWVsZCBjb21waWxhdGlvbiBlcnJvciBpZiB1c2VkKQotLy8gLSBmYWxzZSBvdGhlcndpc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBGb3JiaWRkZW5faWYgPgotc3RydWN0IHRyYWl0X2ltcGwxOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCBSaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBMaHMsIFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLAotICAgICAgdmFsdWUgPSAoCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIG9wZXJhdG9yX2V4aXN0cyA8IExocywgUmhzID46OnZhbHVlLAotICAgICAgICAgICAgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgUmV0LCBvcGVyYXRvcl9yZXR1cm5zX3ZvaWQgPCBMaHMsIFJocyA+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICAgPjo6dmFsdWUKLSAgICAgICkKLSAgICk7Ci19OwotCi0vLyBzb21lIHNwZWNpYWxpemF0aW9ucyBuZWVkcyB0byBiZSBkZWNsYXJlZCBmb3IgdGhlIHNwZWNpYWwgdm9pZCBjYXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IHZvaWQsIFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCB2b2lkLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgdm9pZCwgdm9pZCwgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIGRlZmluZXMgc29tZSB0eXBlZGVmIGZvciBjb252ZW5pZW5jZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsIHsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxMaHM+Ojp0eXBlIExoc19ub3JlZjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxSaHM+Ojp0eXBlIFJoc19ub3JlZjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PExoc19ub3JlZj46OnR5cGUgTGhzX25vY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxSaHNfbm9yZWY+Ojp0eXBlIFJoc19ub2N2OwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPExoc19ub3JlZj46OnR5cGUgPjo6dHlwZSA+Ojp0eXBlIExoc19ub3B0cjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxSaHNfbm9yZWY+Ojp0eXBlID46OnR5cGUgPjo6dHlwZSBSaHNfbm9wdHI7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAodHJhaXRfaW1wbDEgPCBMaHNfbm9yZWYsIFJoc19ub3JlZiwgUmV0LCBORE5CT09TVF9UVF9GT1JCSURERU5fSUYgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGltcGwKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyB0aGlzIGlzIHRoZSBhY2Nlc3NpYmxlIGRlZmluaXRpb24gb2YgdGhlIHRyYWl0IHRvIGVuZCB1c2VyCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYzKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsIExocywgUmhzPUxocywgUmV0PTo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6ZG9udF9jYXJlLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjp0cmFpdF9pbXBsIDwgTGhzLCBSaHMsIFJldCA+Ojp2YWx1ZSkpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwb3AgKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMjM1NzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3Bvc3RmaXhfb3BlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLCBSb2JlcnQgU3Rld2FydCwgU3RldmVuIFdhdGFuYWJlICYgUm9tYW4gUGVyZXBlbGl0c2EuCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotLy8gYXZvaWQgd2FybmluZ3MKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fPT0zICYmIF9fR05VQ19NSU5PUl9fPj0xKSB8fCAoX19HTlVDX18+MykpCi0jICAgcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwdXNoICkKLSMgICBwcmFnbWEgd2FybmluZyAoIGRpc2FibGUgOiA0MjQ0IDQ5MTMgKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGhpcyBuYW1lc3BhY2UgZW5zdXJlcyB0aGF0IGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cCBkb2VzIG5vdCBtZXNzIHRoaW5ncyB1cC4KLW5hbWVzcGFjZSBORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpIHsKLQotLy8gMS4gYSBmdW5jdGlvbiB0byBoYXZlIGFuIGluc3RhbmNlIG9mIHR5cGUgVCB3aXRob3V0IHJlcXVpcmluZyBUIHRvIGJlIGRlZmF1bHQKLS8vIGNvbnN0cnVjdGlibGUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUICZtYWtlKCk7Ci0KLQotLy8gMi4gd2UgcHJvdmlkZSBvdXIgb3BlcmF0b3IgZGVmaW5pdGlvbiBmb3IgdHlwZXMgdGhhdCBkbyBub3QgaGF2ZSBvbmUgYWxyZWFkeQotCi0vLyBhIHR5cGUgcmV0dXJuZWQgZnJvbSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCB3aGVuIG5vIHN1Y2ggb3BlcmF0b3IgaXMKLS8vIGZvdW5kIGluIHRoZSB0eXBlJ3Mgb3duIG5hbWVzcGFjZSAob3VyIG93biBvcGVyYXRvciBpcyB1c2VkKSBzbyB0aGF0IHdlIGhhdmUKLS8vIGEgbWVhbnMgdG8ga25vdyB0aGF0IG91ciBvcGVyYXRvciB3YXMgdXNlZAotc3RydWN0IG5vX29wZXJhdG9yIHsgfTsKLQotLy8gdGhpcyBjbGFzcyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcgb3BlcmF0b3IKLS8vIGRlZmluaXRpb24gbGVzcy1wcmVmZXJyZWQgdGhhbiBhbnkgb3RoZXIgc3VjaCBvcGVyYXRvcnMgdGhhdCBtaWdodCBiZSBmb3VuZAotLy8gdmlhIGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cAotc3RydWN0IGFueSB7IHRlbXBsYXRlIDxjbGFzcyBUPiBhbnkoVCBjb25zdCYpOyB9OwotCi0vLyB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIG5vdCBhdmFpbGFibGUsIHRoaXMgb25lIGlzIHVzZWQKLW5vX29wZXJhdG9yIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIChjb25zdCBhbnkmLCBpbnQpOwotCi0KLS8vIDMuIGNoZWNrcyBpZiB0aGUgb3BlcmF0b3IgcmV0dXJucyB2b2lkIG9yIG5vdAotLy8gY29uZGl0aW9uczogTGhzIT12b2lkCi0KLS8vIHdlIGZpcnN0IHJlZGVmaW5lICJvcGVyYXRvciwiIHNvIHRoYXQgd2UgaGF2ZSBubyBjb21waWxhdGlvbiBlcnJvciBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIGFuZCB3ZSBjYW4gdXNlIHRoZSByZXR1cm4gdHlwZSBvZgotLy8gKGxocyBORE5CT09TVF9UVF9UUkFJVF9PUCwgcmV0dXJuc192b2lkX3QoKSkgdG8gZGVkdWNlIGlmCi0vLyBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgb3Igbm90OgotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgICAtPiAobGhzIE5ETkJPT1NUX1RUX1RSQUlUX09QLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIHJldHVybnNfdm9pZF90Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgIT12b2lkIC0+IChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AsIHJldHVybnNfdm9pZF90KCkpIHJldHVybnMgaW50Ci1zdHJ1Y3QgcmV0dXJuc192b2lkX3QgeyB9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGludCBvcGVyYXRvciwoY29uc3QgVCYsIHJldHVybnNfdm9pZF90KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IHZvbGF0aWxlIFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci0KLS8vIHRoaXMgaW50ZXJtZWRpYXRlIHRyYWl0IGhhcyBtZW1iZXIgdmFsdWUgb2YgdHlwZSBib29sOgotLy8gLSB2YWx1ZT09dHJ1ZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQKLS8vIC0gdmFsdWU9PWZhbHNlIC0+IG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGRvZXMgbm90IHJldHVybiB2b2lkCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc192b2lkIHsKLSAgIC8vIG92ZXJsb2FkcyBvZiBmdW5jdGlvbiByZXR1cm5zX3ZvaWQgbWFrZSB0aGUgZGlmZmVyZW5jZQotICAgLy8geWVzX3R5cGUgYW5kIG5vX3R5cGUgaGF2ZSBkaWZmZXJlbnQgc2l6ZSBieSBjb25zdHJ1Y3Rpb24KLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgcmV0dXJuc192b2lkKHJldHVybnNfdm9pZF90KTsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSByZXR1cm5zX3ZvaWQoaW50KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKT09c2l6ZW9mKHJldHVybnNfdm9pZCgobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1AscmV0dXJuc192b2lkX3QoKSkpKSkpOwotfTsKLQotCi0vLyA0LiBjaGVja3MgaWYgdGhlIHJldHVybiB0eXBlIGlzIFJldCBvciBSZXQ9PWRvbnRfY2FyZQotLy8gY29uZGl0aW9uczogTGhzIT12b2lkCi0KLXN0cnVjdCBkb250X2NhcmUgeyB9OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0LCBib29sIFJldHVybnNfdm9pZCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQ7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgZG9udF9jYXJlLCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIGRvbnRfY2FyZSwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgdm9pZCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCB2b2lkLCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBvdGhlcndpc2UgY2hlY2tzIGlmIGl0IGlzIGNvbnZlcnRpYmxlIHRvIFJldCB1c2luZyB0aGUgc2l6ZW9mIHRyaWNrCi0vLyBiYXNlZCBvbiBvdmVybG9hZCByZXNvbHV0aW9uCi0vLyBjb25kaXRpb246IFJldCE9dm9pZCBhbmQgUmV0IT1kb250X2NhcmUgYW5kIHRoZSBvcGVyYXRvciBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2NvbnZlcnRpYmxlX3RvX1JldChSZXQpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIGZvciB0eXBlcyBjb252ZXJ0aWJsZSB0byBSZXQKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoLi4uKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoaXNfY29udmVydGlibGVfdG9fUmV0KG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDUuIGNoZWNrcyBmb3Igb3BlcmF0b3IgZXhpc3RlbmNlCi0vLyBjb25kaXRpb246IExocyE9dm9pZAotCi0vLyBjaGVja3MgaWYgb3VyIGRlZmluaXRpb24gb2Ygb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgdXNlZCBvciBhbiBvdGhlcgotLy8gZXhpc3Rpbmcgb25lOwotLy8gdGhpcyBpcyBkb25lIHdpdGggcmVkZWZpbml0aW9uIG9mICJvcGVyYXRvciwiIHRoYXQgcmV0dXJucyBub19vcGVyYXRvciBvciBoYXNfb3BlcmF0b3IKLXN0cnVjdCBoYXNfb3BlcmF0b3IgeyB9Owotbm9fb3BlcmF0b3Igb3BlcmF0b3IsKG5vX29wZXJhdG9yLCBoYXNfb3BlcmF0b3IpOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfZXhpc3RzIHsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2soaGFzX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCB3aGVuIG9wZXJhdG9yIGV4aXN0cwotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrKG5vX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoY2hlY2soKChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCksbWFrZTxoYXNfb3BlcmF0b3I+KCkpKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDYuIG1haW4gdHJhaXQ6IHRvIGF2b2lkIGFueSBjb21waWxhdGlvbiBlcnJvciwgdGhpcyBjbGFzcyBiZWhhdmVzCi0vLyBkaWZmZXJlbnRseSB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKExocykgaXMgZm9yYmlkZGVuIGJ5IHRoZQotLy8gc3RhbmRhcmQuCi0vLyBGb3JiaWRkZW5faWYgaXMgYSBib29sIHRoYXQgaXM6Ci0vLyAtIHRydWUgd2hlbiB0aGUgb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoTGhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlIHN0YW5kYXJkCi0vLyAgICh3b3VsZCB5aWVsZCBjb21waWxhdGlvbiBlcnJvciBpZiB1c2VkKQotLy8gLSBmYWxzZSBvdGhlcndpc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQsIGJvb2wgRm9yYmlkZGVuX2lmID4KLXN0cnVjdCB0cmFpdF9pbXBsMTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBMaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsCi0gICAgICB2YWx1ZSA9ICgKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgb3BlcmF0b3JfZXhpc3RzIDwgTGhzID46OnZhbHVlLAotICAgICAgICAgICAgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJldCwgb3BlcmF0b3JfcmV0dXJuc192b2lkIDwgTGhzID46OnZhbHVlID46OnZhbHVlCi0gICAgICAgICA+Ojp2YWx1ZQotICAgICAgKQotICAgKTsKLX07Ci0KLS8vIHNwZWNpYWxpemF0aW9uIG5lZWRzIHRvIGJlIGRlY2xhcmVkIGZvciB0aGUgc3BlY2lhbCB2b2lkIGNhc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IHZvaWQsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBkZWZpbmVzIHNvbWUgdHlwZWRlZiBmb3IgY29udmVuaWVuY2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwgewotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPExocz46OnR5cGUgTGhzX25vcmVmOwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8TGhzX25vcmVmPjo6dHlwZSBMaHNfbm9jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxMaHNfbm9yZWY+Ojp0eXBlID46OnR5cGUgPjo6dHlwZSBMaHNfbm9wdHI7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAodHJhaXRfaW1wbDEgPCBMaHNfbm9yZWYsIFJldCwgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBpbXBsCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gdGhpcyBpcyB0aGUgYWNjZXNzaWJsZSBkZWZpbml0aW9uIG9mIHRoZSB0cmFpdCB0byBlbmQgdXNlcgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihORE5CT09TVF9UVF9UUkFJVF9OQU1FLCBMaHMsIFJldD06Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OmRvbnRfY2FyZSwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6dHJhaXRfaW1wbDwgTGhzLCBSZXQgPjo6dmFsdWUpKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nICggcG9wICkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyNWM1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbiwgUm9iZXJ0IFN0ZXdhcnQsIFN0ZXZlbiBXYXRhbmFiZSAmIFJvbWFuIFBlcmVwZWxpdHNhLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0vLyBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciB3aXRob3V0IGdldHRpbmcgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLyBnY2M6Ci0vLyAgICB3YXJuaW5nOiB2YWx1ZSBjb21wdXRlZCBpcyBub3QgdXNlZAotLy8gICAgd2FybmluZzogY29tcGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlciBleHByZXNzaW9ucwotLy8gbXN2YzoKLS8vICAgIHdhcm5pbmcgQzQxNDY6IHVuYXJ5IG1pbnVzIG9wZXJhdG9yIGFwcGxpZWQgdG8gdW5zaWduZWQgdHlwZSwgcmVzdWx0IHN0aWxsIHVuc2lnbmVkCi0vLyAgICB3YXJuaW5nIEM0ODA0OiAnLScgOiB1bnNhZmUgdXNlIG9mIHR5cGUgJ2Jvb2wnIGluIG9wZXJhdGlvbgotLy8gY2Fubm90IGZpbmQgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiAtPiBkZWNsYXJlZCBhcyBzeXN0ZW0gaGVhZGVyIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX189PTMgJiYgX19HTlVDX01JTk9SX18+PTEpIHx8IChfX0dOVUNfXz4zKSkKLSMgICBwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyAoIHB1c2ggKQotIyAgIHByYWdtYSB3YXJuaW5nICggZGlzYWJsZSA6IDQxNDYgNDgwNCA0OTEzIDQyNDQgKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGhpcyBuYW1lc3BhY2UgZW5zdXJlcyB0aGF0IGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cCBkb2VzIG5vdCBtZXNzIHRoaW5ncyB1cC4KLW5hbWVzcGFjZSBORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpIHsKLQotLy8gMS4gYSBmdW5jdGlvbiB0byBoYXZlIGFuIGluc3RhbmNlIG9mIHR5cGUgVCB3aXRob3V0IHJlcXVpcmluZyBUIHRvIGJlIGRlZmF1bHQKLS8vIGNvbnN0cnVjdGlibGUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUICZtYWtlKCk7Ci0KLQotLy8gMi4gd2UgcHJvdmlkZSBvdXIgb3BlcmF0b3IgZGVmaW5pdGlvbiBmb3IgdHlwZXMgdGhhdCBkbyBub3QgaGF2ZSBvbmUgYWxyZWFkeQotCi0vLyBhIHR5cGUgcmV0dXJuZWQgZnJvbSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCB3aGVuIG5vIHN1Y2ggb3BlcmF0b3IgaXMKLS8vIGZvdW5kIGluIHRoZSB0eXBlJ3Mgb3duIG5hbWVzcGFjZSAob3VyIG93biBvcGVyYXRvciBpcyB1c2VkKSBzbyB0aGF0IHdlIGhhdmUKLS8vIGEgbWVhbnMgdG8ga25vdyB0aGF0IG91ciBvcGVyYXRvciB3YXMgdXNlZAotc3RydWN0IG5vX29wZXJhdG9yIHsgfTsKLQotLy8gdGhpcyBjbGFzcyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcgb3BlcmF0b3IKLS8vIGRlZmluaXRpb24gbGVzcy1wcmVmZXJyZWQgdGhhbiBhbnkgb3RoZXIgc3VjaCBvcGVyYXRvcnMgdGhhdCBtaWdodCBiZSBmb3VuZAotLy8gdmlhIGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cAotc3RydWN0IGFueSB7IHRlbXBsYXRlIDxjbGFzcyBUPiBhbnkoVCBjb25zdCYpOyB9OwotCi0vLyB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIG5vdCBhdmFpbGFibGUsIHRoaXMgb25lIGlzIHVzZWQKLW5vX29wZXJhdG9yIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIChjb25zdCBhbnkmKTsKLQotCi0vLyAzLiBjaGVja3MgaWYgdGhlIG9wZXJhdG9yIHJldHVybnMgdm9pZCBvciBub3QKLS8vIGNvbmRpdGlvbnM6IFJocyE9dm9pZAotCi0vLyB3ZSBmaXJzdCByZWRlZmluZSAib3BlcmF0b3IsIiBzbyB0aGF0IHdlIGhhdmUgbm8gY29tcGlsYXRpb24gZXJyb3IgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBhbmQgd2UgY2FuIHVzZSB0aGUgcmV0dXJuIHR5cGUgb2YKLS8vIChORE5CT09TVF9UVF9UUkFJVF9PUCByaHMsIHJldHVybnNfdm9pZF90KCkpIHRvIGRlZHVjZSBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIG9yIG5vdDoKLS8vIC0gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkICAgLT4gKE5ETkJPT1NUX1RUX1RSQUlUX09QIHJocywgcmV0dXJuc192b2lkX3QoKSkgcmV0dXJucyByZXR1cm5zX3ZvaWRfdAotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zICE9dm9pZCAtPiAoTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIGludAotc3RydWN0IHJldHVybnNfdm9pZF90IHsgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCB2b2xhdGlsZSBUJiwgcmV0dXJuc192b2lkX3QpOwotCi0vLyB0aGlzIGludGVybWVkaWF0ZSB0cmFpdCBoYXMgbWVtYmVyIHZhbHVlIG9mIHR5cGUgYm9vbDoKLS8vIC0gdmFsdWU9PXRydWUgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkCi0vLyAtIHZhbHVlPT1mYWxzZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfdm9pZCB7Ci0gICAvLyBvdmVybG9hZHMgb2YgZnVuY3Rpb24gcmV0dXJuc192b2lkIG1ha2UgdGhlIGRpZmZlcmVuY2UKLSAgIC8vIHllc190eXBlIGFuZCBub190eXBlIGhhdmUgZGlmZmVyZW50IHNpemUgYnkgY29uc3RydWN0aW9uCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIHJldHVybnNfdm9pZChyZXR1cm5zX3ZvaWRfdCk7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgcmV0dXJuc192b2lkKGludCk7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk9PXNpemVvZihyZXR1cm5zX3ZvaWQoKE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpLHJldHVybnNfdm9pZF90KCkpKSkpKTsKLX07Ci0KLQotLy8gNC4gY2hlY2tzIGlmIHRoZSByZXR1cm4gdHlwZSBpcyBSZXQgb3IgUmV0PT1kb250X2NhcmUKLS8vIGNvbmRpdGlvbnM6IFJocyE9dm9pZAotCi1zdHJ1Y3QgZG9udF9jYXJlIHsgfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBSZXR1cm5zX3ZvaWQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIGRvbnRfY2FyZSwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBkb250X2NhcmUsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIHZvaWQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgdm9pZCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgUmV0LCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gb3RoZXJ3aXNlIGNoZWNrcyBpZiBpdCBpcyBjb252ZXJ0aWJsZSB0byBSZXQgdXNpbmcgdGhlIHNpemVvZiB0cmljawotLy8gYmFzZWQgb24gb3ZlcmxvYWQgcmVzb2x1dGlvbgotLy8gY29uZGl0aW9uOiBSZXQhPXZvaWQgYW5kIFJldCE9ZG9udF9jYXJlIGFuZCB0aGUgb3BlcmF0b3IgZG9lcyBub3QgcmV0dXJuIHZvaWQKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBSZXQsIGZhbHNlID4gewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoUmV0KTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCBmb3IgdHlwZXMgY29udmVydGlibGUgdG8gUmV0Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KC4uLik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGlzX2NvbnZlcnRpYmxlX3RvX1JldChORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA1LiBjaGVja3MgZm9yIG9wZXJhdG9yIGV4aXN0ZW5jZQotLy8gY29uZGl0aW9uOiBSaHMhPXZvaWQKLQotLy8gY2hlY2tzIGlmIG91ciBkZWZpbml0aW9uIG9mIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIHVzZWQgb3IgYW4gb3RoZXIKLS8vIGV4aXN0aW5nIG9uZTsKLS8vIHRoaXMgaXMgZG9uZSB3aXRoIHJlZGVmaW5pdGlvbiBvZiAib3BlcmF0b3IsIiB0aGF0IHJldHVybnMgbm9fb3BlcmF0b3Igb3IgaGFzX29wZXJhdG9yCi1zdHJ1Y3QgaGFzX29wZXJhdG9yIHsgfTsKLW5vX29wZXJhdG9yIG9wZXJhdG9yLChub19vcGVyYXRvciwgaGFzX29wZXJhdG9yKTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX2V4aXN0cyB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrKGhhc19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyBwcmVmZXJyZWQgd2hlbiBvcGVyYXRvciBleGlzdHMKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVjayhub19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGNoZWNrKCgoTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkpLG1ha2U8aGFzX29wZXJhdG9yPigpKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA2LiBtYWluIHRyYWl0OiB0byBhdm9pZCBhbnkgY29tcGlsYXRpb24gZXJyb3IsIHRoaXMgY2xhc3MgYmVoYXZlcwotLy8gZGlmZmVyZW50bHkgd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUChSaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUKLS8vIHN0YW5kYXJkLgotLy8gRm9yYmlkZGVuX2lmIGlzIGEgYm9vbCB0aGF0IGlzOgotLy8gLSB0cnVlIHdoZW4gdGhlIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKFJocykgaXMgZm9yYmlkZGVuIGJ5IHRoZSBzdGFuZGFyZAotLy8gICAod291bGQgeWllbGQgY29tcGlsYXRpb24gZXJyb3IgaWYgdXNlZCkKLS8vIC0gZmFsc2Ugb3RoZXJ3aXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0LCBib29sIEZvcmJpZGRlbl9pZiA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDE7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgUmhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLAotICAgICAgdmFsdWUgPSAoCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIG9wZXJhdG9yX2V4aXN0cyA8IFJocyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBSZXQsIG9wZXJhdG9yX3JldHVybnNfdm9pZCA8IFJocyA+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICAgPjo6dmFsdWUKLSAgICAgICkKLSAgICk7Ci19OwotCi0vLyBzcGVjaWFsaXphdGlvbiBuZWVkcyB0byBiZSBkZWNsYXJlZCBmb3IgdGhlIHNwZWNpYWwgdm9pZCBjYXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCB2b2lkLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gZGVmaW5lcyBzb21lIHR5cGVkZWYgZm9yIGNvbnZlbmllbmNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsIHsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxSaHM+Ojp0eXBlIFJoc19ub3JlZjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PFJoc19ub3JlZj46OnR5cGUgUmhzX25vY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8UmhzX25vcmVmPjo6dHlwZSA+Ojp0eXBlID46OnR5cGUgUmhzX25vcHRyOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHRyYWl0X2ltcGwxIDwgUmhzX25vcmVmLCBSZXQsIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRiA+Ojp2YWx1ZSkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgaW1wbAotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIHRoaXMgaXMgdGhlIGFjY2Vzc2libGUgZGVmaW5pdGlvbiBvZiB0aGUgdHJhaXQgdG8gZW5kIHVzZXIKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoTkROQk9PU1RfVFRfVFJBSVRfTkFNRSwgUmhzLCBSZXQ9OjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjpkb250X2NhcmUsICg6Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OnRyYWl0X2ltcGwgPCBSaHMsIFJldCA+Ojp2YWx1ZSkpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwb3AgKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjE5MTdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfQU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0FORF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Ym9vbCBiMSwgYm9vbCBiMiwgYm9vbCBiMyA9IHRydWUsIGJvb2wgYjQgPSB0cnVlLCBib29sIGI1ID0gdHJ1ZSwgYm9vbCBiNiA9IHRydWUsIGJvb2wgYjcgPSB0cnVlPgotc3RydWN0IGljZV9hbmQ7Ci0KLXRlbXBsYXRlIDxib29sIGIxLCBib29sIGIyLCBib29sIGIzLCBib29sIGI0LCBib29sIGI1LCBib29sIGI2LCBib29sIGI3Pgotc3RydWN0IGljZV9hbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGljZV9hbmQ8dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lDRV9BTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfZXEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2VxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk2MjQwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfZXEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9FUV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9FUV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+Ci1zdHJ1Y3QgaWNlX2VxCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKGIxID09IGIyKSk7Ci19OwotCi10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+Ci1zdHJ1Y3QgaWNlX25lCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKGIxICE9IGIyKSk7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+IGJvb2wgY29uc3QgaWNlX2VxPGIxLGIyPjo6dmFsdWU7Ci10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+IGJvb2wgY29uc3QgaWNlX25lPGIxLGIyPjo6dmFsdWU7Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0VRX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0ODc5ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfTk9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSUNFX05PVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Ym9vbCBiPgotc3RydWN0IGljZV9ub3QKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaWNlX25vdDx0cnVlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lDRV9OT1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyNTViNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9PUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9PUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Ym9vbCBiMSwgYm9vbCBiMiwgYm9vbCBiMyA9IGZhbHNlLCBib29sIGI0ID0gZmFsc2UsIGJvb2wgYjUgPSBmYWxzZSwgYm9vbCBiNiA9IGZhbHNlLCBib29sIGI3ID0gZmFsc2U+Ci1zdHJ1Y3QgaWNlX29yOwotCi10ZW1wbGF0ZSA8Ym9vbCBiMSwgYm9vbCBiMiwgYm9vbCBiMywgYm9vbCBiNCwgYm9vbCBiNSwgYm9vbCBiNiwgYm9vbCBiNz4KLXN0cnVjdCBpY2Vfb3IKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaWNlX29yPGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lDRV9PUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNjMyNTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gIENvcHlyaWdodCAyMDAyIEFsZWtzZXkgR3VydG92b3kgKGFndXJ0b3ZveUBtZXRhLWNvbW0uY29tKQotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9IRUxQRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfSEVMUEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXIKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gcHJlcHJvY2Vzc29yLWdlbmVyYXRlZCBwYXJ0LCBkb24ndCBlZGl0IGJ5IGhhbmQhCi0KLXRlbXBsYXRlIDxjbGFzcyBSID4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDApPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2Vsc2UKLQotI3VuZGVmIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCAoMCwgMjUsICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHAiKSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFCi0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9IRUxQRVJfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2VuZGlmCi0jdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc5ZjkwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gIEFsZWtzZXkgR3VydG92b3ksIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9URVNURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotLy8gTm90ZSBpdCBpcyBhY2NlcHRhYmxlIHRvIHVzZSBlbGxpcHNpcyBoZXJlLCBzaW5jZSB0aGUgYXJndW1lbnQgd2lsbAotLy8gYWx3YXlzIGJlIGEgcG9pbnRlciB0eXBlIG9mIHNvbWUgc29ydCAoSk0gMjAwNS8wNi8wNCk6Ci1ub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlciguLi4pOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gcHJlLXByb2Nlc3NlZCBjb2RlLCBkb24ndCBlZGl0LCB0cnkgR05VIGNwcCB3aXRoIAotLy8gY3BwIC1JLi4vLi4vLi4vIC1ETkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFIC14IGMrKyAtUCBmaWxlbmFtZQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotI2VuZGlmCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSVNfRlVOQ1RJT05fUFRSX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0jdW5kZWYgX19zdGRjYWxsCi0jdW5kZWYgX19mYXN0Y2FsbAotI3VuZGVmIF9fY2RlY2wKLQotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLUAjaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci1AI2VuZGlmCi1AI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci1AI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci1AI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLUAjZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVIKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUwMDhlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICBBbGVrc2V5IEd1cnRvdm95LCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9JTVBMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZS1wcm9jZXNzZWQgY29kZSwgZG9uJ3QgZWRpdCwgdHJ5IEdOVSBjcHAgd2l0aCAKLS8vIGNwcCAtSS4uLy4uLy4uLyAtRE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSAteCBjKysgLVAgZmlsZW5hbWUKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSgpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLQotI2Vsc2UKLQotI3VuZGVmIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCAoMCwgMjUsICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGwuaHBwIikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERQotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2VuZGlmCi0KLUAjaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotQCNlbmRpZgotQCNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDc0NGRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc1OSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gIEFsZWtzZXkgR3VydG92b3ksIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9URVNURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotbm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoLi4uKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZS1wcm9jZXNzZWQgY29kZSwgZG9uJ3QgZWRpdCwgdHJ5IEdOVSBjcHAgd2l0aCAKLS8vIGNwcCAtSS4uLy4uLy4uLyAtRE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSAteCBjKysgLVAgZmlsZW5hbWUKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSVNfTUVNX0ZVTl9QT0lOVEVSX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0jdW5kZWYgX19zdGRjYWxsCi0jdW5kZWYgX19mYXN0Y2FsbAotI3VuZGVmIF9fY2RlY2wKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlKTsKLQotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLUAjZW5kaWYKLUAjaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MgLy8gT3RoZXIgY2FsbGluZyBjb252ZW50aW9ucyB1c2VkIGJ5IE1TIGNvbXBhdGlibGUgY29tcGlsZXJzOgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotQCNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLUAjZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotQCNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA5MDhlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gJFNvdXJjZSQKLS8vICREYXRlOiAyMDExLTA0LTI1IDA1OjI2OjQ4IC0wNzAwIChNb24sIDI1IEFwciAyMDExKSAkCi0vLyAkUmV2aXNpb246IDcxNDgxICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX3QuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IE5ETkJPT1NUX01TVkMgPj0gMTMwMAotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX0JBU0UoQykgcHVibGljIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LEM+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfVkFMVUVfREVDTChDKSAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX0JBU0UoQykgcHVibGljIDo6bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEM+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjptcGw6OnNpemVfdDxDPiBiYXNlXzsgXAotICAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsgXAotICAgIC8qKi8KLSNlbmRpZgotCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9ERUYxKHRyYWl0LFQsQykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdHJhaXQgXAotICAgIDogTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSx0cmFpdCwoVCkpIFwKLX07IFwKLVwKLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsdHJhaXQpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxKHRyYWl0LHNwZWMsQykgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAotICAgIDogTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygxLHRyYWl0LChzcGVjKSkgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHBhcmFtLHRyYWl0LHNwZWMsQykgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0PHNwZWM+IFwKLSAgICA6IE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfQkFTRShDKSBcCi17IFwKLX07IFwKLS8qKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWIxNGQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAwNC0wOS0wMiAwODo0MTozNyAtMDcwMCAoVGh1LCAwMiBTZXAgMjAwNCkgJAotLy8gJFJldmlzaW9uOiAyNDg3NCAkCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZWI4ZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKSBcCi0gICAgJiYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OKQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyhpLCBuYW1lKSBcCi1uYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7IFwKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpID4gXAotc3RydWN0IHRlbXBsYXRlX2FyaXR5PCBcCi0gICAgICAgICAgbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCBUKSA+IFwKLSAgICAgICAgPiBcCi0gICAgOiBpbnRfPGk+IFwKLXsgXAotfTsgXAotfX0gXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoaSwgbmFtZSkgLyoqLwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZDA0NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMTEtMDQtMjUgMDU6MjY6NDggLTA3MDAgKE1vbiwgMjUgQXByIDIwMTEpICQKLS8vICRSZXZpc2lvbjogNzE0ODEgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHRyYWl0LFQscmVzdWx0KSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0cmFpdCBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSx0cmFpdCwoVCkpIFwKLX07IFwKLVwKLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsdHJhaXQpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9TUEVDMSh0cmFpdCxzcGVjLHJlc3VsdCkgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMSx0cmFpdCwoc3BlYykpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxKHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdCMjX2ltcGw8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEocGFyYW0sdHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdDxzcGVjPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMihwYXJhbTEscGFyYW0yLHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTwgcGFyYW0xLCBwYXJhbTIgPiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0OyBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMxXzEocGFyYW0sdHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdCMjX2ltcGw8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLX07IFwKLS8qKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NDYzMzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAwNC0wOS0wMiAwODo0MTozNyAtMDcwMCAoVGh1LCAwMiBTZXAgMjAwNCkgJAotLy8gJFJldmlzaW9uOiAyNDg3NCAkCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMxXzEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNmI2NTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX1dSQVBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9XUkFQX0hQUF9JTkNMVURFRAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCB3cmFwIHt9OwotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfV1JBUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ5ODc3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBtYWNyb3MgYW5kIGhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBpbnRlZ3JhbC1jb25zdGFudC1leHByZXNzaW9ucy4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfWUVTX05PX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9ZRVNfTk9fVFlQRV9IUFBfSU5DTFVERUQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXR5cGVkZWYgY2hhciB5ZXNfdHlwZTsKLXN0cnVjdCBub190eXBlCi17Ci0gICBjaGFyIHBhZGRpbmdbOF07Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9ZRVNfTk9fVFlQRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZXh0ZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZXh0ZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRkZTU0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2V4dGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0VYVEVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfRVhURU5UX0hQUF9JTkNMVURFRAotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLSAgICAvLyB3cmFwIHRoZSBpbXBsIGFzIG1haW4gdHJhaXQgcHJvdmlkZXMgYWRkaXRpb25hbCBNUEwgbGFtYmRhIHN1cHBvcnQKLSAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4gPgotICAgIHN0cnVjdCBleHRlbnRfaW1wIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gX19hcnJheV9leHRlbnQoVCwgTik7Ci0gICAgfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VFtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3RbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIHZvbGF0aWxlW1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdCB2b2xhdGlsZVtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUj4KLXN0cnVjdCBleHRlbnRfaW1wPFRbUl0sMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdFtSXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSPgotc3RydWN0IGV4dGVudF9pbXA8VCB2b2xhdGlsZVtSXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdCB2b2xhdGlsZVtSXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKSAmJiAhZGVmaW5lZChfX01XRVJLU19fKQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdFtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgdm9sYXRpbGVbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0IHZvbGF0aWxlW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VFtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdFtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VCB2b2xhdGlsZVtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdCB2b2xhdGlsZVtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLSNlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAgLy8gbm9uLUNvZGVHZWFyIGltcGxlbWVudGF0aW9uCi19ICAgLy8gOjpuZG5ib29zdDo6ZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOID0gMD4KLXN0cnVjdCBleHRlbnQKLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCA6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCxOPjo6dmFsdWU+Ci17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIAotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsTj46OnZhbHVlPiBiYXNlXzsgCi0gICB1c2luZyBiYXNlXzo6dmFsdWU7Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsZXh0ZW50LChUKSkKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzc0ZGExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1IEFsZXhhbmRlciBOYXNvbm92LgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uX2hwcF9JTkNMVURFRAotI2RlZmluZSBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGx1cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jZW5kaWYKLQotLy8gU2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0PgotewotICAgIHR5cGVkZWYgZG91YmxlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0IGNvbnN0PgotewotICAgIHR5cGVkZWYgZG91YmxlIGNvbnN0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0IHZvbGF0aWxlPgotewotICAgIHR5cGVkZWYgZG91YmxlIHZvbGF0aWxlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0IGNvbnN0IHZvbGF0aWxlPgotewotICAgIHR5cGVkZWYgZG91YmxlIGNvbnN0IHZvbGF0aWxlIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbgotICA6IG1wbDo6YXQ8Ci0gICAgICAgIG1wbDo6dmVjdG9yPCBULCBkb3VibGUsIGRvdWJsZSBjb25zdCwgZG91YmxlIHZvbGF0aWxlLAotICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGNvbnN0IHZvbGF0aWxlID4KLSAgICAgICwgbXBsOjpwbHVzPAotICAgICAgICAgICAgaXNfc2FtZTxULCBmbG9hdD4KLSAgICAgICAgICAsIG1wbDo6bXVsdGlwbGllczwgaXNfc2FtZTxULCBmbG9hdCBjb25zdD4gICAgICAgICAsIG1wbDo6aW50XzwyPiA+Ci0gICAgICAgICAgLCBtcGw6Om11bHRpcGxpZXM8IGlzX3NhbWU8VCwgZmxvYXQgdm9sYXRpbGU+ICAgICAgLCBtcGw6OmludF88Mz4gPgotICAgICAgICAgICwgbXBsOjptdWx0aXBsaWVzPCBpc19zYW1lPFQsIGZsb2F0IGNvbnN0IHZvbGF0aWxlPiwgbXBsOjppbnRfPDQ+ID4KLSAgICAgICAgICA+Ci0gICAgICA+Ci17Ci19OwotCi0jZW5kaWYKLQotfSB9Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoCi0gICAgICBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb24KLSAgICAsIFQKLSAgICAsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpkZXRhaWw6OmZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxUPjo6dHlwZQotICAgICkKLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19mbG9hdGluZ19wb2ludF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyNjBkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9GVU5DVElPTl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZVTkNUSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikodm9pZCk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAwKTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDE+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAxKTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmd1bWVudF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyKT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDIpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMSBmaXJzdF9hcmd1bWVudF90eXBlOwotICB0eXBlZGVmIFQyIHNlY29uZF9hcmd1bWVudF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gMyk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gNCk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDUpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNik+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA2KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci0gIHR5cGVkZWYgVDYgYXJnNl90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gNyk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci0gIHR5cGVkZWYgVDUgYXJnNV90eXBlOwotICB0eXBlZGVmIFQ2IGFyZzZfdHlwZTsKLSAgdHlwZWRlZiBUNyBhcmc3X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDgpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLSAgdHlwZWRlZiBUNiBhcmc2X3R5cGU7Ci0gIHR5cGVkZWYgVDcgYXJnN190eXBlOwotICB0eXBlZGVmIFQ4IGFyZzhfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA5KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci0gIHR5cGVkZWYgVDYgYXJnNl90eXBlOwotICB0eXBlZGVmIFQ3IGFyZzdfdHlwZTsKLSAgdHlwZWRlZiBUOCBhcmc4X3R5cGU7Ci0gIHR5cGVkZWYgVDkgYXJnOV90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksCi0gICAgICAgICB0eXBlbmFtZSBUMTA+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTApPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gMTApOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLSAgdHlwZWRlZiBUNiBhcmc2X3R5cGU7Ci0gIHR5cGVkZWYgVDcgYXJnN190eXBlOwotICB0eXBlZGVmIFQ4IGFyZzhfdHlwZTsKLSAgdHlwZWRlZiBUOSBhcmc5X3R5cGU7Ci0gIHR5cGVkZWYgVDEwIGFyZzEwX3R5cGU7Ci19OwotCi19IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0cyA6IAotICBwdWJsaWMgbmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjx0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3BvaW50ZXI8RnVuY3Rpb24+Ojp0eXBlPgotewotfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIE4+IAotc3RydWN0IHR5cGVfb2Zfc2l6ZQotewotICBjaGFyIGVsZW1lbnRzW05dOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXR5cGVfb2Zfc2l6ZTwxPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKCkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMT4KLXR5cGVfb2Zfc2l6ZTwyPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXR5cGVfb2Zfc2l6ZTwzPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMikpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotdHlwZV9vZl9zaXplPDQ+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMykpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLXR5cGVfb2Zfc2l6ZTw1PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDU+Ci10eXBlX29mX3NpemU8Nj4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+Ci10eXBlX29mX3NpemU8Nz4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLXR5cGVfb2Zfc2l6ZTw4PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci10eXBlX29mX3NpemU8OT4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci10eXBlX29mX3NpemU8MTA+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUOSkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwKLSAgICAgICAgIHR5cGVuYW1lIFQxMD4KLXR5cGVfb2Zfc2l6ZTwxMT4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQ5LCBUMTApKTsKLX0gLy8gZW5kIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gV29uJ3Qgd29yayB3aXRoIHJlZmVyZW5jZXMKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0cwotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gKHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbl9hcml0eV9oZWxwZXIoKEZ1bmN0aW9uKikwKSktMSkpOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0ZVTkNUSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMmQwZTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfQU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQklUX0FORF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfYW5kCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICYKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmRfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmRfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNmNjVlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfQU5EX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9BTkRfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF9hbmRfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICY9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhOTc2NTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9PUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9PUl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfb3IKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgfAotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3JfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY3MzQzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3JfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9PUl9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfT1JfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF9vcl9hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgfD0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODNhNGZjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX1hPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9YT1JfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfYml0X3hvcgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCBeCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZmEzYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvcl9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX1hPUl9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfWE9SX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfeG9yX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCBePQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2NvbXBsZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfY29tcGxlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyN2Y2ZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfY29tcGxlbWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19DT01QTEVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQ09NUExFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19jb21wbGVtZW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIH4KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBwb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgIC8qIGZ1bmRhbWVudGFsIG5vbiBpbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RlcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RlcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZmMjU1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kZXJlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19ERVJFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0RFUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2RlcmVmZXJlbmNlCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICoKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogdm9pZCogb3IgZnVuZGFtZW50YWwgKi9cCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWU3OWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfRElWSURFU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0RJVklERVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZGl2aWRlcwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAvCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgd2l0aCBwb2ludGVyIG9yIGZ1bmRhbWVudGFsICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXNfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXNfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MzMTUwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19ESVZJREVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0RJVklERVNfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2RpdmlkZXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC89Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDEyOWU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZXF1YWxfdG8KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPT0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZDdkZjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19HUkVBVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfR1JFQVRFUl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19ncmVhdGVyCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID4KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZTZjOTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfR1JFQVRFUl9FUVVBTF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19ncmVhdGVyX2VxdWFsCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID49Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciBhbmQgTGhzIT1iYXNlKFJocykgYW5kIFJocyE9YmFzZShMaHMpIGFuZCBMaHMhPXZvaWQqIGFuZCBSaHMhPXZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IFJoc19ub3B0ciwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjZkMzQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTEVGVF9TSElGVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xFRlRfU0hJRlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbGVmdF9zaGlmdAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA8PAotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdF9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdF9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGYzNWU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnRfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xFRlRfU0hJRlRfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTEVGVF9TSElGVF9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbGVmdF9zaGlmdF9hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPDw9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYyYzI2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xFU1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MRVNTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xlc3MKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPAotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgYW5kIExocyE9YmFzZShSaHMpIGFuZCBSaHMhPWJhc2UoTGhzKSBhbmQgTGhzIT12b2lkKiBhbmQgUmhzIT12b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBSaHNfbm9wdHIsIExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgICAgICAgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUyYTI1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xFU1NfRVFVQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MRVNTX0VRVUFMX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xlc3NfZXF1YWwKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPD0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBiY2E4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX0FORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfQU5EX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xvZ2ljYWxfYW5kCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICYmCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgd2l0aCBmdW5kYW1lbnRhbCBub24gY29udmVydGlibGUgdG8gYm9vbCAqL1wKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8IFJoc19ub2N2LCBib29sID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgTGhzX25vY3YsIGJvb2wgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9ub3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9ub3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTZjZDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfbm90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfTk9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTE9HSUNBTF9OT1RfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbG9naWNhbF9ub3QKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgIQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICBmYWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkMWQwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX09SX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xvZ2ljYWxfb3IKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgfHwKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogcG9pbnRlciB3aXRoIGZ1bmRhbWVudGFsIG5vbiBjb252ZXJ0aWJsZSB0byBib29sICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgUmhzX25vY3YsIGJvb2wgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCBMaHNfbm9jdiwgYm9vbCA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZDZlMDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTUlOVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NSU5VU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19taW51cwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHMhPWludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIChSaHM9PWZ1bmRhbWVudGFsIG9yIFJocz09cG9pbnRlcikgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT12b2lkKiBhbmQgKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9ZnVuZGFtZW50YWwgYW5kIFJocz1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIHR3byBkaWZmZXJlbnQgcG9pbnRlcnMgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9jdiwgUmhzX25vY3YgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51c19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTFiODNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NSU5VU19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NSU5VU19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbWludXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC09Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHMhPWludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09dm9pZCogYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz1mdW5kYW1lbnRhbCBhbmQgUmhzPXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSBhbmQgKExocz09Y29uc3QpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmOGU5Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01PRFVMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NT0RVTFVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX21vZHVsdXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgJQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1c19hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1c19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDEyZWUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXNfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01PRFVMVVNfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTU9EVUxVU19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbW9kdWx1c19hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgJT0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTNlZWFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTVVMVElQTElFU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01VTFRJUExJRVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbXVsdGlwbGllcwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAqCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgd2l0aCBwb2ludGVyIG9yIGZ1bmRhbWVudGFsICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXNfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXNfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U3MDg1MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NVUxUSVBMSUVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01VTFRJUExJRVNfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX211bHRpcGxpZXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICo9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmVnYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25lZ2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZTNhODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmVnYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05FR0FURV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05FR0FURV9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19uZWdhdGUKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiBwb2ludGVyICovXAotICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25ld19vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZXdfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTljMWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25ld19vcGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBSdW5hciBVbmRoZWltLCBSb2JlcnQgUmFtZXkgJiBKb2huIE1hZGRvY2sgMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05FV19PUEVSQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05FV19PUEVSQVRPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5ldz4gLy8gc3RkOjpub3Rocm93X3QKLSNpbmNsdWRlIDxjc3RkZGVmPiAvLyBzdGQ6OnNpemVfdAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBVLCBVIHg+IAotICAgIHN0cnVjdCB0ZXN0OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGhhc19uZXdfb3BlcmF0b3JfaW1wbCB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnMSgKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QpLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXcKLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnMSguLi4pOwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnMigKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JiksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ldwotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWcyKC4uLik7Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWczKAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCwgdm9pZCopLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXcKLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnMyguLi4pOwotCi0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWc0KAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ld1tdCi0gICAgICAgICAgICA+KiA9IE5VTEwKLSAgICAgICAgKTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZzQoLi4uKTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZzUoCi0gICAgICAgICAgICBVKiwgCi0gICAgICAgICAgICB0ZXN0PAotICAgICAgICAgICAgdm9pZCAqKCopKHN0ZDo6c2l6ZV90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXdbXQotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWc1KC4uLik7Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWc2KAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCwgdm9pZCopLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXdbXQotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWc2KC4uLik7Ci0KLSAgICAgICAgLy8gR0NDMiB3b24ndCBldmVuIHBhcnNlIHRoaXMgdGVtcGxhdGUgaWYgd2UgZW1iZWQgdGhlIGNvbXB1dGF0aW9uCi0gICAgICAgIC8vIG9mIHMxIGluIHRoZSBjb21wdXRhdGlvbiBvZiB2YWx1ZS4KLSAgICAgICAgI2lmZGVmIF9fR05VQ19fCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMxID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnMTxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMiA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzI8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczMgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWczPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM0ID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnNDxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNSA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzU8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczYgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWc2PFQ+KDApKSk7Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0gICAgICAgICAgICAgICAgI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0gICAgICAgICAgICAgICAgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSAgICAgICAgICAgICNlbmRpZgotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMxID0gc2l6ZW9mKGNoZWNrX3NpZzE8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczIgPSBzaXplb2YoY2hlY2tfc2lnMjxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMyA9IHNpemVvZihjaGVja19zaWczPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM0ID0gc2l6ZW9mKGNoZWNrX3NpZzQ8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczUgPSBzaXplb2YoY2hlY2tfc2lnNTxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNiA9IHNpemVvZihjaGVja19zaWc2PFQ+KDApKSk7Ci0KLSAgICAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSAgICAgICAgICAgICAgICAjcHJhZ21hIHdhcm5pbmcocG9wKQotICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICNlbmRpZgotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAoczEgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpLAotICAgICAgICAgICAgKHMyID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSwKLSAgICAgICAgICAgIChzMyA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSksCi0gICAgICAgICAgICAoczQgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpLAotICAgICAgICAgICAgKHM1ID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSwKLSAgICAgICAgICAgIChzNiA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSkKLSAgICAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci0gICAgfTsKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19uZXdfb3BlcmF0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTkVXX09QRVJBVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNWYyYzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05PVF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19ub3RfZXF1YWxfdG8KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgIT0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0ZWUyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaGFzX25vdGhyb3dfYXNzaWduX2ltcHsKLSNpZm5kZWYgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9hc3NpZ248VD46OnZhbHVlKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkpOwotI2VuZGlmCi19OwotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfYXNzaWduLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbm90aHJvd19hc3NpZ25faW1wPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2Fzc2lnbix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfYXNzaWduLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19hc3NpZ24sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2Fzc2lnbix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTk9USFJPV19BU1NJR05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvbnN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGJhZjFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGhhc19ub3Rocm93X2NvbnN0cnVjdG9yX2ltcHsKLSNpZmRlZiBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvbnN0cnVjdG9yPFQ+Ojp2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25vdGhyb3dfY29uc3RydWN0b3JfaW1wPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25vdGhyb3dfY29uc3RydWN0b3JfaW1wPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29uc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29uc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNTljYTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09QWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09QWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19jb3B5X2ltcHsKLSNpZmRlZiBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9jb3B5PFQ+Ojp2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19jb3B5LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbm90aHJvd19jb3B5X2ltcDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19ub3Rocm93X2NvcHlfaW1wPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09QWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfZGVzdHJ1Y3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Rlc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzExY2FiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfZGVzdHJ1Y3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19kZXN0cnVjdG9yLFQsOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTk9USFJPV19ERVNUUlVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfb3BlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjNkODdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX29wZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX09QRVJBVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfT1BFUkFUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmRfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2NvbXBsZW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kZXJlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2VxdWFsX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXJfZXF1YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdF9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzc19lcXVhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51c19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1c19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllc19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZWdhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3RfZXF1YWxfdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1c19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2RlY3JlbWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfaW5jcmVtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2RlY3JlbWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9pbmNyZW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X21pbnVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfcGx1cy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJlODE1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QTFVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3BsdXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09dm9pZCogYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzIT1pbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgYW5kIExocyE9aW50ZWdyYWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYWEyOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1c19hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUExVU19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QTFVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wbHVzX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09dm9pZCogYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzIT1pbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgYW5kIExocyE9Ym9vbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub2N2LCBib29sID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSBhbmQgKExocz09Y29uc3QpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9kZWNyZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9kZWNyZW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmQ3NzcxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfZGVjcmVtZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BPU1RfREVDUkVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUE9TVF9ERUNSRU1FTlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcG9zdF9kZWNyZW1lbnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLS0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBib29sICovXAotICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgYm9vbCwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgLyogdm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKGZ1bmRhbWVudGFsIG9yIHBvaW50ZXIpIGFuZCBjb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2luY3JlbWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2luY3JlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTI5YWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9pbmNyZW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUE9TVF9JTkNSRU1FTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QT1NUX0lOQ1JFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wb3N0X2luY3JlbWVudAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIGJvb2wgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBib29sLCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAvKiB2b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoZnVuZGFtZW50YWwgb3IgcG9pbnRlcikgYW5kIGNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wb3N0Zml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9kZWNyZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2RlY3JlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjIzOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2RlY3JlbWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19QUkVfREVDUkVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUFJFX0RFQ1JFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wcmVfZGVjcmVtZW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC0tCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogYm9vbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IGJvb2wsIFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgIC8qIHZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIChmdW5kYW1lbnRhbCBvciBwb2ludGVyKSBhbmQgY29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfaW5jcmVtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9pbmNyZW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDBjMTNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9pbmNyZW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUFJFX0lOQ1JFTUVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1BSRV9JTkNSRU1FTlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcHJlX2luY3JlbWVudAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIGJvb2wgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBib29sLCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAvKiB2b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoZnVuZGFtZW50YWwgb3IgcG9pbnRlcikgYW5kIGNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTA1YjdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1JJR0hUX1NISUZUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUklHSFRfU0hJRlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcmlnaHRfc2hpZnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPj4KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdF9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWU4YzI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19SSUdIVF9TSElGVF9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19SSUdIVF9TSElGVF9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcmlnaHRfc2hpZnRfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID4+PQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ4YTJmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX2Fzc2lnbl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9hc3NpZ24sVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2Fzc2lnbl9pbXBsPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Fzc2lnbix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfYXNzaWduLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9hc3NpZ24sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Fzc2lnbix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9BU1NJR05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDI1YmQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9jdG9yX2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpCi0gICAgICA+Ojp2YWx1ZSkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICBmYWxzZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2N0b3JfaW1wbDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2N0b3JfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjllODg3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPUFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPUFlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9jb3B5X2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2NvcHksVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2NvcHlfaW1wbDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2NvcHlfaW1wbDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPUFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4M2FmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfZHRvcl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2Rlc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2R0b3JfaW1wbDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNjdlZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDItMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFudG9ueSBQb2x1a2hpbiAyMDEzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ25faW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR04oVCkpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX21vdmVfYXNzaWduX2ltcGw8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfYXNzaWduLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU5Yzk1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIChDKSBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyLTIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbnRvbnkgUG9sdWtoaW4gMjAxMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX21vdmVfY3Rvcl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1IoVCkpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfbW92ZV9jdG9yX2ltcGw8VD46OnZhbHVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNzk1ZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVU5BUllfTUlOVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19VTkFSWV9NSU5VU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc191bmFyeV9taW51cwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgKi9cCi0gICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2YWY2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1VOQVJZX1BMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19VTkFSWV9QTFVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3VuYXJ5X3BsdXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICBmYWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdmlydHVhbF9kZXN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ZpcnR1YWxfZGVzdHJ1Y3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NDRlZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdmlydHVhbF9kZXN0cnVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdmlydHVhbF9kZXN0cnVjdG9yLFQsTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc192aXJ0dWFsX2Rlc3RydWN0b3IsVCxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMmVlOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgYW5kIFN0ZXZlIENsZWFyeSAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgbWFjcm9zIGFuZCBoZWxwZXJzIGZvciB3b3JraW5nIHdpdGggaW50ZWdyYWwtY29uc3RhbnQtZXhwcmVzc2lvbnMuCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSUNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9lcS5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGI5MDUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19JTlRFR1JBTF9DT05TVEFOVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfSU5URUdSQUxfQ09OU1RBTlRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotdGVtcGxhdGUgPGNsYXNzIFQsIGludCB2YWw+Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIFQsIFQgdmFsPgotI2VuZGlmCi1zdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQgOiBwdWJsaWMgbXBsOjppbnRlZ3JhbF9jPFQsIHZhbD4KLXsKLSAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8VCx2YWw+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudDxib29sLHRydWU+IDogcHVibGljIG1wbDo6dHJ1ZV8gCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDA5NykKLSAgIHR5cGVkZWYgbXBsOjp0cnVlXyBiYXNlXzsKLSAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsdHJ1ZT4gdHlwZTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudDxib29sLGZhbHNlPiA6IHB1YmxpYyBtcGw6OmZhbHNlXyAKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDk3KQotICAgdHlwZWRlZiBtcGw6OmZhbHNlXyBiYXNlXzsKLSAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsZmFsc2U+IHR5cGU7Ci19OwotCi10eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsdHJ1ZT4gdHJ1ZV90eXBlOwotdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxib29sLGZhbHNlPiBmYWxzZV90eXBlOwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODcxMTQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSBBbGV4YW5kZXIgTmFzb25vdi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2ludGVncmFsX3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLSNkZWZpbmUgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19pbnRlZ3JhbF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLQotLy8gU2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIDQuNS8yCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IG5lZWRfcHJvbW90aW9uIDogcHVibGljIG5kbmJvb3N0Ojppc19lbnVtPFQ+IHt9OwotCi0vLyA0LjUvMQotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248Y2hhciAgICAgICAgICAgICAgPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjxzaWduZWQgY2hhciAgICAgICA+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPHVuc2lnbmVkIGNoYXIgICAgID4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248c2lnbmVkIHNob3J0IGludCAgPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjx1bnNpZ25lZCBzaG9ydCBpbnQ+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLQotCi0vLyBTcGVjaWFsaXphdGlvbnMgZm9yIG5vbi1zdGFuZGFyZCB0eXBlcy4KLS8vIFR5cGUgaXMgcHJvbW90ZWQgaWYgaXQncyBzbWFsbGVyIHRoZW4gaW50LgotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoVCkgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPFQ+ICAgICAgICAgIFwKLSAgICAgICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKHNpemVvZihUKSA8IHNpemVvZihpbnQpKT4ge307Ci0KLS8vIFNhbWUgc2V0IG9mIGludGVncmFsIHR5cGVzIGFzIGluIG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcC4KLS8vIFBsZWFzZSwga2VlcCBpbiBzeW5jLgotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDYwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPT0gMHg2MDApICYmIChfTVNDX1ZFUiA8IDEzMDApKQotLy8gVE9ETzogY29tbW9uIG1hY3JvIGZvciB0aGlzICNpZi4gT3IgYmV0dGVyIHlldCwgUFAgU0VRIG9mIG5vbi1zdGFuZGFyZCB0eXBlcy4KLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoX19pbnQ4ICAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQ4ICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoX19pbnQxNiAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQxNikKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoX19pbnQzMiAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQzMikKLSNpZmRlZiBfX0JPUkxBTkRDX18KLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoICAgICAgICAgX19pbnQ2NCkKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSApCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoICAgICAgICAgX19pbnQ2NCkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRQotCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIDQuNS8yCi10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjx3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci0jZW5kaWYKLQotLy8gNC41LzMgKGludGVncmFsIGJpdC1maWVsZCkgaXMgbm90IHN1cHBvcnRlZC4KLQotLy8gNC41LzQKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPGJvb2w+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLQotCi0vLyBHZXQgcHJvbW90ZWQgdHlwZSBieSBpbmRleCBhbmQgY3YgcXVhbGlmaWVycy4KLQotdGVtcGxhdGU8aW50IEluZGV4LCBpbnQgSXNDb25zdCwgaW50IElzVm9sYXRpbGU+IHN0cnVjdCBwcm9tb3RlX2Zyb21faW5kZXg7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWChOLFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcHJvbW90ZV9mcm9tX2luZGV4PE4sMCwwPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHByb21vdGVfZnJvbV9pbmRleDxOLDAsMT4geyB0eXBlZGVmIFQgdm9sYXRpbGUgdHlwZTsgfTsgIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBwcm9tb3RlX2Zyb21faW5kZXg8TiwxLDA+IHsgdHlwZWRlZiBUIGNvbnN0IHR5cGU7IH07ICAgICBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcHJvbW90ZV9mcm9tX2luZGV4PE4sMSwxPiB7IHR5cGVkZWYgVCBjb25zdCB2b2xhdGlsZSB0eXBlOyB9OwotCi0KLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoMSwgaW50ICAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoMiwgdW5zaWduZWQgaW50ICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoMywgbG9uZyAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoNCwgdW5zaWduZWQgbG9uZykKLQotCi0vLyBXQVJOSU5HOiBpbnRlZ3JhbCBwcm9tb3Rpb25zIHRvIG5vbi1zdGFuZGFyZCB0eXBlcwotLy8gbG9uZyBsb25nIGFuZCBfX2ludDY0IGFyZSBub3QgZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQuCi0vLyBBZGRpdGlvbmFsIHNwZWNpYWxpc2F0aW9ucyBhbmQgb3ZlcmxvYWRzIHNob3VsZG4ndAotLy8gaW50cm9kdWNlIGFtYmlndWl0eSwgdGhvdWdoLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCg1LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCg2LCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDcsIF9faW50NjQgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDgsIHVuc2lnbmVkIF9faW50NjQpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgKLQotCi0vLyBEZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUjoKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKQotCi10ZW1wbGF0ZTxpbnQgTj4KLXN0cnVjdCBzaXplZF90eXBlX2Zvcl9wcm9tb3Rpb24KLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtOXTsKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUihJLFQpIFwKLSAgICBzaXplZF90eXBlX2Zvcl9wcm9tb3Rpb248ST46OnR5cGUgcHJvbW90ZWRfaW5kZXhfdGVzdGVyKFQpOwotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoSSxUKSBcCi0gICAgY2hhciAoJnByb21vdGVkX2luZGV4X3Rlc3RlcihUKSlbSV07Ci0KLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDEsIGludCAgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDIsIHVuc2lnbmVkIGludCApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDMsIGxvbmcgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDQsIHVuc2lnbmVkIGxvbmcpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDUsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDYsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoNywgX19pbnQ2NCAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoOCwgdW5zaWduZWQgX19pbnQ2NCkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUgotCi0KLS8vIEdldCBhbiBpbmRleCBvZiBwcm9tb3RlZCB0eXBlIGZvciB0eXBlIFQuCi0vLyBQcmVjb25kaXRpb246IG5lZWRfcHJvbW90aW9uPFQ+Ci10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHByb21vdGVkX2luZGV4Ci17Ci0gICAgc3RhdGljIFQgdGVzdGVlOyAvLyB1bmRlZmluZWQKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IHNpemVvZihwcm9tb3RlZF9pbmRleF90ZXN0ZXIoK3Rlc3RlZSkpICk7Ci0gICAgLy8gVW5hcnkgcGx1cyBwcm9tb3RlcyB0ZXN0ZWUgICAgICAgICAgICAgICAgICAgIExPT0sgSEVSRSAtLS0+IF4KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaW50ZWdyYWxfcHJvbW90aW9uX2ltcGwKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcHJvbW90ZV9mcm9tX2luZGV4PAotICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpkZXRhaWw6OnByb21vdGVkX2luZGV4PFQ+Ojp2YWx1ZSkKLSAgICAgICwgKG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUpCi0gICAgICAsIChuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKQotICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpbnRlZ3JhbF9wcm9tb3Rpb24KLSAgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6ZXZhbF9pZjwKLSAgICAgICAgbmVlZF9wcm9tb3Rpb248TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfY3Y8VD46OnR5cGU+Ci0gICAgICAsIGludGVncmFsX3Byb21vdGlvbl9pbXBsPFQ+Ci0gICAgICAsIG5kbmJvb3N0OjptcGw6OmlkZW50aXR5PFQ+Ci0gICAgICA+Ci17Ci19OwotCi19IH0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMSgKLSAgICAgIGludGVncmFsX3Byb21vdGlvbgotICAgICwgVAotICAgICwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmRldGFpbDo6aW50ZWdyYWxfcHJvbW90aW9uPFQ+Ojp0eXBlCi0gICAgKQotfQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2ludGVncmFsX3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OGIyZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JTlRSSU5TSUNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JTlRSSU5TSUNTX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2VuZGlmCi0KLS8vCi0vLyBIZWxwZXIgbWFjcm9zIGZvciBidWlsdGluIGNvbXBpbGVyIHN1cHBvcnQuCi0vLyBJZiB5b3VyIGNvbXBpbGVyIGhhcyBidWlsdGluIHN1cHBvcnQgZm9yIGFueSBvZiB0aGUgZm9sbG93aW5nCi0vLyB0cmFpdHMgY29uY2VwdHMsIHRoZW4gcmVkZWZpbmUgdGhlIGFwcHJvcHJpYXRlIG1hY3JvcyB0byBwaWNrCi0vLyB1cCBvbiB0aGUgY29tcGlsZXIgc3VwcG9ydDoKLS8vCi0vLyAodGhlc2Ugc2hvdWxkIGxhcmdlbHkgaWdub3JlIGN2LXF1YWxpZmllcnMpCi0vLyBORE5CT09TVF9JU19VTklPTihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUIGlzIGEgdW5pb24gdHlwZQotLy8gTkROQk9PU1RfSVNfUE9EKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQgaXMgYSBQT0QgdHlwZQotLy8gTkROQk9PU1RfSVNfRU1QVFkoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgVCBpcyBhbiBlbXB0eSBjbGFzcyB0eXBlIChhbmQgbm90IGEgdW5pb24pCi0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiAiVCB4OyIgaGFzIG5vIGVmZmVjdAotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUKHQpIDw9PT4gbWVtY3B5Ci0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQobmRuYm9vc3Q6Om1vdmUodCkpIDw9PT4gbWVtY3B5Ci0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgdCA9IHUgPD09PiBtZW1jcHkKLS8vIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIHQgPSBuZG5ib29zdDo6bW92ZSh1KSA8PT0+IG1lbWNweQotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiB+VCgpIGhhcyBubyBlZmZlY3QKLS8vIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmICJUIHg7IiBjYW4gbm90IHRocm93Ci0vLyBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQodCkgY2FuIG5vdCB0aHJvdwotLy8gTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIHQgPSB1IGNhbiBub3QgdGhyb3cKLS8vIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgVCBoYXMgYSB2aXJ0dWFsIGRlc3RydWN0b3IKLS8vCi0vLyBUaGUgZm9sbG93aW5nIGNhbiBhbHNvIGJlIGRlZmluZWQ6IHdoZW4gZGV0ZWN0ZWQgb3VyIGltcGxlbWVudGF0aW9uIGlzIGdyZWF0bHkgc2ltcGxpZmllZC4KLS8vCi0vLyBORE5CT09TVF9JU19BQlNUUkFDVChUKSB0cnVlIGlmIFQgaXMgYW4gYWJzdHJhY3QgdHlwZQotLy8gTkROQk9PU1RfSVNfQkFTRV9PRihULFUpIHRydWUgaWYgVCBpcyBhIGJhc2UgY2xhc3Mgb2YgVQotLy8gTkROQk9PU1RfSVNfQ0xBU1MoVCkgdHJ1ZSBpZiBUIGlzIGEgY2xhc3MgdHlwZSAoYW5kIG5vdCBhIHVuaW9uKQotLy8gTkROQk9PU1RfSVNfQ09OVkVSVElCTEUoVCxVKSB0cnVlIGlmIFQgaXMgY29udmVydGlibGUgdG8gVQotLy8gTkROQk9PU1RfSVNfRU5VTShUKSB0cnVlIGlzIFQgaXMgYW4gZW51bQotLy8gTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgdHJ1ZSBpZiBUIGlzIGEgcG9seW1vcnBoaWMgdHlwZQotLy8gTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBvZiB0eXBlIFQuCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfU0dJX1RZUEVfVFJBSVRTCi0gICAgLy8gSG9vayBpbnRvIFNHSSdzIF9fdHlwZV90cmFpdHMgY2xhc3MsIHRoaXMgd2lsbCBwaWNrIHVwIHVzZXIgc3VwcGxpZWQKLSAgICAvLyBzcGVjaWFsaXphdGlvbnMgYXMgd2VsbCBhcyBTR0kgLSBjb21waWxlciBzdXBwbGllZCBzcGVjaWFsaXphdGlvbnMuCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaWZkZWYgX19OZXRCU0RfXwotICAgICAgLy8gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdHlwZV90cmFpdHMuaCBvbiBOZXRCU0Qgb24gU3BhcmsKLSAgICAgIC8vIHVzZSBhbiBpbXBsaWNpdCBpbmNsdWRlIHZpYSBhbGdvcml0aG0gaW5zdGVhZCwgdG8gbWFrZSBzdXJlIHdlIGdldAotICAgICAgLy8gdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUgc3RkIGxpYjoKLSMgICAgIGluY2x1ZGUgPGFsZ29yaXRobT4KLSMgICBlbHNlCi0jICAgIGluY2x1ZGUgPHR5cGVfdHJhaXRzLmg+Ci0jICAgZW5kaWYKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aXNfUE9EX3R5cGUsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSA6Om5kbmJvb3N0Ojppc19zYW1lPCB0eXBlbmFtZSA6Ol9fdHlwZV90cmFpdHM8VD46Omhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3IsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvciwgOjpfX3RydWVfdHlwZT46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSA6Om5kbmJvb3N0Ojppc19zYW1lPCB0eXBlbmFtZSA6Ol9fdHlwZV90cmFpdHM8VD46Omhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3IsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciwgOjpfX3RydWVfdHlwZT46OnZhbHVlCi0KLSMgICBpZmRlZiBfX3NnaQotIyAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19NU0xfQ1BQX18pICYmIChfX01TTF9DUFBfXyA+PSAweDgwMDApCi0gICAgLy8gTWV0cm93ZXJrcyBjb21waWxlciBpcyBhY3F1aXJpbmcgaW50cmluc2ljIHR5cGUgdHJhaXRzIHN1cHBvcnQKLSAgICAvLyBwb3N0IHZlcnNpb24gOC4gIFdlIGhvb2sgaW50byB0aGUgcHVibGlzaGVkIGludGVyZmFjZSB0byBwaWNrIHVwCi0gICAgLy8gdXNlciBkZWZpbmVkIHNwZWNpYWxpemF0aW9ucyBhcyB3ZWxsIGFzIGNvbXBpbGVyIGludHJpbnNpY3MgYXMgCi0gICAgLy8gYW5kIHdoZW4gdGhleSBiZWNvbWUgYXZhaWxhYmxlOgotIyAgIGluY2x1ZGUgPG1zbF91dGlsaXR5PgotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aXNfdW5pb248VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aXNfUE9EPFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aGFzX3RyaXZpYWxfZGVmYXVsdF9jdG9yPFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFOjpoYXNfdHJpdmlhbF9jb3B5X2N0b3I8VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aGFzX3RyaXZpYWxfYXNzaWdubWVudDxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aGFzX3RyaXZpYWxfZHRvcjxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDX0ZVTExfVkVSKSAmJiAoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiA+PTE0MDA1MDIxNSkpXAotICAgICAgICAgfHwgKGRlZmluZWQoTkROQk9PU1RfSU5URUwpICYmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNTAwKSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgX19pc191bmlvbihUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgKF9faXNfcG9kKFQpICYmIF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIF9faXNfZW1wdHkoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIChfX2hhc190cml2aWFsX2NvcHkoVCl8fCAoIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUgJiYgITo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoX19oYXNfdHJpdmlhbF9hc3NpZ24oVCkgfHwgKCA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlICYmICEgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlICYmICE6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIChfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkgfHwgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgKF9faGFzX25vdGhyb3dfY29uc3RydWN0b3IoVCkgfHwgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIChfX2hhc19ub3Rocm93X2NvcHkoVCkgfHwgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29weTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoX19oYXNfbm90aHJvd19hc3NpZ24oVCkgfHwgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfYXNzaWduPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19BQlNUUkFDVChUKSBfX2lzX2Fic3RyYWN0KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSAoX19pc19iYXNlX29mKFQsVSkgJiYgIWlzX3NhbWU8VCxVPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NMQVNTKFQpIF9faXNfY2xhc3MoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ09OVkVSVElCTEUoVCxVKSAoKF9faXNfY29udmVydGlibGVfdG8oVCxVKSB8fCAoaXNfc2FtZTxULFU+Ojp2YWx1ZSAmJiAhaXNfZnVuY3Rpb248VT46OnZhbHVlKSkgJiYgIV9faXNfYWJzdHJhY3QoVSkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0vLyAgVGhpcyBvbmUgZG9lc24ndCBxdWl0ZSBhbHdheXMgZG8gdGhlIHJpZ2h0IHRoaW5nOgotLy8gICMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgX19pc19wb2x5bW9ycGhpYyhUKQotLy8gIFRoaXMgb25lIGZhaWxzIGlmIHRoZSBkZWZhdWx0IGFsaWdubWVudCBoYXMgYmVlbiBjaGFuZ2VkIHdpdGggL1pwOgotLy8gICMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIF9fYWxpZ25vZihUKQotCi0jICAgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE3MDApCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SKFQpICgoX19oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yKFQpIHx8IDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUpICYmICE6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTihUKSAoKF9faGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24oVCkgfHwgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSkgJiYgISA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUgJiYgITo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19ETUNfXykgJiYgKF9fRE1DX18gPj0gMHg4NDgpCi0vLyBGb3IgRGlnaXRhbCBNYXJzIEMrKywgd3d3LmRpZ2l0YWxtYXJzLmNvbQotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSAoX190eXBlaW5mbyhUKSAmIDB4NDAwKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgKF9fdHlwZWluZm8oVCkgJiAweDgwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgKF9fdHlwZWluZm8oVCkgJiAweDEwMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIChfX3R5cGVpbmZvKFQpICYgMHgxMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoX190eXBlaW5mbyhUKSAmIDB4MjApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoX190eXBlaW5mbyhUKSAmIDB4NDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgKF9fdHlwZWluZm8oVCkgJiAweDgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIChfX3R5cGVpbmZvKFQpICYgMHg4MCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoX190eXBlaW5mbyhUKSAmIDB4MTAwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKF9fdHlwZWluZm8oVCkgJiAweDIwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSAoX190eXBlaW5mbyhUKSAmIDB4NCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9DTEFORykgJiYgZGVmaW5lZChfX2hhc19mZWF0dXJlKQotIyAgIGluY2x1ZGUgPGNzdGRkZWY+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0KLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX3VuaW9uKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIF9faXNfdW5pb24oVCkKLSMgICBlbmRpZgotIyAgIGlmICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKF9fR0xJQkNYWF9fID49IDIwMDgwMzA2ICYmIF9fR0xJQkNYWF9fICE9IDIwMDgwNTE5KSkgJiYgX19oYXNfZmVhdHVyZShpc19wb2QpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIF9faXNfcG9kKFQpCi0jICAgZW5kaWYKLSMgICBpZiAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8IChfX0dMSUJDWFhfXyA+PSAyMDA4MDMwNiAmJiBfX0dMSUJDWFhfXyAhPSAyMDA4MDUxOSkpICYmIF9faGFzX2ZlYXR1cmUoaXNfZW1wdHkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgX19pc19lbXB0eShUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX2NvcHkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoX19oYXNfdHJpdmlhbF9jb3B5KFQpICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX2Fzc2lnbikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX2Rlc3RydWN0b3IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX25vdGhyb3dfY29uc3RydWN0b3IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgX19oYXNfbm90aHJvd19jb25zdHJ1Y3RvcihUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfbm90aHJvd19jb3B5KQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKF9faGFzX25vdGhyb3dfY29weShUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfbm90aHJvd19hc3NpZ24pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIChfX2hhc19ub3Rocm93X2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdmlydHVhbF9kZXN0cnVjdG9yKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX2Fic3RyYWN0KQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpIF9faXNfYWJzdHJhY3QoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfYmFzZV9vZikKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc19zYW1lPFQsVT46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19jbGFzcykKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX2NvbnZlcnRpYmxlX3RvKQotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwPgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFKFQsVSkgKF9faXNfY29udmVydGlibGVfdG8oVCxVKSAmJiAhOjpuZG5ib29zdDo6aXNfYWJzdHJhY3Q8VT46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19lbnVtKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX3BvbHltb3JwaGljKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcihUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTihUKSBfX2hhc190cml2aWFsX21vdmVfYXNzaWduKFQpCi0jICAgZW5kaWYKLSMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIF9fYWxpZ25vZihUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSAmJiAhZGVmaW5lZChfX0dDQ1hNTF9fKSkpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NMQU5HKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfSU5URUwKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9UVF9PUFRTIHx8IGlzX3BvZDxUPjo6dmFsdWUKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfVFRfT1BUUwotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgX19pc191bmlvbihUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgX19pc19wb2QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgX19pc19lbXB0eShUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSAoKF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykgJiYgISA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKChfX2hhc190cml2aWFsX2NvcHkoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgJiYgISA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpICYmICEgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICEgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIChfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgKF9faGFzX25vdGhyb3dfY29uc3RydWN0b3IoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoKF9faGFzX25vdGhyb3dfY29weShUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKChfX2hhc19ub3Rocm93X2Fzc2lnbihUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19jb25zdDxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgX19pc19hYnN0cmFjdChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc19zYW1lPFQsVT46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBpZiAoIWRlZmluZWQodW5peCkgJiYgIWRlZmluZWQoX191bml4X18pKSB8fCBkZWZpbmVkKF9fTFA2NF9fKQotICAgICAgLy8gR0NDIHNvbWV0aW1lcyBsaWVzIGFib3V0IGFsaWdubWVudCByZXF1aXJlbWVudHMKLSAgICAgIC8vIG9mIHR5cGUgZG91YmxlIG9uIDMyLWJpdCB1bml4IHBsYXRmb3JtcywgdXNlIHRoZQotICAgICAgLy8gb2xkIGltcGxlbWVudGF0aW9uIGluc3RlYWQgaW4gdGhhdCBjYXNlOgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSBfX2FsaWdub2ZfXyhUKQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX2doc19fKSAmJiAoX19HSFNfVkVSU0lPTl9OVU1CRVIgPj0gNjAwKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIF9faXNfdW5pb24oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIF9faXNfcG9kKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIF9faXNfZW1wdHkoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIChfX2hhc190cml2aWFsX2NvcHkoVCkgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIChfX2hhc190cml2aWFsX2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSBfX2hhc19ub3Rocm93X2NvbnN0cnVjdG9yKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKF9faGFzX25vdGhyb3dfY29weShUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKF9faGFzX25vdGhyb3dfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgX19pc19hYnN0cmFjdChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc19zYW1lPFQsVT46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIF9fYWxpZ25vZl9fKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jIGlmIGRlZmluZWQoX19DT0RFR0VBUkNfXykKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBfX2lzX3VuaW9uKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSBfX2lzX3BvZChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTVBUWShUKSBfX2lzX2VtcHR5KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIChfX2hhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3IoVCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKF9faGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgKF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgKF9faGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RvcihUKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoX19oYXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdG9yKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoX19oYXNfbm90aHJvd19hc3NpZ24oVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19BQlNUUkFDVChUKSBfX2lzX2Fic3RyYWN0KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSAoX19pc19iYXNlX29mKFQsVSkgJiYgIWlzX3ZvaWQ8VD46OnZhbHVlICYmICFpc192b2lkPFU+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ0xBU1MoVCkgX19pc19jbGFzcyhUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DT05WRVJUSUJMRShULFUpIChfX2lzX2NvbnZlcnRpYmxlKFQsVSkgfHwgaXNfdm9pZDxVPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIGFsaWdub2YoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JTlRSSU5TSUNTX0hQUF9JTkNMVURFRAotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjMwMjljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQUJTVFJBQ1RfQ0xBU1NfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0FCU1RSQUNUX0NMQVNTX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8vLy8vLy8vMS8vLy8vLy8vLzIvLy8vLy8vLy8zLy8vLy8vLy8vNC8vLy8vLy8vLzUvLy8vLy8vLy82Ly8vLy8vLy8vNy8vLy8vLy8vLzgKLS8vIGlzX2Fic3RyYWN0X2NsYXNzLmhwcDoKLS8vCi0vLyAgKEMpIENvcHlyaWdodCAyMDAyIFJhbmkgU2hhcm9uaSAocmFuaV9zaGFyb25pQGhvdG1haWwuY29tKSBhbmQgUm9iZXJ0IFJhbWV5Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8gIAotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0vLwotCi0vLyBDb21waWxlIHR5cGUgZGlzY292ZXJ5IHdoZXRoZXIgZ2l2ZW4gdHlwZSBpcyBhYnN0cmFjdCBjbGFzcyBvciBub3QuCi0vLwotLy8gICBSZXF1aXJlcyBEUiAzMzcgdG8gYmUgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyCi0vLyAgIChodHRwOi8vYW51YmlzLmRrdXVnLmRrL2p0YzEvc2MyMi93ZzIxL2RvY3MvY3dnX2FjdGl2ZS5odG1sIzMzNykuCi0vLwotLy8KLS8vIEJlbGlldmVkIChKYW4gMjAwNCkgdG8gd29yayBvbjoKLS8vICAtIEdDQyAzLjQKLS8vICAtIFZDKysgNy4xCi0vLyAgLSBjb21waWxlcnMgd2l0aCBuZXcgRURHIGZyb250ZW5kIChJbnRlbCBDKysgNywgQ29tZWF1IDQuMy4yKQotLy8KLS8vIERvZXNuJ3Qgd29yayBvbjoKLS8vICAtIFZDKys2LCBWQysrNy4wIGFuZCBsZXNzCi0vLyAgLSBHQ0MgMy4zLlggYW5kIGxlc3MKLS8vICAtIEJvcmxhbmQgQysrIDYgYW5kIGxlc3MKLS8vICAgICAgCi0vLwotLy8gSGlzdG9yeToKLS8vICAtIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBSYW5pIFNoYXJvbmksIHNlZQotLy8gICAgaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3Vwcz9zZWxtPWRmODkzZGE2LjAyMDcxMTA2MTMuNzViMmZlOTAlNDBwb3N0aW5nLmdvb2dsZS5jb20KLS8vICAgIEF0IHRoaXMgdGltZSBzdXBwb3J0ZWQgYnkgRURHIChJbnRlbCBDKysgNywgQ29tZWF1IDQuMy4yKSBhbmQgVkM3LjEuCi0vLyAgLSBBZGFwdGVkIGFuZCBhZGRlZCBpbnRvIEJvb3N0LlNlcmlhbGl6YXRpb24gbGlicmFyeSBieSBSb2JlcnQgUmFtZXkgCi0vLyAgICAoc3RhcnRpbmcgd2l0aCBzdWJtaXNzaW9uICMxMCkuCi0vLyAgLSBKYW4gMjAwNDogR0NDIDMuNCBmaXhlZCB0byBzdXBwb3J0IERSMzM3IChHaW92YW5uaSBCYWpvKS4KLS8vICAtIEphbiAyMDA0OiBtb2RpZmllZCB0byBiZSBwYXJ0IG9mIEJvb3N0LlR5cGVUcmFpdHMgKFBhdmVsIFZvemVuaWxlaykuCi0vLyAgLSBOb3YgMjAwNDogQ2hyaXN0b3BoIEx1ZHdpZyBmb3VuZCB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IHdvcmsgd2l0aAotLy8gICAgICAgICAgICAgIHRlbXBsYXRlIHR5cGVzIGFuZCBnY2MtMy40IG9yIFZDNy4xLCBmaXggZHVlIHRvIENocmlzdG9waCBMdWR3aWcKLS8vICAgICAgICAgICAgICBhbmQgSm9obiBNYWRkb2NrLgotLy8gIC0gRGVjIDIwMDQ6IEFkZGVkIG5ldyBjb25maWcgbWFjcm8gTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1Qgd2hpY2ggY2F1c2VzIHRoZSB0ZW1wbGF0ZQotLy8gICAgICAgICAgICAgIHRvIGRlZ3JhZGUgZ3JhY2VmdWxseSwgcmF0aGVyIHRoYW4gdHJhc2ggdGhlIGNvbXBpbGVyIChKb2huIE1hZGRvY2spLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19BQlNUUkFDVAotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpZmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcD4KLSNlbmRpZgotI2VuZGlmCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfSVNfQUJTVFJBQ1QKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2Fic3RyYWN0X2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkpOwotfTsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUKQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpc19hYnN0cmFjdF9pbXAyCi17Ci0gICAvLyBEZWR1Y3Rpb24gZmFpbHMgaWYgVCBpcyB2b2lkLCBmdW5jdGlvbiB0eXBlLCAKLSAgIC8vIHJlZmVyZW5jZSB0eXBlICgxNC44LjIvMilvciBhbiBhYnN0cmFjdCBjbGFzcyB0eXBlIAotICAgLy8gYWNjb3JkaW5nIHRvIHJldmlldyBzdGF0dXMgaXNzdWUgIzMzNwotICAgLy8KLSAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnKFUgKCopWzFdKTsKLSAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZyguLi4pOwotICAgLy8KLSAgIC8vIFQgbXVzdCBiZSBhIGNvbXBsZXRlIHR5cGUsIGZ1cnRoZXIgaWYgVCBpcyBhIHRlbXBsYXRlIHRoZW4KLSAgIC8vIGl0IG11c3QgYmUgaW5zdGFudGlhdGVkIGluIG9yZGVyIGZvciB1cyB0byBnZXQgdGhlIHJpZ2h0IGFuc3dlcjoKLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihUKSAhPSAwKTsKLQotICAgLy8gR0NDMiB3b24ndCBldmVuIHBhcnNlIHRoaXMgdGVtcGxhdGUgaWYgd2UgZW1iZWQgdGhlIGNvbXB1dGF0aW9uCi0gICAvLyBvZiBzMSBpbiB0aGUgY29tcHV0YXRpb24gb2YgdmFsdWUuCi0jaWZkZWYgX19HTlVDX18KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgczEgPSBzaXplb2YoaXNfYWJzdHJhY3RfaW1wMjxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnPFQ+KDApKSk7Ci0jZWxzZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KQotI2VuZGlmCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHMxID0gc2l6ZW9mKGNoZWNrX3NpZzxUPigwKSkpOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2VuZGlmCi0gICAgCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgIChzMSA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgdj4KLXN0cnVjdCBpc19hYnN0cmFjdF9zZWxlY3QKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19hYnN0cmFjdF9pbXAyPFQ+IHR5cGU7Ci0gICB9OwotfTsKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfYWJzdHJhY3Rfc2VsZWN0PGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGZhbHNlX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19hYnN0cmFjdF9pbXAKLXsKLSAgIHR5cGVkZWYgaXNfYWJzdHJhY3Rfc2VsZWN0PCA6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWU+IHNlbGVjdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPFQ+IGJpbmRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZGVyOjp0eXBlIHR5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHR5cGU6OnZhbHVlKTsKLX07Ci0KLSNlbmRpZgotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Fic3RyYWN0LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hYnN0cmFjdF9pbXA8VD46OnZhbHVlKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYWJzdHJhY3QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvbHltb3JwaGljX2ltcDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vTkROQk9PU1RfVFRfSVNfQUJTVFJBQ1RfQ0xBU1NfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmNzAxNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19BUklUSE1FVElDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19BUklUSE1FVElDX0hQUF9JTkNMVURFRAotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoX19DT0RFR0VBUkNfXykKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYXJpdGhtZXRpY19pbXBsCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwgCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mbG9hdDxUPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsgCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSNlbmRpZgotCi0vLyogaXMgYSB0eXBlIFQgYW4gYXJpdGhtZXRpYyB0eXBlIGRlc2NyaWJlZCBpbiB0aGUgc3RhbmRhcmQgKDMuOS4xcDgpCi0jaWYgZGVmaW5lZChfX0NPREVHRUFSQ19fKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hcml0aG1ldGljLFQsX19pc19hcml0aG1ldGljKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYXJpdGhtZXRpYyxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYXJpdGhtZXRpY19pbXBsPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQVJJVEhNRVRJQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZmY2NTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0vLyBTb21lIGZpeGVzIGZvciBpc19hcnJheSBhcmUgYmFzZWQgb24gYSBuZXdzZ3JvdXAgcG9zdGluZyBieSBKb25hdGhhbiBMdW5kcXVpc3QuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQVJSQVlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FycmF5LFQsX19pc19hcnJheShUKSkKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FycmF5LFQsZmFsc2UpCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLGlzX2FycmF5LFRbTl0sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4saXNfYXJyYXksVCBjb25zdFtOXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixpc19hcnJheSxUIHZvbGF0aWxlW05dLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLGlzX2FycmF5LFQgY29uc3Qgdm9sYXRpbGVbTl0sdHJ1ZSkKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfYXJyYXksVFtdLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19hcnJheSxUIGNvbnN0W10sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2FycmF5LFQgdm9sYXRpbGVbXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfYXJyYXksVCBjb25zdCB2b2xhdGlsZVtdLHRydWUpCi0jZW5kaWYKLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp3cmFwOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IFQoKiBpc19hcnJheV90ZXN0ZXIxKHdyYXA8VD4pICkod3JhcDxUPik7Ci1jaGFyIE5ETkJPT1NUX1RUX0RFQ0wgaXNfYXJyYXlfdGVzdGVyMSguLi4pOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVD4gbm9fdHlwZSBpc19hcnJheV90ZXN0ZXIyKFQoKikod3JhcDxUPikpOwoteWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19hcnJheV90ZXN0ZXIyKC4uLik7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19hcnJheV9pbXBsCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hcnJheV90ZXN0ZXIyKAotICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hcnJheV90ZXN0ZXIxKAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp3cmFwPFQ+KCkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICkpID09IDEKLSAgICApOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FycmF5LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hcnJheV9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYzM1YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFJhbmkgU2hhcm9uaSAyMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAKLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQkFTRV9BTkRfREVSSVZFRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQkFTRV9BTkRfREVSSVZFRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19CQVNFX09GCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX0JBU0VfT0YKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQyAsIDw9IDB4NTQwKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDMpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBFREcgdmVyc2lvbiBudW1iZXIgaXMgYSBsb3dlciBlc3RpbWF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgbm90IGN1cnJlbnRseSBrbm93biB3aGljaCBFREcgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGFjdGx5IGZpeGVzIHRoZSBwcm9ibGVtLgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1UaGlzIHZlcnNpb24gZGV0ZWN0cyBhbWJpZ3VvdXMgYmFzZSBjbGFzc2VzIGFuZCBwcml2YXRlIGJhc2UgY2xhc3NlcwotY29ycmVjdGx5LCBhbmQgd2FzIGRldmlzZWQgYnkgUmFuaSBTaGFyb25pLgotCi1FeHBsYW5hdGlvbiBieSBUZXJqZSBTbGV0dGVibyBhbmQgUmFuaSBTaGFyb25pLgotCi1MZXQncyB0YWtlIHRoZSBtdWx0aXBsZSBiYXNlIGNsYXNzIGJlbG93IGFzIGFuIGV4YW1wbGUsIGFuZCB0aGUgZm9sbG93aW5nCi13aWxsIGFsc28gc2hvdyB3aHkgdGhlcmUncyBub3QgYSBwcm9ibGVtIHdpdGggcHJpdmF0ZSBvciBhbWJpZ3VvdXMgYmFzZQotY2xhc3M6Ci0KLXN0cnVjdCBCIHt9Owotc3RydWN0IEIxIDogQiB7fTsKLXN0cnVjdCBCMiA6IEIge307Ci1zdHJ1Y3QgRCA6IHByaXZhdGUgQjEsIHByaXZhdGUgQjIge307Ci0KLWlzX2Jhc2VfYW5kX2Rlcml2ZWQ8QiwgRD46OnZhbHVlOwotCi1GaXJzdCwgc29tZSB0ZXJtaW5vbG9neToKLQotU0MgIC0gU3RhbmRhcmQgY29udmVyc2lvbgotVURDIC0gVXNlci1kZWZpbmVkIGNvbnZlcnNpb24KLQotQSB1c2VyLWRlZmluZWQgY29udmVyc2lvbiBzZXF1ZW5jZSBjb25zaXN0cyBvZiBhbiBTQywgZm9sbG93ZWQgYnkgYW4gVURDLAotZm9sbG93ZWQgYnkgYW5vdGhlciBTQy4gRWl0aGVyIFNDIG1heSBiZSB0aGUgaWRlbnRpdHkgY29udmVyc2lvbi4KLQotV2hlbiBwYXNzaW5nIHRoZSBkZWZhdWx0LWNvbnN0cnVjdGVkIEhvc3Qgb2JqZWN0IHRvIHRoZSBvdmVybG9hZGVkIGNoZWNrX3NpZygpCi1mdW5jdGlvbnMgKGluaXRpYWxpemF0aW9uIDguNS8xNC80LzMpLCB3ZSBoYXZlIHNldmVyYWwgdmlhYmxlIGltcGxpY2l0Ci1jb252ZXJzaW9uIHNlcXVlbmNlczoKLQotRm9yICJzdGF0aWMgbm9fdHlwZSBjaGVja19zaWcoQiBjb25zdCB2b2xhdGlsZSAqLCBpbnQpIiB3ZSBoYXZlIHRoZSBjb252ZXJzaW9uCi1zZXF1ZW5jZXM6Ci0KLUMgLT4gQyBjb25zdCAoU0MgLSBRdWFsaWZpY2F0aW9uIEFkanVzdG1lbnQpIC0+IEIgY29uc3Qgdm9sYXRpbGUqIChVREMpCi1DIC0+IEQgY29uc3Qgdm9sYXRpbGUqIChVREMpIC0+IEIxIGNvbnN0IHZvbGF0aWxlKiAvIEIyIGNvbnN0IHZvbGF0aWxlKiAtPgotICAgICBCIGNvbnN0IHZvbGF0aWxlKiAoU0MgLSBDb252ZXJzaW9uKQotCi1Gb3IgInN0YXRpYyB5ZXNfdHlwZSBjaGVja19zaWcoRCBjb25zdCB2b2xhdGlsZSAqLCBUKSIgd2UgaGF2ZSB0aGUgY29udmVyc2lvbgotc2VxdWVuY2U6Ci0KLUMgLT4gRCBjb25zdCB2b2xhdGlsZSogKFVEQykKLQotQWNjb3JkaW5nIHRvIDEzLjMuMy4xLzQsIGluIGNvbnRleHQgb2YgdXNlci1kZWZpbmVkIGNvbnZlcnNpb24gb25seSB0aGUKLXN0YW5kYXJkIGNvbnZlcnNpb24gc2VxdWVuY2UgaXMgY29uc2lkZXJlZCB3aGVuIHNlbGVjdGluZyB0aGUgYmVzdCB2aWFibGUKLWZ1bmN0aW9uLCBzbyBpdCBvbmx5IGNvbnNpZGVycyB1cCB0byB0aGUgdXNlci1kZWZpbmVkIGNvbnZlcnNpb24uIEZvciB0aGUKLWZpcnN0IGZ1bmN0aW9uIHRoaXMgbWVhbnMgY2hvb3NpbmcgYmV0d2VlbiBDIC0+IEMgY29uc3QgYW5kIEMgLT4gQywgYW5kIGl0Ci1jaG9vc2VzIHRoZSBsYXR0ZXIsIGJlY2F1c2UgaXQncyBhIHByb3BlciBzdWJzZXQgKDEzLjMuMy4yLzMvMikgb2YgdGhlCi1mb3JtZXIuIFRoZXJlZm9yZSwgd2UgaGF2ZToKLQotQyAtPiBEIGNvbnN0IHZvbGF0aWxlKiAoVURDKSAtPiBCMSBjb25zdCB2b2xhdGlsZSogLyBCMiBjb25zdCB2b2xhdGlsZSogLT4KLSAgICAgQiBjb25zdCB2b2xhdGlsZSogKFNDIC0gQ29udmVyc2lvbikKLUMgLT4gRCBjb25zdCB2b2xhdGlsZSogKFVEQykKLQotSGVyZSwgdGhlIHByaW5jaXBsZSBvZiB0aGUgInNob3J0ZXN0IHN1YnNlcXVlbmNlIiBhcHBsaWVzIGFnYWluLCBhbmQgaXQKLWNob29zZXMgQyAtPiBEIGNvbnN0IHZvbGF0aWxlKi4gVGhpcyBzaG93cyB0aGF0IGl0IGRvZXNuJ3QgZXZlbiBuZWVkIHRvCi1jb25zaWRlciB0aGUgbXVsdGlwbGUgcGF0aHMgdG8gQiwgb3IgYWNjZXNzaWJpbGl0eSwgYXMgdGhhdCBwb3NzaWJpbGl0eSBpcwotZWxpbWluYXRlZCBiZWZvcmUgaXQgY291bGQgcG9zc2libHkgY2F1c2UgYW1iaWd1aXR5IG9yIGFjY2VzcyB2aW9sYXRpb24uCi0KLUlmIEQgaXMgbm90IGRlcml2ZWQgZnJvbSBCLCBpdCBoYXMgdG8gY2hvb3NlIGJldHdlZW4gQyAtPiBDIGNvbnN0IC0+IEIgY29uc3QKLXZvbGF0aWxlKiBmb3IgdGhlIGZpcnN0IGZ1bmN0aW9uLCBhbmQgQyAtPiBEIGNvbnN0IHZvbGF0aWxlKiBmb3IgdGhlIHNlY29uZAotZnVuY3Rpb24sIHdoaWNoIGFyZSBqdXN0IGFzIGdvb2QgKGJvdGggcmVxdWlyZXMgYSBVREMsIDEzLjMuMy4yKSwgaGFkIGl0IG5vdAotYmVlbiBmb3IgdGhlIGZhY3QgdGhhdCAic3RhdGljIG5vX3R5cGUgY2hlY2tfc2lnKEIgY29uc3Qgdm9sYXRpbGUgKiwgaW50KSIgaXMKLW5vdCB0ZW1wbGF0ZWQsIHdoaWNoIG1ha2VzIEMgLT4gQyBjb25zdCAtPiBCIGNvbnN0IHZvbGF0aWxlKiB0aGUgYmVzdCBjaG9pY2UKLSgxMy4zLjMvMS80KSwgcmVzdWx0aW5nIGluICJubyIuCi0KLUFsc28sIGlmIEhvc3Q6Om9wZXJhdG9yIEIgY29uc3Qgdm9sYXRpbGUqIGhhZG4ndCBiZWVuIGNvbnN0LCB0aGUgdHdvCi1jb252ZXJzaW9uIHNlcXVlbmNlcyBmb3IgInN0YXRpYyBub190eXBlIGNoZWNrX3NpZyhCIGNvbnN0IHZvbGF0aWxlICosIGludCkiLCBpbgotdGhlIGNhc2Ugd2hlcmUgRCBpcyBkZXJpdmVkIGZyb20gQiwgd291bGQgaGF2ZSBiZWVuIGFtYmlndW91cy4KLQotU2VlIGFsc28KLWh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cHM/c2VsbT1kZjg5M2RhNi4wMzAxMjgwODU5LjUyMjA4MWY3JTQwcG9zdGluZy4KLWdvb2dsZS5jb20gYW5kIGxpbmtzIHRoZXJlaW4uCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGJkX2hlbHBlcgotewotICAgLy8KLSAgIC8vIFRoaXMgVkM3LjEgc3BlY2lmaWMgd29ya2Fyb3VuZCBzdG9wcyB0aGUgY29tcGlsZXIgZnJvbSBnZW5lcmF0aW5nCi0gICAvLyBhbiBpbnRlcm5hbCBjb21waWxlciBlcnJvciB3aGVuIGNvbXBpbGluZyB3aXRoIC92bWcgKHRoYW5rcyB0bwotICAgLy8gQWxla3NleSBHdXJ0b3ZveSBmb3IgZmlndXJpbmcgb3V0IHRoZSB3b3JrYXJvdW5kKS4KLSAgIC8vCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZyhEIGNvbnN0IHZvbGF0aWxlICosIFQpOwotICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSAgY2hlY2tfc2lnKEIgY29uc3Qgdm9sYXRpbGUgKiwgaW50KTsKLSNlbHNlCi0gICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWcoRCBjb25zdCB2b2xhdGlsZSAqLCBsb25nKTsKLSAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgIGNoZWNrX3NpZyhCIGNvbnN0IHZvbGF0aWxlICogY29uc3QmLCBpbnQpOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDIKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotICAgIC8vCi0gICAgLy8gTWF5IHNpbGVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyB3aXRoIGluY29tcGxldGUgdHlwZXMKLSAgICAvLyB1bmxlc3Mgd2UgdHJhcCB0aGVtIGhlcmU6Ci0gICAgLy8KLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihCKSAhPSAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihEKSAhPSAwKTsKLQotICAgIHN0cnVjdCBIb3N0Ci0gICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0gICAgICAgIG9wZXJhdG9yIEIgY29uc3Qgdm9sYXRpbGUgKigpIGNvbnN0OwotI2Vsc2UKLSAgICAgICAgb3BlcmF0b3IgQiBjb25zdCB2b2xhdGlsZSAqIGNvbnN0JigpIGNvbnN0OwotI2VuZGlmCi0gICAgICAgIG9wZXJhdG9yIEQgY29uc3Qgdm9sYXRpbGUgKigpOwotICAgIH07Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoYmRfaGVscGVyPEIsRD46OmNoZWNrX3NpZyhIb3N0KCksIDApKSA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19OwotCi0jZWxzZQotCi0vLwotLy8gYnJva2VuIHZlcnNpb246Ci0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwyCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPEQqLEIqPjo6dmFsdWUpKTsKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfQlJPS0VOX0lTX0JBU0VfQU5EX0RFUklWRUQKLQotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDMKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBpYzEsIGJvb2wgaWMyLCBib29sIGlzcz4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX3NlbGVjdAotewotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDM8VCxVPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9zZWxlY3Q8dHJ1ZSx0cnVlLGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDI8VCxVPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PEI+Ojp0eXBlIG5jdkI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8RD46OnR5cGUgbmN2RDsKLQotICAgIHR5cGVkZWYgaXNfYmFzZV9hbmRfZGVyaXZlZF9zZWxlY3Q8Ci0gICAgICAgOjpuZG5ib29zdDo6aXNfY2xhc3M8Qj46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPEQ+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPG5jdkIsbmN2RD46OnZhbHVlPiBzZWxlY3RvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8bmN2QixuY3ZEPiBiaW5kZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgYm91bmRfdHlwZTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGJvdW5kX3R5cGU6OnZhbHVlKTsKLX07Ci0jZWxzZQotdGVtcGxhdGUgPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8Qj46OnR5cGUgbmN2QjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxEPjo6dHlwZSBuY3ZEOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKE5ETkJPT1NUX0lTX0JBU0VfT0YoQixEKSAmJiAhIDo6bmRuYm9vc3Q6OmlzX3NhbWU8bmN2QixuY3ZEPjo6dmFsdWUpKTsKLX07Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKAotICAgICAgaXNfYmFzZV9hbmRfZGVyaXZlZAotICAgICwgQmFzZQotICAgICwgRGVyaXZlZAotICAgICwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsPEJhc2UsRGVyaXZlZD46OnZhbHVlKQotICAgICkKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2VfYW5kX2Rlcml2ZWQsQmFzZSYsRGVyaXZlZCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9hbmRfZGVyaXZlZCxCYXNlLERlcml2ZWQmLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX2FuZF9kZXJpdmVkLEJhc2UmLERlcml2ZWQmLGZhbHNlKQotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgQmFzZSxpc19iYXNlX2FuZF9kZXJpdmVkLEJhc2UsQmFzZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQkFTRV9BTkRfREVSSVZFRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2IzYWE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFJhbmkgU2hhcm9uaSAyMDAzLTIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotIAotI2lmbmRlZiBORE5CT09TVF9UVF9JU19CQVNFX09GX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19CQVNFX09GX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgbmFtZXNwYWNlIGRldGFpbHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBCLCBjbGFzcyBEPgotICAgICAgc3RydWN0IGlzX2Jhc2Vfb2ZfaW1wCi0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8Qj46OnR5cGUgbmN2QjsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxEPjo6dHlwZSBuY3ZEOwotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPCAgICAgIAotICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsPG5jdkIsbmN2RD46OnZhbHVlKSwKLSAgICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgOjpuZG5ib29zdDo6aXNfc2FtZTxuY3ZCLG5jdkQ+Ojp2YWx1ZSwgOjpuZG5ib29zdDo6aXNfY2xhc3M8bmN2Qj46OnZhbHVlPjo6dmFsdWUpPjo6dmFsdWUpKTsKLSAgICAgIH07Ci0gICB9Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoCi0gICAgICBpc19iYXNlX29mCi0gICAgLCBCYXNlCi0gICAgLCBEZXJpdmVkCi0gICAgLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19iYXNlX29mX2ltcDxCYXNlLCBEZXJpdmVkPjo6dmFsdWUpKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9vZixCYXNlJixEZXJpdmVkLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX29mLEJhc2UsRGVyaXZlZCYsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2Vfb2YsQmFzZSYsRGVyaXZlZCYsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0JBU0VfQU5EX0RFUklWRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODg1ZDVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC0yMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0NMQVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19DTEFTU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0NMQVNTCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9JU19DTEFTUwotCi0jaWZkZWYgX19FREdfVkVSU0lPTl9fCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9JU19DTEFTUwotI2lmZGVmIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0KLS8vIFRoaXMgaXMgYWN0dWFsbHkgdGhlIGNvbmZvcm1pbmcgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3Mgd2l0aAotLy8gYWJzdHJhY3QgY2xhc3Nlcy4gIEhvd2V2ZXIsIGVub3VnaCBjb21waWxlcnMgaGF2ZSB0cm91YmxlIHdpdGgKLS8vIGl0IHRoYXQgbW9zdCB3aWxsIHVzZSB0aGUgb25lIGluCi0vLyBuZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcC4gVGhpcyBpbXBsZW1lbnRhdGlvbgotLy8gYWN0dWFsbHkgd29ya3Mgd2l0aCBWQzcuMCwgYnV0IG90aGVyIGludGVyYWN0aW9ucyBzZWVtIHRvIGZhaWwKLS8vIHdoZW4gd2UgdXNlIGl0LgotCi0vLyBpc19jbGFzczw+IG1ldGFmdW5jdGlvbiBkdWUgdG8gUGF1bCBNZW5zb25pZGVzCi0vLyAobGVhdmluZ3NAYXR0YmkuY29tKS4gRm9yIG1vcmUgZGV0YWlsczoKLS8vIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cHM/aGw9ZW4mc2VsbT0wMDAwMDFjMWNjODMlMjRlMTU0ZDVlMCUyNDc3NzJlNTBjJTQwYzE2MTU1MGEmcm51bT0xCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgICYmICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLQotdGVtcGxhdGUgPGNsYXNzIFU+IDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jbGFzc190ZXN0ZXIodm9pZChVOjoqKSh2b2lkKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgVT4gOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY2xhc3NfdGVzdGVyKC4uLik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX2ltcGwKLXsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIHNpemVvZihpc19jbGFzc190ZXN0ZXI8VD4oMCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jbGFzc190ZXN0ZXIodm9pZChVOjoqKSh2b2lkKSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jbGFzc190ZXN0ZXIoLi4uKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIHNpemVvZihpc19jbGFzc190ZXN0ZXI8VD4oMCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLX07Ci0KLSNlbmRpZgotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19pbXBsCi17Ci0jICAgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NjYWxhcjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotIyAgIGVsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NjYWxhcjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotIyAgIGVuZGlmCi19OwotCi0jIGVuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0jIGVsc2UgLy8gTkROQk9PU1RfSVNfQ0xBU1MKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JU19DTEFTUyhUKSk7Ci19OwotIyBlbmRpZiAvLyBORE5CT09TVF9JU19DTEFTUwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotIyBpZmRlZiBfX0VER19WRVJTSU9OX18KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICBpc19jbGFzcyxULCBuZG5ib29zdDo6ZGV0YWlsOjppc19jbGFzc19pbXBsPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSkKLSMgZWxzZSAKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY2xhc3MsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NsYXNzX2ltcGw8VD46OnZhbHVlKQotIyBlbmRpZgotICAgIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0NMQVNTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wbGV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcGxleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZDk3MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wbGV4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA3LiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ09NUExFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQ09NUExFWF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxjb21wbGV4PgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbHsKLQotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Zyb21fdGVzdGVyCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlzX2NvbnZlcnRpYmxlX2Zyb21fdGVzdGVyKGNvbnN0IHN0ZDo6Y29tcGxleDxUPiYpOwotfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NvbXBsZXgsVCwoOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8VCwgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY29udmVydGlibGVfZnJvbV90ZXN0ZXI+Ojp2YWx1ZSkpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RUX0lTX0NPTVBMRVhfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjM0YTllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19DT01QT1VORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQ09NUE9VTkRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY29tcG91bmRfaW1wbAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPFQ+Ojp2YWx1ZQotICAgICAgID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29tcG91bmQsVCxfX2lzX2NvbXBvdW5kKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29tcG91bmQsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbXBvdW5kX2ltcGw8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19DT01QT1VORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOWI3NTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCBpc19zYW1lLCAKLS8vICAgIGlzX21lbWJlcl9wb2ludGVyIGJhc2VkIG9uIHRoZSBTaW11bGF0ZWQgUGFydGlhbCBTcGVjaWFsaXphdGlvbiB3b3JrIAotLy8gICAgb2YgTWF0IE1hcmN1cyBhbmQgSmVzc2UgSm9uZXMuIFNlZSAgaHR0cDovL29wZW5zb3VyY2UuYWRvYmUuY29tIG9yIAotLy8gICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYm9vc3QvbWVzc2FnZS81NDQxIAotLy8gICAgU29tZSB3b3JrYXJvdW5kcyBpbiBoZXJlIHVzZSBpZGVhcyBzdWdnZXN0ZWQgZnJvbSAiR2VuZXJpYzxQcm9ncmFtbWluZz46IAotLy8gICAgTWFwcGluZ3MgYmV0d2VlbiBUeXBlcyBhbmQgVmFsdWVzIiAKLS8vICAgIGJ5IEFuZHJlaSBBbGV4YW5kcmVzY3UgKHNlZSBodHRwOi8vd3d3LmN1ai5jb20vZXhwZXJ0cy8xODEwL2FsZXhhbmRyLmh0bWwpLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ09OU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0NPTlNUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jICAgaWZkZWYgX19HTlVDX18KLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBlbmRpZgotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcD4KLSMgICBlbmRpZgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb25zdCxULF9faXNfY29uc3QoVCkpCi0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2NvbnN0X3J2YWx1ZV9maWx0ZXIKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTQwMCkKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6Y3ZfdHJhaXRzX2ltcDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2JvdW5kczxUPjo6dHlwZSo+Ojppc19jb25zdCk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6ZGV0YWlsOjpjdl90cmFpdHNfaW1wPFQqPjo6aXNfY29uc3QpOwotI2VuZGlmCi19OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfY29uc3RfcnZhbHVlX2ZpbHRlcjxUJiY+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotI2VuZGlmCi19Ci0KLS8vKiBpcyBhIHR5cGUgVCAgZGVjbGFyZWQgY29uc3QgLSBpc19jb25zdDxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb25zdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29uc3RfcnZhbHVlX2ZpbHRlcjxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUJixmYWxzZSkKLQotI2lmICBkZWZpbmVkKE5ETkJPT1NUX0lMTEVHQUxfQ1ZfUkVGRVJFTkNFUykKLS8vIHRoZXNlIGFyZSBpbGxlZ2FsIHNwZWNpYWxpc2F0aW9uczsgY3YtcXVhbGlmaWVzIGFwcGxpZWQgdG8KLS8vIHJlZmVyZW5jZXMgaGF2ZSBubyBlZmZlY3QgYWNjb3JkaW5nIHRvIFs4LjMuMnAxXSwKLS8vIEMrKyBCdWlsZGVyIHJlcXVpcmVzIHRoZW0gdGhvdWdoIGFzIGl0IHRyZWF0cyBjdi1xdWFsaWZpZWQKLS8vIHJlZmVyZW5jZXMgYXMgZGlzdGluY3QgdHlwZXMuLi4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2NvbnN0LFQmIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCYgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUJiBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykKLS8vIHNwZWNpYWwgY2FzZSBmb3IgZ2NjIHdoZXJlIGlsbGVnYWxseSBjdi1xdWFsaWZpZWQgcmVmZXJlbmNlIHR5cGVzIGNhbiBiZQotLy8gZ2VuZXJhdGVkIGluIHNvbWUgY29ybmVyIGNhc2VzOgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCBjb25zdCwhKDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCB2b2xhdGlsZSBjb25zdCwhKDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpKQotI2VuZGlmCi0KLSNlbHNlCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZTsKLQoteWVzX3R5cGUgaXNfY29uc3RfdGVzdGVyKGNvbnN0IHZvbGF0aWxlIHZvaWQqKTsKLW5vX3R5cGUgaXNfY29uc3RfdGVzdGVyKHZvbGF0aWxlIHZvaWQgKik7Ci0KLXRlbXBsYXRlIDxib29sIGlzX3JlZiwgYm9vbCBhcnJheT4KLXN0cnVjdCBpc19jb25zdF9oZWxwZXIKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZmFsc2VfcmVzdWx0Ci17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2NvbnN0X2hlbHBlcjxmYWxzZSxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUKiB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc19jb25zdF90ZXN0ZXIodCkpCi0gICAgICAgICAgICApKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19jb25zdF9oZWxwZXI8ZmFsc2UsdHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUIHQ7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgIHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjp5ZXNfdHlwZSkgPT0gc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnN0X3Rlc3RlcigmdCkpCi0gICAgICAgICAgICApKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY29uc3RfaW1wbAotICAgIDogcHVibGljIGlzX2NvbnN0X2hlbHBlcjwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfY29uc3Qsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfY29uc3Qsdm9pZCBjb25zdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19jb25zdCx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19jb25zdCx2b2lkIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vKiBpcyBhIHR5cGUgVCAgZGVjbGFyZWQgY29uc3QgLSBpc19jb25zdDxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb25zdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29uc3RfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19DT05TVF9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYyNjMyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDAwIEpvaG4gTWFkZG9jayAoam9obkBqb2hubWFkZG9jay5jby51aykKLS8vIENvcHlyaWdodCAyMDAwIEplcmVteSBTaWVrIChqc2lla0Bsc2MubmQuZWR1KQotLy8gQ29weXJpZ2h0IDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotCi0jaWYgZGVmaW5lZChfX01XRVJLU19fKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9JU19DT05WRVJUSUJMRQotCi0vLyBzaG91bGQgYmUgYWx3YXlzIHRoZSBsYXN0ICNpbmNsdWRlIGRpcmVjdGl2ZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSVNfQ09OVkVSVElCTEUKLQotLy8gaXMgb25lIHR5cGUgY29udmVydGlibGUgdG8gYW5vdGhlcj8KLS8vCi0vLyB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGlzX2NvbnZlcnRpYmxlCi0vLyB0ZW1wbGF0ZSwgYWxtb3N0IGV2ZXJ5IGNvbXBpbGVyIHNlZW1zIHRvIHJlcXVpcmUgaXRzCi0vLyBvd24gdmVyc2lvbi4KLS8vCi0vLyBUaGFua3MgdG8gQW5kcmVpIEFsZXhhbmRyZXNjdSBmb3IgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCi0vLyBjb252ZXJzaW9uIGRldGVjdGlvbiB0ZWNobmlxdWUhCi0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gTVMgc3BlY2lmaWMgdmVyc2lvbjoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPD0gMTMwMCkKLQotLy8gVGhpcyB3b3JrYXJvdW5kIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgd2hlbiBGcm9tIGlzIHZvaWQKLS8vIHdoaWNoIGlzIG5vcm1hbGx5IHRha2VuIGNhcmUgb2YgYnkgdGhlIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLS8vIG9mIHRoZSBpc19jb252ZXJ0aWJsZSB0eXBlbmFtZS4KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRnJvbSA+Ci1zdHJ1Y3QgZG9lc19jb252ZXJzaW9uX2V4aXN0Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFRvID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soLi4uKTsKLSAgICAgICAgc3RhdGljIHllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8pOwotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgIF9tX2Zyb207Ci0gICAgICAgIGVudW0geyB2YWx1ZSA9IHNpemVvZiggX21fY2hlY2soX21fZnJvbSkgKSA9PSBzaXplb2YoeWVzX3R5cGUpIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkb2VzX2NvbnZlcnNpb25fZXhpc3Q8dm9pZD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVG8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgZW51bSB7IHZhbHVlID0gOjpuZG5ib29zdDo6aXNfdm9pZDxUbz46OnZhbHVlIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi0gICAgOiBwdWJsaWMgZG9lc19jb252ZXJzaW9uX2V4aXN0PEZyb20+Ojp0ZW1wbGF0ZSByZXN1bHRfPFRvPgotewotfTsKLQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDU2MCkKLS8vCi0vLyBzcGVjaWFsIHZlcnNpb24gZm9yIEJvcmxhbmQgY29tcGlsZXJzCi0vLyB0aGlzIHZlcnNpb24gYnJlYWtzIHdoZW4gdXNlZCBmb3Igc29tZQotLy8gVURUIGNvbnZlcnNpb25zOgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsCi17Ci0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwNzQKLSAgICAvLyBUaGlzIHdvcmthcm91bmQgZm9yIEJvcmxhbmQgYnJlYWtzIHRoZSBFREcgQysrIGZyb250ZW5kLAotICAgIC8vIHNvIHdlIG9ubHkgdXNlIGl0IGZvciBCb3JsYW5kLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2hlY2tlcgotICAgIHsKLSAgICAgICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soLi4uKTsKLSAgICAgICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFQpOwotICAgIH07Ci0KLSAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgIF9tX2Zyb207Ci0gICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPSBzaXplb2YoIGNoZWNrZXI8VG8+OjpfbV9jaGVjayhfbV9mcm9tKSApCi0gICAgICAgID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpOwotI3ByYWdtYSBvcHRpb24gcG9wCi19OwotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotLy8gc3BlY2lhbCB2ZXJzaW9uIGZvciBnY2MgY29tcGlsZXIgKyByZWNlbnQgQm9ybGFuZCB2ZXJzaW9ucwotLy8gbm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgcGFzcyBVRFQncyB0aHJvdWdoICguLi4pCi0KLXN0cnVjdCBhbnlfY29udmVyc2lvbgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCB2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24odm9sYXRpbGUgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihUJik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGNoZWNrZXIKLXsKLSAgICBzdGF0aWMgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIF9tX2NoZWNrKGFueV9jb252ZXJzaW9uIC4uLik7Ci0gICAgc3RhdGljIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgX21fY2hlY2soVCwgaW50KTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBsdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIHJ2YWx1ZV90eXBlOwotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA2KSkpCi0gICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQotICAgICAgICBzaXplb2YoIG5kbmJvb3N0OjpkZXRhaWw6OmNoZWNrZXI8VG8+OjpfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDApICkKLSAgICAgICAgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk7Ci0jZWxzZQotICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBuZG5ib29zdDo6ZGV0YWlsOjpjaGVja2VyPFRvPjo6X21fY2hlY2soX21fZnJvbSwgMCkgKQotICAgICAgICA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKTsKLSNlbmRpZgotfTsKLQotI2VsaWYgKGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiAoX19FREdfVkVSU0lPTl9fID49IDI0NSkgJiYgIWRlZmluZWQoX19JQ0wpKSBcCi0gICAgICB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpCi0vLwotLy8gVGhpcyBpcyAqYWxtb3N0KiBhbiBpZGVhbCB3b3JsZCBpbXBsZW1lbnRhdGlvbiBhcyBpdCBkb2Vzbid0IHJlbHkKLS8vIG9uIHVuZGVmaW5lZCBiZWhhdmlvdXIgYnkgcGFzc2luZyBVRFQncyB0aHJvdWdoICguLi4pLgotLy8gVW5mb3J0dW5hdGVseSBpdCBkb2Vzbid0IHF1aXRlIHBhc3MgYWxsIHRoZSB0ZXN0cyBmb3IgbW9zdCBjb21waWxlcnMgKHNpZ2guLi4pCi0vLyBFbmFibGUgdGhpcyBmb3IgeW91ciBjb21waWxlciBpZiBpc19jb252ZXJ0aWJsZV90ZXN0LmNwcCB3aWxsIGNvbXBpbGUgaXQuLi4KLS8vCi0vLyBOb3RlIHdlIGRvIG5vdCBlbmFibGUgdGhpcyBmb3IgVkM3LjEsIGJlY2F1c2UgZXZlbiB0aG91Z2ggaXQgcGFzc2VzIGFsbCB0aGUKLS8vIHR5cGVfdHJhaXRzIHRlc3RzIGl0IGlzIGtub3duIHRvIGNhdXNlIHByb2JsZW1zIHdoZW4gaW5zdGFudGlhdGlvbiBvY2N1cnMKLS8vIGRlZXAgd2l0aGluIHRoZSBpbnN0YW50aWF0aW9uIHRyZWUgOi0oCi0vLwotc3RydWN0IGFueV9jb252ZXJzaW9uCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3QgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbih2b2xhdGlsZSBUJik7Ci0gICAgLy8gd2UgbmVlZCB0aGlzIGNvbnN0cnVjdG9yIHRvIGNhdGNoIHJlZmVyZW5jZXMgdG8gZnVuY3Rpb25zCi0gICAgLy8gKHdoaWNoIGNhbiBub3QgYmUgY3YtcXVhbGlmaWVkKToKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oVCYpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGwKLXsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhhbnlfY29udmVyc2lvbiAuLi4pOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbywgaW50KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7IAotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLX07Ci0KLSNlbGlmIGRlZmluZWQoX19ETUNfXykKLQotc3RydWN0IGFueV9jb252ZXJzaW9uCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3QgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbih2b2xhdGlsZSBUJik7Ci0gICAgLy8gd2UgbmVlZCB0aGlzIGNvbnN0cnVjdG9yIHRvIGNhdGNoIHJlZmVyZW5jZXMgdG8gZnVuY3Rpb25zCi0gICAgLy8gKHdoaWNoIGNhbiBub3QgYmUgY3YtcXVhbGlmaWVkKToKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oVCYpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGwKLXsKLSAgICAvLyBVc2luZyAnLi4uJyBkb2Vzbid0IGFsd2F5cyB3b3JrIG9uIERpZ2l0YWwgTWFycy4gVGhpcyB2ZXJzaW9uIHNlZW1zIHRvLgotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKGFueV9jb252ZXJzaW9uLCAgZmxvYXQsIFQpOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbywgaW50LCBpbnQpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsKLSAgICBzdGF0aWMgbHZhbHVlX3R5cGUgX21fZnJvbTsKLQotICAgIC8vIFN0YXRpYyBjb25zdGFudHMgc29tZXRpbWUgY2F1c2UgdGhlIGNvbnZlcnNpb24gb2YgX21fZnJvbSB0byBUbyB0byBiZQotICAgIC8vIGNhbGxlZC4gVGhpcyBkb2Vzbid0IGhhcHBlbiB3aXRoIGFuIGVudW0uCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgZW51bSB7IHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDAsIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgfTsKLSNlbHNlCi0gICAgZW51bSB7IHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tLCAwLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgIH07Ci0jZW5kaWYKLX07Ci0KLSNlbGlmIGRlZmluZWQoX19NV0VSS1NfXykKLS8vIAotLy8gQ1cgd29ya3Mgd2l0aCB0aGUgdGVjaG5pcXVlIGltcGxlbWVudGVkIGFib3ZlIGZvciBFREcsIGV4Y2VwdCB3aGVuIEZyb20KLS8vIGlzIGEgZnVuY3Rpb24gdHlwZSAob3IgYSByZWZlcmVuY2UgdG8gc3VjaCBhIHR5cGUpLCBpbiB3aGljaCBjYXNlCi0vLyBhbnlfY29udmVyc2lvbiB3b24ndCBiZSBhY2NlcHRlZCBhcyBhIHZhbGlkIGNvbnZlcnNpb24uIFdlIGRldGVjdCB0aGlzCi0vLyBleGNlcHRpb25hbCBzaXR1YXRpb24gYW5kIGNoYW5uZWwgaXQgdGhyb3VnaCBhbiBhbHRlcm5hdGl2ZSBhbGdvcml0aG0uCi0vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8sYm9vbCBGcm9tSXNGdW5jdGlvblJlZj4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDsKLQotc3RydWN0IGFueV9jb252ZXJzaW9uCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3QgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbih2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKFQmKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDxGcm9tLFRvLGZhbHNlIC8qRnJvbUlzRnVuY3Rpb25SZWYqLz4KLXsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhhbnlfY29udmVyc2lvbiAuLi4pOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbywgaW50KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7IAotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDxGcm9tLFRvLHRydWUgLypGcm9tSXNGdW5jdGlvblJlZiovPgotewotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKC4uLik7Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFRvKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7Ci0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSkpICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsOgotICBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDwKLSAgICBGcm9tLFRvLAotICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGU+Ojp2YWx1ZQotICA+Ci17fTsKLQotI2Vsc2UKLS8vCi0vLyBUaGlzIHZlcnNpb24gc2VlbXMgdG8gd29yayBwcmV0dHkgd2VsbCBmb3IgYSB3aWRlIHNwZWN0cnVtIG9mIGNvbXBpbGVycywKLS8vIGhvd2V2ZXIgaXQgZG9lcyByZWx5IG9uIHVuZGVmaW5lZCBiZWhhdmlvdXIgYnkgcGFzc2luZyBVRFQncyB0aHJvdWdoICguLi4pLgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi17Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soLi4uKTsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8pOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsgCi0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSkpICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19OwotCi0jZW5kaWYgLy8gaXNfY29udmVydGlibGVfaW1wbAotCi0jaWYgZGVmaW5lZChfX0RNQ19fKQotLy8gQXMgYmVmb3JlLCBhIHN0YXRpYyBjb25zdGFudCBzb21ldGltZXMgY2F1c2VzIGVycm9ycyBvbiBEaWdpdGFsIE1hcnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbAotewotICAgIGVudW0geyB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGw8RnJvbSxUbz46OnZhbHVlLAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJyYXk8VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSB9OwotfTsKLSNlbGlmICFkZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID4gMHg1NTEKLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29udmVydGlibGVfYmFzaWNfaW1wbDxGcm9tLFRvPjo6dmFsdWUsCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcnJheTxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlIDxib29sIHRyaXZpYWwxLCBib29sIHRyaXZpYWwyLCBib29sIGFic3RyYWN0X3RhcmdldD4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdAotewotICAgdGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZV9pbXBsPEZyb20sIFRvPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8dHJ1ZSwgdHJ1ZSwgZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgY2xhc3MgVG8+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIHRydWVfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8ZmFsc2UsIGZhbHNlLCB0cnVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBmYWxzZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdDx0cnVlLCBmYWxzZSwgdHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgZmFsc2VfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX2Rpc3BhdGNoX2Jhc2UKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHR5cGVkZWYgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8IAotICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxGcm9tPjo6dmFsdWUsIAotICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUbz46OnZhbHVlLAotI2lmbmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotICAgICAgOjpuZG5ib29zdDo6aXNfYWJzdHJhY3Q8VG8+Ojp2YWx1ZQotI2Vsc2UKLSAgICAgIGZhbHNlCi0jZW5kaWYKLSAgID4gc2VsZWN0b3I7Ci0jZWxzZQotICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdDxmYWxzZSwgZmFsc2UsIGZhbHNlPiBzZWxlY3RvcjsKLSNlbmRpZgotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPEZyb20sIFRvPiBpc2NfYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBpc2NfYmluZGVyOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9kaXNwYXRjaCAKLSAgIDogcHVibGljIGlzX2NvbnZlcnRpYmxlX2ltcGxfZGlzcGF0Y2hfYmFzZTxGcm9tLCBUbz46OnR5cGUKLXt9OwotCi0vLwotLy8gTm93IGFkZCB0aGUgZnVsbCBhbmQgcGFydGlhbCBzcGVjaWFsaXNhdGlvbnMKLS8vIGZvciB2b2lkIHR5cGVzLCB0aGVzZSBhcmUgY29tbW9uIHRvIGFsbCB0aGUKLS8vIGltcGxlbWVudGF0aW9uIGFib3ZlOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLSMgICBkZWZpbmUgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMSh0cmFpdCxzcGVjMSxzcGVjMix2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIodHJhaXQsc3BlYzEsc3BlYzIsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKHRyYWl0LHNwZWMxLHNwZWMyIGNvbnN0LHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMih0cmFpdCxzcGVjMSxzcGVjMiB2b2xhdGlsZSx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIodHJhaXQsc3BlYzEsc3BlYzIgY29uc3Qgdm9sYXRpbGUsdmFsdWUpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMih0cmFpdCxzcGVjMSxzcGVjMix2YWx1ZSkgXAotICAgIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEodHJhaXQsc3BlYzEsc3BlYzIsdmFsdWUpIFwKLSAgICBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyX1BBUlQxKHRyYWl0LHNwZWMxIGNvbnN0LHNwZWMyLHZhbHVlKSBcCi0gICAgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMSh0cmFpdCxzcGVjMSB2b2xhdGlsZSxzcGVjMix2YWx1ZSkgXAotICAgIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEodHJhaXQsc3BlYzEgY29uc3Qgdm9sYXRpbGUsc3BlYzIsdmFsdWUpIFwKLSAgICAvKiovCi0KLSAgICBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyKGlzX2NvbnZlcnRpYmxlLHZvaWQsdm9pZCx0cnVlKQotCi0jICAgdW5kZWYgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMgotIyAgIHVuZGVmIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEKLQotI2Vsc2UKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKGlzX2NvbnZlcnRpYmxlLHZvaWQsdm9pZCx0cnVlKQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVG8saXNfY29udmVydGlibGUsdm9pZCxUbyxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIEZyb20saXNfY29udmVydGlibGUsRnJvbSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVG8saXNfY29udmVydGlibGUsdm9pZCBjb25zdCxUbyxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFRvLGlzX2NvbnZlcnRpYmxlLHZvaWQgdm9sYXRpbGUsVG8sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBUbyxpc19jb252ZXJ0aWJsZSx2b2lkIGNvbnN0IHZvbGF0aWxlLFRvLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgRnJvbSxpc19jb252ZXJ0aWJsZSxGcm9tLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBGcm9tLGlzX2NvbnZlcnRpYmxlLEZyb20sdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIEZyb20saXNfY29udmVydGlibGUsRnJvbSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihpc19jb252ZXJ0aWJsZSxGcm9tLFRvLCg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnZlcnRpYmxlX2ltcGxfZGlzcGF0Y2g8RnJvbSxUbz46OnZhbHVlKSkKLQotI2Vsc2UKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihpc19jb252ZXJ0aWJsZSxGcm9tLFRvLE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFKEZyb20sVG8pKQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZlYzRhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfRU1QVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0VNUFRZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgYWx3YXlzIHRoZSBsYXN0ICNpbmNsdWRlIGRpcmVjdGl2ZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkoVCkgZmFsc2UKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZKFQpIE5ETkJPT1NUX0lTX0VNUFRZKFQpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NjI0KSAvLyBkZXN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfdDEgOiBwdWJsaWMgVAotewotICAgIGVtcHR5X2hlbHBlcl90MSgpOyAgLy8gaGggY29tcGlsZXIgYnVnIHdvcmthcm91bmQKLSAgICBpbnQgaVsyNTZdOwotcHJpdmF0ZToKLSAgIC8vIHN1cHByZXNzIGNvbXBpbGVyIHdhcm5pbmdzOgotICAgZW1wdHlfaGVscGVyX3QxKGNvbnN0IGVtcHR5X2hlbHBlcl90MSYpOwotICAgZW1wdHlfaGVscGVyX3QxJiBvcGVyYXRvcj0oY29uc3QgZW1wdHlfaGVscGVyX3QxJik7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1zdHJ1Y3QgZW1wdHlfaGVscGVyX3QyIHsgaW50IGlbMjU2XTsgfTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNfYV9jbGFzcyA9IGZhbHNlPgotc3RydWN0IGVtcHR5X2hlbHBlcgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGVtcHR5X2hlbHBlcjxULCB0cnVlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGVtcHR5X2hlbHBlcl90MTxUPikgPT0gc2l6ZW9mKGVtcHR5X2hlbHBlcl90MikpCi0gICAgICAgICk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19lbXB0eV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgY3Z0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2hlbHBlcjxjdnQsOjpuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlPjo6dmFsdWUKLSAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShjdnQpCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgKSk7Ci19OwotCi0jZWxzZSAvLyBfX0JPUkxBTkRDX18KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNfYV9jbGFzcywgYm9vbCBjb252ZXJ0aWJsZV90b19pbnQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyPFQsIHRydWUsIGZhbHNlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgc2l6ZW9mKGVtcHR5X2hlbHBlcl90MTxUPikgPT0gc2l6ZW9mKGVtcHR5X2hlbHBlcl90MikKLSAgICAgICAgKSk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19lbXB0eV9pbXBsCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBjdnQ7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8VD46OnR5cGUgcl90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfaGVscGVyPAotICAgICAgICAgICAgICAgICAgY3Z0Ci0gICAgICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCByX3R5cGUsaW50Pjo6dmFsdWUKLSAgICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShjdnQpCi0gICAgICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZW5kaWYgLy8gX19CT1JMQU5EQ19fCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2lmZGVmIE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX3QxIDogcHVibGljIFQKLXsKLSAgIGVtcHR5X2hlbHBlcl90MSgpOwotICAgaW50IGlbMjU2XTsKLX07Ci0KLXN0cnVjdCBlbXB0eV9oZWxwZXJfdDIgeyBpbnQgaVsyNTZdOyB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfYmFzZQotewotICAgZW51bSB7IHZhbHVlID0gKHNpemVvZihlbXB0eV9oZWxwZXJfdDE8VD4pID09IHNpemVvZihlbXB0eV9oZWxwZXJfdDIpKSB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX25vbmJhc2UKLXsKLSAgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBiYXNlPgotc3RydWN0IGVtcHR5X2hlbHBlcl9jaG9vc2VyCi17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgIHsKLSAgICAgIHR5cGVkZWYgZW1wdHlfaGVscGVyX25vbmJhc2U8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGVtcHR5X2hlbHBlcl9jaG9vc2VyPHRydWU+Ci17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgIHsKLSAgICAgIHR5cGVkZWYgZW1wdHlfaGVscGVyX2Jhc2U8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19lbXB0eV9pbXBsCi17Ci0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfaGVscGVyX2Nob29zZXI8Ci0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQsZG91YmxlPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfbWVtYmVyX3BvaW50ZXI8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8VCx2b2lkIGNvbnN0IHZvbGF0aWxlKj46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUgPiBjaG9vc2VyOwotCi0gICB0eXBlZGVmIHR5cGVuYW1lIGNob29zZXI6OnRlbXBsYXRlIHJlc3VsdF88VD4gcmVzdWx0OwotICAgdHlwZWRlZiB0eXBlbmFtZSByZXN1bHQ6OnR5cGUgZWhfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPGVoX3R5cGU6OnZhbHVlLCBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShUKT46OnZhbHVlKSk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX2VtcHR5X2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShUKSk7Ci19OwotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMKLQotI2VuZGlmICAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIHRoZXNlIGhlbHAgd2hlbiB0aGUgY29tcGlsZXIgaGFzIG5vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19lbXB0eSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZW1wdHlfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRU1QVFlfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTA2YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19FTlVNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19FTlVNX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0VOVU0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaWZkZWYgX19HTlVDX18KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04pIAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwPgotI2VuZGlmCi0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9JU19FTlVNCi0jaWYgIShkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8PSAweDU1MSkpCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTikgCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX29yX3VuaW9uCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc191bmlvbjxUPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19vcl91bmlvbgotewotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkpLy8gd2Ugc2ltcGx5IGNhbid0IGRldGVjdCBpdCB0aGlzIHdheS4KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0jIGVsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jbGFzc19vcl91bmlvbl90ZXN0ZXIodm9pZChVOjoqKSh2b2lkKSk7Ci0KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMCkgLy8gbm8gU0ZJTkFFCi0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NsYXNzX29yX3VuaW9uX3Rlc3RlciguLi4pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0jICBlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NsYXNzX29yX3VuaW9uX3Rlc3RlciguLi4pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyPFQ+KDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0jICBlbmRpZgotIyBlbmRpZgotfTsKLSNlbmRpZgotCi1zdHJ1Y3QgaW50X2NvbnZlcnRpYmxlCi17Ci0gICAgaW50X2NvbnZlcnRpYmxlKGludCk7Ci19OwotCi0vLyBEb24ndCBldmFsdWF0ZSBjb252ZXJ0aWJpbGl0eSB0byBpbnRfY29udmVydGlibGUgdW5sZXNzIHRoZSB0eXBlCi0vLyBpcyBub24tYXJpdGhtZXRpYy4gVGhpcyBzdXBwcmVzc2VzIHdhcm5pbmdzIHdpdGggR0NDLgotdGVtcGxhdGUgPGJvb2wgaXNfdHlwZW5hbWVfYXJpdGhtZXRpY19vcl9yZWZlcmVuY2UgPSB0cnVlPgotc3RydWN0IGlzX2VudW1faGVscGVyCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB0eXBlCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfZW51bV9oZWxwZXI8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB0eXBlCi0gICAgICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8dHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUsOjpuZG5ib29zdDo6ZGV0YWlsOjppbnRfY29udmVydGlibGU+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX2VudW1faW1wbAotewotICAgLy90eXBlZGVmIDo6bmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD4gYXJfdDsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBhcl90Ojp0eXBlIHJfdHlwZTsKLQotI2lmIGRlZmluZWQoX19HTlVDX18pCi0KLSNpZmRlZiBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotICAgIAotICAgLy8gV2UgTVVTVCBjaGVjayBmb3IgaXNfY2xhc3Nfb3JfdW5pb24gb24gY29uZm9ybWluZyBjb21waWxlcnMgaW4KLSAgIC8vIG9yZGVyIHRvIGNvcnJlY3RseSBkZWR1Y2UgdGhhdCBub25jb3B5YWJsZSB0eXBlcyBhcmUgbm90IGVudW1zCi0gICAvLyAoZHdhIDIwMDIvMDQvMTUpLi4uCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgc2VsZWN0b3IgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlCi0gICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlCi0gICAgICAgICAsIGlzX2NsYXNzX29yX3VuaW9uPFQ+Ojp2YWx1ZQotICAgICAgICAgLCBpc19hcnJheTxUPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZWxzZQotICAgLy8gLi4uaG93ZXZlciwgbm90IGNoZWNraW5nIGlzX2NsYXNzX29yX3VuaW9uIG9uIG5vbi1jb25mb3JtaW5nCi0gICAvLyBjb21waWxlcnMgcHJldmVudHMgYSBkZXBlbmRlbmN5IHJlY3Vyc2lvbi4KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBzZWxlY3RvciA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUKLSAgICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0KLSNlbHNlIC8vICFkZWZpbmVkKF9fR05VQ19fKToKLSAgICAKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBzZWxlY3RvciA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgLCBpc19jbGFzc19vcl91bmlvbjxUPjo6dmFsdWUKLSAgICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotICAgIAotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZW51bV9oZWxwZXI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19lbnVtX2ltcGw8VD46OnNlbGVjdG9yCi0gICAgICAgID4gc2VfdDsKLSNlbHNlCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2VudW1faGVscGVyPHNlbGVjdG9yPiBzZV90OwotI2VuZGlmCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlX3Q6OnRlbXBsYXRlIHR5cGU8VD4gaGVscGVyOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGhlbHBlcjo6dmFsdWUpOwotfTsKLQotLy8gdGhlc2UgaGVscCBvbiBjb21waWxlcnMgd2l0aCBubyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHN1cHBvcnQ6Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VudW0sdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW51bSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbnVtLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VudW0sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19lbnVtLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19lbnVtX2ltcGw8VD46OnZhbHVlKQotCi0jZWxzZSAvLyBfX0JPUkxBTkRDX18KLS8vCi0vLyBidWdneSBpc19jb252ZXJ0aWJsZSBwcmV2ZW50cyB3b3JraW5nCi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBpc19lbnVtOgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19lbnVtLFQsZmFsc2UpCi0KLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9JU19FTlVNCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZW51bSxULE5ETkJPT1NUX0lTX0VOVU0oVCkpCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRU5VTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMWI1ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVF9IUFBfSU5DTFVERUQKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8qIGlzIGEgdHlwZSBUIGEgZmxvYXRpbmctcG9pbnQgdHlwZSBkZXNjcmliZWQgaW4gdGhlIHN0YW5kYXJkICgzLjkuMXA4KQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19mbG9hdCxULGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXQsZmxvYXQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0LGRvdWJsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXQsbG9uZyBkb3VibGUsdHJ1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdGluZ19wb2ludC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMzODI2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC0yMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfSVNfRkxPQVRJTkdfSFBQX0lOQ0xVREVECi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vKiBpcyBhIHR5cGUgVCBhIGZsb2F0aW5nLXBvaW50IHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjFwOCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZmxvYXRpbmdfcG9pbnQsVCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0aW5nX3BvaW50LGZsb2F0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19mbG9hdGluZ19wb2ludCxkb3VibGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0aW5nX3BvaW50LGxvbmcgZG91YmxlLHRydWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYjQyYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gIENvcHlyaWdodCAyMDAyIEFsZWtzZXkgR3VydG92b3kgKGFndXJ0b3ZveUBtZXRhLWNvbW0uY29tKQotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl9oZWxwZXIuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0vLyBpcyBhIHR5cGUgYSBmdW5jdGlvbj8KLS8vIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB1bm5lY2Vzc2FyaWx5IGNvbXBsZXg6Ci0vLyB3ZSBjb3VsZCBqdXN0IHVzZSAhaXNfY29udmVydGlibGU8VCosIGNvbnN0IHZvbGF0aWxlIHZvaWQqPjo6dmFsdWUsCi0vLyBleGNlcHQgdGhhdCBzb21lIGNvbXBpbGVycyBlcnJvbmVvdXNseSBhbGxvdyBjb252ZXJzaW9ucyBmcm9tCi0vLyBmdW5jdGlvbiBwb2ludGVycyB0byB2b2lkKi4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUykKLXRlbXBsYXRlPGJvb2wgaXNfcmVmID0gdHJ1ZT4KLXN0cnVjdCBpc19mdW5jdGlvbl9jaG9vc2VyCi0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19mdW5jdGlvbl9jaG9vc2VyPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8VCo+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19mdW5jdGlvbl9pbXBsCi0gICAgOiBwdWJsaWMgaXNfZnVuY3Rpb25fY2hvb3NlcjwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHJlc3VsdF88VD4KLXsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Z1bmN0aW9uX2ltcGwKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotICAgIHN0YXRpYyBUKiB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIodCkpCi0gICAgICAgID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Z1bmN0aW9uX2ltcGw8VCY+IDogcHVibGljIGZhbHNlX3R5cGUKLXt9OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25faW1wbDxUJiY+IDogcHVibGljIGZhbHNlX3R5cGUKLXt9OwotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jZW5kaWYgLy8gIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmN0aW9uLFQsX19pc19mdW5jdGlvbihUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmN0aW9uLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19mdW5jdGlvbl9pbXBsPFQ+Ojp2YWx1ZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2Z1bmN0aW9uLFQmJixmYWxzZSkKLSNlbmRpZgotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGI5NGQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiAKLXN0cnVjdCBpc19mdW5kYW1lbnRhbF9pbXBsCi0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwgCi0gICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZQotICAgICAgICA+Ci17IAotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vKiBpcyBhIHR5cGUgVCBhIGZ1bmRhbWVudGFsIHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjEpCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmRhbWVudGFsLFQsX19pc19mdW5kYW1lbnRhbChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmRhbWVudGFsLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19mdW5kYW1lbnRhbF9pbXBsPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ0MjU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19JTlRFR1JBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfSU5URUdSQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyogaXMgYSB0eXBlIFQgYW4gW2N2LXF1YWxpZmllZC1dIGludGVncmFsIHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjFwMykKLS8vIGFzIGFuIGV4dGVuc2lvbiB3ZSBpbmNsdWRlIGxvbmcgbG9uZywgYXMgdGhpcyBpcyBsaWtlbHkgdG8gYmUgYWRkZWQgdG8gdGhlCi0vLyBzdGFuZGFyZCBhdCBhIGxhdGVyIGRhdGUKLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfaW50ZWdyYWwsVCxfX2lzX2ludGVncmFsKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfaW50ZWdyYWwsVCxmYWxzZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgY2hhcix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgc2hvcnQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIGludCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgbG9uZyx0cnVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxzaWduZWQgY2hhcix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsc2lnbmVkIHNob3J0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxzaWduZWQgaW50LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxzaWduZWQgbG9uZyx0cnVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxib29sLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxjaGFyLHRydWUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIElmIHRoZSBmb2xsb3dpbmcgbGluZSBmYWlscyB0byBjb21waWxlIGFuZCB5b3UncmUgdXNpbmcgdGhlIEludGVsCi0vLyBjb21waWxlciwgc2VlIGh0dHA6Ly9saXN0cy5ib29zdC5vcmcvTWFpbEFyY2hpdmVzL2Jvb3N0LXVzZXJzL21zZzA2NTY3LnBocCwKLS8vIGFuZCBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1Qgb24gdGhlIGNvbW1hbmQgbGluZS4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHdjaGFyX3QsdHJ1ZSkKLSNlbmRpZgotCi0vLyBTYW1lIHNldCBvZiBpbnRlZ3JhbCB0eXBlcyBhcyBpbiBuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwLgotLy8gUGxlYXNlLCBrZWVwIGluIHN5bmMuIC0tIEFsZXhhbmRlciBOYXNvbm92Ci0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMzAwKSkgXAotICAgIHx8IChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPD0gNjAwKSkgXAotICAgIHx8IChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA9PSAweDYwMCkgJiYgKF9NU0NfVkVSIDwgMTMwMCkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBfX2ludDgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLF9faW50OCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQxNix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQxNix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQzMix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQzMix0cnVlKQotI2lmZGVmIF9fQk9STEFORENfXwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQ2NCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQ2NCx0cnVlKQotI2VuZGlmCi0jZW5kaWYKLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsdHJ1ZSkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQ2NCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQ2NCx0cnVlKQotI2VuZGlmCi0gICAgICAgIAotI2lmZGVmIE5ETkJPT1NUX0hBU19JTlQxMjgKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLG5kbmJvb3N0OjppbnQxMjhfdHlwZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsbmRuYm9vc3Q6OnVpbnQxMjhfdHlwZSx0cnVlKQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gbm9uLUNvZGVHZWFyIGltcGxlbWVudGF0aW9uCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19JTlRFR1JBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbHZhbHVlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2x2YWx1ZV9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzhlMmM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbHZhbHVlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX2x2YWx1ZV9yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0xWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0xWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbHZhbHVlX3JlZmVyZW5jZSxULF9faXNfcmVmZXJlbmNlKFQpKQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19sdmFsdWVfcmVmZXJlbmNlLFQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmLHRydWUpCi0KLSNpZiAgZGVmaW5lZChORE5CT09TVF9JTExFR0FMX0NWX1JFRkVSRU5DRVMpCi0vLyB0aGVzZSBhcmUgaWxsZWdhbCBzcGVjaWFsaXNhdGlvbnM7IGN2LXF1YWxpZmllcyBhcHBsaWVkIHRvCi0vLyByZWZlcmVuY2VzIGhhdmUgbm8gZWZmZWN0IGFjY29yZGluZyB0byBbOC4zLjJwMV0sCi0vLyBDKysgQnVpbGRlciByZXF1aXJlcyB0aGVtIHRob3VnaCBhcyBpdCB0cmVhdHMgY3YtcXVhbGlmaWVkCi0vLyByZWZlcmVuY2VzIGFzIGRpc3RpbmN0IHR5cGVzLi4uCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmIGNvbnN0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmIHZvbGF0aWxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA8IDMpCi0vLyB0aGVzZSBhbGxvdyB1cyB0byB3b3JrIGFyb3VuZCBpbGxlZ2FsbHkgY3YtcXVhbGlmaWVkIHJlZmVyZW5jZQotLy8gdHlwZXMuCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQgY29uc3QgLDo6bmRuYm9vc3Q6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUIHZvbGF0aWxlICw6Om5kbmJvb3N0Ojppc19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCBjb25zdCB2b2xhdGlsZSAsOjpuZG5ib29zdDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0vLyBIb3dldmVyLCB0aGUgYWJvdmUgc3BlY2lhbGl6YXRpb25zIGNvbmZ1c2UgZ2NjIDIuOTYgdW5sZXNzIHdlIGFsc28KLS8vIHN1cHBseSB0aGVzZSBzcGVjaWFsaXphdGlvbnMgZm9yIGFycmF5IHR5cGVzCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx1bnNpZ25lZCBsb25nIE4saXNfbHZhbHVlX3JlZmVyZW5jZSxUW05dLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdW5zaWduZWQgbG9uZyBOLGlzX2x2YWx1ZV9yZWZlcmVuY2UsY29uc3QgVFtOXSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHVuc2lnbmVkIGxvbmcgTixpc19sdmFsdWVfcmVmZXJlbmNlLHZvbGF0aWxlIFRbTl0sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx1bnNpZ25lZCBsb25nIE4saXNfbHZhbHVlX3JlZmVyZW5jZSxjb25zdCB2b2xhdGlsZSBUW05dLGZhbHNlKQotI2VuZGlmCi0KLSNlbHNlCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTgxIDQwOTcpCi0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OndyYXA7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBUJigqIGlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMSh3cmFwPFQ+KSApKHdyYXA8VD4pOwotY2hhciBpc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjEoLi4uKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IG5vX3R5cGUgaXNfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIyKFQmKCopKHdyYXA8VD4pKTsKLXllc190eXBlIGlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMiguLi4pOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19sdmFsdWVfcmVmZXJlbmNlX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKAotICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjIoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjEoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OndyYXA8VD4oKSkpKSA9PSAxCi0gICAgICAgICk7Ci19OwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2x2YWx1ZV9yZWZlcmVuY2Usdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbHZhbHVlX3JlZmVyZW5jZSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19sdmFsdWVfcmVmZXJlbmNlLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2x2YWx1ZV9yZWZlcmVuY2Usdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19sdmFsdWVfcmVmZXJlbmNlLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19sdmFsdWVfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlKQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGVmMmVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTKQotICAgLy8KLSAgIC8vIE5vdGU6IHdlIHVzZSB0aGUgIndvcmthcm91bmQiIHZlcnNpb24gZm9yIE1TVkMgYmVjYXVzZSBpdCB3b3JrcyBmb3IgCi0gICAvLyBfX3N0ZGNhbGwgZXRjIGZ1bmN0aW9uIHR5cGVzLCB3aGVyZSBhcyB0aGUgcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotICAgLy8gdmVyc2lvbiBkb2VzIG5vdCBkbyBzby4KLSAgIC8vCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLFQsX19pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlciggVCApKQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUykKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMSgKLSAgICAgIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0gICAgLCBUCi0gICAgLCA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8dHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUKLSAgICApCi0KLSNlbHNlCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIF9fQk9STEFORENfXwotCi10ZW1wbGF0ZSA8Ym9vbD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfc2VsZWN0Ci0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfc2VsZWN0PGZhbHNlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotICAgICAgICBzdGF0aWMgVCogbWFrZV90OwotICAgICAgICB0eXBlZGVmIHJlc3VsdF88VD4gc2VsZl90eXBlOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgIGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgICAgIDEgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKHNlbGZfdHlwZTo6bWFrZV90KSkKLSAgICAgICAgICAgICkpOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsCi0gICAgOiBwdWJsaWMgaXNfbWVtX2Z1bl9wb2ludGVyX3NlbGVjdDwKLSAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsPFQmPiA6IHB1YmxpYyBmYWxzZV90eXBle307Ci0jZW5kaWYKLQotI2Vsc2UgLy8gQm9ybGFuZCBDKysKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbAotewotICAgc3RhdGljIFQqIG1fdDsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgICAgYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICAgKDEgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjppc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKG1fdCkpKSApOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUJj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2ltcGw8VD46OnZhbHVlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9vYmplY3RfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9vYmplY3RfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NTY3ZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9PQkpFQ1RfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTUVNQkVSX09CSkVDVF9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbWJlcl9vYmplY3RfcG9pbnRlcl9pbXBsCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICBib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXI8VD46OnZhbHVlCi0gICAgICAgICA+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUgKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX21lbWJlcl9vYmplY3RfcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JmY2E2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19NRU1CRVJfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTUVNQkVSX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX3BvaW50ZXIsVCxfX2lzX21lbWJlcl9wb2ludGVyKFQpKQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9wb2ludGVyLFQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx0eXBlbmFtZSBVLGlzX21lbWJlcl9wb2ludGVyLFUgVDo6Kix0cnVlKQotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfcG9pbnRlcixULDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqLHRydWUpCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLDw9MHgzMDAzKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8PTYwMCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi0jZWxzZSAvLyBubyBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVD4KLTo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX21lbWJlcl9wb2ludGVyX3Rlc3RlcihSIFQ6Oipjb25zdCB2b2xhdGlsZSopOwotOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19tZW1iZXJfcG9pbnRlcl90ZXN0ZXIoLi4uKTsKLQotdGVtcGxhdGUgPGJvb2w+Ci1zdHJ1Y3QgaXNfbWVtYmVyX3BvaW50ZXJfc2VsZWN0Ci0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19tZW1iZXJfcG9pbnRlcl9zZWxlY3Q8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCogbWFrZV90KCk7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgIGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICgxID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihtYWtlX3QoKSkpKSwKLSAgICAgICAgICAgICAgICAoMSA9PSBzaXplb2YoaXNfbWVtYmVyX3BvaW50ZXJfdGVzdGVyKG1ha2VfdCgpKSkpCi0gICAgICAgICAgICA+Ojp2YWx1ZSkgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX3BvaW50ZXJfaW1wbAotICAgIDogcHVibGljIGlzX21lbWJlcl9wb2ludGVyX3NlbGVjdDwKLSAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9wb2ludGVyLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19tZW1iZXJfcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIF9fQk9STEFORENfXwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTg2NGFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIChDKSBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyLTIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbnRvbnkgUG9sdWtoaW4gMjAxMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0FTU0lHTkFCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9BU1NJR05BQkxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFbmFibGUgPSB2b2lkPgotc3RydWN0IGZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfYXNzaWduYWJsZTogcHVibGljIDo6bmRuYm9vc3Q6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfYXNzaWduYWJsZSA8Ci0gICAgICAgIFQsCi0gICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmVuYWJsZV9pZl9jPHNpemVvZihUKSAmJiBORE5CT09TVF9OT0VYQ0VQVF9FWFBSKDo6bmRuYm9vc3Q6OmRlY2x2YWw8VCY+KCkgPSA6Om5kbmJvb3N0OjpkZWNsdmFsPFQ+KCkpPjo6dHlwZQotICAgID4gOiBwdWJsaWMgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgTkROQk9PU1RfTk9FWENFUFRfRVhQUig6Om5kbmJvb3N0OjpkZWNsdmFsPFQmPigpID0gOjpuZG5ib29zdDo6ZGVjbHZhbDxUPigpKT4KLXt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZV9pbXB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZmFsc2Vfb3JfY3BwMTFfbm9leGNlcHRfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGVfaW1wewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX21vdmVfYXNzaWduPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNfbm90aHJvd19hc3NpZ248VD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbmRpZgotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlX2ltcDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUsdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQVNTSUdOQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4OTExMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDItMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFudG9ueSBQb2x1a2hpbiAyMDEzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQ09OU1RSVUNUSUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0NPTlNUUlVDVElCTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRW5hYmxlID0gdm9pZD4KLXN0cnVjdCBmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2NvbnN0cnVjdGlibGU6IHB1YmxpYyA6Om5kbmJvb3N0OjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2NvbnN0cnVjdGlibGUgPAotICAgICAgICBULAotICAgICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0OjplbmFibGVfaWZfYzxzaXplb2YoVCkgJiYgTkROQk9PU1RfTk9FWENFUFRfRVhQUihUKDo6bmRuYm9vc3Q6OmRlY2x2YWw8VD4oKSkpPjo6dHlwZQotICAgID4gOiBwdWJsaWMgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgTkROQk9PU1RfTk9FWENFUFRfRVhQUihUKDo6bmRuYm9vc3Q6OmRlY2x2YWw8VD4oKSkpPgote307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX2ltcHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX2ltcHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSgKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3I8VD46OnZhbHVlLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc19ub3Rocm93X2NvcHk8VD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbmRpZgotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX2ltcDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUsdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9DT05TVFJVQ1RJQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDZlYjlhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfb2JqZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfT0JKRUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19PQkpFQ1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19vYmplY3RfaW1wbAotewotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZT46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX29iamVjdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfb2JqZWN0X2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfT0JKRUNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTA3NjFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1BPRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfUE9EX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9JU19QT0QKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJOQUxfSVNfUE9EKFQpIGZhbHNlCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9JTlRFUk5BTF9JU19QT0QoVCkgTkROQk9PU1RfSVNfUE9EKFQpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiwgbmVlZGVkIGJ5ICdpc19wb2RfYXJyYXlfaGVscGVyJyB0ZW1wbGF0ZSBiZWxvdwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfUE9EOwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfcG9kX2ltcGwKLXsgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2NhbGFyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlLAotICAgICAgICAgICAgTkROQk9PU1RfSU5URVJOQUxfSVNfUE9EKFQpCi0gICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6Pgotc3RydWN0IGlzX3BvZF9pbXBsPFRbc3pdPgotICAgIDogcHVibGljIGlzX3BvZF9pbXBsPFQ+Ci17Ci19OwotI2VuZGlmCi0KLSNlbHNlCi0KLXRlbXBsYXRlIDxib29sIGlzX2FycmF5ID0gZmFsc2U+Ci1zdHJ1Y3QgaXNfcG9kX2hlbHBlcgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2NhbGFyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JTlRFUk5BTF9JU19QT0QoVCkKLSAgICAgICAgICAgID46OnZhbHVlKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGI+Ci1zdHJ1Y3QgYm9vbF90b195ZXNfbm9fdHlwZQotewotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgYm9vbF90b195ZXNfbm9fdHlwZTx0cnVlPgotewotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJyYXlUeXBlPgotc3RydWN0IGlzX3BvZF9hcnJheV9oZWxwZXIKLXsKLSAgICBlbnVtIHsgaXNfcG9kID0gOjpuZG5ib29zdDo6aXNfUE9EPEFycmF5VHlwZT46OnZhbHVlIH07IC8vIE1TVkMgd29ya2Fyb3VuZAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYm9vbF90b195ZXNfbm9fdHlwZTxpc19wb2Q+Ojp0eXBlIHR5cGU7Ci0gICAgdHlwZSBpbnN0YW5jZSgpIGNvbnN0OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pc19wb2RfYXJyYXlfaGVscGVyPFQ+IGlzX1BPRF9hcnJheShUKik7Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcG9kX2hlbHBlcjx0cnVlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQmIGhlbHAoKTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgIHNpemVvZihpc19QT0RfYXJyYXkoaGVscCgpKS5pbnN0YW5jZSgpKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX3BvZF9pbXBsCi17IAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgIGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvZF9oZWxwZXI8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ojp2YWx1ZQotICAgICAgICAgICApCi0gICAgICAgKTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIHRoZSBmb2xsb3dpbmcgaGVscCBjb21waWxlcnMgd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHN1cHBvcnQ6Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCx2b2lkLHRydWUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLHZvaWQgY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLHZvaWQgdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLHZvaWQgY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19wb2QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvZF9pbXBsPFQ+Ojp2YWx1ZSkKLS8vIGlzX1BPRCBpcyB0aGUgb2xkIGRlcHJpY2F0ZWQgbmFtZSBmb3IgdGhpcyB0cmFpdCwgZG8gbm90IHVzZSB0aGlzIGFzIGl0IG1heQotLy8gYmUgcmVtb3ZlZCBpbiBmdXR1cmUgd2l0aG91dCB3YXJuaW5nISEKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfUE9ELFQsOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX0lOVEVSTkFMX0lTX1BPRAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfUE9EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMmQzNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19QT0lOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9pbnRlcixULF9faXNfcG9pbnRlcihUKSkKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19wb2ludGVyX2hlbHBlcgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSMgICBkZWZpbmUgVFRfQVVYX0JPT0xfVFJBSVRfSEVMUEVSX1BBUlRJQUxfU1BFQyhoZWxwZXIsc3AscmVzdWx0KSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBoZWxwZXI8c3A+IFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHJlc3VsdCk7IFwKLX07IFwKLS8qKi8KLQotVFRfQVVYX0JPT0xfVFJBSVRfSEVMUEVSX1BBUlRJQUxfU1BFQyhpc19wb2ludGVyX2hlbHBlcixUKix0cnVlKQotCi0jICAgdW5kZWYgVFRfQVVYX0JPT0xfVFJBSVRfSEVMUEVSX1BBUlRJQUxfU1BFQwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9pbXBsCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9pbnRlcl9oZWxwZXI8VD46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvaW50ZXJfaGVscGVyPHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9pbnRlcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChfX0NPTU9fXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfcG9pbnRlcixUJixmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3BvaW50ZXIsVCYgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19wb2ludGVyLFQmIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfcG9pbnRlcixUJiBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi0jZWxzZSAvLyBubyBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1zdHJ1Y3QgcG9pbnRlcl9oZWxwZXIKLXsKLSAgICBwb2ludGVyX2hlbHBlcihjb25zdCB2b2xhdGlsZSB2b2lkKik7Ci19OwotCi15ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX3BvaW50ZXJfdGVzdGVyKHBvaW50ZXJfaGVscGVyKTsKLW5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19wb2ludGVyX3Rlc3RlciguLi4pOwotCi10ZW1wbGF0ZSA8Ym9vbD4KLXN0cnVjdCBpc19wb2ludGVyX3NlbGVjdAotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpmYWxzZV9yZXN1bHQKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9zZWxlY3Q8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCYgbWFrZV90KCk7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgICAgICgxID09IHNpemVvZihpc19wb2ludGVyX3Rlc3RlcihtYWtlX3QoKSkpKSwKLSAgICAgICAgICAgICAgICAgICAgKDEgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjppc19mdW5jdGlvbl9wdHJfdGVzdGVyKG1ha2VfdCgpKSkpCi0gICAgICAgICAgICAgICAgPjo6dmFsdWUpKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9pbXBsCi0gICAgOiBwdWJsaWMgaXNfcG9pbnRlcl9zZWxlY3Q8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9pbnRlcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2ludGVyLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvaW50ZXIsdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9pbnRlcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvaW50ZXJfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2x5bW9ycGhpYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZiNjYxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1BPTFlNT1JQSElDX0hQUAotI2RlZmluZSBORE5CT09TVF9UVF9JU19QT0xZTU9SUEhJQ19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19QT0xZTU9SUEhJQwotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2VuZGlmCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvbHltb3JwaGljX2ltcDEKLXsKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDI0MDcpIC8vIENXUHJvNyBzaG91bGQgcmV0dXJuIGZhbHNlIGFsd2F5cy4KLSAgICB0eXBlZGVmIGNoYXIgZDEsICgmZDIpWzJdOwotIyBlbHNlIAotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgbmN2VDsKLSAgIHN0cnVjdCBkMSA6IHB1YmxpYyBuY3ZUCi0gICB7Ci0gICAgICBkMSgpOwotIyAgaWYgIWRlZmluZWQoX19HTlVDX18pIC8vIHRoaXMgcmFpc2VzIHdhcm5pbmdzIHdpdGggc29tZSBjbGFzc2VzLCBhbmQgYnV5cyBub3RoaW5nIHdpdGggR0NDCi0gICAgICB+ZDEoKXRocm93KCk7Ci0jICBlbmRpZiAKLSAgICAgIGNoYXIgcGFkZGluZ1syNTZdOwotICAgcHJpdmF0ZToKLSAgICAgIC8vIGtlZXAgc29tZSBwaWNreSBjb21waWxlcnMgaGFwcHk6Ci0gICAgICBkMShjb25zdCBkMSYpOwotICAgICAgZDEmIG9wZXJhdG9yPShjb25zdCBkMSYpOwotICAgfTsKLSAgIHN0cnVjdCBkMiA6IHB1YmxpYyBuY3ZUCi0gICB7Ci0gICAgICBkMigpOwotICAgICAgdmlydHVhbCB+ZDIoKXRocm93KCk7Ci0jICBpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAhZGVmaW5lZChfX0lDTCkKLSAgICAgIC8vIGZvciBzb21lIHJlYXNvbiB0aGlzIG1lc3NlcyB1cCBWQysrIHdoZW4gVCBoYXMgdmlydHVhbCBiYXNlcywKLSAgICAgIC8vIHByb2JhYmx5IGxpa2V3aXNlIGZvciBjb21waWxlcnMgdGhhdCB1c2UgdGhlIHNhbWUgQUJJOgotICAgICAgc3RydWN0IHVuaXF1ZXt9OwotICAgICAgdmlydHVhbCB2b2lkIHVuaXF1ZV9uYW1lX3RvX2Jvb3N0NTQ4NzYyOSh1bmlxdWUqKTsKLSMgIGVuZGlmCi0gICAgICBjaGFyIHBhZGRpbmdbMjU2XTsKLSAgIHByaXZhdGU6Ci0gICAgICAvLyBrZWVwIHNvbWUgcGlja3kgY29tcGlsZXJzIGhhcHB5OgotICAgICAgZDIoY29uc3QgZDImKTsKLSAgICAgIGQyJiBvcGVyYXRvcj0oY29uc3QgZDImKTsKLSAgIH07Ci0jIGVuZGlmIAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihkMikgPT0gc2l6ZW9mKGQxKSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9seW1vcnBoaWNfaW1wMgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgaXNfY2xhc3M+Ci1zdHJ1Y3QgaXNfcG9seW1vcnBoaWNfc2VsZWN0b3IKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19wb2x5bW9ycGhpY19pbXAyPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19wb2x5bW9ycGhpY19zZWxlY3Rvcjx0cnVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX3BvbHltb3JwaGljX2ltcDE8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2x5bW9ycGhpY19pbXAKLXsKLSAgIHR5cGVkZWYgaXNfcG9seW1vcnBoaWNfc2VsZWN0b3I8IDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZT4gc2VsZWN0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8VD4gYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgaW1wX3R5cGU7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBpbXBfdHlwZTo6dmFsdWUpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9seW1vcnBoaWMsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvbHltb3JwaGljX2ltcDxUPjo6dmFsdWUpCi0KLSNlbHNlIC8vIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9seW1vcnBoaWMsVCxORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSkKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWQ2YzRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMCwgMjAxMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19sdmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX2ltcGwKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlLCA6Om5kbmJvb3N0Ojppc19ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19yZWZlcmVuY2UsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcnZhbHVlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZmUxNDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotLy8gIChDKSBKb2huIE1hZGRvY2sgMjAxMC4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1JWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1JWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3J2YWx1ZV9yZWZlcmVuY2UsVCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3J2YWx1ZV9yZWZlcmVuY2UsVCYmLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMGJkMmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19TQU1FX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19TQU1FX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNlbmRpZgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoaXNfc2FtZSxULFUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVCxpc19zYW1lLFQsVCx0cnVlKQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotLy8gd2l0aG91dCB0aGlzLCBCb3JsYW5kJ3MgY29tcGlsZXIgZ2l2ZXMgdGhlIHdyb25nIGFuc3dlciBmb3IKLS8vIHJlZmVyZW5jZXMgdG8gYXJyYXlzOgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFQsaXNfc2FtZSxUJixUJix0cnVlKQotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0vLyB0aGUgZm9sbG93aW5nIFZDNiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBpcyAqTk9UKiBsZWdhbAotLy8gQysrLCBidXQgaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCBpdCB3b3JrcyBmb3IgaW5jb21wbGV0ZQotLy8gdHlwZXMuCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaXNfc2FtZV9wYXJ0XzEKLXsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMj4gIHN0cnVjdCBwYXJ0XzIgICAgIHsgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsgfTsKLSAgICB0ZW1wbGF0ZTw+ICAgICAgICAgICAgIHN0cnVjdCBwYXJ0XzI8VDE+IHsgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OyB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaXNfc2FtZV9pbXBsCi17Ci0gICAgZW51bSB7IHZhbHVlID0gbmRuYm9vc3Q6OmRldGFpbDo6aXNfc2FtZV9wYXJ0XzE8VDE+Ojp0ZW1wbGF0ZSBwYXJ0XzI8VDI+Ojp2YWx1ZSB9OwotfTsKLQotI2Vsc2UgLy8gZ2VuZXJpYyAibm8tcGFydGlhbC1zcGVjaWFsaXphdGlvbiIgdmVyc2lvbgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLTo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZQotTkROQk9PU1RfVFRfREVDTCBpc19zYW1lX3Rlc3RlcihUKiwgVCopOwotCi06Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZQotTkROQk9PU1RfVFRfREVDTCBpc19zYW1lX3Rlc3RlciguLi4pOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0cnVjdCBpc19zYW1lX2ltcGwKLXsKLSAgIHN0YXRpYyBUIHQ7Ci0gICBzdGF0aWMgVSB1OwotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgKHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc19zYW1lX3Rlc3RlcigmdCwmdSkpKSwKLSAgICAgICAgICg6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlID09IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxVPjo6dmFsdWUpLAotICAgICAgICAgKHNpemVvZihUKSA9PSBzaXplb2YoVSkpCi0gICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVNWQwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihpc19zYW1lLFQsVSwoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19zYW1lX2ltcGw8VCxVPjo6dmFsdWUpKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RUX0lTX1NBTUVfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRlMjA4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1NDQUxBUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfU0NBTEFSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zY2FsYXJfaW1wbAoteyAKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLS8vIHRoZXNlIHNwZWNpYWxpemF0aW9ucyBhcmUgb25seSByZWFsbHkgbmVlZGVkIGZvciBjb21waWxlcnMgCi0vLyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkPnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkIGNvbnN0PnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkIHZvbGF0aWxlPnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkIGNvbnN0IHZvbGF0aWxlPnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19zY2FsYXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3NjYWxhcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1NDQUxBUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwYzZlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1NJR05FRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfU0lHTkVEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZiAhKGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiBfX0VER19WRVJTSU9OX18gPD0gMjM4KSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfc2lnbmVkX3ZhbHVlcwotewotICAgLy8KLSAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCBoZXJlLCB1c2luZyBlbnVtJ3MKLSAgIC8vIHJhdGhlciB0aGFuICJyZWFsIiBzdGF0aWMgY29uc3RhbnRzIHNpbXBseSBkb2Vzbid0IHdvcmsgb3IgZ2l2ZQotICAgLy8gdGhlIGNvcnJlY3QgYW5zd2VyLgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIG5vX2N2X3Q7Ci0gICBzdGF0aWMgY29uc3Qgbm9fY3ZfdCBtaW51c19vbmUgPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oLTEpKTsKLSAgIHN0YXRpYyBjb25zdCBub19jdl90IHplcm8gPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oMCkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfc2lnbmVkX2hlbHBlcgotewotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgbm9fY3ZfdDsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICghKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc2lnbmVkX3ZhbHVlczxUPjo6bWludXNfb25lICA+IG5kbmJvb3N0OjpkZXRhaWw6OmlzX3NpZ25lZF92YWx1ZXM8VD46Onplcm8pKSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBpbnRlZ3JhbF90eXBlPgotc3RydWN0IGlzX3NpZ25lZF9zZWxlY3RfaGVscGVyCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfc2lnbmVkX2hlbHBlcjxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfc2lnbmVkX3NlbGVjdF9oZWxwZXI8ZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgZmFsc2VfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3NpZ25lZF9pbXAKLXsKLSAgIHR5cGVkZWYgaXNfc2lnbmVkX3NlbGVjdF9oZWxwZXI8IAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2VudW08VD46OnZhbHVlPjo6dmFsdWUgCi0gICA+IHNlbGVjdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPFQ+IGJpbmRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZGVyOjp0eXBlIHR5cGU7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBpc19zaWduZWRfaW1wPFQ+Ojp0eXBlOjp2YWx1ZSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHlwZTo6dmFsdWUpOwotI2VuZGlmCi19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzX3NpZ25lZF9pbXAgOiBwdWJsaWMgZmFsc2VfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8c2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8c2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8aW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3QgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKENIQVJfTUlOKSAmJiAoQ0hBUl9NSU4gIT0gMCkKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3QgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChXQ0hBUl9NSU4pICYmIChXQ0hBUl9NSU4gIT0gMCkKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0KLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfc2lnbmVkLFQsX19pc19zaWduZWQoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19zaWduZWQsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3NpZ25lZF9pbXA8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc5NjhkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1NUQVRFTEVTU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfU1RBVEVMRVNTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGF0ZWxlc3NfaW1wbAotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHk8VD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0Ojppc19lbXB0eTxUPjo6dmFsdWUKLSAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3N0YXRlbGVzcyxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc3RhdGVsZXNzX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfU1RBVEVMRVNTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRiNGJkNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfVU5JT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1VOSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSNpZm5kZWYgX19HTlVDX18KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfdW5pb25faW1wbAotewotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgY3Z0OwotI2lmZGVmIE5ETkJPT1NUX0lTX1VOSU9OCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JU19VTklPTihjdnQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0jZW5kaWYKLX07Ci0jZWxzZQotLy8KLS8vIHVzaW5nIHJlbW92ZV9jdiBoZXJlIGdlbmVyYXRlcyBhIHdob2xlIGxvYWQgb2YgbmVlZGxlc3MKLS8vIHdhcm5pbmdzIHdpdGggZ2NjLCBzaW5jZSBpdCBkb2Vzbid0IGRvIGFueSBnb29kIHdpdGggZ2NjCi0vLyBpbiBhbnkgY2FzZSAoYXQgbGVhc3QgYXQgcHJlc2VudCksIGp1c3QgcmVtb3ZlIGl0OgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfdW5pb25faW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0lTX1VOSU9OCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JU19VTklPTihUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotI2VuZGlmCi19OwotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc191bmlvbixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdW5pb25faW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19VTklPTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YmFmMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1VOU0lHTkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19VTlNJR05FRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWYgIShkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgX19FREdfVkVSU0lPTl9fIDw9IDIzOCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04pCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3Vuc2lnbmVkX3ZhbHVlcwotewotICAgLy8KLSAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCBoZXJlLCB1c2luZyBlbnVtJ3MKLSAgIC8vIHJhdGhlciB0aGFuICJyZWFsIiBzdGF0aWMgY29uc3RhbnRzIHNpbXBseSBkb2Vzbid0IHdvcmsgb3IgZ2l2ZQotICAgLy8gdGhlIGNvcnJlY3QgYW5zd2VyLgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIG5vX2N2X3Q7Ci0gICBzdGF0aWMgY29uc3Qgbm9fY3ZfdCBtaW51c19vbmUgPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oLTEpKTsKLSAgIHN0YXRpYyBjb25zdCBub19jdl90IHplcm8gPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oMCkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfdW51bnNpZ25lZF9oZWxwZXIKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3Vuc2lnbmVkX3ZhbHVlczxUPjo6bWludXNfb25lID4gOjpuZG5ib29zdDo6ZGV0YWlsOjppc191bnNpZ25lZF92YWx1ZXM8VD46Onplcm8pKTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGludGVncmFsX3R5cGU+Ci1zdHJ1Y3QgaXNfdW51bnNpZ25lZF9zZWxlY3RfaGVscGVyCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfdW51bnNpZ25lZF9oZWxwZXI8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3VudW5zaWduZWRfc2VsZWN0X2hlbHBlcjxmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBmYWxzZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfdW5zaWduZWRfaW1wCi17Ci0gICB0eXBlZGVmIGlzX3VudW5zaWduZWRfc2VsZWN0X2hlbHBlcjwgCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWU+Ojp2YWx1ZSAKLSAgID4gc2VsZWN0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8VD4gYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgdHlwZTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHR5cGU6OnZhbHVlKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wIDogcHVibGljIGZhbHNlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChDSEFSX01JTikgJiYgKENIQVJfTUlOID09IDApCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChXQ0hBUl9NSU4pICYmIChXQ0hBUl9NSU4gPT0gMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0KLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdW5zaWduZWQsVCxfX2lzX3Vuc2lnbmVkKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdW5zaWduZWQsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3Vuc2lnbmVkX2ltcDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192aXJ0dWFsX2Jhc2Vfb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192aXJ0dWFsX2Jhc2Vfb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWMzZjI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdmlydHVhbF9iYXNlX29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBEYW5pZWwgRnJleSBhbmQgUm9iZXJ0IFJhbWV5IDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotIAotI2lmbmRlZiBORE5CT09TVF9UVF9JU19WSVJUVUFMX0JBU0VfT0ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1ZJUlRVQUxfQkFTRV9PRl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyggcHVzaCApCi0jcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0NTg0IDQyNTApCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSB0YWc+Ci1zdHJ1Y3QgaXNfdmlydHVhbF9iYXNlX29mX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBEZXJpdmVkPgotc3RydWN0IGlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsPEJhc2UsIERlcml2ZWQsIG1wbDo6dHJ1ZV8+Ci17Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0gICAgc3RydWN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YIDogcHVibGljIHZpcnR1YWwgRGVyaXZlZCwgcHVibGljIHZpcnR1YWwgQmFzZSAKLSAgICB7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWChjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJiBvcGVyYXRvcj0oY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmKTsKLSAgICAgICB+Ym9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goKXRocm93KCk7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kgOiBwdWJsaWMgdmlydHVhbCBEZXJpdmVkIAotICAgIHsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJik7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmIG9wZXJhdG9yPShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYpOwotICAgICAgIH5ib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpdGhyb3coKTsKLSAgICB9OwotI2Vsc2UKLSAgICBzdHJ1Y3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1ggOiBwdWJsaWMgRGVyaXZlZCwgdmlydHVhbCBCYXNlIAotICAgIHsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCgpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJik7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmIG9wZXJhdG9yPShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYpOwotICAgICAgIH5ib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCgpdGhyb3coKTsKLSAgICB9OwotICAgIHN0cnVjdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSA6IHB1YmxpYyBEZXJpdmVkIAotICAgIHsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJik7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmIG9wZXJhdG9yPShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYpOwotICAgICAgIH5ib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpdGhyb3coKTsKLSAgICB9OwotI2VuZGlmCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCk9PXNpemVvZihib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSkpKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIERlcml2ZWQ+Ci1zdHJ1Y3QgaXNfdmlydHVhbF9iYXNlX29mX2ltcGwyCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6YW5kXzxpc19iYXNlX29mPEJhc2UsIERlcml2ZWQ+LCBtcGw6Om5vdF88aXNfc2FtZTxCYXNlLCBEZXJpdmVkPiA+ID46OnR5cGUgdGFnX3R5cGU7Ci0gICB0eXBlZGVmIGlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsPEJhc2UsIERlcml2ZWQsIHRhZ190eXBlPiBpbXA7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBpbXA6OnZhbHVlKTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoCi0gICAgICBpc192aXJ0dWFsX2Jhc2Vfb2YKLSAgICAgICAsIEJhc2UKLSAgICAgICAsIERlcml2ZWQKLSAgICAgICAsICg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsMjxCYXNlLERlcml2ZWQ+Ojp2YWx1ZSkgCi0pCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc192aXJ0dWFsX2Jhc2Vfb2YsQmFzZSYsRGVyaXZlZCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfdmlydHVhbF9iYXNlX29mLEJhc2UsRGVyaXZlZCYsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX3ZpcnR1YWxfYmFzZV9vZixCYXNlJixEZXJpdmVkJixmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWM2YzNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1ZPSURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1ZPSURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyogaXMgYSB0eXBlIFQgdm9pZCAtIGlzX3ZvaWQ8VD4KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdm9pZCxULF9faXNfdm9pZChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3ZvaWQsVCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX3ZvaWQsdm9pZCx0cnVlKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc192b2lkLHZvaWQgY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX3ZvaWQsdm9pZCB2b2xhdGlsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfdm9pZCx2b2lkIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotI2VuZGlmICAvLyBub24tQ29kZUdlYXIgaW1wbGVtZW50YXRpb24KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1ZPSURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGE0ZTQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgICBGaXhlZCBpc19wb2ludGVyLCBpc19yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19WT0xBVElMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwPgotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcD4KLSMgICBlbmRpZgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc192b2xhdGlsZV9ydmFsX2ZpbHRlcgotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6ZGV0YWlsOjpjdl90cmFpdHNfaW1wPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYm91bmRzPFQ+Ojp0eXBlKj46OmlzX3ZvbGF0aWxlKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmN2X3RyYWl0c19pbXA8VCo+Ojppc192b2xhdGlsZSk7Ci0jZW5kaWYKLX07Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3ZvbGF0aWxlX3J2YWxfZmlsdGVyPFQmJj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0jZW5kaWYKLX0KLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2xhdGlsZSxULF9faXNfdm9sYXRpbGUoVCkpCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi0vLyogaXMgYSB0eXBlIFQgZGVjbGFyZWQgdm9sYXRpbGUgLSBpc192b2xhdGlsZTxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2xhdGlsZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdm9sYXRpbGVfcnZhbF9maWx0ZXI8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfdm9sYXRpbGUsVCYsZmFsc2UpCi0KLSNpZiAgZGVmaW5lZChORE5CT09TVF9JTExFR0FMX0NWX1JFRkVSRU5DRVMpCi0vLyB0aGVzZSBhcmUgaWxsZWdhbCBzcGVjaWFsaXNhdGlvbnM7IGN2LXF1YWxpZmllcyBhcHBsaWVkIHRvCi0vLyByZWZlcmVuY2VzIGhhdmUgbm8gZWZmZWN0IGFjY29yZGluZyB0byBbOC4zLjJwMV0sCi0vLyBDKysgQnVpbGRlciByZXF1aXJlcyB0aGVtIHRob3VnaCBhcyBpdCB0cmVhdHMgY3YtcXVhbGlmaWVkCi0vLyByZWZlcmVuY2VzIGFzIGRpc3RpbmN0IHR5cGVzLi4uCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc192b2xhdGlsZSxUJiBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3ZvbGF0aWxlLFQmIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfdm9sYXRpbGUsVCYgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotCi15ZXNfdHlwZSBpc192b2xhdGlsZV90ZXN0ZXIodm9pZCBjb25zdCB2b2xhdGlsZSopOwotbm9fdHlwZSBpc192b2xhdGlsZV90ZXN0ZXIodm9pZCBjb25zdCopOwotCi10ZW1wbGF0ZSA8Ym9vbCBpc19yZWYsIGJvb2wgYXJyYXk+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfaGVscGVyCi0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc192b2xhdGlsZV9oZWxwZXI8ZmFsc2UsZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6Onllc190eXBlKSA9PSBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6aXNfdm9sYXRpbGVfdGVzdGVyKHQpKQotICAgICAgICAgICAgKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfaGVscGVyPGZhbHNlLHRydWU+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc192b2xhdGlsZV90ZXN0ZXIoJnQpKQotICAgICAgICAgICAgKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3ZvbGF0aWxlX2ltcGwKLSAgICA6IHB1YmxpYyBpc192b2xhdGlsZV9oZWxwZXI8Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAsIGlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3ZvbGF0aWxlLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3ZvbGF0aWxlLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3ZvbGF0aWxlLHZvaWQgdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfdm9sYXRpbGUsdm9pZCBjb25zdCB2b2xhdGlsZSx0cnVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyogaXMgYSB0eXBlIFQgZGVjbGFyZWQgdm9sYXRpbGUgLSBpc192b2xhdGlsZTxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2xhdGlsZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdm9sYXRpbGVfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19WT0xBVElMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV9zaWduZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3NpZ25lZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZDA3ZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3NpZ25lZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTUFLRV9TSUdORURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX01BS0VfU0lHTkVEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV9zaWduZWRfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWU+Ojp2YWx1ZSkpOwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9MTMwMCkKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8Ci0gICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUsIGJvb2w+Ojp2YWx1ZT46OnZhbHVlKSk7Ci0jZW5kaWYKLQotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgdF9ub19jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPCAKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NpZ25lZDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWUgPjo6dmFsdWUpLAotICAgICAgVCwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWU+Ci0gICAgICAgICA6OnZhbHVlKSwKLSAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCB1bnNpZ25lZCBjaGFyPiwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyLAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHVuc2lnbmVkIHNob3J0PiwKLSAgICAgICAgICAgICAgIHNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCB1bnNpZ25lZCBpbnQ+LAotICAgICAgICAgICAgICAgICAgaW50LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHVuc2lnbmVkIGxvbmc+LAotICAgICAgICAgICAgICAgICAgICAgbG9uZywKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0jaWZkZWYgTkROQk9PU1RfSEFTX0lOVDEyOAotICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW50MTI4X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICAgICAgICAgICBfX2ludDY0Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgbG9uZwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlLAotICAgICAgICAgLy8gTm90IGEgcmVndWxhciBpbnRlZ2VyIHR5cGU6Ci0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLAotICAgICAgICAgICAgc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSwKLSAgICAgICAgICAgICAgIHNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgaW50KSwKLSAgICAgICAgICAgICAgICAgIGludCwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgbG9uZyksCi0gICAgICAgICAgICAgICAgICAgICBsb25nLAotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSNpZmRlZiBORE5CT09TVF9IQVNfSU5UMTI4Ci0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppbnQxMjhfdHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgICAgICAgICAgICAgICAgIF9faW50NjQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBsb25nCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgYmFzZV9pbnRlZ2VyX3R5cGU7Ci0gICAKLSAgIC8vIEFkZCBiYWNrIGFueSBjb25zdCBxdWFsaWZpZXI6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgaXNfY29uc3Q8VD4sCi0gICAgICB0eXBlbmFtZSBhZGRfY29uc3Q8YmFzZV9pbnRlZ2VyX3R5cGU+Ojp0eXBlLAotICAgICAgYmFzZV9pbnRlZ2VyX3R5cGUKLSAgID46OnR5cGUgY29uc3RfYmFzZV9pbnRlZ2VyX3R5cGU7Ci0gICAKLSAgIC8vIEFkZCBiYWNrIGFueSB2b2xhdGlsZSBxdWFsaWZpZXI6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgaXNfdm9sYXRpbGU8VD4sCi0gICAgICB0eXBlbmFtZSBhZGRfdm9sYXRpbGU8Y29uc3RfYmFzZV9pbnRlZ2VyX3R5cGU+Ojp0eXBlLAotICAgICAgY29uc3RfYmFzZV9pbnRlZ2VyX3R5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEobWFrZV9zaWduZWQsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX3NpZ25lZF9pbXA8VD46OnR5cGUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRiMWRjYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX01BS0VfVU5TSUdORURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX01BS0VfVU5TSUdORURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBtYWtlX3Vuc2lnbmVkX2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIDo6bmRuYm9vc3Q6OmlzX2VudW08VD46OnZhbHVlPjo6dmFsdWUpKTsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PTEzMDApCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPAotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlLCBib29sPjo6dmFsdWU+Ojp2YWx1ZSkpOwotI2VuZGlmCi0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIHRfbm9fY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc191bnNpZ25lZDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWUgPjo6dmFsdWUpLAotICAgICAgVCwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWU+Ci0gICAgICAgICA6OnZhbHVlKSwKLSAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCBzaWduZWQgY2hhcj4sCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHNob3J0PiwKLSAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0LAotICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIGludD4sCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgbG9uZz4sCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLAotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSNpZmRlZiBORE5CT09TVF9IQVNfSU5UMTI4Ci0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnQxMjhfdHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlLAotICAgICAgICAgLy8gTm90IGEgcmVndWxhciBpbnRlZ2VyIHR5cGU6Ci0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLAotICAgICAgICAgICAgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgc2hvcnQpLAotICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGludCksCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0jaWZkZWYgTkROQk9PU1RfSEFTX0lOVDEyOAotICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZihuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0jZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSBiYXNlX2ludGVnZXJfdHlwZTsKLSAgIAotICAgLy8gQWRkIGJhY2sgYW55IGNvbnN0IHF1YWxpZmllcjoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBpc19jb25zdDxUPiwKLSAgICAgIHR5cGVuYW1lIGFkZF9jb25zdDxiYXNlX2ludGVnZXJfdHlwZT46OnR5cGUsCi0gICAgICBiYXNlX2ludGVnZXJfdHlwZQotICAgPjo6dHlwZSBjb25zdF9iYXNlX2ludGVnZXJfdHlwZTsKLSAgIAotICAgLy8gQWRkIGJhY2sgYW55IHZvbGF0aWxlIHF1YWxpZmllcjoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBpc192b2xhdGlsZTxUPiwKLSAgICAgIHR5cGVuYW1lIGFkZF92b2xhdGlsZTxjb25zdF9iYXNlX2ludGVnZXJfdHlwZT46OnR5cGUsCi0gICAgICBjb25zdF9iYXNlX2ludGVnZXJfdHlwZQotICAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShtYWtlX3Vuc2lnbmVkLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV91bnNpZ25lZF9pbXA8VD46OnR5cGUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E5Yzc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0FMTF9FWFRFTlRfSE9MVF8yMDA0XzA4MjcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQUxMX0VYVEVOVF9IT0xUXzIwMDRfMDgyNwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfYWxsX2V4dGVudHM7Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc0FycmF5PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzX2ltcGxfdHlwZW9mPHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFVbXSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICooKFQqKU5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgcmVkdWNlZF90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2FsbF9leHRlbnRzPHJlZHVjZWRfdHlwZT46OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9hbGxfZXh0ZW50cyB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2FsbF9leHRlbnRzX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSAgICAgICAgICAgICAgICAKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfYWxsX2V4dGVudHM8VD4gPjo6dHlwZSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX2FsbF9leHRlbnRzLFQpCi0gICAgfTsKLX0gLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYm91bmRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYm91bmRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc3ZTc2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2JvdW5kcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0JPVU5EU19IT0xUXzIwMDRfMDgyNwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc0FycmF5PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2JvdW5kc19pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9ib3VuZHNfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVVtdKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKigoVCopTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2JvdW5kcyB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2JvdW5kc19pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgICAgICAgICAgICAgICAgCi0gICAgICAgID46OnRlbXBsYXRlIGlubmVyPFQscmVtb3ZlX2JvdW5kczxUPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfYm91bmRzLFQpCi0gICAgfTsKLX0gLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jb25zdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmM2I5YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jb25zdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NPTlNUX0hPTFRfMjAwNF8wODI4Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NPTlNUX0hPTFRfMjAwNF8wODI4Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNQb2ludGVyLGJvb2wgSXNBcnJheSxib29sIElzQ29uc3QsYm9vbCBJc1ZvbGF0aWxlPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSBjb25zdCYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIHZvbGF0aWxlLElEPiB0ZXN0KFUgY29uc3Qgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0IFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLHRydWUsZmFsc2U+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdFtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIHZvbGF0aWxlLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0IEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3RbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSB2b2xhdGlsZVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0IHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0IHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUKLSAgICAgICAgPiByZW1vdmVfY29uc3RfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIHJlbW92ZV9jb25zdF90eXBlOjp0ZW1wbGF0ZSBpbm5lcjwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY29uc3RfdHlwZTo6dGVtcGxhdGUgdHJhbnNmb3JtX3R5cGU8VD46OnR5cGUsCi0gICAgICAgICAgICAgICAgcmVtb3ZlX2NvbnN0PFQ+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfY29uc3QsVCkKLSAgICB9OwotfS8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NPTlNUX0hPTFRfMjAwNF8wODI4CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2N2LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY3YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2EwNDM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY3YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DVl9IT0xUXzIwMDRfMDkwMQotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DVl9IT0xUXzIwMDRfMDkwMQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzUG9pbnRlcixib29sIElzQXJyYXksYm9vbCBJc0NvbnN0LGJvb2wgSXNWb2xhdGlsZT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSBjb25zdCYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUgY29uc3Qgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlIFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdCBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3RbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3Qgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZSBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdCBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0W10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFVbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9jdiB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2N2X2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlCi0gICAgICAgID4gcmVtb3ZlX2N2X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICByZW1vdmVfY3ZfdHlwZTo6dGVtcGxhdGUgaW5uZXI8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2X3R5cGU6OnRlbXBsYXRlIHRyYW5zZm9ybV90eXBlPFQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgIHJlbW92ZV9jdjxUPgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX2N2LFQpCi0gICAgfTsKLX0vL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DVl9IT0xUXzIwMDRfMDkwMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9leHRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9leHRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODhmNzVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfZXh0ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9FWFRFTlRfSE9MVF8yMDA0XzA4MjcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfRVhURU5UX0hPTFRfMjAwNF8wODI3Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzQXJyYXk+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfZXh0ZW50X2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2V4dGVudF9pbXBsX3R5cGVvZjx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVW10pOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAqKChUKilOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfZXh0ZW50IHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfZXh0ZW50X2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSAgICAgICAgICAgICAgICAKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfZXh0ZW50PFQ+ID46OnR5cGUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9leHRlbnQsVCkKLSAgICB9OwotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9CT1VORFNfSE9MVF8yMDA0XzA4MjcKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMTFiY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9QT0lOVEVSX0hPTFRfMjAwNF8wODI3Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1BPSU5URVJfSE9MVF8yMDA0XzA4MjcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8aW50IElzUG9pbnRlcj4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSopOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAqKChUKilOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfcG9pbnRlciB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3BvaW50ZXJfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfcG9pbnRlcjxUPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfcG9pbnRlcixUKQotICAgIH07Ci19IC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX1JFTU9WRV9QT0lOVEVSX0hPTFRfMjAwNF8wODI3CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MzM0NTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1JFRkVSRU5DRV9IT0xUXzIwMDRfMDgyNwotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9SRUZFUkVOQ0VfSE9MVF8yMDA0XzA4MjcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzUmVmZXJlbmNlPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZV9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfcmVmZXJlbmNlPFQ+ID46OnR5cGUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9yZWZlcmVuY2UsVCkKLSAgICB9OwotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9SRUZFUkVOQ0VfSE9MVF8yMDA0XzA4MjcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfdm9sYXRpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV92b2xhdGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTE0OTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV92b2xhdGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1ZPTEFUSUxFX0hPTFRfMjAwNF8wODI4Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1ZPTEFUSUxFX0hPTFRfMjAwNF8wODI4Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNQb2ludGVyLGJvb2wgSXNBcnJheSxib29sIElzQ29uc3QsYm9vbCBJc1ZvbGF0aWxlPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlCi0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSB2b2xhdGlsZSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIGNvbnN0LElEPiB0ZXN0KFUgY29uc3Qgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlIFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIGNvbnN0LElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUgY29uc3RbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZSB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlCi0gICAgICAgID4gcmVtb3ZlX3ZvbGF0aWxlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICByZW1vdmVfdm9sYXRpbGVfdHlwZTo6dGVtcGxhdGUgaW5uZXI8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3ZvbGF0aWxlX3R5cGU6OnRlbXBsYXRlIHRyYW5zZm9ybV90eXBlPFQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgIHJlbW92ZV92b2xhdGlsZTxUPgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX3ZvbGF0aWxlLFQpCi0gICAgfTsKLX0vL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9WT0xBVElMRV9IT0xUXzIwMDRfMDgyOApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1ZGFkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFVFJBSVRTX01TVkNfVFlQRU9GX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFVFJBSVRTX01TVkNfVFlQRU9GX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPT0xMzAwKQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPGJvb2w+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsOwotCi0gICAgICAgICAgICB0eXBlZGVmIGlkMnR5cGVfaW1wbDx0cnVlPiBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19yZWdpc3Rlcl90eXBlIDogcHVibGljIG1zdmNfZXh0cmFjdF90eXBlPElEPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsPHRydWU+ICAvL1ZDNy4wIHNwZWNpZmljIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0jIGVsc2UgCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBwdWJsaWMgbXN2Y19leHRyYWN0X3R5cGU8SUQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgbXN2Y19leHRyYWN0X3R5cGU8SUQ+IGJhc2VfdHlwZTsKLSAgICAgICAgICAgIHN0cnVjdCBiYXNlX3R5cGU6OmlkMnR5cGUgLy8gVGhpcyB1c2VzIG5pY2UgVkM2LjUgYW5kIFZDNy4xIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0jIGVuZGlmCi19fQotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFVFJBSVRTX01TVkNfVFlQRU9GX0lNUExfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL29iamVjdF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZjOWFlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL29iamVjdF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgb2JqZWN0IHRyYWl0cyBjbGFzc2VzOgotLy8gIGlzX29iamVjdCwgaXNfc2NhbGFyLCBpc19jbGFzcywgaXNfY29tcG91bmQsIGlzX3BvZCwgCi0vLyAgaGFzX3RyaXZpYWxfY29uc3RydWN0b3IsIGhhc190cml2aWFsX2NvcHksIGhhc190cml2aWFsX2Fzc2lnbiwgCi0vLyAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciwgaXNfZW1wdHkuCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX09CSkVDVF9UUkFJVFNfSFBQX0lOTENVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX09CSkVDVF9UUkFJVFNfSFBQX0lOTENVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zdGF0ZWxlc3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfT0JKRUNUX1RSQUlUU19IUFBfSU5MQ1VERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcHJvbW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3Byb21vdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWViYTRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcHJvbW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSBBbGV4YW5kZXIgTmFzb25vdi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX3Byb21vdGVfaHBwX0lOQ0xVREVECi0jZGVmaW5lIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfcHJvbW90ZV9ocHBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwPgotCi0vLyBTaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBwcm9tb3RlX2ltcGwKLSAgOiBwdWJsaWMgaW50ZWdyYWxfcHJvbW90aW9uPAotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxUPjo6dHlwZQotICAgICAgPgotewotfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKAotICAgICAgcHJvbW90ZQotICAgICwgVAotICAgICwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjpwcm9tb3RlX2ltcGw8VD46OnR5cGUKLSAgICApCi19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfcHJvbW90ZV9ocHBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yYW5rLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmFuay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNGY2MmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yYW5rLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SQU5LX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SQU5LX0hQUF9JTkNMVURFRAotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gTik7Ci19OwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VFtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCBjb25zdFtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCB2b2xhdGlsZVtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCBjb25zdCB2b2xhdGlsZVtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIGNvbnN0W10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIHZvbGF0aWxlW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIGNvbnN0IHZvbGF0aWxlW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci0jZW5kaWYKLSNlbmRpZgotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEocmFuayxULF9fYXJyYXlfcmFuayhUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEocmFuayxULCg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsMD46OnZhbHVlKSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc1YWFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfQUxMX0VYVEVOVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9BTExfRVhURU5UU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2FsbF9leHRlbnRzLFQsVCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYWxsX2V4dGVudHMsVFtOXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQ+Ojp0eXBlIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9hbGxfZXh0ZW50cyxUIGNvbnN0W05dLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VCBjb25zdD46OnR5cGUgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2FsbF9leHRlbnRzLFQgdm9sYXRpbGVbTl0sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIHZvbGF0aWxlPjo6dHlwZSB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYWxsX2V4dGVudHMsVCBjb25zdCB2b2xhdGlsZVtOXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQgY29uc3Qgdm9sYXRpbGU+Ojp0eXBlIHR5cGUpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUW10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUIGNvbnN0W10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIGNvbnN0Pjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUIHZvbGF0aWxlW10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIHZvbGF0aWxlPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUIGNvbnN0IHZvbGF0aWxlW10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIGNvbnN0IHZvbGF0aWxlPjo6dHlwZSkKLSNlbmRpZgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX0JPVU5EU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTA5NzE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9ib3VuZHMuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfYm91bmRzLFQsVCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFRbTl0sVCB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFQgY29uc3RbTl0sVCBjb25zdCB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFQgdm9sYXRpbGVbTl0sVCB2b2xhdGlsZSB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFQgY29uc3Qgdm9sYXRpbGVbTl0sVCBjb25zdCB2b2xhdGlsZSB0eXBlKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYm91bmRzLFRbXSxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2JvdW5kcyxUIGNvbnN0W10sVCBjb25zdCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9ib3VuZHMsVCB2b2xhdGlsZVtdLFQgdm9sYXRpbGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYm91bmRzLFQgY29uc3Qgdm9sYXRpbGVbXSxUIGNvbnN0IHZvbGF0aWxlKQotI2VuZGlmCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfQk9VTkRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxNjEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0NPTlNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfQ09OU1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jb25zdC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc192b2w+Ci1zdHJ1Y3QgcmVtb3ZlX2NvbnN0X2hlbHBlcgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2NvbnN0X2hlbHBlcjxULCB0cnVlPgotewotICAgIHR5cGVkZWYgVCB2b2xhdGlsZSB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY29uc3RfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0X2hlbHBlcjwKLSAgICAgICAgICB0eXBlbmFtZSBjdl90cmFpdHNfaW1wPFQqPjo6dW5xdWFsaWZpZWRfdHlwZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsPFQmJj4KLXsKLSAgICB0eXBlZGVmIFQmJiB0eXBlOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKiBjb252ZXJ0IGEgdHlwZSBUIHRvIG5vbi1jb25zdCB0eXBlIC0gcmVtb3ZlX2NvbnN0PFQ+Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2NvbnN0LFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2NvbnN0X2ltcGw8VD46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfY29uc3QsVCYsVCYpCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9jb25zdCxUIGNvbnN0W05dLFQgdHlwZVtOXSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2NvbnN0LFQgY29uc3Qgdm9sYXRpbGVbTl0sVCB2b2xhdGlsZSB0eXBlW05dKQotI2VuZGlmCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9jb25zdCxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9jb25zdF9pbXBsPFQ+Ojp0eXBlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX0NPTlNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWNiODZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0NWX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfQ1ZfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2N2LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcnZhbHVlX3JlZl9maWx0ZXJfcmVtX2N2Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmN2X3RyYWl0c19pbXA8VCo+Ojp1bnF1YWxpZmllZF90eXBlIHR5cGU7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJ2YWx1ZV9yZWZfZmlsdGVyX3JlbV9jdjxUJiY+Ci17Ci0gICB0eXBlZGVmIFQmJiB0eXBlOwotfTsKLSNlbmRpZgotCi19Ci0KLQotLy8gIGNvbnZlcnQgYSB0eXBlIFQgdG8gYSBub24tY3YtcXVhbGlmaWVkIHR5cGUgLSByZW1vdmVfY3Y8VD4KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2N2LFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cnZhbHVlX3JlZl9maWx0ZXJfcmVtX2N2PFQ+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2N2LFQmLFQmKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfY3YsVCBjb25zdFtOXSxUIHR5cGVbTl0pCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9jdixUIHZvbGF0aWxlW05dLFQgdHlwZVtOXSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2N2LFQgY29uc3Qgdm9sYXRpbGVbTl0sVCB0eXBlW05dKQotI2VuZGlmCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jdl9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfdm9sYXRpbGVfaW1wbDwgCi0gICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0X2ltcGw8VD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLX0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfY3YsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfY3ZfaW1wbDxUPjo6dHlwZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9DVl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2V4dGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9leHRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTMzMTdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2V4dGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAtMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0VYVEVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX0VYVEVOVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2V4dGVudC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9leHRlbnQsVCxUKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVFtOXSxUIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVCBjb25zdFtOXSxUIGNvbnN0IHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVCB2b2xhdGlsZVtOXSxUIHZvbGF0aWxlIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVCBjb25zdCB2b2xhdGlsZVtOXSxUIGNvbnN0IHZvbGF0aWxlIHR5cGUpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9leHRlbnQsVFtdLFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfZXh0ZW50LFQgY29uc3RbXSxUIGNvbnN0KQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2V4dGVudCxUIHZvbGF0aWxlW10sVCB2b2xhdGlsZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9leHRlbnQsVCBjb25zdCB2b2xhdGlsZVtdLFQgY29uc3Qgdm9sYXRpbGUpCi0jZW5kaWYKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYThhMmU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotICAgLy8KLSAgIC8vIFdlIG5lZWQgYWxsIHRoaXMgY3JhenkgaW5kaXJlY3Rpb24gYmVjYXVzZSBhIHR5cGUgc3VjaCBhczoKLSAgIC8vCi0gICAvLyBUICgqY29uc3QpKFUpCi0gICAvLwotICAgLy8gRG9lcyBub3QgYmluZCB0byBhIDxUKj4gb3IgPFQqY29uc3Q+IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gd2l0aCBWQzEwIGFuZCBlYXJsaWVyCi0gICAvLwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IAotICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcAotICAgewotICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gCi0gICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wPFQqPgotICAgewotICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBiPiAKLSAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXAzCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyX2ltcDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IAotICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcDM8VCwgZmFsc2U+Ci0gICB7Ci0gICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgIH07Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiAKLSAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXAyCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyX2ltcDM8VCwgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlIHR5cGU7Ci0gICB9OwotfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9wb2ludGVyLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3BvaW50ZXJfaW1wMjxUPjo6dHlwZSkKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfcG9pbnRlcixULFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcG9pbnRlcixUKixUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3BvaW50ZXIsVCogY29uc3QsVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9wb2ludGVyLFQqIHZvbGF0aWxlLFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcG9pbnRlcixUKiBjb25zdCB2b2xhdGlsZSxUKQotCi0jZWxpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfcG9pbnRlcixULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9wb2ludGVyX2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyMWM1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgZGV0YWlsewotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZgotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWY8VCYmPgotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9yZWZlcmVuY2UsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcnZhbHVlX3JlZjxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9yZWZlcmVuY2UsVCYsVCkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSUxMRUdBTF9DVl9SRUZFUkVOQ0VTKQotLy8gdGhlc2UgYXJlIGlsbGVnYWwgc3BlY2lhbGlzYXRpb25zOyBjdi1xdWFsaWZpZXMgYXBwbGllZCB0bwotLy8gcmVmZXJlbmNlcyBoYXZlIG5vIGVmZmVjdCBhY2NvcmRpbmcgdG8gWzguMy4ycDFdLAotLy8gQysrIEJ1aWxkZXIgcmVxdWlyZXMgdGhlbSB0aG91Z2ggYXMgaXQgdHJlYXRzIGN2LXF1YWxpZmllZAotLy8gcmVmZXJlbmNlcyBhcyBkaXN0aW5jdCB0eXBlcy4uLgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3JlZmVyZW5jZSxUJiBjb25zdCxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3JlZmVyZW5jZSxUJiB2b2xhdGlsZSxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3JlZmVyZW5jZSxUJiBjb25zdCB2b2xhdGlsZSxUKQotI2VuZGlmCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9yZWZlcmVuY2UsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzFlOWIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3ZvbGF0aWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV92b2xhdGlsZS5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc19jb25zdD4KLXN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaGVscGVyCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaGVscGVyPFQsdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIFQgY29uc3QgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfdm9sYXRpbGVfaGVscGVyPAotICAgICAgICAgIHR5cGVuYW1lIGN2X3RyYWl0c19pbXA8VCo+Ojp1bnF1YWxpZmllZF90eXBlCi0gICAgICAgICwgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGw8VCYmPgotewotICAgIHR5cGVkZWYgVCYmIHR5cGU7Ci19OwotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKiBjb252ZXJ0IGEgdHlwZSBUIHRvIGEgbm9uLXZvbGF0aWxlIHR5cGUgLSByZW1vdmVfdm9sYXRpbGU8VD4KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfdm9sYXRpbGUsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfdm9sYXRpbGVfaW1wbDxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV92b2xhdGlsZSxUJixUJikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX3ZvbGF0aWxlLFQgdm9sYXRpbGVbTl0sVCB0eXBlW05dKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfdm9sYXRpbGUsVCBjb25zdCB2b2xhdGlsZVtOXSxUIGNvbnN0IHR5cGVbTl0pCi0jZW5kaWYKLQotI2VsaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3ZvbGF0aWxlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3ZvbGF0aWxlX2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfVk9MQVRJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3NhbWVfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvc2FtZV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDc2YzBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvc2FtZV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgQWxla3NleSBHdXJ0b3ZveSwgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgaXNfc2FtZToKLQotI2lmbmRlZiBORE5CT09TVF9UVF9TQU1FX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfU0FNRV9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9UVF9TQU1FX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmJhYTBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyB0cmFpdHMgY2xhc3NlcyBmb3IgdHJhbnNmb3JtaW5nIG9uZSB0eXBlIHRvIGFub3RoZXI6Ci0vLyAgcmVtb3ZlX3JlZmVyZW5jZSwgYWRkX3JlZmVyZW5jZSwgcmVtb3ZlX2JvdW5kcywgcmVtb3ZlX3BvaW50ZXIuCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1RSQU5TRk9STV9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQU5TRk9STV9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfVFJBTlNGT1JNX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTE2MGM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOTkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1RZUEVfV0lUSF9BTElHTk1FTlRfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFlQRV9XSVRIX0FMSUdOTUVOVF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvdHJhbnNmb3JtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hcHBlbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMjEpIC8vIGFsaWdubWVudCBpcyBzZW5zaXRpdmUgdG8gcGFja2luZwotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1jbGFzcyBhbGlnbm1lbnRfZHVtbXk7Ci10eXBlZGVmIHZvaWQgKCpmdW5jdGlvbl9wdHIpKCk7Ci10eXBlZGVmIGludCAoYWxpZ25tZW50X2R1bW15OjoqbWVtYmVyX3B0cik7Ci10eXBlZGVmIGludCAoYWxpZ25tZW50X2R1bW15OjoqbWVtYmVyX2Z1bmN0aW9uX3B0cikoKTsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCggXAotICAgICAgICAxMiwgKCBcCi0gICAgICAgIGNoYXIsIHNob3J0LCBpbnQsIGxvbmcsICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGUgXAotICAgICAgICAsIHZvaWQqLCBmdW5jdGlvbl9wdHIsIG1lbWJlcl9wdHIsIG1lbWJlcl9mdW5jdGlvbl9wdHIpKQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCggXAotICAgICAgICAxMSwgKCBcCi0gICAgICAgIGNoYXIsIHNob3J0LCBpbnQsIGxvbmcsIGZsb2F0LCBkb3VibGUsIGxvbmcgZG91YmxlIFwKLSAgICAgICAgLCB2b2lkKiwgZnVuY3Rpb25fcHRyLCBtZW1iZXJfcHRyLCBtZW1iZXJfZnVuY3Rpb25fcHRyKSkKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19PTkVfVChELERhdGEsVCkgbmRuYm9vc3Q6OmRldGFpbDo6aGFzX29uZV9UPCBUID4KLQotI2RlZmluZSBORE5CT09TVF9UVF9BTElHTk1FTlRfU1RSVUNUX1RZUEVTICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk0oTkROQk9PU1RfVFRfSEFTX09ORV9ULCAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9UVF9BTElHTk1FTlRfQkFTRV9UWVBFUykKLQotI2RlZmluZSBORE5CT09TVF9UVF9BTElHTk1FTlRfVFlQRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfTElTVF9BUFBFTkQoTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMsICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9TVFJVQ1RfVFlQRVMpCi0KLS8vCi0vLyBsb3dlcl9hbGlnbm1lbnRfaGVscGVyIC0tCi0vLwotLy8gVGhpcyB0ZW1wbGF0ZSBnZXRzIGluc3RhbnRpYXRlZCBhIGxvdCwgc28gdXNlIHBhcnRpYWwKLS8vIHNwZWNpYWxpemF0aW9uIHdoZW4gYXZhaWxhYmxlIHRvIHJlZHVjZSB0aGUgY29tcGlsZXIgYnVyZGVuLgotLy8KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8Ym9vbCBmb3VuZCA9IHRydWU+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcl9pbXBsCi17Ci0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90LCBjbGFzcz4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotICAgICAgICBlbnVtIHsgdmFsdWUgPSB0cnVlIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCB0YXJnZXQsIGNsYXNzIFRlc3RUeXBlPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgOiBwdWJsaWMgbXBsOjppZl9jPChhbGlnbm1lbnRfb2Y8VGVzdFR5cGU+Ojp2YWx1ZSA9PSB0YXJnZXQpLCBUZXN0VHlwZSwgY2hhcj4KLSAgICB7Ci0gICAgICAgIGVudW0geyB2YWx1ZSA9IChhbGlnbm1lbnRfb2Y8VGVzdFR5cGU+Ojp2YWx1ZSA9PSB0YXJnZXQpIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGZvdW5kLCBzdGQ6OnNpemVfdCB0YXJnZXQsIGNsYXNzIFRlc3RUeXBlPgotc3RydWN0IGxvd2VyX2FsaWdubWVudF9oZWxwZXIKLSAgOiBwdWJsaWMgbG93ZXJfYWxpZ25tZW50X2hlbHBlcl9pbXBsPGZvdW5kPjo6dGVtcGxhdGUgYXBwbHk8dGFyZ2V0LFRlc3RUeXBlPgotewotfTsKLSNlbHNlCi10ZW1wbGF0ZSA8Ym9vbCBmb3VuZCwgc3RkOjpzaXplX3QgdGFyZ2V0LCBjbGFzcyBUZXN0VHlwZT4KLXN0cnVjdCBsb3dlcl9hbGlnbm1lbnRfaGVscGVyCi17Ci0gICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwotfTsKLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IHRhcmdldCwgY2xhc3MgVGVzdFR5cGU+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcjxmYWxzZSx0YXJnZXQsVGVzdFR5cGU+Ci17Ci0gICAgZW51bSB7IHZhbHVlID0gKGFsaWdubWVudF9vZjxUZXN0VHlwZT46OnZhbHVlID09IHRhcmdldCkgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzx2YWx1ZSwgVGVzdFR5cGUsIGNoYXI+Ojp0eXBlIHR5cGU7Ci19OwotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQ0hPT1NFX01JTl9BTElHTk1FTlQoUixQLEksVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlbmFtZSBsb3dlcl9hbGlnbm1lbnRfaGVscGVyPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGZvdW5kLEkpLHRhcmdldCxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQodCxJKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoZm91bmQsTkROQk9PU1RfUFBfSU5DKEkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgPSBsb3dlcl9hbGlnbm1lbnRfaGVscGVyPE5ETkJPT1NUX1BQX0NBVChmb3VuZCxJKSx0YXJnZXQsVCA+Ojp2YWx1ZSAgXAotICAgICAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NIT09TRV9UKFIsUCxJLFQpIFQgTkROQk9PU1RfUFBfQ0FUKHQsSSk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc19vbmVfVAotewotICBUIGRhdGE7Ci19OwotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgdGFyZ2V0PgotdW5pb24gbG93ZXJfYWxpZ25tZW50Ci17Ci0gICAgZW51bSB7IGZvdW5kMCA9IGZhbHNlIH07Ci0KLSAgICBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0koCi0gICAgICAgICAgTkROQk9PU1RfVFRfQ0hPT1NFX01JTl9BTElHTk1FTlQKLSAgICAgICAgLCBpZ25vcmVkCi0gICAgICAgICwgTkROQk9PU1RfVFRfQUxJR05NRU5UX1RZUEVTCi0gICAgICAgICkKLX07Ci0KLXVuaW9uIG1heF9hbGlnbgotewotICAgIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSSgKLSAgICAgICAgICBORE5CT09TVF9UVF9DSE9PU0VfVAotICAgICAgICAsIGlnbm9yZWQKLSAgICAgICAgLCBORE5CT09TVF9UVF9BTElHTk1FTlRfVFlQRVMKLSAgICAgICAgKQotfTsKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9CQVNFX1RZUEVTCi0jdW5kZWYgTkROQk9PU1RfVFRfSEFTX09ORV9UCi0jdW5kZWYgTkROQk9PU1RfVFRfQUxJR05NRU5UX1NUUlVDVF9UWVBFUwotI3VuZGVmIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9UWVBFUwotI3VuZGVmIE5ETkJPT1NUX1RUX0NIT09TRV9NSU5fQUxJR05NRU5UCi0jdW5kZWYgTkROQk9PU1RfVFRfQ0hPT1NFX1QKLQotdGVtcGxhdGU8c3RkOjpzaXplX3QgVEFsaWduLCBzdGQ6OnNpemVfdCBBbGlnbj4KLXN0cnVjdCBpc19hbGlnbmVkCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsCi0gICAgICAgIHZhbHVlID0gKFRBbGlnbiA+PSBBbGlnbikgJiAoVEFsaWduICUgQWxpZ24gPT0gMCkKLSAgICAgICAgKTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8MT4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwyPiAsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDQ+ICx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8OD4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwxMD4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwxNj4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwzMj4gLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGU8c3RkOjpzaXplX3QgQWxpZ24+Ci1zdHJ1Y3QgaXNfcG9kPCA6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDxBbGlnbj4gPgotewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gdHJ1ZSk7Ci19OwotI2VuZGlmCi0KLS8vIFRoaXMgYWxpZ25tZW50IG1ldGhvZCBvcmlnaW5hbGx5IGR1ZSB0byBCcmlhbiBQYXJrZXIsIGltcGxlbWVudGVkIGJ5IERhdmlkCi0vLyBBYnJhaGFtcywgYW5kIHRoZW4gcG9ydGVkIGhlcmUgYnkgRG91ZyBHcmVnb3IuCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgQWxpZ24+Ci1jbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50X2ltcAotewotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8QWxpZ24+IHQxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYWxpZ25lZDwgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPHQxPjo6dmFsdWUsQWxpZ24gPjo6dmFsdWUKLSAgICAgICAgLCB0MQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduCi0gICAgICAgID46OnR5cGUgYWxpZ25fdDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgZm91bmQgPSBhbGlnbm1lbnRfb2Y8YWxpZ25fdD46OnZhbHVlKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoZm91bmQgPj0gQWxpZ24pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoZm91bmQgJSBBbGlnbiA9PSAwKTsKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIGFsaWduX3QgdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEFsaWduPgotY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudCAKLSAgOiBwdWJsaWMgOjpuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDxBbGlnbj4KLXsKLX07Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotbmFtZXNwYWNlIGFsaWduIHsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygyKSkpIGEyIHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDQpKSkgYTQge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oOCkpKSBhOCB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKSBhMTYge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSkgYTMyIHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDY0KSkpIGE2NCB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxMjgpKSkgYTEyOCB7fTsKLX0KLQotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDE+ICB7IHB1YmxpYzogdHlwZWRlZiBjaGFyIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8Mj4gIHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphMiB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDQ+ICB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTQgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDw4PiAgeyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmE4IHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTY+IHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphMTYgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwzMj4geyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmEzMiB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDY0PiB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTY0IHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTI4PiB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTEyOCB0eXBlOyB9OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTYsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMzIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphNjQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTI4LHRydWUpCi19Ci0jZW5kaWYKLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoZGVmaW5lZChORE5CT09TVF9JTlRFTCkgJiYgZGVmaW5lZChfTVNDX1ZFUikpKSAmJiBfTVNDX1ZFUiA+PSAxMzAwCi0vLwotLy8gTVNWQyBzdXBwb3J0cyB0eXBlcyB3aGljaCBoYXZlIGFsaWdubWVudHMgZ3JlYXRlciB0aGFuIHRoZSBub3JtYWwKLS8vIG1heGltdW06IHRoZXNlIGFyZSB1c2VkIGZvciBleGFtcGxlIGluIHRoZSB0eXBlcyBfX202NCBhbmQgX19tMTI4Ci0vLyB0byBwcm92aWRlIHR5cGVzIHdpdGggYWxpZ25tZW50IHJlcXVpcmVtZW50cyB3aGljaCBtYXRjaCB0aGUgU1NFCi0vLyByZWdpc3RlcnMuICBUaGVyZWZvcmUgd2UgZXh0ZW5kIHR5cGVfd2l0aF9hbGlnbm1lbnQ8PiB0byBzdXBwb3J0Ci0vLyBzdWNoIHR5cGVzLCBob3dldmVyLCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgdG8gdXNlIGEgYnVpbHRpbiB0eXBlCi0vLyB3aGVuZXZlciBwb3NzaWJsZSBvdGhlcndpc2Ugd2UgYnJlYWsgcHJldmlvdXNseSB3b3JraW5nIGNvZGU6Ci0vLyBzZWUgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAubGliLmJvb3N0LmRldmVsLzE3MzAxMQotLy8gZm9yIGFuIGV4YW1wbGUgYW5kIHRlc3QgY2FzZS4gIFRodXMgdHlwZXMgbGlrZSBhOCBiZWxvdyB3aWxsCi0vLyBiZSB1c2VkICpvbmx5KiBpZiB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gY2FuJ3QgcHJvdmlkZSBhIHR5cGUKLS8vIHdpdGggc3VpdGFibGUgYWxpZ25tZW50LiAgVGhpcyBkb2VzIG1lYW4gaG93ZXZlciwgdGhhdCB0eXBlX3dpdGhfYWxpZ25tZW50PD4KLS8vIG1heSByZXR1cm4gYSB0eXBlIHdoaWNoIGNhbm5vdCBiZSBwYXNzZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIGNhbGwKLS8vIGJ5IHZhbHVlIChhbmQgbmVpdGhlciBjYW4gYW55IHR5cGUgY29udGFpbmluZyBzdWNoIGEgdHlwZSBsaWtlCi0vLyBCb29zdC5PcHRpb25hbCkuICBIb3dldmVyLCB0aGlzIG9ubHkgaGFwcGVucyB3aGVuIHdlIGhhdmUgbm8gY2hvaWNlIAotLy8gaW4gdGhlIG1hdHRlciBiZWNhdXNlIG5vIG90aGVyICJvcmRpbmFyeSIgdHlwZSBpcyBhdmFpbGFibGUuCi0vLwotbmFtZXNwYWNlIGFsaWduIHsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDgpKSBhOCB7IAotICAgY2hhciBtWzhdOyAKLSAgIHR5cGVkZWYgYTggdHlwZTsKLX07Ci1zdHJ1Y3QgX19kZWNsc3BlYyhhbGlnbigxNikpIGExNiB7IAotICAgY2hhciBtWzE2XTsgCi0gICB0eXBlZGVmIGExNiB0eXBlOwotfTsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDMyKSkgYTMyIHsgCi0gICBjaGFyIG1bMzJdOyAKLSAgIHR5cGVkZWYgYTMyIHR5cGU7Ci19Owotc3RydWN0IF9fZGVjbHNwZWMoYWxpZ24oNjQpKSBhNjQgCi17IAotICAgY2hhciBtWzY0XTsgCi0gICB0eXBlZGVmIGE2NCB0eXBlOwotfTsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDEyOCkpIGExMjggeyAKLSAgIGNoYXIgbVsxMjhdOyAKLSAgIHR5cGVkZWYgYTEyOCB0eXBlOwotfTsKLX0KLQotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDg+ICAKLXsgCi0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDgsCi0gICAgICBhbGlnbjo6YTgsCi0gICAgICBuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDw4PiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDE2PiAKLXsgCi0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDE2LAotICAgICAgYWxpZ246OmExNiwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDE2PiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDMyPiAKLXsgCi0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDMyLAotICAgICAgYWxpZ246OmEzMiwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDMyPiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDY0PiB7Ci0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDY0LAotICAgICAgYWxpZ246OmE2NCwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDY0PiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDEyOD4gewotICAgdHlwZWRlZiBtcGw6OmlmX2M8Ci0gICAgICA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgPCAxMjgsCi0gICAgICBhbGlnbjo6YTEyOCwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDEyOD4gPjo6dHlwZSB0MTsgCi1wdWJsaWM6IAotICAgdHlwZWRlZiB0MTo6dHlwZSB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTYsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMzIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphNjQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTI4LHRydWUpCi19Ci0jZW5kaWYKLQotI2Vsc2UKLQotLy8KLS8vIEJvcmxhbmQgc3BlY2lmaWMgdmVyc2lvbiwgd2UgaGF2ZSB0aGlzIGZvciB0d28gcmVhc29uczoKLS8vIDEpIFRoZSB2ZXJzaW9uIGFib3ZlIGRvZXNuJ3QgYWx3YXlzIGNvbXBpbGUgKHdpdGggdGhlIG5ldyB0ZXN0IGNhc2VzIGZvciBleGFtcGxlKQotLy8gMikgQmVjYXVzZSBvZiBCb3JsYW5kcyAjcHJhZ21hIG9wdGlvbiB3ZSBjYW4gY3JlYXRlIHR5cGVzIHdpdGggYWxpZ25tZW50cyB0aGF0IGFyZQotLy8gICAgZ3JlYXRlciB0aGF0IHRoZSBsYXJnZXN0IGFsaWduZWQgYnVpbHRpbiB0eXBlLgotCi1uYW1lc3BhY2UgYWxpZ257Ci0jcHJhZ21hIG9wdGlvbiBwdXNoIC1hMTYKLXN0cnVjdCBhMnsgc2hvcnQgczsgfTsKLXN0cnVjdCBhNHsgaW50IHM7IH07Ci1zdHJ1Y3QgYTh7IGRvdWJsZSBzOyB9Owotc3RydWN0IGExNnsgbG9uZyBkb3VibGUgczsgfTsKLSNwcmFnbWEgb3B0aW9uIHBvcAotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdHlwZWRlZiA6Om5kbmJvb3N0OjphbGlnbjo6YTE2IG1heF9hbGlnbjsKLQotLy8jaWYgISBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphNCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE4LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTE2LHRydWUpCi0vLyNlbmRpZgotfQotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQKLXsKLSAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQgdG8gaGVyZSwgYnV0IGlmIHdlIGRvIHVzZSB0aGUgbWF4aW1hbGx5Ci0gICAvLyBhbGlnbmVkIHR5cGU6Ci0gICAvLyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDApOwotICAgdHlwZWRlZiBhbGlnbjo6YTE2IHR5cGU7Ci19OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8MT57IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8Mj57IHR5cGVkZWYgYWxpZ246OmEyIHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgdHlwZV93aXRoX2FsaWdubWVudDw0PnsgdHlwZWRlZiBhbGlnbjo6YTQgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB0eXBlX3dpdGhfYWxpZ25tZW50PDg+eyB0eXBlZGVmIGFsaWduOjphOCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTY+eyB0eXBlZGVmIGFsaWduOjphMTYgdHlwZTsgfTsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9UWVBFX1dJVEhfQUxJR05NRU5UX0lOQ0xVREVECi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZG1jL3R5cGVvZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2RtYy90eXBlb2ZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNDBmNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZG1jL3R5cGVvZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcgUGVkZXIgSG9sdAotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSB0eXBlX29mCi0gICAgewotCi0gICAgICAgIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgZW5jb2RlX2NvdW50ZXIgOiBlbmNvZGVfY291bnRlcjxOIC0gMT4ge307Ci0gICAgICAgIHRlbXBsYXRlPD4gc3RydWN0IGVuY29kZV9jb3VudGVyPDA+IHt9OwotCi0gICAgICAgIGNoYXIgKCplbmNvZGVfaW5kZXgoLi4uKSlbMV07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSAoc2l6ZW9mKCpuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX2luZGV4KChuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX2NvdW50ZXI8MTAwMD4qKTApKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVhUX0lOREVYKG5leHQpIGZyaWVuZCBjaGFyICgqZW5jb2RlX2luZGV4KGVuY29kZV9jb3VudGVyPG5leHQ+KikpW25leHRdOwotCi0KLSAgICAgICAgLy9UeXBlb2YgY29kZQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4gYmFzZV90eXBlOwotICAgICAgICAgICAgc3RydWN0IGJhc2VfdHlwZTo6aWQydHlwZSAvLyBUaGlzIHVzZXMgbmljZSBWQzYuNSBhbmQgVkM3LjEgYnVnZmVhdHVyZSwgYWxzbyB3b3JrcyBmb3IgRGlnaXRhbCBNYXJzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0KLSAgICAgICAgdGVtcGxhdGU8aW50IElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y190eXBlaWRfd3JhcHBlciB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPG1wbDo6aW50XzxJRD4gPjo6aWQydHlwZSBpZDJ0eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy9UaWUgaXQgYWxsIHRvZ2V0aGVyCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBlbmNvZGVfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICAvL0dldCB0aGUgbmV4dCBhdmFpbGFibGUgY29tcGlsZSB0aW1lIGNvbnN0YW50cyBpbmRleAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPU5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSk7Ci0gICAgICAgICAgICAvL0luc3RhbnRpYXRlIHRoZSB0ZW1wbGF0ZQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxtcGw6OmludF88dmFsdWU+ID46OmlkMnR5cGUgdHlwZTsKLSAgICAgICAgICAgIC8vU2V0IHRoZSBuZXh0IGNvbXBpbGUgdGltZSBjb25zdGFudHMgaW5kZXgKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxuZXh0PXZhbHVlKzEpOwotICAgICAgICAgICAgLy9JbmNyZW1lbnQgdGhlIGNvbXBpbGUgdGltZSBjb25zdGFudCAob25seSBuZWVkZWQgd2hlbiBleHRlbnNpb25zIGFyZSBub3QgYWN0aXZlCi0gICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3Qgc2l6ZXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyKCp0eXBlKVtlbmNvZGVfdHlwZTxUPjo6dmFsdWVdOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICB0eXBlbmFtZSBzaXplcjxUPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCBjb25zdCYpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9yZ2FuaXplciwgdHlwZW5hbWUgVD4KLSAgICAgICAgbXN2Y19yZWdpc3Rlcl90eXBlPFQsT3JnYW5pemVyPiB0eXBlb2ZfcmVnaXN0ZXJfdHlwZShjb25zdCBUJixPcmdhbml6ZXIqID0wKTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GKGV4cHIpIFwKLSAgICBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y190eXBlaWRfd3JhcHBlcjxzaXplb2YoKm5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfc3RhcnQoZXhwcikpPjo6dHlwZQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMKGV4cHIpIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRihleHByKQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9yZWdpc3Rlcl92YWx1ZT1zaXplb2YobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSk7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHR5cGU7XAotICAgIH07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpO1wKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgICAgIHR5cGVkZWYgaWQydHlwZTo6dHlwZSB0eXBlO1wKLSAgICB9OwotCi0gICAgfQotfQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVhMTE2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBib29zdGluc3BlY3Q6bm91bm5hbWVkCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1NVUFBSRVNTX1VOTkFNRURfTkFNRVNQQUNFCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUyBuYW1lc3BhY2UgeyBuYW1lc3BhY2UgbmRuYm9vc3RfdHlwZW9mIHsKLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMgfX0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVIgbmRuYm9vc3RfdHlwZW9mCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUyBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TIH19Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfTlNfUVVBTElGSUVSIG5kbmJvb3N0Ojp0eXBlX29mCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFWFQgInVubmFtZWQgbmFtZXNwYWNlIGlzIG9mZiIKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHA+Ci0KLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFR5cGVfTm90X1JlZ2lzdGVyZWRfV2l0aF9UeXBlb2ZfU3lzdGVtPgotc3RydWN0IGVuY29kZV90eXBlX2ltcGw7Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbAotewotICAgIHR5cGVkZWYgaW50IHR5cGU7ICAvLyBNU1ZDIEVUSSB3b3JrYXJvdW5kCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGRlY29kZV9uZXN0ZWRfdGVtcGxhdGVfaGVscGVyX2ltcGw7Ci0KLU5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+Ci0gICAgc3RydWN0IGVuY29kZV90eXBlIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmVuY29kZV90eXBlX2ltcGw8ViwgVD4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV90eXBlIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmRlY29kZV90eXBlX2ltcGw8Ci0gICAgICAgIHR5cGVuYW1lIEl0ZXI6OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIEl0ZXI6Om5leHQKLSAgICA+Ci0gICAge307Ci19fQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjJiNDc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGVfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX0RFQ09ERV9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX1BBUkFNU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0KLS8vIEFzc3VtZXMgaXRlcjAgY29udGFpbnMgaW5pdGlhbCBpdGVyYXRvcgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU0oeiwgbiwgdGV4dCkgICBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8aXRlciMjbj4gZGVjb2RlIyNuOyAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlIyNuOjp0eXBlIHAjI247ICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlIyNuOjppdGVyIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpOwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKG4pXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNLCB+KQotCi0vLyBUaGUgUDAsIFAxLCAuLi4gUE4gYXJlIGVuY29kZWQgYW5kIGFkZGVkIHRvIFYgCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVNfQkVHSU4oeiwgbiwgdGV4dClcCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV90eXBlPAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TX0VORCh6LCBuLCB0ZXh0KVwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChQLCBuKT46OnR5cGUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhuLCBJRCkgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNU19CRUdJTiwgfikgXAotICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8ViwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+Ojp0eXBlICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNU19FTkQsIH4pCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50X2VuY29kaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludF9lbmNvZGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNzI3N2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50X2VuY29kaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0lOVF9FTkNPRElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVF9FTkNPRElOR19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGdldF91bnNpZ25lZAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8c2lnbmVkIGNoYXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsKLSAgICB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGdldF91bnNpZ25lZDxjaGFyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8c2hvcnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdHlwZTsKLSAgICB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGdldF91bnNpZ25lZDxsb25nPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBuLCBib29sIE92ZXJmbG93PgotICAgIHN0cnVjdCBwYWNrCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QgLCB2YWx1ZT0oKG4gKyAxKSAqIDIgKyAoT3ZlcmZsb3cgPyAxIDogMCkpKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbT4KLSAgICBzdHJ1Y3QgdW5wYWNrCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKG0gLyAyKSAtIDEpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIG92ZXJmbG93ID0gKG0gJSAyID09IDEpKTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIHN0ZDo6c2l6ZV90IG4sIGJvb2wgb3ZlcmZsb3cgPSAobiA+PSAweDNmZmZmZmZmKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3NpemVfdCA6IHB1c2hfYmFjazwKLSAgICAgICAgViwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHBhY2s8biwgZmFsc2U+Ojp2YWx1ZT4KLSAgICA+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBzdGQ6OnNpemVfdCBuPgotICAgIHN0cnVjdCBlbmNvZGVfc2l6ZV90PFYsIG4sIHRydWU+IDogcHVzaF9iYWNrPHR5cGVuYW1lIHB1c2hfYmFjazwKLSAgICAgICAgViwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHBhY2s8biAlIDB4M2ZmZmZmZmUsIHRydWU+Ojp2YWx1ZT4gPjo6dHlwZSwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PG4gLyAweDNmZmZmZmZlPgotICAgID4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQsIFQgbj4KLSAgICBzdHJ1Y3QgZW5jb2RlX2ludGVncmFsIDogZW5jb2RlX3NpemVfdDwgViwgKHR5cGVuYW1lIGdldF91bnNpZ25lZDxUPjo6dHlwZSluLCgoKHR5cGVuYW1lIGdldF91bnNpZ25lZDxUPjo6dHlwZSluKT49MHgzZmZmZmZmZikgPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgYm9vbCBiPgotICAgIHN0cnVjdCBlbmNvZGVfaW50ZWdyYWw8ViwgYm9vbCwgYj4gOiBlbmNvZGVfc2l6ZV90PCBWLCBiPzE6MCwgZmFsc2U+Ci0gICAge307Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBib29sIG92ZXJmbG93PgotICAgIHN0cnVjdCBkZWNvZGVfc2l6ZV90OwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3NpemVfdDxuLCBJdGVyLCBmYWxzZT4KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCx2YWx1ZSA9IG4pOwotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3NpemVfdDxuLCBJdGVyLCB0cnVlPgotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LG0gPSBJdGVyOjp0eXBlOjp2YWx1ZSk7Ci0KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LHZhbHVlID0gKHN0ZDo6c2l6ZV90KW0gKiAweDNmZmZmZmZlICsgbik7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcjo6bmV4dCBpdGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfaW50ZWdyYWwKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVjb2RlX2ludGVncmFsPFQsSXRlcj4gc2VsZl90OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsbSA9IEl0ZXI6OnR5cGU6OnZhbHVlKTsKLQotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsbiA9IHVucGFjazxtPjo6dmFsdWUpOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCxvdmVyZmxvdyA9IHVucGFjazxtPjo6b3ZlcmZsb3cpOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcjo6bmV4dCBuZXh0cG9zOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBUIHZhbHVlID0gKFQpKHN0ZDo6c2l6ZV90KWRlY29kZV9zaXplX3Q8biwgbmV4dHBvcywgb3ZlcmZsb3c+Ojp2YWx1ZTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRlY29kZV9zaXplX3Q8c2VsZl90OjpuLCBuZXh0cG9zLCBzZWxmX3Q6Om92ZXJmbG93Pjo6aXRlciBpdGVyOwotICAgIH07Ci0KLX19Ly9uYW1lc3BhY2UKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfSU5UX0VOQ09ESU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50ZWdyYWxfdGVtcGxhdGVfcGFyYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50ZWdyYWxfdGVtcGxhdGVfcGFyYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQxOGYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludGVncmFsX3RlbXBsYXRlX3BhcmFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfdW5zaWduZWQgKHVuc2lnbmVkKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfc2lnbmVkIChzaWduZWQpCi0KLSNkZWZpbmUgY2hhcl9ORE5CT09TVF9UWVBFT0YgKGNoYXIpCi0jZGVmaW5lIHNob3J0X05ETkJPT1NUX1RZUEVPRiAoc2hvcnQpCi0jZGVmaW5lIGludF9ORE5CT09TVF9UWVBFT0YgKGludCkKLSNkZWZpbmUgbG9uZ19ORE5CT09TVF9UWVBFT0YgKGxvbmcpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2NoYXJfTkROQk9PU1RfVFlQRU9GIChjaGFyKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfc2hvcnRfTkROQk9PU1RfVFlQRU9GIChzaG9ydCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2ludF9ORE5CT09TVF9UWVBFT0YgKGludCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2xvbmdfTkROQk9PU1RfVFlQRU9GIChsb25nKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfYm9vbF9ORE5CT09TVF9UWVBFT0YgKGJvb2wpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl91bnNpZ25lZF9ORE5CT09TVF9UWVBFT0YgKHVuc2lnbmVkKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfc2l6ZV90X05ETkJPT1NUX1RZUEVPRiAoc2l6ZV90KQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9jaGFyICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShjaGFyKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2hvcnQgICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2hvcnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9pbnQgICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShpbnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9sb25nICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShsb25nKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfYm9vbCAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oYm9vbCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Vuc2lnbmVkICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHVuc2lnbmVkKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2l6ZV90ICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2l6ZV90KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWRjaGFyICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQgY2hhcikKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Vuc2lnbmVkc2hvcnQgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHVuc2lnbmVkIHNob3J0KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWRpbnQgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQgaW50KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWRsb25nICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQgbG9uZykKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3NpZ25lZGNoYXIgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNpZ25lZCBjaGFyKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2lnbmVkc2hvcnQgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2lnbmVkIHNob3J0KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2lnbmVkaW50ICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2lnbmVkIGludCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3NpZ25lZGxvbmcgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNpZ25lZCBsb25nKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfaW50ZWdyYWwoeCkgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oeCkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUwoWCkgaW50ZWdyYWwoWCkgTkROQk9PU1RfVFlQRU9GX0VBVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRUFUX05ETkJPT1NUX1RZUEVPRgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaW50ZWdyYWwoWCkgKGludGVncmFsKFgpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShUeXBlKVwKLSAgICAoSU5URUdSQUxfUEFSQU0pXAotICAgIChUeXBlKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFBhcmFtKVwKLSAgICBORE5CT09TVF9QUF9TRVFfRUxFTSgxLCBQYXJhbSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fRVhQQU5EVFlQRShQYXJhbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoUGFyYW0pCi0KLS8vIElOVEVHUkFMX1BBUkFNICJ2aXJ0dWFsIGZ1bmN0aW9ucyIgaW1wbGVtZW50YXRpb24KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fRU5DT0RFKFRoaXMsIG4pXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9pbnRlZ3JhbDxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChWLCBuKSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFRoaXMpLFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFAsIG4pXAotICAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFYsIE5ETkJPT1NUX1BQX0lOQyhuKSk7IAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9ERUNPREUoVGhpcywgbilcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX2ludGVncmFsPE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFRoaXMpLCBORE5CT09TVF9QUF9DQVQoaXRlciwgbik+IE5ETkJPT1NUX1BQX0NBVChkLCBuKTtcCi0gICAgc3RhdGljIGNvbnN0IE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFRoaXMpIE5ETkJPT1NUX1BQX0NBVChQLCBuKSA9IE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6dmFsdWU7XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjppdGVyIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpOwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9QTEFDRUhPTERFUihQYXJhbSlcCi0gICAgKE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFBhcmFtKSkwCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0RFQ0xBUkFUSU9OX1RZUEUoUGFyYW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFBhcmFtKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9QTEFDRUhPTERFUl9UWVBFUyhQYXJhbSwgbilcCi0gICAgTkROQk9PU1RfUFBfQ0FUKFQsbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fSVNURU1QTEFURSAwCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ3ODY4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZCBORE5CT09TVF9UWVBFT0ZfTUVTU0FHRVMKLSMgICAgcHJhZ21hIG1lc3NhZ2UoTkROQk9PU1RfVFlQRU9GX1RFWFQpCi0jZW5kaWYKLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfVEVYVApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbW9kaWZpZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21vZGlmaWVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ODViNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbW9kaWZpZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX01PRElGSUVSU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01PRElGSUVSU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHA+Ci0KLSNpbmNsdWRlIE5ETkJPT1NUX1RZUEVPRl9JTkNSRU1FTlRfUkVHSVNUUkFUSU9OX0dST1VQKCkKLQotLy8gbW9kaWZpZXJzCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoSUQsIEZ1bilcCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgRnVuKFQpPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmXAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV90eXBlPFwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8XAotICAgICAgICAgICAgVlwKLSAgICAgICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+Ojp0eXBlXAotICAgICAgICAgICAgLCBUPjo6dHlwZVwKLSAgICAgICAgICAgIHR5cGU7XAotICAgIH07XAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+IHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4sIEl0ZXI+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPEl0ZXI+IGQxO1wKLSAgICAgICAgdHlwZWRlZiBGdW4odHlwZW5hbWUgZDE6OnR5cGUpIHR5cGU7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGQxOjppdGVyIGl0ZXI7XAotICAgIH0KLQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9mdW4oVCkgY29uc3QgVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfZnVuKFQpIHZvbGF0aWxlIFQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X2Z1bihUKSB2b2xhdGlsZSBjb25zdCBUCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9wb2ludGVyX2Z1bihUKSBUKgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcmVmZXJlbmNlX2Z1bihUKSBUJgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLS8vQm9ybGFuZCBpbmNvcnJlY3RseSBoYW5kbGVzIFQgY29uc3QsIFQgY29uc3Qgdm9sYXRpbGUgYW5kIFQgdm9sYXRpbGUuCi0vL0l0IGRyb3BzIHRoZSBkZWNvcmF0aW9uIG5vIG1hdHRlciB3aGF0LCBzbyB3ZSBuZWVkIHRvIHRyeSB0byBoYW5kbGUgVCogY29uc3QgZXRjLiB3aXRob3V0IGxvb3NpbmcgdGhlIHRvcCBtb2RpZmllci4KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3BvaW50ZXJfZnVuKFQpIFQgY29uc3QgKgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfY29uc3RfcmVmZXJlbmNlX2Z1bihUKSBUIGNvbnN0ICYKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3BvaW50ZXJfZnVuKFQpIFQgdm9sYXRpbGUqCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9yZWZlcmVuY2VfZnVuKFQpIFQgdm9sYXRpbGUmCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9wb2ludGVyX2Z1bihUKSBUIHZvbGF0aWxlIGNvbnN0ICoKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X3JlZmVyZW5jZV9mdW4oVCkgVCB2b2xhdGlsZSBjb25zdCAmCi0jZW5kaWYKLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9wb2ludGVyX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9yZWZlcmVuY2VfZnVuKTsKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9wb2ludGVyX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9yZWZlcmVuY2VfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3BvaW50ZXJfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3JlZmVyZW5jZV9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcG9pbnRlcl9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcmVmZXJlbmNlX2Z1bik7Ci0jZW5kaWYKLQotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0Ci0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2NvbnN0X2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3BvaW50ZXJfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3JlZmVyZW5jZV9mdW4KLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3BvaW50ZXJfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3JlZmVyZW5jZV9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcG9pbnRlcl9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcmVmZXJlbmNlX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9wb2ludGVyX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9yZWZlcmVuY2VfZnVuCi0jZW5kaWYKLQotLy8gYXJyYXlzCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoSUQsIFF1YWxpZmllcilcCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVCwgaW50IE4+XAotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFF1YWxpZmllcigpIFRbTl0+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWZcCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3R5cGU8XAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxcCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFwKLSAgICAgICAgICAgIFZcCi0gICAgICAgICAgICAsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gPjo6dHlwZVwKLSAgICAgICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PE4+ID46OnR5cGVcCi0gICAgICAgICAgICAsIFQ+Ojp0eXBlXAotICAgICAgICB0eXBlO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPlwKLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+LCBJdGVyPlwKLSAgICB7XAotICAgICAgICBlbnVte24gPSBJdGVyOjp0eXBlOjp2YWx1ZX07XAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTx0eXBlbmFtZSBJdGVyOjpuZXh0PiBkO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkOjp0eXBlIFF1YWxpZmllcigpIHR5cGVbbl07XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGQ6Oml0ZXIgaXRlcjtcCi0gICAgfQotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLU5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfUFBfRU1QVFkpOwotTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9QUF9JREVOVElUWShjb25zdCkpOwotTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9QUF9JREVOVElUWSh2b2xhdGlsZSkpOwotTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9QUF9JREVOVElUWSh2b2xhdGlsZSBjb25zdCkpOwotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0Ci0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX01PRElGSUVSU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21zdmMvdHlwZW9mX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZWE3ZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgSWdvciBDaGVzbm9rb3YsIG1haWx0bzppY2hlc25va292QGdtYWlsLmNvbSAoVkMgNi41LFZDIDcuMSArIGNvdW50ZXIgY29kZSkKLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IFBlZGVyIEhvbHQgKFZDIDcuMCArIGZyYW1ld29yaykKLS8vIENvcHlyaWdodCAoQykgMjAwNiBTdGV2ZW4gV2F0YW5hYmUgKFZDIDguMCkKLQotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX01TVkNfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xMzEwKQotIyAgaW5jbHVkZSA8dHlwZWluZm8+Ci0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSB0eXBlX29mCi0gICAgewotCi0gICAgICAgIC8vQ29tcGlsZSB0aW1lIGNvbnN0YW50IGNvZGUKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD49MTMwMCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpCi0gICAgICAgIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgdGhlX2NvdW50ZXI7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCxpbnQgTiA9IDUvKmZvciBzaW1pbGFyaXR5Ki8+Ci0gICAgICAgIHN0cnVjdCBlbmNvZGVfY291bnRlcgotICAgICAgICB7Ci0gICAgICAgICAgICBfX2lmX2V4aXN0cyh0aGVfY291bnRlcjxOICsgMjU2PikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9KGVuY29kZV9jb3VudGVyPFQsTiArIDI1Nz46OmNvdW50KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8TiArIDI1Nj4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgX19pZl9leGlzdHModGhlX2NvdW50ZXI8TiArIDY0PikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD0oZW5jb2RlX2NvdW50ZXI8VCxOICsgNjU+Ojpjb3VudCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8TiArIDY0PikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIF9faWZfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyAxNj4pCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD0oZW5jb2RlX2NvdW50ZXI8VCxOICsgMTc+Ojpjb3VudCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIF9faWZfbm90X2V4aXN0cyh0aGVfY291bnRlcjxOICsgMTY+KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBfX2lmX2V4aXN0cyh0aGVfY291bnRlcjxOICsgND4pCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLGNvdW50PShlbmNvZGVfY291bnRlcjxULE4gKyA1Pjo6Y291bnQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIF9faWZfbm90X2V4aXN0cyh0aGVfY291bnRlcjxOICsgND4pCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pZl9leGlzdHModGhlX2NvdW50ZXI8Tj4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9KGVuY29kZV9jb3VudGVyPFQsTiArIDE+Ojpjb3VudCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8Tj4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9Tik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgdGhlX2NvdW50ZXI8Tj4gdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSAoZW5jb2RlX2NvdW50ZXI8VD46OmNvdW50KQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FWFRfSU5ERVgobmV4dCkKLSMgZWxzZQotICAgICAgICB0ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IGVuY29kZV9jb3VudGVyIDogZW5jb2RlX2NvdW50ZXI8TiAtIDE+IHt9OwotICAgICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBlbmNvZGVfY291bnRlcjwwPiB7fTsKLQotICAgICAgICAvL05lZWQgdG8gZGVmYXVsdCB0byBhIGxhcmdlciB2YWx1ZSB0aGFuIDQsIGFzIGR1ZSB0byBNU1ZDJ3MgRVRJIGVycm9ycy4gKHNpemVvZihpbnQpPT00KQotICAgICAgICBjaGFyICgqZW5jb2RlX2luZGV4KC4uLikpWzVdOwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5ERVgoVCkgKHNpemVvZigqbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9pbmRleCgobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9jb3VudGVyPDEwMDU+KikwKSkpCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KSBmcmllbmQgY2hhciAoKmVuY29kZV9pbmRleChlbmNvZGVfY291bnRlcjxuZXh0PiopKVtuZXh0XTsKLSMgZW5kaWYKLQotICAgICAgICAvL1R5cGVvZiBjb2RlCi0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD09MTMwMCkKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxib29sPgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDsKLQotICAgICAgICAgICAgdHlwZWRlZiBpZDJ0eXBlX2ltcGw8dHJ1ZT4gaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfcmVnaXN0ZXJfdHlwZSA6IG1zdmNfZXh0cmFjdF90eXBlPElEPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsPHRydWU+ICAvL1ZDNy4wIHNwZWNpZmljIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xNDAwKQotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGVfZGVmYXVsdF9wYXJhbSB7fTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRCwgdHlwZW5hbWUgVCA9IG1zdmNfZXh0cmFjdF90eXBlX2RlZmF1bHRfcGFyYW0+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlPElELCBtc3ZjX2V4dHJhY3RfdHlwZV9kZWZhdWx0X3BhcmFtPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxib29sPgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDsKLQotICAgICAgICAgICAgdHlwZWRlZiBpZDJ0eXBlX2ltcGw8dHJ1ZT4gaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRCwgdHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlIDogbXN2Y19leHRyYWN0X3R5cGU8SUQsbXN2Y19leHRyYWN0X3R5cGVfZGVmYXVsdF9wYXJhbT4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDx0cnVlPiAgLy9WQzguMCBzcGVjaWZpYyBidWdmZWF0dXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8Ym9vbD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgaWQydHlwZV9pbXBsPHRydWU+IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRCwgVD4KLSAgICAgICAgewotICAgICAgICB9OwotIyBlbHNlCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4gYmFzZV90eXBlOwotICAgICAgICAgICAgc3RydWN0IGJhc2VfdHlwZTo6aWQydHlwZSAvLyBUaGlzIHVzZXMgbmljZSBWQzYuNSBhbmQgVkM3LjEgYnVnZmVhdHVyZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSMgZW5kaWYKLS8vIEVBTjogcHJlcHJvY2VzcyB0aGlzIGJsb2NrIG91dCBvbiBhZHZpY2Ugb2YgUGVkZXIgSG9sdAotLy8gdG8gZWxpbWluYXRlIGVycm9ycyBpbiB0eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAKLSMgaWYgMCAvL05ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw9PTEzMTApCi0gICAgICAgIHRlbXBsYXRlPGNvbnN0IHN0ZDo6dHlwZV9pbmZvJiByZWZfdHlwZV9pbmZvPgotICAgICAgICBzdHJ1Y3QgbXN2Y190eXBlaWRfd3JhcHBlciB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPG1zdmNfdHlwZWlkX3dyYXBwZXI+OjppZDJ0eXBlIGlkMnR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgd3JhcHBlZF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB3cmFwcGVkX3R5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgLy9UaGlzIGNsYXNzIGlzIHVzZWQgZm9yIHJlZ2lzdGVyaW5nIHRoZSB0eXBlIFQuIGVuY29kZV90eXBlPFQ+IGlzIG1hcHBlZCBhZ2FpbnN0IHR5cGVpZChlbmNvZGVfdHlwZTxUPikuCi0gICAgICAgIC8vbXN2Y190eXBlaWRfd3JhcHBlcjx0eXBlaWQoZW5jb2RlX3R5cGU8VD4pPiB3aWxsIG5vdyBoYXZlIGEgdHlwZSB0eXBlZGVmIHRoYXQgZXF1YWxzIGVuY29kZV90eXBlPFQ+LgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgZW5jb2RlX3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBlbmNvZGVfdHlwZTxUPiBpbnB1dF90eXBlOwotICAgICAgICAgICAgLy9JbnZva2UgcmVnaXN0cmF0aW9uIG9mIGVuY29kZV90eXBlPFQ+LiB0eXBlaWQoZW5jb2RlX3R5cGU8VD4pIGlzIG5vdyBtYXBwZWQgdG8gZW5jb2RlX3R5cGU8VD4uIERvIG5vdCB1c2UgcmVnaXN0ZXJlZF90eXBlIGZvciBhbnl0aGluZy4KLSAgICAgICAgICAgIC8vVGhlIHJlYXNvbiBmb3IgcmVnaXN0ZXJpbmcgZW5jb2RlX3R5cGU8VD4gcmF0aGVyIHRoYW4gVCwgaXMgdGhhdCBWQyBoYW5kbGVzIHR5cGVpZChmdW5jdGlvbiByZWZlcmVuY2UpIHBvb3JseS4gQnkgYWRkaW5nIGFub3RoZXIKLSAgICAgICAgICAgIC8vbGV2ZWwgb2YgaW5kaXJlY3Rpb24sIHdlIHNvbHZlIHRoaXMgcHJvYmxlbS4KLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19yZWdpc3Rlcl90eXBlPGlucHV0X3R5cGUsbXN2Y190eXBlaWRfd3JhcHBlcjx0eXBlaWQoaW5wdXRfdHlwZSk+ID46OmlkMnR5cGUgcmVnaXN0ZXJlZF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgZGlzYWJsZV9pZjwKLSAgICAgICAgICAgIHR5cGVuYW1lIGlzX2Z1bmN0aW9uPFQ+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgZW5jb2RlX3R5cGU8VD46OmlucHV0X3R5cGU+Ojp0eXBlIGVuY29kZV9zdGFydChUIGNvbnN0Jik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgZW5hYmxlX2lmPAotICAgICAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBlbmNvZGVfdHlwZTxUPjo6aW5wdXRfdHlwZT46OnR5cGUgZW5jb2RlX3N0YXJ0KFQmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcmdhbml6ZXIsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIG1zdmNfcmVnaXN0ZXJfdHlwZTxULE9yZ2FuaXplcj4gdHlwZW9mX3JlZ2lzdGVyX3R5cGUoY29uc3QgVCYpOwotCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihleHByKSBcCi0gICAgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfdHlwZWlkX3dyYXBwZXI8dHlwZWlkKG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfc3RhcnQoZXhwcikpPjo6dHlwZQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMKGV4cHIpIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRihleHByKQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotc3RydWN0IG5hbWUge1wKLSAgICBlbnVtIHtfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZih0eXBlaWQobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSl9O1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi19OwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi1zdHJ1Y3QgbmFtZSB7XAotICAgIGVudW0ge190eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKHR5cGVpZChuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKX07XAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgIHR5cGVkZWYgaWQydHlwZTo6dHlwZSB0eXBlO1wKLX07Ci0KLSMgZWxzZQotICAgICAgICB0ZW1wbGF0ZTxpbnQgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3R5cGVpZF93cmFwcGVyIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8bXBsOjppbnRfPElEPiA+OjppZDJ0eXBlIGlkMnR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgLy9Xb3JrYXJvdW5kIGZvciBFVEktYnVnIGZvciBWQzYgYW5kIFZDNwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3R5cGVpZF93cmFwcGVyPDE+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgbXN2Y190eXBlaWRfd3JhcHBlcjwxPiB0eXBlOwotICAgICAgICB9OwotICAgICAgICAvL1dvcmthcm91bmQgZm9yIEVUSS1idWcgZm9yIFZDNy4xCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IG1zdmNfdHlwZWlkX3dyYXBwZXI8ND4gewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX3R5cGVpZF93cmFwcGVyPDQ+IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy9UaWUgaXQgYWxsIHRvZ2V0aGVyCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBlbmNvZGVfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICAvL0dldCB0aGUgbmV4dCBhdmFpbGFibGUgY29tcGlsZSB0aW1lIGNvbnN0YW50cyBpbmRleAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPU5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSk7Ci0gICAgICAgICAgICAvL0luc3RhbnRpYXRlIHRoZSB0ZW1wbGF0ZQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxtcGw6OmludF88dmFsdWU+ID46OmlkMnR5cGUgdHlwZTsKLSAgICAgICAgICAgIC8vU2V0IHRoZSBuZXh0IGNvbXBpbGUgdGltZSBjb25zdGFudHMgaW5kZXgKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxuZXh0PXZhbHVlKzEpOwotICAgICAgICAgICAgLy9JbmNyZW1lbnQgdGhlIGNvbXBpbGUgdGltZSBjb25zdGFudCAob25seSBuZWVkZWQgd2hlbiBleHRlbnNpb25zIGFyZSBub3QgYWN0aXZlCi0gICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3Qgc2l6ZXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyKCp0eXBlKVtlbmNvZGVfdHlwZTxUPjo6dmFsdWVdOwotICAgICAgICB9OwotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xMzEwKQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBkaXNhYmxlX2lmPAotICAgICAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBzaXplcjxUPjo6dHlwZT46OnR5cGUgZW5jb2RlX3N0YXJ0KFQgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBlbmFibGVfaWY8Ci0gICAgICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHNpemVyPFQ+Ojp0eXBlPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCYpOwotIyBlbHNlCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICB0eXBlbmFtZSBzaXplcjxUPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCBjb25zdCYpOwotIyBlbmRpZgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcmdhbml6ZXIsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIG1zdmNfcmVnaXN0ZXJfdHlwZTxULE9yZ2FuaXplcj4gdHlwZW9mX3JlZ2lzdGVyX3R5cGUoY29uc3QgVCYsT3JnYW5pemVyKiA9MCk7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihleHByKSBcCi0gICAgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfdHlwZWlkX3dyYXBwZXI8c2l6ZW9mKCpuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3N0YXJ0KGV4cHIpKT46OnR5cGUKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RQTChleHByKSB0eXBlbmFtZSBORE5CT09TVF9UWVBFT0YoZXhwcikKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWQydHlwZTo6dHlwZSB0eXBlO1wKLSAgICB9OwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKTtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgICAgICB0eXBlZGVmIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi0gICAgfTsKLQotI2VuZGlmCi0gICAgfQotfQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbmF0aXZlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL25hdGl2ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OGI0MTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbmF0aXZlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNiBBcmthZGl5IFZlcnRsZXliCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE1TVkNfVFlQRU9GX0hBQ0sKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICAgICAgVCYgZW5zdXJlX29iaihjb25zdCBUJik7Ci0KLX19Ci0KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotIyBpZmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICBUJiBlbnN1cmVfb2JqKGNvbnN0IFQmKTsKLSMgZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxpc19mdW5jdGlvbjxUPiwgVCY+Ojp0eXBlCi0gICAgICAgIGVuc3VyZV9vYmooVCYpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgdHlwZW5hbWUgZGlzYWJsZV9pZjxpc19mdW5jdGlvbjxUPiwgVCY+Ojp0eXBlCi0gICAgICAgIGVuc3VyZV9vYmooY29uc3QgVCYpOwotIyBlbmRpZgotfX0KLQotI2VuZGlmLy9ORE5CT09TVF9OT19TRklOQUUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0YoZXhwcikgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuc3VyZV9vYmooZXhwcikpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UUEwgTkROQk9PU1RfVFlQRU9GCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9UUEwoZXhwcikgdHlwZTtcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0YoZXhwcikgdHlwZTtcCi0gICAgfTsKLQotI2VuZGlmLy9NU1ZDX1RZUEVPRl9IQUNLCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoeCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKHgsIHBhcmFtcykKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfTkFUSVZFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9wb2ludGVyc19kYXRhX21lbWJlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcG9pbnRlcnNfZGF0YV9tZW1iZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE4NzJkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9wb2ludGVyc19kYXRhX21lbWJlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9QT0lOVEVSU19EQVRBX01FTUJFUlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9QT0lOVEVSU19EQVRBX01FTUJFUlNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcD4KLQotI2luY2x1ZGUgTkROQk9PU1RfVFlQRU9GX0lOQ1JFTUVOVF9SRUdJU1RSQVRJT05fR1JPVVAoKQotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLWVudW0ge1BUUl9EQVRBX01FTV9JRCA9IE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKX07Ci0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFAwLCBjbGFzcyBQMT4KLXN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFAwIFAxOjoqPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoMiwgUFRSX0RBVEFfTUVNX0lEKSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLXN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxQVFJfREFUQV9NRU1fSUQ+LCBJdGVyPgotewotICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUygyKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHdvcmthcm91bmR7Ci0gICAgICAgIHR5cGVkZWYgcDAgVDo6KiB0eXBlOwotICAgIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxQVFJfREFUQV9NRU1fSUQ+LCBJdGVyPjo6dGVtcGxhdGUgd29ya2Fyb3VuZDxwMT46OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXI7Ci19OwotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9QT0lOVEVSU19EQVRBX01FTUJFUlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIyMjlmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5DVElPTlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5DVElPTlNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotCi0jaW5jbHVkZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSAxMAotI2VuZGlmCi0KLWVudW0gCi17Ci0gICAgRlVOX0lEICAgICAgICAgICAgICAgICAgICAgICAgICA9IE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwKLSAgICBGVU5fUFRSX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDEgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fUkVGX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDIgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBNRU1fRlVOX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDMgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBDT05TVF9NRU1fRlVOX0lEICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDQgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9NRU1fRlVOX0lEICAgICAgICAgICAgID0gRlVOX0lEICsgIDUgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9DT05TVF9NRU1fRlVOX0lEICAgICAgID0gRlVOX0lEICsgIDYgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fVkFSX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDcgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fVkFSX1BUUl9JRCAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDggKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fVkFSX1JFRl9JRCAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDkgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBNRU1fRlVOX1ZBUl9JRCAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgMTAgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBDT05TVF9NRU1fRlVOX1ZBUl9JRCAgICAgICAgICAgID0gRlVOX0lEICsgMTEgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9NRU1fRlVOX1ZBUl9JRCAgICAgICAgID0gRlVOX0lEICsgMTIgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9DT05TVF9NRU1fRlVOX1ZBUl9JRCAgID0gRlVOX0lEICsgMTMgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKQotfTsKLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTICgwLCBORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zX2l0ZXJhdGUuaHBwPgotIyBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5DVElPTlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnNfaXRlcmF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnNfaXRlcmF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNDg3YTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zX2l0ZXJhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlX3BhcmFtcy5ocHA+Ci0KLSNkZWZpbmUgbiBORE5CT09TVF9QUF9JVEVSQVRJT04oKQotCi0vLyBmdW5jdGlvbiBwb2ludGVycwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUigqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSk+Ci17Ci0gICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX1BUUl9JRCArIG4pIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUigqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSAuLi4pPgotewotICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIEZVTl9WQVJfUFRSX0lEICsgbikgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX1BUUl9JRCArIG4+LCBJdGVyPgotewotICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoKnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBJdGVyPgotc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9WQVJfUFRSX0lEICsgbj4sIEl0ZXI+Ci17Ci0gICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSgqdHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkgLi4uKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OT19GVU5DVElPTl9UWVBFUwotCi0gICAgLy8gZnVuY3Rpb24gcmVmZXJlbmNlcwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fUkVGX0lEICsgbikgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApIC4uLik+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX1ZBUl9SRUZfSUQgKyBuKSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fUkVGX0lEICsgbj4sIEl0ZXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoJnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKSBpdGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fVkFSX1JFRl9JRCArIG4+LCBJdGVyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgICAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKCZ0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSAuLi4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci0gICAgfTsKLQotICAgIC8vIGZ1bmN0aW9ucwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fSUQgKyBuKSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkgLi4uKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fVkFSX0lEICsgbikgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX0lEICsgbj4sIEl0ZXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikodHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkpOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9WQVJfSUQgKyBuPiwgSXRlcj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pKQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSh0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSAuLi4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci0gICAgfTsKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfTk9fRlVOQ1RJT05fVFlQRVMKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTk9fTUVNQkVSX0ZVTkNUSU9OX1RZUEVTCi0vLyBtZW1iZXIgZnVuY3Rpb25zCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllcgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaWQgTUVNX0ZVTl9JRAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyIGNvbnN0Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9pZCBDT05TVF9NRU1fRlVOX0lECi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXIgdm9sYXRpbGUKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2lkIFZPTEFUSUxFX01FTV9GVU5fSUQKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllciB2b2xhdGlsZSBjb25zdAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaWQgVk9MQVRJTEVfQ09OU1RfTUVNX0ZVTl9JRAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcD4KLQotI3VuZGVmIG4KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuZGFtZW50YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuZGFtZW50YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTcyZWYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmRhbWVudGFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0ZVTkRBTUVOVEFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZW9mLmhwcD4KLQotI2luY2x1ZGUgTkROQk9PU1RfVFlQRU9GX0lOQ1JFTUVOVF9SRUdJU1RSQVRJT05fR1JPVVAoKQotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBjaGFyKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgc2hvcnQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBpbnQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBsb25nKQotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShzaWduZWQgY2hhcikKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHNpZ25lZCBzaG9ydCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHNpZ25lZCBpbnQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShzaWduZWQgbG9uZykKLQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoYm9vbCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKGNoYXIpCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKGZsb2F0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoZG91YmxlKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUobG9uZyBkb3VibGUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIElmIHRoZSBmb2xsb3dpbmcgbGluZSBmYWlscyB0byBjb21waWxlIGFuZCB5b3UncmUgdXNpbmcgdGhlIEludGVsCi0vLyBjb21waWxlciwgc2VlIGh0dHA6Ly9saXN0cy5ib29zdC5vcmcvTWFpbEFyY2hpdmVzL2Jvb3N0LXVzZXJzL21zZzA2NTY3LnBocCwKLS8vIGFuZCBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1Qgb24gdGhlIGNvbW1hbmQgbGluZS4KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHdjaGFyX3QpCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID09IDEyMDApKSBcCi0gICAgfHwgKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pICYmIGRlZmluZWQoX01TQ19WRVIpICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA2MDApKSBcCi0gICAgfHwgKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID09IDB4NjAwKSAmJiAoX01TQ19WRVIgPT0gMTIwMCkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDgpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShfX2ludDgpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDE2KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoX19pbnQxNikKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIF9faW50MzIpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShfX2ludDMyKQotI2lmZGVmIF9fQk9STEFORENfXwotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgX19pbnQ2NCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKF9faW50NjQpCi0jZW5kaWYKLSNlbmRpZgotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDY0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoX19pbnQ2NCkKLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh2b2lkKQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZGU4YzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwPgotCi0vLyBtZW1iZXIgZnVuY3Rpb25zCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+IAotc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUihUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSkgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllcj4KLXsKLSAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgIHR5cGVkZWYgVCBORE5CT09TVF9QUF9DQVQoUCwgTkROQk9PU1RfUFBfSU5DKG4pKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0FERChuLCAyKSwgTkROQk9PU1RfVFlQRU9GX2lkICsgbikgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8TkROQk9PU1RfVFlQRU9GX2lkICsgbj4sIEl0ZXI+Ci17Ci0gICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0FERChuLCAyKSkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgd29ya2Fyb3VuZHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoVDo6KnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyOwotICAgIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB3b3JrYXJvdW5kPE5ETkJPT1NUX1BQX0NBVChwLCBORE5CT09TVF9QUF9JTkMobikpPjo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0FERChuLCAyKSkgaXRlcjsKLX07Ci0KLS8vIHVuZGVmIHBhcmFtZXRlcnMKLQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9pZAotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX2VuY29kaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX2VuY29kaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhMGZlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV9lbmNvZGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9FTkNPRElOR19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc191bmFyeS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3RyYW5zZm9ybS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaF9pLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2ludF9lbmNvZGluZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZV90ZW1wbGF0ZV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2ludGVncmFsX3RlbXBsYXRlX3BhcmFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW0uaHBwPgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9RVUFMSUZZKFApIHNlbGZfdDo6UAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1FVQUxJRlkoUCkgUAotI2VuZGlmCi0vLyBUaGUgdGVtcGxhdGUgcGFyYW1ldGVyIGRlc2NyaXB0aW9uLCBlbnRlcmVkIGJ5IHRoZSB1c2VyLAotLy8gaXMgY29udmVydGVkIGludG8gYSBwb2x5bW9ycGhpYyAib2JqZWN0IgotLy8gdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb2RlIHJlc3BvbnNpYmxlIGZvcgotLy8gZW5jb2RpbmcvZGVjb2RpbmcgdGhlIHBhcmFtZXRlciwgZXRjLgotCi0vLyBtYWtlIHN1cmUgdG8gY2F0IHRoZSBzZXF1ZW5jZSBmaXJzdCwgYW5kIG9ubHkgdGhlbiBhZGQgdGhlIHByZWZpeC4KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKKGVsZW0pIE5ETkJPT1NUX1BQX0NBVChcCi0gICAgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKLFwKLSAgICBORE5CT09TVF9QUF9TRVFfQ0FUKChfKSBORE5CT09TVF9UWVBFT0ZfVE9fU0VRKGVsZW0pKVwKLSAgICApCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RPX1NFUSh0b2tlbnMpIE5ETkJPT1NUX1RZUEVPRl8gIyMgdG9rZW5zICMjIF9ORE5CT09TVF9UWVBFT0YKLQotLy8gTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0VYUExJQ0lUX0lEKE5hbWUsIFBhcmFtcywgSWQpXAotICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9JTVBMKFwKLSAgICAgICAgTmFtZSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSlMoTkROQk9PU1RfVFlQRU9GX1RPU0VRKFBhcmFtcykpLFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfVFlQRU9GX1RPU0VRKFBhcmFtcykpLFwKLSAgICAgICAgSWQpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKE5hbWUsIFBhcmFtcylcCi0gICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0VYUExJQ0lUX0lEKE5hbWUsIFBhcmFtcywgTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9PQkpFQ1RfTUFLRVIocywgZGF0YSwgZWxlbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKKGVsZW0pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKUyhQYXJhbXMpXAotICAgIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0oTkROQk9PU1RfVFlQRU9GX09CSkVDVF9NQUtFUiwgfiwgUGFyYW1zKQotCi0vLyBBcyBzdWdnZXN0ZWQgYnkgUGF1bCBNZW5zb25pZGVzOgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UT1NFUSh4KVwKLSAgICBORE5CT09TVF9QUF9JSUYoXAotICAgICAgICBORE5CT09TVF9QUF9JU19VTkFSWSh4KSxcCi0gICAgICAgIHggTkROQk9PU1RfUFBfVFVQTEVfRUFUKDMpLCBORE5CT09TVF9QUF9SRVBFQVRcCi0gICAgKSh4LCBORE5CT09TVF9UWVBFT0ZfVE9TRVFfMiwgfikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVE9TRVFfMih6LCBuLCBfKSAoY2xhc3MpCi0KLS8vIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0NBVF80KGEsIGIsIGMsIGQpIE5ETkJPT1NUX1RZUEVPRl9DQVRfNF9JKGEsIGIsIGMsIGQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9DQVRfNF9JKGEsIGIsIGMsIGQpIGEgIyMgYiAjIyBjICMjIGQKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChGdW4sIE9iailcCi0gICAgTkROQk9PU1RfVFlQRU9GX0NBVF80KE5ETkJPT1NUX1RZUEVPRl8sIE5ETkJPT1NUX1BQX1NFUV9IRUFEKE9iaiksIF8sIEZ1bikKLQotLy8gTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNW19UUkFJTElOR11bXzFdCi0vLyBUd28gdmVyc2lvbnMgcHJvdmlkZWQgZHVlIHRvIHJlZW50cmFuY3kgaXNzdWUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5UKHosbixzZXEpXAotICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oMCxzZXEpICh6LG4sTkROQk9PU1RfUFBfU0VRX0VMRU0obixORE5CT09TVF9QUF9TRVFfRUxFTSgxLHNlcSkpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShzZXEsbWFjcm8pXAotICAgIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSxORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5ULChtYWNybykoc2VxKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fVFJBSUxJTkcoc2VxLG1hY3JvKVwKLSAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSksTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVCwobWFjcm8pKHNlcSkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVF8xKHosbixzZXEpXAotICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKDAsc2VxKSAoeixuLE5ETkJPT1NUX1BQX1NFUV9FTEVNKG4sTkROQk9PU1RfUFBfU0VRX0VMRU0oMSxzZXEpKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fMShzZXEsbWFjcm8pXAotICAgIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSxORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5UXzEsKG1hY3JvKShzZXEpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTV9UUkFJTElOR18xKHNlcSxtYWNybylcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9TRVFfU0laRShzZXEpLE5ETkJPT1NUX1RZUEVPRl9TRVFfRVhQQU5EX0VMRU1FTlRfMSwobWFjcm8pKHNlcSkpCi0KLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSKHosIG4sIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKFBMQUNFSE9MREVSLCBlbGVtKShlbGVtKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUl9UWVBFUyh6LCBuLCBlbGVtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChQTEFDRUhPTERFUl9UWVBFUywgZWxlbSkoZWxlbSwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfRU5DT0RFX1BBUkFNKHIsIGRhdGEsIG4sIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKEVOQ09ERSwgZWxlbSkoZWxlbSwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfREVDT0RFX1BBUkFNKHIsIGRhdGEsIG4sIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKERFQ09ERSwgZWxlbSkoZWxlbSwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfUEFSQU1fUEFJUih6LCBuLCBlbGVtKSBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoRVhQQU5EVFlQRSwgZWxlbSkoZWxlbSkgTkROQk9PU1RfUFBfQ0FUKFAsIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFRkFVTFRfVEVNUExBVEVfVFlQRShOYW1lLFBhcmFtcyxJRClcCi0gICAgTmFtZTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSwgUCkgPgotCi0vL1NpbmNlIHdlIGFyZSBjcmVhdGluZyBhbiBpbnRlcm5hbCBkZWNvZGUgc3RydWN0LCB3ZSBuZWVkIHRvIHVzZSBkaWZmZXJlbnQgdGVtcGxhdGUgbmFtZXMsIFQgaW5zdGVhZCBvZiBQLgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIoeixuLGVsZW0pIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChFWFBBTkRUWVBFLCBlbGVtKShlbGVtKSBORE5CT09TVF9QUF9DQVQoVCwgbikKLQotLy9EZWZhdWx0IHRlbXBsYXRlIHBhcmFtIGRlY29kaW5nCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9URU1QTEFURV9UWVBFKE5hbWUsUGFyYW1zKVwKLSAgICB0eXBlZGVmIE5hbWU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxORE5CT09TVF9UWVBFT0ZfUVVBTElGWShQKSk+IHR5cGU7Ci0KLS8vQnJhbmNoIHRoZSBkZWNvZGluZwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RZUEUoTmFtZSxQYXJhbXMpXAotICAgIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTKFBhcmFtcyksXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RFTVBMQVRFX1RFTVBMQVRFX1RZUEUsXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RFTVBMQVRFX1RZUEUpKE5hbWUsUGFyYW1zKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9JTVBMKE5hbWUsIFBhcmFtcywgU2l6ZSwgSUQpXAotICAgIE5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlNcCi0gICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX1RFTVBMQVRFX0lNUEwoTmFtZSwgUGFyYW1zLCBJRClcCi0gICAgdGVtcGxhdGU8Y2xhc3MgVlwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNX1RSQUlMSU5HKFBhcmFtcywgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX1BBUkFNX1BBSVIpXAotICAgID5cCi0gICAgc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgTmFtZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhTaXplLCBQKT4gPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8ViwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+Ojp0eXBlIFYwO1wKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0VOQ09ERV9QQVJBTSwgfiwgUGFyYW1zKVwKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoViwgU2l6ZSkgdHlwZTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj5cCi0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiwgSXRlcj5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZiBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4sIEl0ZXI+IHNlbGZfdDtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiBzZWxmX2lkO1wKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXIwO1wKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0RFQ09ERV9QQVJBTSwgfiwgUGFyYW1zKVwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9UWVBFKE5hbWUsIFBhcmFtcylcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIFNpemUpIGl0ZXI7XAotICAgIH07XAotICAgIE5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX0VOQ09ESU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDgwMmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX3RlbXBsYXRlX3BhcmFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl90ZW1wbGF0ZSh4KSAgIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTSh4KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEUoWCkgdGVtcGxhdGUoWCkgTkROQk9PU1RfVFlQRU9GX0VBVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfdGVtcGxhdGUoWCkgKHRlbXBsYXRlKFgpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTShQYXJhbXMpXAotICAgIChURU1QTEFURV9QQVJBTSlcCi0gICAgKFBhcmFtcykKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fR0VUUEFSQU1TKFRoaXMpXAotICAgIE5ETkJPT1NUX1RZUEVPRl9UT1NFUShORE5CT09TVF9QUF9TRVFfRUxFTSgxLCBUaGlzKSkKLQotLy9FbmNvZGUgLyBkZWNvZGUgdGhpcwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fRU5DT0RFKFRoaXMsIG4pXAotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3RlbXBsYXRlPE5ETkJPT1NUX1BQX0NBVChWLCBuKSxcCi0gICAgICAgTkROQk9PU1RfUFBfQ0FUKFAsIG4pPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpTKE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9HRVRQQVJBTVMoVGhpcykpLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUikgPlwKLSAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFYsIE5ETkJPT1NUX1BQX0lOQyhuKSk7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0RFQ09ERShUaGlzLCBuKVwKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90ZW1wbGF0ZTwgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIG4pID4gTkROQk9PU1RfUFBfQ0FUKGQsIG4pO1wKLSAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjp0eXBlIE5ETkJPT1NUX1BQX0NBVChQLCBuKTtcCi0gICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6aXRlciBORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9QUF9JTkMobikpOwotCi0vLyB0ZW1wbGF0ZTxjbGFzcywgdW5zaWduZWQgaW50LCAuLi4+IGNsYXNzCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9FWFBBTkRUWVBFKFRoaXMpIFwKLSAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfUFBfU0VRX0VOVU0oTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0dFVFBBUkFNUyhUaGlzKSkgPiBjbGFzcwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9QTEFDRUhPTERFUihQYXJhbSlcCi0gICAgTmVzdGVkX1RlbXBsYXRlX1RlbXBsYXRlX0FyZ3VtZW50c19Ob3RfU3VwcG9ydGVkCi0KLS8vJ3RlbXBsYXRlPGNsYXNzLGludD4gY2xhc3MnIGlzIHJlZHVjZWQgdG8gJ2NsYXNzJwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fREVDTEFSQVRJT05fVFlQRShQYXJhbSkgY2xhc3MKLQotLy8gVDM8aW50LCAodW5zaWduZWQgaW50KTAsIC4uLj4KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX1BMQUNFSE9MREVSX1RZUEVTKFBhcmFtLCBuKVwKLSAgICBORE5CT09TVF9QUF9DQVQoVCxuKTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fMShORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpTKE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9HRVRQQVJBTVMoUGFyYW0pKSxORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVIpID4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fSVNURU1QTEFURSAxCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1vdmUgdG8gZW5jb2RlX2RlY29kZT8KLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUeXBlX05vdF9SZWdpc3RlcmVkX1dpdGhfVHlwZW9mX1N5c3RlbT4gc3RydWN0IGVuY29kZV90ZW1wbGF0ZV9pbXBsOwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgSXRlcj4gc3RydWN0IGRlY29kZV90ZW1wbGF0ZV9pbXBsOwotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgZW5jb2RlX3RlbXBsYXRlCi0gICAgICAgIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmVuY29kZV90ZW1wbGF0ZV9pbXBsPFYsIFQ+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPiBzdHJ1Y3QgZGVjb2RlX3RlbXBsYXRlCi0gICAgICAgIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmRlY29kZV90ZW1wbGF0ZV9pbXBsPHR5cGVuYW1lIEl0ZXI6OnR5cGUsIHR5cGVuYW1lIEl0ZXI6Om5leHQ+Ci0gICAge307Ci19fQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtb3ZlIHRvIHRlbXBsYXRlX2VuY29kaW5nLmhwcD8KLQotLy9UZW1wbGF0ZSB0ZW1wbGF0ZSByZWdpc3RyYXRpb24KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfRk9SX1RFTVBMQVRFX1RFTVBMQVRFKE5hbWUsUGFyYW1zLElEKVwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fVFJBSUxJTkcoUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9QQVJBTV9QQUlSKVwKLSAgICA+XAotICAgIHN0cnVjdCBlbmNvZGVfdGVtcGxhdGVfaW1wbDxWLE5hbWU8XAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksXAotICAgICAgICBQKT4gPlwKLSAgICAgICAgOiBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFYsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gPlwKLSAgICB7XAotICAgIH07XAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+IHN0cnVjdCBkZWNvZGVfdGVtcGxhdGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+LCBJdGVyPlwKLSAgICB7XAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9JTlRfUE4sXylcCi0gICAgICAgIHR5cGVkZWYgTmFtZTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUikgPiB0eXBlO1wKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXI7XAotICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfSU5UX1BOKHosbixQYXJhbXMpIHR5cGVkZWYgaW50IE5ETkJPT1NUX1BQX0NBVChQLG4pOwotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9OQU1FIE5ETkJPT1NUX1BQX0NBVChcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoXAotICAgICAgICAgICAgICAgIGRlY29kZV9uZXN0ZWRfdGVtcGxhdGVfaGVscGVyLFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNUUkFUSU9OX0dST1VQXAotICAgICAgICAgICAgKSwweDEwMDAwXAotICAgICAgICApLF9fTElORV9fXAotICAgICkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERV9ORVNURURfVEVNUExBVEVfSEVMUEVSX0lNUEwoTmFtZSxQYXJhbXMsSUQpXAotICAgIHN0cnVjdCBORE5CT09TVF9UWVBFT0ZfREVDT0RFX05FU1RFRF9URU1QTEFURV9IRUxQRVJfTkFNRSB7XAotICAgICAgICB0ZW1wbGF0ZTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNMQVJFX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKSA+XAotICAgICAgICBzdHJ1Y3QgZGVjb2RlX3BhcmFtcztcCi0gICAgICAgIHRlbXBsYXRlPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKSA+XAotICAgICAgICBzdHJ1Y3QgZGVjb2RlX3BhcmFtczxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUl9UWVBFUykgPlwKLSAgICAgICAge1wKLSAgICAgICAgICAgIHR5cGVkZWYgTmFtZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLFQpPiB0eXBlO1wKLSAgICAgICAgfTtcCi0gICAgfTsKLS8vVGVtcGxhdGUgdGVtcGxhdGUgcGFyYW0gZGVjb2RpbmcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9URU1QTEFURV9URU1QTEFURV9UWVBFKE5hbWUsUGFyYW1zKVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9OQU1FOjpkZWNvZGVfcGFyYW1zPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksUCk+Ojp0eXBlIHR5cGU7Ci0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9JTVBMKE5hbWUsUGFyYW1zLElEKQotCi0vL1RlbXBsYXRlIHRlbXBsYXRlIHBhcmFtIGRlY29kaW5nCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVEVNUExBVEVfVEVNUExBVEVfVFlQRShOYW1lLFBhcmFtcylcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDTEFSRV9ERUNPREVSX1RZUEVfUEFSQU1fUEFJUikgPlwKLSAgICBzdHJ1Y3QgZGVjb2RlX3BhcmFtcztcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIpID5cCi0gICAgc3RydWN0IGRlY29kZV9wYXJhbXM8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVJfVFlQRVMpID5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZiBOYW1lPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksVCk+IHR5cGU7XAotICAgIH07XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlX3BhcmFtczxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLFApPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNMQVJFX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKHosbixlbGVtKSBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoREVDTEFSQVRJT05fVFlQRSwgZWxlbSkoZWxlbSkgTkROQk9PU1RfUFBfQ0FUKFQsIG4pCi0KLS8vIE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTKFBhcmFtcylcCi0gICAgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChORE5CT09TVF9UWVBFT0ZfSEFTX1RFTVBMQVRFU19PUCwgMCwgUGFyYW1zKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTX09QKHMsIHN0YXRlLCBlbGVtKVwKLSAgICBORE5CT09TVF9QUF9PUihzdGF0ZSwgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoSVNURU1QTEFURSwgZWxlbSkpCi0KLS8vRGVmaW5lIHRlbXBsYXRlIHRlbXBsYXRlIGFyZ3VtZW50cwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfVEVNUExBVEVfSU1QTChOYW1lLFBhcmFtcyxJRClcCi0gICAgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfVFlQRU9GX0hBU19URU1QTEFURVMoUGFyYW1zKSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9JTVBMLFwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfRk9SX1RFTVBMQVRFX1RFTVBMQVRFKShOYW1lLFBhcmFtcyxJRCkKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZV9lbmNvZGluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX2VuY29kaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ1OWJmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX2VuY29kaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVFlQRV9FTkNPRElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfSU1QTChULCBJZCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBUID4gICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOiBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFYsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJZD4gPiAgICAgICAgIFwKLSAgICB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPiBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SWQ+LCBJdGVyPiBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgVCB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9FWFBMSUNJVF9JRChUeXBlLCBJZCkgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFX0lNUEwoVHlwZSwgSWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoVHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9FWFBMSUNJVF9JRChUeXBlLCBORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCkpCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1RZUEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX3RlbXBsYXRlX3BhcmFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfdGVtcGxhdGVfcGFyYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWJjNDVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfdGVtcGxhdGVfcGFyYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfY2xhc3NfTkROQk9PU1RfVFlQRU9GIChjbGFzcykKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3R5cGVuYW1lX05ETkJPT1NUX1RZUEVPRiAodHlwZW5hbWUpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX2NsYXNzIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl90eXBlbmFtZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNXAotICAgIChUWVBFX1BBUkFNKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0VYUEFORFRZUEUoUGFyYW0pIGNsYXNzCi0KLS8vIFRZUEVfUEFSQU0gInZpcnR1YWwgZnVuY3Rpb25zIiBpbXBsZW1lbnRhdGlvbgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0VOQ09ERShUaGlzLCBuKVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfdHlwZTxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChWLCBuKSxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChQLCBuKVwKLSAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChWLCBORE5CT09TVF9QUF9JTkMobikpOyAKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9ERUNPREUoVGhpcywgbilcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8IE5ETkJPT1NUX1BQX0NBVChpdGVyLCBuKSA+IE5ETkJPT1NUX1BQX0NBVChkLCBuKTtcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZCwgbik6OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFAsIG4pO1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6aXRlciBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9QTEFDRUhPTERFUihQYXJhbSkgaW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0RFQ0xBUkFUSU9OX1RZUEUoUGFyYW0pIGNsYXNzCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX1BMQUNFSE9MREVSX1RZUEVTKFBhcmFtLCBuKSBORE5CT09TVF9QUF9DQVQoVCxuKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9JU1RFTVBMQVRFIDAKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfVFlQRV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODQ3YmFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9DT01QTElBTlQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUpCi0jICAgZXJyb3IgYm90aCB0eXBlb2YgZW11bGF0aW9uIGFuZCBuYXRpdmUgbW9kZSByZXF1ZXN0ZWQKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0NPTU9fXykKLSMgICBpZmRlZiBfX0dOVUdfXwotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCB0eXBlb2YKLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19JQ0wpIHx8IGRlZmluZWQoX19JQ0MpIHx8IGRlZmluZWQoX19FQ0MpCi0jICAgaWZkZWYgX19HTlVDX18KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgX190eXBlb2ZfXwotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGVuZGlmCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCBfX3R5cGVvZl9fCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX01XRVJLU19fKQotIyAgIGlmKF9fTVdFUktTX18gPD0gMHgzMDAzKSAgLy8gOC54Ci0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIF9fdHlwZW9mX18KLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICAgICAgZW5kaWYKLSMgICBlbHNlIC8vIDkueAotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCBfX3R5cGVvZl9fCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQgX19DT0RFR0VBUkNfXwotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTl9VTlNVUFBPUlRFRAotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZCBfX0JPUkxBTkRDX18KLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OX1VOU1VQUE9SVEVECi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQgX19ETUNfXwotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBlbmRpZgotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZG1jL3R5cGVvZl9pbXBsLmhwcD4KLSMgICAgICAgZGVmaW5lIE1TVkNfVFlQRU9GX0hBQ0sKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLSMgICBpZiAoX01TQ19WRVIgPD0gMTMwMCkgIC8vIDYuNSwgNy4wCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21zdmMvdHlwZW9mX2ltcGwuaHBwPgotIyAgICAgICAgICAgZGVmaW5lIE1TVkNfVFlQRU9GX0hBQ0sKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZXJyb3IgdHlwZW9mIGVtdWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgICAgIGVuZGlmCi0jICAgZWxpZiAoX01TQ19WRVIgPj0gMTMxMCkgIC8vIDcuMSAtPgotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBpZm5kZWYgX01TQ19FWFRFTlNJT05TCi0jICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICAgICAgZWxzZQotIyAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICBlbmRpZgotIyAgICAgICBpZmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHA+Ci0jICAgICAgICAgICBkZWZpbmUgTVNWQ19UWVBFT0ZfSEFDSwotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0RFQ0NYWCkKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgIGlmIChfX0JPUkxBTkRDX18gPCAweDU5MCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OT19GVU5DVElPTl9UWVBFUwotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05PX01FTUJFUl9GVU5DVElPTl9UWVBFUwotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX1NVTlBST19DQykKLSMgICBpZiAoX19TVU5QUk9fQ0MgPCAweDU5MCApCi0jICAgICBpZmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgICBlbmRpZgotIyAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgZW5kaWYKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgX190eXBlb2ZfXwotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotI2Vsc2UgLy91bmtub3duIGNvbXBpbGVyCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCB0eXBlb2YKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKClcCi0gICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RSQVRJT05fR1JPVVAgKiAweDEwMDAwICsgX19MSU5FX18KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpXAotICAgICA8bmRuYm9vc3QvdHlwZW9mL2luY3JfcmVnaXN0cmF0aW9uX2dyb3VwLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdW5zdXBwb3J0ZWQuaHBwPgotI2VsaWYgZGVmaW5lZCBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URVhUICJ1c2luZyB0eXBlb2YgZW11bGF0aW9uIgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZW9mX2ltcGwuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlX2VuY29kaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfZW5jb2RpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tb2RpZmllcnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9wb2ludGVyc19kYXRhX21lbWJlcnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5kYW1lbnRhbC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX05BVElWRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFWFQgInVzaW5nIG5hdGl2ZSB0eXBlb2YiCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21lc3NhZ2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9uYXRpdmUuaHBwPgotI2Vsc2UKLSMgICBlcnJvciB0eXBlb2YgY29uZmlndXJhdGlvbiBlcnJvcgotI2VuZGlmCi0KLS8vIGF1dG8KLSNkZWZpbmUgTkROQk9PU1RfQVVUTyhWYXIsIEV4cHIpIE5ETkJPT1NUX1RZUEVPRihFeHByKSBWYXIgPSBFeHByCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVFBMKFZhciwgRXhwcikgTkROQk9PU1RfVFlQRU9GX1RQTChFeHByKSBWYXIgPSBFeHByCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1RZUEVPRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlYzI4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2ZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdmVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9WRUNUT1IobikgTkROQk9PU1RfUFBfQ0FUKG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IsIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3NpemVyX2l0ZW0oeiwgbiwgXylcCi0gICAgY2hhciBpdGVtICMjIG5bVjo6aXRlbSAjIyBuIDo6dmFsdWVdOwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVj4KLSAgICBzdHJ1Y3Qgc2l6ZXIKLSAgICB7Ci0gICAgICAgIC8vIGNoYXIgaXRlbTBbVjo6aXRlbTA6OnZhbHVlXTsKLSAgICAgICAgLy8gY2hhciBpdGVtMVtWOjppdGVtMTo6dmFsdWVdOwotICAgICAgICAvLyAuLi4KLQotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUsIE5ETkJPT1NUX1RZUEVPRl9zaXplcl9pdGVtLCB+KQotICAgIH07Ci19fQotCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3NpemVyX2l0ZW0KLQotLy8KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSMgaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4KLSAgICBzaXplcjx0eXBlbmFtZSBlbmNvZGVfdHlwZTxWLCBUPjo6dHlwZT4gZW5jb2RlKGNvbnN0IFQmKTsKLSMgZWxzZQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+Ci0gICAgdHlwZW5hbWUgZW5hYmxlX2lmPAotICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgc2l6ZXI8dHlwZW5hbWUgZW5jb2RlX3R5cGU8ViwgVD46OnR5cGU+ID46OnR5cGUgZW5jb2RlKFQmKTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+Ci0gICAgdHlwZW5hbWUgZGlzYWJsZV9pZjwKLSAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgIHNpemVyPHR5cGVuYW1lIGVuY29kZV90eXBlPFYsIFQ+Ojp0eXBlPiA+Ojp0eXBlIGVuY29kZShjb25zdCBUJik7Ci0jIGVuZGlmCi19fQotLy8KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+Ci0gICAgc3RydWN0IGRlY29kZV9iZWdpbgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGVfdHlwZTx0eXBlbmFtZSBWOjpiZWdpbj46OnR5cGUgdHlwZTsKLSAgICB9OwotfX0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRUlURU0oeiwgbiwgZXhwcilcCi0gICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlPE5ETkJPT1NUX1RZUEVPRl9WRUNUT1IoMCk8PiA+KGV4cHIpLml0ZW0gIyMgbik+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERURfVkVDVE9SKEV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUihORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSk8ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFLCBORE5CT09TVF9UWVBFT0ZfVFlQRUlURU0sIEV4cHIpIFwKLSAgICA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GKEV4cHIpXAotICAgIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfYmVnaW48TkROQk9PU1RfVFlQRU9GX0VOQ09ERURfVkVDVE9SKEV4cHIpID46OnR5cGUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRgotCi0vL29mZnNldF92ZWN0b3IgaXMgdXNlZCB0byBkZWxheSB0aGUgaW5zZXJ0aW9uIG9mIGRhdGEgaW50byB0aGUgdmVjdG9yIGluIG9yZGVyIHRvIGFsbG93Ci0vL2VuY29kaW5nIHRvIGJlIGRvbmUgaW4gbWFueSBzdGVwcwotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYsdHlwZW5hbWUgT2Zmc2V0PgotICAgIHN0cnVjdCBvZmZzZXRfdmVjdG9yIHsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVixjbGFzcyBPZmZzZXQsY2xhc3MgVD4KLSAgICBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjpvZmZzZXRfdmVjdG9yPFYsT2Zmc2V0PixUPiB7Ci0gICAgICAgIHR5cGVkZWYgb2Zmc2V0X3ZlY3RvcjxWLHR5cGVuYW1lIE9mZnNldDo6cHJpb3I+IHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsY2xhc3MgVD4KLSAgICBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjpvZmZzZXRfdmVjdG9yPFYsbXBsOjpzaXplX3Q8MD4gPixUPiB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHVzaF9iYWNrPFYsVD46OnR5cGUgdHlwZTsKLSAgICB9OwotfX0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVJVEVNKHosIG4sIGV4cHIpXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsTkROQk9PU1RfUFBfQ0FUKHZhbHVlLG4pID0gc2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGU8X3R5cGVvZl9zdGFydF92ZWN0b3I+KGV4cHIpLml0ZW0gIyMgbikpO1wKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OnNpemVfdDxORE5CT09TVF9QUF9DQVQoc2VsZl90Ojp2YWx1ZSxuKT4gTkROQk9PU1RfUFBfQ0FUKGl0ZW0sbik7Ci0KLSNpZmRlZiBfX0RNQ19fCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRUlURU1fMih6LG4sZXhwcilcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxpdGVyYXRpb24+OjpORE5CT09TVF9QUF9DQVQoaXRlbSxuKSBORE5CT09TVF9QUF9DQVQoaXRlbSxuKTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRlJBQ1RJT05UWVBFKClcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFLE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRUlURU1fMixfKVwKLSAgICB0eXBlZGVmIF90eXBlb2ZfZnJhY3Rpb25faXRlcjxQb3M+IGZyYWN0aW9uX3R5cGU7Ci0jZWxzZQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRlJBQ1RJT05UWVBFKClcCi0gICAgdHlwZWRlZiBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxzZWxmX3Q6Oml0ZXJhdGlvbj4gZnJhY3Rpb25fdHlwZTsKLSNlbmRpZgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUG9zLHR5cGVuYW1lIEl0ZXI+Ci0gICAgc3RydWN0IGdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXIgewotICAgICAgICB0eXBlZGVmIGdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8UG9zLEl0ZXI+IHNlbGZfdDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBwb3M9KFBvczo6dmFsdWUpOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGl0ZXJhdGlvbj0ocG9zLzUpOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IHdoZXJlPXBvcyU1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXI6OnRlbXBsYXRlIF9hcHBseV9uZXh0PHNlbGZfdDo6aXRlcmF0aW9uPjo6dHlwZSBmcmFjdGlvbl90eXBlOwotICAgICAgICB0eXBlZGVmIGdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8dHlwZW5hbWUgUG9zOjpuZXh0LEl0ZXI+IG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdl9pdGVyPGZyYWN0aW9uX3R5cGUsbXBsOjppbnRfPHNlbGZfdDo6d2hlcmU+ID46OnR5cGUgdHlwZTsKLSAgICB9OwotfX0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX0lNUEwoZXhwcikgXAotICAgICAgICB0ZW1wbGF0ZTxpbnQgX1R5cGVvZl9JdGVyYXRpb24+XAotICAgICAgICBzdHJ1Y3QgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb24ge1wKLSAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248X1R5cGVvZl9JdGVyYXRpb24+IHNlbGZfdDtcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfZW5jb2RlX29mZnNldCA9IChfVHlwZW9mX0l0ZXJhdGlvbipORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkpO1wKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om9mZnNldF92ZWN0b3I8TkROQk9PU1RfVFlQRU9GX1ZFQ1RPUigwKTw+LG5kbmJvb3N0OjptcGw6OnNpemVfdDxzZWxmX3Q6Ol90eXBlb2ZfZW5jb2RlX29mZnNldD4gPiBfdHlwZW9mX3N0YXJ0X3ZlY3RvcjtcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUsTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFSVRFTSxleHByKVwKLSAgICAgICAgICAgIHRlbXBsYXRlPGludCBOZXh0PlwKLSAgICAgICAgICAgIHN0cnVjdCBfYXBwbHlfbmV4dCB7XAotICAgICAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248TmV4dD4gdHlwZTtcCi0gICAgICAgICAgICB9O1wKLSAgICAgICAgfTtcCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBvcz5cCi0gICAgICAgIHN0cnVjdCBfdHlwZW9mX2ZyYWN0aW9uX2l0ZXIge1wKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8UG9zLF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uPDA+ID4gc2VsZl90O1wKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZl90OjpuZXh0IG5leHQ7XAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxmX3Q6OnR5cGUgdHlwZTtcCi0gICAgICAgIH07Ci0jZWxzZQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfSU1QTChleHByKSBcCi0gICAgICAgIHRlbXBsYXRlPGludCBfVHlwZW9mX0l0ZXJhdGlvbj5cCi0gICAgICAgIHN0cnVjdCBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbiB7XAotICAgICAgICAgICAgdHlwZWRlZiBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxfVHlwZW9mX0l0ZXJhdGlvbj4gc2VsZl90O1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9lbmNvZGVfb2Zmc2V0ID0gKF9UeXBlb2ZfSXRlcmF0aW9uKk5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSk7XAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6b2Zmc2V0X3ZlY3RvcjxORE5CT09TVF9UWVBFT0ZfVkVDVE9SKDApPD4sbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHNlbGZfdDo6X3R5cGVvZl9lbmNvZGVfb2Zmc2V0PiA+IF90eXBlb2Zfc3RhcnRfdmVjdG9yO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSxORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVJVEVNLGV4cHIpXAotICAgICAgICB9O1wKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUG9zPlwKLSAgICAgICAgc3RydWN0IF90eXBlb2ZfZnJhY3Rpb25faXRlciB7XAotICAgICAgICAgICAgdHlwZWRlZiBfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8UG9zPiBzZWxmX3Q7XAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxwb3M9KFBvczo6dmFsdWUpKTtcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LGl0ZXJhdGlvbj0ocG9zL05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSk7XAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCx3aGVyZT1wb3MlTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9GUkFDVElPTlRZUEUoKVwKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZfaXRlcjxmcmFjdGlvbl90eXBlLG5kbmJvb3N0OjptcGw6OmludF88c2VsZl90Ojp3aGVyZT4gPjo6dHlwZSB0eXBlO1wKLSAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9mcmFjdGlvbl9pdGVyPHR5cGVuYW1lIFBvczo6bmV4dD4gbmV4dDtcCi0gICAgICAgIH07Ci0jZW5kaWYKLSNpZmRlZiBfX01XRVJLU19fCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+XAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChfdHlwZW9mX3RlbXBsYXRlXyxuYW1lKSB7XAotICAgIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9JTVBMKGV4cHIpXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPF90eXBlb2ZfZnJhY3Rpb25faXRlcjxuZG5ib29zdDo6bXBsOjpzaXplX3Q8MD4gPiA+Ojp0eXBlIHR5cGU7XAotfTtcCi10eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChfdHlwZW9mX3RlbXBsYXRlXyxuYW1lKTxpbnQ+IG5hbWU7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKQotCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfSU1QTChleHByKVwKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8X3R5cGVvZl9mcmFjdGlvbl9pdGVyPG5kbmJvb3N0OjptcGw6OnNpemVfdDwwPiA+ID46OnR5cGUgdHlwZTtcCi0gICAgfTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9JTVBMKGV4cHIpXAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTxfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PDA+ID4gPjo6dHlwZSB0eXBlO1wKLSAgICB9OwotI2VuZGlmCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0NPTVBMSUFOVF9UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3Vuc3VwcG9ydGVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3Vuc3VwcG9ydGVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiMmE4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi91bnN1cHBvcnRlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTAgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1VOU1VQUE9SVEVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVU5TVVBQT1JURURfSFBQX0lOQ0xVREVECi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICBzdHJ1Y3QgdHlwZW9mX2VtdWxhdGlvbl9pc191bnN1cHBvcnRlZF9vbl90aGlzX2NvbXBpbGVyIHt9OwotfX0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0YoZXhwcikgbmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9lbXVsYXRpb25faXNfdW5zdXBwb3J0ZWRfb25fdGhpc19jb21waWxlcgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMIE5ETkJPT1NUX1RZUEVPRgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBcCi1zdHJ1Y3QgbmFtZSB7XAotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX1RQTChleHByKSB0eXBlO1wKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotc3RydWN0IG5hbWUge1wKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRihleHByKSB0eXBlO1wKLX07Ci0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh4KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUoeCwgcGFyYW1zKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmIxZGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA2IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVkVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA1MAotI2VuZGlmCi0KLS8vCi0vLyBUbyByZWNyZWF0ZSB0aGUgcHJlcHJvY2Vzc2VkIHZlcnNpb25zIG9mIHRoaXMgZmlsZSBwcmVwcm9jZXNzIGFuZCBydW4KLS8vCi0vLyAgICQoTkROQk9PU1RfUk9PVCkvbGlicy90eXBlb2YvdG9vbHMvcHJlcHJvY2Vzcy5wbAotLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX1BQX0lOQ0xVREVfRVhURVJOQUwpCi0KLSMgICB1bmRlZiBORE5CT09TVF9UWVBFT0ZfUFBfSU5DTFVERV9FWFRFUk5BTAotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfUFJFUFJPQ0VTU0lOR19NT0RFKSAmJiAhTkROQk9PU1RfUFBfSVNfU0VMRklTSAotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3IuaHBwPgotIyAgIGlmICAgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCA1MAotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsaWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCAxMDAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3I1MC5ocHA+Ci0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDUxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpCi0jICAgZWxpZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA8IDE1MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjEwMC5ocHA+Ci0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDEwMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsaWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCAyMDAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3IxNTAuaHBwPgotIyAgICAgZGVmaW5lICBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSAxNTEKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLSMgICBlbGlmIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDw9IDI1MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjIwMC5ocHA+Ci0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDIwMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsc2UKLSMgICAgIGVycm9yICJORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSB0b28gaGlnaCIKLSMgICBlbmRpZgotCi0jZWxzZS8vIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX1BSRVBST0NFU1NJTkdfTU9ERSkgfHwgTkROQk9PU1RfUFBfSVNfU0VMRklTSAotCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9QUF9ORVhUX1NJWkUKLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfUFBfTkVYVF9TSVpFIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFCi0jICAgZW5kaWYKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUKLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSAwCi0jICAgZW5kaWYKLQotIyAgIGlmIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDw9IE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFCi0KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfZnJvbV90by5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwPgotCi0vLyBpdGVyYXRvcgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3NwZWNfaXRlcihuKVwKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj5cCi0gICAgICAgIHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPG4+ID5cCi0gICAgICAgIHtcCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0gIyMgbiB0eXBlO1wKLSAgICAgICAgICAgIHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzxuICsgMT4gPiBuZXh0O1wKLSAgICAgICAgfTsKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgSW5jcmVhc2VfTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkU+IHN0cnVjdCB2X2l0ZXI7IC8vIG5vdCBkZWZpbmVkCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPICBORE5CT09TVF9UWVBFT0Zfc3BlY19pdGVyCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyBcCi0gICAgICAgIChORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUpLCBcCi0gICAgICAgICBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpKQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLQotfX0KLQotIyAgICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX3NwZWNfaXRlcgotCi0vLyB2ZWN0b3IKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2l0ZW0oeiwgbiwgXylcCi0gICAgICAgIHR5cGVkZWYgUCAjIyBuIGl0ZW0gIyMgbjsKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2Zha2VfaXRlbSh6LCBuLCBfKVwKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbSAjIyBuOwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2RlZmluZV92ZWN0b3IobilcCi0gICAgICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIGNsYXNzIFApIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX05PVChuKSwgY2xhc3MgVCA9IHZvaWQpPlwKLSAgICAgICAgc3RydWN0IHZlY3RvciAjIyBuXAotICAgICAgICB7XAotICAgICAgICAgICAgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yICMjIG48TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobixQKT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjtcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQobiwgTkROQk9PU1RfVFlQRU9GX3R5cGVkZWZfaXRlbSwgfilcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyhuLCBORE5CT09TVF9UWVBFT0ZfUFBfTkVYVF9TSVpFLCBORE5CT09TVF9UWVBFT0ZfdHlwZWRlZl9mYWtlX2l0ZW0sIH4pXAotICAgICAgICB9OwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8gIE5ETkJPT1NUX1RZUEVPRl9kZWZpbmVfdmVjdG9yCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyBcCi0gICAgICAgIChORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSxORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLX19Ci0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2l0ZW0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2Zha2VfaXRlbQotIyAgICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX2RlZmluZV92ZWN0b3IKLQotLy8gcHVzaF9iYWNrCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0Zfc3BlY19wdXNoX2JhY2sobilcCi0gICAgICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIGNsYXNzIFApIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIGNsYXNzIFQ+XAotICAgICAgICBzdHJ1Y3QgcHVzaF9iYWNrPE5ETkJPT1NUX1BQX0NBVChuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yLCBuKTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKT4sIFQ+XAotICAgICAgICB7XAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQobmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvciwgTkROQk9PU1RfUFBfSU5DKG4pKTxcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgVFwKLSAgICAgICAgICAgID4gdHlwZTtcCi0gICAgICAgIH07Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotIyAgIGlmICAgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCA1MAotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2sgewotICAgICAgICB0eXBlZGVmIFYgdHlwZTsKLSAgICB9OwotIyAgIGVuZGlmCi0gICAgLy9kZWZhdWx0IGJlaGF2aW91ciBpcyB0byBsZXQgcHVzaF9iYWNrIGlnbm9yZSBULCBhbmQgcmV0dXJuIHRoZSBpbnB1dCB2ZWN0b3IuCi0gICAgLy9UaGlzIGlzIHRvIGxldCBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYgd29yayBwcm9wZXJseSB3aXRoIHRoZSBkZWZhdWx0IHZlY3Rvci4KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8gIE5ETkJPT1NUX1RZUEVPRl9zcGVjX3B1c2hfYmFjawotIyAgICAgZGVmaW5lICBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgXAotICAgICAgICAoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFKSwgXAotICAgICAgICAgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSkKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLX19Ci0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl9zcGVjX3B1c2hfYmFjawotCi0jICAgZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFPD1ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRQotIyAgIHVuZGVmICBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRQotIyAgIHVuZGVmICBORE5CT09TVF9UWVBFT0ZfUFBfTkVYVF9TSVpFCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1BSRVBST0NFU1NJTkdfTU9ERSB8fCBORE5CT09TVF9QUF9JU19TRUxGSVNICi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTAwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjEwMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMTZjZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTAwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vIFByZXByb2Nlc3NlZCBjb2RlLCBkbyBub3QgZWRpdCBtYW51YWxseSAhCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIEluY3JlYXNlX05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFPiBzdHJ1Y3Qgdl9pdGVyOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OSArIDE+ID4gbmV4dDsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID0gdm9pZD4gc3RydWN0IHZlY3RvcjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IwPD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCA+IHN0cnVjdCB2ZWN0b3IxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTwgUDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxID4gc3RydWN0IHZlY3RvcjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyPCBQMCAsIFAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgPiBzdHJ1Y3QgdmVjdG9yMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyA+IHN0cnVjdCB2ZWN0b3I0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ID4gc3RydWN0IHZlY3RvcjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgPiBzdHJ1Y3QgdmVjdG9yNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiA+IHN0cnVjdCB2ZWN0b3I3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ID4gc3RydWN0IHZlY3RvcjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggPiBzdHJ1Y3QgdmVjdG9yOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSA+IHN0cnVjdCB2ZWN0b3IxMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwID4gc3RydWN0IHZlY3RvcjExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgPiBzdHJ1Y3QgdmVjdG9yMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiA+IHN0cnVjdCB2ZWN0b3IxMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzID4gc3RydWN0IHZlY3RvcjE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgPiBzdHJ1Y3QgdmVjdG9yMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSA+IHN0cnVjdCB2ZWN0b3IxNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ID4gc3RydWN0IHZlY3RvcjE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgPiBzdHJ1Y3QgdmVjdG9yMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCA+IHN0cnVjdCB2ZWN0b3IxOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ID4gc3RydWN0IHZlY3RvcjIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgPiBzdHJ1Y3QgdmVjdG9yMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSA+IHN0cnVjdCB2ZWN0b3IyMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyID4gc3RydWN0IHZlY3RvcjIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgPiBzdHJ1Y3QgdmVjdG9yMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCA+IHN0cnVjdCB2ZWN0b3IyNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ID4gc3RydWN0IHZlY3RvcjI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgPiBzdHJ1Y3QgdmVjdG9yMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyA+IHN0cnVjdCB2ZWN0b3IyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ID4gc3RydWN0IHZlY3RvcjI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgPiBzdHJ1Y3QgdmVjdG9yMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCA+IHN0cnVjdCB2ZWN0b3IzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxID4gc3RydWN0IHZlY3RvcjMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgPiBzdHJ1Y3QgdmVjdG9yMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyA+IHN0cnVjdCB2ZWN0b3IzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ID4gc3RydWN0IHZlY3RvcjM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgPiBzdHJ1Y3QgdmVjdG9yMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiA+IHN0cnVjdCB2ZWN0b3IzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ID4gc3RydWN0IHZlY3RvcjM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggPiBzdHJ1Y3QgdmVjdG9yMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSA+IHN0cnVjdCB2ZWN0b3I0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwID4gc3RydWN0IHZlY3RvcjQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgPiBzdHJ1Y3QgdmVjdG9yNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiA+IHN0cnVjdCB2ZWN0b3I0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzID4gc3RydWN0IHZlY3RvcjQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgPiBzdHJ1Y3QgdmVjdG9yNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSA+IHN0cnVjdCB2ZWN0b3I0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ID4gc3RydWN0IHZlY3RvcjQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgPiBzdHJ1Y3QgdmVjdG9yNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCA+IHN0cnVjdCB2ZWN0b3I0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ID4gc3RydWN0IHZlY3RvcjUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgPiBzdHJ1Y3QgdmVjdG9yNTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSA+IHN0cnVjdCB2ZWN0b3I1MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyID4gc3RydWN0IHZlY3RvcjUzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgPiBzdHJ1Y3QgdmVjdG9yNTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCA+IHN0cnVjdCB2ZWN0b3I1NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ID4gc3RydWN0IHZlY3RvcjU2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgPiBzdHJ1Y3QgdmVjdG9yNTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyA+IHN0cnVjdCB2ZWN0b3I1OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ID4gc3RydWN0IHZlY3RvcjU5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgPiBzdHJ1Y3QgdmVjdG9yNjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCA+IHN0cnVjdCB2ZWN0b3I2MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxID4gc3RydWN0IHZlY3RvcjYyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgPiBzdHJ1Y3QgdmVjdG9yNjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyA+IHN0cnVjdCB2ZWN0b3I2NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ID4gc3RydWN0IHZlY3RvcjY1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgPiBzdHJ1Y3QgdmVjdG9yNjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiA+IHN0cnVjdCB2ZWN0b3I2NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ID4gc3RydWN0IHZlY3RvcjY4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggPiBzdHJ1Y3QgdmVjdG9yNjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSA+IHN0cnVjdCB2ZWN0b3I3MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwID4gc3RydWN0IHZlY3RvcjcxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgPiBzdHJ1Y3QgdmVjdG9yNzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiA+IHN0cnVjdCB2ZWN0b3I3MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczID4gc3RydWN0IHZlY3Rvcjc0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgPiBzdHJ1Y3QgdmVjdG9yNzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSA+IHN0cnVjdCB2ZWN0b3I3NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ID4gc3RydWN0IHZlY3Rvcjc3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgPiBzdHJ1Y3QgdmVjdG9yNzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCA+IHN0cnVjdCB2ZWN0b3I3OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ID4gc3RydWN0IHZlY3RvcjgwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgPiBzdHJ1Y3QgdmVjdG9yODEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSA+IHN0cnVjdCB2ZWN0b3I4MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyID4gc3RydWN0IHZlY3RvcjgzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgPiBzdHJ1Y3QgdmVjdG9yODQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCA+IHN0cnVjdCB2ZWN0b3I4NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ID4gc3RydWN0IHZlY3Rvcjg2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgPiBzdHJ1Y3QgdmVjdG9yODcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyA+IHN0cnVjdCB2ZWN0b3I4OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ID4gc3RydWN0IHZlY3Rvcjg5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgPiBzdHJ1Y3QgdmVjdG9yOTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCA+IHN0cnVjdCB2ZWN0b3I5MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxID4gc3RydWN0IHZlY3RvcjkyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgPiBzdHJ1Y3QgdmVjdG9yOTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyA+IHN0cnVjdCB2ZWN0b3I5NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ID4gc3RydWN0IHZlY3Rvcjk1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgPiBzdHJ1Y3QgdmVjdG9yOTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiA+IHN0cnVjdCB2ZWN0b3I5NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ID4gc3RydWN0IHZlY3Rvcjk4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggPiBzdHJ1Y3QgdmVjdG9yOTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSA+IHN0cnVjdCB2ZWN0b3IxMDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjA8PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgUDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBQMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFQgPiB0eXBlOyB9OwotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjE1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IxNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODJlODQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjE1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLyBQcmVwcm9jZXNzZWQgY29kZSwgZG8gbm90IGVkaXQgbWFudWFsbHkgIQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBJbmNyZWFzZV9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRT4gc3RydWN0IHZfaXRlcjsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDczPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDczICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OSArIDE+ID4gbmV4dDsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID0gdm9pZD4gc3RydWN0IHZlY3RvcjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IwPD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCA+IHN0cnVjdCB2ZWN0b3IxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTwgUDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxID4gc3RydWN0IHZlY3RvcjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyPCBQMCAsIFAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgPiBzdHJ1Y3QgdmVjdG9yMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyA+IHN0cnVjdCB2ZWN0b3I0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ID4gc3RydWN0IHZlY3RvcjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgPiBzdHJ1Y3QgdmVjdG9yNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiA+IHN0cnVjdCB2ZWN0b3I3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ID4gc3RydWN0IHZlY3RvcjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggPiBzdHJ1Y3QgdmVjdG9yOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSA+IHN0cnVjdCB2ZWN0b3IxMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwID4gc3RydWN0IHZlY3RvcjExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgPiBzdHJ1Y3QgdmVjdG9yMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiA+IHN0cnVjdCB2ZWN0b3IxMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzID4gc3RydWN0IHZlY3RvcjE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgPiBzdHJ1Y3QgdmVjdG9yMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSA+IHN0cnVjdCB2ZWN0b3IxNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ID4gc3RydWN0IHZlY3RvcjE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgPiBzdHJ1Y3QgdmVjdG9yMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCA+IHN0cnVjdCB2ZWN0b3IxOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ID4gc3RydWN0IHZlY3RvcjIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgPiBzdHJ1Y3QgdmVjdG9yMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSA+IHN0cnVjdCB2ZWN0b3IyMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyID4gc3RydWN0IHZlY3RvcjIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgPiBzdHJ1Y3QgdmVjdG9yMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCA+IHN0cnVjdCB2ZWN0b3IyNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ID4gc3RydWN0IHZlY3RvcjI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgPiBzdHJ1Y3QgdmVjdG9yMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyA+IHN0cnVjdCB2ZWN0b3IyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ID4gc3RydWN0IHZlY3RvcjI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgPiBzdHJ1Y3QgdmVjdG9yMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCA+IHN0cnVjdCB2ZWN0b3IzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxID4gc3RydWN0IHZlY3RvcjMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgPiBzdHJ1Y3QgdmVjdG9yMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyA+IHN0cnVjdCB2ZWN0b3IzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ID4gc3RydWN0IHZlY3RvcjM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgPiBzdHJ1Y3QgdmVjdG9yMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiA+IHN0cnVjdCB2ZWN0b3IzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ID4gc3RydWN0IHZlY3RvcjM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggPiBzdHJ1Y3QgdmVjdG9yMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSA+IHN0cnVjdCB2ZWN0b3I0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwID4gc3RydWN0IHZlY3RvcjQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgPiBzdHJ1Y3QgdmVjdG9yNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiA+IHN0cnVjdCB2ZWN0b3I0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzID4gc3RydWN0IHZlY3RvcjQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgPiBzdHJ1Y3QgdmVjdG9yNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSA+IHN0cnVjdCB2ZWN0b3I0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ID4gc3RydWN0IHZlY3RvcjQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgPiBzdHJ1Y3QgdmVjdG9yNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCA+IHN0cnVjdCB2ZWN0b3I0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ID4gc3RydWN0IHZlY3RvcjUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgPiBzdHJ1Y3QgdmVjdG9yNTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSA+IHN0cnVjdCB2ZWN0b3I1MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyID4gc3RydWN0IHZlY3RvcjUzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgPiBzdHJ1Y3QgdmVjdG9yNTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCA+IHN0cnVjdCB2ZWN0b3I1NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ID4gc3RydWN0IHZlY3RvcjU2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgPiBzdHJ1Y3QgdmVjdG9yNTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyA+IHN0cnVjdCB2ZWN0b3I1OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ID4gc3RydWN0IHZlY3RvcjU5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgPiBzdHJ1Y3QgdmVjdG9yNjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCA+IHN0cnVjdCB2ZWN0b3I2MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxID4gc3RydWN0IHZlY3RvcjYyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgPiBzdHJ1Y3QgdmVjdG9yNjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyA+IHN0cnVjdCB2ZWN0b3I2NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ID4gc3RydWN0IHZlY3RvcjY1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgPiBzdHJ1Y3QgdmVjdG9yNjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiA+IHN0cnVjdCB2ZWN0b3I2NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ID4gc3RydWN0IHZlY3RvcjY4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggPiBzdHJ1Y3QgdmVjdG9yNjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSA+IHN0cnVjdCB2ZWN0b3I3MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwID4gc3RydWN0IHZlY3RvcjcxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgPiBzdHJ1Y3QgdmVjdG9yNzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiA+IHN0cnVjdCB2ZWN0b3I3MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczID4gc3RydWN0IHZlY3Rvcjc0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgPiBzdHJ1Y3QgdmVjdG9yNzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSA+IHN0cnVjdCB2ZWN0b3I3NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ID4gc3RydWN0IHZlY3Rvcjc3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgPiBzdHJ1Y3QgdmVjdG9yNzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCA+IHN0cnVjdCB2ZWN0b3I3OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ID4gc3RydWN0IHZlY3RvcjgwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgPiBzdHJ1Y3QgdmVjdG9yODEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSA+IHN0cnVjdCB2ZWN0b3I4MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyID4gc3RydWN0IHZlY3RvcjgzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgPiBzdHJ1Y3QgdmVjdG9yODQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCA+IHN0cnVjdCB2ZWN0b3I4NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ID4gc3RydWN0IHZlY3Rvcjg2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgPiBzdHJ1Y3QgdmVjdG9yODcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyA+IHN0cnVjdCB2ZWN0b3I4OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ID4gc3RydWN0IHZlY3Rvcjg5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgPiBzdHJ1Y3QgdmVjdG9yOTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCA+IHN0cnVjdCB2ZWN0b3I5MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxID4gc3RydWN0IHZlY3RvcjkyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgPiBzdHJ1Y3QgdmVjdG9yOTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyA+IHN0cnVjdCB2ZWN0b3I5NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ID4gc3RydWN0IHZlY3Rvcjk1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgPiBzdHJ1Y3QgdmVjdG9yOTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiA+IHN0cnVjdCB2ZWN0b3I5NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ID4gc3RydWN0IHZlY3Rvcjk4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggPiBzdHJ1Y3QgdmVjdG9yOTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSA+IHN0cnVjdCB2ZWN0b3IxMDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwID4gc3RydWN0IHZlY3RvcjEwMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgPiBzdHJ1Y3QgdmVjdG9yMTAyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiA+IHN0cnVjdCB2ZWN0b3IxMDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzID4gc3RydWN0IHZlY3RvcjEwNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgPiBzdHJ1Y3QgdmVjdG9yMTA1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSA+IHN0cnVjdCB2ZWN0b3IxMDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ID4gc3RydWN0IHZlY3RvcjEwNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgPiBzdHJ1Y3QgdmVjdG9yMTA4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCA+IHN0cnVjdCB2ZWN0b3IxMDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ID4gc3RydWN0IHZlY3RvcjExMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgPiBzdHJ1Y3QgdmVjdG9yMTExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSA+IHN0cnVjdCB2ZWN0b3IxMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyID4gc3RydWN0IHZlY3RvcjExMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgPiBzdHJ1Y3QgdmVjdG9yMTE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCA+IHN0cnVjdCB2ZWN0b3IxMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ID4gc3RydWN0IHZlY3RvcjExNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgPiBzdHJ1Y3QgdmVjdG9yMTE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyA+IHN0cnVjdCB2ZWN0b3IxMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ID4gc3RydWN0IHZlY3RvcjExOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgPiBzdHJ1Y3QgdmVjdG9yMTIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCA+IHN0cnVjdCB2ZWN0b3IxMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxID4gc3RydWN0IHZlY3RvcjEyMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgPiBzdHJ1Y3QgdmVjdG9yMTIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyA+IHN0cnVjdCB2ZWN0b3IxMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ID4gc3RydWN0IHZlY3RvcjEyNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgPiBzdHJ1Y3QgdmVjdG9yMTI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiA+IHN0cnVjdCB2ZWN0b3IxMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ID4gc3RydWN0IHZlY3RvcjEyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggPiBzdHJ1Y3QgdmVjdG9yMTI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSA+IHN0cnVjdCB2ZWN0b3IxMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwID4gc3RydWN0IHZlY3RvcjEzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgPiBzdHJ1Y3QgdmVjdG9yMTMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiA+IHN0cnVjdCB2ZWN0b3IxMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzID4gc3RydWN0IHZlY3RvcjEzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgPiBzdHJ1Y3QgdmVjdG9yMTM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSA+IHN0cnVjdCB2ZWN0b3IxMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ID4gc3RydWN0IHZlY3RvcjEzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgPiBzdHJ1Y3QgdmVjdG9yMTM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCA+IHN0cnVjdCB2ZWN0b3IxMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ID4gc3RydWN0IHZlY3RvcjE0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgPiBzdHJ1Y3QgdmVjdG9yMTQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSA+IHN0cnVjdCB2ZWN0b3IxNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyID4gc3RydWN0IHZlY3RvcjE0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgPiBzdHJ1Y3QgdmVjdG9yMTQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCA+IHN0cnVjdCB2ZWN0b3IxNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ID4gc3RydWN0IHZlY3RvcjE0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgPiBzdHJ1Y3QgdmVjdG9yMTQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyA+IHN0cnVjdCB2ZWN0b3IxNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ID4gc3RydWN0IHZlY3RvcjE0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgPiBzdHJ1Y3QgdmVjdG9yMTUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2sgewotICAgICAgICB0eXBlZGVmIFYgdHlwZTsKLSAgICB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMDw+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBQMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFAxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFQgPiB0eXBlOyB9OwotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjIwMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IyMDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGE4ZDBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjIwMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLyBQcmVwcm9jZXNzZWQgY29kZSwgZG8gbm90IGVkaXQgbWFudWFsbHkgIQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBJbmNyZWFzZV9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRT4gc3RydWN0IHZfaXRlcjsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDczPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDczICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTUwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTUzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTYyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTcxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTgwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTgwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTgxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTgzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTgzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTkyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk5ICsgMT4gPiBuZXh0OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPSB2b2lkPiBzdHJ1Y3QgdmVjdG9yMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwID4gc3RydWN0IHZlY3RvcjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxPCBQMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgPiBzdHJ1Y3QgdmVjdG9yMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI8IFAwICwgUDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiA+IHN0cnVjdCB2ZWN0b3IzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzID4gc3RydWN0IHZlY3RvcjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgPiBzdHJ1Y3QgdmVjdG9yNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSA+IHN0cnVjdCB2ZWN0b3I2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ID4gc3RydWN0IHZlY3RvcjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgPiBzdHJ1Y3QgdmVjdG9yOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCA+IHN0cnVjdCB2ZWN0b3I5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ID4gc3RydWN0IHZlY3RvcjEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgPiBzdHJ1Y3QgdmVjdG9yMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSA+IHN0cnVjdCB2ZWN0b3IxMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyID4gc3RydWN0IHZlY3RvcjEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgPiBzdHJ1Y3QgdmVjdG9yMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCA+IHN0cnVjdCB2ZWN0b3IxNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ID4gc3RydWN0IHZlY3RvcjE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgPiBzdHJ1Y3QgdmVjdG9yMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyA+IHN0cnVjdCB2ZWN0b3IxOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ID4gc3RydWN0IHZlY3RvcjE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgPiBzdHJ1Y3QgdmVjdG9yMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCA+IHN0cnVjdCB2ZWN0b3IyMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxID4gc3RydWN0IHZlY3RvcjIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgPiBzdHJ1Y3QgdmVjdG9yMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyA+IHN0cnVjdCB2ZWN0b3IyNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ID4gc3RydWN0IHZlY3RvcjI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgPiBzdHJ1Y3QgdmVjdG9yMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiA+IHN0cnVjdCB2ZWN0b3IyNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ID4gc3RydWN0IHZlY3RvcjI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggPiBzdHJ1Y3QgdmVjdG9yMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSA+IHN0cnVjdCB2ZWN0b3IzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwID4gc3RydWN0IHZlY3RvcjMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgPiBzdHJ1Y3QgdmVjdG9yMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiA+IHN0cnVjdCB2ZWN0b3IzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzID4gc3RydWN0IHZlY3RvcjM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgPiBzdHJ1Y3QgdmVjdG9yMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSA+IHN0cnVjdCB2ZWN0b3IzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ID4gc3RydWN0IHZlY3RvcjM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgPiBzdHJ1Y3QgdmVjdG9yMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCA+IHN0cnVjdCB2ZWN0b3IzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ID4gc3RydWN0IHZlY3RvcjQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgPiBzdHJ1Y3QgdmVjdG9yNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSA+IHN0cnVjdCB2ZWN0b3I0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyID4gc3RydWN0IHZlY3RvcjQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgPiBzdHJ1Y3QgdmVjdG9yNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCA+IHN0cnVjdCB2ZWN0b3I0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ID4gc3RydWN0IHZlY3RvcjQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgPiBzdHJ1Y3QgdmVjdG9yNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyA+IHN0cnVjdCB2ZWN0b3I0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ID4gc3RydWN0IHZlY3RvcjQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgPiBzdHJ1Y3QgdmVjdG9yNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCA+IHN0cnVjdCB2ZWN0b3I1MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxID4gc3RydWN0IHZlY3RvcjUyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgPiBzdHJ1Y3QgdmVjdG9yNTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyA+IHN0cnVjdCB2ZWN0b3I1NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ID4gc3RydWN0IHZlY3RvcjU1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgPiBzdHJ1Y3QgdmVjdG9yNTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiA+IHN0cnVjdCB2ZWN0b3I1NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ID4gc3RydWN0IHZlY3RvcjU4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggPiBzdHJ1Y3QgdmVjdG9yNTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSA+IHN0cnVjdCB2ZWN0b3I2MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwID4gc3RydWN0IHZlY3RvcjYxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgPiBzdHJ1Y3QgdmVjdG9yNjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiA+IHN0cnVjdCB2ZWN0b3I2MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzID4gc3RydWN0IHZlY3RvcjY0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgPiBzdHJ1Y3QgdmVjdG9yNjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSA+IHN0cnVjdCB2ZWN0b3I2NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ID4gc3RydWN0IHZlY3RvcjY3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgPiBzdHJ1Y3QgdmVjdG9yNjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCA+IHN0cnVjdCB2ZWN0b3I2OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ID4gc3RydWN0IHZlY3RvcjcwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgPiBzdHJ1Y3QgdmVjdG9yNzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSA+IHN0cnVjdCB2ZWN0b3I3MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyID4gc3RydWN0IHZlY3RvcjczIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgPiBzdHJ1Y3QgdmVjdG9yNzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCA+IHN0cnVjdCB2ZWN0b3I3NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ID4gc3RydWN0IHZlY3Rvcjc2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgPiBzdHJ1Y3QgdmVjdG9yNzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyA+IHN0cnVjdCB2ZWN0b3I3OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ID4gc3RydWN0IHZlY3Rvcjc5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgPiBzdHJ1Y3QgdmVjdG9yODAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCA+IHN0cnVjdCB2ZWN0b3I4MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxID4gc3RydWN0IHZlY3RvcjgyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgPiBzdHJ1Y3QgdmVjdG9yODMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyA+IHN0cnVjdCB2ZWN0b3I4NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ID4gc3RydWN0IHZlY3Rvcjg1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgPiBzdHJ1Y3QgdmVjdG9yODYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiA+IHN0cnVjdCB2ZWN0b3I4NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ID4gc3RydWN0IHZlY3Rvcjg4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggPiBzdHJ1Y3QgdmVjdG9yODkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSA+IHN0cnVjdCB2ZWN0b3I5MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwID4gc3RydWN0IHZlY3RvcjkxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgPiBzdHJ1Y3QgdmVjdG9yOTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiA+IHN0cnVjdCB2ZWN0b3I5MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzID4gc3RydWN0IHZlY3Rvcjk0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgPiBzdHJ1Y3QgdmVjdG9yOTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSA+IHN0cnVjdCB2ZWN0b3I5NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ID4gc3RydWN0IHZlY3Rvcjk3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgPiBzdHJ1Y3QgdmVjdG9yOTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCA+IHN0cnVjdCB2ZWN0b3I5OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ID4gc3RydWN0IHZlY3RvcjEwMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgPiBzdHJ1Y3QgdmVjdG9yMTAxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSA+IHN0cnVjdCB2ZWN0b3IxMDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyID4gc3RydWN0IHZlY3RvcjEwMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgPiBzdHJ1Y3QgdmVjdG9yMTA0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCA+IHN0cnVjdCB2ZWN0b3IxMDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ID4gc3RydWN0IHZlY3RvcjEwNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgPiBzdHJ1Y3QgdmVjdG9yMTA3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyA+IHN0cnVjdCB2ZWN0b3IxMDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ID4gc3RydWN0IHZlY3RvcjEwOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgPiBzdHJ1Y3QgdmVjdG9yMTEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCA+IHN0cnVjdCB2ZWN0b3IxMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExID4gc3RydWN0IHZlY3RvcjExMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgPiBzdHJ1Y3QgdmVjdG9yMTEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyA+IHN0cnVjdCB2ZWN0b3IxMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ID4gc3RydWN0IHZlY3RvcjExNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgPiBzdHJ1Y3QgdmVjdG9yMTE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiA+IHN0cnVjdCB2ZWN0b3IxMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ID4gc3RydWN0IHZlY3RvcjExOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggPiBzdHJ1Y3QgdmVjdG9yMTE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSA+IHN0cnVjdCB2ZWN0b3IxMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwID4gc3RydWN0IHZlY3RvcjEyMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgPiBzdHJ1Y3QgdmVjdG9yMTIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiA+IHN0cnVjdCB2ZWN0b3IxMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzID4gc3RydWN0IHZlY3RvcjEyNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgPiBzdHJ1Y3QgdmVjdG9yMTI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSA+IHN0cnVjdCB2ZWN0b3IxMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ID4gc3RydWN0IHZlY3RvcjEyNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgPiBzdHJ1Y3QgdmVjdG9yMTI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCA+IHN0cnVjdCB2ZWN0b3IxMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ID4gc3RydWN0IHZlY3RvcjEzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgPiBzdHJ1Y3QgdmVjdG9yMTMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSA+IHN0cnVjdCB2ZWN0b3IxMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyID4gc3RydWN0IHZlY3RvcjEzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgPiBzdHJ1Y3QgdmVjdG9yMTM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCA+IHN0cnVjdCB2ZWN0b3IxMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ID4gc3RydWN0IHZlY3RvcjEzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgPiBzdHJ1Y3QgdmVjdG9yMTM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyA+IHN0cnVjdCB2ZWN0b3IxMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ID4gc3RydWN0IHZlY3RvcjEzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgPiBzdHJ1Y3QgdmVjdG9yMTQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCA+IHN0cnVjdCB2ZWN0b3IxNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxID4gc3RydWN0IHZlY3RvcjE0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgPiBzdHJ1Y3QgdmVjdG9yMTQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyA+IHN0cnVjdCB2ZWN0b3IxNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ID4gc3RydWN0IHZlY3RvcjE0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgPiBzdHJ1Y3QgdmVjdG9yMTQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiA+IHN0cnVjdCB2ZWN0b3IxNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ID4gc3RydWN0IHZlY3RvcjE0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggPiBzdHJ1Y3QgdmVjdG9yMTQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSA+IHN0cnVjdCB2ZWN0b3IxNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwID4gc3RydWN0IHZlY3RvcjE1MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgPiBzdHJ1Y3QgdmVjdG9yMTUyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiA+IHN0cnVjdCB2ZWN0b3IxNTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzID4gc3RydWN0IHZlY3RvcjE1NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgPiBzdHJ1Y3QgdmVjdG9yMTU1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSA+IHN0cnVjdCB2ZWN0b3IxNTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ID4gc3RydWN0IHZlY3RvcjE1NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgPiBzdHJ1Y3QgdmVjdG9yMTU4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCA+IHN0cnVjdCB2ZWN0b3IxNTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ID4gc3RydWN0IHZlY3RvcjE2MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgPiBzdHJ1Y3QgdmVjdG9yMTYxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSA+IHN0cnVjdCB2ZWN0b3IxNjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyID4gc3RydWN0IHZlY3RvcjE2MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgPiBzdHJ1Y3QgdmVjdG9yMTY0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCA+IHN0cnVjdCB2ZWN0b3IxNjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ID4gc3RydWN0IHZlY3RvcjE2NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgPiBzdHJ1Y3QgdmVjdG9yMTY3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyA+IHN0cnVjdCB2ZWN0b3IxNjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ID4gc3RydWN0IHZlY3RvcjE2OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgPiBzdHJ1Y3QgdmVjdG9yMTcwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCA+IHN0cnVjdCB2ZWN0b3IxNzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxID4gc3RydWN0IHZlY3RvcjE3MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgPiBzdHJ1Y3QgdmVjdG9yMTczIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyA+IHN0cnVjdCB2ZWN0b3IxNzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ID4gc3RydWN0IHZlY3RvcjE3NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgPiBzdHJ1Y3QgdmVjdG9yMTc2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiA+IHN0cnVjdCB2ZWN0b3IxNzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ID4gc3RydWN0IHZlY3RvcjE3OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggPiBzdHJ1Y3QgdmVjdG9yMTc5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSA+IHN0cnVjdCB2ZWN0b3IxODAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwID4gc3RydWN0IHZlY3RvcjE4MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgPiBzdHJ1Y3QgdmVjdG9yMTgyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiA+IHN0cnVjdCB2ZWN0b3IxODMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzID4gc3RydWN0IHZlY3RvcjE4NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgPiBzdHJ1Y3QgdmVjdG9yMTg1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSA+IHN0cnVjdCB2ZWN0b3IxODYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ID4gc3RydWN0IHZlY3RvcjE4NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgPiBzdHJ1Y3QgdmVjdG9yMTg4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCA+IHN0cnVjdCB2ZWN0b3IxODkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ID4gc3RydWN0IHZlY3RvcjE5MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgPiBzdHJ1Y3QgdmVjdG9yMTkxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSA+IHN0cnVjdCB2ZWN0b3IxOTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyID4gc3RydWN0IHZlY3RvcjE5MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgPiBzdHJ1Y3QgdmVjdG9yMTk0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCA+IHN0cnVjdCB2ZWN0b3IxOTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ID4gc3RydWN0IHZlY3RvcjE5NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgPiBzdHJ1Y3QgdmVjdG9yMTk3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgUDE5NyA+IHN0cnVjdCB2ZWN0b3IxOTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIFAxOTcgaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFAxOTcgLCBjbGFzcyBQMTk4ID4gc3RydWN0IHZlY3RvcjE5OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5NyAsIFAxOTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIFAxOTcgaXRlbTE5NzsgdHlwZWRlZiBQMTk4IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBQMTk3ICwgY2xhc3MgUDE5OCAsIGNsYXNzIFAxOTkgPiBzdHJ1Y3QgdmVjdG9yMjAwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3ICwgUDE5OCAsIFAxOTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIFAxOTcgaXRlbTE5NzsgdHlwZWRlZiBQMTk4IGl0ZW0xOTg7IHR5cGVkZWYgUDE5OSBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjA8PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxPCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgUDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjwgUDAgLCBQMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzwgUDAgLCBQMSAsIFAyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgUDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjazxuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFAxOTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgUDE5NyAsIGNsYXNzIFAxOTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTcgLCBQMTk4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTcgLCBQMTk4ICwgVCA+IHR5cGU7IH07Ci19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDQxY2U3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vIFByZXByb2Nlc3NlZCBjb2RlLCBkbyBub3QgZWRpdCBtYW51YWxseSAhCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIEluY3JlYXNlX05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFPiBzdHJ1Y3Qgdl9pdGVyOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDkgKyAxPiA+IG5leHQ7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA9IHZvaWQ+IHN0cnVjdCB2ZWN0b3IwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMDw+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgPiBzdHJ1Y3QgdmVjdG9yMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE8IFAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSA+IHN0cnVjdCB2ZWN0b3IyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjwgUDAgLCBQMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyID4gc3RydWN0IHZlY3RvcjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzPCBQMCAsIFAxICwgUDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgPiBzdHJ1Y3QgdmVjdG9yNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCA+IHN0cnVjdCB2ZWN0b3I1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ID4gc3RydWN0IHZlY3RvcjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgPiBzdHJ1Y3QgdmVjdG9yNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyA+IHN0cnVjdCB2ZWN0b3I4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ID4gc3RydWN0IHZlY3RvcjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgPiBzdHJ1Y3QgdmVjdG9yMTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCA+IHN0cnVjdCB2ZWN0b3IxMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExID4gc3RydWN0IHZlY3RvcjEyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgPiBzdHJ1Y3QgdmVjdG9yMTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyA+IHN0cnVjdCB2ZWN0b3IxNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ID4gc3RydWN0IHZlY3RvcjE1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgPiBzdHJ1Y3QgdmVjdG9yMTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiA+IHN0cnVjdCB2ZWN0b3IxNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ID4gc3RydWN0IHZlY3RvcjE4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggPiBzdHJ1Y3QgdmVjdG9yMTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0xOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSA+IHN0cnVjdCB2ZWN0b3IyMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwID4gc3RydWN0IHZlY3RvcjIxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgPiBzdHJ1Y3QgdmVjdG9yMjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiA+IHN0cnVjdCB2ZWN0b3IyMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzID4gc3RydWN0IHZlY3RvcjI0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgPiBzdHJ1Y3QgdmVjdG9yMjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSA+IHN0cnVjdCB2ZWN0b3IyNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ID4gc3RydWN0IHZlY3RvcjI3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgPiBzdHJ1Y3QgdmVjdG9yMjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCA+IHN0cnVjdCB2ZWN0b3IyOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ID4gc3RydWN0IHZlY3RvcjMwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgPiBzdHJ1Y3QgdmVjdG9yMzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSA+IHN0cnVjdCB2ZWN0b3IzMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyID4gc3RydWN0IHZlY3RvcjMzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgPiBzdHJ1Y3QgdmVjdG9yMzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCA+IHN0cnVjdCB2ZWN0b3IzNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ID4gc3RydWN0IHZlY3RvcjM2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgPiBzdHJ1Y3QgdmVjdG9yMzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyA+IHN0cnVjdCB2ZWN0b3IzOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ID4gc3RydWN0IHZlY3RvcjM5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgPiBzdHJ1Y3QgdmVjdG9yNDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCA+IHN0cnVjdCB2ZWN0b3I0MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxID4gc3RydWN0IHZlY3RvcjQyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgPiBzdHJ1Y3QgdmVjdG9yNDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyA+IHN0cnVjdCB2ZWN0b3I0NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ID4gc3RydWN0IHZlY3RvcjQ1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgPiBzdHJ1Y3QgdmVjdG9yNDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiA+IHN0cnVjdCB2ZWN0b3I0NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ID4gc3RydWN0IHZlY3RvcjQ4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggPiBzdHJ1Y3QgdmVjdG9yNDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSA+IHN0cnVjdCB2ZWN0b3I1MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjayB7Ci0gICAgICAgIHR5cGVkZWYgViB0eXBlOwotICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IwPD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE8IFAwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyPCBQMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI8IFAwICwgUDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNDwgUDAgLCBQMSAsIFAyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFQgPiB0eXBlOyB9OwotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5pdHMvZGV0YWlsL3V0aWxpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bml0cy9kZXRhaWwvdXRpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZWViYzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bml0cy9kZXRhaWwvdXRpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLy8gQm9vc3QuVW5pdHMgLSBBIEMrKyBsaWJyYXJ5IGZvciB6ZXJvLW92ZXJoZWFkIGRpbWVuc2lvbmFsIGFuYWx5c2lzIGFuZCAKLS8vIHVuaXQvcXVhbnRpdHkgbWFuaXB1bGF0aW9uIGFuZCBjb252ZXJzaW9uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggTWF0dGhpYXMgQ2hyaXN0aWFuIFNjaGFiZWwKLS8vIENvcHlyaWdodCAoQykgMjAwOCBTdGV2ZW4gV2F0YW5hYmUKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5JVFNfVVRJTElUWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVU5JVFNfVVRJTElUWV9IUFAKLQotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgZGVmaW5lZChfX0dMSUJDUFBfXykKLSNkZWZpbmUgTkROQk9PU1RfVU5JVFNfVVNFX0RFTUFOR0xJTkcKLSNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRpZiAvLyBfX0dOVUNfXwotCi0jaWZkZWYgTkROQk9PU1RfVU5JVFNfVVNFX0RFTUFOR0xJTkcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvcmVwbGFjZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0cyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1pbmxpbmUKLXN0ZDo6c3RyaW5nCi1kZW1hbmdsZShjb25zdCBjaGFyKiBuYW1lKQotewotICAgIC8vIG5lZWQgdG8gZGVtYW5nbGUgQysrIHN5bWJvbHMKLSAgICBjaGFyKiAgICAgICByZWFsbmFtZTsKLSAgICBzdGQ6OnNpemVfdCBsZW47IAotICAgIGludCAgICAgICAgIHN0YXQ7Ci0gICAgIAotICAgIHJlYWxuYW1lID0gYWJpOjpfX2N4YV9kZW1hbmdsZShuYW1lLE5VTEwsJmxlbiwmc3RhdCk7Ci0gICAgCi0gICAgaWYgKHJlYWxuYW1lICE9IE5VTEwpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyAgIG91dChyZWFsbmFtZSk7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmZyZWUocmVhbG5hbWUpOwotICAgICAgICAKLSAgICAgICAgbmRuYm9vc3Q6OnJlcGxhY2VfYWxsKG91dCwibmRuYm9vc3Q6OnVuaXRzOjoiLCIiKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBvdXQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzdGQ6OnN0cmluZygiZGVtYW5nbGUgOjogZXJyb3IgLSB1bmFibGUgdG8gZGVtYW5nbGUgc3BlY2lmaWVkIHN5bWJvbCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgTD4KLXN0ZDo6c3RyaW5nIHNpbXBsaWZ5X3R5cGVuYW1lKGNvbnN0IEwmIC8qc291cmNlKi8pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgICBkZW1hbmdsZWQgPSBkZXRhaWw6OmRlbWFuZ2xlKHR5cGVpZChMKS5uYW1lKCkpOwotCi0gICAgcmV0dXJuIGRlbWFuZ2xlZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdW5pdHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2Vsc2UgLy8gTkROQk9PU1RfVU5JVFNfVVNFX0RFTUFOR0xJTkcKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRzIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLWlubGluZQotc3RkOjpzdHJpbmcKLWRlbWFuZ2xlKGNvbnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBMPgotc3RkOjpzdHJpbmcgc2ltcGxpZnlfdHlwZW5hbWUoY29uc3QgTCYgLypzb3VyY2UqLykKLXsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcodHlwZWlkKEwpLm5hbWUoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vIFRvIGdldCBzeXN0ZW0tc3BlY2lmaWMgcHJlZGVmaW5lZCBtYWNyb3M6Ci0vLyBnY2MgLWFyY2ggcHBjIC1kTSAtRSAtIDwgL2Rldi9udWxsIHwgc29ydCAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VOSVRTX1VTRV9ERU1BTkdMSU5HCi0KLSNlbmRpZiAvLyBORE5CT09TVF9VTklUU19VVElMSVRZX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2FsbG9jYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9hbGxvY2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNmE4ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2FsbG9jYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMjAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwNS0yMDExIERhbmllbCBKYW1lcy4KLS8vIENvcHlyaWdodCAyMDA5IFBhYmxvIEhhbHBlcm4uCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Vub3JkZXJlZCBmb3IgZG9jdW1lbnRhdGlvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9BTExPQ0FURV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0FMTE9DQVRFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL21vdmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zZWxlY3RfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKQotI2luY2x1ZGUgPHR1cGxlPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZC4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzNDUpIC8vIGJlaGF2aW9yIGNoYW5nZTogYW4gb2JqZWN0IG9mIFBPRCB0eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3RlZCB3aXRoIGFuIGluaXRpYWxpemVyIG9mIHRoZSBmb3JtICgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGRlZmF1bHQtaW5pdGlhbGl6ZWQuCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9MSU1JVCAxMAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gQml0cyBhbmQgcGllY2VzIGZvciBpbXBsZW1lbnRpbmcgdHJhaXRzCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIG1ha2UoKTsKLSAgICBzdHJ1Y3QgY2hvaWNlOSB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzldOyB9OwotICAgIHN0cnVjdCBjaG9pY2U4IDogY2hvaWNlOSB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzhdOyB9OwotICAgIHN0cnVjdCBjaG9pY2U3IDogY2hvaWNlOCB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzddOyB9OwotICAgIHN0cnVjdCBjaG9pY2U2IDogY2hvaWNlNyB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzZdOyB9OwotICAgIHN0cnVjdCBjaG9pY2U1IDogY2hvaWNlNiB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzVdOyB9OwotICAgIHN0cnVjdCBjaG9pY2U0IDogY2hvaWNlNSB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzRdOyB9OwotICAgIHN0cnVjdCBjaG9pY2UzIDogY2hvaWNlNCB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzNdOyB9OwotICAgIHN0cnVjdCBjaG9pY2UyIDogY2hvaWNlMyB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzJdOyB9OwotICAgIHN0cnVjdCBjaG9pY2UxIDogY2hvaWNlMiB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzFdOyB9OwotICAgIGNob2ljZTEgY2hvb3NlKCk7Ci0KLSAgICB0eXBlZGVmIGNob2ljZTE6OnR5cGUgeWVzX3R5cGU7Ci0gICAgdHlwZWRlZiBjaG9pY2UyOjp0eXBlIG5vX3R5cGU7Ci0KLSAgICBzdHJ1Y3QgcHJpdmF0ZV90eXBlCi0gICAgewotICAgICAgIHByaXZhdGVfdHlwZSBjb25zdCAmb3BlcmF0b3IsKGludCkgY29uc3Q7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIG5vX3R5cGUgaXNfcHJpdmF0ZV90eXBlKFQgY29uc3QmKTsKLSAgICB5ZXNfdHlwZSBpc19wcml2YXRlX3R5cGUocHJpdmF0ZV90eXBlIGNvbnN0Jik7Ci0KLSAgICBzdHJ1Y3QgY29udmVydF9mcm9tX2FueXRoaW5nIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGNvbnZlcnRfZnJvbV9hbnl0aGluZyhUIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBlbXBsYWNlX2FyZ3MKLSAgICAvLwotICAgIC8vIEVpdGhlciBmb3J3YXJkaW5nIHZhcmlhZGljIGFyZ3VtZW50cywgb3Igc3RvcmluZyB0aGUgYXJndW1lbnRzIGluCi0gICAgLy8gZW1wbGFjZV9hcmdzIyNuCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEUgdHlwZW5hbWUuLi4gQXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEIG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzEoYTApIGEwCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MyKGEwLCBhMSkgYTAsIGExCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MzKGEwLCBhMSwgYTIpIGEwLCBhMSwgYTIKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURSB0eXBlbmFtZSBBcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MgQXJncyBjb25zdCYgYXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEIGFyZ3MKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNKHosIG4sIGEpIFwKLSAgICBORE5CT09TVF9GV0RfUkVGKE5ETkJPT1NUX1BQX0NBVChBLCBuKSkgTkROQk9PU1RfUFBfQ0FUKGEsIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCh6LCBpLCBhKSBcCi0gICAgbmRuYm9vc3Q6OmZvcndhcmQ8TkROQk9PU1RfUFBfQ0FUKEEsaSk+KE5ETkJPT1NUX1BQX0NBVChhLGkpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHUyh6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncywgbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19NRU1CRVIsIF8pICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncywgbikgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWih6LCBuLCBBcmcsIGIpICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICApIDogTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX0lOSVQsIF8pICAgICAgICAgICAgIFwKLSAgICAgICAge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSk+ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlubGluZSBORE5CT09TVF9QUF9DQVQoZW1wbGFjZV9hcmdzLCBuKSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBBKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgPiBjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBiKSAgICAgICAgICAgICAgICAgIFwKLSAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoZW1wbGFjZV9hcmdzLCBuKSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgID4gZShORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzEgY3JlYXRlX2VtcGxhY2VfYXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMiBjcmVhdGVfZW1wbGFjZV9hcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MzIGNyZWF0ZV9lbXBsYWNlX2FyZ3MKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX01FTUJFUih6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9GV0RfUkVGKE5ETkJPT1NUX1BQX0NBVChBLCBuKSkgTkROQk9PU1RfUFBfQ0FUKEFyZywgbik7ICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBcmcsIG4pIE5ETkJPT1NUX1BQX0NBVChhLCBuKTsKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfSU5JVCh6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYSwgbikoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPE5ETkJPT1NUX1BQX0NBVChBLG4pPihORE5CT09TVF9QUF9DQVQoYiwgbikpKQotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19NRU1CRVIoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9sdmFsdWVfcmVmZXJlbmNlPE5ETkJPT1NUX1BQX0NBVChBLCBuKT46OnR5cGUgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKEFyZywgbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKEFyZywgbikgTkROQk9PU1RfUFBfQ0FUKGEsIG4pOwotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19JTklUKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChhLCBuKShORE5CT09TVF9QUF9DQVQoYiwgbikpCi0KLSNlbmRpZgotCi1ORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTygxLCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9MSU1JVCwgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTLAotICAgIF8pCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfREVGSU5FX0VNUExBQ0VfQVJHUwotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19NRU1CRVIKLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfSU5JVAotCi0jZW5kaWYKLQotfX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gUGljayB3aGljaCB2ZXJzaW9uIG9mIGFsbG9jYXRvcl90cmFpdHMgdG8gdXNlCi0vLwotLy8gMCA9IE93biBwYXJ0aWFsIGltcGxlbWVudGF0aW9uCi0vLyAxID0gc3RkOjphbGxvY2F0b3JfdHJhaXRzCi0vLyAyID0gbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YWxsb2NhdG9yX3RyYWl0cwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTKQotIyAgIGlmIGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pICYmIFwKLSAgICAgICAgICAgIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNykpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgMAotIyAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTQwMAotICAgICAgICAgICAgLy8gVXNlIGNvbnRhaW5lcidzIGFsbG9jYXRvcl90cmFpdHMgZm9yIG9sZGVyIHZlcnNpb25zIG9mIFZpc3VhbAotICAgICAgICAgICAgLy8gQysrIGFzIEkgZG9uJ3QgdGVzdCB3aXRoIHRoZW0uCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTIDIKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyAwCi0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBTb21lIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIGFsbG9jYXRvcl90cmFpdHMsIGJ1dCB1c2VmdWwgZWxzZXdoZXJlIHNvCi0vLyB0aGV5J3JlIGFsd2F5cyBkZWZpbmVkLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTKQotIyAgaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIEludGVncmFsX2NvbnN0cmFudCwgdHJ1ZV90eXBlLCBmYWxzZV90eXBlCi0gICAgLy8KLSAgICAvLyBVc2VzIHRoZSBzdGFuZGFyZCB2ZXJzaW9ucyBpZiBhdmFpbGFibGUuCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMpCi0KLSAgICB1c2luZyBzdGQ6OmludGVncmFsX2NvbnN0YW50OwotICAgIHVzaW5nIHN0ZDo6dHJ1ZV90eXBlOwotICAgIHVzaW5nIHN0ZDo6ZmFsc2VfdHlwZTsKLQotI2Vsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBUIFZhbHVlPgotICAgIHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudCB7IGVudW0geyB2YWx1ZSA9IFZhbHVlIH07IH07Ci0KLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gdHJ1ZV90eXBlOwotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBmYWxzZT4gZmFsc2VfdHlwZTsKLQotI2VuZGlmCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gRXhwbGljaXRseSBjYWxsIGEgZGVzdHJ1Y3RvcgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKSAvLyB1bnJlZmVyZW5jZWQgZm9ybWFsIHBhcmFtZXRlcgotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgdm9pZCBkZXN0cm95KFQqIHgpIHsKLSAgICAgICAgeC0+flQoKTsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gRXhwcmVzc2lvbiB0ZXN0IG1lY2hhbmlzbQotICAgIC8vCi0gICAgLy8gV2hlbiBTRklOQUUgZXhwcmVzc2lvbnMgYXJlIGF2YWlsYWJsZSwgZGVmaW5lCi0gICAgLy8gTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTiB3aGljaCBjYW4gY2hlY2sgaWYgYSBmdW5jdGlvbiBjYWxsIGlzCi0gICAgLy8gc3VwcG9ydGVkIGJ5IGEgY2xhc3MsIG90aGVyd2lzZSBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIgd2hpY2gKLSAgICAvLyBjYW4gZGV0ZWN0IGlmIGEgY2xhc3MgaGFzIHRoZSBzcGVjaWZpZWQgbWVtYmVyLCBidXQgbm90IHRoYXQgaXQgaGFzIHRoZQotICAgIC8vIGNvcnJlY3QgdHlwZSwgdGhpcyBpcyBnb29kIGVub3VnaCBmb3IgYSBwYXNzYWJsZSBpbXByZXNzaW9uIG9mCi0gICAgLy8gYWxsb2NhdG9yX3RyYWl0cy4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSKQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2lnbmVkIGludD4gc3RydWN0IGV4cHJfdGVzdDsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGV4cHJfdGVzdDxULCBzaXplb2YoY2hhcik+IDogVCB7fTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RhdGljIGNoYXIgZm9yX2V4cHJfdGVzdChVIGNvbnN0Jik7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NIRUNLX0VYUFJFU1NJT04oY291bnQsIHJlc3VsdCwgZXhwcmVzc2lvbikgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpleHByX3Rlc3Q8ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIHJlc3VsdCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpmb3JfZXhwcl90ZXN0KCggICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIChleHByZXNzaW9uKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDApKSk+Ojp0eXBlIHRlc3QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoY2hvaWNlLCBjb3VudCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfRVhQUkVTU0lPTihjb3VudCwgcmVzdWx0KSAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgcmVzdWx0KTo6dHlwZSB0ZXN0KCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIGNvdW50KSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKG5hbWUsIHRoaW5nLCBhcmdzLCBfKSAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGhhc18sIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ0hFQ0tfRVhQUkVTU0lPTigxLCAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTwgdGhpbmcgPigpLm5hbWUgYXJncyk7ICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX0VYUFJFU1NJT04oMiwgMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKHRlc3Q8VD4oY2hvb3NlKCkpKSA9PSBzaXplb2YoY2hvaWNlMTo6dHlwZSkgfTtcCi0gICAgfQotCi0jZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpZGVudGl0eSB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DSEVDS19NRU1CRVIoY291bnQsIHJlc3VsdCwgbmFtZSwgbWVtYmVyKSAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aWRlbnRpdHk8bWVtYmVyPjo6dHlwZSAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChjaGVjaywgY291bnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfUFBfQ0FUKGNoZWNrLCBjb3VudCkgZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh0ZXN0LCBjb3VudCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIHJlc3VsdCkgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdGF0aWMgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHRlc3QsIGNvdW50KTwmVTo6bmFtZT46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlc3QoTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgY291bnQpKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX01FTUJFUihjb3VudCwgcmVzdWx0KSAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdGF0aWMgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgcmVzdWx0KTo6dHlwZSAgICAgICAgICAgIFwKLSAgICAgICAgdGVzdChORE5CT09TVF9QUF9DQVQoY2hvaWNlLCBjb3VudCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChoYXNfLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGltcGwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdHJ1Y3QgYmFzZV9taXhpbiB7IGludCBuYW1lOyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RydWN0IGJhc2UgOiBwdWJsaWMgVCwgcHVibGljIGJhc2VfbWl4aW4ge307ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ0hFQ0tfTUVNQkVSKDEsIDEsIG5hbWUsIGludCBiYXNlX21peGluOjoqKTsgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfTUVNQkVSKDIsIDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YoY2hvaWNlMjo6dHlwZSkgPT0gICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHNpemVvZih0ZXN0PGJhc2U+KGNob29zZSgpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7IHZhbHVlID0gaW1wbDo6dmFsdWUgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jZW5kaWYKLQotfX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gQWxsb2NhdG9yIHRyYWl0cwotLy8KLS8vIEZpcnN0IG91ciBpbXBsZW1lbnRhdGlvbiwgdGhlbiBsYXRlciBsaWdodCB3cmFwcGVycyBhcm91bmQgdGhlIGFsdGVybmF0aXZlcwotCi0jaWYgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTID09IDAKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3BvaW50ZXJfdG9fb3RoZXIuaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIpCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGVuZGlmCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmIFwKLSAgICAgICAgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUIDEKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUIDAKLSMgICBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLyBUT0RPOiBEb2VzIHRoaXMgbWF0Y2ggc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6cmViaW5kX2FsbG9jPFQ+PwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmViaW5kX3dyYXAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2M6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSByZWJpbmQ8VD46Om90aGVyIHR5cGU7Ci0gICAgfTsKLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8PSAxNDAwCi0KLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQodG5hbWUpICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRwLCB0eXBlbmFtZSBEZWZhdWx0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBkZWZhdWx0X3R5cGVfICMjIHRuYW1lIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY2hvaWNlMTo6dHlwZSB0ZXN0KGNob2ljZTEsIHR5cGVuYW1lIFg6OnRuYW1lKiA9IDApOyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY2hvaWNlMjo6dHlwZSB0ZXN0KGNob2ljZTIsIHZvaWQqID0gMCk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0cnVjdCBEZWZhdWx0V3JhcCB7IHR5cGVkZWYgRGVmYXVsdCB0bmFtZTsgfTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7IHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8VHA+KGNob29zZSgpKSkpIH07ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8dmFsdWU+OjogICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuPFRwLCBEZWZhdWx0V3JhcD4gICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA6OnR5cGU6OnRuYW1lIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotIyAgIGVsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUMj4KLSAgICBzdHJ1Y3Qgc2ZpbmFlIDogVDIge307Ci0KLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQodG5hbWUpICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRwLCB0eXBlbmFtZSBEZWZhdWx0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBkZWZhdWx0X3R5cGVfICMjIHRuYW1lIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZmluYWU8ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBYOjp0bmFtZSwgY2hvaWNlMT46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZXN0KGNob2ljZTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjaG9pY2UyOjp0eXBlIHRlc3QoY2hvaWNlMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IERlZmF1bHRXcmFwIHsgdHlwZWRlZiBEZWZhdWx0IHRuYW1lOyB9OyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIHsgdmFsdWUgPSAoMSA9PSBzaXplb2YodGVzdDxUcD4oY2hvb3NlKCkpKSkgfTsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWZfdHJ1ZTx2YWx1ZT46OiAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW48VHAsIERlZmF1bHRXcmFwPiAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDo6dHlwZTo6dG5hbWUgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKFQsdG5hbWUsIGFyZykgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVuYW1lIGRlZmF1bHRfdHlwZV8gIyMgdG5hbWU8VCwgYXJnPjo6dHlwZQotCi0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChwb2ludGVyKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKGNvbnN0X3BvaW50ZXIpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQodm9pZF9wb2ludGVyKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKGNvbnN0X3ZvaWRfcG9pbnRlcik7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChkaWZmZXJlbmNlX3R5cGUpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQoc2l6ZV90eXBlKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50KTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50KTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCk7Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUVfRVhQUikKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgICAgIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24sIFUgY29uc3QsICgpLCAwCi0gICAgKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgICAgIG1heF9zaXplLCBVIGNvbnN0LCAoKSwgMAotICAgICk7Ci0KLSMgICAgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKAotICAgIGNvbnN0cnVjdCwgVSwgKAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VmFsdWVUeXBlKj4oKSwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPEFyZ3MgY29uc3Q+KCkuLi4pLCAyCi0gICAgKTsKLQotIyAgICAgICBlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgY29uc3RydWN0LCBVLCAoCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxWYWx1ZVR5cGUqPigpLAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VmFsdWVUeXBlIGNvbnN0PigpKSwgMgotICAgICk7Ci0KLSMgICAgICAgZW5kaWYKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTigKLSAgICAgICAgZGVzdHJveSwgVSwgKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxWYWx1ZVR5cGUqPigpKSwgMQotICAgICk7Ci0KLSMgICBlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX01FTUJFUihzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfTUVNQkVSKG1heF9zaXplKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIoY29uc3RydWN0KTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIoZGVzdHJveSk7Ci0KLSMgICBlbmRpZgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIGlubGluZSBBbGxvYyBjYWxsX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oY29uc3QgQWxsb2MmIHJocywKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgIGhhc19zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uPEFsbG9jPjo6dmFsdWUsIHZvaWQqCi0gICAgICAgID46OnR5cGUgPSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJocy5zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIGlubGluZSBBbGxvYyBjYWxsX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oY29uc3QgQWxsb2MmIHJocywKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICBoYXNfc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbjxBbGxvYz46OnZhbHVlLCB2b2lkKgotICAgICAgICA+Ojp0eXBlID0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByaHM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNpemVUeXBlLCB0eXBlbmFtZSBBbGxvYz4KLSAgICBpbmxpbmUgU2l6ZVR5cGUgY2FsbF9tYXhfc2l6ZShjb25zdCBBbGxvYyYgYSwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfbWF4X3NpemU8QWxsb2M+Ojp2YWx1ZSwgdm9pZCoKLSAgICAgICAgPjo6dHlwZSA9IDApCi0gICAgewotICAgICAgICByZXR1cm4gYS5tYXhfc2l6ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTaXplVHlwZSwgdHlwZW5hbWUgQWxsb2M+Ci0gICAgaW5saW5lIFNpemVUeXBlIGNhbGxfbWF4X3NpemUoY29uc3QgQWxsb2MmLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfbWF4X3NpemU8QWxsb2M+Ojp2YWx1ZSwgdm9pZCoKLSAgICAgICAgPjo6dHlwZSA9IDApCi0gICAgewotICAgICAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8U2l6ZVR5cGU+OjptYXgpKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIHN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzCi0gICAgewotICAgICAgICB0eXBlZGVmIEFsbG9jIGFsbG9jYXRvcl90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBwb2ludGVyLCB2YWx1ZV90eXBlKikKLSAgICAgICAgICAgIHBvaW50ZXI7Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBwb2ludGVyX3RvX290aGVyIDogbmRuYm9vc3Q6OnBvaW50ZXJfdG9fb3RoZXI8cG9pbnRlciwgVD4ge307Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBjb25zdF9wb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgcG9pbnRlcl90b19vdGhlcjxjb25zdCB2YWx1ZV90eXBlPjo6dHlwZSkKLSAgICAgICAgICAgIGNvbnN0X3BvaW50ZXI7Ci0KLSAgICAgICAgLy90eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoQWxsb2MsIHZvaWRfcG9pbnRlciwKLSAgICAgICAgLy8gICAgdHlwZW5hbWUgcG9pbnRlcl90b19vdGhlcjx2b2lkPjo6dHlwZSkKLSAgICAgICAgLy8gICAgdm9pZF9wb2ludGVyOwotICAgICAgICAvLwotICAgICAgICAvL3R5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgY29uc3Rfdm9pZF9wb2ludGVyLAotICAgICAgICAvLyAgICB0eXBlbmFtZSBwb2ludGVyX3RvX290aGVyPGNvbnN0IHZvaWQ+Ojp0eXBlKQotICAgICAgICAvLyAgICBjb25zdF92b2lkX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCkgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgc2l6ZV90eXBlLCBzdGQ6OnNpemVfdCkKLSAgICAgICAgICAgIHNpemVfdHlwZTsKLQotICAgICAgICAvLyBUT0RPOiByZWJpbmRfYWxsb2MgYW5kIHJlYmluZF90cmFpdHMKLQotICAgICAgICBzdGF0aWMgcG9pbnRlciBhbGxvY2F0ZShBbGxvYyYgYSwgc2l6ZV90eXBlIG4pCi0gICAgICAgICAgICB7IHJldHVybiBhLmFsbG9jYXRlKG4pOyB9Ci0KLSAgICAgICAgLy8gSSBuZXZlciB1c2UgdGhpcywgc28gSSdsbCBqdXN0IGNvbW1lbnQgaXQgb3V0IGZvciBub3cuCi0gICAgICAgIC8vCi0gICAgICAgIC8vc3RhdGljIHBvaW50ZXIgYWxsb2NhdGUoQWxsb2MmIGEsIHNpemVfdHlwZSBuLAotICAgICAgICAvLyAgICAgICAgY29uc3Rfdm9pZF9wb2ludGVyIGhpbnQpCi0gICAgICAgIC8vICAgIHsgcmV0dXJuIERFRkFVTFRfRlVOQyhhbGxvY2F0ZSwgcG9pbnRlcikoYSwgbiwgaGludCk7IH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKEFsbG9jJiBhLCBwb2ludGVyIHAsIHNpemVfdHlwZSBuKQotICAgICAgICAgICAgeyBhLmRlYWxsb2NhdGUocCwgbik7IH0KLQotICAgIHB1YmxpYzoKLQotIyAgIGlmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQsIEFyZ3MuLi4+Ci0gICAgICAgICAgICAgICAgOjp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGNvbnN0cnVjdChBbGxvYyYgYSwgVCogcCwgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdChwLCBuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPih4KS4uLik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfY29uc3RydWN0PEFsbG9jLCBULCBBcmdzLi4uPgotICAgICAgICAgICAgICAgIDo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBjb25zdHJ1Y3QoQWxsb2MmLCBUKiBwLCBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoKHZvaWQqKSBwKSBUKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KHgpLi4uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGRlc3Ryb3koQWxsb2MmIGEsIFQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19kZXN0cm95PEFsbG9jLCBUPjo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBkZXN0cm95KEFsbG9jJiwgVCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95KHApOwotICAgICAgICB9Ci0KLSMgICBlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSKQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgY29uc3RydWN0KEFsbG9jJiBhLCBUKiBwLCBUIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdChwLCB4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGNvbnN0cnVjdChBbGxvYyYsIFQqIHAsIFQgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoKHZvaWQqKSBwKSBUKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgZGVzdHJveShBbGxvYyYgYSwgVCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgYS5kZXN0cm95KHApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGRlc3Ryb3koQWxsb2MmLCBUKiBwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3kocCk7Ci0gICAgICAgIH0KLQotIyAgIGVsc2UKLQotICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIFNGSU5BRSBleHByZXNzaW9ucywgb25seSBjYWxsIGNvbnN0cnVjdCBmb3IgdGhlCi0gICAgICAgIC8vIGNvcHkgY29uc3RydWN0b3IgZm9yIHRoZSBhbGxvY2F0b3IncyB2YWx1ZV90eXBlIC0gYXMgdGhhdCdzCi0gICAgICAgIC8vIHRoZSBvbmx5IGNvbnN0cnVjdCBtZXRob2QgdGhhdCBvbGQgZmFzaGlvbmVkIGFsbG9jYXRvcnMgc3VwcG9ydC4KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jJiBhLCBUKiBwLCBUIGNvbnN0JiB4LAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxULCB2YWx1ZV90eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuY29uc3RydWN0KHAsIHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvYyYsIFQqIHAsIFQgY29uc3QmIHgsCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VCwgdmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoKHZvaWQqKSBwKSBUKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2MmIGEsIFQqIHAsCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VCwgdmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEFsbG9jJiwgVCogcCwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VCwgdmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0jICAgZW5kaWYKLQotICAgICAgICBzdGF0aWMgc2l6ZV90eXBlIG1heF9zaXplKGNvbnN0IEFsbG9jJiBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjYWxsX21heF9zaXplPHNpemVfdHlwZT4oYSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbGxvY2F0b3IgcHJvcGFnYXRpb24gb24gY29uc3RydWN0aW9uCi0KLSAgICAgICAgc3RhdGljIEFsbG9jIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oQWxsb2MgY29uc3QmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICAgICAgY2FsbF9zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKHJocyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbGxvY2F0b3IgcHJvcGFnYXRpb24gb24gYXNzaWdubWVudCBhbmQgc3dhcC4KLSAgICAgICAgLy8gUmV0dXJuIHRydWUgaWYgbGhzIGlzIG1vZGlmaWVkLgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoCi0gICAgICAgICAgICBBbGxvYywgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQsIGZhbHNlX3R5cGUpCi0gICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudDsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKAotICAgICAgICAgICAgQWxsb2MscHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQsIGZhbHNlX3R5cGUpCi0gICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudDsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKAotICAgICAgICAgICAgQWxsb2MscHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwLGZhbHNlX3R5cGUpCi0gICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA7Ci0gICAgfTsKLX19fQotCi0jICAgdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVAotIyAgIHVuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBzdGQ6OmFsbG9jYXRvcl90cmFpdHMKLQotI2VsaWYgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTID09IDEKLQotIyAgIGluY2x1ZGUgPG1lbW9yeT4KLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUIDEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIHN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzIDogc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPiB7fTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmViaW5kX3dyYXAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6Ci0gICAgICAgICAgICB0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8VD4gdHlwZTsKLSAgICB9OwotfX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YWxsb2NhdG9yX3RyYWl0cwotCi0jZWxpZiBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgPT0gMgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvY29udGFpbmVyL2FsbG9jYXRvcl90cmFpdHMuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QgMAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgc3RydWN0IGFsbG9jYXRvcl90cmFpdHMgOgotICAgICAgICBuZG5ib29zdDo6Y29udGFpbmVyOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPiB7fTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmViaW5kX3dyYXAgOgotICAgICAgICBuZG5ib29zdDo6Y29udGFpbmVyOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6Ci0gICAgICAgICAgICB0ZW1wbGF0ZSBwb3J0YWJsZV9yZWJpbmRfYWxsb2M8VD4KLSAgICB7fTsKLQotfX19Ci0KLSNlbHNlCi0KLSNlcnJvciAiSW52YWxpZCBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgdmFsdWUuIgotCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gY2FsbF9jb25zdHJ1Y3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotIyAgIGlmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdm9pZCBjYWxsX2NvbnN0cnVjdChBbGxvYyYgYWxsb2MsIFQqIGFkZHJlc3MsCi0gICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OmNvbnN0cnVjdChhbGxvYywKLSAgICAgICAgICAgIGFkZHJlc3MsIG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgZGVzdHJveV92YWx1ZV9pbXBsKEFsbG9jJiBhbGxvYywgVCogeCkgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpkZXN0cm95KGFsbG9jLCB4KTsKLSAgICB9Ci0KLQotIyAgIGVsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdm9pZCBjYWxsX2NvbnN0cnVjdChBbGxvYyYsIFQqIGFkZHJlc3MsCi0gICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIG5ldygodm9pZCopIGFkZHJlc3MpIFQobmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdm9pZCBkZXN0cm95X3ZhbHVlX2ltcGwoQWxsb2MmLCBUKiB4KSB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveSh4KTsKLSAgICB9Ci0KLQotIyAgIGVuZGlmCi0KLSNlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgZGVzdHJveV92YWx1ZV9pbXBsKEFsbG9jJiwgVCogeCkgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3koeCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBDb25zdHJ1Y3QgZnJvbSB0dXBsZQotICAgIC8vCi0gICAgLy8gVXNlZCBmb3IgcGllY2V3aXNlIGNvbnN0cnVjdGlvbi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUobiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYgYWxsb2MsIFQqIHB0ciwgbmFtZXNwYWNlXyB0dXBsZTw+KSAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjYWxsX2NvbnN0cnVjdChhbGxvYywgcHRyKTsgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTygxLCBuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMLCBuYW1lc3BhY2VfKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMKHosIG4sIG5hbWVzcGFjZV8pICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKT4gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYgYWxsb2MsIFQqIHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIEEpPiBjb25zdCYgeCkgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y2FsbF9jb25zdHJ1Y3QoYWxsb2MsIHB0ciwgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcsIG5hbWVzcGFjZV8pIFwKLSAgICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHKHosIG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZV8gZ2V0PG4+KHgpCi0KLSNlbGlmICFkZWZpbmVkKF9fU1VOUFJPX0NDKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRShuLCBuYW1lc3BhY2VfKSAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlKEFsbG9jJiwgVCogcHRyLCBuYW1lc3BhY2VfIHR1cGxlPD4pICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcgKCh2b2lkKikgcHRyKSBUKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIG4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwsIG5hbWVzcGFjZV8pCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwoeiwgbiwgbmFtZXNwYWNlXykgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlKEFsbG9jJiwgVCogcHRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSk+IGNvbnN0JiB4KSAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmV3ICgodm9pZCopIHB0cikgVCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRywgbmFtZXNwYWNlXykgXAotICAgICAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcoeiwgbiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgICAgICBcCi0gICAgbmFtZXNwYWNlXyBnZXQ8bj4oeCkKLQotI2Vsc2UKLQotICAgIHRlbXBsYXRlIDxpbnQgTj4gc3RydWN0IGxlbmd0aCB7fTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUobiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZV9pbXBsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpsZW5ndGg8MD4sIEFsbG9jJiwgVCogcHRyLCAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8PikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcgKCh2b2lkKikgcHRyKSBUKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIG4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwsIG5hbWVzcGFjZV8pCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwoeiwgbiwgbmFtZXNwYWNlXykgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlX2ltcGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omxlbmd0aDxuPiwgQWxsb2MmLCBUKiBwdHIsICAgICAgICAgICAgXAotICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIEEpPiBjb25zdCYgeCkgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5ldyAoKHZvaWQqKSBwdHIpIFQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcsIG5hbWVzcGFjZV8pIFwKLSAgICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHKHosIG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZV8gZ2V0PG4+KHgpCi0KLSNlbmRpZgotCi1ORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUoMTAsIG5kbmJvb3N0OjopCi0KLSNpZiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKQotICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFKDEwLCBzdGQ6OikKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwKLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRwotCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYgYWxsb2MsIFQqIHB0ciwgVHVwbGUgY29uc3QmIHgpCi0gICAgewotICAgICAgICBjb25zdHJ1Y3RfZnJvbV90dXBsZV9pbXBsKAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpsZW5ndGg8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR1cGxlczo6bGVuZ3RoPFR1cGxlPjo6dmFsdWU+KCksCi0gICAgICAgICAgICBhbGxvYywgcHRyLCB4KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIFRyYWl0IHRvIGNoZWNrIGZvciBwaWVjZXdpc2UgY29uc3RydWN0aW9uLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgIHN0cnVjdCB1c2VfcGllY2V3aXNlIHsKLSAgICAgICAgc3RhdGljIGNob2ljZTE6OnR5cGUgdGVzdChjaG9pY2UxLAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90KTsKLQotICAgICAgICBzdGF0aWMgY2hvaWNlMjo6dHlwZSB0ZXN0KGNob2ljZTIsIC4uLik7Ci0KLSAgICAgICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKGNob2ljZTE6OnR5cGUpID09Ci0gICAgICAgICAgICBzaXplb2YodGVzdChjaG9vc2UoKSwgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPEEwPigpKSkgfTsKLSAgICB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIENvbnN0cnVjdCBmcm9tIHZhcmlhZGljIHBhcmFtZXRlcnMKLQotICAgIC8vIEZvciB0aGUgc3RhbmRhcmQgcGFpciBjb25zdHJ1Y3Rvci4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYgYWxsb2MsIFQqIGFkZHJlc3MsCi0gICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y2FsbF9jb25zdHJ1Y3QoYWxsb2MsCi0gICAgICAgICAgICBhZGRyZXNzLCBuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgfQotCi0gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBwaWVjZV9jb25zdHJ1Y3QKLSAgICAvLwotICAgIC8vIFRPRE86IFdoZW4gcG9zc2libGUsIGl0IG1pZ2h0IGJlIGJldHRlciB0byB1c2Ugc3RkOjpwYWlyJ3MKLSAgICAvLyBjb25zdHJ1Y3RvciBmb3Igc3RkOjpwaWVjZV9jb25zdHJ1Y3Qgd2l0aCBzdGQ6OnR1cGxlLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBLCB0eXBlbmFtZSBCLAotICAgICAgICB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgIGlubGluZSB0eXBlbmFtZSBlbmFibGVfaWY8dXNlX3BpZWNld2lzZTxBMD4sIHZvaWQ+Ojp0eXBlCi0gICAgICAgIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiBhbGxvYywgc3RkOjpwYWlyPEEsIEI+KiBhZGRyZXNzLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCksIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExLCBORE5CT09TVF9GV0RfUkVGKEEyKSBhMikKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X2Zyb21fdHVwbGUoYWxsb2MsCi0gICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKGFkZHJlc3MtPmZpcnN0KSwgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSk7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X2Zyb21fdHVwbGUoYWxsb2MsCi0gICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKGFkZHJlc3MtPnNlY29uZCksIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhMikpOwotICAgIH0KLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBDb25zdHJ1Y3QgZnJvbSBlbXBsYWNlX2FyZ3MKLQotICAgIC8vIEV4cGxpY2l0bHkgd3JpdGUgb3V0IGZpcnN0IHRocmVlIG92ZXJsb2FkcyBmb3IgdGhlIHNha2Ugb2Ygc2FuZQotICAgIC8vIGVycm9yIG1lc3NhZ2VzLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBMD4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYsIFQqIGFkZHJlc3MsCi0gICAgICAgICAgICBlbXBsYWNlX2FyZ3MxPEEwPiBjb25zdCYgYXJncykKLSAgICB7Ci0gICAgICAgIG5ldygodm9pZCopIGFkZHJlc3MpIFQobmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGFyZ3MuYTApKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMT4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYsIFQqIGFkZHJlc3MsCi0gICAgICAgICAgICBlbXBsYWNlX2FyZ3MyPEEwLCBBMT4gY29uc3QmIGFyZ3MpCi0gICAgewotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGFyZ3MuYTApLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGFyZ3MuYTEpCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiwgVCogYWRkcmVzcywKLSAgICAgICAgICAgIGVtcGxhY2VfYXJnczM8QTAsIEExLCBBMj4gY29uc3QmIGFyZ3MpCi0gICAgewotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGFyZ3MuYTApLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGFyZ3MuYTEpLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGFyZ3MuYTIpCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgLy8gVXNlIGEgbWFjcm8gZm9yIHRoZSByZXN0LgotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfSU1QTCh6LCBudW1fcGFyYW1zLCBfKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbnVtX3BhcmFtcywgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYsIFQqIGFkZHJlc3MsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6TkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncyxudW1fcGFyYW1zKSA8ICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBudW1fcGFyYW1zLCBBKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgPiBjb25zdCYgYXJncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG51bV9wYXJhbXMsIE5ETkJPT1NUX1VOT1JERVJFRF9DQUxMX0ZPUldBUkQsICAgICBcCi0gICAgICAgICAgICAgICAgYXJncy5hKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDQsIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0xJTUlULAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0lNUEwsIF8pCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0lNUEwKLQotICAgIC8vIENvbnN0cnVjdCB3aXRoIHBpZWNlX2NvbnN0cnVjdAotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBLCB0eXBlbmFtZSBCLAotICAgICAgICB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiBhbGxvYywgc3RkOjpwYWlyPEEsIEI+KiBhZGRyZXNzLAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXBsYWNlX2FyZ3MzPEEwLCBBMSwgQTI+IGNvbnN0JiBhcmdzLAotICAgICAgICAgICAgdHlwZW5hbWUgZW5hYmxlX2lmPHVzZV9waWVjZXdpc2U8QTA+LCB2b2lkKj46OnR5cGUgPSAwKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfZnJvbV90dXBsZShhbGxvYywKLSAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoYWRkcmVzcy0+Zmlyc3QpLCBhcmdzLmExKTsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfZnJvbV90dXBsZShhbGxvYywKLSAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoYWRkcmVzcy0+c2Vjb25kKSwgYXJncy5hMik7Ci0gICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0KLX19fQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgYWxsb2NhdGluZyAmIGNvbnN0cnVjdGluZwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBhcnJheV9jb25zdHJ1Y3RvcgotICAgIC8vCi0gICAgLy8gQWxsb2NhdGUgYW5kIGNvbnN0cnVjdCBhbiBhcnJheSBpbiBhbiBleGNlcHRpb24gc2FmZSBtYW5uZXIsIGFuZAotICAgIC8vIGNsZWFuIHVwIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYmVmb3JlIHRoZSBjb250YWluZXIgdGFrZXMgY2hhcmdlCi0gICAgLy8gb2YgaXQuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yPgotICAgIHN0cnVjdCBhcnJheV9jb25zdHJ1Y3RvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPiB0cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpwb2ludGVyIHBvaW50ZXI7Ci0KLSAgICAgICAgQWxsb2NhdG9yJiBhbGxvY187Ci0gICAgICAgIHBvaW50ZXIgcHRyXzsKLSAgICAgICAgcG9pbnRlciBjb25zdHJ1Y3RlZF87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGxlbmd0aF87Ci0KLSAgICAgICAgYXJyYXlfY29uc3RydWN0b3IoQWxsb2NhdG9yJiBhKQotICAgICAgICAgICAgOiBhbGxvY18oYSksIHB0cl8oKSwgY29uc3RydWN0ZWRfKCksIGxlbmd0aF8oMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0ZWRfID0gcG9pbnRlcigpOwotICAgICAgICAgICAgcHRyXyA9IHBvaW50ZXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5hcnJheV9jb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgICAgIGlmIChwdHJfKSB7Ci0gICAgICAgICAgICAgICAgZm9yKHBvaW50ZXIgcCA9IHB0cl87IHAgIT0gY29uc3RydWN0ZWRfOyArK3ApCi0gICAgICAgICAgICAgICAgICAgIHRyYWl0czo6ZGVzdHJveShhbGxvY18sIG5kbmJvb3N0OjphZGRyZXNzb2YoKnApKTsKLQotICAgICAgICAgICAgICAgIHRyYWl0czo6ZGVhbGxvY2F0ZShhbGxvY18sIHB0cl8sIGxlbmd0aF8pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci0gICAgICAgIHZvaWQgY29uc3RydWN0KFYgY29uc3QmIHYsIHN0ZDo6c2l6ZV90IGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCghcHRyXyk7Ci0gICAgICAgICAgICBsZW5ndGhfID0gbDsKLSAgICAgICAgICAgIHB0cl8gPSB0cmFpdHM6OmFsbG9jYXRlKGFsbG9jXywgbGVuZ3RoXyk7Ci0gICAgICAgICAgICBwb2ludGVyIGVuZCA9IHB0cl8gKyBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4obGVuZ3RoXyk7Ci0gICAgICAgICAgICBmb3IoY29uc3RydWN0ZWRfID0gcHRyXzsgY29uc3RydWN0ZWRfICE9IGVuZDsgKytjb25zdHJ1Y3RlZF8pCi0gICAgICAgICAgICAgICAgdHJhaXRzOjpjb25zdHJ1Y3QoYWxsb2NfLCBuZG5ib29zdDo6YWRkcmVzc29mKCpjb25zdHJ1Y3RlZF8pLCB2KTsKLSAgICAgICAgfQotCi0gICAgICAgIHBvaW50ZXIgZ2V0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHB0cl87Ci0gICAgICAgIH0KLQotICAgICAgICBwb2ludGVyIHJlbGVhc2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBwb2ludGVyIHAocHRyXyk7Ci0gICAgICAgICAgICBwdHJfID0gcG9pbnRlcigpOwotICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgYXJyYXlfY29uc3RydWN0b3IoYXJyYXlfY29uc3RydWN0b3IgY29uc3QmKTsKLSAgICAgICAgYXJyYXlfY29uc3RydWN0b3ImIG9wZXJhdG9yPShhcnJheV9jb25zdHJ1Y3RvciBjb25zdCYpOwotICAgIH07Ci19fX0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYnVja2V0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYnVja2V0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMmRmNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2J1Y2tldHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODc2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX01BTkFHRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfTUFOQUdFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYWxsb2NhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IHRhYmxlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlUG9pbnRlcj4gc3RydWN0IGJ1Y2tldDsKLSAgICBzdHJ1Y3QgcHRyX2J1Y2tldDsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+IHN0cnVjdCB0YWJsZV9pbXBsOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IGdyb3VwZWRfdGFibGVfaW1wbDsKLQotfX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgaXRlcmF0b3JfZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBJdGVyYXRvcnMKLSAgICAvLwotICAgIC8vIGFsbCBubyB0aHJvdwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IHN0cnVjdCBpdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgQ29uc3ROb2RlUG9pbnRlcj4gc3RydWN0IGNfaXRlcmF0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFBvbGljeT4gc3RydWN0IGxfaXRlcmF0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIENvbnN0Tm9kZVBvaW50ZXIsIHR5cGVuYW1lIFBvbGljeT4KLSAgICAgICAgc3RydWN0IGNsX2l0ZXJhdG9yOwotCi0gICAgLy8gTG9jYWwgSXRlcmF0b3JzCi0gICAgLy8KLSAgICAvLyBhbGwgbm8gdGhyb3cKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBQb2xpY3k+Ci0gICAgc3RydWN0IGxfaXRlcmF0b3IKLSAgICAgICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yPAotICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUmPgotICAgIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUyLCB0eXBlbmFtZSBDb25zdE5vZGVQb2ludGVyLCB0eXBlbmFtZSBQb2xpY3kyPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Y2xfaXRlcmF0b3I7Ci0gICAgcHJpdmF0ZToKLSNlbmRpZgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjppdGVyYXRvcjxOb2RlPiBpdGVyYXRvcjsKLSAgICAgICAgbm9kZV9wb2ludGVyIHB0cl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9jb3VudF87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgbF9pdGVyYXRvcigpIDogcHRyXygpIHt9Ci0KLSAgICAgICAgbF9pdGVyYXRvcihpdGVyYXRvciB4LCBzdGQ6OnNpemVfdCBiLCBzdGQ6OnNpemVfdCBjKQotICAgICAgICAgICAgOiBwdHJfKHgubm9kZV8pLCBidWNrZXRfKGIpLCBidWNrZXRfY291bnRfKGMpIHt9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlX3B0cigpOwotICAgICAgICB9Ci0KLSAgICAgICAgbF9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKLSAgICAgICAgICAgIHB0cl8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHB0cl8tPm5leHRfKTsKLSAgICAgICAgICAgIGlmIChwdHJfICYmIFBvbGljeTo6dG9fYnVja2V0KGJ1Y2tldF9jb3VudF8sIHB0cl8tPmhhc2hfKQotICAgICAgICAgICAgICAgICAgICAhPSBidWNrZXRfKQotICAgICAgICAgICAgICAgIHB0cl8gPSBub2RlX3BvaW50ZXIoKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGxfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKLSAgICAgICAgICAgIGxfaXRlcmF0b3IgdG1wKCp0aGlzKTsKLSAgICAgICAgICAgICsrKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0obF9pdGVyYXRvciB4KSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXyA9PSB4LnB0cl87Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0obF9pdGVyYXRvciB4KSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXyAhPSB4LnB0cl87Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIENvbnN0Tm9kZVBvaW50ZXIsIHR5cGVuYW1lIFBvbGljeT4KLSAgICBzdHJ1Y3QgY2xfaXRlcmF0b3IKLSAgICAgICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yPAotICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICAgIENvbnN0Tm9kZVBvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIGNvbnN0Jj4KLSAgICB7Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpsX2l0ZXJhdG9yCi0gICAgICAgICAgICA8Tm9kZSwgUG9saWN5PjsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPE5vZGU+IGl0ZXJhdG9yOwotICAgICAgICBub2RlX3BvaW50ZXIgcHRyXzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0XzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2NvdW50XzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICBjbF9pdGVyYXRvcigpIDogcHRyXygpIHt9Ci0KLSAgICAgICAgY2xfaXRlcmF0b3IoaXRlcmF0b3IgeCwgc3RkOjpzaXplX3QgYiwgc3RkOjpzaXplX3QgYykgOgotICAgICAgICAgICAgcHRyXyh4Lm5vZGVfKSwgYnVja2V0XyhiKSwgYnVja2V0X2NvdW50XyhjKSB7fQotCi0gICAgICAgIGNsX2l0ZXJhdG9yKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6bF9pdGVyYXRvcjwKLSAgICAgICAgICAgICAgICBOb2RlLCBQb2xpY3k+IGNvbnN0JiB4KSA6Ci0gICAgICAgICAgICBwdHJfKHgucHRyXyksIGJ1Y2tldF8oeC5idWNrZXRfKSwgYnVja2V0X2NvdW50Xyh4LmJ1Y2tldF9jb3VudF8pCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSBjb25zdCYgb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0KiBvcGVyYXRvci0+KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlX3B0cigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2xfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7Ci0gICAgICAgICAgICBwdHJfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwdHJfLT5uZXh0Xyk7Ci0gICAgICAgICAgICBpZiAocHRyXyAmJiBQb2xpY3k6OnRvX2J1Y2tldChidWNrZXRfY291bnRfLCBwdHJfLT5oYXNoXykKLSAgICAgICAgICAgICAgICAgICAgIT0gYnVja2V0XykKLSAgICAgICAgICAgICAgICBwdHJfID0gbm9kZV9wb2ludGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBjbF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgewotICAgICAgICAgICAgY2xfaXRlcmF0b3IgdG1wKCp0aGlzKTsKLSAgICAgICAgICAgICsrKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNsX2l0ZXJhdG9yIGNvbnN0JiB4LCBjbF9pdGVyYXRvciBjb25zdCYgeSkgewotICAgICAgICAgICAgcmV0dXJuIHgucHRyXyA9PSB5LnB0cl87Ci0gICAgICAgIH0KLQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNsX2l0ZXJhdG9yIGNvbnN0JiB4LCBjbF9pdGVyYXRvciBjb25zdCYgeSkgewotICAgICAgICAgICAgcmV0dXJuIHgucHRyXyAhPSB5LnB0cl87Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+Ci0gICAgc3RydWN0IGl0ZXJhdG9yCi0gICAgICAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcjwKLSAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlLAotICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjpub2RlX3BvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlJj4KLSAgICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpjX2l0ZXJhdG9yOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6bF9pdGVyYXRvcjsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpjbF9pdGVyYXRvcjsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlX2ltcGw7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfdGFibGVfaW1wbDsKLSAgICBwcml2YXRlOgotI2VuZGlmCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgbm9kZV9wb2ludGVyIG5vZGVfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIGl0ZXJhdG9yKCkgOiBub2RlXygpIHt9Ci0KLSAgICAgICAgZXhwbGljaXQgaXRlcmF0b3IodHlwZW5hbWUgTm9kZTo6bGlua19wb2ludGVyIHgpIDoKLSAgICAgICAgICAgIG5vZGVfKHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oeCkpIHt9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiAmbm9kZV8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKLSAgICAgICAgICAgIG5vZGVfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihub2RlXy0+bmV4dF8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yIHRtcChub2RlXyk7Ci0gICAgICAgICAgICBub2RlXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4obm9kZV8tPm5leHRfKTsKLSAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oaXRlcmF0b3IgY29uc3QmIHgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBub2RlXyA9PSB4Lm5vZGVfOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGl0ZXJhdG9yIGNvbnN0JiB4KSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZV8gIT0geC5ub2RlXzsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgQ29uc3ROb2RlUG9pbnRlcj4KLSAgICBzdHJ1Y3QgY19pdGVyYXRvcgotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3I8Ci0gICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSwKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgICAgQ29uc3ROb2RlUG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgY29uc3QmPgotICAgIHsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPE5vZGU+OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZV9pbXBsOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3RhYmxlX2ltcGw7Ci0KLSAgICBwcml2YXRlOgotI2VuZGlmCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPE5vZGU+IGl0ZXJhdG9yOwotICAgICAgICBub2RlX3BvaW50ZXIgbm9kZV87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgY19pdGVyYXRvcigpIDogbm9kZV8oKSB7fQotCi0gICAgICAgIGV4cGxpY2l0IGNfaXRlcmF0b3IodHlwZW5hbWUgTm9kZTo6bGlua19wb2ludGVyIHgpIDoKLSAgICAgICAgICAgIG5vZGVfKHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oeCkpIHt9Ci0KLSAgICAgICAgY19pdGVyYXRvcihpdGVyYXRvciBjb25zdCYgeCkgOiBub2RlXyh4Lm5vZGVfKSB7fQotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QmIG9wZXJhdG9yKigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBub2RlXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QqIG9wZXJhdG9yLT4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gJm5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgY19pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKLSAgICAgICAgICAgIG5vZGVfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihub2RlXy0+bmV4dF8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgY19pdGVyYXRvciBvcGVyYXRvcisrKGludCkgewotICAgICAgICAgICAgY19pdGVyYXRvciB0bXAobm9kZV8pOwotICAgICAgICAgICAgbm9kZV8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG5vZGVfLT5uZXh0Xyk7Ci0gICAgICAgICAgICByZXR1cm4gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjX2l0ZXJhdG9yIGNvbnN0JiB4LCBjX2l0ZXJhdG9yIGNvbnN0JiB5KSB7Ci0gICAgICAgICAgICByZXR1cm4geC5ub2RlXyA9PSB5Lm5vZGVfOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjX2l0ZXJhdG9yIGNvbnN0JiB4LCBjX2l0ZXJhdG9yIGNvbnN0JiB5KSB7Ci0gICAgICAgICAgICByZXR1cm4geC5ub2RlXyAhPSB5Lm5vZGVfOwotICAgICAgICB9Ci0gICAgfTsKLX19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBOb2RlIGNvbnN0cnVjdGlvbgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGVBbGxvYz4KLSAgICBzdHJ1Y3Qgbm9kZV9jb25zdHJ1Y3RvcgotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHR5cGVkZWYgTm9kZUFsbG9jIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxOb2RlQWxsb2M+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjp2YWx1ZV90eXBlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0KLSAgICAgICAgbm9kZV9hbGxvY2F0b3ImIGFsbG9jXzsKLSAgICAgICAgbm9kZV9wb2ludGVyIG5vZGVfOwotICAgICAgICBib29sIG5vZGVfY29uc3RydWN0ZWRfOwotICAgICAgICBib29sIHZhbHVlX2NvbnN0cnVjdGVkXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBub2RlX2NvbnN0cnVjdG9yKG5vZGVfYWxsb2NhdG9yJiBuKSA6Ci0gICAgICAgICAgICBhbGxvY18obiksCi0gICAgICAgICAgICBub2RlXygpLAotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RlZF8oZmFsc2UpLAotICAgICAgICAgICAgdmFsdWVfY29uc3RydWN0ZWRfKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB+bm9kZV9jb25zdHJ1Y3RvcigpOwotCi0gICAgICAgIHZvaWQgY29uc3RydWN0KCk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICB2b2lkIGNvbnN0cnVjdF93aXRoX3ZhbHVlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdCgpOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfdmFsdWVfaW1wbCgKLSAgICAgICAgICAgICAgICBhbGxvY18sIG5vZGVfLT52YWx1ZV9wdHIoKSwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCk7Ci0gICAgICAgICAgICB2YWx1ZV9jb25zdHJ1Y3RlZF8gPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICB2b2lkIGNvbnN0cnVjdF93aXRoX3ZhbHVlMihORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0KCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbnN0cnVjdF92YWx1ZV9pbXBsKAotICAgICAgICAgICAgICAgIGFsbG9jXywgbm9kZV8tPnZhbHVlX3B0cigpLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MxKG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCkpKTsKLSAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiB2YWx1ZSgpIGNvbnN0IHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlXyAmJiBub2RlX2NvbnN0cnVjdGVkXyAmJiB2YWx1ZV9jb25zdHJ1Y3RlZF8pOwotICAgICAgICAgICAgcmV0dXJuIG5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gbm8gdGhyb3cKLSAgICAgICAgbm9kZV9wb2ludGVyIHJlbGVhc2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobm9kZV8gJiYgbm9kZV9jb25zdHJ1Y3RlZF8pOwotICAgICAgICAgICAgbm9kZV9wb2ludGVyIHAgPSBub2RlXzsKLSAgICAgICAgICAgIG5vZGVfID0gbm9kZV9wb2ludGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgbm9kZV9jb25zdHJ1Y3Rvcihub2RlX2NvbnN0cnVjdG9yIGNvbnN0Jik7Ci0gICAgICAgIG5vZGVfY29uc3RydWN0b3ImIG9wZXJhdG9yPShub2RlX2NvbnN0cnVjdG9yIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBub2RlX2NvbnN0cnVjdG9yPEFsbG9jPjo6fm5vZGVfY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGVfKSB7Ci0gICAgICAgICAgICBpZiAodmFsdWVfY29uc3RydWN0ZWRfKSB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95X3ZhbHVlX2ltcGwoYWxsb2NfLAotICAgICAgICAgICAgICAgICAgICBub2RlXy0+dmFsdWVfcHRyKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZV9jb25zdHJ1Y3RlZF8pIHsKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3koYWxsb2NfLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCpub2RlXykpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlYWxsb2NhdGUoYWxsb2NfLCBub2RlXywgMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgdm9pZCBub2RlX2NvbnN0cnVjdG9yPEFsbG9jPjo6Y29uc3RydWN0KCkKLSAgICB7Ci0gICAgICAgIGlmKCFub2RlXykgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RlZF8gPSBmYWxzZTsKLSAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyA9IGZhbHNlOwotCi0gICAgICAgICAgICBub2RlXyA9IG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6YWxsb2NhdGUoYWxsb2NfLCAxKTsKLQotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpjb25zdHJ1Y3QoYWxsb2NfLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoKm5vZGVfKSwgbm9kZSgpKTsKLSAgICAgICAgICAgIG5vZGVfLT5pbml0KG5vZGVfKTsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlX2NvbnN0cnVjdGVkXyk7Ci0KLSAgICAgICAgICAgIGlmICh2YWx1ZV9jb25zdHJ1Y3RlZF8pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95X3ZhbHVlX2ltcGwoYWxsb2NfLAotICAgICAgICAgICAgICAgICAgICBub2RlXy0+dmFsdWVfcHRyKCkpOwotICAgICAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vCi0gICAgLy8gTm9kZSBIb2xkZXIKLSAgICAvLwotICAgIC8vIFRlbXBvcmFyeSBzdG9yZSBmb3Igbm9kZXMuIERlbGV0ZXMgYW55IHRoYXQgYXJlbid0IHVzZWQuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZUFsbG9jPgotICAgIHN0cnVjdCBub2RlX2hvbGRlciA6IHByaXZhdGUgbm9kZV9jb25zdHJ1Y3RvcjxOb2RlQWxsb2M+Ci0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9jb25zdHJ1Y3RvcjxOb2RlQWxsb2M+IGJhc2U7Ci0KLSAgICAgICAgdHlwZWRlZiBOb2RlQWxsb2Mgbm9kZV9hbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPE5vZGVBbGxvYz4KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnZhbHVlX3R5cGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6aXRlcmF0b3I8bm9kZT4gaXRlcmF0b3I7Ci0KLSAgICAgICAgbm9kZV9wb2ludGVyIG5vZGVzXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFibGU+Ci0gICAgICAgIGV4cGxpY2l0IG5vZGVfaG9sZGVyKFRhYmxlJiBiKSA6Ci0gICAgICAgICAgICBiYXNlKGIubm9kZV9hbGxvYygpKSwKLSAgICAgICAgICAgIG5vZGVzXygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChiLnNpemVfKSB7Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgVGFibGU6OmxpbmtfcG9pbnRlciBwcmV2ID0gYi5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLSAgICAgICAgICAgICAgICBub2Rlc18gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IGxpbmtfcG9pbnRlcigpOwotICAgICAgICAgICAgICAgIGIuc2l6ZV8gPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgfm5vZGVfaG9sZGVyKCk7Ci0KLSAgICAgICAgdm9pZCBub2RlX2Zvcl9hc3NpZ25tZW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCF0aGlzLT5ub2RlXyAmJiBub2Rlc18pIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXyA9IG5vZGVzXzsKLSAgICAgICAgICAgICAgICBub2Rlc18gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG5vZGVzXy0+bmV4dF8pOwotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfLT5pbml0KHRoaXMtPm5vZGVfKTsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXy0+bmV4dF8gPSBsaW5rX3BvaW50ZXIoKTsKLQotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfY29uc3RydWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0aGlzLT52YWx1ZV9jb25zdHJ1Y3RlZF8gPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFzc2lnbl9pbXBsKFQgY29uc3QmIHYpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLT5ub2RlXyAmJiB0aGlzLT52YWx1ZV9jb25zdHJ1Y3RlZF8pIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXy0+dmFsdWUoKSA9IHY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgICAgICBpbmxpbmUgdm9pZCBhc3NpZ25faW1wbChzdGQ6OnBhaXI8VDEgY29uc3QsIFQyPiBjb25zdCYgdikgewotICAgICAgICAgICAgdGhpcy0+Y29uc3RydWN0X3dpdGhfdmFsdWUyKHYpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIG1vdmVfYXNzaWduX2ltcGwoVCYgdikgewotICAgICAgICAgICAgaWYgKHRoaXMtPm5vZGVfICYmIHRoaXMtPnZhbHVlX2NvbnN0cnVjdGVkXykgewotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfLT52YWx1ZSgpID0gbmRuYm9vc3Q6Om1vdmUodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIobmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICAgICAgaW5saW5lIHZvaWQgbW92ZV9hc3NpZ25faW1wbChzdGQ6OnBhaXI8VDEgY29uc3QsIFQyPiYgdikgewotICAgICAgICAgICAgdGhpcy0+Y29uc3RydWN0X3dpdGhfdmFsdWUyKG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGVfcG9pbnRlciBjb3B5X29mKHZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfZm9yX2Fzc2lnbm1lbnQoKTsKLSAgICAgICAgICAgIGFzc2lnbl9pbXBsKHYpOwotICAgICAgICAgICAgcmV0dXJuIGJhc2U6OnJlbGVhc2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGVfcG9pbnRlciBtb3ZlX2NvcHlfb2YodmFsdWVfdHlwZSYgdikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9mb3JfYXNzaWdubWVudCgpOwotICAgICAgICAgICAgbW92ZV9hc3NpZ25faW1wbCh2KTsKLSAgICAgICAgICAgIHJldHVybiBiYXNlOjpyZWxlYXNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihub2Rlc18pOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBub2RlX2hvbGRlcjxBbGxvYz46On5ub2RlX2hvbGRlcigpCi0gICAgewotICAgICAgICB3aGlsZSAobm9kZXNfKSB7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgcCA9IG5vZGVzXzsKLSAgICAgICAgICAgIG5vZGVzXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocC0+bmV4dF8pOwotCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3lfdmFsdWVfaW1wbCh0aGlzLT5hbGxvY18sCi0gICAgICAgICAgICAgICAgcC0+dmFsdWVfcHRyKCkpOwotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZXN0cm95KHRoaXMtPmFsbG9jXywgbmRuYm9vc3Q6OmFkZHJlc3NvZigqcCkpOwotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZWFsbG9jYXRlKHRoaXMtPmFsbG9jXywgcCwgMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBCdWNrZXQKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlUG9pbnRlcj4KLSAgICBzdHJ1Y3QgYnVja2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIE5vZGVQb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgbGlua19wb2ludGVyIG5leHRfOwotCi0gICAgICAgIGJ1Y2tldCgpIDogbmV4dF8oKSB7fQotCi0gICAgICAgIGxpbmtfcG9pbnRlciBmaXJzdF9mcm9tX3N0YXJ0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5leHRfOwotICAgICAgICB9Ci0KLSAgICAgICAgZW51bSB7IGV4dHJhX25vZGUgPSB0cnVlIH07Ci0gICAgfTsKLQotICAgIHN0cnVjdCBwdHJfYnVja2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIHB0cl9idWNrZXQqIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgbGlua19wb2ludGVyIG5leHRfOwotCi0gICAgICAgIHB0cl9idWNrZXQoKSA6IG5leHRfKDApIHt9Ci0KLSAgICAgICAgbGlua19wb2ludGVyIGZpcnN0X2Zyb21fc3RhcnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGVudW0geyBleHRyYV9ub2RlID0gZmFsc2UgfTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vCi0gICAgLy8gSGFzaCBQb2xpY3kKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTaXplVD4KLSAgICBzdHJ1Y3QgcHJpbWVfcG9saWN5Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBhcHBseV9oYXNoKEhhc2ggY29uc3QmIGhmLCBUIGNvbnN0JiB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gaGYoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIHRvX2J1Y2tldChTaXplVCBidWNrZXRfY291bnQsIFNpemVUIGhhc2gpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNoICUgYnVja2V0X2NvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBuZXdfYnVja2V0X2NvdW50KFNpemVUIG1pbikgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bmV4dF9wcmltZShtaW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBwcmV2X2J1Y2tldF9jb3VudChTaXplVCBtYXgpIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnByZXZfcHJpbWUobWF4KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2l6ZVQ+Ci0gICAgc3RydWN0IG1peDY0X3BvbGljeQotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgYXBwbHlfaGFzaChIYXNoIGNvbnN0JiBoZiwgVCBjb25zdCYgeCkgewotICAgICAgICAgICAgU2l6ZVQga2V5ID0gaGYoeCk7Ci0gICAgICAgICAgICBrZXkgPSAofmtleSkgKyAoa2V5IDw8IDIxKTsgLy8ga2V5ID0gKGtleSA8PCAyMSkgLSBrZXkgLSAxOwotICAgICAgICAgICAga2V5ID0ga2V5IF4gKGtleSA+PiAyNCk7Ci0gICAgICAgICAgICBrZXkgPSAoa2V5ICsgKGtleSA8PCAzKSkgKyAoa2V5IDw8IDgpOyAvLyBrZXkgKiAyNjUKLSAgICAgICAgICAgIGtleSA9IGtleSBeIChrZXkgPj4gMTQpOwotICAgICAgICAgICAga2V5ID0gKGtleSArIChrZXkgPDwgMikpICsgKGtleSA8PCA0KTsgLy8ga2V5ICogMjEKLSAgICAgICAgICAgIGtleSA9IGtleSBeIChrZXkgPj4gMjgpOwotICAgICAgICAgICAga2V5ID0ga2V5ICsgKGtleSA8PCAzMSk7Ci0gICAgICAgICAgICByZXR1cm4ga2V5OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCB0b19idWNrZXQoU2l6ZVQgYnVja2V0X2NvdW50LCBTaXplVCBoYXNoKSB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaCAmIChidWNrZXRfY291bnQgLSAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgbmV3X2J1Y2tldF9jb3VudChTaXplVCBtaW4pIHsKLSAgICAgICAgICAgIGlmIChtaW4gPD0gNCkgcmV0dXJuIDQ7Ci0gICAgICAgICAgICAtLW1pbjsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gMTsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gMjsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gNDsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gODsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gMTY7Ci0gICAgICAgICAgICBtaW4gfD0gbWluID4+IDMyOwotICAgICAgICAgICAgcmV0dXJuIG1pbiArIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIHByZXZfYnVja2V0X2NvdW50KFNpemVUIG1heCkgewotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiAxOwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiAyOwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiA0OwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiA4OwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiAxNjsKLSAgICAgICAgICAgIG1heCB8PSBtYXggPj4gMzI7Ci0gICAgICAgICAgICByZXR1cm4gKG1heCA+PiAxKSArIDE7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGludCBkaWdpdHMsIGludCByYWRpeD4KLSAgICBzdHJ1Y3QgcGlja19wb2xpY3lfaW1wbCB7Ci0gICAgICAgIHR5cGVkZWYgcHJpbWVfcG9saWN5PHN0ZDo6c2l6ZV90PiB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBwaWNrX3BvbGljeV9pbXBsPDY0LCAyPiB7Ci0gICAgICAgIHR5cGVkZWYgbWl4NjRfcG9saWN5PHN0ZDo6c2l6ZV90PiB0eXBlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgcGlja19wb2xpY3kgOgotICAgICAgICBwaWNrX3BvbGljeV9pbXBsPAotICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46OmRpZ2l0cywKLSAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjpyYWRpeD4ge307Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gRnVuY3Rpb25zCi0KLSAgICAvLyBBc3NpZ25pbmcgYW5kIHN3YXBwaW5nIHRoZSBlcXVhbGl0eSBhbmQgaGFzaCBmdW5jdGlvbiBvYmplY3RzCi0gICAgLy8gbmVlZHMgc3Ryb25nIGV4Y2VwdGlvbiBzYWZldHkuIFRvIGltcGxlbWVudCB0aGF0IG5vcm1hbGx5IHdlJ2QKLSAgICAvLyByZXF1aXJlIG9uZSBvZiB0aGVtIHRvIGJlIGtub3duIHRvIG5vdCB0aHJvdyBhbmQgdGhlIG90aGVyIHRvCi0gICAgLy8gZ3VhcmFudGVlIHN0cm9uZyBleGNlcHRpb24gc2FmZXR5LiBVbmZvcnR1bmF0ZWx5IHRoZXkgYm90aCBvbmx5Ci0gICAgLy8gaGF2ZSBiYXNpYyBleGNlcHRpb24gc2FmZXR5LiBTbyB0byBhY2hlaXZlIHN0cm9uZyBleGNlcHRpb24KLSAgICAvLyBzYWZldHkgd2UgaGF2ZSBzdG9yYWdlIHNwYWNlIGZvciB0d28gY29waWVzLCBhbmQgYXNzaWduIHRoZSBuZXcKLSAgICAvLyBjb3BpZXMgdG8gdGhlIHVudXNlZCBzcGFjZS4gVGhlbiBzd2l0Y2ggdG8gdXNpbmcgdGhhdCB0byB1c2UKLSAgICAvLyB0aGVtLiBUaGlzIGlzIGltcGxlbWVudGVkIGluICdzZXRfaGFzaF9mdW5jdGlvbnMnIHdoaWNoCi0gICAgLy8gYXRvbWljYWxseSBhc3NpZ25zIHRoZSBuZXcgZnVuY3Rpb24gb2JqZWN0cyBpbiBhIHN0cm9uZ2x5Ci0gICAgLy8gZXhjZXB0aW9uIHNhZmUgbWFubmVyLgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFAsIGJvb2wgTm9UaHJvd01vdmVBc3NpZ24+Ci0gICAgY2xhc3Mgc2V0X2hhc2hfZnVuY3Rpb25zOwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFA+Ci0gICAgY2xhc3MgZnVuY3Rpb25zCi0gICAgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUgPQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxIPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8UD46OnZhbHVlOwotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSA9Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPEg+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxQPjo6dmFsdWU7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwKLSAgICAgICAgICAgICAgIG5vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPjsKLSAgICAgICAgZnVuY3Rpb25zJiBvcGVyYXRvcj0oZnVuY3Rpb25zIGNvbnN0Jik7Ci0KLSAgICAgICAgdHlwZWRlZiBjb21wcmVzc2VkPEgsIFA+IGZ1bmN0aW9uX3BhaXI7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWxpZ25lZF9zdG9yYWdlPAotICAgICAgICAgICAgc2l6ZW9mKGZ1bmN0aW9uX3BhaXIpLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxmdW5jdGlvbl9wYWlyPjo6dmFsdWU+Ojp0eXBlIGFsaWduZWRfZnVuY3Rpb247Ci0KLSAgICAgICAgYm9vbCBjdXJyZW50XzsgLy8gVGhlIGN1cnJlbnRseSBhY3RpdmUgZnVuY3Rpb25zLgotICAgICAgICBhbGlnbmVkX2Z1bmN0aW9uIGZ1bmNzX1syXTsKLQotICAgICAgICBmdW5jdGlvbl9wYWlyIGNvbnN0JiBjdXJyZW50KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxmdW5jdGlvbl9wYWlyIGNvbnN0Kj4oCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCBjb25zdCo+KCZmdW5jc19bY3VycmVudF9dKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbl9wYWlyJiBjdXJyZW50KCkgewotICAgICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxmdW5jdGlvbl9wYWlyKj4oCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KCZmdW5jc19bY3VycmVudF9dKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNvbnN0cnVjdChib29sIHdoaWNoLCBIIGNvbnN0JiBoZiwgUCBjb25zdCYgZXEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldygodm9pZCopICZmdW5jc19bd2hpY2hdKSBmdW5jdGlvbl9wYWlyKGhmLCBlcSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNvbnN0cnVjdChib29sIHdoaWNoLCBmdW5jdGlvbl9wYWlyIGNvbnN0JiBmKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcoKHZvaWQqKSAmZnVuY3NfW3doaWNoXSkgZnVuY3Rpb25fcGFpcihmKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBjb25zdHJ1Y3QoYm9vbCB3aGljaCwgZnVuY3Rpb25fcGFpciYgZiwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldygodm9pZCopICZmdW5jc19bd2hpY2hdKSBmdW5jdGlvbl9wYWlyKGYsIG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZXN0cm95KGJvb2wgd2hpY2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveSgoZnVuY3Rpb25fcGFpciopKCZmdW5jc19bd2hpY2hdKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwKLSAgICAgICAgICAgICAgICBub3Rocm93X21vdmVfYXNzaWduYWJsZT4gc2V0X2hhc2hfZnVuY3Rpb25zOwotCi0gICAgICAgIGZ1bmN0aW9ucyhIIGNvbnN0JiBoZiwgUCBjb25zdCYgZXEpCi0gICAgICAgICAgICA6IGN1cnJlbnRfKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3QoY3VycmVudF8sIGhmLCBlcSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbnMoZnVuY3Rpb25zIGNvbnN0JiBiZikKLSAgICAgICAgICAgIDogY3VycmVudF8oZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdChjdXJyZW50XywgYmYuY3VycmVudCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9ucyhmdW5jdGlvbnMmIGJmLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgICA6IGN1cnJlbnRfKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUpIHsKLSAgICAgICAgICAgICAgICBjb25zdHJ1Y3QoY3VycmVudF8sIGJmLmN1cnJlbnQoKSwgbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjb25zdHJ1Y3QoY3VycmVudF8sIGJmLmN1cnJlbnQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+ZnVuY3Rpb25zKCkgewotICAgICAgICAgICAgdGhpcy0+ZGVzdHJveShjdXJyZW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBIIGNvbnN0JiBoYXNoX2Z1bmN0aW9uKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQoKS5maXJzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgUCBjb25zdCYga2V5X2VxKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQoKS5zZWNvbmQoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgUD4KLSAgICBjbGFzcyBzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwgZmFsc2U+Ci0gICAgewotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoc2V0X2hhc2hfZnVuY3Rpb25zIGNvbnN0Jik7Ci0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyYgb3BlcmF0b3I9KHNldF9oYXNoX2Z1bmN0aW9ucyBjb25zdCYpOwotCi0gICAgICAgIHR5cGVkZWYgZnVuY3Rpb25zPEgsIFA+IGZ1bmN0aW9uc190eXBlOwotICAgIAotICAgICAgICBmdW5jdGlvbnNfdHlwZSYgZnVuY3Rpb25zXzsKLSAgICAgICAgYm9vbCB0bXBfZnVuY3Rpb25zXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoZnVuY3Rpb25zX3R5cGUmIGYsIEggY29uc3QmIGgsIFAgY29uc3QmIHApCi0gICAgICAgICAgOiBmdW5jdGlvbnNfKGYpLAotICAgICAgICAgICAgdG1wX2Z1bmN0aW9uc18oIWYuY3VycmVudF8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGYuY29uc3RydWN0KHRtcF9mdW5jdGlvbnNfLCBoLCBwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhmdW5jdGlvbnNfdHlwZSYgZiwgZnVuY3Rpb25zX3R5cGUgY29uc3QmIG90aGVyKQotICAgICAgICAgIDogZnVuY3Rpb25zXyhmKSwKLSAgICAgICAgICAgIHRtcF9mdW5jdGlvbnNfKCFmLmN1cnJlbnRfKQotICAgICAgICB7Ci0gICAgICAgICAgICBmLmNvbnN0cnVjdCh0bXBfZnVuY3Rpb25zXywgb3RoZXIuY3VycmVudCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zZXRfaGFzaF9mdW5jdGlvbnMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbnNfLmRlc3Ryb3kodG1wX2Z1bmN0aW9uc18pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjb21taXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbnNfLmN1cnJlbnRfID0gdG1wX2Z1bmN0aW9uc187Ci0gICAgICAgICAgICB0bXBfZnVuY3Rpb25zXyA9ICF0bXBfZnVuY3Rpb25zXzsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgUD4KLSAgICBjbGFzcyBzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhzZXRfaGFzaF9mdW5jdGlvbnMgY29uc3QmKTsKLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zJiBvcGVyYXRvcj0oc2V0X2hhc2hfZnVuY3Rpb25zIGNvbnN0Jik7Ci0KLSAgICAgICAgdHlwZWRlZiBmdW5jdGlvbnM8SCwgUD4gZnVuY3Rpb25zX3R5cGU7Ci0KLSAgICAgICAgZnVuY3Rpb25zX3R5cGUmIGZ1bmN0aW9uc187Ci0gICAgICAgIEggaGFzaF87Ci0gICAgICAgIFAgcHJlZF87Ci0gICAgCi0gICAgcHVibGljOgotCi0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhmdW5jdGlvbnNfdHlwZSYgZiwgSCBjb25zdCYgaCwgUCBjb25zdCYgcCkgOgotICAgICAgICAgICAgZnVuY3Rpb25zXyhmKSwKLSAgICAgICAgICAgIGhhc2hfKGgpLAotICAgICAgICAgICAgcHJlZF8ocCkge30KLQotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoZnVuY3Rpb25zX3R5cGUmIGYsIGZ1bmN0aW9uc190eXBlIGNvbnN0JiBvdGhlcikgOgotICAgICAgICAgICAgZnVuY3Rpb25zXyhmKSwKLSAgICAgICAgICAgIGhhc2hfKG90aGVyLmhhc2hfZnVuY3Rpb24oKSksCi0gICAgICAgICAgICBwcmVkXyhvdGhlci5rZXlfZXEoKSkge30KLQotICAgICAgICB2b2lkIGNvbW1pdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uc18uY3VycmVudCgpLmZpcnN0KCkgPSBuZG5ib29zdDo6bW92ZShoYXNoXyk7Ci0gICAgICAgICAgICBmdW5jdGlvbnNfLmN1cnJlbnQoKS5zZWNvbmQoKSA9IG5kbmJvb3N0Ojptb3ZlKHByZWRfKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHJ2YWx1ZSBwYXJhbWV0ZXJzIHdoZW4gdHlwZSBjYW4ndCBiZSBhIE5ETkJPT1NUX1JWX1JFRihUKSBwYXJhbWV0ZXIKLSAgICAvLyBlLmcuIGZvciBpbnQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKFQpIE5ETkJPT1NUX1JWX1JFRihUKQotI2Vsc2UKLSAgICBzdHJ1Y3QgcGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkIHsKLSAgICAgICAgdHlwZWRlZiBwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJ2X3JlZl9pbXBsIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SVl9SRUYoVCkgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJ2X3JlZiA6Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlCi0gICAgICAgID46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuIDwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cnZfcmVmX2ltcGw8VD4sCi0gICAgICAgICAgICBwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQKLSAgICAgICAgPjo6dHlwZQotICAgIHt9OwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYoVCkgXAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJ2X3JlZjxUPjo6dHlwZQotI2VuZGlmCi19fX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXF1aXZhbGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXF1aXZhbGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNjJkNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2VxdWl2YWxlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0VRVUlWQUxFTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRVFVSVZBTEVOVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+IHN0cnVjdCBncm91cGVkX25vZGU7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBncm91cGVkX3B0cl9ub2RlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IGdyb3VwZWRfdGFibGVfaW1wbDsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBncm91cGVkX25vZGUgOgotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnZhbHVlX2Jhc2U8VD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPAotICAgICAgICAgICAgQSwgZ3JvdXBlZF9ub2RlPEEsIFQ+ID46OnR5cGUgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgIGFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yPjo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICBsaW5rX3BvaW50ZXIgbmV4dF87Ci0gICAgICAgIG5vZGVfcG9pbnRlciBncm91cF9wcmV2XzsKLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF87Ci0KLSAgICAgICAgZ3JvdXBlZF9ub2RlKCkgOgotICAgICAgICAgICAgbmV4dF8oKSwKLSAgICAgICAgICAgIGdyb3VwX3ByZXZfKCksCi0gICAgICAgICAgICBoYXNoXygwKQotICAgICAgICB7fQotCi0gICAgICAgIHZvaWQgaW5pdChub2RlX3BvaW50ZXIgc2VsZikKLSAgICAgICAgewotICAgICAgICAgICAgZ3JvdXBfcHJldl8gPSBzZWxmOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBncm91cGVkX25vZGUmIG9wZXJhdG9yPShncm91cGVkX25vZGUgY29uc3QmKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGdyb3VwZWRfcHRyX25vZGUgOgotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnZhbHVlX2Jhc2U8VD4sCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgYnVja2V0X2Jhc2U7Ci0gICAgICAgIHR5cGVkZWYgZ3JvdXBlZF9wdHJfbm9kZTxUPiogbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHB0cl9idWNrZXQqIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICBub2RlX3BvaW50ZXIgZ3JvdXBfcHJldl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2hfOwotCi0gICAgICAgIGdyb3VwZWRfcHRyX25vZGUoKSA6Ci0gICAgICAgICAgICBidWNrZXRfYmFzZSgpLAotICAgICAgICAgICAgZ3JvdXBfcHJldl8oMCksCi0gICAgICAgICAgICBoYXNoXygwKQotICAgICAgICB7fQotCi0gICAgICAgIHZvaWQgaW5pdChub2RlX3BvaW50ZXIgc2VsZikKLSAgICAgICAgewotICAgICAgICAgICAgZ3JvdXBfcHJldl8gPSBzZWxmOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBncm91cGVkX3B0cl9ub2RlJiBvcGVyYXRvcj0oZ3JvdXBlZF9wdHJfbm9kZSBjb25zdCYpOwotICAgIH07Ci0KLSAgICAvLyBJZiB0aGUgYWxsb2NhdG9yIHVzZXMgcmF3IHBvaW50ZXJzIHVzZSBncm91cGVkX3B0cl9ub2RlCi0gICAgLy8gT3RoZXJ3aXNlIHVzZSBncm91cGVkX25vZGUuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgTm9kZVB0ciwgdHlwZW5hbWUgQnVja2V0UHRyPgotICAgIHN0cnVjdCBwaWNrX2dyb3VwZWRfbm9kZTIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX25vZGU8QSwgVD4gbm9kZTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwgbm9kZT46OnR5cGUKLSAgICAgICAgPjo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmJ1Y2tldDxub2RlX3BvaW50ZXI+IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiBub2RlX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcGlja19ncm91cGVkX25vZGUyPEEsIFQsCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF9wdHJfbm9kZTxUPiosCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF9wdHJfbm9kZTxUPiBub2RlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgYnVja2V0KiBsaW5rX3BvaW50ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBwaWNrX2dyb3VwZWRfbm9kZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3B0cl9ub2RlPFQ+ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfbm9kZV90cmFpdHM7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfYnVja2V0X3RyYWl0czsKLQotICAgICAgICB0eXBlZGVmIHBpY2tfZ3JvdXBlZF9ub2RlMjxBLCBULAotICAgICAgICAgICAgdHlwZW5hbWUgdGVudGF0aXZlX25vZGVfdHJhaXRzOjpwb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgdGVudGF0aXZlX2J1Y2tldF90cmFpdHM6OnBvaW50ZXI+IHBpY2s7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgSCwgdHlwZW5hbWUgUD4KLSAgICBzdHJ1Y3QgbXVsdGlzZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptdWx0aXNldDxBLCBULCBILCBQPiB0eXBlczsKLQotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBUIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4gdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19ncm91cGVkX25vZGU8YWxsb2NhdG9yLAotICAgICAgICAgICAgdmFsdWVfdHlwZT4gcGljazsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3RhYmxlX2ltcGw8dHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2V0X2V4dHJhY3Rvcjx2YWx1ZV90eXBlPiBleHRyYWN0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfcG9saWN5Ojp0eXBlIHBvbGljeTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEssIHR5cGVuYW1lIE0sIHR5cGVuYW1lIEgsIHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IG11bHRpbWFwCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bXVsdGltYXA8QSwgSywgTSwgSCwgUD4gdHlwZXM7Ci0KLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SyBjb25zdCwgTT4gdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBLIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4gdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19ncm91cGVkX25vZGU8YWxsb2NhdG9yLAotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU+IHBpY2s7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF90YWJsZV9pbXBsPHR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1hcF9leHRyYWN0b3I8a2V5X3R5cGUsIHZhbHVlX3R5cGU+Ci0gICAgICAgICAgICBleHRyYWN0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfcG9saWN5Ojp0eXBlIHBvbGljeTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIHN0cnVjdCBncm91cGVkX3RhYmxlX2ltcGwgOiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlPFR5cGVzPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlPFR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpwb2xpY3kgcG9saWN5OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX3BvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2FsbG9jYXRvciBub2RlX2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9hbGxvY2F0b3JfdHJhaXRzIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6YnVja2V0X3BvaW50ZXIgYnVja2V0X3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Omhhc2hlciBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmtleV9lcXVhbCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2NvbnN0cnVjdG9yIG5vZGVfY29uc3RydWN0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmV4dHJhY3RvciBleHRyYWN0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGNfaXRlcmF0b3I7Ci0KLSAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKHN0ZDo6c2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgaGFzaGVyIGNvbnN0JiBoZiwKLSAgICAgICAgICAgICAgICBrZXlfZXF1YWwgY29uc3QmIGVxLAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKQotICAgICAgICAgIDogdGFibGUobiwgaGYsIGVxLCBhKQotICAgICAgICB7fQotCi0gICAgICAgIGdyb3VwZWRfdGFibGVfaW1wbChncm91cGVkX3RhYmxlX2ltcGwgY29uc3QmIHgpCi0gICAgICAgICAgOiB0YWJsZSh4LCBub2RlX2FsbG9jYXRvcl90cmFpdHM6OgotICAgICAgICAgICAgICAgIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oeC5ub2RlX2FsbG9jKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKGdyb3VwZWRfdGFibGVfaW1wbCBjb25zdCYgeCwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkKLSAgICAgICAgICA6IHRhYmxlKHgsIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPmluaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBncm91cGVkX3RhYmxlX2ltcGwoZ3JvdXBlZF90YWJsZV9pbXBsJiB4LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkKLSAgICAgICAgICA6IHRhYmxlKHgsIG0pCi0gICAgICAgIHt9Ci0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKGdyb3VwZWRfdGFibGVfaW1wbCYgeCwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgOiB0YWJsZSh4LCBhLCBtKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tb3ZlX2luaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBY2Nlc3NvcnMKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBQcmVkPgotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGVfaW1wbCgKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCwKLSAgICAgICAgICAgICAgICBLZXkgY29uc3QmIGssCi0gICAgICAgICAgICAgICAgUHJlZCBjb25zdCYgZXEpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4gPSB0aGlzLT5iZWdpbihidWNrZXRfaW5kZXgpOwotCi0gICAgICAgICAgICBmb3IgKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbi5ub2RlXykgcmV0dXJuIG47Ci0KLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBub2RlX2hhc2ggPSBuLm5vZGVfLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpZiAoa2V5X2hhc2ggPT0gbm9kZV9oYXNoKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVxKGssIHRoaXMtPmdldF9rZXkoKm4pKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+aGFzaF90b19idWNrZXQobm9kZV9oYXNoKSAhPSBidWNrZXRfaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuID0gaXRlcmF0b3Iobi5ub2RlXy0+Z3JvdXBfcHJldl8tPm5leHRfKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50KGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgaWYgKCFuLm5vZGVfKSByZXR1cm4gMDsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgeCA9IDA7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgaXQgPSBuLm5vZGVfOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGl0ID0gaXQtPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgICAgICsreDsKLSAgICAgICAgICAgIH0gd2hpbGUoaXQgIT0gbi5ub2RlXyk7Ci0KLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4KLSAgICAgICAgICAgIGVxdWFsX3JhbmdlKGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKAotICAgICAgICAgICAgICAgIG4sIG4ubm9kZV8gPyBpdGVyYXRvcihuLm5vZGVfLT5ncm91cF9wcmV2Xy0+bmV4dF8pIDogbik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFcXVhbGl0eQotCi0gICAgICAgIGJvb2wgZXF1YWxzKGdyb3VwZWRfdGFibGVfaW1wbCBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRoaXMtPnNpemVfICE9IG90aGVyLnNpemVfKSByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgICAgICAgICBmb3IoaXRlcmF0b3IgbjEgPSB0aGlzLT5iZWdpbigpOyBuMS5ub2RlXzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgbjIgPSBvdGhlci5maW5kX21hdGNoaW5nX25vZGUobjEpOwotICAgICAgICAgICAgICAgIGlmICghbjIubm9kZV8pIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBlbmQxKG4xLm5vZGVfLT5ncm91cF9wcmV2Xy0+bmV4dF8pOwotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGVuZDIobjIubm9kZV8tPmdyb3VwX3ByZXZfLT5uZXh0Xyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFncm91cF9lcXVhbHMobjEsIGVuZDEsIG4yLCBlbmQyKSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIG4xID0gZW5kMTsgICAgCi0gICAgICAgICAgICB9Ci0gICAgCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGdyb3VwX2VxdWFscyhpdGVyYXRvciBuMSwgaXRlcmF0b3IgZW5kMSwKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBuMiwgaXRlcmF0b3IgZW5kMikKLSAgICAgICAgewotICAgICAgICAgICAgZm9yKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICgqbjEgIT0gKm4yKSBicmVhazsKLQotICAgICAgICAgICAgICAgICsrbjE7Ci0gICAgICAgICAgICAgICAgKytuMjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChuMSA9PSBlbmQxKSByZXR1cm4gbjIgPT0gZW5kMjsKLSAgICAgICAgICAgICAgICBpZiAobjIgPT0gZW5kMikgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IoaXRlcmF0b3IgbjFhID0gbjEsIG4yYSA9IG4yOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKytuMWE7Ci0gICAgICAgICAgICAgICAgKytuMmE7Ci0KLSAgICAgICAgICAgICAgICBpZiAobjFhID09IGVuZDEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobjJhID09IGVuZDIpIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobjJhID09IGVuZDIpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaXRlcmF0b3Igc3RhcnQgPSBuMTsKLSAgICAgICAgICAgIGZvcig7bjEgIT0gZW5kMTsgKytuMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiB2ID0gKm4xOwotICAgICAgICAgICAgICAgIGlmIChmaW5kKHN0YXJ0LCBuMSwgdikpIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG1hdGNoZXMgPSBjb3VudF9lcXVhbChuMiwgZW5kMiwgdik7Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgbmV4dCA9IG4xOwotICAgICAgICAgICAgICAgICsrbmV4dDsKLSAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcyAhPSAxICsgY291bnRfZXF1YWwobmV4dCwgZW5kMSwgdikpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBmaW5kKGl0ZXJhdG9yIG4sIGl0ZXJhdG9yIGVuZCwgdmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgZm9yKDtuICE9IGVuZDsgKytuKQotICAgICAgICAgICAgICAgIGlmICgqbiA9PSB2KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBjb3VudF9lcXVhbChpdGVyYXRvciBuLCBpdGVyYXRvciBlbmQsCi0gICAgICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBmb3IoO24gIT0gZW5kOyArK24pCi0gICAgICAgICAgICAgICAgaWYgKCpuID09IHYpICsrY291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbXBsYWNlL0luc2VydAotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfYWZ0ZXJfbm9kZSgKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgbiwKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgcG9zKQotICAgICAgICB7Ci0gICAgICAgICAgICBuLT5uZXh0XyA9IHBvcy0+Z3JvdXBfcHJldl8tPm5leHRfOwotICAgICAgICAgICAgbi0+Z3JvdXBfcHJldl8gPSBwb3MtPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgcG9zLT5ncm91cF9wcmV2Xy0+bmV4dF8gPSBuOwotICAgICAgICAgICAgcG9zLT5ncm91cF9wcmV2XyA9IG47Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgaXRlcmF0b3IgYWRkX25vZGUoCi0gICAgICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciYgYSwKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCwKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBwb3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuID0gYS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBuLT5oYXNoXyA9IGtleV9oYXNoOwotICAgICAgICAgICAgaWYgKHBvcy5ub2RlXykgewotICAgICAgICAgICAgICAgIHRoaXMtPmFkZF9hZnRlcl9ub2RlKG4sIHBvcy5ub2RlXyk7Ci0gICAgICAgICAgICAgICAgaWYgKG4tPm5leHRfKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG5leHRfYnVja2V0ID0gdGhpcy0+aGFzaF90b19idWNrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG4tPm5leHRfKS0+aGFzaF8pOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF9idWNrZXQgIT0gdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5nZXRfYnVja2V0KG5leHRfYnVja2V0KS0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgYiA9IHRoaXMtPmdldF9idWNrZXQoCi0gICAgICAgICAgICAgICAgICAgIHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWItPm5leHRfKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbGlua19wb2ludGVyIHN0YXJ0X25vZGUgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydF9ub2RlLT5uZXh0XykgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+Z2V0X2J1Y2tldCh0aGlzLT5oYXNoX3RvX2J1Y2tldCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHN0YXJ0X25vZGUtPm5leHRfKS0+aGFzaF8KLSAgICAgICAgICAgICAgICAgICAgICAgICkpLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAKLSAgICAgICAgICAgICAgICAgICAgYi0+bmV4dF8gPSBzdGFydF9ub2RlOwotICAgICAgICAgICAgICAgICAgICBuLT5uZXh0XyA9IHN0YXJ0X25vZGUtPm5leHRfOwotICAgICAgICAgICAgICAgICAgICBzdGFydF9ub2RlLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG4tPm5leHRfID0gYi0+bmV4dF8tPm5leHRfOwotICAgICAgICAgICAgICAgICAgICBiLT5uZXh0Xy0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrdGhpcy0+c2l6ZV87Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3Iobik7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2ltcGwobm9kZV9jb25zdHJ1Y3RvciYgYSkKLSAgICAgICAgewotICAgICAgICAgICAga2V5X3R5cGUgY29uc3QmIGsgPSB0aGlzLT5nZXRfa2V5KGEudmFsdWUoKSk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3NpdGlvbiA9IHRoaXMtPmZpbmRfbm9kZShrZXlfaGFzaCwgayk7Ci0KLSAgICAgICAgICAgIC8vIHJlc2VydmUgaGFzIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkgaWYgdGhlIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgICAgIC8vIHRocm93cywgc3Ryb25nIG90aGVyd2lzZS4KLSAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIDEpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmFkZF9ub2RlKGEsIGtleV9oYXNoLCBwb3NpdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGVtcGxhY2VfaW1wbF9ub19yZWhhc2gobm9kZV9jb25zdHJ1Y3RvciYgYSkKLSAgICAgICAgewotICAgICAgICAgICAga2V5X3R5cGUgY29uc3QmIGsgPSB0aGlzLT5nZXRfa2V5KGEudmFsdWUoKSk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICB0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCwgdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKSk7Ci0gICAgICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXBsYWNlX2FyZ3MxPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkPiBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgfQotIyAgIGVsc2UKLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZCBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgfQotIyAgIGVuZGlmCi0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEU+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUykKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpOwotCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoZW1wbGFjZV9pbXBsKGEpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBJbnNlcnQgcmFuZ2UgbWV0aG9kcwotCi0gICAgICAgIC8vIGlmIGhhc2ggZnVuY3Rpb24gdGhyb3dzLCBvciBpbnNlcnRpbmcgPiAxIGVsZW1lbnQsIGJhc2ljIGV4Y2VwdGlvbgotICAgICAgICAvLyBzYWZldHkuIFN0cm9uZyBvdGhlcndpc2UKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW5hYmxlX2lmX2ZvcndhcmQ8SSwgdm9pZD46OnR5cGUKLSAgICAgICAgICAgIGluc2VydF9yYW5nZShJIGksIEkgaikKLSAgICAgICAgewotICAgICAgICAgICAgaWYoaSA9PSBqKSByZXR1cm47Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGRpc3RhbmNlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkaXN0YW5jZShpLCBqKTsKLSAgICAgICAgICAgIGlmKGRpc3RhbmNlID09IDEpIHsKLSAgICAgICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgZW1wbGFjZV9pbXBsKGEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gT25seSByZXF1aXJlIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkgaGVyZQotICAgICAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIGRpc3RhbmNlKTsKLQotICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIGZvciAoOyBpICE9IGo7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtcGxhY2VfaW1wbF9ub19yZWhhc2goYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGlzYWJsZV9pZl9mb3J3YXJkPEksIHZvaWQ+Ojp0eXBlCi0gICAgICAgICAgICBpbnNlcnRfcmFuZ2UoSSBpLCBJIGopCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgZm9yICg7IGkgIT0gajsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIoKmkpOwotICAgICAgICAgICAgICAgIGVtcGxhY2VfaW1wbChhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBFcmFzZQotICAgICAgICAvLwotICAgICAgICAvLyBubyB0aHJvdwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGVyYXNlX2tleShrZXlfdHlwZSBjb25zdCYgaykKLSAgICAgICAgewotICAgICAgICAgICAgaWYoIXRoaXMtPnNpemVfKSByZXR1cm4gMDsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpOwotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgIGlmICghcHJldikgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIGZvciAoOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcmV2LT5uZXh0XykgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgbm9kZV9oYXNoID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmhhc2hfOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLT5oYXNoX3RvX2J1Y2tldChub2RlX2hhc2gpICE9IGJ1Y2tldF9pbmRleCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGVfaGFzaCA9PSBrZXlfaGFzaCAmJgotICAgICAgICAgICAgICAgICAgICB0aGlzLT5rZXlfZXEoKShrLCB0aGlzLT5nZXRfa2V5KAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPnZhbHVlKCkpKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcHJldiA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbm9kZV9wb2ludGVyIGZpcnN0X25vZGUgPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBlbmQgPSBmaXJzdF9ub2RlLT5ncm91cF9wcmV2Xy0+bmV4dF87Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gdGhpcy0+ZGVsZXRlX25vZGVzKHByZXYsIGVuZCk7Ci0gICAgICAgICAgICB0aGlzLT5maXhfYnVja2V0KGJ1Y2tldF9pbmRleCwgcHJldik7Ci0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlcmFzZShjX2l0ZXJhdG9yIHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyLm5vZGVfKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG5leHQoci5ub2RlXyk7Ci0gICAgICAgICAgICArK25leHQ7Ci0gICAgICAgICAgICBlcmFzZV9ub2RlcyhyLm5vZGVfLCBuZXh0Lm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2VfcmFuZ2UoY19pdGVyYXRvciByMSwgY19pdGVyYXRvciByMikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHIxID09IHIyKSByZXR1cm4gaXRlcmF0b3IocjIubm9kZV8pOwotICAgICAgICAgICAgZXJhc2Vfbm9kZXMocjEubm9kZV8sIHIyLm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihyMi5ub2RlXyk7Ci0gICAgICAgIH0KLQotICAgICAgICBsaW5rX3BvaW50ZXIgZXJhc2Vfbm9kZXMobm9kZV9wb2ludGVyIGJlZ2luLCBub2RlX3BvaW50ZXIgZW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXggPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChiZWdpbi0+aGFzaF8pOwotCi0gICAgICAgICAgICAvLyBTcGxpdCB0aGUgZ3JvdXBzIGNvbnRhaW5pbmcgJ2JlZ2luJyBhbmQgJ2VuZCcuCi0gICAgICAgICAgICAvLyBBbmQgZ2V0IHRoZSBwb2ludGVyIHRvIHRoZSBub2RlIGJlZm9yZSBiZWdpbiB3aGlsZQotICAgICAgICAgICAgLy8gd2UncmUgYXQgaXQuCi0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHNwbGl0X2dyb3VwcyhiZWdpbiwgZW5kKTsKLQotICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhICdwcmV2JyBpdCBtZWFucyB0aGF0IGJlZ2luIGlzIGF0IHRoZQotICAgICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIGEgYmxvY2ssIHNvIHNlYXJjaCB0aHJvdWdoIHRoZSBibG9ja3MgaW4gdGhlCi0gICAgICAgICAgICAvLyBzYW1lIGJ1Y2tldC4KLSAgICAgICAgICAgIGlmICghcHJldikgewotICAgICAgICAgICAgICAgIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgICAgICB3aGlsZSAocHJldi0+bmV4dF8gIT0gYmVnaW4pCi0gICAgICAgICAgICAgICAgICAgIHByZXYgPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgbm9kZXMuCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgbGlua19wb2ludGVyIGdyb3VwX2VuZCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5ncm91cF9wcmV2Xy0+bmV4dF87Ci0gICAgICAgICAgICAgICAgdGhpcy0+ZGVsZXRlX25vZGVzKHByZXYsIGdyb3VwX2VuZCk7Ci0gICAgICAgICAgICAgICAgYnVja2V0X2luZGV4ID0gdGhpcy0+Zml4X2J1Y2tldChidWNrZXRfaW5kZXgsIHByZXYpOwotICAgICAgICAgICAgfSB3aGlsZShwcmV2LT5uZXh0XyAhPSBlbmQpOwotCi0gICAgICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBsaW5rX3BvaW50ZXIgc3BsaXRfZ3JvdXBzKG5vZGVfcG9pbnRlciBiZWdpbiwgbm9kZV9wb2ludGVyIGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIHByZXYgPSBiZWdpbi0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICBpZiAocHJldi0+bmV4dF8gIT0gYmVnaW4pIHByZXYgPSBub2RlX3BvaW50ZXIoKTsKLQotICAgICAgICAgICAgaWYgKGVuZCkgewotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBmaXJzdCA9IGVuZDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3QgIT0gYmVnaW4gJiYgZmlyc3QtPmdyb3VwX3ByZXZfLT5uZXh0XyA9PSBmaXJzdCkgewotICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZpcnN0LT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6c3dhcChmaXJzdC0+Z3JvdXBfcHJldl8sIGVuZC0+Z3JvdXBfcHJldl8pOwotICAgICAgICAgICAgICAgIGlmIChmaXJzdCA9PSBiZWdpbikgcmV0dXJuIHByZXY7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwcmV2KSB7Ci0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIGZpcnN0ID0gcHJldjsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3QtPmdyb3VwX3ByZXZfLT5uZXh0XyA9PSBmaXJzdCkgewotICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZpcnN0LT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoZmlyc3QtPmdyb3VwX3ByZXZfLCBiZWdpbi0+Z3JvdXBfcHJldl8pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBmaWxsX2J1Y2tldHMKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUNyZWF0b3I+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGZpbGxfYnVja2V0cyhpdGVyYXRvciBuLCB0YWJsZSYgZHN0LAotICAgICAgICAgICAgTm9kZUNyZWF0b3ImIGNyZWF0b3IpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gZHN0LmdldF9wcmV2aW91c19zdGFydCgpOwotCi0gICAgICAgICAgICB3aGlsZSAobi5ub2RlXykgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gbi5ub2RlXy0+aGFzaF87Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgZ3JvdXBfZW5kKG4ubm9kZV8tPmdyb3VwX3ByZXZfLT5uZXh0Xyk7Ci0KLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgZmlyc3Rfbm9kZSA9IGNyZWF0b3IuY3JlYXRlKCpuKTsKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgZW5kID0gZmlyc3Rfbm9kZTsKLSAgICAgICAgICAgICAgICBmaXJzdF9ub2RlLT5oYXNoXyA9IGtleV9oYXNoOwotICAgICAgICAgICAgICAgIHByZXYtPm5leHRfID0gZmlyc3Rfbm9kZTsKLSAgICAgICAgICAgICAgICArK2RzdC5zaXplXzsKLQotICAgICAgICAgICAgICAgIGZvciAoKytuOyBuICE9IGdyb3VwX2VuZDsgKytuKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZW5kID0gY3JlYXRvci5jcmVhdGUoKm4pOwotICAgICAgICAgICAgICAgICAgICBlbmQtPmhhc2hfID0ga2V5X2hhc2g7Ci0gICAgICAgICAgICAgICAgICAgIGFkZF9hZnRlcl9ub2RlKGVuZCwgZmlyc3Rfbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICsrZHN0LnNpemVfOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHByZXYgPSBwbGFjZV9pbl9idWNrZXQoZHN0LCBwcmV2LCBlbmQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc3Ryb25nIG90aGVyd2lzZSBleGNlcHRpb24gc2FmZXR5Ci0gICAgICAgIHZvaWQgcmVoYXNoX2ltcGwoc3RkOjpzaXplX3QgbnVtX2J1Y2tldHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5idWNrZXRzXyk7Ci0KLSAgICAgICAgICAgIHRoaXMtPmNyZWF0ZV9idWNrZXRzKG51bV9idWNrZXRzKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0gICAgICAgICAgICB3aGlsZSAocHJldi0+bmV4dF8pCi0gICAgICAgICAgICAgICAgcHJldiA9IHBsYWNlX2luX2J1Y2tldCgqdGhpcywgcHJldiwKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmdyb3VwX3ByZXZfKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbm9kZXMgcGxhY2luZyB0aGVtIGluIHRoZSBjb3JyZWN0IGJ1Y2tldHMuCi0gICAgICAgIC8vIHByZTogcHJldi0+bmV4dF8gaXMgbm90IG51bGwuCi0gICAgICAgIHN0YXRpYyBsaW5rX3BvaW50ZXIgcGxhY2VfaW5fYnVja2V0KHRhYmxlJiBkc3QsCi0gICAgICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYsIG5vZGVfcG9pbnRlciBlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGIgPSBkc3QuZ2V0X2J1Y2tldChkc3QuaGFzaF90b19idWNrZXQoZW5kLT5oYXNoXykpOwotCi0gICAgICAgICAgICBpZiAoIWItPm5leHRfKSB7Ci0gICAgICAgICAgICAgICAgYi0+bmV4dF8gPSBwcmV2OwotICAgICAgICAgICAgICAgIHJldHVybiBlbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBsaW5rX3BvaW50ZXIgbmV4dCA9IGVuZC0+bmV4dF87Ci0gICAgICAgICAgICAgICAgZW5kLT5uZXh0XyA9IGItPm5leHRfLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBiLT5uZXh0Xy0+bmV4dF8gPSBwcmV2LT5uZXh0XzsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IG5leHQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfX19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9leHRyYWN0X2tleS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZTdhYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9FWFRSQUNUX0tFWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9FWFRSQUNUX0tFWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHVub3JkZXJlZCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vIGtleSBleHRyYWN0b3JzCi0gICAgLy8KLSAgICAvLyBubyB0aHJvdwotICAgIC8vCi0gICAgLy8gJ2V4dHJhY3Rfa2V5JyBpcyBjYWxsZWQgd2l0aCB0aGUgZW1wbGFjZSBwYXJhbWV0ZXJzIHRvIHJldHVybiBhCi0gICAgLy8ga2V5IGlmIGF2YWlsYWJsZSBvciAnbm9fa2V5JyBpcyBvbmUgaXNuJ3QgYW5kIHdpbGwgbmVlZCB0byBiZQotICAgIC8vIGNvbnN0cnVjdGVkLiBUaGlzIGNvdWxkIGJlIGRvbmUgYnkgb3ZlcmxvYWRpbmcgdGhlIGVtcGxhY2UgaW1wbGVtZW50YXRpb24KLSAgICAvLyBmb3IgdGhlIGRpZmZlcmVudCBjYXNlcywgYnV0IHRoYXQncyBhIGJpdCB0cmlja3kgb24gY29tcGlsZXJzIHdpdGhvdXQKLSAgICAvLyB2YXJpYWRpYyB0ZW1wbGF0ZXMuCi0KLSAgICBzdHJ1Y3Qgbm9fa2V5IHsKLSAgICAgICAgbm9fa2V5KCkge30KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IG5vX2tleShUIGNvbnN0Jikge30KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaXNfa2V5IHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQyPgotICAgICAgICBzdGF0aWMgY2hvaWNlMTo6dHlwZSB0ZXN0KFQyIGNvbnN0Jik7Ci0gICAgICAgIHN0YXRpYyBjaG9pY2UyOjp0eXBlIHRlc3QoS2V5IGNvbnN0Jik7Ci0gICAgICAgIAotICAgICAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YodGVzdChuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VD4oKSkpID09Ci0gICAgICAgICAgICBzaXplb2YoY2hvaWNlMjo6dHlwZSkgfTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWZfdHJ1ZTx2YWx1ZT46OgotICAgICAgICAgICAgTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW48S2V5IGNvbnN0Jiwgbm9fa2V5Pjo6dHlwZSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWVUeXBlPgotICAgIHN0cnVjdCBzZXRfZXh0cmFjdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSBrZXlfdHlwZTsKLQotICAgICAgICBzdGF0aWMga2V5X3R5cGUgY29uc3QmIGV4dHJhY3Qoa2V5X3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0gICAgICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmdzIGNvbnN0Ji4uLikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJnIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmcxIGNvbnN0JiwgQXJnMiBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFZhbHVlVHlwZT4KLSAgICBzdHJ1Y3QgbWFwX2V4dHJhY3RvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2NvbnN0PEtleT46OnR5cGUga2V5X3R5cGU7Ci0KLSAgICAgICAgc3RhdGljIGtleV90eXBlIGNvbnN0JiBleHRyYWN0KHZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2LmZpcnN0OwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFNlY29uZD4KLSAgICAgICAgc3RhdGljIGtleV90eXBlIGNvbnN0JiBleHRyYWN0KHN0ZDo6cGFpcjxrZXlfdHlwZSwgU2Vjb25kPiBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHYuZmlyc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU2Vjb25kPgotICAgICAgICBzdGF0aWMga2V5X3R5cGUgY29uc3QmIGV4dHJhY3QoCi0gICAgICAgICAgICBzdGQ6OnBhaXI8a2V5X3R5cGUgY29uc3QsIFNlY29uZD4gY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2LmZpcnN0OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZzE+Ci0gICAgICAgIHN0YXRpYyBrZXlfdHlwZSBjb25zdCYgZXh0cmFjdChrZXlfdHlwZSBjb25zdCYgaywgQXJnMSBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBrOwotICAgICAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJncyBjb25zdCYuLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotI2Vsc2UKLQotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJnIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZywgY2xhc3MgQXJnMT4KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KEFyZyBjb25zdCYsIEFyZzEgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9LRVlfRlJPTV9UVVBMRShuYW1lc3BhY2VfKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3RfdCwgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTw+IGNvbnN0JiwgVDIgY29uc3QmKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFQyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBpc19rZXk8a2V5X3R5cGUsIFQ+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZXh0cmFjdChuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPFQ+IGNvbnN0JiBrLCBUMiBjb25zdCYpICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIGlzX2tleTxrZXlfdHlwZSwgVD46OnR5cGUoICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIGdldDwwPihrKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0KLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfS0VZX0ZST01fVFVQTEUobmFtZXNwYWNlXykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3RfdCwgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTw+IGNvbnN0JikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBpc19rZXk8a2V5X3R5cGUsIFQ+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZXh0cmFjdChuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPFQ+IGNvbnN0JiBrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIGlzX2tleTxrZXlfdHlwZSwgVD46OnR5cGUoICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIGdldDwwPihrKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0KLQotI2VuZGlmCi0KLU5ETkJPT1NUX1VOT1JERVJFRF9LRVlfRlJPTV9UVVBMRShuZG5ib29zdDo6KQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKQotTkROQk9PU1RfVU5PUkRFUkVEX0tFWV9GUk9NX1RVUExFKHN0ZDo6KQotI2VuZGlmCi0gICAgfTsKLX19fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ZjRjZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwOC0yMDExIERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotbmFtZXNwYWNlIHVub3JkZXJlZAotewotICAgIHN0cnVjdCBwaWVjZXdpc2VfY29uc3RydWN0X3Qge307Ci0gICAgY29uc3QgcGllY2V3aXNlX2NvbnN0cnVjdF90IHBpZWNld2lzZV9jb25zdHJ1Y3QgPSBwaWVjZXdpc2VfY29uc3RydWN0X3QoKTsKLX0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY0MTQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODYxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0FMTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9BTExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2J1Y2tldHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPGNtYXRoPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX0RFUFJFQ0FURURfRVFVQUxJVFkpCi0KLSNpZiBkZWZpbmVkKF9fRURHX18pCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0RNQ19fKQotI3ByYWdtYSBtZXNzYWdlKCJXYXJuaW5nOiBORE5CT09TVF9VTk9SREVSRURfREVQUkVDQVRFRF9FUVVBTElUWSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiIpCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKSB8fCBcCi0gICAgZGVmaW5lZChfX1NVTlBST19DQykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQotI3dhcm5pbmcgIk5ETkJPT1NUX1VOT1JERVJFRF9ERVBSRUNBVEVEX0VRVUFMSVRZIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIgotI2VuZGlmCi0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gY29udmVydCBkb3VibGUgdG8gc3RkOjpzaXplX3QKLQotICAgIGlubGluZSBzdGQ6OnNpemVfdCBkb3VibGVfdG9fc2l6ZShkb3VibGUgZikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmID49IHN0YXRpY19jYXN0PGRvdWJsZT4oCi0gICAgICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCkoKSkgPwotICAgICAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjptYXgpKCkgOgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGYpOwotICAgIH0KLQotICAgIC8vIFRoZSBzcGFjZSB1c2VkIHRvIHN0b3JlIHZhbHVlcyBpbiBhIG5vZGUuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIHN0cnVjdCB2YWx1ZV9iYXNlCi0gICAgewotICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjphbGlnbmVkX3N0b3JhZ2U8Ci0gICAgICAgICAgICBzaXplb2YodmFsdWVfdHlwZSksCi0gICAgICAgICAgICBuZG5ib29zdDo6YWxpZ25tZW50X29mPHZhbHVlX3R5cGU+Ojp2YWx1ZT46OnR5cGUgZGF0YV87Ci0KLSAgICAgICAgdm9pZCogYWRkcmVzcygpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgdmFsdWUoKSB7Ci0gICAgICAgICAgICByZXR1cm4gKihWYWx1ZVR5cGUqKSB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSogdmFsdWVfcHRyKCkgewotICAgICAgICAgICAgcmV0dXJuIChWYWx1ZVR5cGUqKSB0aGlzOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHZhbHVlX2Jhc2UmIG9wZXJhdG9yPSh2YWx1ZV9iYXNlIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlQWxsb2M+Ci0gICAgc3RydWN0IGNvcHlfbm9kZXMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPE5vZGVBbGxvYz4KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLQotICAgICAgICBub2RlX2NvbnN0cnVjdG9yPE5vZGVBbGxvYz4gY29uc3RydWN0b3I7Ci0KLSAgICAgICAgZXhwbGljaXQgY29weV9ub2RlcyhOb2RlQWxsb2MmIGEpIDogY29uc3RydWN0b3IoYSkge30KLQotICAgICAgICB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgY3JlYXRlKAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6dmFsdWVfdHlwZTo6dmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0b3IuY29uc3RydWN0X3dpdGhfdmFsdWUyKHYpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yLnJlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZUFsbG9jPgotICAgIHN0cnVjdCBtb3ZlX25vZGVzCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxOb2RlQWxsb2M+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0KLSAgICAgICAgbm9kZV9jb25zdHJ1Y3RvcjxOb2RlQWxsb2M+IGNvbnN0cnVjdG9yOwotCi0gICAgICAgIGV4cGxpY2l0IG1vdmVfbm9kZXMoTm9kZUFsbG9jJiBhKSA6IGNvbnN0cnVjdG9yKGEpIHt9Ci0KLSAgICAgICAgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIGNyZWF0ZSgKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnZhbHVlX3R5cGU6OnZhbHVlX3R5cGUmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLmNvbnN0cnVjdF93aXRoX3ZhbHVlMihuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3IucmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCdWNrZXRzPgotICAgIHN0cnVjdCBhc3NpZ25fbm9kZXMKLSAgICB7Ci0gICAgICAgIG5vZGVfaG9sZGVyPHR5cGVuYW1lIEJ1Y2tldHM6Om5vZGVfYWxsb2NhdG9yPiBob2xkZXI7Ci0KLSAgICAgICAgZXhwbGljaXQgYXNzaWduX25vZGVzKEJ1Y2tldHMmIGIpIDogaG9sZGVyKGIpIHt9Ci0KLSAgICAgICAgdHlwZW5hbWUgQnVja2V0czo6bm9kZV9wb2ludGVyIGNyZWF0ZSgKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBCdWNrZXRzOjp2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaG9sZGVyLmNvcHlfb2Yodik7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ1Y2tldHM+Ci0gICAgc3RydWN0IG1vdmVfYXNzaWduX25vZGVzCi0gICAgewotICAgICAgICBub2RlX2hvbGRlcjx0eXBlbmFtZSBCdWNrZXRzOjpub2RlX2FsbG9jYXRvcj4gaG9sZGVyOwotCi0gICAgICAgIGV4cGxpY2l0IG1vdmVfYXNzaWduX25vZGVzKEJ1Y2tldHMmIGIpIDogaG9sZGVyKGIpIHt9Ci0KLSAgICAgICAgdHlwZW5hbWUgQnVja2V0czo6bm9kZV9wb2ludGVyIGNyZWF0ZSgKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBCdWNrZXRzOjp2YWx1ZV90eXBlJiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaG9sZGVyLm1vdmVfY29weV9vZih2KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+Ci0gICAgc3RydWN0IHRhYmxlIDoKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpmdW5jdGlvbnM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6aGFzaGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OmtleV9lcXVhbD4KLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdGFibGUodGFibGUgY29uc3QmKTsKLSAgICAgICAgdGFibGUmIG9wZXJhdG9yPSh0YWJsZSBjb25zdCYpOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpoYXNoZXIgaGFzaGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjprZXlfZXF1YWwga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6ZXh0cmFjdG9yIGV4dHJhY3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjp0YWJsZSB0YWJsZV9pbXBsOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpwb2xpY3kgcG9saWN5OwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpmdW5jdGlvbnM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6aGFzaGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OmtleV9lcXVhbD4gZnVuY3Rpb25zOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZ1bmN0aW9uczo6c2V0X2hhc2hfZnVuY3Rpb25zIHNldF9oYXNoX2Z1bmN0aW9uczsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjphbGxvY2F0b3IgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICByZWJpbmRfd3JhcDxhbGxvY2F0b3IsIG5vZGU+Ojp0eXBlIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICByZWJpbmRfd3JhcDxhbGxvY2F0b3IsIGJ1Y2tldD46OnR5cGUgYnVja2V0X2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8bm9kZV9hbGxvY2F0b3I+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGJ1Y2tldF9hbGxvY2F0b3I+Ci0gICAgICAgICAgICBidWNrZXRfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmNvbnN0X3BvaW50ZXIKLSAgICAgICAgICAgIGNvbnN0X25vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBidWNrZXRfYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlcgotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpub2RlX2NvbnN0cnVjdG9yPG5vZGVfYWxsb2NhdG9yPgotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Ci0gICAgICAgICAgICBpdGVyYXRvcjxub2RlPiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OgotICAgICAgICAgICAgY19pdGVyYXRvcjxub2RlLCBjb25zdF9ub2RlX3BvaW50ZXI+IGNfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjoKLSAgICAgICAgICAgIGxfaXRlcmF0b3I8bm9kZSwgcG9saWN5PiBsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Ci0gICAgICAgICAgICBjbF9pdGVyYXRvcjxub2RlLCBjb25zdF9ub2RlX3BvaW50ZXIsIHBvbGljeT4gY2xfaXRlcmF0b3I7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIE1lbWJlcnMKLQotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbXByZXNzZWQ8YnVja2V0X2FsbG9jYXRvciwgbm9kZV9hbGxvY2F0b3I+Ci0gICAgICAgICAgICBhbGxvY2F0b3JzXzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2NvdW50XzsKLSAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZV87Ci0gICAgICAgIGZsb2F0IG1sZl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG1heF9sb2FkXzsKLSAgICAgICAgYnVja2V0X3BvaW50ZXIgYnVja2V0c187Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIERhdGEgYWNjZXNzCi0KLSAgICAgICAgYnVja2V0X2FsbG9jYXRvciBjb25zdCYgYnVja2V0X2FsbG9jKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvcnNfLmZpcnN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgbm9kZV9hbGxvYygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3JzXy5zZWNvbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1Y2tldF9hbGxvY2F0b3ImIGJ1Y2tldF9hbGxvYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3JzXy5maXJzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbm9kZV9hbGxvY2F0b3ImIG5vZGVfYWxsb2MoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yc18uc2Vjb25kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBtYXhfYnVja2V0X2NvdW50KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgLy8gLTEgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXJ0IGJ1Y2tldC4KLSAgICAgICAgICAgIHJldHVybiBwb2xpY3k6OnByZXZfYnVja2V0X2NvdW50KAotICAgICAgICAgICAgICAgIGJ1Y2tldF9hbGxvY2F0b3JfdHJhaXRzOjptYXhfc2l6ZShidWNrZXRfYWxsb2MoKSkgLSAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1Y2tldF9wb2ludGVyIGdldF9idWNrZXQoc3RkOjpzaXplX3QgYnVja2V0X2luZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoYnVja2V0c18pOwotICAgICAgICAgICAgcmV0dXJuIGJ1Y2tldHNfICsgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgICBsaW5rX3BvaW50ZXIgZ2V0X3ByZXZpb3VzX3N0YXJ0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdldF9idWNrZXQoYnVja2V0X2NvdW50XyktPmZpcnN0X2Zyb21fc3RhcnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxpbmtfcG9pbnRlciBnZXRfcHJldmlvdXNfc3RhcnQoc3RkOjpzaXplX3QgYnVja2V0X2luZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0X2J1Y2tldChidWNrZXRfaW5kZXgpLT5uZXh0XzsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNpemVfID8gaXRlcmF0b3IoZ2V0X3ByZXZpb3VzX3N0YXJ0KCktPm5leHRfKSA6IGl0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBiZWdpbihzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc2l6ZV8pIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSBnZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBwcmV2ID8gaXRlcmF0b3IocHJldi0+bmV4dF8pIDogaXRlcmF0b3IoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF90b19idWNrZXQoc3RkOjpzaXplX3QgaGFzaCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBvbGljeTo6dG9fYnVja2V0KGJ1Y2tldF9jb3VudF8sIGhhc2gpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgbG9hZF9mYWN0b3IoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoYnVja2V0X2NvdW50XyAhPSAwKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6ZV8pCi0gICAgICAgICAgICAgICAgLyBzdGF0aWNfY2FzdDxmbG9hdD4oYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfc2l6ZShzdGQ6OnNpemVfdCBpbmRleCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaXRlcmF0b3IgaXQgPSBiZWdpbihpbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWl0Lm5vZGVfKSByZXR1cm4gMDsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgICAgICAgICAgd2hpbGUoaXQubm9kZV8gJiYgaGFzaF90b19idWNrZXQoaXQubm9kZV8tPmhhc2hfKSA9PSBpbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBMb2FkIG1ldGhvZHMKLQotICAgICAgICBzdGQ6OnNpemVfdCBtYXhfc2l6ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgCi0gICAgICAgICAgICAvLyBzaXplIDwgbWxmXyAqIGNvdW50Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkb3VibGVfdG9fc2l6ZShjZWlsKAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1sZl8pICoKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXhfYnVja2V0X2NvdW50KCkpCi0gICAgICAgICAgICAgICAgKSkgLSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByZWNhbGN1bGF0ZV9tYXhfbG9hZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgCi0gICAgICAgICAgICAvLyBGcm9tIDYuMy4xLzEzOgotICAgICAgICAgICAgLy8gT25seSByZXNpemUgd2hlbiBzaXplID49IG1sZl8gKiBjb3VudAotICAgICAgICAgICAgbWF4X2xvYWRfID0gYnVja2V0c18gPyBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRvdWJsZV90b19zaXplKGNlaWwoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWxmXykgKgotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGJ1Y2tldF9jb3VudF8pCi0gICAgICAgICAgICAgICAgKSkgOiAwOwotCi0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1heF9sb2FkX2ZhY3RvcihmbG9hdCB6KQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoeiA+IDApOwotICAgICAgICAgICAgbWxmXyA9IChzdGQ6Om1heCkoeiwgbWluaW11bV9tYXhfbG9hZF9mYWN0b3IpOwotICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IG1pbl9idWNrZXRzX2Zvcl9zaXplKHN0ZDo6c2l6ZV90IHNpemUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChtbGZfID49IG1pbmltdW1fbWF4X2xvYWRfZmFjdG9yKTsKLSAgICAKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgCi0gICAgICAgICAgICAvLyBGcm9tIDYuMy4xLzEzOgotICAgICAgICAgICAgLy8gc2l6ZSA8IG1sZl8gKiBjb3VudAotICAgICAgICAgICAgLy8gPT4gY291bnQgPiBzaXplIC8gbWxmXwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIE9yIGZyb20gcmVoYXNoIHBvc3QtY29uZGl0aW9uOgotICAgICAgICAgICAgLy8gY291bnQgPiBzaXplIC8gbWxmXwotCi0gICAgICAgICAgICByZXR1cm4gcG9saWN5OjpuZXdfYnVja2V0X2NvdW50KAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZG91YmxlX3RvX3NpemUoZmxvb3IoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2l6ZSkgLwotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1sZl8pKSkgKyAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKLQotICAgICAgICB0YWJsZShzdGQ6OnNpemVfdCBudW1fYnVja2V0cywKLSAgICAgICAgICAgICAgICBoYXNoZXIgY29uc3QmIGhmLAotICAgICAgICAgICAgICAgIGtleV9lcXVhbCBjb25zdCYgZXEsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEpIDoKLSAgICAgICAgICAgIGZ1bmN0aW9ucyhoZiwgZXEpLAotICAgICAgICAgICAgYWxsb2NhdG9yc18oYSxhKSwKLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8ocG9saWN5OjpuZXdfYnVja2V0X2NvdW50KG51bV9idWNrZXRzKSksCi0gICAgICAgICAgICBzaXplXygwKSwKLSAgICAgICAgICAgIG1sZl8oMS4wZiksCi0gICAgICAgICAgICBtYXhfbG9hZF8oMCksCi0gICAgICAgICAgICBidWNrZXRzXygpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdGFibGUodGFibGUgY29uc3QmIHgsIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbnMoeCksCi0gICAgICAgICAgICBhbGxvY2F0b3JzXyhhLGEpLAotICAgICAgICAgICAgYnVja2V0X2NvdW50Xyh4Lm1pbl9idWNrZXRzX2Zvcl9zaXplKHguc2l6ZV8pKSwKLSAgICAgICAgICAgIHNpemVfKDApLAotICAgICAgICAgICAgbWxmXyh4Lm1sZl8pLAotICAgICAgICAgICAgbWF4X2xvYWRfKDApLAotICAgICAgICAgICAgYnVja2V0c18oKQotICAgICAgICB7fQotCi0gICAgICAgIHRhYmxlKHRhYmxlJiB4LCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pIDoKLSAgICAgICAgICAgIGZ1bmN0aW9ucyh4LCBtKSwKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfKHguYWxsb2NhdG9yc18sIG0pLAotICAgICAgICAgICAgYnVja2V0X2NvdW50Xyh4LmJ1Y2tldF9jb3VudF8pLAotICAgICAgICAgICAgc2l6ZV8oeC5zaXplXyksCi0gICAgICAgICAgICBtbGZfKHgubWxmXyksCi0gICAgICAgICAgICBtYXhfbG9hZF8oeC5tYXhfbG9hZF8pLAotICAgICAgICAgICAgYnVja2V0c18oeC5idWNrZXRzXykKLSAgICAgICAgewotICAgICAgICAgICAgeC5idWNrZXRzXyA9IGJ1Y2tldF9wb2ludGVyKCk7Ci0gICAgICAgICAgICB4LnNpemVfID0gMDsKLSAgICAgICAgICAgIHgubWF4X2xvYWRfID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHRhYmxlKHRhYmxlJiB4LCBub2RlX2FsbG9jYXRvciBjb25zdCYgYSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pIDoKLSAgICAgICAgICAgIGZ1bmN0aW9ucyh4LCBtKSwKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfKGEsIGEpLAotICAgICAgICAgICAgYnVja2V0X2NvdW50Xyh4LmJ1Y2tldF9jb3VudF8pLAotICAgICAgICAgICAgc2l6ZV8oMCksCi0gICAgICAgICAgICBtbGZfKHgubWxmXyksCi0gICAgICAgICAgICBtYXhfbG9hZF8oeC5tYXhfbG9hZF8pLAotICAgICAgICAgICAgYnVja2V0c18oKQotICAgICAgICB7fQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBJbml0aWFsaXNhdGlvbi4KLQotICAgICAgICB2b2lkIGluaXQodGFibGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh4LnNpemVfKSB7Ci0gICAgICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMoYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgICAgICAgICAgY29weV9ub2Rlczxub2RlX2FsbG9jYXRvcj4gY29weShub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIHRhYmxlX2ltcGw6OmZpbGxfYnVja2V0cyh4LmJlZ2luKCksICp0aGlzLCBjb3B5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9pbml0KHRhYmxlJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihub2RlX2FsbG9jKCkgPT0geC5ub2RlX2FsbG9jKCkpIHsKLSAgICAgICAgICAgICAgICBtb3ZlX2J1Y2tldHNfZnJvbSh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYoeC5zaXplXykgewotICAgICAgICAgICAgICAgIC8vIFRPRE86IENvdWxkIHBpY2sgbmV3IGJ1Y2tldCBzaXplPwotICAgICAgICAgICAgICAgIGNyZWF0ZV9idWNrZXRzKGJ1Y2tldF9jb3VudF8pOwotCi0gICAgICAgICAgICAgICAgbW92ZV9ub2Rlczxub2RlX2FsbG9jYXRvcj4gbW92ZShub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIG5vZGVfaG9sZGVyPG5vZGVfYWxsb2NhdG9yPiBub2Rlcyh4KTsKLSAgICAgICAgICAgICAgICB0YWJsZV9pbXBsOjpmaWxsX2J1Y2tldHMobm9kZXMuYmVnaW4oKSwgKnRoaXMsIG1vdmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIENyZWF0ZSBidWNrZXRzCi0KLSAgICAgICAgdm9pZCBjcmVhdGVfYnVja2V0cyhzdGQ6OnNpemVfdCBuZXdfY291bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YXJyYXlfY29uc3RydWN0b3I8YnVja2V0X2FsbG9jYXRvcj4KLSAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihidWNrZXRfYWxsb2MoKSk7Ci0gICAgCi0gICAgICAgICAgICAvLyBDcmVhdGVzIGFuIGV4dHJhIGJ1Y2tldCB0byBhY3QgYXMgdGhlIHN0YXJ0IG5vZGUuCi0gICAgICAgICAgICBjb25zdHJ1Y3Rvci5jb25zdHJ1Y3QoYnVja2V0KCksIG5ld19jb3VudCArIDEpOwotCi0gICAgICAgICAgICBpZiAoYnVja2V0c18pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgbm9kZXMgdG8gdGhlIG5ldyBidWNrZXRzLCBpbmNsdWRpbmcgdGhlIGR1bW15Ci0gICAgICAgICAgICAgICAgLy8gbm9kZSBpZiB0aGVyZSBpcyBvbmUuCi0gICAgICAgICAgICAgICAgKGNvbnN0cnVjdG9yLmdldCgpICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KG5ld19jb3VudCkpLT5uZXh0XyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAoYnVja2V0c18gKyBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVja2V0X2NvdW50XykpLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBkZXN0cm95X2J1Y2tldHMoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJ1Y2tldDo6ZXh0cmFfbm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEobm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdCgpOwotCi0gICAgICAgICAgICAgICAgKGNvbnN0cnVjdG9yLmdldCgpICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KG5ld19jb3VudCkpLT5uZXh0XyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBhLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYnVja2V0X2NvdW50XyA9IG5ld19jb3VudDsKLSAgICAgICAgICAgIGJ1Y2tldHNfID0gY29uc3RydWN0b3IucmVsZWFzZSgpOwotICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBTd2FwIGFuZCBNb3ZlCi0KLSAgICAgICAgdm9pZCBzd2FwX2FsbG9jYXRvcnModGFibGUmIG90aGVyLCBmYWxzZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gMjMuMi4xLjgsIGlmIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCBpcwotICAgICAgICAgICAgLy8gZmFsc2UgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQgdW5sZXNzIHRoZSBhbGxvY2F0b3JzCi0gICAgICAgICAgICAvLyBhcmUgZXF1YWwuCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobm9kZV9hbGxvYygpID09IG90aGVyLm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN3YXBfYWxsb2NhdG9ycyh0YWJsZSYgb3RoZXIsIHRydWVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgYWxsb2NhdG9yc18uc3dhcChvdGhlci5hbGxvY2F0b3JzXyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPbmx5IHN3YXBzIHRoZSBhbGxvY2F0b3JzIGlmIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcAotICAgICAgICB2b2lkIHN3YXAodGFibGUmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBvcDEoKnRoaXMsIHgpOwotICAgICAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zIG9wMih4LCAqdGhpcyk7Ci0KLSAgICAgICAgICAgIC8vIEkgdGhpbmsgc3dhcCBjYW4gdGhyb3cgaWYgUHJvcGFnYXRlOjp2YWx1ZSwKLSAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBhbGxvY2F0b3JzJyBzd2FwIGNhbiB0aHJvdy4gTm90IHN1cmUgdGhvdWdoLgotICAgICAgICAgICAgc3dhcF9hbGxvY2F0b3JzKHgsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHJhaXRzPG5vZGVfYWxsb2NhdG9yPjo6Ci0gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWU+KCkpOwotCi0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChidWNrZXRzXywgeC5idWNrZXRzXyk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChidWNrZXRfY291bnRfLCB4LmJ1Y2tldF9jb3VudF8pOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoc2l6ZV8sIHguc2l6ZV8pOwotICAgICAgICAgICAgc3RkOjpzd2FwKG1sZl8sIHgubWxmXyk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobWF4X2xvYWRfLCB4Lm1heF9sb2FkXyk7Ci0gICAgICAgICAgICBvcDEuY29tbWl0KCk7Ci0gICAgICAgICAgICBvcDIuY29tbWl0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYnVja2V0c19mcm9tKHRhYmxlJiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGVfYWxsb2MoKSA9PSBvdGhlci5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCFidWNrZXRzXyk7Ci0gICAgICAgICAgICBidWNrZXRzXyA9IG90aGVyLmJ1Y2tldHNfOwotICAgICAgICAgICAgYnVja2V0X2NvdW50XyA9IG90aGVyLmJ1Y2tldF9jb3VudF87Ci0gICAgICAgICAgICBzaXplXyA9IG90aGVyLnNpemVfOwotICAgICAgICAgICAgb3RoZXIuYnVja2V0c18gPSBidWNrZXRfcG9pbnRlcigpOwotICAgICAgICAgICAgb3RoZXIuc2l6ZV8gPSAwOwotICAgICAgICAgICAgb3RoZXIubWF4X2xvYWRfID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBEZWxldGUvZGVzdHJ1Y3QKLQotICAgICAgICB+dGFibGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGVfYnVja2V0cygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZWxldGVfbm9kZShsaW5rX3BvaW50ZXIgcHJldikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgIHByZXYtPm5leHRfID0gbi0+bmV4dF87Ci0KLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveV92YWx1ZV9pbXBsKG5vZGVfYWxsb2MoKSwKLSAgICAgICAgICAgICAgICBuLT52YWx1ZV9wdHIoKSk7Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3kobm9kZV9hbGxvYygpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCpuKSk7Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlYWxsb2NhdGUobm9kZV9hbGxvYygpLCBuLCAxKTsKLSAgICAgICAgICAgIC0tc2l6ZV87Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBkZWxldGVfbm9kZXMobGlua19wb2ludGVyIHByZXYsIGxpbmtfcG9pbnRlciBlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChwcmV2LT5uZXh0XyAhPSBlbmQpOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBkZWxldGVfbm9kZShwcmV2KTsKLSAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgfSB3aGlsZSAocHJldi0+bmV4dF8gIT0gZW5kKTsKLQotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZWxldGVfYnVja2V0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKGJ1Y2tldHNfKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNpemVfKSBkZWxldGVfbm9kZXMoZ2V0X3ByZXZpb3VzX3N0YXJ0KCksIGxpbmtfcG9pbnRlcigpKTsKLQotICAgICAgICAgICAgICAgIGlmIChidWNrZXQ6OmV4dHJhX25vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9idWNrZXQoYnVja2V0X2NvdW50XyktPm5leHRfKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZXN0cm95KG5vZGVfYWxsb2MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCpuKSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVhbGxvY2F0ZShub2RlX2FsbG9jKCksIG4sIDEpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGRlc3Ryb3lfYnVja2V0cygpOwotICAgICAgICAgICAgICAgIGJ1Y2tldHNfID0gYnVja2V0X3BvaW50ZXIoKTsKLSAgICAgICAgICAgICAgICBtYXhfbG9hZF8gPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIXNpemVfKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXNpemVfKSByZXR1cm47Ci0KLSAgICAgICAgICAgIGRlbGV0ZV9ub2RlcyhnZXRfcHJldmlvdXNfc3RhcnQoKSwgbGlua19wb2ludGVyKCkpOwotICAgICAgICAgICAgY2xlYXJfYnVja2V0cygpOwotCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIXNpemVfKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXJfYnVja2V0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGVuZCA9IGdldF9idWNrZXQoYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgICAgICBmb3IoYnVja2V0X3BvaW50ZXIgaXQgPSBidWNrZXRzXzsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGl0LT5uZXh0XyA9IG5vZGVfcG9pbnRlcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZXN0cm95X2J1Y2tldHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBidWNrZXRfcG9pbnRlciBlbmQgPSBnZXRfYnVja2V0KGJ1Y2tldF9jb3VudF8gKyAxKTsKLSAgICAgICAgICAgIGZvcihidWNrZXRfcG9pbnRlciBpdCA9IGJ1Y2tldHNfOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnVja2V0X2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3koYnVja2V0X2FsbG9jKCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoKml0KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJ1Y2tldF9hbGxvY2F0b3JfdHJhaXRzOjpkZWFsbG9jYXRlKGJ1Y2tldF9hbGxvYygpLAotICAgICAgICAgICAgICAgIGJ1Y2tldHNfLCBidWNrZXRfY291bnRfICsgMSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRml4IGJ1Y2tldHMgYWZ0ZXIgZGVsZXRlCi0gICAgICAgIC8vCi0KLSAgICAgICAgc3RkOjpzaXplX3QgZml4X2J1Y2tldChzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgsIGxpbmtfcG9pbnRlciBwcmV2KQotICAgICAgICB7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgZW5kID0gcHJldi0+bmV4dF87Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgyID0gYnVja2V0X2luZGV4OwotCi0gICAgICAgICAgICBpZiAoZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJ1Y2tldF9pbmRleDIgPSBoYXNoX3RvX2J1Y2tldCgKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihlbmQpLT5oYXNoXyk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiBiZWdpbiBhbmQgZW5kIGFyZSBpbiB0aGUgc2FtZSBidWNrZXQsIHRoZW4KLSAgICAgICAgICAgICAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCi0gICAgICAgICAgICAgICAgaWYgKGJ1Y2tldF9pbmRleCA9PSBidWNrZXRfaW5kZXgyKSByZXR1cm4gYnVja2V0X2luZGV4MjsKLQotICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgYnVja2V0IGNvbnRhaW5pbmcgZW5kLgotICAgICAgICAgICAgICAgIGdldF9idWNrZXQoYnVja2V0X2luZGV4MiktPm5leHRfID0gcHJldjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBidWNrZXQgaXMgbm93IGVtcHR5LgotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgdGhpc19idWNrZXQgPSBnZXRfYnVja2V0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICBpZiAodGhpc19idWNrZXQtPm5leHRfID09IHByZXYpCi0gICAgICAgICAgICAgICAgdGhpc19idWNrZXQtPm5leHRfID0gbGlua19wb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBidWNrZXRfaW5kZXgyOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEFzc2lnbm1lbnQKLQotICAgICAgICB2b2lkIGFzc2lnbih0YWJsZSBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHRoaXMgIT0gbmRuYm9vc3Q6OmFkZHJlc3NvZih4KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhc3NpZ24oeCwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxub2RlX2FsbG9jYXRvcj46OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQ6OnZhbHVlPigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYXNzaWduKHRhYmxlIGNvbnN0JiB4LCBmYWxzZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBTdHJvbmcgZXhjZXB0aW9uIHNhZmV0eS4KLSAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBuZXdfZnVuY190aGlzKCp0aGlzLCB4KTsKLSAgICAgICAgICAgIG5ld19mdW5jX3RoaXMuY29tbWl0KCk7Ci0gICAgICAgICAgICBtbGZfID0geC5tbGZfOwotICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLQotICAgICAgICAgICAgaWYgKCFzaXplXyAmJiAheC5zaXplXykgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoeC5zaXplXyA+PSBtYXhfbG9hZF8pIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVfYnVja2V0cyhtaW5fYnVja2V0c19mb3Jfc2l6ZSh4LnNpemVfKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjbGVhcl9idWNrZXRzKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGFzc2lnbl9ub2RlcyB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGNvbnRhaW5lcidzIGVsZW1lbnRzLAotICAgICAgICAgICAgLy8gYXNzaWduaW5nIHRvIHRoZW0gaWYgcG9zc2libGUsIGFuZCBkZWxldGluZyBhbnkgdGhhdCBhcmUKLSAgICAgICAgICAgIC8vIGxlZnQgb3Zlci4KLSAgICAgICAgICAgIGFzc2lnbl9ub2Rlczx0YWJsZT4gYXNzaWduKCp0aGlzKTsKLSAgICAgICAgICAgIHRhYmxlX2ltcGw6OmZpbGxfYnVja2V0cyh4LmJlZ2luKCksICp0aGlzLCBhc3NpZ24pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhc3NpZ24odGFibGUgY29uc3QmIHgsIHRydWVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGVfYWxsb2MoKSA9PSB4Lm5vZGVfYWxsb2MoKSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvcnNfLmFzc2lnbih4LmFsbG9jYXRvcnNfKTsKLSAgICAgICAgICAgICAgICBhc3NpZ24oeCwgZmFsc2VfdHlwZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBuZXdfZnVuY190aGlzKCp0aGlzLCB4KTsKLQotICAgICAgICAgICAgICAgIC8vIERlbGV0ZSBldmVyeXRoaW5nIHdpdGggY3VycmVudCBhbGxvY2F0b3JzIGJlZm9yZSBhc3NpZ25pbmcKLSAgICAgICAgICAgICAgICAvLyB0aGUgbmV3IG9uZXMuCi0gICAgICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3JzXy5hc3NpZ24oeC5hbGxvY2F0b3JzXyk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb3B5IG92ZXIgb3RoZXIgZGF0YSwgYWxsIG5vIHRocm93LgotICAgICAgICAgICAgICAgIG5ld19mdW5jX3RoaXMuY29tbWl0KCk7Ci0gICAgICAgICAgICAgICAgbWxmXyA9IHgubWxmXzsKLSAgICAgICAgICAgICAgICBidWNrZXRfY291bnRfID0gbWluX2J1Y2tldHNfZm9yX3NpemUoeC5zaXplXyk7Ci0gICAgICAgICAgICAgICAgbWF4X2xvYWRfID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIEZpbmFsbHkgY29weSB0aGUgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgaWYgKHguc2l6ZV8pIHsKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMoYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlfbm9kZXM8bm9kZV9hbGxvY2F0b3I+IGNvcHkobm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICAgICAgdGFibGVfaW1wbDo6ZmlsbF9idWNrZXRzKHguYmVnaW4oKSwgKnRoaXMsIGNvcHkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9hc3NpZ24odGFibGUmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzICE9IG5kbmJvb3N0OjphZGRyZXNzb2YoeCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbW92ZV9hc3NpZ24oeCwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxub2RlX2FsbG9jYXRvcj46OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQ6OnZhbHVlPigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9hc3NpZ24odGFibGUmIHgsIHRydWVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfLm1vdmVfYXNzaWduKHguYWxsb2NhdG9yc18pOwotICAgICAgICAgICAgbW92ZV9hc3NpZ25fbm9fYWxsb2MoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYXNzaWduKHRhYmxlJiB4LCBmYWxzZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZV9hbGxvYygpID09IHgubm9kZV9hbGxvYygpKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgICAgICAgICBtb3ZlX2Fzc2lnbl9ub19hbGxvYyh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBuZXdfZnVuY190aGlzKCp0aGlzLCB4KTsKLSAgICAgICAgICAgICAgICBuZXdfZnVuY190aGlzLmNvbW1pdCgpOwotICAgICAgICAgICAgICAgIG1sZl8gPSB4Lm1sZl87Ci0gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLQotICAgICAgICAgICAgICAgIGlmICghc2l6ZV8gJiYgIXguc2l6ZV8pIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGlmICh4LnNpemVfID49IG1heF9sb2FkXykgewotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfYnVja2V0cyhtaW5fYnVja2V0c19mb3Jfc2l6ZSh4LnNpemVfKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjbGVhcl9idWNrZXRzKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gbW92ZV9hc3NpZ25fbm9kZXMgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBjb250YWluZXIncwotICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRzLCBhc3NpZ25pbmcgdG8gdGhlbSBpZiBwb3NzaWJsZSwgYW5kIGRlbGV0aW5nCi0gICAgICAgICAgICAgICAgLy8gYW55IHRoYXQgYXJlIGxlZnQgb3Zlci4KLSAgICAgICAgICAgICAgICBtb3ZlX2Fzc2lnbl9ub2Rlczx0YWJsZT4gYXNzaWduKCp0aGlzKTsKLSAgICAgICAgICAgICAgICBub2RlX2hvbGRlcjxub2RlX2FsbG9jYXRvcj4gbm9kZXMoeCk7Ci0gICAgICAgICAgICAgICAgdGFibGVfaW1wbDo6ZmlsbF9idWNrZXRzKG5vZGVzLmJlZ2luKCksICp0aGlzLCBhc3NpZ24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIG1vdmVfYXNzaWduX25vX2FsbG9jKHRhYmxlJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMgbmV3X2Z1bmNfdGhpcygqdGhpcywgeCk7Ci0gICAgICAgICAgICAvLyBObyB0aHJvdyBmcm9tIGhlcmUuCi0gICAgICAgICAgICBtbGZfID0geC5tbGZfOwotICAgICAgICAgICAgbWF4X2xvYWRfID0geC5tYXhfbG9hZF87Ci0gICAgICAgICAgICBtb3ZlX2J1Y2tldHNfZnJvbSh4KTsKLSAgICAgICAgICAgIG5ld19mdW5jX3RoaXMuY29tbWl0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBY2Nlc3NvcnMKLQotICAgICAgICBrZXlfdHlwZSBjb25zdCYgZ2V0X2tleSh2YWx1ZV90eXBlIGNvbnN0JiB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXh0cmFjdG9yOjpleHRyYWN0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaChrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBvbGljeTo6YXBwbHlfaGFzaCh0aGlzLT5oYXNoX2Z1bmN0aW9uKCksIGspOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmluZCBOb2RlCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgUHJlZD4KLSAgICAgICAgaXRlcmF0b3IgZ2VuZXJpY19maW5kX25vZGUoCi0gICAgICAgICAgICAgICAgS2V5IGNvbnN0JiBrLAotICAgICAgICAgICAgICAgIEhhc2ggY29uc3QmIGhmLAotICAgICAgICAgICAgICAgIFByZWQgY29uc3QmIGVxKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dGFibGVfaW1wbCBjb25zdCo+KHRoaXMpLT4KLSAgICAgICAgICAgICAgICBmaW5kX25vZGVfaW1wbChwb2xpY3k6OmFwcGx5X2hhc2goaGYsIGspLCBrLCBlcSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGUoCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2gsCi0gICAgICAgICAgICAgICAga2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsIGNvbnN0Kj4odGhpcyktPgotICAgICAgICAgICAgICAgIGZpbmRfbm9kZV9pbXBsKGtleV9oYXNoLCBrLCB0aGlzLT5rZXlfZXEoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGUoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsIGNvbnN0Kj4odGhpcyktPgotICAgICAgICAgICAgICAgIGZpbmRfbm9kZV9pbXBsKGhhc2goayksIGssIHRoaXMtPmtleV9lcSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGZpbmRfbWF0Y2hpbmdfbm9kZShpdGVyYXRvciBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPOiBEb2VzIHRoaXMgYXBwbHkgdG8gQysrMTE/Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gRm9yIHNvbWUgc3R1cGlkIHJlYXNvbiwgSSBkZWNpZGVkIHRvIHN1cHBvcnQgZXF1YWxpdHkgY29tcGFyaXNvbgotICAgICAgICAgICAgLy8gd2hlbiBkaWZmZXJlbnQgaGFzaCBmdW5jdGlvbnMgYXJlIHVzZWQuIFNvIEkgY2FuJ3QgdXNlIHRoZSBoYXNoCi0gICAgICAgICAgICAvLyB2YWx1ZSBmcm9tIHRoZSBub2RlIGhlcmUuCi0gICAgCi0gICAgICAgICAgICByZXR1cm4gZmluZF9ub2RlKGdldF9rZXkoKm4pKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlc2VydmUgYW5kIHJlaGFzaAotCi0gICAgICAgIHZvaWQgcmVzZXJ2ZV9mb3JfaW5zZXJ0KHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgdm9pZCByZWhhc2goc3RkOjpzaXplX3QpOwotICAgICAgICB2b2lkIHJlc2VydmUoc3RkOjpzaXplX3QpOwotICAgIH07Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gUmVzZXJ2ZSAmIFJlaGFzaAotCi0gICAgLy8gYmFzaWMgZXhjZXB0aW9uIHNhZmV0eQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBpbmxpbmUgdm9pZCB0YWJsZTxUeXBlcz46OnJlc2VydmVfZm9yX2luc2VydChzdGQ6OnNpemVfdCBzaXplKQotICAgIHsKLSAgICAgICAgaWYgKCFidWNrZXRzXykgewotICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMoKHN0ZDo6bWF4KShidWNrZXRfY291bnRfLAotICAgICAgICAgICAgICAgIG1pbl9idWNrZXRzX2Zvcl9zaXplKHNpemUpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCB0aGlzIHNob3VsZCBiZSAnc2l6ZSA+PSBtYXhfbG9hZF8nLAotICAgICAgICAvLyBidXQgSSB0aGluayB0aGlzIGlzIGJldHRlciwgZGVmZWN0IHJlcG9ydCBmaWxlZC4KLSAgICAgICAgZWxzZSBpZihzaXplID4gbWF4X2xvYWRfKSB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBudW1fYnVja2V0cwotICAgICAgICAgICAgICAgID0gbWluX2J1Y2tldHNfZm9yX3NpemUoKHN0ZDo6bWF4KShzaXplLAotICAgICAgICAgICAgICAgICAgICBzaXplXyArIChzaXplXyA+PiAxKSkpOwotCi0gICAgICAgICAgICBpZiAobnVtX2J1Y2tldHMgIT0gYnVja2V0X2NvdW50XykKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsKj4odGhpcyktPnJlaGFzaF9pbXBsKG51bV9idWNrZXRzKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGlmIGhhc2ggZnVuY3Rpb24gdGhyb3dzLCBiYXNpYyBleGNlcHRpb24gc2FmZXR5Ci0gICAgLy8gc3Ryb25nIG90aGVyd2lzZS4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBpbmxpbmUgdm9pZCB0YWJsZTxUeXBlcz46OnJlaGFzaChzdGQ6OnNpemVfdCBtaW5fYnVja2V0cykKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLSAgICAgICAgaWYoIXNpemVfKSB7Ci0gICAgICAgICAgICBkZWxldGVfYnVja2V0cygpOwotICAgICAgICAgICAgYnVja2V0X2NvdW50XyA9IHBvbGljeTo6bmV3X2J1Y2tldF9jb3VudChtaW5fYnVja2V0cyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtaW5fYnVja2V0cyA9IHBvbGljeTo6bmV3X2J1Y2tldF9jb3VudCgoc3RkOjptYXgpKG1pbl9idWNrZXRzLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZG91YmxlX3RvX3NpemUoZmxvb3IoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2l6ZV8pIC8KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtbGZfKSkpICsgMSkpOwotCi0gICAgICAgICAgICBpZihtaW5fYnVja2V0cyAhPSBidWNrZXRfY291bnRfKQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHRhYmxlX2ltcGwqPih0aGlzKS0+cmVoYXNoX2ltcGwobWluX2J1Y2tldHMpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIGlubGluZSB2b2lkIHRhYmxlPFR5cGVzPjo6cmVzZXJ2ZShzdGQ6OnNpemVfdCBudW1fZWxlbWVudHMpCi0gICAgewotICAgICAgICByZWhhc2goc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KAotICAgICAgICAgICAgc3RkOjpjZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4obnVtX2VsZW1lbnRzKSAvIG1sZl8pKSk7Ci0gICAgfQotfX19Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3VuaXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdW5pcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQxMzI1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdW5pcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9VTklRVUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfVU5JUVVFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXh0cmFjdF9rZXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4gc3RydWN0IHVuaXF1ZV9ub2RlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcHRyX25vZGU7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPiBzdHJ1Y3QgdGFibGVfaW1wbDsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCB1bmlxdWVfbm9kZSA6Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dmFsdWVfYmFzZTxUPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8Ci0gICAgICAgICAgICBBLCB1bmlxdWVfbm9kZTxBLCBUPiA+Ojp0eXBlOjpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBub2RlX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIGxpbmtfcG9pbnRlciBuZXh0XzsKLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF87Ci0KLSAgICAgICAgdW5pcXVlX25vZGUoKSA6Ci0gICAgICAgICAgICBuZXh0XygpLAotICAgICAgICAgICAgaGFzaF8oMCkKLSAgICAgICAge30KLQotICAgICAgICB2b2lkIGluaXQobm9kZV9wb2ludGVyKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHVuaXF1ZV9ub2RlJiBvcGVyYXRvcj0odW5pcXVlX25vZGUgY29uc3QmKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHB0cl9ub2RlIDoKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp2YWx1ZV9iYXNlPFQ+LAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0IGJ1Y2tldF9iYXNlOwotICAgICAgICB0eXBlZGVmIHB0cl9ub2RlPFQ+KiBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgcHRyX2J1Y2tldCogbGlua19wb2ludGVyOwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2hfOwotCi0gICAgICAgIHB0cl9ub2RlKCkgOgotICAgICAgICAgICAgYnVja2V0X2Jhc2UoKSwKLSAgICAgICAgICAgIGhhc2hfKDApCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdm9pZCBpbml0KG5vZGVfcG9pbnRlcikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBwdHJfbm9kZSYgb3BlcmF0b3I9KHB0cl9ub2RlIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIC8vIElmIHRoZSBhbGxvY2F0b3IgdXNlcyByYXcgcG9pbnRlcnMgdXNlIHB0cl9ub2RlCi0gICAgLy8gT3RoZXJ3aXNlIHVzZSBub2RlLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5vZGVQdHIsIHR5cGVuYW1lIEJ1Y2tldFB0cj4KLSAgICBzdHJ1Y3QgcGlja19ub2RlMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnVuaXF1ZV9ub2RlPEEsIFQ+IG5vZGU7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsIG5vZGU+Ojp0eXBlCi0gICAgICAgID46OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpidWNrZXQ8bm9kZV9wb2ludGVyPiBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHBpY2tfbm9kZTI8QSwgVCwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfbm9kZTxUPiosCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX25vZGU8VD4gbm9kZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIGJ1Y2tldCogbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcGlja19ub2RlCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9ub2RlPFQ+ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfbm9kZV90cmFpdHM7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfYnVja2V0X3RyYWl0czsKLQotICAgICAgICB0eXBlZGVmIHBpY2tfbm9kZTI8QSwgVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHRlbnRhdGl2ZV9ub2RlX3RyYWl0czo6cG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHRlbnRhdGl2ZV9idWNrZXRfdHJhaXRzOjpwb2ludGVyPiBwaWNrOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEgsIHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IHNldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldDxBLCBULCBILCBQPiB0eXBlczsKLQotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBUIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4gdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19ub2RlPGFsbG9jYXRvciwgdmFsdWVfdHlwZT4gcGljazsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZV9pbXBsPHR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldF9leHRyYWN0b3I8dmFsdWVfdHlwZT4gZXh0cmFjdG9yOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX3BvbGljeTo6dHlwZSBwb2xpY3k7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBNLCB0eXBlbmFtZSBILCB0eXBlbmFtZSBQPgotICAgIHN0cnVjdCBtYXAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYXA8QSwgSywgTSwgSCwgUD4gdHlwZXM7Ci0KLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SyBjb25zdCwgTT4gdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBLIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4KLSAgICAgICAgICAgIHRyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfbm9kZTxhbGxvY2F0b3IsIHZhbHVlX3R5cGU+IHBpY2s7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGVfaW1wbDx0eXBlcz4gdGFibGU7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYXBfZXh0cmFjdG9yPGtleV90eXBlLCB2YWx1ZV90eXBlPgotICAgICAgICAgICAgZXh0cmFjdG9yOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX3BvbGljeTo6dHlwZSBwb2xpY3k7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBzdHJ1Y3QgdGFibGVfaW1wbCA6IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU8VHlwZXM+Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU8VHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OnBvbGljeSBwb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfYWxsb2NhdG9yIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2FsbG9jYXRvcl90cmFpdHMgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpidWNrZXRfcG9pbnRlciBidWNrZXRfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6aGFzaGVyIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6a2V5X2VxdWFsIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6a2V5X3R5cGUga2V5X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfY29uc3RydWN0b3Igbm9kZV9jb25zdHJ1Y3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6ZXh0cmFjdG9yIGV4dHJhY3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNfaXRlcmF0b3IgY19pdGVyYXRvcjsKLQotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZV9yZXR1cm47Ci0KLSAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0KLSAgICAgICAgdGFibGVfaW1wbChzdGQ6OnNpemVfdCBuLAotICAgICAgICAgICAgICAgIGhhc2hlciBjb25zdCYgaGYsCi0gICAgICAgICAgICAgICAga2V5X2VxdWFsIGNvbnN0JiBlcSwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkKLSAgICAgICAgICA6IHRhYmxlKG4sIGhmLCBlcSwgYSkKLSAgICAgICAge30KLQotICAgICAgICB0YWJsZV9pbXBsKHRhYmxlX2ltcGwgY29uc3QmIHgpCi0gICAgICAgICAgOiB0YWJsZSh4LCBub2RlX2FsbG9jYXRvcl90cmFpdHM6OgotICAgICAgICAgICAgICAgIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oeC5ub2RlX2FsbG9jKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGFibGVfaW1wbCh0YWJsZV9pbXBsIGNvbnN0JiB4LAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKQotICAgICAgICAgIDogdGFibGUoeCwgYSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+aW5pdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRhYmxlX2ltcGwodGFibGVfaW1wbCYgeCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgOiB0YWJsZSh4LCBtKQotICAgICAgICB7fQotCi0gICAgICAgIHRhYmxlX2ltcGwodGFibGVfaW1wbCYgeCwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgOiB0YWJsZSh4LCBhLCBtKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tb3ZlX2luaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBY2Nlc3NvcnMKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBQcmVkPgotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGVfaW1wbCgKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCwKLSAgICAgICAgICAgICAgICBLZXkgY29uc3QmIGssCi0gICAgICAgICAgICAgICAgUHJlZCBjb25zdCYgZXEpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4gPSB0aGlzLT5iZWdpbihidWNrZXRfaW5kZXgpOwotCi0gICAgICAgICAgICBmb3IgKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbi5ub2RlXykgcmV0dXJuIG47Ci0KLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBub2RlX2hhc2ggPSBuLm5vZGVfLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpZiAoa2V5X2hhc2ggPT0gbm9kZV9oYXNoKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVxKGssIHRoaXMtPmdldF9rZXkoKm4pKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+aGFzaF90b19idWNrZXQobm9kZV9oYXNoKSAhPSBidWNrZXRfaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICArK247Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBjb3VudChrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmZpbmRfbm9kZShrKS5ub2RlXyA/IDEgOiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgYXQoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLT5zaXplXykgewotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGl0ID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgICAgIGlmIChpdC5ub2RlXykgcmV0dXJuICppdDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBzdGQ6Om91dF9vZl9yYW5nZSgiVW5hYmxlIHRvIGZpbmQga2V5IGluIHVub3JkZXJlZF9tYXAuIikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4KLSAgICAgICAgICAgIGVxdWFsX3JhbmdlKGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgbjIgPSBuOwotICAgICAgICAgICAgaWYgKG4yLm5vZGVfKSArK24yOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG4sIG4yKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGVxdWFscwotCi0gICAgICAgIGJvb2wgZXF1YWxzKHRhYmxlX2ltcGwgY29uc3QmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZih0aGlzLT5zaXplXyAhPSBvdGhlci5zaXplXykgcmV0dXJuIGZhbHNlOwotICAgIAotICAgICAgICAgICAgZm9yKGl0ZXJhdG9yIG4xID0gdGhpcy0+YmVnaW4oKTsgbjEubm9kZV87ICsrbjEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgbjIgPSBvdGhlci5maW5kX21hdGNoaW5nX25vZGUobjEpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFuMi5ub2RlXyB8fCAqbjEgIT0gKm4yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEVtcGxhY2UvSW5zZXJ0Ci0KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yIGFkZF9ub2RlKAotICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3ImIGEsCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuID0gYS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBuLT5oYXNoXyA9IGtleV9oYXNoOwotICAgIAotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgYiA9IHRoaXMtPmdldF9idWNrZXQodGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpKTsKLQotICAgICAgICAgICAgaWYgKCFiLT5uZXh0XykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsaW5rX3BvaW50ZXIgc3RhcnRfbm9kZSA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChzdGFydF9ub2RlLT5uZXh0XykgewotICAgICAgICAgICAgICAgICAgICB0aGlzLT5nZXRfYnVja2V0KHRoaXMtPmhhc2hfdG9fYnVja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihzdGFydF9ub2RlLT5uZXh0XyktPmhhc2hfKQotICAgICAgICAgICAgICAgICAgICApLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYi0+bmV4dF8gPSBzdGFydF9ub2RlOwotICAgICAgICAgICAgICAgIG4tPm5leHRfID0gc3RhcnRfbm9kZS0+bmV4dF87Ci0gICAgICAgICAgICAgICAgc3RhcnRfbm9kZS0+bmV4dF8gPSBuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG4tPm5leHRfID0gYi0+bmV4dF8tPm5leHRfOwotICAgICAgICAgICAgICAgIGItPm5leHRfLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICsrdGhpcy0+c2l6ZV87Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3Iobik7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlJiBvcGVyYXRvcltdKGtleV90eXBlIGNvbnN0JiBrKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZhbHVlX3R5cGU6OnNlY29uZF90eXBlIG1hcHBlZF90eXBlOwotICAgIAotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgcG9zID0gdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKTsKLSAgICAKLSAgICAgICAgICAgIGlmIChwb3Mubm9kZV8pIHJldHVybiAqcG9zOwotICAgIAotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBub2RlIGJlZm9yZSByZWhhc2hpbmcgaW4gY2FzZSBpdCB0aHJvd3MgYW4KLSAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiAobmVlZCBzdHJvbmcgc2FmZXR5IGluIHN1Y2ggYSBjYXNlKS4KLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMygKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptYWtlX3R1cGxlKGspLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptYWtlX3R1cGxlKCkpKTsKLSAgICAKLSAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIDEpOwotICAgICAgICAgICAgcmV0dXJuICphZGRfbm9kZShhLCBrZXlfaGFzaCk7Ci0gICAgICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2UobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXBsYWNlX2FyZ3MxPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkPiBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9yZXR1cm4odGhpcy0+YmVnaW4oKSwgZmFsc2UpOwotICAgICAgICB9Ci0jICAgZWxzZQotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX3JldHVybih0aGlzLT5iZWdpbigpLCBmYWxzZSk7Ci0gICAgICAgIH0KLSMgICBlbmRpZgotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MpCi0gICAgICAgIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9pbXBsKAotICAgICAgICAgICAgICAgIGV4dHJhY3Rvcjo6ZXh0cmFjdChORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSNlbHNlCi0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9pbXBsKAotICAgICAgICAgICAgICAgIGV4dHJhY3Rvcjo6ZXh0cmFjdChhcmdzLmEwLCBhcmdzLmExKSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wbGFjZV9hcmdzMTxBMD4gY29uc3QmIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX2ltcGwoZXh0cmFjdG9yOjpleHRyYWN0KGFyZ3MuYTApLCBhcmdzKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlX2ltcGwoa2V5X3R5cGUgY29uc3QmIGssCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3MgPSB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspOwotICAgIAotICAgICAgICAgICAgaWYgKHBvcy5ub2RlXykgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHBvcywgZmFsc2UpOwotICAgIAotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBub2RlIGJlZm9yZSByZWhhc2hpbmcgaW4gY2FzZSBpdCB0aHJvd3MgYW4KLSAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiAobmVlZCBzdHJvbmcgc2FmZXR5IGluIHN1Y2ggYSBjYXNlKS4KLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSAgICAKLSAgICAgICAgICAgIC8vIHJlc2VydmUgaGFzIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkgaWYgdGhlIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgICAgIC8vIHRocm93cywgc3Ryb25nIG90aGVyd2lzZS4KLSAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIDEpOwotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHRoaXMtPmFkZF9ub2RlKGEsIGtleV9oYXNoKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlX2ltcGxfd2l0aF9ub2RlKG5vZGVfY29uc3RydWN0b3ImIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGtleV90eXBlIGNvbnN0JiBrID0gdGhpcy0+Z2V0X2tleShhLnZhbHVlKCkpOwotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgcG9zID0gdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKTsKLQotICAgICAgICAgICAgaWYgKHBvcy5ub2RlXykgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHBvcywgZmFsc2UpOwotCi0gICAgICAgICAgICAvLyByZXNlcnZlIGhhcyBiYXNpYyBleGNlcHRpb24gc2FmZXR5IGlmIHRoZSBoYXNoIGZ1bmN0aW9uCi0gICAgICAgICAgICAvLyB0aHJvd3MsIHN0cm9uZyBvdGhlcndpc2UuCi0gICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKyAxKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX3JldHVybih0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCksIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlX2ltcGwobm9fa2V5LCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBEb24ndCBoYXZlIGEga2V5LCBzbyBjb25zdHJ1Y3QgdGhlIG5vZGUgZmlyc3QgaW4gb3JkZXIKLSAgICAgICAgICAgIC8vIHRvIGJlIGFibGUgdG8gbG9va3VwIHRoZSBwb3NpdGlvbi4KLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX2ltcGxfd2l0aF9ub2RlKGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEluc2VydCByYW5nZSBtZXRob2RzCi0gICAgICAgIC8vCi0gICAgICAgIC8vIGlmIGhhc2ggZnVuY3Rpb24gdGhyb3dzLCBvciBpbnNlcnRpbmcgPiAxIGVsZW1lbnQsIGJhc2ljIGV4Y2VwdGlvbgotICAgICAgICAvLyBzYWZldHkgc3Ryb25nIG90aGVyd2lzZQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB2b2lkIGluc2VydF9yYW5nZShJbnB1dEl0IGksIElucHV0SXQgaikKLSAgICAgICAgewotICAgICAgICAgICAgaWYoaSAhPSBqKQotICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnRfcmFuZ2VfaW1wbChleHRyYWN0b3I6OmV4dHJhY3QoKmkpLCBpLCBqKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB2b2lkIGluc2VydF9yYW5nZV9pbXBsKGtleV90eXBlIGNvbnN0JiBrLCBJbnB1dEl0IGksIElucHV0SXQgaikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0KLSAgICAgICAgICAgIGluc2VydF9yYW5nZV9pbXBsMihhLCBrLCBpLCBqKTsKLQotICAgICAgICAgICAgd2hpbGUoKytpICE9IGopIHsKLSAgICAgICAgICAgICAgICAvLyBOb3RlOiBjYW4ndCB1c2UgZ2V0X2tleSBhcyAnKmknIG1pZ2h0IG5vdCBiZSB2YWx1ZV90eXBlIC0gaXQKLSAgICAgICAgICAgICAgICAvLyBjb3VsZCBiZSBhIHBhaXIgd2l0aCBmaXJzdF90eXBlcyBhcyBrZXlfdHlwZSB3aXRob3V0IGNvbnN0IG9yCi0gICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgc2Vjb25kX3R5cGUuCi0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBNaWdodCBiZSB3b3J0aCBzdG9yaW5nIHRoZSB2YWx1ZV90eXBlIGluc3RlYWQgb2YgdGhlCi0gICAgICAgICAgICAgICAgLy8ga2V5IGhlcmUuIENvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmICcqaScgaXMgZXhwZW5zaXZlLiBDb3VsZAotICAgICAgICAgICAgICAgIC8vIGJlIGxlc3MgZWZmaWNpZW50IGlmIGNvcHlpbmcgdGhlIGZ1bGwgdmFsdWVfdHlwZSBpcwotICAgICAgICAgICAgICAgIC8vIGV4cGVuc2l2ZS4KLSAgICAgICAgICAgICAgICBpbnNlcnRfcmFuZ2VfaW1wbDIoYSwgZXh0cmFjdG9yOjpleHRyYWN0KCppKSwgaSwgaik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdm9pZCBpbnNlcnRfcmFuZ2VfaW1wbDIobm9kZV9jb25zdHJ1Y3RvciYgYSwga2V5X3R5cGUgY29uc3QmIGssCi0gICAgICAgICAgICBJbnB1dEl0IGksIElucHV0SXQgaikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gTm8gc2lkZSBlZmZlY3RzIGluIHRoaXMgaW5pdGlhbCBjb2RlCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3MgPSB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspOwotICAgIAotICAgICAgICAgICAgaWYgKCFwb3Mubm9kZV8pIHsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgaWYodGhpcy0+c2l6ZV8gKyAxID4gdGhpcy0+bWF4X2xvYWRfKQotICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKwotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnNlcnRfc2l6ZShpLCBqKSk7Ci0gICAgCi0gICAgICAgICAgICAgICAgLy8gTm90aGluZyBhZnRlciB0aGlzIHBvaW50IGNhbiB0aHJvdy4KLSAgICAgICAgICAgICAgICB0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdm9pZCBpbnNlcnRfcmFuZ2VfaW1wbChub19rZXksIElucHV0SXQgaSwgSW5wdXRJdCBqKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLQotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUyKCppKTsKLSAgICAgICAgICAgICAgICBlbXBsYWNlX2ltcGxfd2l0aF9ub2RlKGEpOwotICAgICAgICAgICAgfSB3aGlsZSgrK2kgIT0gaik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRXJhc2UKLSAgICAgICAgLy8KLSAgICAgICAgLy8gbm8gdGhyb3cKLQotICAgICAgICBzdGQ6OnNpemVfdCBlcmFzZV9rZXkoa2V5X3R5cGUgY29uc3QmIGspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCF0aGlzLT5zaXplXykgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICBpZiAoIXByZXYpIHJldHVybiAwOwotCi0gICAgICAgICAgICBmb3IgKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghcHJldi0+bmV4dF8pIHJldHVybiAwOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG5vZGVfaGFzaCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy0+aGFzaF90b19idWNrZXQobm9kZV9oYXNoKSAhPSBidWNrZXRfaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChub2RlX2hhc2ggPT0ga2V5X2hhc2ggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmtleV9lcSgpKGssIHRoaXMtPmdldF9rZXkoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+dmFsdWUoKSkpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBwcmV2ID0gcHJldi0+bmV4dF87Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBlbmQgPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+bmV4dF87Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gdGhpcy0+ZGVsZXRlX25vZGVzKHByZXYsIGVuZCk7Ci0gICAgICAgICAgICB0aGlzLT5maXhfYnVja2V0KGJ1Y2tldF9pbmRleCwgcHJldik7Ci0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlcmFzZShjX2l0ZXJhdG9yIHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyLm5vZGVfKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG5leHQoci5ub2RlXyk7Ci0gICAgICAgICAgICArK25leHQ7Ci0gICAgICAgICAgICBlcmFzZV9ub2RlcyhyLm5vZGVfLCBuZXh0Lm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2VfcmFuZ2UoY19pdGVyYXRvciByMSwgY19pdGVyYXRvciByMikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHIxID09IHIyKSByZXR1cm4gaXRlcmF0b3IocjIubm9kZV8pOwotICAgICAgICAgICAgZXJhc2Vfbm9kZXMocjEubm9kZV8sIHIyLm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihyMi5ub2RlXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGVyYXNlX25vZGVzKG5vZGVfcG9pbnRlciBiZWdpbiwgbm9kZV9wb2ludGVyIGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoYmVnaW4tPmhhc2hfKTsKLQotICAgICAgICAgICAgLy8gRmluZCB0aGUgbm9kZSBiZWZvcmUgYmVnaW4uCi0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydChidWNrZXRfaW5kZXgpOwotICAgICAgICAgICAgd2hpbGUocHJldi0+bmV4dF8gIT0gYmVnaW4pIHByZXYgPSBwcmV2LT5uZXh0XzsKLQotICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBub2Rlcy4KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5kZWxldGVfbm9kZShwcmV2KTsKLSAgICAgICAgICAgICAgICBidWNrZXRfaW5kZXggPSB0aGlzLT5maXhfYnVja2V0KGJ1Y2tldF9pbmRleCwgcHJldik7Ci0gICAgICAgICAgICB9IHdoaWxlIChwcmV2LT5uZXh0XyAhPSBlbmQpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGZpbGxfYnVja2V0cwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBOb2RlQ3JlYXRvcj4KLSAgICAgICAgc3RhdGljIHZvaWQgZmlsbF9idWNrZXRzKGl0ZXJhdG9yIG4sIHRhYmxlJiBkc3QsCi0gICAgICAgICAgICBOb2RlQ3JlYXRvciYgY3JlYXRvcikKLSAgICAgICAgewotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSBkc3QuZ2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChuLm5vZGVfKSB7Ci0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIG5vZGUgPSBjcmVhdG9yLmNyZWF0ZSgqbik7Ci0gICAgICAgICAgICAgICAgbm9kZS0+aGFzaF8gPSBuLm5vZGVfLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgKytkc3Quc2l6ZV87Ci0gICAgICAgICAgICAgICAgKytuOwotCi0gICAgICAgICAgICAgICAgcHJldiA9IHBsYWNlX2luX2J1Y2tldChkc3QsIHByZXYpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc3Ryb25nIG90aGVyd2lzZSBleGNlcHRpb24gc2FmZXR5Ci0gICAgICAgIHZvaWQgcmVoYXNoX2ltcGwoc3RkOjpzaXplX3QgbnVtX2J1Y2tldHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5idWNrZXRzXyk7Ci0KLSAgICAgICAgICAgIHRoaXMtPmNyZWF0ZV9idWNrZXRzKG51bV9idWNrZXRzKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0gICAgICAgICAgICB3aGlsZSAocHJldi0+bmV4dF8pCi0gICAgICAgICAgICAgICAgcHJldiA9IHBsYWNlX2luX2J1Y2tldCgqdGhpcywgcHJldik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIG5vZGVzIHBsYWNpbmcgdGhlbSBpbiB0aGUgY29ycmVjdCBidWNrZXRzLgotICAgICAgICAvLyBwcmU6IHByZXYtPm5leHRfIGlzIG5vdCBudWxsLgotICAgICAgICBzdGF0aWMgbGlua19wb2ludGVyIHBsYWNlX2luX2J1Y2tldCh0YWJsZSYgZHN0LCBsaW5rX3BvaW50ZXIgcHJldikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGIgPSBkc3QuZ2V0X2J1Y2tldChkc3QuaGFzaF90b19idWNrZXQobi0+aGFzaF8pKTsKLQotICAgICAgICAgICAgaWYgKCFiLT5uZXh0XykgewotICAgICAgICAgICAgICAgIGItPm5leHRfID0gcHJldjsKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHByZXYtPm5leHRfID0gbi0+bmV4dF87Ci0gICAgICAgICAgICAgICAgbi0+bmV4dF8gPSBiLT5uZXh0Xy0+bmV4dF87Ci0gICAgICAgICAgICAgICAgYi0+bmV4dF8tPm5leHRfID0gbjsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci19fX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMWRiODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX1VUSUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfVVRJTF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc2VsZWN0X3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvbW92ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bV9tYXhfbG9hZF9mYWN0b3IgPSAxZS0zZjsKLSAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgZGVmYXVsdF9idWNrZXRfY291bnQgPSAxMTsKLSAgICBzdHJ1Y3QgbW92ZV90YWcge307Ci0gICAgc3RydWN0IGVtcHR5X2VtcGxhY2Uge307Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gaXRlcmF0b3IgU0ZJTkFFCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgST4KLSAgICBzdHJ1Y3QgaXNfZm9yd2FyZCA6Ci0gICAgICAgIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjppdGVyYXRvcl90cmF2ZXJzYWw8ST46OnR5cGUsCi0gICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEksIHR5cGVuYW1lIFJldHVyblR5cGU+Ci0gICAgc3RydWN0IGVuYWJsZV9pZl9mb3J3YXJkIDoKLSAgICAgICAgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppc19mb3J3YXJkPEk+Ojp2YWx1ZSwKLSAgICAgICAgICAgIFJldHVyblR5cGU+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSSwgdHlwZW5hbWUgUmV0dXJuVHlwZT4KLSAgICBzdHJ1Y3QgZGlzYWJsZV9pZl9mb3J3YXJkIDoKLSAgICAgICAgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aXNfZm9yd2FyZDxJPjo6dmFsdWUsCi0gICAgICAgICAgICBSZXR1cm5UeXBlPgotICAgIHt9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHByaW1lcwotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMgXAotICAgICgxN3VsKSgyOXVsKSgzN3VsKSg1M3VsKSg2N3VsKSg3OXVsKSBcCi0gICAgKDk3dWwpKDEzMXVsKSgxOTN1bCkoMjU3dWwpKDM4OXVsKSg1MjF1bCkoNzY5dWwpIFwKLSAgICAoMTAzMXVsKSgxNTQzdWwpKDIwNTN1bCkoMzA3OXVsKSg2MTUxdWwpKDEyMjg5dWwpKDI0NTkzdWwpIFwKLSAgICAoNDkxNTd1bCkoOTgzMTd1bCkoMTk2NjEzdWwpKDM5MzI0MXVsKSg3ODY0MzN1bCkgXAotICAgICgxNTcyODY5dWwpKDMxNDU3Mzl1bCkoNjI5MTQ2OXVsKSgxMjU4MjkxN3VsKSgyNTE2NTg0M3VsKSBcCi0gICAgKDUwMzMxNjUzdWwpKDEwMDY2MzMxOXVsKSgyMDEzMjY2MTF1bCkoNDAyNjUzMTg5dWwpKDgwNTMwNjQ1N3VsKSBcCi0gICAgKDE2MTA2MTI3NDF1bCkoMzIyMTIyNTQ3M3VsKSg0Mjk0OTY3MjkxdWwpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgcHJpbWVfbGlzdF90ZW1wbGF0ZQotICAgIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGNvbnN0IHZhbHVlW107Ci0KLSNpZiAhZGVmaW5lZChTVU5QUk9fQ0MpCi0gICAgICAgIHN0YXRpYyBzdGQ6OnB0cmRpZmZfdCBjb25zdCBsZW5ndGg7Ci0jZWxzZQotICAgICAgICBzdGF0aWMgc3RkOjpwdHJkaWZmX3QgY29uc3QgbGVuZ3RoCi0gICAgICAgICAgICA9IE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RkOjpzaXplX3QgY29uc3QgcHJpbWVfbGlzdF90ZW1wbGF0ZTxUPjo6dmFsdWVbXSA9IHsKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0VOVU0oTkROQk9PU1RfVU5PUkRFUkVEX1BSSU1FUykKLSAgICB9OwotCi0jaWYgIWRlZmluZWQoU1VOUFJPX0NDKQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RkOjpwdHJkaWZmX3QgY29uc3QgcHJpbWVfbGlzdF90ZW1wbGF0ZTxUPjo6bGVuZ3RoCi0gICAgICAgID0gTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfVU5PUkRFUkVEX1BSSU1FUyk7Ci0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMKLQotICAgIHR5cGVkZWYgcHJpbWVfbGlzdF90ZW1wbGF0ZTxzdGQ6OnNpemVfdD4gcHJpbWVfbGlzdDsKLQotICAgIC8vIG5vIHRocm93Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IG5leHRfcHJpbWUoc3RkOjpzaXplX3QgbnVtKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2JlZ2luID0gcHJpbWVfbGlzdDo6dmFsdWU7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2VuZCA9IHByaW1lX2xpc3RfYmVnaW4gKwotICAgICAgICAgICAgcHJpbWVfbGlzdDo6bGVuZ3RoOwotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogYm91bmQgPQotICAgICAgICAgICAgc3RkOjpsb3dlcl9ib3VuZChwcmltZV9saXN0X2JlZ2luLCBwcmltZV9saXN0X2VuZCwgbnVtKTsKLSAgICAgICAgaWYoYm91bmQgPT0gcHJpbWVfbGlzdF9lbmQpCi0gICAgICAgICAgICBib3VuZC0tOwotICAgICAgICByZXR1cm4gKmJvdW5kOwotICAgIH0KLQotICAgIC8vIG5vIHRocm93Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IHByZXZfcHJpbWUoc3RkOjpzaXplX3QgbnVtKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2JlZ2luID0gcHJpbWVfbGlzdDo6dmFsdWU7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2VuZCA9IHByaW1lX2xpc3RfYmVnaW4gKwotICAgICAgICAgICAgcHJpbWVfbGlzdDo6bGVuZ3RoOwotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogYm91bmQgPQotICAgICAgICAgICAgc3RkOjp1cHBlcl9ib3VuZChwcmltZV9saXN0X2JlZ2luLHByaW1lX2xpc3RfZW5kLCBudW0pOwotICAgICAgICBpZihib3VuZCAhPSBwcmltZV9saXN0X2JlZ2luKQotICAgICAgICAgICAgYm91bmQtLTsKLSAgICAgICAgcmV0dXJuICpib3VuZDsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gaW5zZXJ0X3NpemUvaW5pdGlhbF9zaXplCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfRElTVEFOQ0UpCi0KLSAgICB1c2luZyA6OnN0ZDo6ZGlzdGFuY2U7Ci0KLSNlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXJhdG9yPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBkaXN0YW5jZShGb3J3YXJkSXRlcmF0b3IgaSwgRm9yd2FyZEl0ZXJhdG9yIGopIHsKLSAgICAgICAgc3RkOjpzaXplX3QgeDsKLSAgICAgICAgc3RkOjpkaXN0YW5jZShpLCBqLCB4KTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgIGlubGluZSB0eXBlbmFtZQotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVuYWJsZV9pZl9mb3J3YXJkPEksIHN0ZDo6c2l6ZV90Pjo6dHlwZQotICAgICAgICBpbnNlcnRfc2l6ZShJIGksIEkgaikKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGksIGopOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgIGlubGluZSB0eXBlbmFtZQotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRpc2FibGVfaWZfZm9yd2FyZDxJLCBzdGQ6OnNpemVfdD46OnR5cGUKLSAgICAgICAgaW5zZXJ0X3NpemUoSSwgSSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBpbml0aWFsX3NpemUoSSBpLCBJIGosCi0gICAgICAgIHN0ZDo6c2l6ZV90IG51bV9idWNrZXRzID0KLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQpCi0gICAgewotICAgICAgICAvLyBUT0RPOiBXaHkgKzE/Ci0gICAgICAgIHJldHVybiAoc3RkOjptYXgpKAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnNlcnRfc2l6ZShpLCBqKSArIDEsCi0gICAgICAgICAgICBudW1fYnVja2V0cyk7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGNvbXByZXNzZWQKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgSW5kZXg+Ci0gICAgc3RydWN0IGNvbXByZXNzZWRfYmFzZSA6IHByaXZhdGUgVAotICAgIHsKLSAgICAgICAgY29tcHJlc3NlZF9iYXNlKFQgY29uc3QmIHgpIDogVCh4KSB7fQotICAgICAgICBjb21wcmVzc2VkX2Jhc2UoVCYgeCwgbW92ZV90YWcpIDogVChuZG5ib29zdDo6bW92ZSh4KSkge30KLQotICAgICAgICBUJiBnZXQoKSB7IHJldHVybiAqdGhpczsgfQotICAgICAgICBUIGNvbnN0JiBnZXQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGludCBJbmRleD4KLSAgICBzdHJ1Y3QgdW5jb21wcmVzc2VkX2Jhc2UKLSAgICB7Ci0gICAgICAgIHVuY29tcHJlc3NlZF9iYXNlKFQgY29uc3QmIHgpIDogdmFsdWVfKHgpIHt9Ci0gICAgICAgIHVuY29tcHJlc3NlZF9iYXNlKFQmIHgsIG1vdmVfdGFnKSA6IHZhbHVlXyhuZG5ib29zdDo6bW92ZSh4KSkge30KLQotICAgICAgICBUJiBnZXQoKSB7IHJldHVybiB2YWx1ZV87IH0KLSAgICAgICAgVCBjb25zdCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgVCB2YWx1ZV87Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IEluZGV4PgotICAgIHN0cnVjdCBnZW5lcmF0ZV9iYXNlCi0gICAgICA6IG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfZW1wdHk8VD46OnZhbHVlCi0gICAgICAgID46OiBORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGhlbjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29tcHJlc3NlZF9iYXNlPFQsIEluZGV4PiwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dW5jb21wcmVzc2VkX2Jhc2U8VCwgSW5kZXg+Ci0gICAgICAgID4KLSAgICB7fTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIHN0cnVjdCBjb21wcmVzc2VkCi0gICAgICA6IHByaXZhdGUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpnZW5lcmF0ZV9iYXNlPFQxLCAxPjo6dHlwZSwKLSAgICAgICAgcHJpdmF0ZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmdlbmVyYXRlX2Jhc2U8VDIsIDI+Ojp0eXBlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdlbmVyYXRlX2Jhc2U8VDEsIDE+Ojp0eXBlIGJhc2UxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdlbmVyYXRlX2Jhc2U8VDIsIDI+Ojp0eXBlIGJhc2UyOwotCi0gICAgICAgIHR5cGVkZWYgVDEgZmlyc3RfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUMiBzZWNvbmRfdHlwZTsKLSAgICAgICAgCi0gICAgICAgIGZpcnN0X3R5cGUmIGZpcnN0KCkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJhc2UxKj4odGhpcyktPmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmlyc3RfdHlwZSBjb25zdCYgZmlyc3QoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8YmFzZTEgY29uc3QqPih0aGlzKS0+Z2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzZWNvbmRfdHlwZSYgc2Vjb25kKCkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJhc2UyKj4odGhpcyktPmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2Vjb25kX3R5cGUgY29uc3QmIHNlY29uZCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxiYXNlMiBjb25zdCo+KHRoaXMpLT5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgotICAgICAgICBjb21wcmVzc2VkKEZpcnN0IGNvbnN0JiB4MSwgU2Vjb25kIGNvbnN0JiB4MikKLSAgICAgICAgICAgIDogYmFzZTEoeDEpLCBiYXNlMih4Mikge30KLQotICAgICAgICBjb21wcmVzc2VkKGNvbXByZXNzZWQgY29uc3QmIHgpCi0gICAgICAgICAgICA6IGJhc2UxKHguZmlyc3QoKSksIGJhc2UyKHguc2Vjb25kKCkpIHt9Ci0KLSAgICAgICAgY29tcHJlc3NlZChjb21wcmVzc2VkJiB4LCBtb3ZlX3RhZyBtKQotICAgICAgICAgICAgOiBiYXNlMSh4LmZpcnN0KCksIG0pLCBiYXNlMih4LnNlY29uZCgpLCBtKSB7fQotCi0gICAgICAgIHZvaWQgYXNzaWduKGNvbXByZXNzZWQgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpcnN0KCkgPSB4LmZpcnN0KCk7Ci0gICAgICAgICAgICBzZWNvbmQoKSA9IHguc2Vjb25kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYXNzaWduKGNvbXByZXNzZWQmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpcnN0KCkgPSBuZG5ib29zdDo6bW92ZSh4LmZpcnN0KCkpOwotICAgICAgICAgICAgc2Vjb25kKCkgPSBuZG5ib29zdDo6bW92ZSh4LnNlY29uZCgpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzd2FwKGNvbXByZXNzZWQmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKGZpcnN0KCksIHguZmlyc3QoKSk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChzZWNvbmQoKSwgeC5zZWNvbmQoKSk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIFByZXZlbnQgYXNzaWdubWVudCBqdXN0IHRvIG1ha2UgdXNlIG9mIGFzc2lnbiBvcgotICAgICAgICAvLyBtb3ZlX2Fzc2lnbiBleHBsaWNpdC4KLSAgICAgICAgY29tcHJlc3NlZCYgb3BlcmF0b3I9KGNvbXByZXNzZWQgY29uc3QmKTsKLSAgICB9OwotfX19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIzMjM5My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Vub3JkZXJlZCBmb3IgZG9jdW1lbnRhdGlvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9VTk9SREVSRURfU0VUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXF1aXZhbGVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91bmlxdWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL21vdmUuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0jaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jaWYgTkROQk9PU1RfTVNWQyA+PSAxNDAwCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Mzk2KSAvL3RoZSBpbmxpbmUgc3BlY2lmaWVyIGNhbm5vdCBiZSB1c2VkIHdoZW4gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJpZW5kIGRlY2xhcmF0aW9uIHJlZmVycyB0byBhIHNwZWNpYWxpemF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBhIGZ1bmN0aW9uIHRlbXBsYXRlCi0jZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLW5hbWVzcGFjZSB1bm9yZGVyZWQKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBjbGFzcyB1bm9yZGVyZWRfc2V0Ci0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICBORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRSh1bm9yZGVyZWRfc2V0KQotI2VuZGlmCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgVCBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3JfdHlwZTsKLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldDxBLCBULCBILCBQPiB0eXBlczsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlczo6dHJhaXRzIGFsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZXM6OnRhYmxlIHRhYmxlOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlciBwb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM6OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlIGNvbnN0JiBjb25zdF9yZWZlcmVuY2U7Ci0KLSAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNsX2l0ZXJhdG9yIGNvbnN0X2xvY2FsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjbF9pdGVyYXRvciBsb2NhbF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBpdGVyYXRvcjsKLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdGFibGUgdGFibGVfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIC8vIGNvbnN0cnVjdG9ycwotCi0gICAgICAgIGV4cGxpY2l0IHVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiA9IGtleV9lcXVhbCgpLAotICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiA9IGFsbG9jYXRvcl90eXBlKCkpOwotCi0gICAgICAgIGV4cGxpY2l0IHVub3JkZXJlZF9zZXQoYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX3NldChJbnB1dEl0LCBJbnB1dEl0KTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgICAgICBJbnB1dEl0LCBJbnB1dEl0LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiA9IGtleV9lcXVhbCgpKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgICAgICBJbnB1dEl0LCBJbnB1dEl0LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYsCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmKTsKLQotICAgICAgICAvLyBjb3B5L21vdmUgY29uc3RydWN0b3JzCi0KLSAgICAgICAgdW5vcmRlcmVkX3NldCh1bm9yZGVyZWRfc2V0IGNvbnN0Jik7Ci0KLSAgICAgICAgdW5vcmRlcmVkX3NldCh1bm9yZGVyZWRfc2V0IGNvbnN0JiwgYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICB1bm9yZGVyZWRfc2V0KE5ETkJPT1NUX1JWX1JFRih1bm9yZGVyZWRfc2V0KSBvdGhlcikKLSAgICAgICAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfc2V0KHVub3JkZXJlZF9zZXQmJiBvdGhlcikKLSAgICAgICAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9zZXQodW5vcmRlcmVkX3NldCYmLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4sCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJmwgPSBrZXlfZXF1YWwoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgPSBhbGxvY2F0b3JfdHlwZSgpKTsKLSNlbmRpZgotCi0gICAgICAgIC8vIERlc3RydWN0b3IKLQotICAgICAgICB+dW5vcmRlcmVkX3NldCgpOwotCi0gICAgICAgIC8vIEFzc2lnbgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPShORE5CT09TVF9DT1BZX0FTU0lHTl9SRUYodW5vcmRlcmVkX3NldCkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLmFzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB1bm9yZGVyZWRfc2V0JiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHVub3JkZXJlZF9zZXQpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5tb3ZlX2Fzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPSh1bm9yZGVyZWRfc2V0IGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8uYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPSh1bm9yZGVyZWRfc2V0JiYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLm1vdmVfYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB1bm9yZGVyZWRfc2V0JiBvcGVyYXRvcj0oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+KTsKLSNlbmRpZgotCi0gICAgICAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm5vZGVfYWxsb2MoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHNpemUgYW5kIGNhcGFjaXR5Ci0KLSAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uc2l6ZV8gPT0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5zaXplXzsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUOwotCi0gICAgICAgIC8vIGl0ZXJhdG9ycwotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5iZWdpbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmJlZ2luKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbmQoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5iZWdpbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZW1wbGFjZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKS5maXJzdDsKLSAgICAgICAgfQotI2Vsc2UKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoMHg1MTAwKSkKLQotICAgICAgICAvLyAwIGFyZ3VtZW50IGVtcGxhY2UgcmVxdWlyZXMgc3BlY2lhbCB0cmVhdG1lbnQgaW4gY2FzZQotICAgICAgICAvLyB0aGUgY29udGFpbmVyIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgdmFsdWUgdHlwZSB0aGF0Ci0gICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCi0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZQotICAgICAgICAgICAgICAgICAgICA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZSgpLAotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgdiA9IHZhbHVlX3R5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UobmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIGhpbnQsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlCi0gICAgICAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlKCksCi0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZSB2ID0gdmFsdWVfdHlwZSgpCi0gICAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgbmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICB9Ci0KLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSkKLSAgICAgICAgICAgICkuZmlyc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2UoCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSkpCi0gICAgICAgICAgICApLmZpcnN0OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZSgKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEyKSBhMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGEyKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTIpIGEyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYTIpKQotICAgICAgICAgICAgKS5maXJzdDsKLSAgICAgICAgfQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVtcGxhdGUgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSwgYSkgICAgICBcCi0gICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncyggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCwgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSwgYSkgICAgICBcCi0gICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncyggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCwgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKSkuZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDQsIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0xJTUlULAotICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UsIF8pCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRQotCi0jZW5kaWYKLQotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydCh2YWx1ZV90eXBlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZSh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYodmFsdWVfdHlwZSkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UobmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIHZhbHVlX3R5cGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgbmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+IHZvaWQgaW5zZXJ0KElucHV0SXQsIElucHV0SXQpOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgICAgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPik7Ci0jZW5kaWYKLQotICAgICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvcik7Ci0gICAgICAgIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYpOwotICAgICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3IpOwotICAgICAgICB2b2lkIHF1aWNrX2VyYXNlKGNvbnN0X2l0ZXJhdG9yIGl0KSB7IGVyYXNlKGl0KTsgfQotICAgICAgICB2b2lkIGVyYXNlX3JldHVybl92b2lkKGNvbnN0X2l0ZXJhdG9yIGl0KSB7IGVyYXNlKGl0KTsgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKTsKLSAgICAgICAgdm9pZCBzd2FwKHVub3JkZXJlZF9zZXQmKTsKLQotICAgICAgICAvLyBvYnNlcnZlcnMKLQotICAgICAgICBoYXNoZXIgaGFzaF9mdW5jdGlvbigpIGNvbnN0OwotICAgICAgICBrZXlfZXF1YWwga2V5X2VxKCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gbG9va3VwCi0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDb21wYXRpYmxlS2V5LCBjbGFzcyBDb21wYXRpYmxlSGFzaCwKLSAgICAgICAgICAgIGNsYXNzIENvbXBhdGlibGVQcmVkaWNhdGU+Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUtleSBjb25zdCYsCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUhhc2ggY29uc3QmLAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmKSBjb25zdDsKLQotICAgICAgICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPgotICAgICAgICBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIC8vIGJ1Y2tldCBpbnRlcmZhY2UKLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0X2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5idWNrZXRfY291bnRfOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIG1heF9idWNrZXRfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm1heF9idWNrZXRfY291bnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXRfc2l6ZShzaXplX3R5cGUpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF90b19idWNrZXQodGFibGVfLmhhc2goaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9jYWxfaXRlcmF0b3IgYmVnaW4oc2l6ZV90eXBlIG4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGJlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbF9pdGVyYXRvciBlbmQoc2l6ZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGVuZChzaXplX3R5cGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgY2JlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBjZW5kKHNpemVfdHlwZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBoYXNoIHBvbGljeQotCi0gICAgICAgIGZsb2F0IG1heF9sb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubWxmXzsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IGxvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQ7Ci0gICAgICAgIHZvaWQgbWF4X2xvYWRfZmFjdG9yKGZsb2F0KSBORE5CT09TVF9OT0VYQ0VQVDsKLSAgICAgICAgdm9pZCByZWhhc2goc2l6ZV90eXBlKTsKLSAgICAgICAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSk7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHgwNTgyKQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09PFQsSCxQLEE+KAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9zZXQgY29uc3QmLCB1bm9yZGVyZWRfc2V0IGNvbnN0Jik7Ci0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT08VCxILFAsQT4oCi0gICAgICAgICAgICAgICAgdW5vcmRlcmVkX3NldCBjb25zdCYsIHVub3JkZXJlZF9zZXQgY29uc3QmKTsKLSNlbmRpZgotICAgIH07IC8vIGNsYXNzIHRlbXBsYXRlIHVub3JkZXJlZF9zZXQKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGNsYXNzIHVub3JkZXJlZF9tdWx0aXNldAotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfTU9WRSkKLSAgICAgICAgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUodW5vcmRlcmVkX211bHRpc2V0KQotI2VuZGlmCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgVCBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3JfdHlwZTsKLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om11bHRpc2V0PEEsIFQsIEgsIFA+IHR5cGVzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVzOjp0cmFpdHMgYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlczo6dGFibGUgdGFibGU7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIHBvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czo6Y29uc3RfcG9pbnRlciBjb25zdF9wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUgY29uc3QmIGNvbnN0X3JlZmVyZW5jZTsKLQotICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y2xfaXRlcmF0b3IgY29uc3RfbG9jYWxfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNsX2l0ZXJhdG9yIGxvY2FsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGl0ZXJhdG9yOwotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICB0YWJsZSB0YWJsZV87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgLy8gY29uc3RydWN0b3JzCi0KLSAgICAgICAgZXhwbGljaXQgdW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYgPSBrZXlfZXF1YWwoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgPSBhbGxvY2F0b3JfdHlwZSgpKTsKLQotICAgICAgICBleHBsaWNpdCB1bm9yZGVyZWRfbXVsdGlzZXQoYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KElucHV0SXQsIElucHV0SXQpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICAgICAgSW5wdXRJdCwgSW5wdXRJdCwKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYgPSBrZXlfZXF1YWwoKSk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgICAgICBJbnB1dEl0LCBJbnB1dEl0LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYsCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmKTsKLQotICAgICAgICAvLyBjb3B5L21vdmUgY29uc3RydWN0b3JzCi0KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYpOwotCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCh1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldChORE5CT09TVF9SVl9SRUYodW5vcmRlcmVkX211bHRpc2V0KSBvdGhlcikKLSAgICAgICAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQodW5vcmRlcmVkX211bHRpc2V0JiYgb3RoZXIpCi0gICAgICAgICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICAgICAgewotICAgICAgICB9Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQodW5vcmRlcmVkX211bHRpc2V0JiYsIGFsbG9jYXRvcl90eXBlIGNvbnN0Jik7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCZsID0ga2V5X2VxdWFsKCksCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmID0gYWxsb2NhdG9yX3R5cGUoKSk7Ci0jZW5kaWYKLQotICAgICAgICAvLyBEZXN0cnVjdG9yCi0KLSAgICAgICAgfnVub3JkZXJlZF9tdWx0aXNldCgpOwotCi0gICAgICAgIC8vIEFzc2lnbgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYgb3BlcmF0b3I9KAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRih1bm9yZGVyZWRfbXVsdGlzZXQpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHVub3JkZXJlZF9tdWx0aXNldCkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLm1vdmVfYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0odW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8uYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYgb3BlcmF0b3I9KHVub3JkZXJlZF9tdWx0aXNldCYmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5tb3ZlX2Fzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSNlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+KTsKLSNlbmRpZgotCi0gICAgICAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm5vZGVfYWxsb2MoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHNpemUgYW5kIGNhcGFjaXR5Ci0KLSAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uc2l6ZV8gPT0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5zaXplXzsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUOwotCi0gICAgICAgIC8vIGl0ZXJhdG9ycwotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKHRhYmxlXy5iZWdpbigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRhYmxlXy5iZWdpbigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVuZCgpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IodGFibGVfLmJlZ2luKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZW1wbGFjZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZShORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZShuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZShuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIH0KLSNlbHNlCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTEwMCkpCi0KLSAgICAgICAgLy8gMCBhcmd1bWVudCBlbXBsYWNlIHJlcXVpcmVzIHNwZWNpYWwgdHJlYXRtZW50IGluIGNhc2UKLSAgICAgICAgLy8gdGhlIGNvbnRhaW5lciBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHZhbHVlIHR5cGUgdGhhdAotICAgICAgICAvLyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgotCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlCi0gICAgICAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlKCksCi0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZSB2ID0gdmFsdWVfdHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZShuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IgaGludCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UKLSAgICAgICAgICAgICAgICAgICAgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UoKSwKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlIHYgPSB2YWx1ZV90eXBlKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChoaW50LCBuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTIpIGEyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYTIpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMikgYTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhMikpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpdGVyYXRvciBlbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBhKSAgICAgIFwKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJELCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBhKSAgICAgIFwKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJELCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oNCwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfTElNSVQsCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRSwgXykKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFCi0KLSNlbmRpZgotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydCh2YWx1ZV90eXBlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZSh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydChORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlKG5kbmJvb3N0Ojptb3ZlKHgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCB2YWx1ZV90eXBlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIG5kbmJvb3N0Ojptb3ZlKHgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PiB2b2lkIGluc2VydChJbnB1dEl0LCBJbnB1dEl0KTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4pOwotI2VuZGlmCi0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IpOwotICAgICAgICBzaXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X3R5cGUmKTsKLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yKTsKLSAgICAgICAgdm9pZCBxdWlja19lcmFzZShjb25zdF9pdGVyYXRvciBpdCkgeyBlcmFzZShpdCk7IH0KLSAgICAgICAgdm9pZCBlcmFzZV9yZXR1cm5fdm9pZChjb25zdF9pdGVyYXRvciBpdCkgeyBlcmFzZShpdCk7IH0KLQotICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAgIHZvaWQgc3dhcCh1bm9yZGVyZWRfbXVsdGlzZXQmKTsKLQotICAgICAgICAvLyBvYnNlcnZlcnMKLQotICAgICAgICBoYXNoZXIgaGFzaF9mdW5jdGlvbigpIGNvbnN0OwotICAgICAgICBrZXlfZXF1YWwga2V5X2VxKCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gbG9va3VwCi0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDb21wYXRpYmxlS2V5LCBjbGFzcyBDb21wYXRpYmxlSGFzaCwKLSAgICAgICAgICAgIGNsYXNzIENvbXBhdGlibGVQcmVkaWNhdGU+Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUtleSBjb25zdCYsCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUhhc2ggY29uc3QmLAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmKSBjb25zdDsKLQotICAgICAgICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPgotICAgICAgICBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIC8vIGJ1Y2tldCBpbnRlcmZhY2UKLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0X2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5idWNrZXRfY291bnRfOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIG1heF9idWNrZXRfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm1heF9idWNrZXRfY291bnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXRfc2l6ZShzaXplX3R5cGUpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF90b19idWNrZXQodGFibGVfLmhhc2goaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9jYWxfaXRlcmF0b3IgYmVnaW4oc2l6ZV90eXBlIG4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGJlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbF9pdGVyYXRvciBlbmQoc2l6ZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGVuZChzaXplX3R5cGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgY2JlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBjZW5kKHNpemVfdHlwZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBoYXNoIHBvbGljeQotCi0gICAgICAgIGZsb2F0IG1heF9sb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubWxmXzsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IGxvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQ7Ci0gICAgICAgIHZvaWQgbWF4X2xvYWRfZmFjdG9yKGZsb2F0KSBORE5CT09TVF9OT0VYQ0VQVDsKLSAgICAgICAgdm9pZCByZWhhc2goc2l6ZV90eXBlKTsKLSAgICAgICAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSk7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHgwNTgyKQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09PFQsSCxQLEE+KAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYsIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYpOwotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9PFQsSCxQLEE+KAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYsIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYpOwotI2VuZGlmCi0gICAgfTsgLy8gY2xhc3MgdGVtcGxhdGUgdW5vcmRlcmVkX211bHRpc2V0Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sIGNvbnN0IGhhc2hlciAmaGYsIGNvbnN0IGtleV9lcXVhbCAmZXFsLAotICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXyhuLCBoZiwgZXFsLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQgY29uc3QmIG90aGVyLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldChJbnB1dEl0IGYsIElucHV0SXQgbCkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwpLAotICAgICAgICBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jYXRvcl90eXBlKCkpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGYsIGwpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICBJbnB1dEl0IGYsIElucHV0SXQgbCwKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwKLSAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCAmZXFsKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhbGxvY2F0b3JfdHlwZSgpKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIElucHV0SXQgZiwgSW5wdXRJdCBsLAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLAotICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsICZlcWwsCi0gICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYSkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwsIG4pLCBoZiwgZXFsLCBhKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6fnVub3JkZXJlZF9zZXQoKSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQgY29uc3QmIG90aGVyKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfKQotICAgIHsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0JiYgb3RoZXIsIGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBhLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnKCkpCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCwgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLCBjb25zdCBrZXlfZXF1YWwgJmVxbCwgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXygKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKAotICAgICAgICAgICAgICAgIGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4mIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Om9wZXJhdG9yPSgKLSAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmNsZWFyKCk7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBzaXplIGFuZCBjYXBhY2l0eQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6bWF4X3NpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5tYXhfc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIG1vZGlmaWVycwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjppbnNlcnQoSW5wdXRJdCBmaXJzdCwgSW5wdXRJdCBsYXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjppbnNlcnQoCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Oml0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZShwb3NpdGlvbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmVyYXNlKGNvbnN0IGtleV90eXBlJiBrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZV9rZXkoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6aXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZXJhc2UoCi0gICAgICAgICAgICBjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXJhc2VfcmFuZ2UoZmlyc3QsIGxhc3QpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y2xlYXIoKQotICAgIHsKLSAgICAgICAgdGFibGVfLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpzd2FwKHVub3JkZXJlZF9zZXQmIG90aGVyKQotICAgIHsKLSAgICAgICAgdGFibGVfLnN3YXAob3RoZXIudGFibGVfKTsKLSAgICB9Ci0KLSAgICAvLyBvYnNlcnZlcnMKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Omhhc2hlcgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpoYXNoX2Z1bmN0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF9mdW5jdGlvbigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmtleV9lcXVhbAotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjprZXlfZXEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5rZXlfZXEoKTsKLSAgICB9Ci0KLSAgICAvLyBsb29rdXAKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmZpbmQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmZpbmRfbm9kZShrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29tcGF0aWJsZUtleSwgY2xhc3MgQ29tcGF0aWJsZUhhc2gsCi0gICAgICAgIGNsYXNzIENvbXBhdGlibGVQcmVkaWNhdGU+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZmluZCgKLSAgICAgICAgICAgIENvbXBhdGlibGVLZXkgY29uc3QmIGssCi0gICAgICAgICAgICBDb21wYXRpYmxlSGFzaCBjb25zdCYgaGFzaCwKLSAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmIGVxKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5nZW5lcmljX2ZpbmRfbm9kZShrLCBoYXNoLCBlcSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvdW50KGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5jb3VudChrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBzdGQ6OnBhaXI8Ci0gICAgICAgICAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yPgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjplcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXF1YWxfcmFuZ2Uoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmJ1Y2tldF9zaXplKHNpemVfdHlwZSBuKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5idWNrZXRfc2l6ZShuKTsKLSAgICB9Ci0KLSAgICAvLyBoYXNoIHBvbGljeQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgZmxvYXQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6bG9hZF9mYWN0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5sb2FkX2ZhY3RvcigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6bWF4X2xvYWRfZmFjdG9yKGZsb2F0IG0pIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0YWJsZV8ubWF4X2xvYWRfZmFjdG9yKG0pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6cmVoYXNoKHNpemVfdHlwZSBuKQotICAgIHsKLSAgICAgICAgdGFibGVfLnJlaGFzaChuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnJlc2VydmUoc2l6ZV90eXBlIG4pCi0gICAgewotICAgICAgICB0YWJsZV8ucmVzZXJ2ZShuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiBjb25zdCYgbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IGNvbnN0JiBtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX3NldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIHJldHVybiBtMS50YWJsZV8uZXF1YWxzKG0yLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4gY29uc3QmIG0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiBjb25zdCYgbTIpCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMykpCi0gICAgICAgIHN0cnVjdCBkdW1teSB7IHVub3JkZXJlZF9zZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gIW0xLnRhYmxlXy5lcXVhbHMobTIudGFibGVfKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgdm9pZCBzd2FwKAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiAmbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+ICZtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX3NldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIG0xLnN3YXAobTIpOwotICAgIH0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sIGNvbnN0IGhhc2hlciAmaGYsIGNvbnN0IGtleV9lcXVhbCAmZXFsLAotICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXyhuLCBoZiwgZXFsLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldChhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiBvdGhlciwgYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KElucHV0SXQgZiwgSW5wdXRJdCBsKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCksCi0gICAgICAgIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2NhdG9yX3R5cGUoKSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICBJbnB1dEl0IGYsIElucHV0SXQgbCwKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwKLSAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCAmZXFsKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhbGxvY2F0b3JfdHlwZSgpKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICBJbnB1dEl0IGYsIElucHV0SXQgbCwKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwKLSAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCAmZXFsLAotICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZShmLCBsLCBuKSwgaGYsIGVxbCwgYSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6fnVub3JkZXJlZF9tdWx0aXNldCgpIHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYgb3RoZXIpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8pCi0gICAgewotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQmJiBvdGhlciwgYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIGEsIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICB7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCwgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLCBjb25zdCBrZXlfZXF1YWwgJmVxbCwgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXygKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKAotICAgICAgICAgICAgICAgIGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiYgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpvcGVyYXRvcj0oCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5jbGVhcigpOwotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gc2l6ZSBhbmQgY2FwYWNpdHkKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6bWF4X3NpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5tYXhfc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIG1vZGlmaWVycwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Omluc2VydChJbnB1dEl0IGZpcnN0LCBJbnB1dEl0IGxhc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGZpcnN0LCBsYXN0KTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6aW5zZXJ0KAotICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Oml0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVyYXNlKHBvc2l0aW9uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnNpemVfdHlwZQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmVyYXNlKGNvbnN0IGtleV90eXBlJiBrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZV9rZXkoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjppdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmVyYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZV9yYW5nZShmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNsZWFyKCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5jbGVhcigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpzd2FwKHVub3JkZXJlZF9tdWx0aXNldCYgb3RoZXIpCi0gICAgewotICAgICAgICB0YWJsZV8uc3dhcChvdGhlci50YWJsZV8pOwotICAgIH0KLQotICAgIC8vIG9ic2VydmVycwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpoYXNoZXIKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpoYXNoX2Z1bmN0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF9mdW5jdGlvbigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6a2V5X2VxdWFsCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6a2V5X2VxKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ua2V5X2VxKCk7Ci0gICAgfQotCi0gICAgLy8gbG9va3VwCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZmluZChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZmluZF9ub2RlKGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBDb21wYXRpYmxlS2V5LCBjbGFzcyBDb21wYXRpYmxlSGFzaCwKLSAgICAgICAgY2xhc3MgQ29tcGF0aWJsZVByZWRpY2F0ZT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZmluZCgKLSAgICAgICAgICAgIENvbXBhdGlibGVLZXkgY29uc3QmIGssCi0gICAgICAgICAgICBDb21wYXRpYmxlSGFzaCBjb25zdCYgaGFzaCwKLSAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmIGVxKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5nZW5lcmljX2ZpbmRfbm9kZShrLCBoYXNoLCBlcSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpzaXplX3R5cGUKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpjb3VudChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uY291bnQoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgc3RkOjpwYWlyPAotICAgICAgICAgICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3I+Ci0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVxdWFsX3JhbmdlKGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6YnVja2V0X3NpemUoc2l6ZV90eXBlIG4pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmJ1Y2tldF9zaXplKG4pOwotICAgIH0KLQotICAgIC8vIGhhc2ggcG9saWN5Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBmbG9hdCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmxvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ubG9hZF9mYWN0b3IoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6bWF4X2xvYWRfZmFjdG9yKGZsb2F0IG0pIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0YWJsZV8ubWF4X2xvYWRfZmFjdG9yKG0pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpyZWhhc2goc2l6ZV90eXBlIG4pCi0gICAgewotICAgICAgICB0YWJsZV8ucmVoYXNoKG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpyZXNlcnZlKHNpemVfdHlwZSBuKQotICAgIHsKLSAgICAgICAgdGFibGVfLnJlc2VydmUobik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiBjb25zdCYgbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gY29uc3QmIG0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gbTEudGFibGVfLmVxdWFscyhtMi50YWJsZV8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gY29uc3QmIG0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IGNvbnN0JiBtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IHg7IH07Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuICFtMS50YWJsZV8uZXF1YWxzKG0yLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIHZvaWQgc3dhcCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiAmbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gJm0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICBtMS5zd2FwKG0yKTsKLSAgICB9Ci19IC8vIG5hbWVzcGFjZSB1bm9yZGVyZWQKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9VTk9SREVSRURfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UxYTY1My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwOC0yMDExIERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfU0VUX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHVub3JkZXJlZAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgICBjbGFzcyBIID0gbmRuYm9vc3Q6Omhhc2g8VD4sCi0gICAgICAgICAgICBjbGFzcyBQID0gc3RkOjplcXVhbF90bzxUPiwKLSAgICAgICAgICAgIGNsYXNzIEEgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci0gICAgICAgIGNsYXNzIHVub3JkZXJlZF9zZXQ7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0odW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiBjb25zdCYsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+IGNvbnN0Jik7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHVub3JkZXJlZF9zZXQ8VCwgSCwgUCwgQT4gY29uc3QmLAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiBjb25zdCYpOwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIHZvaWQgc3dhcCh1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+ICZtMSwKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+ICZtMik7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgICBjbGFzcyBIID0gbmRuYm9vc3Q6Omhhc2g8VD4sCi0gICAgICAgICAgICBjbGFzcyBQID0gc3RkOjplcXVhbF90bzxUPiwKLSAgICAgICAgICAgIGNsYXNzIEEgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci0gICAgICAgIGNsYXNzIHVub3JkZXJlZF9tdWx0aXNldDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSh1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gY29uc3QmLAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+IGNvbnN0Jik7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHVub3JkZXJlZF9tdWx0aXNldDxULCBILCBQLCBBPiBjb25zdCYsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gY29uc3QmKTsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSB2b2lkIHN3YXAodW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+ICZtMSwKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gJm0yKTsKLSAgICB9Ci0KLSAgICB1c2luZyBuZG5ib29zdDo6dW5vcmRlcmVkOjp1bm9yZGVyZWRfc2V0OwotICAgIHVzaW5nIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnVub3JkZXJlZF9tdWx0aXNldDsKLSAgICB1c2luZyBuZG5ib29zdDo6dW5vcmRlcmVkOjpzd2FwOwotICAgIHVzaW5nIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Om9wZXJhdG9yPT07Ci0gICAgdXNpbmcgbmRuYm9vc3Q6OnVub3JkZXJlZDo6b3BlcmF0b3IhPTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZF9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWRfc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NlODVlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZF9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwOCBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Vub3JkZXJlZCBmb3IgZG9jdW1lbnRhdGlvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXQuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODNmMGVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vLyAgQm9vc3QgdXRpbGl0eS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDE5OTktMjAwMyBBbGVrc2V5IEd1cnRvdm95LiAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlCi0vLyAgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuICAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGEgY29weSBhdCA8aHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Pi4pCi0KLS8vICBTZWUgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9iaW5hcnkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2lkZW50aXR5X3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9ub25jb3B5YWJsZS5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVVRJTElUWV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NmZiYWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAyIEJyYWQgS2luZyAoYnJhZC5raW5nQGtpdHdhcmUuY29tKQotLy8gICAgICAgICAgICAgICAgICAgIERvdWdsYXMgR3JlZ29yIChncmVnb2RAY3MucnBpLmVkdSkKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0FERFJFU1NPRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfQUREUkVTU09GX0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZHJfaW1wbF9yZWYKLXsKLSAgICBUICYgdl87Ci0KLSAgICBpbmxpbmUgYWRkcl9pbXBsX3JlZiggVCAmIHYgKTogdl8oIHYgKSB7fQotICAgIGlubGluZSBvcGVyYXRvciBUJiAoKSBjb25zdCB7IHJldHVybiB2XzsgfQotCi1wcml2YXRlOgotICAgIGFkZHJfaW1wbF9yZWYgJiBvcGVyYXRvcj0oY29uc3QgYWRkcl9pbXBsX3JlZiAmKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRyZXNzb2ZfaW1wbAotewotICAgIHN0YXRpYyBpbmxpbmUgVCAqIGYoIFQgJiB2LCBsb25nICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigKLSAgICAgICAgICAgICZjb25zdF9jYXN0PGNoYXImPihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvbGF0aWxlIGNoYXIgJj4odikpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaW5saW5lIFQgKiBmKCBUICogdiwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPiBUICogYWRkcmVzc29mKCBUICYgdiApCi17Ci0jaWYgKGRlZmluZWQoIF9fQk9STEFORENfXyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDYxMCApICkgKSB8fCBkZWZpbmVkKCBfX1NVTlBST19DQyApCi0KLSAgICByZXR1cm4gbmRuYm9vc3Q6OmRldGFpbDo6YWRkcmVzc29mX2ltcGw8VD46OmYoIHYsIDAgKTsKLQotI2Vsc2UKLQotICAgIHJldHVybiBuZG5ib29zdDo6ZGV0YWlsOjphZGRyZXNzb2ZfaW1wbDxUPjo6ZiggbmRuYm9vc3Q6OmRldGFpbDo6YWRkcl9pbXBsX3JlZjxUPiggdiApLCAwICk7Ci0KLSNlbmRpZgotfQotCi0jaWYgZGVmaW5lZCggX19TVU5QUk9fQ0MgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDU5MCApICkKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgYWRkcmVzc29mX2FkZHAKLXsKLSAgICB0eXBlZGVmIFQgKiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4KLXR5cGVuYW1lIGRldGFpbDo6YWRkcmVzc29mX2FkZHA8IFRbTl0gPjo6dHlwZSBhZGRyZXNzb2YoIFQgKCZ0KVtOXSApCi17Ci0gICAgcmV0dXJuICZ0OwotfQotCi0jZW5kaWYKLQotLy8gQm9ybGFuZCBkb2Vzbid0IGxpa2UgY2FzdGluZyBhbiBhcnJheSByZWZlcmVuY2UgdG8gYSBjaGFyIHJlZmVyZW5jZQotLy8gYnV0IHRoZXNlIG92ZXJsb2FkcyB3b3JrIGFyb3VuZCB0aGUgcHJvYmxlbS4KLSNpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLXRlbXBsYXRlPHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTj4KLVQgKCphZGRyZXNzb2YoVCAoJnQpW05dKSlbTl0KLXsKLSAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQoKilbTl0+KCZ0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOPgotY29uc3QgVCAoKmFkZHJlc3NvZihjb25zdCBUICgmdClbTl0pKVtOXQotewotICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCgqKVtOXT4oJnQpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9VVElMSVRZX0FERFJFU1NPRl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk5YmQzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vLyAgYm9vc3QgdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDIwMDEsIDIwMDMsIDIwMDQgRGFyeWxlIFdhbGtlci4gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQKLS8vICBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBhIGNvcHkgYXQKLS8vICA8aHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Pi4pCi0KLS8vICBTZWUgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0JBU0VfRlJPTV9NRU1CRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfQkFTRV9GUk9NX01FTUJFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwPgotCi0KLS8vICBCYXNlLWZyb20tbWVtYmVyIGFyaXR5IGNvbmZpZ3VyYXRpb24gbWFjcm8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFRoZSBmb2xsb3dpbmcgbWFjcm8gZGV0ZXJtaW5lcyBob3cgbWFueSBhcmd1bWVudHMgd2lsbCBiZSBpbiB0aGUgbGFyZ2VzdAotLy8gY29uc3RydWN0b3IgdGVtcGxhdGUgb2YgYmFzZV9mcm9tX21lbWJlci4gIENvbnN0cnVjdG9yIHRlbXBsYXRlcyB3aWxsIGJlCi0vLyBnZW5lcmF0ZWQgZnJvbSBvbmUgYXJndW1lbnQgdG8gdGhpcyBtYXhpbXVtLiAgQ29kZSBmcm9tIG90aGVyIGZpbGVzIGNhbiByZWFkCi0vLyB0aGlzIG51bWJlciBpZiB0aGV5IG5lZWQgdG8gYWx3YXlzIG1hdGNoIHRoZSBleGFjdCBtYXhpbXVtIGJhc2VfZnJvbV9tZW1iZXIKLS8vIHVzZXMuICBUaGUgbWF4aW11bSBjb25zdHJ1Y3RvciBsZW5ndGggY2FuIGJlIGNoYW5nZWQgYnkgb3ZlcnJpZGluZyB0aGUKLS8vICNkZWZpbmVkIGNvbnN0YW50LiAgTWFrZSBzdXJlIHRvIGFwcGx5IHRoZSBvdmVycmlkZSwgaWYgYW55LCBmb3IgYWxsIHNvdXJjZQotLy8gZmlsZXMgZHVyaW5nIHByb2plY3QgY29tcGlsaW5nIGZvciBjb25zaXN0ZW5jeS4KLQotLy8gQ29udHJpYnV0ZWQgYnkgSm9uYXRoYW4gVHVya2FuaXMKLQotI2lmbmRlZiBORE5CT09TVF9CQVNFX0ZST01fTUVNQkVSX01BWF9BUklUWQotI2RlZmluZSBORE5CT09TVF9CQVNFX0ZST01fTUVNQkVSX01BWF9BUklUWSAgMTAKLSNlbmRpZgotCi0KLS8vICBBbiBpdGVyYXRpb24gb2YgYSBjb25zdHJ1Y3RvciB0ZW1wbGF0ZSBmb3IgYmFzZV9mcm9tX21lbWJlciAgLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEEgbWFjcm8gdGhhdCBzaG91bGQgZXhwYW5kIHRvOgotLy8gICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgVDEsIC4uLiwgdHlwZW5hbWUgVG4gPgotLy8gICAgIGJhc2VfZnJvbV9tZW1iZXIoIFQxIHgxLCAuLi4sIFRuIHhuICkKLS8vICAgICAgICAgOiBtZW1iZXIoIHgxLCAuLi4sIHhuICkKLS8vICAgICAgICAge30KLS8vIFRoaXMgbWFjcm8gc2hvdWxkIG9ubHkgcGVyc2lzdCB3aXRoaW4gdGhpcyBmaWxlLgotCi0jZGVmaW5lIE5ETkJPT1NUX1BSSVZBVEVfQ1RSX0RFRiggeiwgbiwgZGF0YSApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHR5cGVuYW1lIFQpID4gICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IGJhc2VfZnJvbV9tZW1iZXIoIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhuLCBULCB4KSApICBcCi0gICAgICAgIDogbWVtYmVyKCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB4KSApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKi8KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gIEJhc2UtZnJvbS1tZW1iZXIgY2xhc3MgdGVtcGxhdGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gSGVscGVyIHRvIGluaXRpYWxpemUgYSBiYXNlIG9iamVjdCBzbyBhIGRlcml2ZWQgY2xhc3MgY2FuIHVzZSB0aGlzCi0vLyBvYmplY3QgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIGFub3RoZXIgYmFzZSBjbGFzcy4gIFVzZWQgYnkKLS8vIERpZXRtYXIgS3VlaGwgZnJvbSBpZGVhcyBieSBSb24gS2xhdGNobyB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZiBhCi0vLyBiYXNlIGNsYXNzIG5lZWRpbmcgdG8gYmUgaW5pdGlhbGl6ZWQgYnkgYSBtZW1iZXIuCi0KLS8vIENvbnRyaWJ1dGVkIGJ5IERhcnlsZSBXYWxrZXIKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBNZW1iZXJUeXBlLCBpbnQgVW5pcXVlSUQgPSAwID4KLWNsYXNzIGJhc2VfZnJvbV9tZW1iZXIKLXsKLXByb3RlY3RlZDoKLSAgICBNZW1iZXJUeXBlICBtZW1iZXI7Ci0KLSAgICBiYXNlX2Zyb21fbWVtYmVyKCkKLSAgICAgICAgOiBtZW1iZXIoKQotICAgICAgICB7fQotCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oIDEsIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9CQVNFX0ZST01fTUVNQkVSX01BWF9BUklUWSksCi0gICAgIE5ETkJPT1NUX1BSSVZBVEVfQ1RSX0RFRiwgXyApCi0KLX07ICAvLyBuZG5ib29zdDo6YmFzZV9mcm9tX21lbWJlcgotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0vLyBVbmRvIGFueSBwcml2YXRlIG1hY3JvcwotI3VuZGVmIE5ETkJPT1NUX1BSSVZBVEVfQ1RSX0RFRgotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVVRJTElUWV9CQVNFX0ZST01fTUVNQkVSX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2JpbmFyeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmluYXJ5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0MWFmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmluYXJ5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwOCArMCwwIEBACi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgQ29weXJpZ2h0IChjKSAyMDA1IE1hdHRoZXcgQ2FsYWJyZXNlCi0KLSAgICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0gICAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfQklOQVJZX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0JJTkFSWV9IUFAKLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0gICAgQmluYXJ5IExpdGVyYWwgVXRpbGl0eQotICAgIF9fX19fX19fX19fX19fX19fX19fX18KLQotCi0gICAgVGhlIGZvbGxvd2luZyBjb2RlIHdvcmtzIGJ5IGNvbnZlcnRpbmcgdGhlIGlucHV0IGJpdCBwYXR0ZXJuIGludG8gYQotICAgIEJvb3N0LlByZXByb2Nlc3NvciBzZXF1ZW5jZSwgdGhlbiBjb252ZXJ0aW5nIGdyb3VwaW5ncyBvZiAzIGJpdHMgZWFjaCBpbnRvCi0gICAgdGhlIGNvcnJlc3BvbmRpbmcgb2N0YWwgZGlnaXQsIGFuZCBmaW5hbGx5IGNvbmNhdGVuYXRpbmcgYWxsIG9mIHRoZSBkaWdpdHMKLSAgICB0b2dldGhlciBhbG9uZyB3aXRoIGEgbGVhZGluZyB6ZXJvLiBUaGlzIHlpZWxkcyBhIHN0YW5kYXJkIG9jdGFsIGxpdGVyYWwKLSAgICB3aXRoIHRoZSBkZXNpcmVkIHZhbHVlIGFzIHNwZWNpZmllZCBpbiBiaXRzLgotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGVkdWNlX2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL21vZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWSggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9CSU5BUllfTElURVJBTF9EKCBORE5CT09TVF9QUF9ERURVQ0VfRCgpLCBiaXRfZ3JvdXBpbmdzICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX1UoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBVICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX0woIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBMICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX1VMKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBVTCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9MVSggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgTFUgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfTEwoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIExMICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX1VMTCggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBVTEwgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfTExVKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIExMVSApIAotCi0jZGVmaW5lIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBzdWZmaXggKSAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTF9EKCBORE5CT09TVF9QUF9ERURVQ0VfRCgpLCBiaXRfZ3JvdXBpbmdzLCBzdWZmaXggKSAKLQotI2RlZmluZSBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTF9EKCBkLCBiaXRfZ3JvdXBpbmdzLCBzdWZmaXggKSAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9CSU5BUllfTElURVJBTF9EKCBkLCBiaXRfZ3JvdXBpbmdzICksIHN1ZmZpeCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9MSVRFUkFMX0QoIGQsIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9QUF9TRVFfQ0FUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCAoMCkgTkROQk9PU1RfREVUQUlMX0NSRUFURV9CSU5BUllfTElURVJBTF9PQ1RBTF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICBcCi0gICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NSRUFURV9CSU5BUllfTElURVJBTF9PQ1RBTF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICBcCi0gIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfT1BFUkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBORE5CT09TVF9QUF9OSUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICwgTkROQk9PU1RfUFBfSURFTlRJVFkoIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19UUklQTEVfU0VRVUVOQ0UgKSgpXAotICAgICggTkROQk9PU1RfREVUQUlMX0NPTVBMRVRFX1RSSVBMRV9TRVFVRU5DRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgLCBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX0JJTkFSWV9MSVRFUkFMX0JJVF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICAgIFwKLSAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19UUklQTEVfU0VRVUVOQ0UoIGJpdF9zZXF1ZW5jZSApICAgXAotICBORE5CT09TVF9QUF9DQVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMSBiaXRfc2VxdWVuY2UgICAgICBcCi0gICwgRU5EX0JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSVRTX1BFUl9PQ1RJVCAzCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NPTVBMRVRFX1RSSVBMRV9TRVFVRU5DRSggZCwgaW5jb21wbGV0ZV9uaWJibGVfc2VxdWVuY2UgKSBcCi0gIE5ETkJPT1NUX1BQX0NBVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfVFJJUExFX0NPTVBMRVRJT05fU0VRVUVOQ0VfICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBORE5CT09TVF9QUF9NT0RfRCggZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKCBpbmNvbXBsZXRlX25pYmJsZV9zZXF1ZW5jZSApICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9ERVRBSUxfQklUU19QRVJfT0NUSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmNvbXBsZXRlX25pYmJsZV9zZXF1ZW5jZSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUEwoIGJpdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUExfLCBiaXQgKQotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9GSVhFRF9DT01QTF8wIDEgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0ZJWEVEX0NPTVBMXzEgMCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX0JJTkFSWV9MSVRFUkFMX0JJVF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICAgIFwKLSAgTkROQk9PU1RfUFBfRU1QVFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfV0hJTEVfLCBkICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9QUkVESUNBVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfT1BFUkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICwgYml0X2dyb3VwaW5ncyAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9QUkVESUNBVEUoIGQsIHN0YXRlICkgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUEwoIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1MoIHN0YXRlICkgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfT1BFUkFUSU9OKCBkLCBzdGF0ZSApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX1NQTElUX0FORF9TV0FQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8sIHN0YXRlICkgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMX09QRVJBVElPTiggcywgZHVtbXlfcGFyYW0sIHR1cGxlICkgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX1RFUk5BUllfVFJJUExFX1RPX09DVEFMIHR1cGxlIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9URVJOQVJZX1RSSVBMRV9UT19PQ1RBTCggYml0MiwgYml0MSwgYml0MCApICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXyAjIyBiaXQyICMjIGJpdDEgIyMgYml0MCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX1RSSVBMRV9DT01QTEVUSU9OX1NFUVVFTkNFXzEgKDApKDApCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfVFJJUExFX0NPTVBMRVRJT05fU0VRVUVOQ0VfMiAoMCkKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NSRUFURV9UUklQTEVfQ09NUExFVElPTl9TRVFVRU5DRV8wICAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMUVORF9CSVQgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8xKCBiaXQgKSAgICAgICAgXAotICAoICggYml0LCBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMiAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMiggYml0ICkgICAgICAgIFwKLSAgYml0LCBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMyAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMyggYml0ICkgICAgICAgIFwKLSAgYml0ICkgKSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BMSVRfQU5EX1NXQVAoIHBhcmFtcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfSURFTlRJVFkoIE5ETkJPT1NUX0RFVEFJTF9TUExJVF9BTkRfU1dBUF9QQVJBTVMgKSgpKCBwYXJhbXMgKQotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUExJVF9BTkRfU1dBUF9QQVJBTVMoIGZpcnN0X3BhcmFtLCBzZWNvbmRfcGFyYW0gKSAgICAgICAgXAotICBzZWNvbmRfcGFyYW0gZmlyc3RfcGFyYW0gCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0xFRlRfT0ZfQ09NTUEoIHBhcmFtcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0lERU5USVRZKCBORE5CT09TVF9ERVRBSUxfRklSU1RfTUFDUk9fUEFSQU0gKSgpKCBwYXJhbXMgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfRklSU1RfTUFDUk9fUEFSQU0oIGZpcnN0X3BhcmFtLCBzZWNvbmRfcGFyYW0gKSAgICAgICAgICAgIFwKLSAgZmlyc3RfcGFyYW0gCi0KLS8qIEJlZ2luIGRlcml2ZWQgY29uY2VwdHMgZnJvbSBDaGFvcyBieSBQYXVsIE1lbnNvbmlkZXMgKi8KLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTKCBwYXJhbSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX0xFRlRfT0ZfQ09NTUEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX1JfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICwgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19DIHBhcmFtICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19DKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIDEgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19SXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIDEsIE5ETkJPT1NUX1BQX05JTCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX1JfTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19DICAgICAgICAgIFwKLSAgMCwgTkROQk9PU1RfUFBfTklMIAotCi0vKiBFbmQgZGVyaXZlZCBjb25jZXB0cyBmcm9tIENoYW9zIGJ5IFBhdWwgTWVuc29uaWRlcyAqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDAwIDAgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDAxIDEgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDEwIDIgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDExIDMgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTAwIDQgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTAxIDUgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTEwIDYgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTExIDcgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMCAoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xICgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAgKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEgKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAgKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEgKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAgKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEgKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAgKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEgKDEpKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAgKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxICgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMCAoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEgKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwICgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMSAoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAgKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExICgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMCAoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxICgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAgKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMSAoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwICgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEgKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMCAoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExICgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAgKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMSAoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwICgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEgKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMCAoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxICgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAgKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMSAoMSkoMSkoMSkoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwICgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxICgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwICgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExICgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwICgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxICgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwICgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExICgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwICgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxICgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwICgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExICgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwICgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxICgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwICgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExICgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwICgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxICgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwICgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExICgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwICgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxICgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwICgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExICgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwICgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxICgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwICgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExICgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwICgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxICgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwICgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExICgxKSgxKSgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwICgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMSAoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAgKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExICgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMCAoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDEgKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwICgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMSAoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAgKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxICgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMCAoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTEgKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwICgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMSAoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAgKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExICgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMCAoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDEgKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwICgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMSAoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAgKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxICgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMCAoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTEgKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwICgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMSAoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAgKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExICgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMCAoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDEgKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwICgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMSAoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAgKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxICgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMCAoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTEgKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwICgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMSAoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAgKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExICgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMCAoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDEgKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwICgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMSAoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAgKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxICgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMCAoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTEgKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwICgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMSAoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAgKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExICgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMCAoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDEgKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwICgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMSAoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAgKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxICgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMCAoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTEgKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwICgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMSAoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAgKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExICgxKSgxKSgxKSgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMCAoMCkoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAxICgwKSgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMTAgKDApKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMSAoMCkoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAwICgwKSgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMDEgKDApKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMCAoMCkoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTExICgwKSgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMDAgKDApKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMSAoMCkoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDEwICgwKSgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMTEgKDApKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMCAoMCkoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAxICgwKSgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMTAgKDApKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMSAoMCkoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAwICgwKSgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMDEgKDApKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMCAoMCkoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDExICgwKSgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMDAgKDApKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMSAoMCkoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTEwICgwKSgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMTEgKDApKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMCAoMCkoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAxICgwKSgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMTAgKDApKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMSAoMCkoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAwICgwKSgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMDEgKDApKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMCAoMCkoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTExICgwKSgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMDAgKDApKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMSAoMCkoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDEwICgwKSgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMTEgKDApKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMCAoMCkoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAxICgwKSgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMTAgKDApKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMSAoMCkoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAwICgwKSgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMDEgKDApKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMCAoMCkoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDExICgwKSgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMDAgKDApKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMSAoMCkoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTEwICgwKSgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMTEgKDApKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMCAoMCkoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAxICgwKSgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMTAgKDApKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMSAoMCkoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAwICgwKSgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMDEgKDApKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMCAoMCkoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTExICgwKSgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMDAgKDApKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMSAoMCkoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDEwICgwKSgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMTEgKDApKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMCAoMCkoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAxICgwKSgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMTAgKDApKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMSAoMCkoMSkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAwICgxKSgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMDEgKDEpKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMCAoMSkoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDExICgxKSgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMDAgKDEpKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMSAoMSkoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTEwICgxKSgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMTEgKDEpKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMCAoMSkoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAxICgxKSgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMTAgKDEpKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMSAoMSkoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAwICgxKSgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMDEgKDEpKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMCAoMSkoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTExICgxKSgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMDAgKDEpKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMSAoMSkoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDEwICgxKSgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMTEgKDEpKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMCAoMSkoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAxICgxKSgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMTAgKDEpKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMSAoMSkoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAwICgxKSgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMDEgKDEpKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMCAoMSkoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDExICgxKSgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMDAgKDEpKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMSAoMSkoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTEwICgxKSgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMTEgKDEpKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMCAoMSkoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAxICgxKSgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMTAgKDEpKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMSAoMSkoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAwICgxKSgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMDEgKDEpKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMCAoMSkoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTExICgxKSgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMDAgKDEpKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMSAoMSkoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDEwICgxKSgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMTEgKDEpKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMCAoMSkoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAxICgxKSgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMTAgKDEpKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMSAoMSkoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAwICgxKSgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMDEgKDEpKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMCAoMSkoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDExICgxKSgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMDAgKDEpKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMSAoMSkoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTEwICgxKSgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMTEgKDEpKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMCAoMSkoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAxICgxKSgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMTAgKDEpKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMSAoMSkoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAwICgxKSgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMDEgKDEpKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMCAoMSkoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTExICgxKSgxKSgxKSgxKSgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMDAgKDApKDApKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMDEgKDApKDApKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMTAgKDApKDApKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMTEgKDApKDApKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMDAgKDApKDApKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMDEgKDApKDApKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMTAgKDApKDApKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMTEgKDApKDApKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMDAgKDApKDApKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMDEgKDApKDApKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMTAgKDApKDApKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMTEgKDApKDApKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMDAgKDApKDApKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMDEgKDApKDApKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMTAgKDApKDApKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMTEgKDApKDApKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMDAgKDApKDApKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMDEgKDApKDApKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMTAgKDApKDApKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMTEgKDApKDApKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMDAgKDApKDApKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMDEgKDApKDApKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMTAgKDApKDApKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMTEgKDApKDApKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMDAgKDApKDApKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMDEgKDApKDApKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMTAgKDApKDApKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMTEgKDApKDApKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMDAgKDApKDApKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMDEgKDApKDApKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMTAgKDApKDApKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMTEgKDApKDApKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMDAgKDApKDApKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMDEgKDApKDApKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMTAgKDApKDApKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMTEgKDApKDApKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMDAgKDApKDApKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMDEgKDApKDApKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMTAgKDApKDApKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMTEgKDApKDApKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMDAgKDApKDApKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMDEgKDApKDApKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMTAgKDApKDApKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMTEgKDApKDApKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMDAgKDApKDApKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMDEgKDApKDApKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMTAgKDApKDApKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMTEgKDApKDApKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMDAgKDApKDApKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMDEgKDApKDApKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMTAgKDApKDApKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMTEgKDApKDApKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMDAgKDApKDApKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMDEgKDApKDApKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMTAgKDApKDApKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMTEgKDApKDApKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMDAgKDApKDApKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMDEgKDApKDApKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMTAgKDApKDApKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMTEgKDApKDApKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMDAgKDApKDApKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMDEgKDApKDApKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMTAgKDApKDApKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMTEgKDApKDApKDEpKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMDAgKDApKDEpKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMDEgKDApKDEpKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMTAgKDApKDEpKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMTEgKDApKDEpKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMDAgKDApKDEpKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMDEgKDApKDEpKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMTAgKDApKDEpKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMTEgKDApKDEpKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMDAgKDApKDEpKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMDEgKDApKDEpKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMTAgKDApKDEpKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMTEgKDApKDEpKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMDAgKDApKDEpKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMDEgKDApKDEpKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMTAgKDApKDEpKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMTEgKDApKDEpKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMDAgKDApKDEpKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMDEgKDApKDEpKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMTAgKDApKDEpKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMTEgKDApKDEpKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMDAgKDApKDEpKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMDEgKDApKDEpKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMTAgKDApKDEpKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMTEgKDApKDEpKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMDAgKDApKDEpKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMDEgKDApKDEpKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMTAgKDApKDEpKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMTEgKDApKDEpKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMDAgKDApKDEpKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMDEgKDApKDEpKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMTAgKDApKDEpKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMTEgKDApKDEpKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMDAgKDApKDEpKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMDEgKDApKDEpKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMTAgKDApKDEpKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMTEgKDApKDEpKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMDAgKDApKDEpKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMDEgKDApKDEpKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMTAgKDApKDEpKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMTEgKDApKDEpKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMDAgKDApKDEpKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMDEgKDApKDEpKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMTAgKDApKDEpKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMTEgKDApKDEpKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMDAgKDApKDEpKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMDEgKDApKDEpKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMTAgKDApKDEpKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMTEgKDApKDEpKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMDAgKDApKDEpKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMDEgKDApKDEpKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMTAgKDApKDEpKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMTEgKDApKDEpKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMDAgKDApKDEpKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMDEgKDApKDEpKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMTAgKDApKDEpKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMTEgKDApKDEpKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMDAgKDApKDEpKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMDEgKDApKDEpKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMTAgKDApKDEpKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMTEgKDApKDEpKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMDAgKDApKDEpKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMDEgKDApKDEpKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMTAgKDApKDEpKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMTEgKDApKDEpKDEpKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMDAgKDEpKDApKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMDEgKDEpKDApKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMTAgKDEpKDApKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMTEgKDEpKDApKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMDAgKDEpKDApKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMDEgKDEpKDApKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMTAgKDEpKDApKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMTEgKDEpKDApKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMDAgKDEpKDApKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMDEgKDEpKDApKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMTAgKDEpKDApKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMTEgKDEpKDApKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMDAgKDEpKDApKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMDEgKDEpKDApKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMTAgKDEpKDApKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMTEgKDEpKDApKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMDAgKDEpKDApKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMDEgKDEpKDApKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMTAgKDEpKDApKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMTEgKDEpKDApKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMDAgKDEpKDApKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMDEgKDEpKDApKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMTAgKDEpKDApKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMTEgKDEpKDApKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMDAgKDEpKDApKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMDEgKDEpKDApKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMTAgKDEpKDApKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMTEgKDEpKDApKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMDAgKDEpKDApKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMDEgKDEpKDApKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMTAgKDEpKDApKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMTEgKDEpKDApKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMDAgKDEpKDApKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMDEgKDEpKDApKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMTAgKDEpKDApKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMTEgKDEpKDApKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMDAgKDEpKDApKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMDEgKDEpKDApKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMTAgKDEpKDApKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMTEgKDEpKDApKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMDAgKDEpKDApKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMDEgKDEpKDApKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMTAgKDEpKDApKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMTEgKDEpKDApKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMDAgKDEpKDApKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMDEgKDEpKDApKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMTAgKDEpKDApKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMTEgKDEpKDApKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMDAgKDEpKDApKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMDEgKDEpKDApKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMTAgKDEpKDApKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMTEgKDEpKDApKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMDAgKDEpKDApKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMDEgKDEpKDApKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMTAgKDEpKDApKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMTEgKDEpKDApKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMDAgKDEpKDApKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMDEgKDEpKDApKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMTAgKDEpKDApKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMTEgKDEpKDApKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMDAgKDEpKDApKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMDEgKDEpKDApKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMTAgKDEpKDApKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMTEgKDEpKDApKDEpKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMDAgKDEpKDEpKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMDEgKDEpKDEpKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMTAgKDEpKDEpKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMTEgKDEpKDEpKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMDAgKDEpKDEpKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMDEgKDEpKDEpKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMTAgKDEpKDEpKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMTEgKDEpKDEpKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMDAgKDEpKDEpKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMDEgKDEpKDEpKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMTAgKDEpKDEpKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMTEgKDEpKDEpKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMDAgKDEpKDEpKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMDEgKDEpKDEpKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMTAgKDEpKDEpKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMTEgKDEpKDEpKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMDAgKDEpKDEpKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMDEgKDEpKDEpKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMTAgKDEpKDEpKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMTEgKDEpKDEpKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMDAgKDEpKDEpKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMDEgKDEpKDEpKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMTAgKDEpKDEpKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMTEgKDEpKDEpKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMDAgKDEpKDEpKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMDEgKDEpKDEpKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMTAgKDEpKDEpKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMTEgKDEpKDEpKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMDAgKDEpKDEpKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMDEgKDEpKDEpKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMTAgKDEpKDEpKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMTEgKDEpKDEpKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMDAgKDEpKDEpKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMDEgKDEpKDEpKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMTAgKDEpKDEpKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMTEgKDEpKDEpKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMDAgKDEpKDEpKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMDEgKDEpKDEpKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMTAgKDEpKDEpKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMTEgKDEpKDEpKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMDAgKDEpKDEpKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMDEgKDEpKDEpKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMTAgKDEpKDEpKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMTEgKDEpKDEpKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMDAgKDEpKDEpKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMDEgKDEpKDEpKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMTAgKDEpKDEpKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMTEgKDEpKDEpKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMDAgKDEpKDEpKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMDEgKDEpKDEpKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMTAgKDEpKDEpKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMTEgKDEpKDEpKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMDAgKDEpKDEpKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMDEgKDEpKDEpKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMTAgKDEpKDEpKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMTEgKDEpKDEpKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMDAgKDEpKDEpKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMDEgKDEpKDEpKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMTAgKDEpKDEpKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMTEgKDEpKDEpKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMDAgKDEpKDEpKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMDEgKDEpKDEpKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMTAgKDEpKDEpKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMTEgKDEpKDEpKDEpKDEpKDEpKDEpKDEpKDEpLCAKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvY29tcGFyZV9wb2ludGVlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvY29tcGFyZV9wb2ludGVlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZjFkZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2NvbXBhcmVfcG9pbnRlZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0NPTVBBUkVfUE9JTlRFRVNfMjVBR08yMDAzX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0NPTVBBUkVfUE9JTlRFRVNfMjVBR08yMDAzX0hQUAotCi0jaW5jbHVkZTxmdW5jdGlvbmFsPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyB0ZW1wbGF0ZTxjbGFzcyBPUD4gYm9vbCBlcXVhbF9wb2ludGVlcyhPUCBjb25zdCYgeCwgT1AgY29uc3QmIHkpOwotLy8gdGVtcGxhdGU8Y2xhc3MgT1A+IHN0cnVjdCBlcXVhbF9wb2ludGVlc190OwotLy8KLS8vIEJlaW5nIE9QIGEgbW9kZWwgb2YgT3B0aW9uYWxQb2ludGVlIChlaXRoZXIgYSBwb2ludGVyIG9yIGFuIG9wdGlvbmFsKToKLS8vCi0vLyBJZiBib3RoIHggYW5kIHkgaGF2ZSB2YWxpZCBwb2ludGVlcywgcmV0dXJucyB0aGUgcmVzdWx0IG9mICgqeCA9PSAqeSkKLS8vIElmIG9ubHkgb25lIGhhcyBhIHZhbGlkIHBvaW50ZWUsIHJldHVybnMgZmFsc2UuCi0vLyBJZiBub25lIGhhdmUgdmFsaWQgcG9pbnRlZXMsIHJldHVybnMgdHJ1ZS4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBPcHRpb25hbFBvaW50ZWU+Ci1pbmxpbmUKLWJvb2wgZXF1YWxfcG9pbnRlZXMgKCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHgsIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeSApCi17Ci0gIHJldHVybiAoIXgpICE9ICgheSkgPyBmYWxzZSA6ICggIXggPyB0cnVlIDogKCp4KSA9PSAoKnkpICkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBPcHRpb25hbFBvaW50ZWU+Ci1zdHJ1Y3QgZXF1YWxfcG9pbnRlZXNfdCA6IHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPE9wdGlvbmFsUG9pbnRlZSxPcHRpb25hbFBvaW50ZWUsYm9vbD4KLXsKLSAgYm9vbCBvcGVyYXRvcigpICggT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB4LCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHkgKSBjb25zdAotICAgIHsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgseSkgOyB9Ci19IDsKLQotLy8gdGVtcGxhdGU8Y2xhc3MgT1A+IGJvb2wgbGVzc19wb2ludGVlcyhPUCBjb25zdCYgeCwgT1AgY29uc3QmIHkpOwotLy8gdGVtcGxhdGU8Y2xhc3MgT1A+IHN0cnVjdCBsZXNzX3BvaW50ZWVzX3Q7Ci0vLwotLy8gQmVpbmcgT1AgYSBtb2RlbCBvZiBPcHRpb25hbFBvaW50ZWUgKGVpdGhlciBhIHBvaW50ZXIgb3IgYW4gb3B0aW9uYWwpOgotLy8KLS8vIElmIHkgaGFzIG5vdCBhIHZhbGlkIHBvaW50ZWUsIHJldHVybnMgZmFsc2UuCi0vLyBFbHNlSWYgeCBoYXMgbm90IGEgdmFsaWQgcG9pbnRlZSwgcmV0dXJucyB0cnVlLgotLy8gRWxzZUlmIGJvdGggeCBhbmQgeSBoYXZlIHZhbGlkIHBvaW50ZWVzLCByZXR1cm5zIHRoZSByZXN1bHQgb2YgKCp4IDwgKnkpCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgT3B0aW9uYWxQb2ludGVlPgotaW5saW5lCi1ib29sIGxlc3NfcG9pbnRlZXMgKCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHgsIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeSApCi17Ci0gIHJldHVybiAheSA/IGZhbHNlIDogKCAheCA/IHRydWUgOiAoKngpIDwgKCp5KSApIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgT3B0aW9uYWxQb2ludGVlPgotc3RydWN0IGxlc3NfcG9pbnRlZXNfdCA6IHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPE9wdGlvbmFsUG9pbnRlZSxPcHRpb25hbFBvaW50ZWUsYm9vbD4KLXsKLSAgYm9vbCBvcGVyYXRvcigpICggT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB4LCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHkgKSBjb25zdAotICAgIHsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoeCx5KSA7IH0KLX0gOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWUxYTM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICBjb21tb25fdHlwZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgMjAxMCBWaWNlbnRlIEouIEJvdGV0IEVzY3JpYmEKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0RFQ0xWQUxfX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfREVDTFZBTF9fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwPgotLy8jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrMDMgaW1wbGVtZW50YXRpb24gb2YgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBWaWNlbnRlIEouIEJvdGV0IEVzY3JpYmEgICAgICAgICAgICAgICAvLwotLy9+IDIwLjMuNCBGdW5jdGlvbiB0ZW1wbGF0ZSBkZWNsdmFsIFtkZWNsdmFsXQotLy9+IDEgVGhlIGxpYnJhcnkgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlIGRlY2x2YWwgdG8gc2ltcGxpZnkgdGhlIGRlZmluaXRpb24gb2YgZXhwcmVzc2lvbnMgd2hpY2ggb2NjdXIgYXMKLS8vfiB1bmV2YWx1YXRlZCBvcGVyYW5kcy4KLS8vfiAyIFJlbWFya3M6IElmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCwgdGhlIHByb2dyYW0gaXMgaWxsLWZvcm1lZC4KLS8vfiAzIFJlbWFya3M6IFRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgVCBvZiBkZWNsdmFsIG1heSBiZSBhbiBpbmNvbXBsZXRlIHR5cGUuCi0vL34gWyBFeGFtcGxlOgotCi0vL34gdGVtcGxhdGUgPGNsYXNzIFRvLCBjbGFzcyBGcm9tPgotLy9+IGRlY2x0eXBlKHN0YXRpY19jYXN0PFRvPihkZWNsdmFsPEZyb20+KCkpKSBjb252ZXJ0KEZyb20mJik7Ci0KLS8vfiBkZWNsYXJlcyBhIGZ1bmN0aW9uIHRlbXBsYXRlIGNvbnZlcnQgd2hpY2ggb25seSBwYXJ0aWNpcGF0cyBpbiBvdmVybG9hZGluZyBpZiB0aGUgdHlwZSBGcm9tIGNhbiBiZQotLy9+IGV4cGxpY2l0bHkgY29udmVydGVkIHRvIHR5cGUgVG8uIEZvciBhbm90aGVyIGV4YW1wbGUgc2VlIGNsYXNzIHRlbXBsYXRlIGNvbW1vbl90eXBlICgyMC43LjYuNikuIJdlbmQKLS8vfiBleGFtcGxlIF0KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyNpZiAhZGVmaW5lZChORE5CT09TVF9OT19SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxUPjo6dHlwZSBkZWNsdmFsKCkgTkROQk9PU1RfTk9FWENFUFQ7IC8vIGFzIHVuZXZhbHVhdGVkIG9wZXJhbmQKLS8vI2Vsc2UKLS8vICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLy8gICAgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnR5cGUgZGVjbHZhbCgpIE5ETkJPT1NUX05PRVhDRVBUOyAvLyBhcyB1bmV2YWx1YXRlZCBvcGVyYW5kCi0vLyNlbmRpZgotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0RFQ0xWQUxfX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3ByZWZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3RvcnlfcHJlZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM0YzVhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3RvcnlfcHJlZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcsIFRvYmlhcyBTY2h3aW5nZXIuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1BSRUZJWF8wNEFQUjIwMDdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9QUkVGSVhfMDRBUFIyMDA3X0hQUAotCi0jaW5jbHVkZSA8bmV3PgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vcGFyZW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVGSU5FX0lOUExBQ0VfRkFDVE9SWV9DTEFTU19NRU1CRVJfSU5JVCh6LG4sXykgTkROQk9PU1RfUFBfQ0FUKG1fYSxuKSBORE5CT09TVF9QUF9MUEFSRU4oKSBORE5CT09TVF9QUF9DQVQoYSxuKSBORE5CT09TVF9QUF9SUEFSRU4oKQotI2RlZmluZSBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9ERUNMKHosbixfKSBORE5CT09TVF9QUF9DQVQoQSxuKSBjb25zdCYgTkROQk9PU1RfUFBfQ0FUKG1fYSxuKTsKLQotI2RlZmluZSBORE5CT09TVF9NQVhfSU5QTEFDRV9GQUNUT1JZX0FSSVRZIDEwCi0KLSN1bmRlZiBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfU1VGRklYXzA0QVBSMjAwN19IUFAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9zdWZmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3N1ZmZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NjJkYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3N1ZmZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8gQ29weXJpZ2h0IChDKSAyMDA3LCBUb2JpYXMgU2Nod2luZ2VyLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9TVUZGSVhfMDRBUFIyMDA3X0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfU1VGRklYXzA0QVBSMjAwN19IUFAKLQotI3VuZGVmIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0lOSVQKLSN1bmRlZiBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9ERUNMCi0jdW5kZWYgTkROQk9PU1RfTUFYX0lOUExBQ0VfRkFDVE9SWV9BUklUWQotCi0jdW5kZWYgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1BSRUZJWF8wNEFQUjIwMDdfSFBQCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL3Jlc3VsdF9vZl9pdGVyYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvcmVzdWx0X29mX2l0ZXJhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjI5OGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvcmVzdWx0X29mX2l0ZXJhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8vIEJvb3N0IHJlc3VsdF9vZiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBDb3B5cmlnaHQgRGFuaWVsIFdhbGtlciwgRXJpYyBOaWVibGVyLCBNaWNoZWwgTW9yaW4gMjAwOC0yMDEyLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IKLS8vICBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0jIGVycm9yIEJvb3N0IHJlc3VsdF9vZiAtIGRvIG5vdCBpbmNsdWRlIHRoaXMgZmlsZSEKLSNlbmRpZgotCi0vLyBDV1BybzggcmVxdWlyZXMgYW4gYXJndW1lbnQgaW4gYSBmdW5jdGlvbiB0eXBlIHNwZWNpYWxpemF0aW9uCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAyKSkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gMAotIyBkZWZpbmUgTkROQk9PU1RfUkVTVUxUX09GX0FSR1Mgdm9pZAotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpCi0jZW5kaWYKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZjxGKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKT4KLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIG1wbDo6b3JfPCBpc19wb2ludGVyPEY+LCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcjxGPiA+Ci0gICAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6dHIxX3Jlc3VsdF9vZl9pbXBsPAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKSwKLSAgICAgICAgICAgIChuZG5ib29zdDo6ZGV0YWlsOjpoYXNfcmVzdWx0X3R5cGU8Rj46OnZhbHVlKT4KLSAgICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjp0cjFfcmVzdWx0X29mX2ltcGw8Ci0gICAgICAgICAgICBGLAotICAgICAgICAgICAgRihORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyksCi0gICAgICAgICAgICAobmRuYm9vc3Q6OmRldGFpbDo6aGFzX3Jlc3VsdF90eXBlPEY+Ojp2YWx1ZSk+ID46OnR5cGUgeyB9OwotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFCi0KLS8vIFVzZXMgZGVjbHZhbCBmb2xsb3dpbmcgTjMyMjUgMjAuNy43LjYgd2hlbiBGIGlzIG5vdCBhIHBvaW50ZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHJlc3VsdF9vZjxGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKT4KLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPEY+Ci0gICAgICAgICwgZGV0YWlsOjp0cjFfcmVzdWx0X29mX2ltcGw8Ci0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGUoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBmYWxzZQotICAgICAgICAgID4KLSAgICAgICAgLCBkZXRhaWw6OmNwcDB4X3Jlc3VsdF9vZl9pbXBsPAotICAgICAgICAgICAgICBGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLXt9OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fMl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fMl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxSKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBUKSk+IHsKLSAgICBSIG9wZXJhdG9yKCkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIFQpKSBjb25zdDsKLSAgICB0eXBlZGVmIHJlc3VsdF9vZl9wcml2YXRlX3R5cGUgY29uc3QgJigqcGZuX3QpKC4uLik7Ci0gICAgb3BlcmF0b3IgcGZuX3QoKSBjb25zdCB2b2xhdGlsZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8RiAqPgotICA6IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXzJfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8Rj4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEYgJj4KLSAgOiBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8yXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEY+Ci17fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX3NlbGVjdF9jYWxsX3dyYXBwZXJfdHlwZV8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgaXNfY2xhc3M8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxGPjo6dHlwZT4sCi0gICAgICAgIHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEY+LAotICAgICAgICBtcGw6OmlkZW50aXR5PE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPHR5cGVuYW1lIHJlbW92ZV9jdjxGPjo6dHlwZT4gPgotICAgID4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCB0eXBlbmFtZSBUKT4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2lzX2NhbGxhYmxlXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2Zfc2VsZWN0X2NhbGxfd3JhcHBlcl90eXBlXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEY+Ojp0eXBlIHdyYXBwZXJfdDsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICgKLSAgICAgICAgc2l6ZW9mKHJlc3VsdF9vZl9ub190eXBlKSA9PSBzaXplb2YoZGV0YWlsOjpyZXN1bHRfb2ZfaXNfcHJpdmF0ZV90eXBlKAotICAgICAgICAgICAgKG5kbmJvb3N0OjpkZWNsdmFsPHdyYXBwZXJfdD4oKShORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIG5kbmJvb3N0OjpkZWNsdmFsPFQsID4oKSBORE5CT09TVF9QUF9JTlRFUkNFUFQpKSwgcmVzdWx0X29mX3dlaXJkX3R5cGUoKSkKLSAgICAgICAgKSkKLSAgICApOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgY3BwMHhfcmVzdWx0X29mX2ltcGw8RihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIHRydWU+Ci0gICAgOiBsYXp5X2VuYWJsZV9pZjwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2lzX2NhbGxhYmxlXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIFQpPgotICAgICAgICAsIGNwcDB4X3Jlc3VsdF9vZl9pbXBsPEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBmYWxzZT4KLSAgICAgID4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IGNwcDB4X3Jlc3VsdF9vZl9pbXBsPEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBkZWNsdHlwZSgKLSAgICBuZG5ib29zdDo6ZGVjbHZhbDxGPigpKAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBuZG5ib29zdDo6ZGVjbHZhbDxULCA+KCkgTkROQk9PU1RfUFBfSU5URVJDRVBUKQotICAgICkKLSAgKSB0eXBlOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCBjcHAweF9yZXN1bHRfb2ZfaW1wbDxGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZXN1bHRfb2ZfYWx3YXlzX3ZvaWQ8ZGVjbHR5cGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZWNsdmFsPEY+KCkoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIG5kbmJvb3N0OjpkZWNsdmFsPFQsID4oKSBORE5CT09TVF9QUF9JTlRFUkNFUFQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApPjo6dHlwZT4gewotICB0eXBlZGVmIGRlY2x0eXBlKAotICAgIG5kbmJvb3N0OjpkZWNsdmFsPEY+KCkoCi0gICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIG5kbmJvb3N0OjpkZWNsdmFsPFQsID4oKSBORE5CT09TVF9QUF9JTlRFUkNFUFQpCi0gICAgKQotICApIHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNlbHNlIC8vIGRlZmluZWQoTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRSkKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgcmVzdWx0X29mPEYoTkROQk9PU1RfUkVTVUxUX09GX0FSR1MpPgotICAgIDogdHIxX3Jlc3VsdF9vZjxGKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKT4geyB9OwotI2VuZGlmCi0KLSNlbmRpZiAvLyBkZWZpbmVkKE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUpCi0KLSN1bmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfQVJHUwotCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPj0gMQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSICgqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCAgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoVDA6OiopCi0gICAgICAgICAgICAgICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksCi0gICAgICAgICAgICAgICAgIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoVDA6OiopCi0gICAgICAgICAgICAgICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSkKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0LAotICAgICAgICAgICAgICAgICBGQXJncywgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKFQwOjoqKQotICAgICAgICAgICAgICAgICAgICAgKE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpCi0gICAgICAgICAgICAgICAgICAgICB2b2xhdGlsZSwKLSAgICAgICAgICAgICAgICAgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSIChUMDo6KikKLSAgICAgICAgICAgICAgICAgICAgIChORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKQotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9sYXRpbGUsCi0gICAgICAgICAgICAgICAgIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotI2VuZGlmCi0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQxMjhkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vLyBCb29zdCBlbmFibGVfaWYgbGlicmFyeQotCi0vLyBDb3B5cmlnaHQgMjAwMyAoYykgVGhlIFRydXN0ZWVzIG9mIEluZGlhbmEgVW5pdmVyc2l0eS4KLQotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICAgIEF1dGhvcnM6IEphYWtrbyBKYXJ2aSAoamFqYXJ2aSBhdCBvc2wuaXUuZWR1KQotLy8gICAgICAgICAgICAgSmVyZW1pYWggV2lsbGNvY2sgKGpld2lsbGNvIGF0IG9zbC5pdS5lZHUpCi0vLyAgICAgICAgICAgICBBbmRyZXcgTHVtc2RhaW5lIChsdW1zIGF0IG9zbC5pdS5lZHUpCi0KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0VOQUJMRV9JRl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9FTkFCTEVfSUZfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotCi0vLyBFdmVuIHRoZSBkZWZpbml0aW9uIG9mIGVuYWJsZV9pZiBjYXVzZXMgcHJvYmxlbXMgb24gc29tZSBjb21waWxlcnMsCi0vLyBzbyBpdCdzIG1hY3JvZWQgb3V0IGZvciBhbGwgY29tcGlsZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgU0ZJTkFFCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotIAotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gdm9pZD4KLSAgc3RydWN0IGVuYWJsZV9pZl9jIHsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGVuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IHZvaWQ+IAotICBzdHJ1Y3QgZW5hYmxlX2lmIDogcHVibGljIGVuYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUPgotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWZfYyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBsYXp5X2VuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVD4gCi0gIHN0cnVjdCBsYXp5X2VuYWJsZV9pZiA6IHB1YmxpYyBsYXp5X2VuYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPiB7fTsKLQotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSB2b2lkPgotICBzdHJ1Y3QgZGlzYWJsZV9pZl9jIHsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGRpc2FibGVfaWZfYzx0cnVlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IHZvaWQ+IAotICBzdHJ1Y3QgZGlzYWJsZV9pZiA6IHB1YmxpYyBkaXNhYmxlX2lmX2M8Q29uZDo6dmFsdWUsIFQ+IHt9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQ+Ci0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWZfYyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWZfYzx0cnVlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVD4gCi0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWYgOiBwdWJsaWMgbGF6eV9kaXNhYmxlX2lmX2M8Q29uZDo6dmFsdWUsIFQ+IHt9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gIG5hbWVzcGFjZSBkZXRhaWwgeyB0eXBlZGVmIHZvaWQgZW5hYmxlX2lmX2RlZmF1bHRfVDsgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2MgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGRpc2FibGVfaWZfYyA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWZfYyA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgbGF6eV9kaXNhYmxlX2lmX2MgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBlbmFibGVfaWYgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBkaXNhYmxlX2lmIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWYgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWYgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pZGVudGl0eV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pZGVudGl0eV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdlYjgzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaWRlbnRpdHlfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIExvcmVuem8gQ2FtaW5pdGkKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMAotLy8gKHNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLyBIb21lIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9pZGVudGl0eV90eXBlCi0KLS8qKiBAZmlsZQotV3JhcCB0eXBlIGV4cHJlc3Npb25zIHdpdGggcm91bmQgcGFyZW50aGVzaXMgc28gdGhleSBjYW4gYmUgcGFzc2VkIHRvIG1hY3JvcwotZXZlbiBpZiB0aGV5IGNvbnRhaW4gY29tbWFzLgotKi8KLQotI2lmbmRlZiBORE5CT09TVF9JREVOVElUWV9UWVBFX0hQUF8KLSNkZWZpbmUgTkROQk9PU1RfSURFTlRJVFlfVFlQRV9IUFBfCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwPgotCi0vKioKLUBicmllZiBUaGlzIG1hY3JvIGFsbG93cyB0byB3cmFwIHRoZSBzcGVjaWZpZWQgdHlwZSBleHByZXNzaW9uIHdpdGhpbiBleHRyYQotcm91bmQgcGFyZW50aGVzaXMgc28gdGhlIHR5cGUgY2FuIGJlIHBhc3NlZCBhcyBhIHNpbmdsZSBtYWNybyBwYXJhbWV0ZXIgZXZlbiBpZgotaXQgY29udGFpbnMgY29tbWFzIChub3QgYWxyZWFkeSB3cmFwcGVkIHdpdGhpbiByb3VuZCBwYXJlbnRoZXNpcykuCi0KLUBQYXJhbXMKLUBQYXJhbXtwYXJlbnRoZXNpemVkX3R5cGUsCi1UaGUgdHlwZSBleHByZXNzaW9uIHRvIGJlIHBhc3NlZCBhcyBtYWNybyBwYXJhbWV0ZXIgd3JhcHBlZCBieSBhIHNpbmdsZSBzZXQKLW9mIHJvdW5kIHBhcmVudGhlc2lzIDxjPiguLi4pPC9jPi4KLVRoaXMgdHlwZSBleHByZXNzaW9uIGNhbiBjb250YWluIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgY29tbWFzLgotfQotQEVuZFBhcmFtcwotCi1UaGlzIG1hY3JvIHdvcmtzIG9uIGFueSBDKyswMyBjb21waWxlciAoaXQgZG9lcyBub3QgdXNlIHZhcmlhZGljIG1hY3JvcykuCi0KLVRoaXMgbWFjcm8gbXVzdCBiZSBwcmVmaXhlZCBieSA8Yz50eXBlbmFtZTwvYz4gd2hlbiB1c2VkIHdpdGhpbiB0ZW1wbGF0ZXMuCi1Ob3RlIHRoYXQgdGhlIGNvbXBpbGVyIHdpbGwgbm90IGJlIGFibGUgdG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUgZnVuY3Rpb24KLXRlbXBsYXRlIHBhcmFtZXRlcnMgd2hlbiB0aGV5IGFyZSB3cmFwcGVkIHdpdGggdGhpcyBtYWNybyAodGhlc2UgcGFyYW1ldGVycwotbmVlZCB0byBiZSBleHBsaWNpdGx5IHNwZWNpZmllZCB3aGVuIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlKS4KLQotT24gc29tZSBjb21waWxlcnMgKGxpa2UgR0NDKSwgdXNpbmcgdGhpcyBtYWNybyBvbiBhYnN0cmFjdCB0eXBlcyByZXF1aXJlcyB0bwotYWRkIGFuZCByZW1vdmUgYSByZWZlcmVuY2UgdG8gdGhlIHNwZWNpZmllZCB0eXBlLgotKi8KLSNkZWZpbmUgTkROQk9PU1RfSURFTlRJVFlfVFlQRShwYXJlbnRoZXNpemVkX3R5cGUpIFwKLSAgICAvKiBtdXN0IE5PVCBwcmVmaXggdGhpcyB3aXRoIGA6OmAgdG8gd29yayB3aXRoIHBhcmVudGhlc2l6ZWQgc3ludGF4ICovIFwKLSAgICBuZG5ib29zdDo6ZnVuY3Rpb25fdHJhaXRzPCB2b2lkIHBhcmVudGhlc2l6ZWRfdHlwZSA+OjphcmcxX3R5cGUKLQotI2VuZGlmIC8vICNpbmNsdWRlIGd1YXJkCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwNzdkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaW5fcGxhY2VfZmFjdG9yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8gQ29weXJpZ2h0IChDKSAyMDA3LCBUb2JpYXMgU2Nod2luZ2VyLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfSU5QTEFDRV9GQUNUT1JZXzA0QVBSMjAwN19IUFAKLSNpZm5kZWYgTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3ByZWZpeC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLWNsYXNzIGluX3BsYWNlX2ZhY3RvcnlfYmFzZSB7fSA7Ci0KLSNkZWZpbmUgIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMgKDAsIE5ETkJPT1NUX01BWF9JTlBMQUNFX0ZBQ1RPUllfQVJJVFkpCi0jZGVmaW5lICBORE5CT09TVF9QUF9GSUxFTkFNRV8xIDxuZG5ib29zdC91dGlsaXR5L2luX3BsYWNlX2ZhY3RvcnkuaHBwPgotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3N1ZmZpeC5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9JTlBMQUNFX0ZBQ1RPUllfMDRBUFIyMDA3X0hQUAotI2Vsc2UKLSNkZWZpbmUgTiBORE5CT09TVF9QUF9JVEVSQVRJT04oKQotCi0jaWYgTgotdGVtcGxhdGU8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIGNsYXNzIEEpID4KLSNlbmRpZgotY2xhc3MgTkROQk9PU1RfUFBfQ0FUKGluX3BsYWNlX2ZhY3RvcnksTikKLSAgOiAKLSAgcHVibGljIGluX3BsYWNlX2ZhY3RvcnlfYmFzZQotewotcHVibGljOgotCi0gIGV4cGxpY2l0IE5ETkJPT1NUX1BQX0NBVChpbl9wbGFjZV9mYWN0b3J5LE4pCi0gICAgICAoIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhOLEEsY29uc3QmIGEpICkKLSNpZiBOID4gMAotICAgIDogTkROQk9PU1RfUFBfRU5VTShOLCBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9JTklULCBfKQotI2VuZGlmCi0gIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgdm9pZCogYXBwbHkodm9pZCogYWRkcmVzcwotICAgICAgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoVCkpIGNvbnN0Ci0gIHsKLSAgICByZXR1cm4gbmV3KGFkZHJlc3MpIFQoIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIG1fYSkgKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gIHZvaWQqIGFwcGx5KHZvaWQqIGFkZHJlc3MsIHN0ZDo6c2l6ZV90IG4KLSAgICAgIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFQpKSBjb25zdAotICB7Ci0gICAgZm9yKGNoYXIqIG5leHQgPSBhZGRyZXNzID0gdGhpcy0+TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGFwcGx5PFQ+KGFkZHJlc3MpOwotICAgICAgICAhISAtLW47KQotICAgICAgdGhpcy0+TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGFwcGx5PFQ+KG5leHQgPSBuZXh0K3NpemVvZihUKSk7Ci0gICAgcmV0dXJuIGFkZHJlc3M7IAotICB9Ci0KLSAgTkROQk9PU1RfUFBfUkVQRUFUKE4sIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0RFQ0wsIF8pCi19OwotCi0jaWYgTiA+IDAKLXRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBjbGFzcyBBKSA+Ci1pbmxpbmUgTkROQk9PU1RfUFBfQ0FUKGluX3BsYWNlX2ZhY3RvcnksTik8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIEEpID4KLWluX3BsYWNlKCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTiwgQSwgY29uc3QmIGEpICkKLXsKLSAgcmV0dXJuIE5ETkJPT1NUX1BQX0NBVChpbl9wbGFjZV9mYWN0b3J5LE4pPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBBKSA+Ci0gICAgICAoIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIGEpICk7Ci19Ci0jZWxzZQotaW5saW5lIGluX3BsYWNlX2ZhY3RvcnkwIGluX3BsYWNlKCkKLXsKLSAgcmV0dXJuIGluX3BsYWNlX2ZhY3RvcnkwKCk7Ci19Ci0jZW5kaWYKLQotI3VuZGVmIE4KLSNlbmRpZgotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3Jlc3VsdF9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5OGZjOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3Jlc3VsdF9vZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLy8gQm9vc3QgcmVzdWx0X29mIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkKLSNpZm5kZWYgTkROQk9PU1RfUkVTVUxUX09GX0hQUAotI2RlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2ludGVyY2VwdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfTlVNX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfTlVNX0FSR1MgMTYKLSNlbmRpZgotCi0vLyBVc2UgdGhlIGRlY2x0eXBlLWJhc2VkIHZlcnNpb24gb2YgcmVzdWx0X29mIGJ5IGRlZmF1bHQgaWYgdGhlIGNvbXBpbGVyCi0vLyBzdXBwb3J0cyBOMzI3NiA8aHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAxMS9uMzI3Ni5wZGY+LgotLy8gVGhlIHVzZXIgY2FuIGZvcmNlIHRoZSBjaG9pY2UgYnkgZGVmaW5pbmcgZWl0aGVyIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUgb3IKLS8vIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfVFIxLCBidXQgbm90IGJvdGghCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfVFIxKQotIyAgZXJyb3IgQm90aCBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFIGFuZCBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX1RSMSBjYW5ub3QgYmUgZGVmaW5lZCBhdCB0aGUgc2FtZSB0aW1lLgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9UUjEKLSMgIGlmbmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFCi0jICAgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NiAvLyB0aGlzIGltcGxpZXMgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUKLSMgICAgZWxzZQotIyAgICAgIGRlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX1RSMQotIyAgICBlbmRpZgotIyAgZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdHJ1Y3QgcmVzdWx0X29mOwotdGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RydWN0IHRyMV9yZXN1bHRfb2Y7IC8vIGEgVFIxLXN0eWxlIGltcGxlbWVudGF0aW9uIG9mIHJlc3VsdF9vZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihyZXN1bHRfdHlwZSkKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3MsIGJvb2wgSGFzUmVzdWx0VHlwZT4gc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLS8vIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhbnkgb3RoZXIgd2F5IHRvIHR1cm4gdGhpcyBvZmYgc3VjaCB0aGF0IHRoZSBwcmVzZW5jZSBvZgotLy8gdGhlIHVzZXItZGVmaW5lZCBvcGVyYXRvciwoKSBiZWxvdyBkb2Vzbid0IGNhdXNlIHNwdXJpb3VzIHdhcm5pbmcgYWxsIG92ZXIgdGhlIHBsYWNlLAotLy8gc28gdW5jb25kaXRpb25hbGx5IHR1cm4gaXQgb2ZmLgotI2lmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5MTMpIC8vIHVzZXIgZGVmaW5lZCBiaW5hcnkgb3BlcmF0b3IgJywnIGV4aXN0cyBidXQgbm8gb3ZlcmxvYWQgY291bGQgY29udmVydCBhbGwgb3BlcmFuZHMsIGRlZmF1bHQgYnVpbHQtaW4gYmluYXJ5IG9wZXJhdG9yICcsJyB1c2VkCi0jZW5kaWYKLQotc3RydWN0IHJlc3VsdF9vZl9wcml2YXRlX3R5cGUge307Ci0KLXN0cnVjdCByZXN1bHRfb2Zfd2VpcmRfdHlwZSB7Ci0gIGZyaWVuZCByZXN1bHRfb2ZfcHJpdmF0ZV90eXBlIG9wZXJhdG9yLChyZXN1bHRfb2ZfcHJpdmF0ZV90eXBlLCByZXN1bHRfb2Zfd2VpcmRfdHlwZSk7Ci19OwotCi10eXBlZGVmIGNoYXIgcmVzdWx0X29mX3llc190eXBlOyAgICAgIC8vIHNpemVvZihyZXN1bHRfb2ZfeWVzX3R5cGUpID09IDEKLXR5cGVkZWYgY2hhciAoJnJlc3VsdF9vZl9ub190eXBlKVsyXTsgLy8gc2l6ZW9mKHJlc3VsdF9vZl9ub190eXBlKSAgPT0gMgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotcmVzdWx0X29mX25vX3R5cGUgcmVzdWx0X29mX2lzX3ByaXZhdGVfdHlwZShUIGNvbnN0ICYpOwotcmVzdWx0X29mX3llc190eXBlIHJlc3VsdF9vZl9pc19wcml2YXRlX3R5cGUocmVzdWx0X29mX3ByaXZhdGVfdHlwZSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzIDogQyB7Ci0gICAgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzKCk7Ci0gICAgdHlwZWRlZiByZXN1bHRfb2ZfcHJpdmF0ZV90eXBlIGNvbnN0ICYoKnBmbl90KSguLi4pOwotICAgIG9wZXJhdG9yIHBmbl90KCkgY29uc3Qgdm9sYXRpbGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzIHsKLSAgdHlwZWRlZiByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3M8Qz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8QyBjb25zdD4gewotICB0eXBlZGVmIHJlc3VsdF9vZl9jYWxsYWJsZV9jbGFzczxDPiBjb25zdCB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLXN0cnVjdCByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzczxDIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzPEM+IHZvbGF0aWxlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEMgY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3M8Qz4gY29uc3Qgdm9sYXRpbGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8QyAmPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8Qz46OnR5cGUgJnR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCBib29sIFRlc3RDYWxsYWJpbGl0eSA9IHRydWU+IHN0cnVjdCBjcHAweF9yZXN1bHRfb2ZfaW1wbDsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZXN1bHRfb2ZfYWx3YXlzX3ZvaWQKLXsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPiBzdHJ1Y3QgY3BwMHhfcmVzdWx0X29mX2ltcGwge307Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUVfRVhQUgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IHJlc3VsdF9vZl92b2lkX2ltcGwKLXsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotc3RydWN0IHJlc3VsdF9vZl92b2lkX2ltcGw8UiAoKikodm9pZCk+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXN0cnVjdCByZXN1bHRfb2Zfdm9pZF9pbXBsPFIgKCYpKHZvaWQpPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLS8vIERldGVybWluZSB0aGUgcmV0dXJuIHR5cGUgb2YgYSBmdW5jdGlvbiBwb2ludGVyIG9yIHBvaW50ZXIgdG8gbWVtYmVyLgotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3M+Ci1zdHJ1Y3QgcmVzdWx0X29mX3BvaW50ZXIKLSAgOiB0cjFfcmVzdWx0X29mX2ltcGw8dHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlLCBGQXJncywgZmFsc2U+IHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3M+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPEYsIEZBcmdzLCB0cnVlPgotewotICB0eXBlZGVmIHR5cGVuYW1lIEY6OnJlc3VsdF90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCBpc19mdW5jdGlvbl93aXRoX25vX2FyZ3MgOiBtcGw6OmZhbHNlXyB7fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBpc19mdW5jdGlvbl93aXRoX25vX2FyZ3M8Rih2b2lkKT4gOiBtcGw6OnRydWVfIHt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCByZXN1bHRfb2ZfbmVzdGVkX3Jlc3VsdCA6IEY6OnRlbXBsYXRlIHJlc3VsdDxGQXJncz4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8RiwgRkFyZ3MsIGZhbHNlPgotICA6IG1wbDo6aWZfPGlzX2Z1bmN0aW9uX3dpdGhfbm9fYXJnczxGQXJncz4sCi0gICAgICAgICAgICAgcmVzdWx0X29mX3ZvaWRfaW1wbDxGPiwKLSAgICAgICAgICAgICByZXN1bHRfb2ZfbmVzdGVkX3Jlc3VsdDxGLCBGQXJncz4gPjo6dHlwZQote307Ci0KLX0gLy8gZW5kIG5hbWVzcGFjZSBkZXRhaWwKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsKDAsTkROQk9PU1RfUkVTVUxUX09GX05VTV9BUkdTLDxuZG5ib29zdC91dGlsaXR5L2RldGFpbC9yZXN1bHRfb2ZfaXRlcmF0ZS5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1JFU1VMVF9PRiAxCi0jZW5kaWYKLQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVTVUxUX09GX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWY4MGYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBTdGV2ZW4gV2F0YW5hYmUsIEpvc2VwaCBHYXV0ZXJpbiwgTmllbHMgRGVra2VyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9TV0FQX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX1NXQVBfSFBQCi0KLS8vIE5vdGU6IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHV0aWxpdHkgY29udGFpbnMgdmFyaW91cyB3b3JrYXJvdW5kczoKLS8vIC0gc3dhcF9pbXBsIGlzIHB1dCBvdXRzaWRlIHRoZSBib29zdCBuYW1lc3BhY2UsIHRvIGF2b2lkIGluZmluaXRlCi0vLyByZWN1cnNpb24gKGNhdXNpbmcgc3RhY2sgb3ZlcmZsb3cpIHdoZW4gc3dhcHBpbmcgb2JqZWN0cyBvZiBhIHByaW1pdGl2ZQotLy8gdHlwZS4KLS8vIC0gc3dhcF9pbXBsIGhhcyBhIHVzaW5nLWRpcmVjdGl2ZSwgcmF0aGVyIHRoYW4gYSB1c2luZy1kZWNsYXJhdGlvbiwKLS8vIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgKGluY2x1ZGluZyBNU1ZDIDcuMSwgQm9ybGFuZCA1LjkuMywgYW5kCi0vLyBJbnRlbCA4LjEpIGRvbid0IGRvIGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgd2hlbiBpdCBoYXMgYQotLy8gdXNpbmctZGVjbGFyYXRpb24gaW5zdGVhZC4KLS8vIC0gbmRuYm9vc3Q6OnN3YXAgaGFzIHR3byB0ZW1wbGF0ZSBhcmd1bWVudHMsIGluc3RlYWQgb2Ygb25lLCB0bwotLy8gYXZvaWQgYW1iaWd1aXR5IHdoZW4gc3dhcHBpbmcgb2JqZWN0cyBvZiBhIEJvb3N0IHR5cGUgdGhhdCBkb2VzCi0vLyBub3QgaGF2ZSBpdHMgb3duIG5kbmJvb3N0Ojpzd2FwIG92ZXJsb2FkLgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAvL2ZvciBzdGQ6OnN3YXAKLSNpbmNsdWRlIDxjc3RkZGVmPiAvL2ZvciBzdGQ6OnNpemVfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3Rfc3dhcF9pbXBsCi17Ci0gIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gIHZvaWQgc3dhcF9pbXBsKFQmIGxlZnQsIFQmIHJpZ2h0KQotICB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsvL3VzZSBzdGQ6OnN3YXAgaWYgYXJndW1lbnQgZGVwZW5kZW50IGxvb2t1cCBmYWlscwotICAgIHN3YXAobGVmdCxyaWdodCk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICB2b2lkIHN3YXBfaW1wbChUICgmIGxlZnQpW05dLCBUICgmIHJpZ2h0KVtOXSkKLSAgewotICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpCi0gICAgewotICAgICAgOjpuZG5ib29zdF9zd2FwX2ltcGw6OnN3YXBfaW1wbChsZWZ0W2ldLCByaWdodFtpXSk7Ci0gICAgfQotICB9Ci19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gIHZvaWQgc3dhcChUMSYgbGVmdCwgVDImIHJpZ2h0KQotICB7Ci0gICAgOjpuZG5ib29zdF9zd2FwX2ltcGw6OnN3YXBfaW1wbChsZWZ0LCByaWdodCk7Ci0gIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvdmFsdWVfaW5pdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvdmFsdWVfaW5pdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMzRhZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3ZhbHVlX2luaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwMi0yMDA4LCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gMjEgQWdvIDIwMDIgKENyZWF0ZWQpIEZlcm5hbmRvIENhY2Npb2xhCi0vLyAyNCBEZWMgMjAwNyAoUmVmYWN0b3JlZCBhbmQgd29ya2VkIGFyb3VuZCB2YXJpb3VzIGNvbXBpbGVyIGJ1Z3MpIEZlcm5hbmRvIENhY2Npb2xhLCBOaWVscyBEZWtrZXIKLS8vIDIzIE1heSAyMDA4IChGaXhlZCBvcGVyYXRvcj0gY29uc3QgaXNzdWUsIGFkZGVkIGluaXRpYWxpemVkX3ZhbHVlKSBOaWVscyBEZWtrZXIsIEZlcm5hbmRvIENhY2Npb2xhCi0vLyAyMSBBZ28gMjAwOCAoQWRkZWQgc3dhcCkgTmllbHMgRGVra2VyLCBGZXJuYW5kbyBDYWNjaW9sYQotLy8gMjAgRmViIDIwMDkgKEZpeGVkIGxvZ2ljYWwgY29uc3QtbmVzcyBpc3N1ZXMpIE5pZWxzIERla2tlciwgRmVybmFuZG8gQ2FjY2lvbGEKLS8vIDAzIEFwciAyMDEwIChBZGRlZCBpbml0aWFsaXplZDxUPiwgc3VnZ2VzdGVkIGJ5IEplZmZyZXkgSGVsbHJ1bmcsIGZpeGluZyAjMzQ3MikgTmllbHMgRGVra2VyCi0vLyAzMCBNYXkgMjAxMCAoTWFkZSBtZW1zZXQgY2FsbCBjb25kaXRpb25hbCwgZml4aW5nICMzODY5KSBOaWVscyBEZWtrZXIKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfVkFMVUVfSU5JVF8yMUFHTzIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfVkFMVUVfSU5JVF8yMUFHTzIwMDJfSFBQCi0KLS8vIE5vdGU6IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBuZG5ib29zdDo6dmFsdWVfaW5pdGlhbGl6ZWQgaGFkIHRvIGRlYWwgd2l0aCB0aGUKLS8vIGZhY3QgdGhhdCB2YXJpb3VzIGNvbXBpbGVycyBoYXZlbid0IGZ1bGx5IGltcGxlbWVudGVkIHZhbHVlLWluaXRpYWxpemF0aW9uLgotLy8gVGhlIGNvbnN0cnVjdG9yIG9mIG5kbmJvb3N0Ojp2YWx1ZV9pbml0aWFsaXplZDxUPiB3b3JrcyBhcm91bmQgdGhlc2UgY29tcGlsZXIKLS8vIGlzc3VlcywgYnkgY2xlYXJpbmcgdGhlIGJ5dGVzIG9mIFQsIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIFQgb2JqZWN0IGl0Ci0vLyBjb250YWlucy4gTW9yZSBkZXRhaWxzIG9uIHRoZXNlIGlzc3VlcyBhcmUgYXQgbGlicy91dGlsaXR5L3ZhbHVlX2luaXQuaHRtCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGlnbmVkX3N0b3JhZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIEZvciBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTi4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8bmV3PgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jaWYgX01TQ19WRVIgPj0gMTMxMAotLy8gSXQgaXMgc2FmZSB0byBpZ25vcmUgdGhlIGZvbGxvd2luZyB3YXJuaW5nIGZyb20gTVNWQyA3LjEgb3IgaGlnaGVyOgotLy8gIndhcm5pbmcgQzQzNTE6IG5ldyBiZWhhdmlvcjogZWxlbWVudHMgb2YgYXJyYXkgd2lsbCBiZSBkZWZhdWx0IGluaXRpYWxpemVkIgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzNTEpCi0vLyBJdCBpcyBzYWZlIHRvIGlnbm9yZSB0aGUgZm9sbG93aW5nIE1TVkMgd2FybmluZywgd2hpY2ggbWF5IHBvcCB1cCB3aGVuIFQgaXMgCi0vLyBhIGNvbnN0IHR5cGU6ICJ3YXJuaW5nIEM0NTEyOiBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQiLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTIpCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSAgLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBUaGUgbWFjcm8gTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORF9TVUdHRVNURUQgCi0gIC8vIHN1Z2dlc3RzIHRoYXQgYSB3b3JrYXJvdW5kIHNob3VsZCBiZSBhcHBsaWVkLCBiZWNhdXNlIG9mIGNvbXBpbGVyIGlzc3VlcyAKLSAgLy8gcmVnYXJkaW5nIHZhbHVlLWluaXRpYWxpemF0aW9uLgotICAjZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkRfU1VHR0VTVEVECi0jZW5kaWYKLQotLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBUaGUgbWFjcm8gTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORAotLy8gc3dpdGNoZXMgdGhlIHZhbHVlLWluaXRpYWxpemF0aW9uIHdvcmthcm91bmQgZWl0aGVyIG9uIG9yIG9mZi4KLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORAotICAjaWZkZWYgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORF9TVUdHRVNURUQKLSAgI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5EIDEKLSAgI2Vsc2UKLSAgI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5EIDAKLSAgI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIGluaXRpYWxpemVkCi17Ci0gIHByaXZhdGUgOgotICAgIHN0cnVjdCB3cmFwcGVyCi0gICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkyKSkKLSAgICAgIHR5cGVuYW1lCi0jZW5kaWYgCi0gICAgICByZW1vdmVfY29uc3Q8VD46OnR5cGUgZGF0YTsKLQotICAgICAgd3JhcHBlcigpCi0gICAgICA6Ci0gICAgICBkYXRhKCkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgd3JhcHBlcihUIGNvbnN0ICYgYXJnKQotICAgICAgOgotICAgICAgZGF0YShhcmcpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIG11dGFibGUKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MikpCi0gICAgICB0eXBlbmFtZQotI2VuZGlmIAotICAgICAgYWxpZ25lZF9zdG9yYWdlPHNpemVvZih3cmFwcGVyKSwgYWxpZ25tZW50X29mPHdyYXBwZXI+Ojp2YWx1ZT46OnR5cGUgeDsKLQotICAgIHdyYXBwZXIgKiB3cmFwcGVyX2FkZHJlc3MoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx3cmFwcGVyICo+KCBzdGF0aWNfY2FzdDx2b2lkKj4oJngpKTsKLSAgICB9Ci0KLSAgcHVibGljIDoKLQotICAgIGluaXRpYWxpemVkKCkKLSAgICB7Ci0jaWYgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORAotICAgICAgc3RkOjptZW1zZXQoJngsIDAsIHNpemVvZih4KSk7Ci0jZW5kaWYKLSAgICAgIG5ldyAod3JhcHBlcl9hZGRyZXNzKCkpIHdyYXBwZXIoKTsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplZChpbml0aWFsaXplZCBjb25zdCAmIGFyZykKLSAgICB7Ci0gICAgICBuZXcgKHdyYXBwZXJfYWRkcmVzcygpKSB3cmFwcGVyKCBzdGF0aWNfY2FzdDx3cmFwcGVyIGNvbnN0ICY+KCooYXJnLndyYXBwZXJfYWRkcmVzcygpKSkpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IGluaXRpYWxpemVkKFQgY29uc3QgJiBhcmcpCi0gICAgewotICAgICAgbmV3ICh3cmFwcGVyX2FkZHJlc3MoKSkgd3JhcHBlcihhcmcpOwotICAgIH0KLQotICAgIGluaXRpYWxpemVkICYgb3BlcmF0b3I9KGluaXRpYWxpemVkIGNvbnN0ICYgYXJnKQotICAgIHsKLSAgICAgIC8vIEFzc2lnbm1lbnQgaXMgb25seSBhbGxvd2VkIHdoZW4gVCBpcyBub24tY29uc3QuCi0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCAhIGlzX2NvbnN0PFQ+Ojp2YWx1ZSApOwotICAgICAgKndyYXBwZXJfYWRkcmVzcygpID0gc3RhdGljX2Nhc3Q8d3JhcHBlciBjb25zdCAmPigqKGFyZy53cmFwcGVyX2FkZHJlc3MoKSkpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIH5pbml0aWFsaXplZCgpCi0gICAgewotICAgICAgd3JhcHBlcl9hZGRyZXNzKCktPndyYXBwZXI6On53cmFwcGVyKCk7Ci0gICAgfQotCi0gICAgVCBjb25zdCAmIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiB3cmFwcGVyX2FkZHJlc3MoKS0+ZGF0YTsKLSAgICB9Ci0KLSAgICBUJiBkYXRhKCkKLSAgICB7Ci0gICAgICByZXR1cm4gd3JhcHBlcl9hZGRyZXNzKCktPmRhdGE7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKGluaXRpYWxpemVkICYgYXJnKQotICAgIHsKLSAgICAgIDo6bmRuYm9vc3Q6OnN3YXAoIHRoaXMtPmRhdGEoKSwgYXJnLmRhdGEoKSApOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFQgY29uc3QgJigpIGNvbnN0Ci0gICAgewotICAgICAgcmV0dXJuIHdyYXBwZXJfYWRkcmVzcygpLT5kYXRhOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFQmKCkKLSAgICB7Ci0gICAgICByZXR1cm4gd3JhcHBlcl9hZGRyZXNzKCktPmRhdGE7Ci0gICAgfQotCi19IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLVQgY29uc3QmIGdldCAoIGluaXRpYWxpemVkPFQ+IGNvbnN0JiB4ICkKLXsKLSAgcmV0dXJuIHguZGF0YSgpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLVQmIGdldCAoIGluaXRpYWxpemVkPFQ+JiB4ICkKLXsKLSAgcmV0dXJuIHguZGF0YSgpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXZvaWQgc3dhcCAoIGluaXRpYWxpemVkPFQ+ICYgbGhzLCBpbml0aWFsaXplZDxUPiAmIHJocyApCi17Ci0gIGxocy5zd2FwKHJocykgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3MgdmFsdWVfaW5pdGlhbGl6ZWQKLXsKLSAgcHJpdmF0ZSA6Ci0KLSAgICAvLyBpbml0aWFsaXplZDxUPiBkb2VzIHZhbHVlLWluaXRpYWxpemF0aW9uIGJ5IGRlZmF1bHQuCi0gICAgaW5pdGlhbGl6ZWQ8VD4gbV9kYXRhOwotCi0gIHB1YmxpYyA6Ci0gICAgCi0gICAgdmFsdWVfaW5pdGlhbGl6ZWQoKQotICAgIDoKLSAgICBtX2RhdGEoKQotICAgIHsgfQotICAgIAotICAgIFQgY29uc3QgJiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhLmRhdGEoKTsKLSAgICB9Ci0KLSAgICBUJiBkYXRhKCkKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhLmRhdGEoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAodmFsdWVfaW5pdGlhbGl6ZWQgJiBhcmcpCi0gICAgewotICAgICAgbV9kYXRhLnN3YXAoYXJnLm1fZGF0YSk7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgVCBjb25zdCAmKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFQmKCkKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLX0gOwotCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1UIGNvbnN0JiBnZXQgKCB2YWx1ZV9pbml0aWFsaXplZDxUPiBjb25zdCYgeCApCi17Ci0gIHJldHVybiB4LmRhdGEoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1UJiBnZXQgKCB2YWx1ZV9pbml0aWFsaXplZDxUPiYgeCApCi17Ci0gIHJldHVybiB4LmRhdGEoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci12b2lkIHN3YXAgKCB2YWx1ZV9pbml0aWFsaXplZDxUPiAmIGxocywgdmFsdWVfaW5pdGlhbGl6ZWQ8VD4gJiByaHMgKQotewotICBsaHMuc3dhcChyaHMpIDsKLX0KLQotCi1jbGFzcyBpbml0aWFsaXplZF92YWx1ZV90Ci17Ci0gIHB1YmxpYyA6Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IG9wZXJhdG9yIFQoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiBpbml0aWFsaXplZDxUPigpLmRhdGEoKTsKLSAgICB9Ci19OwotCi1pbml0aWFsaXplZF92YWx1ZV90IGNvbnN0IGluaXRpYWxpemVkX3ZhbHVlID0ge30gOwotCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC92ZXJzaW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdmVyc2lvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMzVmMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC92ZXJzaW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8vICBCb29zdCB2ZXJzaW9uLmhwcCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIG1hZGRvY2sgMTk5OS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25maWcgZm9yIGRvY3VtZW50YXRpb24KLQotI2lmbmRlZiBORE5CT09TVF9WRVJTSU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9WRVJTSU9OX0hQUAotCi0vLwotLy8gIENhdXRpb24sIHRoaXMgaXMgdGhlIG9ubHkgYm9vc3QgaGVhZGVyIHRoYXQgaXMgZ3VhcmVudGVlZAotLy8gIHRvIGNoYW5nZSB3aXRoIGV2ZXJ5IGJvb3N0IHJlbGVhc2UsIGluY2x1ZGluZyB0aGlzIGhlYWRlcgotLy8gIHdpbGwgY2F1c2UgYSByZWNvbXBpbGUgZXZlcnkgdGltZSBhIG5ldyBib29zdCB2ZXJzaW9uIGlzCi0vLyAgcmVsZWFzZWQuCi0vLwotLy8gIE5ETkJPT1NUX1ZFUlNJT04gJSAxMDAgaXMgdGhlIHBhdGNoIGxldmVsCi0vLyAgTkROQk9PU1RfVkVSU0lPTiAvIDEwMCAlIDEwMDAgaXMgdGhlIG1pbm9yIHZlcnNpb24KLS8vICBORE5CT09TVF9WRVJTSU9OIC8gMTAwMDAwIGlzIHRoZSBtYWpvciB2ZXJzaW9uCi0KLSNkZWZpbmUgTkROQk9PU1RfVkVSU0lPTiAxMDU0MDAKLQotLy8KLS8vICBORE5CT09TVF9MSUJfVkVSU0lPTiBtdXN0IGJlIGRlZmluZWQgdG8gYmUgdGhlIHNhbWUgYXMgTkROQk9PU1RfVkVSU0lPTgotLy8gIGJ1dCBhcyBhICpzdHJpbmcqIGluIHRoZSBmb3JtICJ4X3lbX3pdIiB3aGVyZSB4IGlzIHRoZSBtYWpvciB2ZXJzaW9uCi0vLyAgbnVtYmVyLCB5IGlzIHRoZSBtaW5vciB2ZXJzaW9uIG51bWJlciwgYW5kIHogaXMgdGhlIHBhdGNoIGxldmVsIGlmIG5vdCAwLgotLy8gIFRoaXMgaXMgdXNlZCBieSA8Y29uZmlnL2F1dG9fbGluay5ocHA+IHRvIHNlbGVjdCB3aGljaCBsaWJyYXJ5IHZlcnNpb24gdG8gbGluayB0by4KLQotI2RlZmluZSBORE5CT09TVF9MSUJfVkVSU0lPTiAiMV81NCIKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Zpc2l0X2VhY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC92aXNpdF9lYWNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRkMDE1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Zpc2l0X2VhY2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gQm9vc3QuU2lnbmFscyBsaWJyYXJ5Ci0KLS8vIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAxLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc2lnbmFscwotCi0jaWZuZGVmIE5ETkJPT1NUX1ZJU0lUX0VBQ0hfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1ZJU0lUX0VBQ0hfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yLCB0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCB2aXNpdF9lYWNoKFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IFQmIHQsIGxvbmcpCi0gIHsKLSAgICB2aXNpdG9yKHQpOwotICB9Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvciwgdHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgdmlzaXRfZWFjaChWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBUJiB0KQotICB7Ci0gICAgdmlzaXRfZWFjaCh2aXNpdG9yLCB0LCAwKTsKLSAgfQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVklTSVRfRUFDSF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvd2Vha19wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC93ZWFrX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkM2Q3N2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC93ZWFrX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICB3ZWFrX3B0ci5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3dlYWtfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvd2Vha19wdHIuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfV0VBS19QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9saWJuZG4tY3BwLWRldi5wYy5pbiBiL2xpYm5kbi1jcHAtZGV2LnBjLmluCmluZGV4IDYyMTlkMGIuLjBlMzE5NDkgMTAwNjQ0Ci0tLSBhL2xpYm5kbi1jcHAtZGV2LnBjLmluCisrKyBiL2xpYm5kbi1jcHAtZGV2LnBjLmluCkBAIC02LDUgKzYsNSBAQAogTmFtZTogbGlibmRuLWNwcC1kZXYKIERlc2NyaXB0aW9uOiBEZXZlbG9wbWVudCB2ZXJzaW9uIG9mIEMrKyBBUEkgZm9yIE5ETiAoTkROLVRMViBwYWNrZXQgZm9ybWF0KQogVmVyc2lvbjogQFZFUlNJT05ACi1MaWJzOiAtTCR7bGliZGlyfSBAT1BFTlNTTF9MREZMQUdTQCBAQ1JZUFRPUFBfTERGTEFHU0AgQFNRTElURTNfTERGTEFHU0AgQEJPT1NUX0xERkxBR1NAIC1sbmRuLWNwcC1kZXYgQE9QRU5TU0xfTElCU0AgQENSWVBUT1BQX0xJQlNAIEBPU1hfU0VDVVJJVFlfTElCU0AgQEJPT1NUX1NZU1RFTV9MSUJAIEBCT09TVF9GSUxFU1lTVEVNX0xJQkAKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBPUEVOU1NMX0lOQ0xVREVTQCBAQ1JZUFRPUFBfSU5DTFVERVNAIEBTUUxJVEUzX0NGTEFHU0AgQEJPT1NUX0NQUEZMQUdTQAorTGliczogLUwke2xpYmRpcn0gQEVYVFJBX0xERkxBR1NAIC1sbmRuLWNwcC1kZXYgQEVYVFJBX0xJQlNACitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBARVhUUkFfSU5DTFVERVNACmRpZmYgLS1naXQgYS9tNC9heF9ib29zdF9hc2lvLm00IGIvbTQvYXhfYm9vc3RfYXNpby5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3ZDQ4Ny4uMDAwMDAwMAotLS0gYS9tNC9heF9ib29zdF9hc2lvLm00CisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2Jvb3N0X2FzaW8uaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBBWF9CT09TVF9BU0lPCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGVzdCBmb3IgQXNpbyBsaWJyYXJ5IGZyb20gdGhlIEJvb3N0IEMrKyBsaWJyYXJpZXMuIFRoZSBtYWNybyByZXF1aXJlcyBhCi0jICAgcHJlY2VkaW5nIGNhbGwgdG8gQVhfQk9PU1RfQkFTRS4gRnVydGhlciBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdAotIyAgIDxodHRwOi8vcmFuZHNwcmluZ2VyLmRlL2Jvb3N0L2luZGV4Lmh0bWw+LgotIwotIyAgIFRoaXMgbWFjcm8gY2FsbHM6Ci0jCi0jICAgICBBQ19TVUJTVChCT09TVF9BU0lPX0xJQikKLSMKLSMgICBBbmQgc2V0czoKLSMKLSMgICAgIEhBVkVfQk9PU1RfQVNJTwotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IFRob21hcyBQb3JzY2hiZXJnIDx0aG9tYXNAcmFuZHNwcmluZ2VyLmRlPgotIyAgIENvcHlyaWdodCAoYykgMjAwOCBQZXRlIEdyZWVud2VsbCA8cGV0ZUBtdS5vcmc+Ci0jCi0jICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0jICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0jICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotIyAgIHdhcnJhbnR5LgotCi0jc2VyaWFsIDE2Ci0KLUFDX0RFRlVOKFtBWF9CT09TVF9BU0lPXSwKLVsKLQlBQ19BUkdfV0lUSChbYm9vc3QtYXNpb10sCi0JQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ib29zdC1hc2lvQDw6QD1zcGVjaWFsLWxpYkA6PkBdLAotICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIEFTSU8gbGlicmFyeSBmcm9tIGJvb3N0IC0gaXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBhIGNlcnRhaW4gbGlicmFyeSBmb3IgdGhlIGxpbmtlcgotICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiAtLXdpdGgtYm9vc3QtYXNpbz1ib29zdF9zeXN0ZW0tZ2NjNDEtbXQtMV8zNCBdKSwKLSAgICAgICAgWwotICAgICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0JCQl3YW50X2Jvb3N0PSJubyIKLSAgICAgICAgZWxpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgotICAgICAgICAgICAgd2FudF9ib29zdD0ieWVzIgotICAgICAgICAgICAgYXhfYm9vc3RfdXNlcl9hc2lvX2xpYj0iIgotICAgICAgICBlbHNlCi0JCSAgICB3YW50X2Jvb3N0PSJ5ZXMiCi0JCWF4X2Jvb3N0X3VzZXJfYXNpb19saWI9IiR3aXRodmFsIgotCQlmaQotICAgICAgICBdLAotICAgICAgICBbd2FudF9ib29zdD0ieWVzIl0KLQkpCi0KLQlpZiB0ZXN0ICJ4JHdhbnRfYm9vc3QiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQotCQlDUFBGTEFHU19TQVZFRD0iJENQUEZMQUdTIgotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRCT09TVF9DUFBGTEFHUyIKLQkJZXhwb3J0IENQUEZMQUdTCi0KLQkJTERGTEFHU19TQVZFRD0iJExERkxBR1MiCi0JCUxERkxBR1M9IiRMREZMQUdTICRCT09TVF9MREZMQUdTIgotCQlleHBvcnQgTERGTEFHUwotCi0gICAgICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgdGhlIEJvb3N0OjpBU0lPIGxpYnJhcnkgaXMgYXZhaWxhYmxlLAotCQkJCQkgICBheF9jdl9ib29zdF9hc2lvLAotICAgICAgICBbQUNfTEFOR19QVVNIKFtDKytdKQotCQkgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBAJTpAaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+Ci0JCQkJCQkJCQkJCV1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3N0Ojphc2lvOjppb19zZXJ2aWNlIGlvOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vc3Q6OnN5c3RlbTo6ZXJyb3JfY29kZSB0aW1lcl9yZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29zdDo6YXNpbzo6ZGVhZGxpbmVfdGltZXIgdChpbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmNhbmNlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW8ucnVuX29uZSgpOwotCQkJCQkJCQkJcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1dKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4X2N2X2Jvb3N0X2FzaW89eWVzLCBheF9jdl9ib29zdF9hc2lvPW5vKQotICAgICAgICAgQUNfTEFOR19QT1AoW0MrK10pCi0JCV0pCi0JCWlmIHRlc3QgIngkYXhfY3ZfYm9vc3RfYXNpbyIgPSAieHllcyI7IHRoZW4KLQkJCUFDX0RFRklORShIQVZFX0JPT1NUX0FTSU8sLFtkZWZpbmUgaWYgdGhlIEJvb3N0OjpBU0lPIGxpYnJhcnkgaXMgYXZhaWxhYmxlXSkKLQkJCUJOPWJvb3N0X3N5c3RlbQotCQkJQk9PU1RMSUJESVI9YGVjaG8gJEJPT1NUX0xERkxBR1MgfCBzZWQgLWUgJ3MvQDw6QF5cL0A6PkAqLy8nYAotICAgICAgICAgICAgaWYgdGVzdCAieCRheF9ib29zdF91c2VyX2FzaW9fbGliIiA9ICJ4IjsgdGhlbgotCQkJCWZvciBheF9saWIgaW4gYGxzICRCT09TVExJQkRJUi9saWJib29zdF9zeXN0ZW0qLnNvKiAkQk9PU1RMSUJESVIvbGliYm9vc3Rfc3lzdGVtKi5keWxpYiogJEJPT1NUTElCRElSL2xpYmJvb3N0X3N5c3RlbSouYSogMj4vZGV2L251bGwgfCBzZWQgJ3MsLiovLCwnIHwgc2VkIC1lICdzO15saWJcKGJvb3N0X3N5c3RlbS4qXClcLnNvLiokO1wxOycgLWUgJ3M7XmxpYlwoYm9vc3Rfc3lzdGVtLipcKVwuZHlsaWIuKiQ7XDE7JyAtZSAncztebGliXChib29zdF9zeXN0ZW0uKlwpXC5hLiokO1wxOycgYCA7IGRvCi0JCQkJICAgIEFDX0NIRUNLX0xJQigkYXhfbGliLCBtYWluLCBbQk9PU1RfQVNJT19MSUI9Ii1sJGF4X2xpYiIgQUNfU1VCU1QoQk9PU1RfQVNJT19MSUIpIGxpbmtfdGhyZWFkPSJ5ZXMiIGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rX3RocmVhZD0ibm8iXSkKLQkJCQlkb25lCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICBmb3IgYXhfbGliIGluICRheF9ib29zdF91c2VyX2FzaW9fbGliICRCTi0kYXhfYm9vc3RfdXNlcl9hc2lvX2xpYjsgZG8KLQkJCQkgICAgICBBQ19DSEVDS19MSUIoJGF4X2xpYiwgbWFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0JPT1NUX0FTSU9fTElCPSItbCRheF9saWIiIEFDX1NVQlNUKEJPT1NUX0FTSU9fTElCKSBsaW5rX2FzaW89InllcyIgYnJlYWtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua19hc2lvPSJubyJdKQotICAgICAgICAgICAgICAgICAgZG9uZQotCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgaWYgdGVzdCAieCRheF9saWIiID0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKENvdWxkIG5vdCBmaW5kIGEgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSEpCi0gICAgICAgICAgICBmaQotCQkJaWYgdGVzdCAieCRsaW5rX2FzaW8iID0gInhubyI7IHRoZW4KLQkJCQlBQ19NU0dfRVJST1IoQ291bGQgbm90IGxpbmsgYWdhaW5zdCAkYXhfbGliICEpCi0JCQlmaQotCQlmaQotCi0JCUNQUEZMQUdTPSIkQ1BQRkxBR1NfU0FWRUQiCi0JTERGTEFHUz0iJExERkxBR1NfU0FWRUQiCi0JZmkKLV0pCmRpZmYgLS1naXQgYS9tNC9heF9ib29zdF9iYXNlLm00IGIvbTQvYXhfYm9vc3RfYmFzZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3Y2UzNS4uMDAwMDAwMAotLS0gYS9tNC9heF9ib29zdF9iYXNlLm00CisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2Jvb3N0X2Jhc2UuaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBBWF9CT09TVF9CQVNFKFtNSU5JTVVNLVZFUlNJT05dLCBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQotIwotIyBERVNDUklQVElPTgotIwotIyAgIFRlc3QgZm9yIHRoZSBCb29zdCBDKysgbGlicmFyaWVzIG9mIGEgcGFydGljdWxhciB2ZXJzaW9uIChvciBuZXdlcikKLSMKLSMgICBJZiBubyBwYXRoIHRvIHRoZSBpbnN0YWxsZWQgYm9vc3QgbGlicmFyeSBpcyBnaXZlbiB0aGUgbWFjcm8gc2VhcmNocwotIyAgIHVuZGVyIC91c3IsIC91c3IvbG9jYWwsIC9vcHQgYW5kIC9vcHQvbG9jYWwgYW5kIGV2YWx1YXRlcyB0aGUKLSMgICAkQk9PU1RfUk9PVCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gRnVydGhlciBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdAotIyAgIDxodHRwOi8vcmFuZHNwcmluZ2VyLmRlL2Jvb3N0L2luZGV4Lmh0bWw+LgotIwotIyAgIFRoaXMgbWFjcm8gY2FsbHM6Ci0jCi0jICAgICBBQ19TVUJTVChCT09TVF9DUFBGTEFHUykgLyBBQ19TVUJTVChCT09TVF9MREZMQUdTKQotIwotIyAgIEFuZCBzZXRzOgotIwotIyAgICAgSEFWRV9CT09TVAotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IFRob21hcyBQb3JzY2hiZXJnIDx0aG9tYXNAcmFuZHNwcmluZ2VyLmRlPgotIyAgIENvcHlyaWdodCAoYykgMjAwOSBQZXRlciBBZG9scGhzCi0jCi0jICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0jICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0jICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotIyAgIHdhcnJhbnR5LgotCi0jc2VyaWFsIDIyCi0KLUFDX0RFRlVOKFtBWF9CT09TVF9CQVNFXSwKLVsKLUFDX0FSR19XSVRIKFtib29zdF0sCi0gIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWJvb3N0QDw6QD1BUkdAOj5AXSwKLSAgICBbdXNlIEJvb3N0IGxpYnJhcnkgZnJvbSBhIHN0YW5kYXJkIGxvY2F0aW9uIChBUkc9eWVzKSwKLSAgICAgZnJvbSB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uIChBUkc9PHBhdGg+KSwKLSAgICAgb3IgZGlzYWJsZSBpdCAoQVJHPW5vKQotICAgICBAPDpAQVJHPXllc0A6PkAgXSldLAotICAgIFsKLSAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0gICAgICAgIHdhbnRfYm9vc3Q9Im5vIgotICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gInllcyI7IHRoZW4KLSAgICAgICAgd2FudF9ib29zdD0ieWVzIgotICAgICAgICBhY19ib29zdF9wYXRoPSIiCi0gICAgZWxzZQotICAgICAgICB3YW50X2Jvb3N0PSJ5ZXMiCi0gICAgICAgIGFjX2Jvb3N0X3BhdGg9IiR3aXRodmFsIgotICAgIGZpCi0gICAgXSwKLSAgICBbd2FudF9ib29zdD0ieWVzIl0pCi0KLQotQUNfQVJHX1dJVEgoW2Jvb3N0LWxpYmRpcl0sCi0gICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYm9vc3QtbGliZGlyPUxJQl9ESVJdLAotICAgICAgICBbRm9yY2UgZ2l2ZW4gZGlyZWN0b3J5IGZvciBib29zdCBsaWJyYXJpZXMuIE5vdGUgdGhhdCB0aGlzIHdpbGwgb3ZlcnJpZGUgbGlicmFyeSBwYXRoIGRldGVjdGlvbiwgc28gdXNlIHRoaXMgcGFyYW1ldGVyIG9ubHkgaWYgZGVmYXVsdCBsaWJyYXJ5IGRldGVjdGlvbiBmYWlscyBhbmQgeW91IGtub3cgZXhhY3RseSB3aGVyZSB5b3VyIGJvb3N0IGxpYnJhcmllcyBhcmUgbG9jYXRlZC5dKSwKLSAgICAgICAgWwotICAgICAgICBpZiB0ZXN0IC1kICIkd2l0aHZhbCIKLSAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgIGFjX2Jvb3N0X2xpYl9wYXRoPSIkd2l0aHZhbCIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUigtLXdpdGgtYm9vc3QtbGliZGlyIGV4cGVjdGVkIGRpcmVjdG9yeSBuYW1lKQotICAgICAgICBmaQotICAgICAgICBdLAotICAgICAgICBbYWNfYm9vc3RfbGliX3BhdGg9IiJdCi0pCi0KLWlmIHRlc3QgIngkd2FudF9ib29zdCIgPSAieHllcyI7IHRoZW4KLSAgICBib29zdF9saWJfdmVyc2lvbl9yZXE9aWZlbHNlKFskMV0sICwxLjIwLjAsJDEpCi0gICAgYm9vc3RfbGliX3ZlcnNpb25fcmVxX3Nob3J0ZW49YGV4cHIgJGJvb3N0X2xpYl92ZXJzaW9uX3JlcSA6ICdcKFtbMC05XV0qXC5bWzAtOV1dKlwpJ2AKLSAgICBib29zdF9saWJfdmVyc2lvbl9yZXFfbWFqb3I9YGV4cHIgJGJvb3N0X2xpYl92ZXJzaW9uX3JlcSA6ICdcKFtbMC05XV0qXCknYAotICAgIGJvb3N0X2xpYl92ZXJzaW9uX3JlcV9taW5vcj1gZXhwciAkYm9vc3RfbGliX3ZlcnNpb25fcmVxIDogJ1tbMC05XV0qXC5cKFtbMC05XV0qXCknYAotICAgIGJvb3N0X2xpYl92ZXJzaW9uX3JlcV9zdWJfbWlub3I9YGV4cHIgJGJvb3N0X2xpYl92ZXJzaW9uX3JlcSA6ICdbWzAtOV1dKlwuW1swLTldXSpcLlwoW1swLTldXSpcKSdgCi0gICAgaWYgdGVzdCAieCRib29zdF9saWJfdmVyc2lvbl9yZXFfc3ViX21pbm9yIiA9ICJ4IiA7IHRoZW4KLSAgICAgICAgYm9vc3RfbGliX3ZlcnNpb25fcmVxX3N1Yl9taW5vcj0iMCIKLSAgICAgICAgZmkKLSAgICBXQU5UX0JPT1NUX1ZFUlNJT049YGV4cHIgJGJvb3N0X2xpYl92ZXJzaW9uX3JlcV9tYWpvciBcKiAxMDAwMDAgXCsgICRib29zdF9saWJfdmVyc2lvbl9yZXFfbWlub3IgXCogMTAwIFwrICRib29zdF9saWJfdmVyc2lvbl9yZXFfc3ViX21pbm9yYAotICAgIEFDX01TR19DSEVDS0lORyhmb3IgYm9vc3RsaWIgPj0gJGJvb3N0X2xpYl92ZXJzaW9uX3JlcSkKLSAgICBzdWNjZWVkZWQ9bm8KLQotICAgIGRubCBPbiA2NC1iaXQgc3lzdGVtcyBjaGVjayBmb3Igc3lzdGVtIGxpYnJhcmllcyBpbiBib3RoIGxpYjY0IGFuZCBsaWIuCi0gICAgZG5sIFRoZSBmb3JtZXIgaXMgc3BlY2lmaWVkIGJ5IEZIUywgYnV0IGUuZy4gRGViaWFuIGRvZXMgbm90IGFkaGVyZSB0bwotICAgIGRubCB0aGlzIChhcyBpdCByaXNlcyBwcm9ibGVtcyBmb3IgZ2VuZXJpYyBtdWx0aS1hcmNoIHN1cHBvcnQpLgotICAgIGRubCBUaGUgbGFzdCBlbnRyeSBpbiB0aGUgbGlzdCBpcyBjaG9zZW4gYnkgZGVmYXVsdCB3aGVuIG5vIGxpYnJhcmllcwotICAgIGRubCBhcmUgZm91bmQsIGUuZy4gd2hlbiBvbmx5IGhlYWRlci1vbmx5IGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIQotICAgIGxpYnN1YmRpcnM9ImxpYiIKLSAgICBheF9hcmNoPWB1bmFtZSAtbWAKLSAgICBjYXNlICRheF9hcmNoIGluCi0gICAgICB4ODZfNjR8cHBjNjR8czM5MHh8c3BhcmM2NHxhYXJjaDY0KQotICAgICAgICBsaWJzdWJkaXJzPSJsaWI2NCBsaWIgbGliNjQiCi0gICAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgZG5sIGFsbG93IGZvciByZWFsIG11bHRpLWFyY2ggcGF0aHMgZS5nLiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251LiBHaXZlCi0gICAgZG5sIHRoZW0gcHJpb3JpdHkgb3ZlciB0aGUgb3RoZXIgcGF0aHMgc2luY2UsIGlmIGxpYnMgYXJlIGZvdW5kIHRoZXJlLCB0aGV5Ci0gICAgZG5sIGFyZSBhbG1vc3QgYXNzdXJlZGx5IHRoZSBvbmVzIGRlc2lyZWQuCi0gICAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQotICAgIGxpYnN1YmRpcnM9ImxpYi8ke2hvc3RfY3B1fS0ke2hvc3Rfb3N9ICRsaWJzdWJkaXJzIgotCi0gICAgY2FzZSAke2hvc3RfY3B1fSBpbgotICAgICAgaT84NikKLSAgICAgICAgbGlic3ViZGlycz0ibGliL2kzODYtJHtob3N0X29zfSAkbGlic3ViZGlycyIKLSAgICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICBkbmwgZmlyc3Qgd2UgY2hlY2sgdGhlIHN5c3RlbSBsb2NhdGlvbiBmb3IgYm9vc3QgbGlicmFyaWVzCi0gICAgZG5sIHRoaXMgbG9jYXRpb24gaXN0IGNob3NlbiBpZiBib29zdCBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZCB3aXRoIHRoZSAtLWxheW91dD1zeXN0ZW0gb3B0aW9uCi0gICAgZG5sIG9yIGlmIHlvdSBpbnN0YWxsIGJvb3N0IHdpdGggUlBNCi0gICAgaWYgdGVzdCAiJGFjX2Jvb3N0X3BhdGgiICE9ICIiOyB0aGVuCi0gICAgICAgIEJPT1NUX0NQUEZMQUdTPSItSSRhY19ib29zdF9wYXRoL2luY2x1ZGUiCi0gICAgICAgIGZvciBhY19ib29zdF9wYXRoX3RtcCBpbiAkbGlic3ViZGlyczsgZG8KLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWNfYm9vc3RfcGF0aCIvIiRhY19ib29zdF9wYXRoX3RtcCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBCT09TVF9MREZMQUdTPSItTCRhY19ib29zdF9wYXRoLyRhY19ib29zdF9wYXRoX3RtcCIKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgIGVsaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCi0gICAgICAgIGZvciBhY19ib29zdF9wYXRoX3RtcCBpbiAvdXNyIC91c3IvbG9jYWwgL29wdCAvb3B0L2xvY2FsIDsgZG8KLSAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhY19ib29zdF9wYXRoX3RtcC9pbmNsdWRlL2Jvb3N0IiAmJiB0ZXN0IC1yICIkYWNfYm9vc3RfcGF0aF90bXAvaW5jbHVkZS9ib29zdCI7IHRoZW4KLSAgICAgICAgICAgICAgICBmb3IgbGlic3ViZGlyIGluICRsaWJzdWJkaXJzIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgaWYgbHMgIiRhY19ib29zdF9wYXRoX3RtcC8kbGlic3ViZGlyL2xpYmJvb3N0XyIqID4vZGV2L251bGwgMj4mMSA7IHRoZW4gYnJlYWs7IGZpCi0gICAgICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgICAgIEJPT1NUX0xERkxBR1M9Ii1MJGFjX2Jvb3N0X3BhdGhfdG1wLyRsaWJzdWJkaXIiCi0gICAgICAgICAgICAgICAgQk9PU1RfQ1BQRkxBR1M9Ii1JJGFjX2Jvb3N0X3BhdGhfdG1wL2luY2x1ZGUiCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgZmkKLQotICAgIGRubCBvdmVyd3JpdGUgbGQgZmxhZ3MgaWYgd2UgaGF2ZSByZXF1aXJlZCBzcGVjaWFsIGRpcmVjdG9yeSB3aXRoCi0gICAgZG5sIC0td2l0aC1ib29zdC1saWJkaXIgcGFyYW1ldGVyCi0gICAgaWYgdGVzdCAiJGFjX2Jvb3N0X2xpYl9wYXRoIiAhPSAiIjsgdGhlbgotICAgICAgIEJPT1NUX0xERkxBR1M9Ii1MJGFjX2Jvb3N0X2xpYl9wYXRoIgotICAgIGZpCi0KLSAgICBDUFBGTEFHU19TQVZFRD0iJENQUEZMQUdTIgotICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJEJPT1NUX0NQUEZMQUdTIgotICAgIGV4cG9ydCBDUFBGTEFHUwotCi0gICAgTERGTEFHU19TQVZFRD0iJExERkxBR1MiCi0gICAgTERGTEFHUz0iJExERkxBR1MgJEJPT1NUX0xERkxBR1MiCi0gICAgZXhwb3J0IExERkxBR1MKLQotICAgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ1hYXSkKLSAgICBBQ19MQU5HX1BVU0goQysrKQotICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0gICAgQCU6QGluY2x1ZGUgPGJvb3N0L3ZlcnNpb24uaHBwPgotICAgIF1dLCBbWwotICAgICNpZiBCT09TVF9WRVJTSU9OID49ICRXQU5UX0JPT1NUX1ZFUlNJT04KLSAgICAvLyBFdmVyeXRoaW5nIGlzIG9rYXkKLSAgICAjZWxzZQotICAgICMgIGVycm9yIEJvb3N0IHZlcnNpb24gaXMgdG9vIG9sZAotICAgICNlbmRpZgotICAgIF1dKV0sWwotICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICBzdWNjZWVkZWQ9eWVzCi0gICAgZm91bmRfc3lzdGVtPXllcwotICAgICAgICBdLFsKLSAgICAgICAgXSkKLSAgICBBQ19MQU5HX1BPUChbQysrXSkKLQotCi0KLSAgICBkbmwgaWYgd2UgZm91bmQgbm8gYm9vc3Qgd2l0aCBzeXN0ZW0gbGF5b3V0IHdlIHNlYXJjaCBmb3IgYm9vc3QgbGlicmFyaWVzCi0gICAgZG5sIGJ1aWx0IGFuZCBpbnN0YWxsZWQgd2l0aG91dCB0aGUgLS1sYXlvdXQ9c3lzdGVtIG9wdGlvbiBvciBmb3IgYSBzdGFnZWQobm90IGluc3RhbGxlZCkgdmVyc2lvbgotICAgIGlmIHRlc3QgIngkc3VjY2VlZGVkIiAhPSAieHllcyI7IHRoZW4KLSAgICAgICAgX3ZlcnNpb249MAotICAgICAgICBpZiB0ZXN0ICIkYWNfYm9vc3RfcGF0aCIgIT0gIiI7IHRoZW4KLSAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhY19ib29zdF9wYXRoIiAmJiB0ZXN0IC1yICIkYWNfYm9vc3RfcGF0aCI7IHRoZW4KLSAgICAgICAgICAgICAgICBmb3IgaSBpbiBgbHMgLWQgJGFjX2Jvb3N0X3BhdGgvaW5jbHVkZS9ib29zdC0qIDI+L2Rldi9udWxsYDsgZG8KLSAgICAgICAgICAgICAgICAgICAgX3ZlcnNpb25fdG1wPWBlY2hvICRpIHwgc2VkICJzIyRhY19ib29zdF9wYXRoIyMiIHwgc2VkICdzL1wvaW5jbHVkZVwvYm9vc3QtLy8nIHwgc2VkICdzL18vLi8nYAotICAgICAgICAgICAgICAgICAgICBWX0NIRUNLPWBleHByICRfdmVyc2lvbl90bXAgXD4gJF92ZXJzaW9uYAotICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkVl9DSEVDSyIgPSAiMSIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBfdmVyc2lvbj0kX3ZlcnNpb25fdG1wCi0gICAgICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICAgICAgIFZFUlNJT05fVU5ERVJTQ09SRT1gZWNobyAkX3ZlcnNpb24gfCBzZWQgJ3MvXC4vXy8nYAotICAgICAgICAgICAgICAgICAgICBCT09TVF9DUFBGTEFHUz0iLUkkYWNfYm9vc3RfcGF0aC9pbmNsdWRlL2Jvb3N0LSRWRVJTSU9OX1VOREVSU0NPUkUiCi0gICAgICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgZmkKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgICAgICAgZm9yIGFjX2Jvb3N0X3BhdGggaW4gL3VzciAvdXNyL2xvY2FsIC9vcHQgL29wdC9sb2NhbCA7IGRvCi0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhY19ib29zdF9wYXRoIiAmJiB0ZXN0IC1yICIkYWNfYm9vc3RfcGF0aCI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIGBscyAtZCAkYWNfYm9vc3RfcGF0aC9pbmNsdWRlL2Jvb3N0LSogMj4vZGV2L251bGxgOyBkbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJzaW9uX3RtcD1gZWNobyAkaSB8IHNlZCAicyMkYWNfYm9vc3RfcGF0aCMjIiB8IHNlZCAncy9cL2luY2x1ZGVcL2Jvb3N0LS8vJyB8IHNlZCAncy9fLy4vJ2AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWX0NIRUNLPWBleHByICRfdmVyc2lvbl90bXAgXD4gJF92ZXJzaW9uYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRWX0NIRUNLIiA9ICIxIiA7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcnNpb249JF92ZXJzaW9uX3RtcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0X3BhdGg9JGFjX2Jvb3N0X3BhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGRvbmUKLQotICAgICAgICAgICAgICAgIFZFUlNJT05fVU5ERVJTQ09SRT1gZWNobyAkX3ZlcnNpb24gfCBzZWQgJ3MvXC4vXy8nYAotICAgICAgICAgICAgICAgIEJPT1NUX0NQUEZMQUdTPSItSSRiZXN0X3BhdGgvaW5jbHVkZS9ib29zdC0kVkVSU0lPTl9VTkRFUlNDT1JFIgotICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY19ib29zdF9saWJfcGF0aCIgPSAiIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICBmb3IgbGlic3ViZGlyIGluICRsaWJzdWJkaXJzIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxzICIkYmVzdF9wYXRoLyRsaWJzdWJkaXIvbGliYm9vc3RfIiogPi9kZXYvbnVsbCAyPiYxIDsgdGhlbiBicmVhazsgZmkKLSAgICAgICAgICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgICAgICAgICBCT09TVF9MREZMQUdTPSItTCRiZXN0X3BhdGgvJGxpYnN1YmRpciIKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgZmkKLQotICAgICAgICAgICAgaWYgdGVzdCAieCRCT09TVF9ST09UIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICBmb3IgbGlic3ViZGlyIGluICRsaWJzdWJkaXJzIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgaWYgbHMgIiRCT09TVF9ST09UL3N0YWdlLyRsaWJzdWJkaXIvbGliYm9vc3RfIiogPi9kZXYvbnVsbCAyPiYxIDsgdGhlbiBicmVhazsgZmkKLSAgICAgICAgICAgICAgICBkb25lCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJEJPT1NUX1JPT1QiICYmIHRlc3QgLXIgIiRCT09TVF9ST09UIiAmJiB0ZXN0IC1kICIkQk9PU1RfUk9PVC9zdGFnZS8kbGlic3ViZGlyIiAmJiB0ZXN0IC1yICIkQk9PU1RfUk9PVC9zdGFnZS8kbGlic3ViZGlyIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX2Rpcj1gZXhwciAvLyRCT09TVF9ST09UIDogJy4qL1woLipcKSdgCi0gICAgICAgICAgICAgICAgICAgIHN0YWdlX3ZlcnNpb249YGVjaG8gJHZlcnNpb25fZGlyIHwgc2VkICdzL2Jvb3N0Xy8vJyB8IHNlZCAncy9fLy4vZydgCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFnZV92ZXJzaW9uX3Nob3J0ZW49YGV4cHIgJHN0YWdlX3ZlcnNpb24gOiAnXChbWzAtOV1dKlwuW1swLTldXSpcKSdgCi0gICAgICAgICAgICAgICAgICAgIFZfQ0hFQ0s9YGV4cHIgJHN0YWdlX3ZlcnNpb25fc2hvcnRlbiBcPlw9ICRfdmVyc2lvbmAKLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJFZfQ0hFQ0siID0gIjEiIC1hICIkYWNfYm9vc3RfbGliX3BhdGgiID0gIiIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfTk9USUNFKFdlIHdpbGwgdXNlIGEgc3RhZ2VkIGJvb3N0IGxpYnJhcnkgZnJvbSAkQk9PU1RfUk9PVCkKLSAgICAgICAgICAgICAgICAgICAgICAgIEJPT1NUX0NQUEZMQUdTPSItSSRCT09TVF9ST09UIgotICAgICAgICAgICAgICAgICAgICAgICAgQk9PU1RfTERGTEFHUz0iLUwkQk9PU1RfUk9PVC9zdGFnZS8kbGlic3ViZGlyIgotICAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBmaQotICAgICAgICBmaQotCi0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJEJPT1NUX0NQUEZMQUdTIgotICAgICAgICBleHBvcnQgQ1BQRkxBR1MKLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgJEJPT1NUX0xERkxBR1MiCi0gICAgICAgIGV4cG9ydCBMREZMQUdTCi0KLSAgICAgICAgQUNfTEFOR19QVVNIKEMrKykKLSAgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSAgICAgICAgQCU6QGluY2x1ZGUgPGJvb3N0L3ZlcnNpb24uaHBwPgotICAgICAgICBdXSwgW1sKLSAgICAgICAgI2lmIEJPT1NUX1ZFUlNJT04gPj0gJFdBTlRfQk9PU1RfVkVSU0lPTgotICAgICAgICAvLyBFdmVyeXRoaW5nIGlzIG9rYXkKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgIyAgZXJyb3IgQm9vc3QgdmVyc2lvbiBpcyB0b28gb2xkCi0gICAgICAgICNlbmRpZgotICAgICAgICBdXSldLFsKLSAgICAgICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgICAgICBzdWNjZWVkZWQ9eWVzCi0gICAgICAgIGZvdW5kX3N5c3RlbT15ZXMKLSAgICAgICAgICAgIF0sWwotICAgICAgICAgICAgXSkKLSAgICAgICAgQUNfTEFOR19QT1AoW0MrK10pCi0gICAgZmkKLQotICAgIGlmIHRlc3QgIiRzdWNjZWVkZWQiICE9ICJ5ZXMiIDsgdGhlbgotICAgICAgICBpZiB0ZXN0ICIkX3ZlcnNpb24iID0gIjAiIDsgdGhlbgotICAgICAgICAgICAgQUNfTVNHX05PVElDRShbW1dlIGNvdWxkIG5vdCBkZXRlY3QgdGhlIGJvb3N0IGxpYnJhcmllcyAodmVyc2lvbiAkYm9vc3RfbGliX3ZlcnNpb25fcmVxX3Nob3J0ZW4gb3IgaGlnaGVyKS4gSWYgeW91IGhhdmUgYSBzdGFnZWQgYm9vc3QgbGlicmFyeSAoc3RpbGwgbm90IGluc3RhbGxlZCkgcGxlYXNlIHNwZWNpZnkgXCRCT09TVF9ST09UIGluIHlvdXIgZW52aXJvbm1lbnQgYW5kIGRvIG5vdCBnaXZlIGEgUEFUSCB0byAtLXdpdGgtYm9vc3Qgb3B0aW9uLiAgSWYgeW91IGFyZSBzdXJlIHlvdSBoYXZlIGJvb3N0IGluc3RhbGxlZCwgdGhlbiBjaGVjayB5b3VyIHZlcnNpb24gbnVtYmVyIGxvb2tpbmcgaW4gPGJvb3N0L3ZlcnNpb24uaHBwPi4gU2VlIGh0dHA6Ly9yYW5kc3ByaW5nZXIuZGUvYm9vc3QgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbi5dXSkKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQUNfTVNHX05PVElDRShbWW91ciBib29zdCBsaWJyYXJpZXMgc2VlbXMgdG8gb2xkICh2ZXJzaW9uICRfdmVyc2lvbikuXSkKLSAgICAgICAgZmkKLSAgICAgICAgIyBleGVjdXRlIEFDVElPTi1JRi1OT1QtRk9VTkQgKGlmIHByZXNlbnQpOgotICAgICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICAgIGVsc2UKLSAgICAgICAgQUNfU1VCU1QoQk9PU1RfQ1BQRkxBR1MpCi0gICAgICAgIEFDX1NVQlNUKEJPT1NUX0xERkxBR1MpCi0gICAgICAgIEFDX0RFRklORShIQVZFX0JPT1NULCxbZGVmaW5lIGlmIHRoZSBCb29zdCBsaWJyYXJ5IGlzIGF2YWlsYWJsZV0pCi0gICAgICAgICMgZXhlY3V0ZSBBQ1RJT04tSUYtRk9VTkQgKGlmIHByZXNlbnQpOgotICAgICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQotICAgIGZpCi0KLSAgICBDUFBGTEFHUz0iJENQUEZMQUdTX1NBVkVEIgotICAgIExERkxBR1M9IiRMREZMQUdTX1NBVkVEIgotZmkKLQotXSkKZGlmZiAtLWdpdCBhL200L2F4X2Jvb3N0X2ZpbGVzeXN0ZW0ubTQgYi9tNC9heF9ib29zdF9maWxlc3lzdGVtLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTYyMTYzLi4wMDAwMDAwCi0tLSBhL200L2F4X2Jvb3N0X2ZpbGVzeXN0ZW0ubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfYm9vc3RfZmlsZXN5c3RlbS5odG1sCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBTWU5PUFNJUwotIwotIyAgIEFYX0JPT1NUX0ZJTEVTWVNURU0KLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBUZXN0IGZvciBGaWxlc3lzdGVtIGxpYnJhcnkgZnJvbSB0aGUgQm9vc3QgQysrIGxpYnJhcmllcy4gVGhlIG1hY3JvCi0jICAgcmVxdWlyZXMgYSBwcmVjZWRpbmcgY2FsbCB0byBBWF9CT09TVF9CQVNFLiBGdXJ0aGVyIGRvY3VtZW50YXRpb24gaXMKLSMgICBhdmFpbGFibGUgYXQgPGh0dHA6Ly9yYW5kc3ByaW5nZXIuZGUvYm9vc3QvaW5kZXguaHRtbD4uCi0jCi0jICAgVGhpcyBtYWNybyBjYWxsczoKLSMKLSMgICAgIEFDX1NVQlNUKEJPT1NUX0ZJTEVTWVNURU1fTElCKQotIwotIyAgIEFuZCBzZXRzOgotIwotIyAgICAgSEFWRV9CT09TVF9GSUxFU1lTVEVNCi0jCi0jIExJQ0VOU0UKLSMKLSMgICBDb3B5cmlnaHQgKGMpIDIwMDkgVGhvbWFzIFBvcnNjaGJlcmcgPHRob21hc0ByYW5kc3ByaW5nZXIuZGU+Ci0jICAgQ29weXJpZ2h0IChjKSAyMDA5IE1pY2hhZWwgVGluZGFsCi0jICAgQ29weXJpZ2h0IChjKSAyMDA5IFJvbWFuIFJ5YmFsa28gPGxpYnRvcnJlbnRAcm9tYW5yLmluZm8+Ci0jCi0jICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0jICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0jICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotIyAgIHdhcnJhbnR5LgotCi0jc2VyaWFsIDI2Ci0KLUFDX0RFRlVOKFtBWF9CT09TVF9GSUxFU1lTVEVNXSwKLVsKLQlBQ19BUkdfV0lUSChbYm9vc3QtZmlsZXN5c3RlbV0sCi0JQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ib29zdC1maWxlc3lzdGVtQDw6QD1zcGVjaWFsLWxpYkA6PkBdLAotICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIEZpbGVzeXN0ZW0gbGlicmFyeSBmcm9tIGJvb3N0IC0gaXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBhIGNlcnRhaW4gbGlicmFyeSBmb3IgdGhlIGxpbmtlcgotICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiAtLXdpdGgtYm9vc3QtZmlsZXN5c3RlbT1ib29zdF9maWxlc3lzdGVtLWdjYy1tdCBdKSwKLSAgICAgICAgWwotICAgICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAibm8iOyB0aGVuCi0JCQl3YW50X2Jvb3N0PSJubyIKLSAgICAgICAgZWxpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgotICAgICAgICAgICAgd2FudF9ib29zdD0ieWVzIgotICAgICAgICAgICAgYXhfYm9vc3RfdXNlcl9maWxlc3lzdGVtX2xpYj0iIgotICAgICAgICBlbHNlCi0JCSAgICB3YW50X2Jvb3N0PSJ5ZXMiCi0JCWF4X2Jvb3N0X3VzZXJfZmlsZXN5c3RlbV9saWI9IiR3aXRodmFsIgotCQlmaQotICAgICAgICBdLAotICAgICAgICBbd2FudF9ib29zdD0ieWVzIl0KLQkpCi0KLQlpZiB0ZXN0ICJ4JHdhbnRfYm9vc3QiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQotCQlDUFBGTEFHU19TQVZFRD0iJENQUEZMQUdTIgotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRCT09TVF9DUFBGTEFHUyIKLQkJZXhwb3J0IENQUEZMQUdTCi0KLQkJTERGTEFHU19TQVZFRD0iJExERkxBR1MiCi0JCUxERkxBR1M9IiRMREZMQUdTICRCT09TVF9MREZMQUdTIgotCQlleHBvcnQgTERGTEFHUwotCi0JCUxJQlNfU0FWRUQ9JExJQlMKLQkJTElCUz0iJExJQlMgJEJPT1NUX1NZU1RFTV9MSUIiCi0JCWV4cG9ydCBMSUJTCi0KLSAgICAgICAgQUNfQ0FDSEVfQ0hFQ0sod2hldGhlciB0aGUgQm9vc3Q6OkZpbGVzeXN0ZW0gbGlicmFyeSBpcyBhdmFpbGFibGUsCi0JCQkJCSAgIGF4X2N2X2Jvb3N0X2ZpbGVzeXN0ZW0sCi0gICAgICAgIFtBQ19MQU5HX1BVU0goW0MrK10pCi0gICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbQCU6QGluY2x1ZGUgPGJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+XV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjpmaWxlc3lzdGVtOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIG15X3BhdGgoICJmb28vYmFyL2RhdGEudHh0IiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtdXSldLAotCQkJCQkgICAgICAgYXhfY3ZfYm9vc3RfZmlsZXN5c3RlbT15ZXMsIGF4X2N2X2Jvb3N0X2ZpbGVzeXN0ZW09bm8pCi0gICAgICAgICBBQ19MQU5HX1BPUChbQysrXSkKLQkJXSkKLQkJaWYgdGVzdCAieCRheF9jdl9ib29zdF9maWxlc3lzdGVtIiA9ICJ4eWVzIjsgdGhlbgotCQkJQUNfREVGSU5FKEhBVkVfQk9PU1RfRklMRVNZU1RFTSwsW2RlZmluZSBpZiB0aGUgQm9vc3Q6OkZpbGVzeXN0ZW0gbGlicmFyeSBpcyBhdmFpbGFibGVdKQotICAgICAgICAgICAgQk9PU1RMSUJESVI9YGVjaG8gJEJPT1NUX0xERkxBR1MgfCBzZWQgLWUgJ3MvQDw6QF5cL0A6PkAqLy8nYAotICAgICAgICAgICAgaWYgdGVzdCAieCRheF9ib29zdF91c2VyX2ZpbGVzeXN0ZW1fbGliIiA9ICJ4IjsgdGhlbgotICAgICAgICAgICAgICAgIGZvciBsaWJleHRlbnNpb24gaW4gYGxzIC1yICRCT09TVExJQkRJUi9saWJib29zdF9maWxlc3lzdGVtKiAyPi9kZXYvbnVsbCB8IHNlZCAncywuKi9saWIsLCcgfCBzZWQgJ3MsXC4uKiwsJ2AgOyBkbwotICAgICAgICAgICAgICAgICAgICAgYXhfbGliPSR7bGliZXh0ZW5zaW9ufQotCQkJCSAgICBBQ19DSEVDS19MSUIoJGF4X2xpYiwgZXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtCT09TVF9GSUxFU1lTVEVNX0xJQj0iLWwkYXhfbGliIjsgQUNfU1VCU1QoQk9PU1RfRklMRVNZU1RFTV9MSUIpIGxpbmtfZmlsZXN5c3RlbT0ieWVzIjsgYnJlYWtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtfZmlsZXN5c3RlbT0ibm8iXSkKLQkJCQlkb25lCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAieCRsaW5rX2ZpbGVzeXN0ZW0iICE9ICJ4eWVzIjsgdGhlbgotICAgICAgICAgICAgICAgIGZvciBsaWJleHRlbnNpb24gaW4gYGxzIC1yICRCT09TVExJQkRJUi9ib29zdF9maWxlc3lzdGVtKiAyPi9kZXYvbnVsbCB8IHNlZCAncywuKi8sLCcgfCBzZWQgLWUgJ3MsXC4uKiwsJ2AgOyBkbwotICAgICAgICAgICAgICAgICAgICAgYXhfbGliPSR7bGliZXh0ZW5zaW9ufQotCQkJCSAgICBBQ19DSEVDS19MSUIoJGF4X2xpYiwgZXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtCT09TVF9GSUxFU1lTVEVNX0xJQj0iLWwkYXhfbGliIjsgQUNfU1VCU1QoQk9PU1RfRklMRVNZU1RFTV9MSUIpIGxpbmtfZmlsZXN5c3RlbT0ieWVzIjsgYnJlYWtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtfZmlsZXN5c3RlbT0ibm8iXSkKLQkJCQlkb25lCi0JCSAgICBmaQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgZm9yIGF4X2xpYiBpbiAkYXhfYm9vc3RfdXNlcl9maWxlc3lzdGVtX2xpYiBib29zdF9maWxlc3lzdGVtLSRheF9ib29zdF91c2VyX2ZpbGVzeXN0ZW1fbGliOyBkbwotCQkJCSAgICAgIEFDX0NIRUNLX0xJQigkYXhfbGliLCBleGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQk9PU1RfRklMRVNZU1RFTV9MSUI9Ii1sJGF4X2xpYiI7IEFDX1NVQlNUKEJPT1NUX0ZJTEVTWVNURU1fTElCKSBsaW5rX2ZpbGVzeXN0ZW09InllcyI7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtfZmlsZXN5c3RlbT0ibm8iXSkKLSAgICAgICAgICAgICAgICAgIGRvbmUKLQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGlmIHRlc3QgIngkYXhfbGliIiA9ICJ4IjsgdGhlbgotICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihDb3VsZCBub3QgZmluZCBhIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkhKQotICAgICAgICAgICAgZmkKLQkJCWlmIHRlc3QgIngkbGlua19maWxlc3lzdGVtIiAhPSAieHllcyI7IHRoZW4KLQkJCQlBQ19NU0dfRVJST1IoQ291bGQgbm90IGxpbmsgYWdhaW5zdCAkYXhfbGliICEpCi0JCQlmaQotCQlmaQotCi0JCUNQUEZMQUdTPSIkQ1BQRkxBR1NfU0FWRUQiCi0JCUxERkxBR1M9IiRMREZMQUdTX1NBVkVEIgotCQlMSUJTPSIkTElCU19TQVZFRCIKLQlmaQotXSkKZGlmZiAtLWdpdCBhL200L2F4X2Jvb3N0X3N5c3RlbS5tNCBiL200L2F4X2Jvb3N0X3N5c3RlbS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjNDU1NS4uMDAwMDAwMAotLS0gYS9tNC9heF9ib29zdF9zeXN0ZW0ubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9ib29zdF9zeXN0ZW0uaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBBWF9CT09TVF9TWVNURU0KLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBUZXN0IGZvciBTeXN0ZW0gbGlicmFyeSBmcm9tIHRoZSBCb29zdCBDKysgbGlicmFyaWVzLiBUaGUgbWFjcm8gcmVxdWlyZXMKLSMgICBhIHByZWNlZGluZyBjYWxsIHRvIEFYX0JPT1NUX0JBU0UuIEZ1cnRoZXIgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQKLSMgICA8aHR0cDovL3JhbmRzcHJpbmdlci5kZS9ib29zdC9pbmRleC5odG1sPi4KLSMKLSMgICBUaGlzIG1hY3JvIGNhbGxzOgotIwotIyAgICAgQUNfU1VCU1QoQk9PU1RfU1lTVEVNX0xJQikKLSMKLSMgICBBbmQgc2V0czoKLSMKLSMgICAgIEhBVkVfQk9PU1RfU1lTVEVNCi0jCi0jIExJQ0VOU0UKLSMKLSMgICBDb3B5cmlnaHQgKGMpIDIwMDggVGhvbWFzIFBvcnNjaGJlcmcgPHRob21hc0ByYW5kc3ByaW5nZXIuZGU+Ci0jICAgQ29weXJpZ2h0IChjKSAyMDA4IE1pY2hhZWwgVGluZGFsCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IERhbmllbCBDYXNpbWlybyA8ZGFuLmNhc2ltaXJvQGdtYWlsLmNvbT4KLSMKLSMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55Ci0jICAgd2FycmFudHkuCi0KLSNzZXJpYWwgMTcKLQotQUNfREVGVU4oW0FYX0JPT1NUX1NZU1RFTV0sCi1bCi0JQUNfQVJHX1dJVEgoW2Jvb3N0LXN5c3RlbV0sCi0JQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ib29zdC1zeXN0ZW1APDpAPXNwZWNpYWwtbGliQDo+QF0sCi0gICAgICAgICAgICAgICAgICAgW3VzZSB0aGUgU3lzdGVtIGxpYnJhcnkgZnJvbSBib29zdCAtIGl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBjZXJ0YWluIGxpYnJhcnkgZm9yIHRoZSBsaW5rZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4gLS13aXRoLWJvb3N0LXN5c3RlbT1ib29zdF9zeXN0ZW0tZ2NjLW10IF0pLAotICAgICAgICBbCi0gICAgICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJubyI7IHRoZW4KLQkJCXdhbnRfYm9vc3Q9Im5vIgotICAgICAgICBlbGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICAgICB3YW50X2Jvb3N0PSJ5ZXMiCi0gICAgICAgICAgICBheF9ib29zdF91c2VyX3N5c3RlbV9saWI9IiIKLSAgICAgICAgZWxzZQotCQkgICAgd2FudF9ib29zdD0ieWVzIgotCQlheF9ib29zdF91c2VyX3N5c3RlbV9saWI9IiR3aXRodmFsIgotCQlmaQotICAgICAgICBdLAotICAgICAgICBbd2FudF9ib29zdD0ieWVzIl0KLQkpCi0KLQlpZiB0ZXN0ICJ4JHdhbnRfYm9vc3QiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQotICAgICAgICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKQotCQlDUFBGTEFHU19TQVZFRD0iJENQUEZMQUdTIgotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRCT09TVF9DUFBGTEFHUyIKLQkJZXhwb3J0IENQUEZMQUdTCi0KLQkJTERGTEFHU19TQVZFRD0iJExERkxBR1MiCi0JCUxERkxBR1M9IiRMREZMQUdTICRCT09TVF9MREZMQUdTIgotCQlleHBvcnQgTERGTEFHUwotCi0gICAgICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgdGhlIEJvb3N0OjpTeXN0ZW0gbGlicmFyeSBpcyBhdmFpbGFibGUsCi0JCQkJCSAgIGF4X2N2X2Jvb3N0X3N5c3RlbSwKLSAgICAgICAgW0FDX0xBTkdfUFVTSChbQysrXSkKLQkJCSBDWFhGTEFHU19TQVZFPSRDWFhGTEFHUwotCi0JCQkgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW0AlOkBpbmNsdWRlIDxib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+XV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbYm9vc3Q6OnN5c3RlbTo6c3lzdGVtX2NhdGVnb3J5XV0pXSwKLSAgICAgICAgICAgICAgICAgICBheF9jdl9ib29zdF9zeXN0ZW09eWVzLCBheF9jdl9ib29zdF9zeXN0ZW09bm8pCi0JCQkgQ1hYRkxBR1M9JENYWEZMQUdTX1NBVkUKLSAgICAgICAgICAgICBBQ19MQU5HX1BPUChbQysrXSkKLQkJXSkKLQkJaWYgdGVzdCAieCRheF9jdl9ib29zdF9zeXN0ZW0iID0gInh5ZXMiOyB0aGVuCi0JCQlBQ19TVUJTVChCT09TVF9DUFBGTEFHUykKLQotCQkJQUNfREVGSU5FKEhBVkVfQk9PU1RfU1lTVEVNLCxbZGVmaW5lIGlmIHRoZSBCb29zdDo6U3lzdGVtIGxpYnJhcnkgaXMgYXZhaWxhYmxlXSkKLSAgICAgICAgICAgIEJPT1NUTElCRElSPWBlY2hvICRCT09TVF9MREZMQUdTIHwgc2VkIC1lICdzL0A8OkBeXC9AOj5AKi8vJ2AKLQotCQkJTERGTEFHU19TQVZFPSRMREZMQUdTCi0gICAgICAgICAgICBpZiB0ZXN0ICJ4JGF4X2Jvb3N0X3VzZXJfc3lzdGVtX2xpYiIgPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICBmb3IgbGliZXh0ZW5zaW9uIGluIGBscyAtciAkQk9PU1RMSUJESVIvbGliYm9vc3Rfc3lzdGVtKiAyPi9kZXYvbnVsbCB8IHNlZCAncywuKi9saWIsLCcgfCBzZWQgJ3MsXC4uKiwsJ2AgOyBkbwotICAgICAgICAgICAgICAgICAgICAgYXhfbGliPSR7bGliZXh0ZW5zaW9ufQotCQkJCSAgICBBQ19DSEVDS19MSUIoJGF4X2xpYiwgZXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtCT09TVF9TWVNURU1fTElCPSItbCRheF9saWIiOyBBQ19TVUJTVChCT09TVF9TWVNURU1fTElCKSBsaW5rX3N5c3RlbT0ieWVzIjsgYnJlYWtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtfc3lzdGVtPSJubyJdKQotCQkJCWRvbmUKLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JGxpbmtfc3lzdGVtIiAhPSAieHllcyI7IHRoZW4KLSAgICAgICAgICAgICAgICBmb3IgbGliZXh0ZW5zaW9uIGluIGBscyAtciAkQk9PU1RMSUJESVIvYm9vc3Rfc3lzdGVtKiAyPi9kZXYvbnVsbCB8IHNlZCAncywuKi8sLCcgfCBzZWQgLWUgJ3MsXC4uKiwsJ2AgOyBkbwotICAgICAgICAgICAgICAgICAgICAgYXhfbGliPSR7bGliZXh0ZW5zaW9ufQotCQkJCSAgICBBQ19DSEVDS19MSUIoJGF4X2xpYiwgZXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtCT09TVF9TWVNURU1fTElCPSItbCRheF9saWIiOyBBQ19TVUJTVChCT09TVF9TWVNURU1fTElCKSBsaW5rX3N5c3RlbT0ieWVzIjsgYnJlYWtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtfc3lzdGVtPSJubyJdKQotCQkJCWRvbmUKLSAgICAgICAgICAgICAgICBmaQotCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICBmb3IgYXhfbGliIGluICRheF9ib29zdF91c2VyX3N5c3RlbV9saWIgYm9vc3Rfc3lzdGVtLSRheF9ib29zdF91c2VyX3N5c3RlbV9saWI7IGRvCi0JCQkJICAgICAgQUNfQ0hFQ0tfTElCKCRheF9saWIsIGV4aXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtCT09TVF9TWVNURU1fTElCPSItbCRheF9saWIiOyBBQ19TVUJTVChCT09TVF9TWVNURU1fTElCKSBsaW5rX3N5c3RlbT0ieWVzIjsgYnJlYWtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua19zeXN0ZW09Im5vIl0pCi0gICAgICAgICAgICAgICAgICBkb25lCi0KLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBpZiB0ZXN0ICJ4JGF4X2xpYiIgPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoQ291bGQgbm90IGZpbmQgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5ISkKLSAgICAgICAgICAgIGZpCi0JCQlpZiB0ZXN0ICJ4JGxpbmtfc3lzdGVtIiA9ICJ4bm8iOyB0aGVuCi0JCQkJQUNfTVNHX0VSUk9SKENvdWxkIG5vdCBsaW5rIGFnYWluc3QgJGF4X2xpYiAhKQotCQkJZmkKLQkJZmkKLQotCQlDUFBGTEFHUz0iJENQUEZMQUdTX1NBVkVEIgotCUxERkxBR1M9IiRMREZMQUdTX1NBVkVEIgotCWZpCi1dKQpkaWZmIC0tZ2l0IGEvbTQvYXhfYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay5tNCBiL200L2F4X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMTVmNTUuLjAwMDAwMDAKLS0tIGEvbTQvYXhfYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay5tNAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBBWF9CT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGVzdCBmb3IgVW5pdF9UZXN0X0ZyYW1ld29yayBsaWJyYXJ5IGZyb20gdGhlIEJvb3N0IEMrKyBsaWJyYXJpZXMuIFRoZQotIyAgIG1hY3JvIHJlcXVpcmVzIGEgcHJlY2VkaW5nIGNhbGwgdG8gQVhfQk9PU1RfQkFTRS4gRnVydGhlciBkb2N1bWVudGF0aW9uCi0jICAgaXMgYXZhaWxhYmxlIGF0IDxodHRwOi8vcmFuZHNwcmluZ2VyLmRlL2Jvb3N0L2luZGV4Lmh0bWw+LgotIwotIyAgIFRoaXMgbWFjcm8gY2FsbHM6Ci0jCi0jICAgICBBQ19TVUJTVChCT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLX0xJQikKLSMKLSMgICBBbmQgc2V0czoKLSMKLSMgICAgIEhBVkVfQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SSwotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IFRob21hcyBQb3JzY2hiZXJnIDx0aG9tYXNAcmFuZHNwcmluZ2VyLmRlPgotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSMgICB3YXJyYW50eS4KLQotI3NlcmlhbCAxOQotCi1BQ19ERUZVTihbQVhfQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SS10sCi1bCi0JQUNfQVJHX1dJVEgoW2Jvb3N0LXVuaXQtdGVzdC1mcmFtZXdvcmtdLAotCUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYm9vc3QtdW5pdC10ZXN0LWZyYW1ld29ya0A8OkA9c3BlY2lhbC1saWJAOj5AXSwKLSAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBVbml0X1Rlc3RfRnJhbWV3b3JrIGxpYnJhcnkgZnJvbSBib29zdCAtIGl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBjZXJ0YWluIGxpYnJhcnkgZm9yIHRoZSBsaW5rZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4gLS13aXRoLWJvb3N0LXVuaXQtdGVzdC1mcmFtZXdvcms9Ym9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay1nY2MgXSksCi0gICAgICAgIFsKLSAgICAgICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotCQkJd2FudF9ib29zdD0ibm8iCi0gICAgICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gInllcyI7IHRoZW4KLSAgICAgICAgICAgIHdhbnRfYm9vc3Q9InllcyIKLSAgICAgICAgICAgIGF4X2Jvb3N0X3VzZXJfdW5pdF90ZXN0X2ZyYW1ld29ya19saWI9IiIKLSAgICAgICAgZWxzZQotCQkgICAgd2FudF9ib29zdD0ieWVzIgotCQlheF9ib29zdF91c2VyX3VuaXRfdGVzdF9mcmFtZXdvcmtfbGliPSIkd2l0aHZhbCIKLQkJZmkKLSAgICAgICAgXSwKLSAgICAgICAgW3dhbnRfYm9vc3Q9InllcyJdCi0JKQotCi0JaWYgdGVzdCAieCR3YW50X2Jvb3N0IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKLQkJQ1BQRkxBR1NfU0FWRUQ9IiRDUFBGTEFHUyIKLQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAkQk9PU1RfQ1BQRkxBR1MiCi0JCWV4cG9ydCBDUFBGTEFHUwotCi0JCUxERkxBR1NfU0FWRUQ9IiRMREZMQUdTIgotCQlMREZMQUdTPSIkTERGTEFHUyAkQk9PU1RfTERGTEFHUyIKLQkJZXhwb3J0IExERkxBR1MKLQotICAgICAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHRoZSBCb29zdDo6VW5pdF9UZXN0X0ZyYW1ld29yayBsaWJyYXJ5IGlzIGF2YWlsYWJsZSwKLQkJCQkJICAgYXhfY3ZfYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yaywKLSAgICAgICAgW0FDX0xBTkdfUFVTSChbQysrXSkKLQkJCSBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbQCU6QGluY2x1ZGUgPGJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcD5dXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbdXNpbmcgYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZTsKLQkJCQkJCQkgdGVzdF9zdWl0ZSogdGVzdD0gQk9PU1RfVEVTVF9TVUlURSggIlVuaXQgdGVzdCBleGFtcGxlIDEiICk7IHJldHVybiAwO11dKV0sCi0gICAgICAgICAgICAgICAgICAgYXhfY3ZfYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yaz15ZXMsIGF4X2N2X2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcms9bm8pCi0gICAgICAgICBBQ19MQU5HX1BPUChbQysrXSkKLQkJXSkKLQkJaWYgdGVzdCAieCRheF9jdl9ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrIiA9ICJ4eWVzIjsgdGhlbgotCQkJQUNfREVGSU5FKEhBVkVfQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SSywsW2RlZmluZSBpZiB0aGUgQm9vc3Q6OlVuaXRfVGVzdF9GcmFtZXdvcmsgbGlicmFyeSBpcyBhdmFpbGFibGVdKQotICAgICAgICAgICAgQk9PU1RMSUJESVI9YGVjaG8gJEJPT1NUX0xERkxBR1MgfCBzZWQgLWUgJ3MvQDw6QF5cL0A6PkAqLy8nYAotCi0gICAgICAgICAgICBpZiB0ZXN0ICJ4JGF4X2Jvb3N0X3VzZXJfdW5pdF90ZXN0X2ZyYW1ld29ya19saWIiID0gIngiOyB0aGVuCi0JCQlzYXZlZF9sZGZsYWdzPSIke0xERkxBR1N9IgotICAgICAgICAgICAgICAgIGZvciBtb25pdG9yX2xpYnJhcnkgaW4gYGxzICRCT09TVExJQkRJUi9saWJib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrKi5zbyogJEJPT1NUTElCRElSL2xpYmJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsqLmR5bGliKiAkQk9PU1RMSUJESVIvbGliYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yayouYSogMj4vZGV2L251bGxgIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtciAkbW9uaXRvcl9saWJyYXJ5IDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICBsaWJleHRlbnNpb249YGVjaG8gJG1vbml0b3JfbGlicmFyeSB8IHNlZCAncywuKi8sLCcgfCBzZWQgLWUgJ3M7XmxpYlwoYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay4qXClcLnNvLiokO1wxOycgLWUgJ3M7XmxpYlwoYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay4qXClcLmR5bGliLiokO1wxOycgLWUgJ3M7XmxpYlwoYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay4qXClcLmEuKiQ7XDE7J2AKLSAgICAgICAgICAgICAgICAgICAgICAgYXhfbGliPSR7bGliZXh0ZW5zaW9ufQotICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcms9InllcyIKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcms9Im5vIgotICAgICAgICAgICAgICAgICAgICBmaQotCi0JCQkgICAgaWYgdGVzdCAieCRsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcmsiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SS19MSUI9Ii1sJGF4X2xpYiIKLSAgICAgICAgICAgICAgICAgICAgICBBQ19TVUJTVChCT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLX0xJQikKLQkJCQkJICBicmVhawotCQkJCSAgICBmaQotICAgICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JGxpbmtfdW5pdF90ZXN0X2ZyYW1ld29yayIgIT0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICAgICAgZm9yIGxpYmV4dGVuc2lvbiBpbiBgbHMgJEJPT1NUTElCRElSL2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsqLmRsbCogJEJPT1NUTElCRElSL2Jvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsqLmEqIDI+L2Rldi9udWxsICB8IHNlZCAncywuKi8sLCcgfCBzZWQgLWUgJ3M7XlwoYm9vc3RfdW5pdF90ZXN0X2ZyYW1ld29yay4qXClcLmRsbC4qJDtcMTsnIC1lICdzO15cKGJvb3N0X3VuaXRfdGVzdF9mcmFtZXdvcmsuKlwpXC5hLiokO1wxOydgIDsgZG8KLSAgICAgICAgICAgICAgICAgICAgIGF4X2xpYj0ke2xpYmV4dGVuc2lvbn0KLQkJCQkgICAgQUNfQ0hFQ0tfTElCKCRheF9saWIsIGV4aXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SS19MSUI9Ii1sJGF4X2xpYiI7IEFDX1NVQlNUKEJPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUktfTElCKSBsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcms9InllcyI7IGJyZWFrXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rX3VuaXRfdGVzdF9mcmFtZXdvcms9Im5vIl0pCi0JCQkJZG9uZQotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbGlua191bml0X3Rlc3RfZnJhbWV3b3JrPSJubyIKLQkJCXNhdmVkX2xkZmxhZ3M9IiR7TERGTEFHU30iCi0gICAgICAgICAgICAgICAgZm9yIGF4X2xpYiBpbiBib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrLSRheF9ib29zdF91c2VyX3VuaXRfdGVzdF9mcmFtZXdvcmtfbGliICRheF9ib29zdF91c2VyX3VuaXRfdGVzdF9mcmFtZXdvcmtfbGliIDsgZG8KLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JGxpbmtfdW5pdF90ZXN0X2ZyYW1ld29yayIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgICAgIGZvciB1bml0dGVzdF9saWJyYXJ5IGluIGBscyAkQk9PU1RMSUJESVIvbGliJHtheF9saWJ9LnNvKiAkQk9PU1RMSUJESVIvbGliJHtheF9saWJ9LmEqIDI+L2Rldi9udWxsYCA7IGRvCi0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtciAkdW5pdHRlc3RfbGlicmFyeSA7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgbGliZXh0ZW5zaW9uPWBlY2hvICR1bml0dGVzdF9saWJyYXJ5IHwgc2VkICdzLC4qLywsJyB8IHNlZCAtZSAncztebGliXChib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrLipcKVwuc28uKiQ7XDE7JyAtZSAncztebGliXChib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrLipcKVwuYSokO1wxOydgCi0gICAgICAgICAgICAgICAgICAgICAgIGF4X2xpYj0ke2xpYmV4dGVuc2lvbn0KLSAgICAgICAgICAgICAgICAgICAgICAgbGlua191bml0X3Rlc3RfZnJhbWV3b3JrPSJ5ZXMiCi0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgbGlua191bml0X3Rlc3RfZnJhbWV3b3JrPSJubyIKLSAgICAgICAgICAgICAgICAgICAgZmkKLQotCQkJCWlmIHRlc3QgIngkbGlua191bml0X3Rlc3RfZnJhbWV3b3JrIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgQk9PU1RfVU5JVF9URVNUX0ZSQU1FV09SS19MSUI9Ii1sJGF4X2xpYiIKLSAgICAgICAgICAgICAgICAgICAgICAgIEFDX1NVQlNUKEJPT1NUX1VOSVRfVEVTVF9GUkFNRVdPUktfTElCKQotCQkJCQkgICAgYnJlYWsKLQkJCQkgICAgZmkKLSAgICAgICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBpZiB0ZXN0ICJ4JGF4X2xpYiIgPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoQ291bGQgbm90IGZpbmQgYSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5ISkKLSAgICAgICAgICAgIGZpCi0JCQlpZiB0ZXN0ICJ4JGxpbmtfdW5pdF90ZXN0X2ZyYW1ld29yayIgIT0gInh5ZXMiOyB0aGVuCi0JCQkJQUNfTVNHX0VSUk9SKENvdWxkIG5vdCBsaW5rIGFnYWluc3QgJGF4X2xpYiAhKQotCQkJZmkKLQkJZmkKLQotCQlDUFBGTEFHUz0iJENQUEZMQUdTX1NBVkVEIgotCUxERkxBR1M9IiRMREZMQUdTX1NBVkVEIgotCWZpCi1dKQpkaWZmIC0tZ2l0IGEvbTQvYXhfY2hlY2tfb3BlbnNzbC5tNCBiL200L2F4X2NoZWNrX29wZW5zc2wubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4N2M1YTYuLjAwMDAwMDAKLS0tIGEvbTQvYXhfY2hlY2tfb3BlbnNzbC5tNAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY2hlY2tfb3BlbnNzbC5odG1sCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBTWU5PUFNJUwotIwotIyAgIEFYX0NIRUNLX09QRU5TU0woW2FjdGlvbi1pZi1mb3VuZFssIGFjdGlvbi1pZi1ub3QtZm91bmRdXSkKLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBMb29rIGZvciBPcGVuU1NMIGluIGEgbnVtYmVyIG9mIGRlZmF1bHQgc3BvdHMsIG9yIGluIGEgdXNlci1zZWxlY3RlZAotIyAgIHNwb3QgKHZpYSAtLXdpdGgtb3BlbnNzbCkuICBTZXRzCi0jCi0jICAgICBPUEVOU1NMX0lOQ0xVREVTIHRvIHRoZSBpbmNsdWRlIGRpcmVjdGl2ZXMgcmVxdWlyZWQKLSMgICAgIE9QRU5TU0xfTElCUyB0byB0aGUgLWwgZGlyZWN0aXZlcyByZXF1aXJlZAotIyAgICAgT1BFTlNTTF9MREZMQUdTIHRvIHRoZSAtTCBvciAtUiBmbGFncyByZXF1aXJlZAotIwotIyAgIGFuZCBjYWxscyBBQ1RJT04tSUYtRk9VTkQgb3IgQUNUSU9OLUlGLU5PVC1GT1VORCBhcHByb3ByaWF0ZWx5Ci0jCi0jICAgVGhpcyBtYWNybyBzZXRzIE9QRU5TU0xfSU5DTFVERVMgc3VjaCB0aGF0IHNvdXJjZSBmaWxlcyBzaG91bGQgdXNlIHRoZQotIyAgIG9wZW5zc2wvIGRpcmVjdG9yeSBpbiBpbmNsdWRlIGRpcmVjdGl2ZXM6Ci0jCi0jICAgICAjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+Ci0jCi0jIExJQ0VOU0UKLSMKLSMgICBDb3B5cmlnaHQgKGMpIDIwMDksMjAxMCBabWFuZGEgSW5jLiA8aHR0cDovL3d3dy56bWFuZGEuY29tLz4KLSMgICBDb3B5cmlnaHQgKGMpIDIwMDksMjAxMCBEdXN0aW4gSi4gTWl0Y2hlbGwgPGR1c3RpbkB6bWFuZGEuY29tPgotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSMgICB3YXJyYW50eS4KLQotI3NlcmlhbCA4Ci0KLUFVX0FMSUFTKFtDSEVDS19TU0xdLCBbQVhfQ0hFQ0tfT1BFTlNTTF0pCi1BQ19ERUZVTihbQVhfQ0hFQ0tfT1BFTlNTTF0sIFsKLSAgICBmb3VuZD1mYWxzZQotICAgIEFDX0FSR19XSVRIKFtvcGVuc3NsXSwKLSAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtb3BlbnNzbD1ESVJdLAotICAgICAgICAgICAgW3Jvb3Qgb2YgdGhlIE9wZW5TU0wgZGlyZWN0b3J5XSldLAotICAgICAgICBbCi0gICAgICAgICAgICBjYXNlICIkd2l0aHZhbCIgaW4KLSAgICAgICAgICAgICIiIHwgeSB8IHllIHwgeWVzIHwgbiB8IG5vKQotICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtJbnZhbGlkIC0td2l0aC1vcGVuc3NsIHZhbHVlXSkKLSAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICopIHNzbGRpcnM9IiR3aXRodmFsIgotICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgZXNhYwotICAgICAgICBdLCBbCi0gICAgICAgICAgICAjIGlmIHBrZy1jb25maWcgaXMgaW5zdGFsbGVkIGFuZCBvcGVuc3NsIGhhcyBpbnN0YWxsZWQgYSAucGMgZmlsZSwKLSAgICAgICAgICAgICMgdGhlbiB1c2UgdGhhdCBpbmZvcm1hdGlvbiBhbmQgZG9uJ3Qgc2VhcmNoIHNzbGRpcnMKLSAgICAgICAgICAgIEFDX1BBVEhfUFJPRyhbUEtHX0NPTkZJR10sIFtwa2ctY29uZmlnXSkKLSAgICAgICAgICAgIGlmIHRlc3QgeCIkUEtHX0NPTkZJRyIgIT0geCIiOyB0aGVuCi0gICAgICAgICAgICAgICAgT1BFTlNTTF9MREZMQUdTPWAkUEtHX0NPTkZJRyBvcGVuc3NsIC0tbGlicy1vbmx5LUwgMj4vZGV2L251bGxgCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAkPyA9IDA7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgT1BFTlNTTF9MSUJTPWAkUEtHX0NPTkZJRyBvcGVuc3NsIC0tbGlicy1vbmx5LWwgMj4vZGV2L251bGxgCi0gICAgICAgICAgICAgICAgICAgIE9QRU5TU0xfSU5DTFVERVM9YCRQS0dfQ09ORklHIG9wZW5zc2wgLS1jZmxhZ3Mtb25seS1JIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgICAgICAgICBmb3VuZD10cnVlCi0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGZpCi0KLSAgICAgICAgICAgICMgbm8gc3VjaCBsdWNrOyB1c2Ugc29tZSBkZWZhdWx0IHNzbGRpcnMKLSAgICAgICAgICAgIGlmICEgJGZvdW5kOyB0aGVuCi0gICAgICAgICAgICAgICAgc3NsZGlycz0iL3Vzci9sb2NhbC9zc2wgL3Vzci9saWIvc3NsIC91c3Ivc3NsIC91c3IvcGtnIC91c3IvbG9jYWwgL3VzciIKLSAgICAgICAgICAgIGZpCi0gICAgICAgIF0KLSAgICAgICAgKQotCi0KLSAgICAjIG5vdGUgdGhhdCB3ZSAjaW5jbHVkZSA8b3BlbnNzbC9mb28uaD4sIHNvIHRoZSBPcGVuU1NMIGhlYWRlcnMgaGF2ZSB0byBiZSBpbgotICAgICMgYW4gJ29wZW5zc2wnIHN1YmRpcmVjdG9yeQotCi0gICAgaWYgISAkZm91bmQ7IHRoZW4KLSAgICAgICAgT1BFTlNTTF9JTkNMVURFUz0KLSAgICAgICAgZm9yIHNzbGRpciBpbiAkc3NsZGlyczsgZG8KLSAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIG9wZW5zc2wvc3NsLmggaW4gJHNzbGRpcl0pCi0gICAgICAgICAgICBpZiB0ZXN0IC1mICIkc3NsZGlyL2luY2x1ZGUvb3BlbnNzbC9zc2wuaCI7IHRoZW4KLSAgICAgICAgICAgICAgICBPUEVOU1NMX0lOQ0xVREVTPSItSSRzc2xkaXIvaW5jbHVkZSIKLSAgICAgICAgICAgICAgICBPUEVOU1NMX0xERkxBR1M9Ii1MJHNzbGRpci9saWIiCi0gICAgICAgICAgICAgICAgT1BFTlNTTF9MSUJTPSItbHNzbCAtbGNyeXB0byIKLSAgICAgICAgICAgICAgICBmb3VuZD10cnVlCi0gICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLQotICAgICAgICAjIGlmIHRoZSBmaWxlIHdhc24ndCBmb3VuZCwgd2VsbCwgZ28gYWhlYWQgYW5kIHRyeSB0aGUgbGluayBhbnl3YXkgLS0gbWF5YmUKLSAgICAgICAgIyBpdCB3aWxsIGp1c3Qgd29yayEKLSAgICBmaQotCi0gICAgIyB0cnkgdGhlIHByZXByb2Nlc3NvciBhbmQgbGlua2VyIHdpdGggb3VyIG5ldyBmbGFncywKLSAgICAjIGJlaW5nIGNhcmVmdWwgbm90IHRvIHBvbGx1dGUgdGhlIGdsb2JhbCBMSUJTLCBMREZMQUdTLCBhbmQgQ1BQRkxBR1MKLQotICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBjb21waWxpbmcgYW5kIGxpbmtpbmcgYWdhaW5zdCBPcGVuU1NMIHdvcmtzXSkKLSAgICBlY2hvICJUcnlpbmcgbGluayB3aXRoIE9QRU5TU0xfTERGTEFHUz0kT1BFTlNTTF9MREZMQUdTOyIgXAotICAgICAgICAiT1BFTlNTTF9MSUJTPSRPUEVOU1NMX0xJQlM7IE9QRU5TU0xfSU5DTFVERVM9JE9QRU5TU0xfSU5DTFVERVMiID4mQVNfTUVTU0FHRV9MT0dfRkQKLQotICAgIHNhdmVfTElCUz0iJExJQlMiCi0gICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gICAgTERGTEFHUz0iJExERkxBR1MgJE9QRU5TU0xfTERGTEFHUyIKLSAgICBMSUJTPSIkT1BFTlNTTF9MSUJTICRMSUJTIgotICAgIENQUEZMQUdTPSIkT1BFTlNTTF9JTkNMVURFUyAkQ1BQRkxBR1MiCi0gICAgQUNfTElOS19JRkVMU0UoCi0gICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPl0sIFtTU0xfbmV3KE5VTEwpXSldLAotICAgICAgICBbCi0gICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgICAgICAgICAgJDEKLSAgICAgICAgXSwgWwotICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgICAgICAgICAgJDIKLSAgICAgICAgXSkKLSAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0gICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSAgICBMSUJTPSIkc2F2ZV9MSUJTIgotCi0gICAgQUNfU1VCU1QoW09QRU5TU0xfSU5DTFVERVNdKQotICAgIEFDX1NVQlNUKFtPUEVOU1NMX0xJQlNdKQotICAgIEFDX1NVQlNUKFtPUEVOU1NMX0xERkxBR1NdKQotXSkKZGlmZiAtLWdpdCBhL200L2F4X2N4eF9jb21waWxlX3N0ZGN4eF8xMS5tNCBiL200L2F4X2N4eF9jb21waWxlX3N0ZGN4eF8xMS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ0MGFjMS4uMDAwMDAwMAotLS0gYS9tNC9heF9jeHhfY29tcGlsZV9zdGRjeHhfMTEubTQKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jeHhfY29tcGlsZV9zdGRjeHhfMTEuaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfQ1hYX0NPTVBJTEVfU1REQ1hYXzExKFtleHR8bm9leHRdLFttYW5kYXRvcnl8b3B0aW9uYWxdKQotIwotIyBERVNDUklQVElPTgotIwotIyAgIENoZWNrIGZvciBiYXNlbGluZSBsYW5ndWFnZSBjb3ZlcmFnZSBpbiB0aGUgY29tcGlsZXIgZm9yIHRoZSBDKysxMQotIyAgIHN0YW5kYXJkOyBpZiBuZWNlc3NhcnksIGFkZCBzd2l0Y2hlcyB0byBDWFhGTEFHUyB0byBlbmFibGUgc3VwcG9ydC4KLSMKLSMgICBUaGUgZmlyc3QgYXJndW1lbnQsIGlmIHNwZWNpZmllZCwgaW5kaWNhdGVzIHdoZXRoZXIgeW91IGluc2lzdCBvbiBhbgotIyAgIGV4dGVuZGVkIG1vZGUgKGUuZy4gLXN0ZD1nbnUrKzExKSBvciBhIHN0cmljdCBjb25mb3JtYW5jZSBtb2RlIChlLmcuCi0jICAgLXN0ZD1jKysxMSkuICBJZiBuZWl0aGVyIGlzIHNwZWNpZmllZCwgeW91IGdldCB3aGF0ZXZlciB3b3Jrcywgd2l0aAotIyAgIHByZWZlcmVuY2UgZm9yIGFuIGV4dGVuZGVkIG1vZGUuCi0jCi0jICAgVGhlIHNlY29uZCBhcmd1bWVudCwgaWYgc3BlY2lmaWVkICdtYW5kYXRvcnknIG9yIGlmIGxlZnQgdW5zcGVjaWZpZWQsCi0jICAgaW5kaWNhdGVzIHRoYXQgYmFzZWxpbmUgQysrMTEgc3VwcG9ydCBpcyByZXF1aXJlZCBhbmQgdGhhdCB0aGUgbWFjcm8KLSMgICBzaG91bGQgZXJyb3Igb3V0IGlmIG5vIG1vZGUgd2l0aCB0aGF0IHN1cHBvcnQgaXMgZm91bmQuICBJZiBzcGVjaWZpZWQKLSMgICAnb3B0aW9uYWwnLCB0aGVuIGNvbmZpZ3VyYXRpb24gcHJvY2VlZHMgcmVnYXJkbGVzcywgYWZ0ZXIgZGVmaW5pbmcKLSMgICBIQVZFX0NYWDExIGlmIGFuZCBvbmx5IGlmIGEgc3VwcG9ydGluZyBtb2RlIGlzIGZvdW5kLgotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotIyAgIENvcHlyaWdodCAoYykgMjAxMiBaYWNrIFdlaW5iZXJnIDx6YWNrd0BwYW5peC5jb20+Ci0jICAgQ29weXJpZ2h0IChjKSAyMDEzIFJveSBTdG9nbmVyIDxyb3lzdGduckBpY2VzLnV0ZXhhcy5lZHU+Ci0jCi0jICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0jICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0jICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotIyAgIHdhcnJhbnR5LgotCi0jc2VyaWFsIDMKLQotbTRfZGVmaW5lKFtfQVhfQ1hYX0NPTVBJTEVfU1REQ1hYXzExX3Rlc3Rib2R5XSwgWwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgY2hlY2sKLSAgICB7Ci0gICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQpIDw9IHNpemVvZihUKSwgIm5vdCBiaWcgZW5vdWdoIik7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgY2hlY2s8Y2hlY2s8Ym9vbD4+IHJpZ2h0X2FuZ2xlX2JyYWNrZXRzOwotCi0gICAgaW50IGE7Ci0gICAgZGVjbHR5cGUoYSkgYjsKLQotICAgIHR5cGVkZWYgY2hlY2s8aW50PiBjaGVja190eXBlOwotICAgIGNoZWNrX3R5cGUgYzsKLSAgICBjaGVja190eXBlJiYgY3IgPSBzdGF0aWNfY2FzdDxjaGVja190eXBlJiY+KGMpOwotCi0gICAgYXV0byBkID0gYTsKLV0pCi0KLUFDX0RFRlVOKFtBWF9DWFhfQ09NUElMRV9TVERDWFhfMTFdLCBbZG5sCi0gIEFDX0FSR19XSVRIKFtjKysxMV0sCi0gICAgQVNfSEVMUF9TVFJJTkcoCi0gICAgICAgIFstLXdpdGgtYysrMTE9QDw6QEFSR0A6PkBdLAotICAgICAgICBbdXNlIEMrKzExIHdoZW4gYXZhaWxhYmxlIEA8OkBkZWZhdWx0PW5vQDo+QF0KLSAgICApLAotICAgIFsKLSAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgotICAgICAgICBXQU5UX0NYWDExPSJ5ZXMiCi0gICAgZmkKLSAgICBdLAotICAgIFtXQU5UX0NYWDExPSJubyJdCi0gICkKLQotICBpZiB0ZXN0ICJ4JFdBTlRfQ1hYMTEiID0gInh5ZXMiOyB0aGVuCi0gICAgbTRfaWYoWyQxXSwgW10sIFtdLAotICAgICAgICAgIFskMV0sIFtleHRdLCBbXSwKLSAgICAgICAgICBbJDFdLCBbbm9leHRdLCBbXSwKLSAgICAgICAgICBbbTRfZmF0YWwoW2ludmFsaWQgYXJndW1lbnQgYCQxJyB0byBBWF9DWFhfQ09NUElMRV9TVERDWFhfMTFdKV0pZG5sCi0gICAgbTRfaWYoWyQyXSwgW10sIFtheF9jeHhfY29tcGlsZV9jeHgxMV9yZXF1aXJlZD10cnVlXSwKLSAgICAgICAgICBbJDJdLCBbbWFuZGF0b3J5XSwgW2F4X2N4eF9jb21waWxlX2N4eDExX3JlcXVpcmVkPXRydWVdLAotICAgICAgICAgIFskMl0sIFtvcHRpb25hbF0sIFtheF9jeHhfY29tcGlsZV9jeHgxMV9yZXF1aXJlZD1mYWxzZV0sCi0gICAgICAgICAgW200X2ZhdGFsKFtpbnZhbGlkIHNlY29uZCBhcmd1bWVudCBgJDInIHRvIEFYX0NYWF9DT01QSUxFX1NURENYWF8xMV0pXSlkbmwKLSAgICBBQ19MQU5HX1BVU0goW0MrK10pZG5sCi0gICAgYWNfc3VjY2Vzcz1ubwotICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgJENYWCBzdXBwb3J0cyBDKysxMSBmZWF0dXJlcyBieSBkZWZhdWx0LAotICAgIGF4X2N2X2N4eF9jb21waWxlX2N4eDExLAotICAgIFtBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW19BWF9DWFhfQ09NUElMRV9TVERDWFhfMTFfdGVzdGJvZHldKV0sCi0gICAgICBbYXhfY3ZfY3h4X2NvbXBpbGVfY3h4MTE9eWVzXSwKLSAgICAgIFtheF9jdl9jeHhfY29tcGlsZV9jeHgxMT1ub10pXSkKLSAgICBpZiB0ZXN0IHgkYXhfY3ZfY3h4X2NvbXBpbGVfY3h4MTEgPSB4eWVzOyB0aGVuCi0gICAgICBhY19zdWNjZXNzPXllcwotICAgIGZpCi0gICAgCi0gICAgbTRfaWYoWyQxXSwgW25vZXh0XSwgW10sIFtkbmwKLSAgICBpZiB0ZXN0IHgkYWNfc3VjY2VzcyA9IHhubzsgdGhlbgotICAgICAgZm9yIHN3aXRjaCBpbiAtc3RkPWdudSsrMTEgLXN0ZD1nbnUrKzB4OyBkbwotICAgICAgICBjYWNoZXZhcj1BU19UUl9TSChbYXhfY3ZfY3h4X2NvbXBpbGVfY3h4MTFfJHN3aXRjaF0pCi0gICAgICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgJENYWCBzdXBwb3J0cyBDKysxMSBmZWF0dXJlcyB3aXRoICRzd2l0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICRjYWNoZXZhciwKLSAgICAgICAgICBbYWNfc2F2ZV9DWFhGTEFHUz0iJENYWEZMQUdTIgotICAgICAgICAgICBDWFhGTEFHUz0iJENYWEZMQUdTICRzd2l0Y2giCi0gICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbX0FYX0NYWF9DT01QSUxFX1NURENYWF8xMV90ZXN0Ym9keV0pXSwKLSAgICAgICAgICAgIFtldmFsICRjYWNoZXZhcj15ZXNdLAotICAgICAgICAgICAgW2V2YWwgJGNhY2hldmFyPW5vXSkKLSAgICAgICAgICAgQ1hYRkxBR1M9IiRhY19zYXZlX0NYWEZMQUdTIl0pCi0gICAgICAgIGlmIGV2YWwgdGVzdCB4XCQkY2FjaGV2YXIgPSB4eWVzOyB0aGVuCi0gICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAkc3dpdGNoIgotICAgICAgICAgIGFjX3N1Y2Nlc3M9eWVzCi0gICAgICAgICAgYnJlYWsKLSAgICAgICAgZmkKLSAgICAgIGRvbmUKLSAgICBmaV0pCi0gICAgCi0gICAgbTRfaWYoWyQxXSwgW2V4dF0sIFtdLCBbZG5sCi0gICAgaWYgdGVzdCB4JGFjX3N1Y2Nlc3MgPSB4bm87IHRoZW4KLSAgICAgIGZvciBzd2l0Y2ggaW4gLXN0ZD1jKysxMSAtc3RkPWMrKzB4OyBkbwotICAgICAgICBjYWNoZXZhcj1BU19UUl9TSChbYXhfY3ZfY3h4X2NvbXBpbGVfY3h4MTFfJHN3aXRjaF0pCi0gICAgICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgJENYWCBzdXBwb3J0cyBDKysxMSBmZWF0dXJlcyB3aXRoICRzd2l0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICRjYWNoZXZhciwKLSAgICAgICAgICBbYWNfc2F2ZV9DWFhGTEFHUz0iJENYWEZMQUdTIgotICAgICAgICAgICBDWFhGTEFHUz0iJENYWEZMQUdTICRzd2l0Y2giCi0gICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbX0FYX0NYWF9DT01QSUxFX1NURENYWF8xMV90ZXN0Ym9keV0pXSwKLSAgICAgICAgICAgIFtldmFsICRjYWNoZXZhcj15ZXNdLAotICAgICAgICAgICAgW2V2YWwgJGNhY2hldmFyPW5vXSkKLSAgICAgICAgICAgQ1hYRkxBR1M9IiRhY19zYXZlX0NYWEZMQUdTIl0pCi0gICAgICAgIGlmIGV2YWwgdGVzdCB4XCQkY2FjaGV2YXIgPSB4eWVzOyB0aGVuCi0gICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAkc3dpdGNoIgotICAgICAgICAgIGFjX3N1Y2Nlc3M9eWVzCi0gICAgICAgICAgYnJlYWsKLSAgICAgICAgZmkKLSAgICAgIGRvbmUKLSAgICBmaV0pCi0gICAgQUNfTEFOR19QT1AoW0MrK10pCi0gICAgaWYgdGVzdCB4JGF4X2N4eF9jb21waWxlX2N4eDExX3JlcXVpcmVkID0geHRydWU7IHRoZW4KLSAgICAgIGlmIHRlc3QgeCRhY19zdWNjZXNzID0geG5vOyB0aGVuCi0gICAgICAgIEFDX01TR19FUlJPUihbKioqIEEgY29tcGlsZXIgd2l0aCBzdXBwb3J0IGZvciBDKysxMSBsYW5ndWFnZSBmZWF0dXJlcyBpcyByZXF1aXJlZC5dKQotICAgICAgZmkKLSAgICBlbHNlCi0gICAgICBpZiB0ZXN0IHgkYWNfc3VjY2VzcyA9IHhubzsgdGhlbgotICAgICAgICBIQVZFX0NYWDExPTAKLSAgICAgICAgQUNfTVNHX05PVElDRShbTm8gY29tcGlsZXIgd2l0aCBDKysxMSBzdXBwb3J0IHdhcyBmb3VuZF0pCi0gICAgICBlbHNlCi0gICAgICAgIEhBVkVfQ1hYMTE9MQotICAgICAgICBBQ19ERUZJTkUoSEFWRV9DWFgxMSwxLAotICAgICAgICAgICAgICAgICAgW2RlZmluZSBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgYmFzaWMgQysrMTEgc3ludGF4XSkKLSAgICAgIGZpCi0gICAgCi0gICAgICBBQ19TVUJTVChIQVZFX0NYWDExKQotICAgIGZpCi0gIGZpCi1dKQpkaWZmIC0tZ2l0IGEvbTQvYXhfbGliX2NyeXB0b3BwLm00IGIvbTQvYXhfbGliX2NyeXB0b3BwLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGY1MWZkLi4wMDAwMDAwCi0tLSBhL200L2F4X2xpYl9jcnlwdG9wcC5tNAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfTElCX0NSWVBUT1BQKFtBQ1RJT04tSUYtRk9VTkRdLFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKLSMKLSMgREVTQ1JJUFRJT04KLSMKLSMgICBUZXN0IGZvciB0aGUgQ3J5cHRvKysgbGlicmFyeQotIwotIyAgIElmIG5vIGludGFsbGF0aW9uIHByZWZpeCB0byB0aGUgaW5zdGFsbGVkIENyeXB0bysrIGxpYnJhcnkgaXMgZ2l2ZW4gdGhlCi0jICAgbWFjcm8gc2VhcmNoZXMgdW5kZXIgL3VzciwgL3Vzci9sb2NhbCwgYW5kIC9vcHQuCi0jCi0jICAgVGhpcyBtYWNybyBjYWxsczoKLSMKLSMgICAgIEFDX1NVQlNUKENSWVBUT1BQX0lOQ0xVREVTKQotIyAgICAgQUNfU1VCU1QoQ1JZUFRPUFBfTERGTEFHUykKLSMgICAgIEFDX1NVQlNUKENSWVBUT1BQX0xJQlMpCi0jCi0jICAgQW5kIHNldHM6Ci0jCi0jICAgICBIQVZFX0NSWVBUT1BQCi0KLUFDX0RFRlVOKFtBWF9MSUJfQ1JZUFRPUFBdLAotWwotICAgIEFDX0FSR19XSVRIKFtjcnlwdG9wcF0sCi0gICAgICAgIEFTX0hFTFBfU1RSSU5HKAotICAgICAgICAgICAgWy0td2l0aC1jcnlwdG9wcD1APDpAQVJHQDo+QF0sCi0gICAgICAgICAgICBbdXNlIENyeXB0bysrIGxpYnJhcnkgQDw6QGRlZmF1bHQ9eWVzQDo+QCwgb3B0aW9uYWxseSBzcGVjaWZ5IHRoZSBwcmVmaXggZm9yIHRoZSBsaWJyYXJ5XQotICAgICAgICApLAotICAgICAgICBbCi0gICAgICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJubyI7IHRoZW4KLSAgICAgICAgICAgIFdBTlRfQ1JZUFRPUFA9Im5vIgotICAgICAgICBlbGlmIHRlc3QgIiR3aXRodmFsIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICAgICBXQU5UX0NSWVBUT1BQPSJ5ZXMiCi0gICAgICAgICAgICBhY19jcnlwdG9wcF9wYXRoPSIiCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdBTlRfQ1JZUFRPUFA9InllcyIKLSAgICAgICAgICAgIGFjX2NyeXB0b3BwX3BhdGg9IiR3aXRodmFsIgotICAgICAgICBmaQotICAgICAgICBdLAotICAgICAgICBbV0FOVF9DUllQVE9QUD0ieWVzIl0KLSAgICApCi0KLSAgICBDUllQVE9QUF9DRkxBR1M9IiIKLSAgICBDUllQVE9QUF9MREZMQUdTPSIiCi0gICAgQ1JZUFRPUFBfTElCUz0iIgotCi0gICAgaWYgdGVzdCAieCRXQU5UX0NSWVBUT1BQIiA9ICJ4eWVzIjsgdGhlbgotCi0gICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIENyeXB0bysrIGxpYnJhcnldKQotCi0gICAgICAgIGFjX2NyeXB0b3BwX2hlYWRlcj0iY3J5cHRvcHAvY3J5cHRsaWIuaCIKLSAgICAgICAgYWNfY3J5cHRvcHBfbGlicz0iLWxjcnlwdG9wcCIKLQotICAgICAgICBpZiB0ZXN0ICIkYWNfY3J5cHRvcHBfcGF0aCIgIT0gIiI7IHRoZW4KLSAgICAgICAgICAgIGFjX2NyeXB0b3BwX2xkZmxhZ3M9Ii1MJGFjX2NyeXB0b3BwX3BhdGgvbGliIgotICAgICAgICAgICAgYWNfY3J5cHRvcHBfY3BwZmxhZ3M9Ii1JJGFjX2NyeXB0b3BwX3BhdGgvaW5jbHVkZSIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9yIGFjX2NyeXB0b3BwX3BhdGhfdG1wIGluIC91c3IgL3Vzci9sb2NhbCAvb3B0IDsgZG8KLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkYWNfY3J5cHRvcHBfcGF0aF90bXAvaW5jbHVkZS8kYWNfY3J5cHRvcHBfaGVhZGVyIiBcCi0gICAgICAgICAgICAgICAgICAgICYmIHRlc3QgLXIgIiRhY19jcnlwdG9wcF9wYXRoX3RtcC9pbmNsdWRlLyRhY19jcnlwdG9wcF9oZWFkZXIiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGFjX2NyeXB0b3BwX3BhdGg9JGFjX2NyeXB0b3BwX3BhdGhfdG1wCi0gICAgICAgICAgICAgICAgICAgIGFjX2NyeXB0b3BwX2NwcGZsYWdzPSItSSRhY19jcnlwdG9wcF9wYXRoX3RtcC9pbmNsdWRlIgotICAgICAgICAgICAgICAgICAgICBhY19jcnlwdG9wcF9sZGZsYWdzPSItTCRhY19jcnlwdG9wcF9wYXRoX3RtcC9saWIiCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBkb25lCi0gICAgICAgIGZpCi0KLSAgICAgICAgQ1JZUFRPUFBfSU5DTFVERVM9IiRhY19jcnlwdG9wcF9jcHBmbGFncyIKLSAgICAgICAgQ1JZUFRPUFBfTERGTEFHUz0iJGFjX2NyeXB0b3BwX2xkZmxhZ3MiCi0gICAgICAgIENSWVBUT1BQX0xJQlM9IiRhY19jcnlwdG9wcF9saWJzIgotCi0gICAgICAgIHNhdmVfTElCUz0iJExJQlMiCi0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0gICAgICAgIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLQotICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAkQ1JZUFRPUFBfTERGTEFHUyIKLSAgICAgICAgTElCUz0iJENSWVBUT1BQX0xJQlMgJExJQlMiCi0gICAgICAgIENQUEZMQUdTPSIkQ1JZUFRPUFBfSU5DTFVERVMgJENQUEZMQUdTIgotICAgICAgICBBQ19MQU5HX1BVU0goQysrKQotICAgICAgICBBQ19MSU5LX0lGRUxTRSgKLSAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxjcnlwdG9wcC9jcnlwdGxpYi5oPl0sIFtdKV0sCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgICAgICAgICAgICAkMQotICAgICAgICAgICAgXSwgWwotICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICAgICAgICAgICAgICAkMgotICAgICAgICAgICAgXSkKLSAgICAgICAgQUNfTEFOR19QT1AoW0MrK10pCi0gICAgICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSAgICAgICAgTElCUz0iJHNhdmVfTElCUyIKLQotICAgICAgICBBQ19TVUJTVChDUllQVE9QUF9JTkNMVURFUykKLSAgICAgICAgQUNfU1VCU1QoQ1JZUFRPUFBfTERGTEFHUykKLSAgICAgICAgQUNfU1VCU1QoQ1JZUFRPUFBfTElCUykKLQotICAgICAgICBBQ19ERUZJTkUoW0hBVkVfQ1JZUFRPUFBdLCBbXSwgW0hhdmUgdGhlIENyeXB0bysrIGxpYnJhcnldKQotICAgIGZpCi1dKQpkaWZmIC0tZ2l0IGEvbTQvYXhfbGliX3NxbGl0ZTMubTQgYi9tNC9heF9saWJfc3FsaXRlMy5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc3MTcxNi4uMDAwMDAwMAotLS0gYS9tNC9heF9saWJfc3FsaXRlMy5tNAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2xpYl9zcWxpdGUzLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfTElCX1NRTElURTMoW01JTklNVU0tVkVSU0lPTl0pCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGVzdCBmb3IgdGhlIFNRTGl0ZSAzIGxpYnJhcnkgb2YgYSBwYXJ0aWN1bGFyIHZlcnNpb24gKG9yIG5ld2VyKQotIwotIyAgIFRoaXMgbWFjcm8gdGFrZXMgb25seSBvbmUgb3B0aW9uYWwgYXJndW1lbnQsIHJlcXVpcmVkIHZlcnNpb24gb2YgU1FMaXRlCi0jICAgMyBsaWJyYXJ5LiBJZiByZXF1aXJlZCB2ZXJzaW9uIGlzIG5vdCBwYXNzZWQsIDMuMC4wIGlzIHVzZWQgaW4gdGhlIHRlc3QKLSMgICBvZiBleGlzdGFuY2Ugb2YgU1FMaXRlIDMuCi0jCi0jICAgSWYgbm8gaW50YWxsYXRpb24gcHJlZml4IHRvIHRoZSBpbnN0YWxsZWQgU1FMaXRlIGxpYnJhcnkgaXMgZ2l2ZW4gdGhlCi0jICAgbWFjcm8gc2VhcmNoZXMgdW5kZXIgL3VzciwgL3Vzci9sb2NhbCwgYW5kIC9vcHQuCi0jCi0jICAgVGhpcyBtYWNybyBjYWxsczoKLSMKLSMgICAgIEFDX1NVQlNUKFNRTElURTNfQ0ZMQUdTKQotIyAgICAgQUNfU1VCU1QoU1FMSVRFM19MREZMQUdTKQotIyAgICAgQUNfU1VCU1QoU1FMSVRFM19WRVJTSU9OKQotIwotIyAgIEFuZCBzZXRzOgotIwotIyAgICAgSEFWRV9TUUxJVEUzCi0jCi0jIExJQ0VOU0UKLSMKLSMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0ZXVzeiBMb3Nrb3QgPG1hdGV1c3pAbG9za290Lm5ldD4KLSMKLSMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55Ci0jICAgd2FycmFudHkuCi0KLSNzZXJpYWwgMTQKLQotQUNfREVGVU4oW0FYX0xJQl9TUUxJVEUzXSwKLVsKLSAgICBBQ19BUkdfV0lUSChbc3FsaXRlM10sCi0gICAgICAgIEFTX0hFTFBfU1RSSU5HKAotICAgICAgICAgICAgWy0td2l0aC1zcWxpdGUzPUA8OkBBUkdAOj5AXSwKLSAgICAgICAgICAgIFt1c2UgU1FMaXRlIDMgbGlicmFyeSBAPDpAZGVmYXVsdD15ZXNAOj5ALCBvcHRpb25hbGx5IHNwZWNpZnkgdGhlIHByZWZpeCBmb3Igc3FsaXRlMyBsaWJyYXJ5XQotICAgICAgICApLAotICAgICAgICBbCi0gICAgICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJubyI7IHRoZW4KLSAgICAgICAgICAgIFdBTlRfU1FMSVRFMz0ibm8iCi0gICAgICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gInllcyI7IHRoZW4KLSAgICAgICAgICAgIFdBTlRfU1FMSVRFMz0ieWVzIgotICAgICAgICAgICAgYWNfc3FsaXRlM19wYXRoPSIiCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdBTlRfU1FMSVRFMz0ieWVzIgotICAgICAgICAgICAgYWNfc3FsaXRlM19wYXRoPSIkd2l0aHZhbCIKLSAgICAgICAgZmkKLSAgICAgICAgXSwKLSAgICAgICAgW1dBTlRfU1FMSVRFMz0ieWVzIl0KLSAgICApCi0KLSAgICBTUUxJVEUzX0NGTEFHUz0iIgotICAgIFNRTElURTNfTERGTEFHUz0iIgotICAgIFNRTElURTNfVkVSU0lPTj0iIgotCi0gICAgaWYgdGVzdCAieCRXQU5UX1NRTElURTMiID0gInh5ZXMiOyB0aGVuCi0KLSAgICAgICAgYWNfc3FsaXRlM19oZWFkZXI9InNxbGl0ZTMuaCIKLQotICAgICAgICBzcWxpdGUzX3ZlcnNpb25fcmVxPWlmZWxzZShbJDFdLCBbXSwgWzMuMC4wXSwgWyQxXSkKLSAgICAgICAgc3FsaXRlM192ZXJzaW9uX3JlcV9zaG9ydGVuPWBleHByICRzcWxpdGUzX3ZlcnNpb25fcmVxIDogJ1woW1swLTldXSpcLltbMC05XV0qXCknYAotICAgICAgICBzcWxpdGUzX3ZlcnNpb25fcmVxX21ham9yPWBleHByICRzcWxpdGUzX3ZlcnNpb25fcmVxIDogJ1woW1swLTldXSpcKSdgCi0gICAgICAgIHNxbGl0ZTNfdmVyc2lvbl9yZXFfbWlub3I9YGV4cHIgJHNxbGl0ZTNfdmVyc2lvbl9yZXEgOiAnW1swLTldXSpcLlwoW1swLTldXSpcKSdgCi0gICAgICAgIHNxbGl0ZTNfdmVyc2lvbl9yZXFfbWljcm89YGV4cHIgJHNxbGl0ZTNfdmVyc2lvbl9yZXEgOiAnW1swLTldXSpcLltbMC05XV0qXC5cKFtbMC05XV0qXCknYAotICAgICAgICBpZiB0ZXN0ICJ4JHNxbGl0ZTNfdmVyc2lvbl9yZXFfbWljcm8iID0gIngiIDsgdGhlbgotICAgICAgICAgICAgc3FsaXRlM192ZXJzaW9uX3JlcV9taWNybz0iMCIKLSAgICAgICAgZmkKLQotICAgICAgICBzcWxpdGUzX3ZlcnNpb25fcmVxX251bWJlcj1gZXhwciAkc3FsaXRlM192ZXJzaW9uX3JlcV9tYWpvciBcKiAxMDAwMDAwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCsgJHNxbGl0ZTNfdmVyc2lvbl9yZXFfbWlub3IgXCogMTAwMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwrICRzcWxpdGUzX3ZlcnNpb25fcmVxX21pY3JvYAotCi0gICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFNRTGl0ZTMgbGlicmFyeSA+PSAkc3FsaXRlM192ZXJzaW9uX3JlcV0pCi0KLSAgICAgICAgaWYgdGVzdCAiJGFjX3NxbGl0ZTNfcGF0aCIgIT0gIiI7IHRoZW4KLSAgICAgICAgICAgIGFjX3NxbGl0ZTNfbGRmbGFncz0iLUwkYWNfc3FsaXRlM19wYXRoL2xpYiIKLSAgICAgICAgICAgIGFjX3NxbGl0ZTNfY3BwZmxhZ3M9Ii1JJGFjX3NxbGl0ZTNfcGF0aC9pbmNsdWRlIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmb3IgYWNfc3FsaXRlM19wYXRoX3RtcCBpbiAvdXNyIC91c3IvbG9jYWwgL29wdCA7IGRvCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGFjX3NxbGl0ZTNfcGF0aF90bXAvaW5jbHVkZS8kYWNfc3FsaXRlM19oZWFkZXIiIFwKLSAgICAgICAgICAgICAgICAgICAgJiYgdGVzdCAtciAiJGFjX3NxbGl0ZTNfcGF0aF90bXAvaW5jbHVkZS8kYWNfc3FsaXRlM19oZWFkZXIiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGFjX3NxbGl0ZTNfcGF0aD0kYWNfc3FsaXRlM19wYXRoX3RtcAotICAgICAgICAgICAgICAgICAgICBhY19zcWxpdGUzX2NwcGZsYWdzPSItSSRhY19zcWxpdGUzX3BhdGhfdG1wL2luY2x1ZGUiCi0gICAgICAgICAgICAgICAgICAgIGFjX3NxbGl0ZTNfbGRmbGFncz0iLUwkYWNfc3FsaXRlM19wYXRoX3RtcC9saWIiCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBkb25lCi0gICAgICAgIGZpCi0KLSAgICAgICAgYWNfc3FsaXRlM19sZGZsYWdzPSIkYWNfc3FsaXRlM19sZGZsYWdzIC1sc3FsaXRlMyIKLQotICAgICAgICBzYXZlZF9DUFBGTEFHUz0iJENQUEZMQUdTIgotICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRhY19zcWxpdGUzX2NwcGZsYWdzIgotCi0gICAgICAgIEFDX0xBTkdfUFVTSChDKQotICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW0AlOkBpbmNsdWRlIDxzcWxpdGUzLmg+XV0sCi0gICAgICAgICAgICAgICAgW1sKLSNpZiAoU1FMSVRFX1ZFUlNJT05fTlVNQkVSID49ICRzcWxpdGUzX3ZlcnNpb25fcmVxX251bWJlcikKLS8qIEV2ZXJ5dGhpbmcgaXMgb2theSAqLwotI2Vsc2UKLSMgIGVycm9yIFNRTGl0ZSB2ZXJzaW9uIGlzIHRvbyBvbGQKLSNlbmRpZgotICAgICAgICAgICAgICAgIF1dCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgICAgICAgIHN1Y2Nlc3M9InllcyIKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtub3QgZm91bmRdKQotICAgICAgICAgICAgc3VjY2Vzcz0ibm8iCi0gICAgICAgICAgICBdCi0gICAgICAgICkKLSAgICAgICAgQUNfTEFOR19QT1AoQykKLQotICAgICAgICBDUFBGTEFHUz0iJHNhdmVkX0NQUEZMQUdTIgotCi0gICAgICAgIGlmIHRlc3QgIiRzdWNjZXNzIiA9ICJ5ZXMiOyB0aGVuCi0KLSAgICAgICAgICAgIFNRTElURTNfQ0ZMQUdTPSIkYWNfc3FsaXRlM19jcHBmbGFncyIKLSAgICAgICAgICAgIFNRTElURTNfTERGTEFHUz0iJGFjX3NxbGl0ZTNfbGRmbGFncyIKLQotICAgICAgICAgICAgYWNfc3FsaXRlM19oZWFkZXJfcGF0aD0iJGFjX3NxbGl0ZTNfcGF0aC9pbmNsdWRlLyRhY19zcWxpdGUzX2hlYWRlciIKLQotICAgICAgICAgICAgZG5sIFJldHJpZXZlIFNRTGl0ZSByZWxlYXNlIHZlcnNpb24KLSAgICAgICAgICAgIGlmIHRlc3QgIngkYWNfc3FsaXRlM19oZWFkZXJfcGF0aCIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgYWNfc3FsaXRlM192ZXJzaW9uPWBjYXQgJGFjX3NxbGl0ZTNfaGVhZGVyX3BhdGggXAotICAgICAgICAgICAgICAgICAgICB8IGdyZXAgJyNkZWZpbmUuKlNRTElURV9WRVJTSU9OLipcIicgfCBzZWQgLWUgJ3MvLiogIi8vJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAncy8iLy8nYAotICAgICAgICAgICAgICAgIGlmIHRlc3QgJGFjX3NxbGl0ZTNfdmVyc2lvbiAhPSAiIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICBTUUxJVEUzX1ZFUlNJT049JGFjX3NxbGl0ZTNfdmVyc2lvbgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW0Nhbm5vdCBmaW5kIFNRTElURV9WRVJTSU9OIG1hY3JvIGluIHNxbGl0ZTMuaCBoZWFkZXIgdG8gcmV0cmlldmUgU1FMaXRlIHZlcnNpb24hXSkKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgZmkKLQotICAgICAgICAgICAgQUNfU1VCU1QoU1FMSVRFM19DRkxBR1MpCi0gICAgICAgICAgICBBQ19TVUJTVChTUUxJVEUzX0xERkxBR1MpCi0gICAgICAgICAgICBBQ19TVUJTVChTUUxJVEUzX1ZFUlNJT04pCi0gICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfU1FMSVRFM10sIFtdLCBbSGF2ZSB0aGUgU1FMSVRFMyBsaWJyYXJ5XSkKLSAgICAgICAgZmkKLSAgICBmaQotXSkKZGlmZiAtLWdpdCBhL200L2F4X3ByZWZpeF9jb25maWdfaC5tNCBiL200L2F4X3ByZWZpeF9jb25maWdfaC5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhMzkwNi4uMDAwMDAwMAotLS0gYS9tNC9heF9wcmVmaXhfY29uZmlnX2gubTQKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfcHJlZml4X2NvbmZpZ19oLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgQVhfUFJFRklYX0NPTkZJR19IIFsoT1VUUFVULUhFQURFUiBbLFBSRUZJWCBbLE9SSUctSEVBREVSXV0pXQotIwotIyBERVNDUklQVElPTgotIwotIyAgIFRoaXMgaXMgYSBuZXcgdmFyaWFudCBmcm9tIGFjX3ByZWZpeF9jb25maWdfIHRoaXMgb25lIHdpbGwgdXNlIGEKLSMgICBsb3dlcmNhc2UtcHJlZml4IGlmIHRoZSBjb25maWctZGVmaW5lIHdhcyBzdGFydGluZyB3aXRoIGEKLSMgICBsb3dlcmNhc2UtY2hhciwgZS5nLiAiI2RlZmluZSBjb25zdCIsICIjZGVmaW5lIHJlc3RyaWN0Iiwgb3IgIiNkZWZpbmUKLSMgICBvZmZfdCIsIChhbmQgdGhpcyBvbmUgY2FuIGxpdmUgaW4gYW5vdGhlciBkaXJlY3RvcnksIGUuZy4KLSMgICB0ZXN0cGtnL2NvbmZpZy5oIHRoZXJlZm9yZSBJIGRlY2lkZWQgdG8gbW92ZSB0aGUgb3V0cHV0LWhlYWRlciB0byBiZSB0aGUKLSMgICBmaXJzdCBhcmcpCi0jCi0jICAgdGFrZXMgdGhlIHVzdWFsIGNvbmZpZy5oIGdlbmVyYXRlZCBoZWFkZXIgZmlsZTsgbG9va3MgZm9yIGVhY2ggb2YgdGhlCi0jICAgZ2VuZXJhdGVkICIjZGVmaW5lIFNPTUVERUYiIGxpbmVzLCBhbmQgcHJlZml4ZXMgdGhlIGRlZmluZWQgbmFtZSAoaWUuCi0jICAgbWFrZXMgaXQgIiNkZWZpbmUgUFJFRklYX1NPTUVERUYiLiBUaGUgcmVzdWx0IGlzIHdyaXR0ZW4gdG8gdGhlIG91dHB1dAotIyAgIGNvbmZpZy5oZWFkZXIgZmlsZS4gVGhlIFBSRUZJWCBpcyBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlIGZvciB0aGUKLSMgICBjb252ZXJzaW9ucy4KLSMKLSMgICBEZWZhdWx0czoKLSMKLSMgICAgIE9VVFBVVC1IRUFERVIgPSAkUEFDS0FHRS1jb25maWcuaAotIyAgICAgUFJFRklYID0gJFBBQ0tBR0UKLSMgICAgIE9SSUctSEVBREVSLCBmcm9tIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpCi0jCi0jICAgWW91ciBjb25maWd1cmUuYWMgc2NyaXB0IHNob3VsZCBjb250YWluIGJvdGggbWFjcm9zIGluIHRoaXMgb3JkZXIsIGFuZAotIyAgIHVubGlrZSB0aGUgZWFybGllciB2YXJpYXRpb25zIG9mIHRoaXMgcHJlZml4LW1hY3JvIGl0IGlzIG9rYXkgdG8gcGxhY2UKLSMgICB0aGUgQVhfUFJFRklYX0NPTkZJR19IIGNhbGwgYmVmb3JlIHRoZSBBQ19PVVRQVVQgaW52b2thdGlvbi4KLSMKLSMgICBFeGFtcGxlOgotIwotIyAgICAgQUNfSU5JVChjb25maWcuaC5pbikgICAgICAgICMgY29uZmlnLmguaW4gYXMgY3JlYXRlZCBieSAiYXV0b2hlYWRlciIKLSMgICAgIEFNX0lOSVRfQVVUT01BS0UodGVzdHBrZywgMC4xLjEpICAgICMgbWFrZXMgI3VuZGVmIFZFUlNJT04gYW5kIFBBQ0tBR0UKLSMgICAgIEFNX0NPTkZJR19IRUFERVIoY29uZmlnLmgpICAgICAgICAgICMgcHJlcCBjb25maWcuaCBmcm9tIGNvbmZpZy5oLmluCi0jICAgICBBWF9QUkVGSVhfQ09ORklHX0gobXlsaWIvX2NvbmZpZy5oKSAjIHByZXAgbXlsaWIvX2NvbmZpZy5oIGZyb20gaXQuLgotIyAgICAgQUNfTUVNT1JZX0ggICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWtlcyAiI3VuZGVmIE5FRURfTUVNT1JZX0giCi0jICAgICBBQ19DX0NPTlNUX0ggICAgICAgICAgICAgICAgICAgICAgICAjIG1ha2VzICIjdW5kZWYgY29uc3QiCi0jICAgICBBQ19PVVRQVVQoTWFrZWZpbGUpICAgICAgICAgICAgICAgICAjIGNyZWF0ZXMgdGhlICJjb25maWcuaCIgbm93Ci0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBhbHNvIG15bGliL19jb25maWcuaAotIwotIyAgIGlmIHRoZSBhcmd1bWVudCB0byBBWF9QUkVGSVhfQ09ORklHX0ggd291bGQgaGF2ZSBiZWVuIG9taXR0ZWQgdGhlbiB0aGUKLSMgICBkZWZhdWx0IG91dHB1dGZpbGUgd291bGQgaGF2ZSBiZWVuIGNhbGxlZCBzaW1wbHkgInRlc3Rwa2ctY29uZmlnLmgiLCBidXQKLSMgICBldmVuIHVuZGVyIHRoZSBuYW1lICJteWxpYi9fY29uZmlnLmgiIGl0IGNvbnRhaW5zIHByZWZpeC1kZWZpbmVzIGxpa2UKLSMKLSMgICAgICNpZm5kZWYgVEVTVFBLR19WRVJTSU9OCi0jICAgICAjZGVmaW5lIFRFU1RQS0dfVkVSU0lPTiAiMC4xLjEiCi0jICAgICAjZW5kaWYKLSMgICAgICNpZm5kZWYgVEVTVFBLR19ORUVEX01FTU9SWV9ICi0jICAgICAjZGVmaW5lIFRFU1RQS0dfTkVFRF9NRU1PUllfSCAxCi0jICAgICAjZW5kaWYKLSMgICAgICNpZm5kZWYgX3Rlc3Rwa2dfY29uc3QKLSMgICAgICNkZWZpbmUgX3Rlc3Rwa2dfY29uc3QgX2NvbnN0Ci0jICAgICAjZW5kaWYKLSMKLSMgICBhbmQgdGhpcyAibXlsaWIvX2NvbmZpZy5oIiBjYW4gYmUgaW5zdGFsbGVkIGFsb25nIHdpdGggb3RoZXIKLSMgICBoZWFkZXItZmlsZXMsIHdoaWNoIGlzIG1vc3QgY29udmVuaWVudCB3aGVuIGNyZWF0aW5nIGEgc2hhcmVkIGxpYnJhcnkKLSMgICAodGhhdCBoYXMgc29tZSBoZWFkZXJzKSB3aGVyZSBzb21lIGZ1bmN0aW9uYWxpdHkgaXMgZGVwZW5kZW50IG9uIHRoZQotIyAgIE9TLWZlYXR1cmVzIGRldGVjdGVkIGF0IGNvbXBpbGUtdGltZS4gTm8gbmVlZCB0byBpbnZlbnQgc29tZQotIyAgICJteWxpYi1jb25mZGVmcy5oLmluIiBtYW51YWxseS4gOi0pCi0jCi0jICAgTm90ZSB0aGF0IHNvbWUgQUNfREVGSU5FcyB0aGF0IGVuZCB1cCBpbiB0aGUgY29uZmlnLmggZmlsZSBhcmUgYWN0dWFsbHkKLSMgICBzZWxmLXJlZmVyZW50aWFsIC0gZS5nLiBBQ19DX0lOTElORSwgQUNfQ19DT05TVCwgYW5kIHRoZSBBQ19UWVBFX09GRl9UCi0jICAgc2F5IHRoYXQgdGhleSAid2lsbCBkZWZpbmUgaW5saW5lfGNvbnN0fG9mZl90IGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgZG8KLSMgICBpdCBieSBpdHNlbGYiLiBZb3UgbWlnaHQgd2FudCB0byBjbGVhbiB1cCBhYm91dCB0aGVzZSAtIGNvbnNpZGVyIGFuCi0jICAgZXh0cmEgbXlsaWIvY29uZi5oIHRoYXQgcmVhZHMgc29tZXRoaW5nIGxpa2U6Ci0jCi0jICAgICAjaW5jbHVkZSA8bXlsaWIvX2NvbmZpZy5oPgotIyAgICAgI2lmbmRlZiBfdGVzdHBrZ19jb25zdAotIyAgICAgI2RlZmluZSBfdGVzdHBrZ19jb25zdCBjb25zdAotIyAgICAgI2VuZGlmCi0jCi0jICAgYW5kIHRoZW4gc3RhcnQgdXNpbmcgX3Rlc3Rwa2dfY29uc3QgaW4gdGhlIGhlYWRlciBmaWxlcy4gVGhhdCBpcyBhbHNvIGEKLSMgICBnb29kIHRoaW5nIHRvIGRpZmZlcmVudGlhdGUgd2hldGhlciBzb21lIGxpYnJhcnktdXNlciBoYXMgc3RhcnRpbmcgdG8KLSMgICB0YWtlIHVwIHdpdGggYSBkaWZmZXJlbnQgY29tcGlsZXIsIHNvIHBlcmhhcHMgaXQgY291bGQgcmVhZCBzb21ldGhpbmcKLSMgICBsaWtlIHRoaXM6Ci0jCi0jICAgICAjaWZkZWYgX01TQ19WRVIKLSMgICAgICNpbmNsdWRlIDxteWxpYi9fbXN2Yy5oPgotIyAgICAgI2Vsc2UKLSMgICAgICNpbmNsdWRlIDxteWxpYi9fY29uZmlnLmg+Ci0jICAgICAjZW5kaWYKLSMgICAgICNpZm5kZWYgX3Rlc3Rwa2dfY29uc3QKLSMgICAgICNkZWZpbmUgX3Rlc3Rwa2dfY29uc3QgY29uc3QKLSMgICAgICNlbmRpZgotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+Ci0jICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hcnRlbiBTdmFudGVzc29uCi0jICAgQ29weXJpZ2h0IChjKSAyMDA4IEdlcmFsZCBQb2ludCA8R2VyYWxkLlBvaW50QGxhYnJpLmZyPgotIwotIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0jICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgotIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKLSMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0jICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSMKLSMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgotIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCi0jICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQotIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKLSMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKLSMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCi0jICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCi0jCi0jICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCi0jICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQotIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKLSMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KLQotI3NlcmlhbCAxMQotCi1BQ19ERUZVTihbQVhfUFJFRklYX0NPTkZJR19IXSxbZG5sCi1BQ19QUkVSRVEoWzIuNjJdKQotQUNfQkVGT1JFKFtBQ19DT05GSUdfSEVBREVSU10sWyQwXSlkbmwKLUFDX0NPTkZJR19DT01NQU5EUyhbaWZlbHNlKCQxLCwkUEFDS0FHRS1jb25maWcuaCwkMSldLFtkbmwKLUFTX1ZBUl9QVVNIREVGKFtfT1VUXSxbYWNfcHJlZml4X2NvbmZfT1VUXSlkbmwKLUFTX1ZBUl9QVVNIREVGKFtfREVGXSxbYWNfcHJlZml4X2NvbmZfREVGXSlkbmwKLUFTX1ZBUl9QVVNIREVGKFtfUEtHXSxbYWNfcHJlZml4X2NvbmZfUEtHXSlkbmwKLUFTX1ZBUl9QVVNIREVGKFtfTE9XXSxbYWNfcHJlZml4X2NvbmZfTE9XXSlkbmwKLUFTX1ZBUl9QVVNIREVGKFtfVVBQXSxbYWNfcHJlZml4X2NvbmZfVVBQXSlkbmwKLUFTX1ZBUl9QVVNIREVGKFtfSU5QXSxbYWNfcHJlZml4X2NvbmZfSU5QXSlkbmwKLW00X3B1c2hkZWYoW19zY3JpcHRdLFtjb25mdGVzdC5wcmVmaXhdKWRubAotbTRfcHVzaGRlZihbX3N5bWJvbF0sW200X2NyX0xldHRlcnNbXW00X2NyX2RpZ2l0c1tdX10pZG5sCi1fT1VUPWBlY2hvIGlmZWxzZSgkMSwgLCAkUEFDS0FHRS1jb25maWcuaCwgJDEpYAotX0RFRj1gZWNobyBfJF9PVVQgfCBzZWQgLWUgInk6bTRfY3JfbGV0dGVyczptNF9jcl9MRVRURVJTW106IiAtZSAicy9APDpAXm00X2NyX0xldHRlcnNAOj5AL18vZyJgCi1fUEtHPWBlY2hvIGlmZWxzZSgkMiwgLCAkUEFDS0FHRSwgJDIpYAotX0xPVz1gZWNobyBfJF9QS0cgfCBzZWQgLWUgInk6bTRfY3JfTEVUVEVSUy06bTRfY3JfbGV0dGVyc1tdXzoiYAotX1VQUD1gZWNobyAkX1BLRyB8IHNlZCAtZSAieTptNF9jcl9sZXR0ZXJzLTptNF9jcl9MRVRURVJTW11fOiIgIC1lICIvXkA8OkBtNF9jcl9kaWdpdHNAOj5AL3MvXi9fLyJgCi1fSU5QPWBlY2hvICJpZmVsc2UoJDMsLCwkMykiIHwgc2VkIC1lICdzLyAqLy8nYAotaWYgdGVzdCAiLiRfSU5QIiA9ICIuIjsgdGhlbgotICAgZm9yIGFjX2ZpbGUgaW4gOiAkQ09ORklHX0hFQURFUlM7IGRvIHRlc3QgIl8kYWNfZmlsZSIgPSBfOiAmJiBjb250aW51ZQotICAgICBjYXNlICIkYWNfZmlsZSIgaW4KLSAgICAgICAgKi5oKSBfSU5QPSRhY19maWxlIDs7Ci0gICAgICAgICopCi0gICAgIGVzYWMKLSAgICAgdGVzdCAiLiRfSU5QIiAhPSAiLiIgJiYgYnJlYWsKLSAgIGRvbmUKLWZpCi1pZiB0ZXN0ICIuJF9JTlAiID0gIi4iOyB0aGVuCi0gICBjYXNlICIkX09VVCIgaW4KLSAgICAgICovKikgX0lOUD1gYmFzZW5hbWUgIiRfT1VUImAKLSAgICAgIDs7Ci0gICAgICAqLSopIF9JTlA9YGVjaG8gIiRfT1VUIiB8IHNlZCAtZSAicy9APDpAX3N5bWJvbEA6PkAqLS8vImAKLSAgICAgIDs7Ci0gICAgICAqKSBfSU5QPWNvbmZpZy5oCi0gICAgICA7OwotICAgZXNhYwotZmkKLWlmIHRlc3QgLXogIiRfUEtHIiA7IHRoZW4KLSAgIEFDX01TR19FUlJPUihbbm8gcHJlZml4IGZvciBfUFJFRklYX1BLR19DT05GSUdfSF0pCi1lbHNlCi0gIGlmIHRlc3QgISAtZiAiJF9JTlAiIDsgdGhlbiBpZiB0ZXN0IC1mICIkc3JjZGlyLyRfSU5QIiA7IHRoZW4KLSAgICAgX0lOUD0iJHNyY2Rpci8kX0lOUCIKLSAgZmkgZmkKLSAgQUNfTVNHX05PVElDRShjcmVhdGluZyAkX09VVCAtIHByZWZpeCAkX1VQUCBmb3IgJF9JTlAgZGVmaW5lcykKLSAgaWYgdGVzdCAtZiAkX0lOUCA7IHRoZW4KLSAgICBBU19FQ0hPKFsicy9eQCU6QHVuZGVmICAqXFwoQDw6QG00X2NyX0xFVFRFUlNbXV9AOj5AXFwpL0AlOkB1bmRlZiAkX1VQUCIiX1xcMS8iXSkgPiBfc2NyaXB0Ci0gICAgQVNfRUNITyhbInMvXkAlOkB1bmRlZiAgKlxcKEA8OkBtNF9jcl9sZXR0ZXJzQDo+QFxcKS9AJTpAdW5kZWYgJF9MT1ciIl9cXDEvIl0pID4+IF9zY3JpcHQKLSAgICBBU19FQ0hPKFsicy9eQCU6QGRlZltdaW5lICAqXFwoQDw6QG00X2NyX0xFVFRFUlNbXV9AOj5AQDw6QF9zeW1ib2xAOj5AKlxcKVxcKC4qXFwpL0AlOkBpZm5kZWYgJF9VUFAiIl9cXDFcXCJdKSA+PiBfc2NyaXB0Ci0gICAgQVNfRUNITyhbIkAlOkBkZWZbXWluZSAkX1VQUCIiX1xcMVxcMlxcIl0pID4+IF9zY3JpcHQKLSAgICBBU19FQ0hPKFsiQCU6QGVuZGlmLyJdKSA+PiBfc2NyaXB0Ci0gICAgQVNfRUNITyhbInMvXkAlOkBkZWZbXWluZSAgKlxcKEA8OkBtNF9jcl9sZXR0ZXJzQDo+QEA8OkBfc3ltYm9sQDo+QCpcXClcXCguKlxcKS9AJTpAaWZuZGVmICRfTE9XIiJfXFwxXFwiXSkgPj4gX3NjcmlwdAotICAgIEFTX0VDSE8oWyJAJTpAZGVmaW5lICRfTE9XIiJfXFwxXFwyXFwiXSkgPj4gX3NjcmlwdAotICAgIEFTX0VDSE8oWyJAJTpAZW5kaWYvIl0pID4+IF9zY3JpcHQKLSAgICAjIG5vdyBleGVjdXRpbmcgX3NjcmlwdCBvbiBfREVGIGlucHV0IHRvIGNyZWF0ZSBfT1VUIG91dHB1dCBmaWxlCi0gICAgZWNobyAiQCU6QGlmbmRlZiAkX0RFRiIgICAgICA+JHRtcC9wY29uZmlnLmgKLSAgICBlY2hvICJAJTpAZGVmW11pbmUgJF9ERUYgMSIgPj4kdG1wL3Bjb25maWcuaAotICAgIGVjaG8gJyAnID4+JHRtcC9wY29uZmlnLmgKLSAgICBlY2hvIC8nKicgJF9PVVQuIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGF0IGVuZCBvZiBjb25maWd1cmUuICcqJy8gPj4kdG1wL3Bjb25maWcuaAotCi0gICAgc2VkIC1mIF9zY3JpcHQgJF9JTlAgPj4kdG1wL3Bjb25maWcuaAotICAgIGVjaG8gJyAnID4+JHRtcC9wY29uZmlnLmgKLSAgICBlY2hvICcvKiBvbmNlOicgJF9ERUYgJyovJyA+PiR0bXAvcGNvbmZpZy5oCi0gICAgZWNobyAiQCU6QGVuZGlmIiA+PiR0bXAvcGNvbmZpZy5oCi0gICAgaWYgY21wIC1zICRfT1VUICR0bXAvcGNvbmZpZy5oIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgICBBQ19NU0dfTk9USUNFKFskX09VVCBpcyB1bmNoYW5nZWRdKQotICAgIGVsc2UKLSAgICAgIGFjX2Rpcj1gQVNfRElSTkFNRShbIiRfT1VUIl0pYAotICAgICAgQVNfTUtESVJfUChbIiRhY19kaXIiXSkKLSAgICAgIHJtIC1mICIkX09VVCIKLSAgICAgIG12ICR0bXAvcGNvbmZpZy5oICIkX09VVCIKLSAgICBmaQotICAgIGNwIF9zY3JpcHQgX2NvbmZpZ3Muc2VkCi0gIGVsc2UKLSAgICBBQ19NU0dfRVJST1IoW2lucHV0IGZpbGUgJF9JTlAgZG9lcyBub3QgZXhpc3QgLSBza2lwIGdlbmVyYXRpbmcgJF9PVVRdKQotICBmaQotICBybSAtZiBjb25mdGVzdC4qCi1maQotbTRfcG9wZGVmKFtfc3ltYm9sXSlkbmwKLW00X3BvcGRlZihbX3NjcmlwdF0pZG5sCi1BU19WQVJfUE9QREVGKFtfSU5QXSlkbmwKLUFTX1ZBUl9QT1BERUYoW19VUFBdKWRubAotQVNfVkFSX1BPUERFRihbX0xPV10pZG5sCi1BU19WQVJfUE9QREVGKFtfUEtHXSlkbmwKLUFTX1ZBUl9QT1BERUYoW19ERUZdKWRubAotQVNfVkFSX1BPUERFRihbX09VVF0pZG5sCi1dLFtQQUNLQUdFPSIkUEFDS0FHRSJdKV0pCmRpZmYgLS1naXQgYS9tNC9heF9wcm9nX2RveHlnZW4ubTQgYi9tNC9heF9wcm9nX2RveHlnZW4ubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YjIyYjAuLjAwMDAwMDAKLS0tIGEvbTQvYXhfcHJvZ19kb3h5Z2VuLm00CisrKyAvZGV2L251bGwKQEAgLTEsNTMyICswLDAgQEAKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfcHJvZ19kb3h5Z2VuLmh0bWwKLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jCi0jIFNZTk9QU0lTCi0jCi0jICAgRFhfSU5JVF9ET1hZR0VOKFBST0pFQ1QtTkFNRSwgRE9YWUZJTEUtUEFUSCwgW09VVFBVVC1ESVJdKQotIyAgIERYX0RPWFlHRU5fRkVBVFVSRShPTnxPRkYpCi0jICAgRFhfRE9UX0ZFQVRVUkUoT058T0ZGKQotIyAgIERYX0hUTUxfRkVBVFVSRShPTnxPRkYpCi0jICAgRFhfQ0hNX0ZFQVRVUkUoT058T0ZGKQotIyAgIERYX0NISV9GRUFUVVJFKE9OfE9GRikKLSMgICBEWF9NQU5fRkVBVFVSRShPTnxPRkYpCi0jICAgRFhfUlRGX0ZFQVRVUkUoT058T0ZGKQotIyAgIERYX1hNTF9GRUFUVVJFKE9OfE9GRikKLSMgICBEWF9QREZfRkVBVFVSRShPTnxPRkYpCi0jICAgRFhfUFNfRkVBVFVSRShPTnxPRkYpCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGhlIERYXypfRkVBVFVSRSBtYWNyb3MgY29udHJvbCB0aGUgZGVmYXVsdCBzZXR0aW5nIGZvciB0aGUgZ2l2ZW4KLSMgICBEb3h5Z2VuIGZlYXR1cmUuIFN1cHBvcnRlZCBmZWF0dXJlcyBhcmUgJ0RPWFlHRU4nIGl0c2VsZiwgJ0RPVCcgZm9yCi0jICAgZ2VuZXJhdGluZyBncmFwaGljcywgJ0hUTUwnIGZvciBwbGFpbiBIVE1MLCAnQ0hNJyBmb3IgY29tcHJlc3NlZCBIVE1MCi0jICAgaGVscCAoZm9yIE1TIHVzZXJzKSwgJ0NISScgZm9yIGdlbmVyYXRpbmcgYSBzZXBlcmF0ZSAuY2hpIGZpbGUgYnkgdGhlCi0jICAgLmNobSBmaWxlLCBhbmQgJ01BTicsICdSVEYnLCAnWE1MJywgJ1BERicgYW5kICdQUycgZm9yIHRoZSBhcHByb3ByaWF0ZQotIyAgIG91dHB1dCBmb3JtYXRzLiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgRE9YWUdFTl9QQVBFUl9TSVpFIG1heSBiZQotIyAgIHNwZWNpZmllZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAnYTR3aWRlJyBwYXBlciBzaXplLgotIwotIyAgIEJ5IGRlZmF1bHQsIEhUTUwsIFBERiBhbmQgUFMgZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmF0ZWQgYXMgdGhpcyBzZWVtcyB0bwotIyAgIGJlIHRoZSBtb3N0IHBvcHVsYXIgYW5kIHBvcnRhYmxlIGNvbWJpbmF0aW9uLiBNQU4gcGFnZXMgY3JlYXRlZCBieQotIyAgIERveHlnZW4gYXJlIHVzdWFsbHkgcHJvYmxlbWF0aWMsIHRob3VnaCBieSBwaWNraW5nIGFuIGFwcHJvcHJpYXRlIHN1YnNldAotIyAgIGFuZCBkb2luZyBzb21lIG1hc3NhZ2luZyB0aGV5IG1pZ2h0IGJlIGJldHRlciB0aGFuIG5vdGhpbmcuIENITSBhbmQgUlRGCi0jICAgYXJlIHNwZWNpZmljIGZvciBNUyAobm90ZSB0aGF0IHlvdSBjYW4ndCBnZW5lcmF0ZSBib3RoIEhUTUwgYW5kIENITSBhdAotIyAgIHRoZSBzYW1lIHRpbWUpLiBUaGUgWE1MIGlzIHJhdGhlciB1c2VsZXNzIHVubGVzcyB5b3UgYXBwbHkgc3BlY2lhbGl6ZWQKLSMgICBwb3N0LXByb2Nlc3NpbmcgdG8gaXQuCi0jCi0jICAgVGhlIG1hY3JvcyBtYWlubHkgY29udHJvbCB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGUgZmVhdHVyZS4gVGhlIHVzZSBjYW4KLSMgICBvdmVycmlkZSB0aGUgZGVmYXVsdCBieSBzcGVjaWZ5aW5nIC0tZW5hYmxlIG9yIC0tZGlzYWJsZS4gVGhlIG1hY3JvcwotIyAgIGVuc3VyZSB0aGF0IGNvbnRyYWRpY3RvcnkgZmxhZ3MgYXJlIG5vdCBnaXZlbiAoZS5nLiwKLSMgICAtLWVuYWJsZS1kb3h5Z2VuLWh0bWwgYW5kIC0tZW5hYmxlLWRveHlnZW4tY2htLAotIyAgIC0tZW5hYmxlLWRveHlnZW4tYW55dGhpbmcgd2l0aCAtLWRpc2FibGUtZG94eWdlbiwgZXRjLikgRmluYWxseSwgZWFjaAotIyAgIGZlYXR1cmUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkICh3aXRoIGEgd2FybmluZykgaWYgdGhlIHJlcXVpcmVkCi0jICAgcHJvZ3JhbXMgYXJlIG1pc3NpbmcuCi0jCi0jICAgT25jZSBhbGwgdGhlIGZlYXR1cmUgZGVmYXVsdHMgaGF2ZSBiZWVuIHNwZWNpZmllZCwgY2FsbCBEWF9JTklUX0RPWFlHRU4KLSMgICB3aXRoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczogYSBvbmUtd29yZCBuYW1lIGZvciB0aGUgcHJvamVjdCBmb3IgdXNlCi0jICAgYXMgYSBmaWxlbmFtZSBiYXNlIGV0Yy4sIGFuIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lICh0aGUKLSMgICBkZWZhdWx0IGlzICdEb3h5ZmlsZScsIHRoZSBzYW1lIGFzIERveHlnZW4ncyBkZWZhdWx0KSwgYW5kIGFuIG9wdGlvbmFsCi0jICAgb3V0cHV0IGRpcmVjdG9yeSBuYW1lICh0aGUgZGVmYXVsdCBpcyAnZG94eWdlbi1kb2MnKS4KLSMKLSMgICBBdXRvbWFrZSBTdXBwb3J0Ci0jCi0jICAgVGhlIGZvbGxvd2luZyBpcyBhIHRlbXBsYXRlIGFtaW5jbHVkZS5hbSBmaWxlIGZvciB1c2Ugd2l0aCBBdXRvbWFrZS4KLSMgICBNYWtlIHRhcmdldHMgYW5kIHZhcmlhYmxlcyB2YWx1ZXMgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHZhcmlvdXMKLSMgICBEWF9DT05EXyogY29uZGl0aW9uYWxzIHNldCBieSBhdXRvY29uZi4KLSMKLSMgICBUaGUgcHJvdmlkZWQgdGFyZ2V0cyBhcmU6Ci0jCi0jICAgICBkb3h5Z2VuLWRvYzogR2VuZXJhdGUgYWxsIGRveHlnZW4gZG9jdW1lbnRhdGlvbi4KLSMKLSMgICAgIGRveHlnZW4tcnVuOiBSdW4gZG94eWdlbiwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBzb21lIG9mIHRoZQotIyAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gKEhUTUwsIENITSwgQ0hJLCBNQU4sIFJURiwgWE1MKQotIyAgICAgICAgICAgICAgICAgIGJ1dCB3aWxsIG5vdCBkbyB0aGUgcG9zdCBwcm9jZXNzaW5nIHJlcXVpcmVkCi0jICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZXN0IG9mIGl0IChQUywgUERGLCBhbmQgc29tZSBNQU4pLgotIwotIyAgICAgZG94eWdlbi1tYW46IFJlbmFtZSBzb21lIGRveHlnZW4gZ2VuZXJhdGVkIG1hbiBwYWdlcy4KLSMKLSMgICAgIGRveHlnZW4tcHM6ICBHZW5lcmF0ZSBkb3h5Z2VuIFBvc3RTY3JpcHQgZG9jdW1lbnRhdGlvbi4KLSMKLSMgICAgIGRveHlnZW4tcGRmOiBHZW5lcmF0ZSBkb3h5Z2VuIFBERiBkb2N1bWVudGF0aW9uLgotIwotIyAgIE5vdGUgdGhhdCBieSBkZWZhdWx0IHRoZXNlIGFyZSBub3QgaW50ZWdyYXRlZCBpbnRvIHRoZSBhdXRvbWFrZSB0YXJnZXRzLgotIyAgIElmIGRveHlnZW4gaXMgdXNlZCB0byBnZW5lcmF0ZSBtYW4gcGFnZXMsIHlvdSBjYW4gYWNoaWV2ZSB0aGlzCi0jICAgaW50ZWdyYXRpb24gYnkgc2V0dGluZyBtYW4zX01BTlMgdG8gdGhlIGxpc3Qgb2YgbWFuIHBhZ2VzIGdlbmVyYXRlZCBhbmQKLSMgICB0aGVuIGFkZGluZyB0aGUgZGVwZW5kZW5jeToKLSMKLSMgICAgICQobWFuM19NQU5TKTogZG94eWdlbi1kb2MKLSMKLSMgICBUaGlzIHdpbGwgY2F1c2UgbWFrZSB0byBydW4gZG94eWdlbiBhbmQgZ2VuZXJhdGUgYWxsIHRoZSBkb2N1bWVudGF0aW9uLgotIwotIyAgIFRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBNYWtlZmlsZS5hbToKLSMKLSMgICAgIERYX0NMRUFORklMRVMgPSBldmVyeXRoaW5nIHRvIGNsZWFuLgotIwotIyAgIFRoZW4gYWRkIHRoaXMgdmFyaWFibGUgdG8gTU9TVExZQ0xFQU5GSUxFUy4KLSMKLSMgICAgIC0tLS0tIGJlZ2luIGFtaW5jbHVkZS5hbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgICAgICMjIEZvcm1hdC1pbmRlcGVuZGVudCBEb3h5Z2VuIHJ1bGVzLiAjIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jCi0jICAgICBpZiBEWF9DT05EX2RvYwotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyAgICAgIyMgUnVsZXMgc3BlY2lmaWMgZm9yIEhUTUwgb3V0cHV0LiAjIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9odG1sCi0jCi0jICAgICBEWF9DTEVBTl9IVE1MID0gQERYX0RPQ0RJUkAvaHRtbAotIwotIyAgICAgZW5kaWYgRFhfQ09ORF9odG1sCi0jCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgICAgICMjIFJ1bGVzIHNwZWNpZmljIGZvciBDSE0gb3V0cHV0LiAjIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jCi0jICAgICBpZiBEWF9DT05EX2NobQotIwotIyAgICAgRFhfQ0xFQU5fQ0hNID0gQERYX0RPQ0RJUkAvY2htCi0jCi0jICAgICBpZiBEWF9DT05EX2NoaQotIwotIyAgICAgRFhfQ0xFQU5fQ0hJID0gQERYX0RPQ0RJUkAvQFBBQ0tBR0VALmNoaQotIwotIyAgICAgZW5kaWYgRFhfQ09ORF9jaGkKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfY2htCi0jCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMgICAgICMjIFJ1bGVzIHNwZWNpZmljIGZvciBNQU4gb3V0cHV0LiAjIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jCi0jICAgICBpZiBEWF9DT05EX21hbgotIwotIyAgICAgRFhfQ0xFQU5fTUFOID0gQERYX0RPQ0RJUkAvbWFuCi0jCi0jICAgICBlbmRpZiBEWF9DT05EX21hbgotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jICAgICAjIyBSdWxlcyBzcGVjaWZpYyBmb3IgUlRGIG91dHB1dC4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9ydGYKLSMKLSMgICAgIERYX0NMRUFOX1JURiA9IEBEWF9ET0NESVJAL3J0ZgotIwotIyAgICAgZW5kaWYgRFhfQ09ORF9ydGYKLSMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyAgICAgIyMgUnVsZXMgc3BlY2lmaWMgZm9yIFhNTCBvdXRwdXQuICMjCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMKLSMgICAgIGlmIERYX0NPTkRfeG1sCi0jCi0jICAgICBEWF9DTEVBTl9YTUwgPSBARFhfRE9DRElSQC94bWwKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfeG1sCi0jCi0jICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyAgICAgIyMgUnVsZXMgc3BlY2lmaWMgZm9yIFBTIG91dHB1dC4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jCi0jICAgICBpZiBEWF9DT05EX3BzCi0jCi0jICAgICBEWF9DTEVBTl9QUyA9IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wcwotIwotIyAgICAgRFhfUFNfR09BTCA9IGRveHlnZW4tcHMKLSMKLSMgICAgIGRveHlnZW4tcHM6IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wcwotIwotIyAgICAgQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnBzOiBARFhfRE9DRElSQC9AUEFDS0FHRUAudGFnCi0jICAgICAgICAgY2QgQERYX0RPQ0RJUkAvbGF0ZXg7IFwKLSMgICAgICAgICBybSAtZiAqLmF1eCAqLnRvYyAqLmlkeCAqLmluZCAqLmlsZyAqLmxvZyAqLm91dDsgXAotIyAgICAgICAgICQoRFhfTEFURVgpIHJlZm1hbi50ZXg7IFwKLSMgICAgICAgICAkKE1BS0VJTkRFWF9QQVRIKSByZWZtYW4uaWR4OyBcCi0jICAgICAgICAgJChEWF9MQVRFWCkgcmVmbWFuLnRleDsgXAotIyAgICAgICAgIGNvdW50ZG93bj01OyBcCi0jICAgICAgICAgd2hpbGUgJChEWF9FR1JFUCkgJ1JlcnVuIChMYVRlWHx0byBnZXQgY3Jvc3MtcmVmZXJlbmNlcyByaWdodCknIFwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZtYW4ubG9nID4gL2Rldi9udWxsIDI+JjEgXAotIyAgICAgICAgICAgICYmIHRlc3QgJCRjb3VudGRvd24gLWd0IDA7IGRvIFwKLSMgICAgICAgICAgICAgJChEWF9MQVRFWCkgcmVmbWFuLnRleDsgXAotIyAgICAgICAgICAgICBjb3VudGRvd249YGV4cHIgJCRjb3VudGRvd24gLSAxYDsgXAotIyAgICAgICAgIGRvbmU7IFwKLSMgICAgICAgICAkKERYX0RWSVBTKSAtbyAuLi9AUEFDS0FHRUAucHMgcmVmbWFuLmR2aQotIwotIyAgICAgZW5kaWYgRFhfQ09ORF9wcwotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0jICAgICAjIyBSdWxlcyBzcGVjaWZpYyBmb3IgUERGIG91dHB1dC4gIyMKLSMgICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9wZGYKLSMKLSMgICAgIERYX0NMRUFOX1BERiA9IEBEWF9ET0NESVJAL0BQQUNLQUdFQC5wZGYKLSMKLSMgICAgIERYX1BERl9HT0FMID0gZG94eWdlbi1wZGYKLSMKLSMgICAgIGRveHlnZW4tcGRmOiBARFhfRE9DRElSQC9AUEFDS0FHRUAucGRmCi0jCi0jICAgICBARFhfRE9DRElSQC9AUEFDS0FHRUAucGRmOiBARFhfRE9DRElSQC9AUEFDS0FHRUAudGFnCi0jICAgICAgICAgY2QgQERYX0RPQ0RJUkAvbGF0ZXg7IFwKLSMgICAgICAgICBybSAtZiAqLmF1eCAqLnRvYyAqLmlkeCAqLmluZCAqLmlsZyAqLmxvZyAqLm91dDsgXAotIyAgICAgICAgICQoRFhfUERGTEFURVgpIHJlZm1hbi50ZXg7IFwKLSMgICAgICAgICAkKERYX01BS0VJTkRFWCkgcmVmbWFuLmlkeDsgXAotIyAgICAgICAgICQoRFhfUERGTEFURVgpIHJlZm1hbi50ZXg7IFwKLSMgICAgICAgICBjb3VudGRvd249NTsgXAotIyAgICAgICAgIHdoaWxlICQoRFhfRUdSRVApICdSZXJ1biAoTGFUZVh8dG8gZ2V0IGNyb3NzLXJlZmVyZW5jZXMgcmlnaHQpJyBcCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmbWFuLmxvZyA+IC9kZXYvbnVsbCAyPiYxIFwKLSMgICAgICAgICAgICAmJiB0ZXN0ICQkY291bnRkb3duIC1ndCAwOyBkbyBcCi0jICAgICAgICAgICAgICQoRFhfUERGTEFURVgpIHJlZm1hbi50ZXg7IFwKLSMgICAgICAgICAgICAgY291bnRkb3duPWBleHByICQkY291bnRkb3duIC0gMWA7IFwKLSMgICAgICAgICBkb25lOyBcCi0jICAgICAgICAgbXYgcmVmbWFuLnBkZiAuLi9AUEFDS0FHRUAucGRmCi0jCi0jICAgICBlbmRpZiBEWF9DT05EX3BkZgotIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyAgICAgIyMgUnVsZXMgc3BlY2lmaWMgZm9yIExhVGVYIChzaGFyZWQgZm9yIFBTIGFuZCBQREYpLiAjIwotIyAgICAgIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIwotIyAgICAgaWYgRFhfQ09ORF9sYXRleAotIwotIyAgICAgRFhfQ0xFQU5fTEFURVggPSBARFhfRE9DRElSQC9sYXRleAotIwotIyAgICAgZW5kaWYgRFhfQ09ORF9sYXRleAotIwotIyAgICAgLlBIT05ZOiBkb3h5Z2VuLXJ1biBkb3h5Z2VuLWRvYyAkKERYX1BTX0dPQUwpICQoRFhfUERGX0dPQUwpCi0jCi0jICAgICAuSU5URVJNRURJQVRFOiBkb3h5Z2VuLXJ1biAkKERYX1BTX0dPQUwpICQoRFhfUERGX0dPQUwpCi0jCi0jICAgICBkb3h5Z2VuLXJ1bjogQERYX0RPQ0RJUkAvQFBBQ0tBR0VALnRhZwotIwotIyAgICAgZG94eWdlbi1kb2M6IGRveHlnZW4tcnVuICQoRFhfUFNfR09BTCkgJChEWF9QREZfR09BTCkKLSMKLSMgICAgIEBEWF9ET0NESVJAL0BQQUNLQUdFQC50YWc6ICQoRFhfQ09ORklHKSAkKHBrZ2luY2x1ZGVfSEVBREVSUykKLSMgICAgICAgICBybSAtcmYgQERYX0RPQ0RJUkAKLSMgICAgICAgICAkKERYX0VOVikgJChEWF9ET1hZR0VOKSAkKHNyY2RpcikvJChEWF9DT05GSUcpCi0jCi0jICAgICBEWF9DTEVBTkZJTEVTID0gXAotIyAgICAgICAgIEBEWF9ET0NESVJAL0BQQUNLQUdFQC50YWcgXAotIyAgICAgICAgIC1yIFwKLSMgICAgICAgICAkKERYX0NMRUFOX0hUTUwpIFwKLSMgICAgICAgICAkKERYX0NMRUFOX0NITSkgXAotIyAgICAgICAgICQoRFhfQ0xFQU5fQ0hJKSBcCi0jICAgICAgICAgJChEWF9DTEVBTl9NQU4pIFwKLSMgICAgICAgICAkKERYX0NMRUFOX1JURikgXAotIyAgICAgICAgICQoRFhfQ0xFQU5fWE1MKSBcCi0jICAgICAgICAgJChEWF9DTEVBTl9QUykgXAotIyAgICAgICAgICQoRFhfQ0xFQU5fUERGKSBcCi0jICAgICAgICAgJChEWF9DTEVBTl9MQVRFWCkKLSMKLSMgICAgIGVuZGlmIERYX0NPTkRfZG9jCi0jCi0jICAgICAtLS0tLSBlbmQgYW1pbmNsdWRlLmFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyBMSUNFTlNFCi0jCi0jICAgQ29weXJpZ2h0IChjKSAyMDA5IE9yZW4gQmVuLUtpa2kgPG9yZW5AYmVuLWtpa2kub3JnPgotIwotIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSMgICB3YXJyYW50eS4KLQotI3NlcmlhbCAxMgotCi0jIyAtLS0tLS0tLS0tIyMKLSMjIERlZmF1bHRzLiAjIwotIyMgLS0tLS0tLS0tLSMjCi0KLURYX0VOVj0iIgotQUNfREVGVU4oW0RYX0ZFQVRVUkVfZG9jXSwgIE9OKQotQUNfREVGVU4oW0RYX0ZFQVRVUkVfZG90XSwgIE9GRikKLUFDX0RFRlVOKFtEWF9GRUFUVVJFX21hbl0sICBPRkYpCi1BQ19ERUZVTihbRFhfRkVBVFVSRV9odG1sXSwgT04pCi1BQ19ERUZVTihbRFhfRkVBVFVSRV9jaG1dLCAgT0ZGKQotQUNfREVGVU4oW0RYX0ZFQVRVUkVfY2hpXSwgIE9GRikKLUFDX0RFRlVOKFtEWF9GRUFUVVJFX3J0Zl0sICBPRkYpCi1BQ19ERUZVTihbRFhfRkVBVFVSRV94bWxdLCAgT0ZGKQotQUNfREVGVU4oW0RYX0ZFQVRVUkVfcGRmXSwgIE9OKQotQUNfREVGVU4oW0RYX0ZFQVRVUkVfcHNdLCAgIE9OKQotCi0jIyAtLS0tLS0tLS0tLS0tLS0gIyMKLSMjIFByaXZhdGUgbWFjcm9zLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tICMjCi0KLSMgRFhfRU5WX0FQUEVORChWQVJJQUJMRSwgVkFMVUUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBcHBlbmQgVkFSSUFCTEU9IlZBTFVFIiB0byBEWF9FTlYgZm9yIGludm9raW5nIGRveHlnZW4uCi1BQ19ERUZVTihbRFhfRU5WX0FQUEVORF0sIFtBQ19TVUJTVChbRFhfRU5WXSwgWyIkRFhfRU5WICQxPSckMiciXSldKQotCi0jIERYX0RJUk5BTUVfRVhQUgotIyAtLS0tLS0tLS0tLS0tLS0KLSMgRXhwYW5kIGludG8gYSBzaGVsbCBleHByZXNzaW9uIHByaW50cyB0aGUgZGlyZWN0b3J5IHBhcnQgb2YgYSBwYXRoLgotQUNfREVGVU4oW0RYX0RJUk5BTUVfRVhQUl0sCi0gICAgICAgICBbW2V4cHIgIi4kMSIgOiAnXChcLlwpW14vXSokJyBcfCAieCQxIiA6ICd4XCguKlwpL1teL10qJCddXSkKLQotIyBEWF9JRl9GRUFUVVJFKEZFQVRVUkUsIElGLU9OLCBJRi1PRkYpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRXhwYW5kcyBhY2NvcmRpbmcgdG8gdGhlIE00IChzdGF0aWMpIHN0YXR1cyBvZiB0aGUgZmVhdHVyZS4KLUFDX0RFRlVOKFtEWF9JRl9GRUFUVVJFXSwgW2lmZWxzZShEWF9GRUFUVVJFXyQxLCBPTiwgWyQyXSwgWyQzXSldKQotCi0jIERYX1JFUVVJUkVfUFJPRyhWQVJJQUJMRSwgUFJPR1JBTSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBSZXF1aXJlIHRoZSBzcGVjaWZpZWQgcHJvZ3JhbSB0byBiZSBmb3VuZCBmb3IgdGhlIERYX0NVUlJFTlRfRkVBVFVSRSB0byB3b3JrLgotQUNfREVGVU4oW0RYX1JFUVVJUkVfUFJPR10sIFsKLUFDX1BBVEhfVE9PTChbJDFdLCBbJDJdKQotaWYgdGVzdCAiJERYX0ZMQUdfW11EWF9DVVJSRU5UX0ZFQVRVUkUkJDEiID0gMTsgdGhlbgotICAgIEFDX01TR19XQVJOKFskMiBub3QgZm91bmQgLSB3aWxsIG5vdCBEWF9DVVJSRU5UX0RFU0NSSVBUSU9OXSkKLSAgICBBQ19TVUJTVChEWF9GTEFHX1tdRFhfQ1VSUkVOVF9GRUFUVVJFLCAwKQotZmkKLV0pCi0KLSMgRFhfVEVTVF9GRUFUVVJFKEZFQVRVUkUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFeHBhbmQgdG8gYSBzaGVsbCBleHByZXNzaW9uIHRlc3Rpbmcgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhY3RpdmUuCi1BQ19ERUZVTihbRFhfVEVTVF9GRUFUVVJFXSwgW3Rlc3QgIiREWF9GTEFHXyQxIiA9IDFdKQotCi0jIERYX0NIRUNLX0RFUEVORChSRVFVSVJFRF9GRUFUVVJFLCBSRVFVSVJFRF9TVEFURSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBWZXJpZnkgdGhhdCBhIHJlcXVpcmVkIGZlYXR1cmVzIGhhcyB0aGUgcmlnaHQgc3RhdGUgYmVmb3JlIHRyeWluZyB0byB0dXJuIG9uCi0jIHRoZSBEWF9DVVJSRU5UX0ZFQVRVUkUuCi1BQ19ERUZVTihbRFhfQ0hFQ0tfREVQRU5EXSwgWwotdGVzdCAiJERYX0ZMQUdfJDEiID0gIiQyIiBcCi18fCBBQ19NU0dfRVJST1IoW2RveHlnZW4tRFhfQ1VSUkVOVF9GRUFUVVJFIGlmZWxzZShbJDJdLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzLCBjb250cmFkaWN0cykgZG94eWdlbi1EWF9DVVJSRU5UX0ZFQVRVUkVdKQotXSkKLQotIyBEWF9DTEVBUl9ERVBFTkQoRkVBVFVSRSwgUkVRVUlSRURfRkVBVFVSRSwgUkVRVUlSRURfU1RBVEUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgVHVybiBvZmYgdGhlIERYX0NVUlJFTlRfRkVBVFVSRSBpZiB0aGUgcmVxdWlyZWQgZmVhdHVyZSBpcyBvZmYuCi1BQ19ERUZVTihbRFhfQ0xFQVJfREVQRU5EXSwgWwotdGVzdCAiJERYX0ZMQUdfJDEiID0gIiQyIiB8fCBBQ19TVUJTVChEWF9GTEFHX1tdRFhfQ1VSUkVOVF9GRUFUVVJFLCAwKQotXSkKLQotIyBEWF9GRUFUVVJFX0FSRyhGRUFUVVJFLCBERVNDUklQVElPTiwKLSMgICAgICAgICAgICAgICAgQ0hFQ0tfREVQRU5ELCBDTEVBUl9ERVBFTkQsCi0jICAgICAgICAgICAgICAgIFJFUVVJUkUsIERPLUlGLU9OLCBETy1JRi1PRkYpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFBhcnNlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uIGNvbnRyb2xsaW5nIGEgZmVhdHVyZS4gQ0hFQ0tfREVQRU5EIGlzIGNhbGxlZAotIyBpZiB0aGUgdXNlciBleHBsaWNpdGx5IHR1cm5zIHRoZSBmZWF0dXJlIG9uIChhbmQgaW52b2tlcyBEWF9DSEVDS19ERVBFTkQpLAotIyBvdGhlcndpc2UgQ0xFQVJfREVQRU5EIGlzIGNhbGxlZCB0byB0dXJuIG9mZiB0aGUgZGVmYXVsdCBzdGF0ZSBpZiBhIHJlcXVpcmVkCi0jIGZlYXR1cmUgaXMgZGlzYWJsZWQgKHVzaW5nIERYX0NMRUFSX0RFUEVORCkuIFJFUVVJUkUgcGVyZm9ybXMgYWRkaXRpb25hbAotIyByZXF1aXJlbWVudCB0ZXN0cyAoRFhfUkVRVUlSRV9QUk9HKS4gRmluYWxseSwgYW4gYXV0b21ha2UgZmxhZyBpcyBzZXQgYW5kCi0jIERPLUlGLU9OIG9yIERPLUlGLU9GRiBhcmUgY2FsbGVkIGFjY29yZGluZyB0byB0aGUgZmluYWwgc3RhdGUgb2YgdGhlIGZlYXR1cmUuCi1BQ19ERUZVTihbRFhfQVJHX0FCTEVdLCBbCi0gICAgQUNfREVGVU4oW0RYX0NVUlJFTlRfRkVBVFVSRV0sIFskMV0pCi0gICAgQUNfREVGVU4oW0RYX0NVUlJFTlRfREVTQ1JJUFRJT05dLCBbJDJdKQotICAgIEFDX0FSR19FTkFCTEUoZG94eWdlbi0kMSwKLSAgICAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhEWF9JRl9GRUFUVVJFKFskMV0sIFstLWRpc2FibGUtZG94eWdlbi0kMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLS1lbmFibGUtZG94eWdlbi0kMV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYX0lGX0ZFQVRVUkUoWyQxXSwgW2Rvbid0ICQyXSwgWyQyXSkpXSwKLSAgICAgICAgICAgICAgICAgIFsKLWNhc2UgIiRlbmFibGV2YWwiIGluCi0jKAoteXxZfHllc3xZZXN8WUVTKQotICAgIEFDX1NVQlNUKFtEWF9GTEFHXyQxXSwgMSkKLSAgICAkMwotOzsgIygKLW58Tnxub3xOb3xOTykKLSAgICBBQ19TVUJTVChbRFhfRkxBR18kMV0sIDApCi07OyAjKAotKikKLSAgICBBQ19NU0dfRVJST1IoW2ludmFsaWQgdmFsdWUgJyRlbmFibGV2YWwnIGdpdmVuIHRvIGRveHlnZW4tJDFdKQotOzsKLWVzYWMKLV0sIFsKLUFDX1NVQlNUKFtEWF9GTEFHXyQxXSwgW0RYX0lGX0ZFQVRVUkUoWyQxXSwgMSwgMCldKQotJDQKLV0pCi1pZiBEWF9URVNUX0ZFQVRVUkUoWyQxXSk7IHRoZW4KLSAgICAkNQotICAgIDoKLWZpCi1BTV9DT05ESVRJT05BTChEWF9DT05EXyQxLCBEWF9URVNUX0ZFQVRVUkUoWyQxXSkpCi1pZiBEWF9URVNUX0ZFQVRVUkUoWyQxXSk7IHRoZW4KLSAgICAkNgotICAgIDoKLWVsc2UKLSAgICAkNwotICAgIDoKLWZpCi1dKQotCi0jIyAtLS0tLS0tLS0tLS0tLSAjIwotIyMgUHVibGljIG1hY3Jvcy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tICMjCi0KLSMgRFhfWFhYX0ZFQVRVUkUoREVGQVVMVF9TVEFURSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtEWF9ET1hZR0VOX0ZFQVRVUkVdLCBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfZG9jXSwgIFskMV0pXSkKLUFDX0RFRlVOKFtEWF9ET1RfRkVBVFVSRV0sICAgICBbQUNfREVGVU4oW0RYX0ZFQVRVUkVfZG90XSwgWyQxXSldKQotQUNfREVGVU4oW0RYX01BTl9GRUFUVVJFXSwgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV9tYW5dLCAgWyQxXSldKQotQUNfREVGVU4oW0RYX0hUTUxfRkVBVFVSRV0sICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV9odG1sXSwgWyQxXSldKQotQUNfREVGVU4oW0RYX0NITV9GRUFUVVJFXSwgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV9jaG1dLCAgWyQxXSldKQotQUNfREVGVU4oW0RYX0NISV9GRUFUVVJFXSwgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV9jaGldLCAgWyQxXSldKQotQUNfREVGVU4oW0RYX1JURl9GRUFUVVJFXSwgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV9ydGZdLCAgWyQxXSldKQotQUNfREVGVU4oW0RYX1hNTF9GRUFUVVJFXSwgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV94bWxdLCAgWyQxXSldKQotQUNfREVGVU4oW0RYX1hNTF9GRUFUVVJFXSwgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV94bWxdLCAgWyQxXSldKQotQUNfREVGVU4oW0RYX1BERl9GRUFUVVJFXSwgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV9wZGZdLCAgWyQxXSldKQotQUNfREVGVU4oW0RYX1BTX0ZFQVRVUkVdLCAgICAgIFtBQ19ERUZVTihbRFhfRkVBVFVSRV9wc10sICAgWyQxXSldKQotCi0jIERYX0lOSVRfRE9YWUdFTihQUk9KRUNULCBbQ09ORklHLUZJTEVdLCBbT1VUUFVULURPQy1ESVJdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUFJPSkVDVCBhbHNvIHNlcnZlcyBhcyB0aGUgYmFzZSBuYW1lIGZvciB0aGUgZG9jdW1lbnRhdGlvbiBmaWxlcy4KLSMgVGhlIGRlZmF1bHQgQ09ORklHLUZJTEUgaXMgIkRveHlmaWxlIiBhbmQgT1VUUFVULURPQy1ESVIgaXMgImRveHlnZW4tZG9jIi4KLUFDX0RFRlVOKFtEWF9JTklUX0RPWFlHRU5dLCBbCi0KLSMgRmlsZXM6Ci1BQ19TVUJTVChbRFhfUFJPSkVDVF0sIFskMV0pCi1BQ19TVUJTVChbRFhfQ09ORklHXSwgW2lmZWxzZShbJDJdLCBbXSwgRG94eWZpbGUsIFskMl0pXSkKLUFDX1NVQlNUKFtEWF9ET0NESVJdLCBbaWZlbHNlKFskM10sIFtdLCBkb3h5Z2VuLWRvYywgWyQzXSldKQotCi0jIEVudmlyb25tZW50IHZhcmlhYmxlcyB1c2VkIGluc2lkZSBkb3h5Z2VuLmNmZzoKLURYX0VOVl9BUFBFTkQoU1JDRElSLCAkc3JjZGlyKQotRFhfRU5WX0FQUEVORChQUk9KRUNULCAkRFhfUFJPSkVDVCkKLURYX0VOVl9BUFBFTkQoRE9DRElSLCAkRFhfRE9DRElSKQotRFhfRU5WX0FQUEVORChWRVJTSU9OLCAkUEFDS0FHRV9WRVJTSU9OKQotCi0jIERveHlnZW4gaXRzZWxmOgotRFhfQVJHX0FCTEUoZG9jLCBbZ2VuZXJhdGUgYW55IGRveHlnZW4gZG9jdW1lbnRhdGlvbl0sCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW0RYX1JFUVVJUkVfUFJPRyhbRFhfRE9YWUdFTl0sIGRveHlnZW4pCi0gICAgICAgICAgICAgRFhfUkVRVUlSRV9QUk9HKFtEWF9QRVJMXSwgcGVybCldLAotICAgICAgICAgICAgW0RYX0VOVl9BUFBFTkQoUEVSTF9QQVRILCAkRFhfUEVSTCldKQotCi0jIERvdCBmb3IgZ3JhcGhpY3M6Ci1EWF9BUkdfQUJMRShkb3QsIFtnZW5lcmF0ZSBncmFwaGljcyBmb3IgZG94eWdlbiBkb2N1bWVudGF0aW9uXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW0RYX1JFUVVJUkVfUFJPRyhbRFhfRE9UXSwgZG90KV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChIQVZFX0RPVCwgWUVTKQotICAgICAgICAgICAgIERYX0VOVl9BUFBFTkQoRE9UX1BBVEgsIFtgRFhfRElSTkFNRV9FWFBSKCREWF9ET1QpYF0pXSwKLSAgICAgICAgICAgIFtEWF9FTlZfQVBQRU5EKEhBVkVfRE9ULCBOTyldKQotCi0jIE1hbiBwYWdlcyBnZW5lcmF0aW9uOgotRFhfQVJHX0FCTEUobWFuLCBbZ2VuZXJhdGUgZG94eWdlbiBtYW51YWwgcGFnZXNdLAotICAgICAgICAgICAgW0RYX0NIRUNLX0RFUEVORChkb2MsIDEpXSwKLSAgICAgICAgICAgIFtEWF9DTEVBUl9ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFtEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX01BTiwgWUVTKV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9NQU4sIE5PKV0pCi0KLSMgUlRGIGZpbGUgZ2VuZXJhdGlvbjoKLURYX0FSR19BQkxFKHJ0ZiwgW2dlbmVyYXRlIGRveHlnZW4gUlRGIGRvY3VtZW50YXRpb25dLAotICAgICAgICAgICAgW0RYX0NIRUNLX0RFUEVORChkb2MsIDEpXSwKLSAgICAgICAgICAgIFtEWF9DTEVBUl9ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFtEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX1JURiwgWUVTKV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9SVEYsIE5PKV0pCi0KLSMgWE1MIGZpbGUgZ2VuZXJhdGlvbjoKLURYX0FSR19BQkxFKHhtbCwgW2dlbmVyYXRlIGRveHlnZW4gWE1MIGRvY3VtZW50YXRpb25dLAotICAgICAgICAgICAgW0RYX0NIRUNLX0RFUEVORChkb2MsIDEpXSwKLSAgICAgICAgICAgIFtEWF9DTEVBUl9ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFtEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX1hNTCwgWUVTKV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9YTUwsIE5PKV0pCi0KLSMgKENvbXByZXNzZWQpIEhUTUwgaGVscCBnZW5lcmF0aW9uOgotRFhfQVJHX0FCTEUoY2htLCBbZ2VuZXJhdGUgZG94eWdlbiBjb21wcmVzc2VkIEhUTUwgaGVscCBkb2N1bWVudGF0aW9uXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW0RYX1JFUVVJUkVfUFJPRyhbRFhfSEhDXSwgaGhjKV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChISENfUEFUSCwgJERYX0hIQykKLSAgICAgICAgICAgICBEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX0hUTUwsIFlFUykKLSAgICAgICAgICAgICBEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX0hUTUxIRUxQLCBZRVMpXSwKLSAgICAgICAgICAgIFtEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX0hUTUxIRUxQLCBOTyldKQotCi0jIFNlcGVyYXRlIENISSBmaWxlIGdlbmVyYXRpb24uCi1EWF9BUkdfQUJMRShjaGksIFtnZW5lcmF0ZSBkb3h5Z2VuIHNlcGVyYXRlIGNvbXByZXNzZWQgSFRNTCBoZWxwIGluZGV4IGZpbGVdLAotICAgICAgICAgICAgW0RYX0NIRUNLX0RFUEVORChjaG0sIDEpXSwKLSAgICAgICAgICAgIFtEWF9DTEVBUl9ERVBFTkQoY2htLCAxKV0sCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFtEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX0NISSwgWUVTKV0sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9DSEksIE5PKV0pCi0KLSMgUGxhaW4gSFRNTCBwYWdlcyBnZW5lcmF0aW9uOgotRFhfQVJHX0FCTEUoaHRtbCwgW2dlbmVyYXRlIGRveHlnZW4gcGxhaW4gSFRNTCBkb2N1bWVudGF0aW9uXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKSBEWF9DSEVDS19ERVBFTkQoY2htLCAwKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSkgRFhfQ0xFQVJfREVQRU5EKGNobSwgMCldLAotICAgICAgICAgICAgW10sCi0gICAgICAgICAgICBbRFhfRU5WX0FQUEVORChHRU5FUkFURV9IVE1MLCBZRVMpXSwKLSAgICAgICAgICAgIFtEWF9URVNUX0ZFQVRVUkUoY2htKSB8fCBEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX0hUTUwsIE5PKV0pCi0KLSMgUG9zdFNjcmlwdCBmaWxlIGdlbmVyYXRpb246Ci1EWF9BUkdfQUJMRShwcywgW2dlbmVyYXRlIGRveHlnZW4gUG9zdFNjcmlwdCBkb2N1bWVudGF0aW9uXSwKLSAgICAgICAgICAgIFtEWF9DSEVDS19ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfQ0xFQVJfREVQRU5EKGRvYywgMSldLAotICAgICAgICAgICAgW0RYX1JFUVVJUkVfUFJPRyhbRFhfTEFURVhdLCBsYXRleCkKLSAgICAgICAgICAgICBEWF9SRVFVSVJFX1BST0coW0RYX01BS0VJTkRFWF0sIG1ha2VpbmRleCkKLSAgICAgICAgICAgICBEWF9SRVFVSVJFX1BST0coW0RYX0RWSVBTXSwgZHZpcHMpCi0gICAgICAgICAgICAgRFhfUkVRVUlSRV9QUk9HKFtEWF9FR1JFUF0sIGVncmVwKV0pCi0KLSMgUERGIGZpbGUgZ2VuZXJhdGlvbjoKLURYX0FSR19BQkxFKHBkZiwgW2dlbmVyYXRlIGRveHlnZW4gUERGIGRvY3VtZW50YXRpb25dLAotICAgICAgICAgICAgW0RYX0NIRUNLX0RFUEVORChkb2MsIDEpXSwKLSAgICAgICAgICAgIFtEWF9DTEVBUl9ERVBFTkQoZG9jLCAxKV0sCi0gICAgICAgICAgICBbRFhfUkVRVUlSRV9QUk9HKFtEWF9QREZMQVRFWF0sIHBkZmxhdGV4KQotICAgICAgICAgICAgIERYX1JFUVVJUkVfUFJPRyhbRFhfTUFLRUlOREVYXSwgbWFrZWluZGV4KQotICAgICAgICAgICAgIERYX1JFUVVJUkVfUFJPRyhbRFhfRUdSRVBdLCBlZ3JlcCldKQotCi0jIExhVGVYIGdlbmVyYXRpb24gZm9yIFBTIGFuZC9vciBQREY6Ci1BTV9DT05ESVRJT05BTChEWF9DT05EX2xhdGV4LCBEWF9URVNUX0ZFQVRVUkUocHMpIHx8IERYX1RFU1RfRkVBVFVSRShwZGYpKQotaWYgRFhfVEVTVF9GRUFUVVJFKHBzKSB8fCBEWF9URVNUX0ZFQVRVUkUocGRmKTsgdGhlbgotICAgIERYX0VOVl9BUFBFTkQoR0VORVJBVEVfTEFURVgsIFlFUykKLWVsc2UKLSAgICBEWF9FTlZfQVBQRU5EKEdFTkVSQVRFX0xBVEVYLCBOTykKLWZpCi0KLSMgUGFwZXIgc2l6ZSBmb3IgUFMgYW5kL29yIFBERjoKLUFDX0FSR19WQVIoRE9YWUdFTl9QQVBFUl9TSVpFLAotICAgICAgICAgICBbYTR3aWRlIChkZWZhdWx0KSwgYTQsIGxldHRlciwgbGVnYWwgb3IgZXhlY3V0aXZlXSkKLWNhc2UgIiRET1hZR0VOX1BBUEVSX1NJWkUiIGluCi0jKAotIiIpCi0gICAgQUNfU1VCU1QoRE9YWUdFTl9QQVBFUl9TSVpFLCAiIikKLTs7ICMoCi1hNHdpZGV8YTR8bGV0dGVyfGxlZ2FsfGV4ZWN1dGl2ZSkKLSAgICBEWF9FTlZfQVBQRU5EKFBBUEVSX1NJWkUsICRET1hZR0VOX1BBUEVSX1NJWkUpCi07OyAjKAotKikKLSAgICBBQ19NU0dfRVJST1IoW3Vua25vd24gRE9YWUdFTl9QQVBFUl9TSVpFPSckRE9YWUdFTl9QQVBFUl9TSVpFJ10pCi07OwotZXNhYwotCi0jRm9yIGRlYnVnZ2luZzoKLSNlY2hvIERYX0ZMQUdfZG9jPSREWF9GTEFHX2RvYwotI2VjaG8gRFhfRkxBR19kb3Q9JERYX0ZMQUdfZG90Ci0jZWNobyBEWF9GTEFHX21hbj0kRFhfRkxBR19tYW4KLSNlY2hvIERYX0ZMQUdfaHRtbD0kRFhfRkxBR19odG1sCi0jZWNobyBEWF9GTEFHX2NobT0kRFhfRkxBR19jaG0KLSNlY2hvIERYX0ZMQUdfY2hpPSREWF9GTEFHX2NoaQotI2VjaG8gRFhfRkxBR19ydGY9JERYX0ZMQUdfcnRmCi0jZWNobyBEWF9GTEFHX3htbD0kRFhfRkxBR194bWwKLSNlY2hvIERYX0ZMQUdfcGRmPSREWF9GTEFHX3BkZgotI2VjaG8gRFhfRkxBR19wcz0kRFhfRkxBR19wcwotI2VjaG8gRFhfRU5WPSREWF9FTlYKLV0pCmRpZmYgLS1naXQgYS9zcmMvYy9kYXRhLmggYi9zcmMvYy9kYXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYWE4M2MuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0RBVEFfSAotI2RlZmluZSBORE5fREFUQV9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2RhdGEtdHlwZXMuaD4KLSNpbmNsdWRlICJuYW1lLmgiCi0jaW5jbHVkZSAicHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgiCi0jaW5jbHVkZSAia2V5LWxvY2F0b3IuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEFuIG5kbl9TaWduYXR1cmUgc3RydWN0IGhvbGRzIHRoZSBzaWduYXR1cmUgYml0cyBhbmQgb3RoZXIgaW5mbyByZXByZXNlbnRpbmcgdGhlIHNpZ25hdHVyZSBpbiBhIGRhdGEgcGFja2V0LgotICovCi1zdHJ1Y3QgbmRuX1NpZ25hdHVyZSB7Ci0gIHN0cnVjdCBuZG5fQmxvYiBkaWdlc3RBbGdvcml0aG07IC8qKjwgQSBCbG9iIHdob3NlIHZhbHVlIGlzIGEgcG9pbnRlciB0byBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiAgMCBmb3Igbm9uZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBJZiBub25lLCBkZWZhdWx0IGlzIDIuMTYuODQwLjEuMTAxLjMuNC4yLjEgKHNoYS0yNTYpLiAqLwotICBzdHJ1Y3QgbmRuX0Jsb2Igd2l0bmVzczsgICAgICAgICAvKio8IEEgQmxvYiB3aG9zZSB2YWx1ZSBpcyBhIHBvaW50ZXIgdG8gcHJlLWFsbG9jYXRlZCBidWZmZXIuICAwIGZvciBub25lLiAqLwotICBzdHJ1Y3QgbmRuX0Jsb2Igc2lnbmF0dXJlOwotICBzdHJ1Y3QgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Q7Ci0gIHN0cnVjdCBuZG5fS2V5TG9jYXRvciBrZXlMb2NhdG9yOwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIHRoZSBuZG5fU2lnbmF0dXJlIHN0cnVjdCB3aXRoIHZhbHVlcyBmb3Igbm9uZSBhbmQgdGhlIGRlZmF1bHQgZGlnZXN0QWxnb3JpdGhtLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fTWV0YUluZm8gc3RydWN0LgotICogQHBhcmFtIGtleU5hbWVDb21wb25lbnRzIFRoZSBwcmUtYWxsb2NhdGVkIGFycmF5IG9mIG5kbl9OYW1lQ29tcG9uZW50IGZvciB0aGUga2V5TG9jYXRvci4KLSAqIEBwYXJhbSBtYXhLZXlOYW1lQ29tcG9uZW50cyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQga2V5TmFtZUNvbXBvbmVudHMgYXJyYXkuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fU2lnbmF0dXJlX2luaXRpYWxpemUoc3RydWN0IG5kbl9TaWduYXR1cmUgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqa2V5TmFtZUNvbXBvbmVudHMsIHNpemVfdCBtYXhLZXlOYW1lQ29tcG9uZW50cykgewotICBuZG5fQmxvYl9pbml0aWFsaXplKCZzZWxmLT5kaWdlc3RBbGdvcml0aG0sIDAsIDApOwotICBuZG5fQmxvYl9pbml0aWFsaXplKCZzZWxmLT53aXRuZXNzLCAwLCAwKTsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+c2lnbmF0dXJlLCAwLCAwKTsKLSAgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdF9pbml0aWFsaXplKCZzZWxmLT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QpOwotICBuZG5fS2V5TG9jYXRvcl9pbml0aWFsaXplKCZzZWxmLT5rZXlMb2NhdG9yLCBrZXlOYW1lQ29tcG9uZW50cywgbWF4S2V5TmFtZUNvbXBvbmVudHMpOwotfQotCi0vKioKLSAqIEFuIG5kbl9NZXRhSW5mbyBzdHJ1Y3QgaG9sZHMgdGhlIG1ldGEgaW5mbyB3aGljaCBpcyBzaWduZWQgaW5zaWRlIHRoZSBkYXRhIHBhY2tldC4KLSAqLwotc3RydWN0IG5kbl9NZXRhSW5mbyB7Ci0gIG5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgdGltZXN0YW1wTWlsbGlzZWNvbmRzOyAvKio8IG1pbGxpc2Vjb25kcyBzaW5jZSAxLzEvMTk3MC4gLTEgZm9yIG5vbmUgKi8KLSAgbmRuX0NvbnRlbnRUeXBlIHR5cGU7ICAgICAgICAgICAgICAgICAgLyoqPCBkZWZhdWx0IGlzIG5kbl9Db250ZW50VHlwZV9EQVRBLiAtMSBmb3Igbm9uZSAqLwotICBpbnQgZnJlc2huZXNzU2Vjb25kczsgICAgICAgICAgICAgICAgICAvKio8IC0xIGZvciBub25lICovCi0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBmaW5hbEJsb2NrSUQ7IC8qKjwgaGFzIGEgcG9pbnRlciB0byBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiAgMCBmb3Igbm9uZSAqLwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIHRoZSBuZG5fTWV0YUluZm8gc3RydWN0IHdpdGggdmFsdWVzIGZvciBub25lIGFuZCB0aGUgdHlwZSB0byB0aGUgZGVmYXVsdCBuZG5fQ29udGVudFR5cGVfREFUQS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX01ldGFJbmZvIHN0cnVjdC4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9NZXRhSW5mb19pbml0aWFsaXplCi0gIChzdHJ1Y3QgbmRuX01ldGFJbmZvICpzZWxmKSB7Ci0gIHNlbGYtPnR5cGUgPSBuZG5fQ29udGVudFR5cGVfREFUQTsKLSAgc2VsZi0+ZnJlc2huZXNzU2Vjb25kcyA9IC0xOwotICBuZG5fTmFtZUNvbXBvbmVudF9pbml0aWFsaXplKCZzZWxmLT5maW5hbEJsb2NrSUQsIDAsIDApOwotfQotCi1zdHJ1Y3QgbmRuX0RhdGEgewotICBzdHJ1Y3QgbmRuX1NpZ25hdHVyZSBzaWduYXR1cmU7Ci0gIHN0cnVjdCBuZG5fTmFtZSBuYW1lOwotICBzdHJ1Y3QgbmRuX01ldGFJbmZvIG1ldGFJbmZvOwotICBzdHJ1Y3QgbmRuX0Jsb2IgY29udGVudDsgICAgIC8qKjwgQSBCbG9iIHdpdGggYSBwb2ludGVyIHRvIHRoZSBjb250ZW50LiAqLwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIGFuIG5kbl9EYXRhIHN0cnVjdCB3aXRoIHRoZSBwcmUtYWxsb2NhdGVkIG5hbWVDb21wb25lbnRzIGFuZCBrZXlOYW1lQ29tcG9uZW50cywKLSAqIGFuZCBkZWZhdWx0cyBmb3IgYWxsIHRoZSB2YWx1ZXMuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9EYXRhIHN0cnVjdC4KLSAqIEBwYXJhbSBuYW1lQ29tcG9uZW50cyBUaGUgcHJlLWFsbG9jYXRlZCBhcnJheSBvZiBuZG5fTmFtZUNvbXBvbmVudC4KLSAqIEBwYXJhbSBtYXhOYW1lQ29tcG9uZW50cyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgbmFtZUNvbXBvbmVudHMgYXJyYXkuCi0gKiBAcGFyYW0ga2V5TmFtZUNvbXBvbmVudHMgVGhlIHByZS1hbGxvY2F0ZWQgYXJyYXkgb2YgbmRuX05hbWVDb21wb25lbnQgZm9yIHRoZSBzaWduYXR1cmUua2V5TG9jYXRvci4KLSAqIEBwYXJhbSBtYXhLZXlOYW1lQ29tcG9uZW50cyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQga2V5TmFtZUNvbXBvbmVudHMgYXJyYXkuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fRGF0YV9pbml0aWFsaXplCi0gIChzdHJ1Y3QgbmRuX0RhdGEgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqbmFtZUNvbXBvbmVudHMsIHNpemVfdCBtYXhOYW1lQ29tcG9uZW50cywgCi0gICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmtleU5hbWVDb21wb25lbnRzLCBzaXplX3QgbWF4S2V5TmFtZUNvbXBvbmVudHMpIAotewotICBuZG5fU2lnbmF0dXJlX2luaXRpYWxpemUoJnNlbGYtPnNpZ25hdHVyZSwga2V5TmFtZUNvbXBvbmVudHMsIG1heEtleU5hbWVDb21wb25lbnRzKTsKLSAgbmRuX05hbWVfaW5pdGlhbGl6ZSgmc2VsZi0+bmFtZSwgbmFtZUNvbXBvbmVudHMsIG1heE5hbWVDb21wb25lbnRzKTsKLSAgbmRuX01ldGFJbmZvX2luaXRpYWxpemUoJnNlbGYtPm1ldGFJbmZvKTsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+Y29udGVudCwgMCwgMCk7Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRhdGEuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwMTNjZi4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRhdGEuYworKysgL2Rldi9udWxsCkBAIC0xLDI0MiArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBEZXJpdmVkIGZyb20gQ29udGVudE9iamVjdC5qcyBieSBNZWtpIENoZXJhb3VpLgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLW5hbWUuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGF0YS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwta2V5LmgiCi0KLXN0YXRpYyBuZG5fRXJyb3IgZW5jb2RlU2lnbmF0dXJlKHN0cnVjdCBuZG5fU2lnbmF0dXJlICpzaWduYXR1cmUsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2RlcikKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduYXR1cmUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICAvLyBUT0RPOiBDaGVjayBpZiBkaWdlc3RBbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgdGhlIGRlZmF1bHQsIGFuZCBza2lwIGl0LCBvdGhlcndpc2UgZW5jb2RlIGl0IGFzIFVEQVRBLgotCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsQmxvYkRUYWdFbGVtZW50KGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19XaXRuZXNzLCAmc2lnbmF0dXJlLT53aXRuZXNzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIC8vIFJlcXVpcmUgYSBzaWduYXR1cmUuCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2lnbmF0dXJlQml0cywgJnNpZ25hdHVyZS0+c2lnbmF0dXJlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAgIAotfQotCi1zdGF0aWMgbmRuX0Vycm9yIGRlY29kZVNpZ25hdHVyZShzdHJ1Y3QgbmRuX1NpZ25hdHVyZSAqc2lnbmF0dXJlLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduYXR1cmUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICAvKiBUT0RPOiBkaWdlc3RBbGdvcml0aG0gYXMgVURBVEEgKi8gc2lnbmF0dXJlLT5kaWdlc3RBbGdvcml0aG0udmFsdWUgPSAwOyBzaWduYXR1cmUtPmRpZ2VzdEFsZ29yaXRobS5sZW5ndGggPSAwOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1dpdG5lc3MsIDAsICZzaWduYXR1cmUtPndpdG5lc3MpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICAvLyBSZXF1aXJlIGEgc2lnbmF0dXJlLgotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1NpZ25hdHVyZUJpdHMsIDAsICZzaWduYXR1cmUtPnNpZ25hdHVyZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudENsb3NlKGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLXN0YXRpYyBuZG5fRXJyb3IgZW5jb2RlU2lnbmVkSW5mbyhzdHJ1Y3QgbmRuX1NpZ25hdHVyZSAqc2lnbmF0dXJlLCBzdHJ1Y3QgbmRuX01ldGFJbmZvICptZXRhSW5mbywgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKQotewotICBpZiAoKGludCltZXRhSW5mby0+dHlwZSA8IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2lnbmVkSW5mbykpKQotICAgIHJldHVybiBlcnJvcjsKLQotICAvLyBUaGlzIHdpbGwgc2tpcCBlbmNvZGluZyBpZiB0aGVyZSBpcyBubyBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QuCi0gIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0KCZzaWduYXR1cmUtPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1RpbWVzdGFtcCwgbWV0YUluZm8tPnRpbWVzdGFtcE1pbGxpc2Vjb25kcykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICghKChpbnQpbWV0YUluZm8tPnR5cGUgPCAwIHx8IG1ldGFJbmZvLT50eXBlID09IG5kbl9Db250ZW50VHlwZV9EQVRBKSkgewotICAgIC8vIE5vdCB0aGUgZGVmYXVsdCBvZiBEQVRBLCBzbyB3ZSBuZWVkIHRvIGVuY29kZSB0aGUgdHlwZS4KLSAgICBzdHJ1Y3QgbmRuX0Jsb2IgdHlwZUJ5dGVzOwotICAgIHR5cGVCeXRlcy5sZW5ndGggPSAzOwotICAgIGlmIChtZXRhSW5mby0+dHlwZSA9PSBuZG5fQ29udGVudFR5cGVfRU5DUikKLSAgICAgIHR5cGVCeXRlcy52YWx1ZSA9ICh1aW50OF90ICopIlx4MTBceEQwXHg5MSI7Ci0gICAgZWxzZSBpZiAobWV0YUluZm8tPnR5cGUgPT0gbmRuX0NvbnRlbnRUeXBlX0dPTkUpCi0gICAgICB0eXBlQnl0ZXMudmFsdWUgPSAodWludDhfdCAqKSJceDE4XHhFM1x4NDQiOwotICAgIGVsc2UgaWYgKG1ldGFJbmZvLT50eXBlID09IG5kbl9Db250ZW50VHlwZV9LRVkpCi0gICAgICB0eXBlQnl0ZXMudmFsdWUgPSAodWludDhfdCAqKSJceDI4XHg0Nlx4M0YiOwotICAgIGVsc2UgaWYgKG1ldGFJbmZvLT50eXBlID09IG5kbl9Db250ZW50VHlwZV9MSU5LKQotICAgICAgdHlwZUJ5dGVzLnZhbHVlID0gKHVpbnQ4X3QgKikiXHgyQ1x4ODNceDRBIjsKLSAgICBlbHNlIGlmIChtZXRhSW5mby0+dHlwZSA9PSBuZG5fQ29udGVudFR5cGVfTkFDSykKLSAgICAgIHR5cGVCeXRlcy52YWx1ZSA9ICh1aW50OF90ICopIlx4MzRceDAwXHg4QSI7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0NvbnRlbnRUeXBlOwotCi0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50KGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19UeXBlLCAmdHlwZUJ5dGVzKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRnJlc2huZXNzU2Vjb25kcywgbWV0YUluZm8tPmZyZXNobmVzc1NlY29uZHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbEJsb2JEVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19GaW5hbEJsb2NrSUQsICZtZXRhSW5mby0+ZmluYWxCbG9ja0lELnZhbHVlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotIAotICAvLyBUaGlzIHdpbGwgc2tpcCBlbmNvZGluZyBpZiB0aGVyZSBpcyBubyBrZXkgbG9jYXRvci4KLSAgaWYgKChlcnJvciA9IG5kbl9lbmNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yKCZzaWduYXR1cmUtPmtleUxvY2F0b3IsIGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2UoZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsgIAotfQotCi1zdGF0aWMgbmRuX0Vycm9yIGRlY29kZVNpZ25lZEluZm8oc3RydWN0IG5kbl9TaWduYXR1cmUgKnNpZ25hdHVyZSwgc3RydWN0IG5kbl9NZXRhSW5mbyAqbWV0YUluZm8sIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2RlcikKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRTdGFydERUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1NpZ25lZEluZm8pKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX2RlY29kZU9wdGlvbmFsQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0KCZzaWduYXR1cmUtPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxUaW1lTWlsbGlzZWNvbmRzRFRhZ0VsZW1lbnQKLSAgICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1RpbWVzdGFtcCwgJm1ldGFJbmZvLT50aW1lc3RhbXBNaWxsaXNlY29uZHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBzdHJ1Y3QgbmRuX0Jsb2IgdHlwZUJ5dGVzOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsQmluYXJ5RFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfVHlwZSwgMCwgJnR5cGVCeXRlcykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKHR5cGVCeXRlcy5sZW5ndGggPT0gMCkKLSAgICAvLyBUaGUgZGVmYXVsdCBUeXBlIGlzIERBVEEuCi0gICAgbWV0YUluZm8tPnR5cGUgPSBuZG5fQ29udGVudFR5cGVfREFUQTsKLSAgZWxzZSBpZiAodHlwZUJ5dGVzLmxlbmd0aCA9PSAzKSB7Ci0gICAgLy8gQWxsIHRoZSByZWNvZ25pemVkIGNvbnRlbnQgdHlwZXMgYXJlIDMgYnl0ZXMuCi0gICAgaWYgKG5kbl9tZW1jbXAodHlwZUJ5dGVzLnZhbHVlLCAodWludDhfdCAqKSJceDBDXHgwNFx4QzAiLCB0eXBlQnl0ZXMubGVuZ3RoKSA9PSAwKQotICAgICAgbWV0YUluZm8tPnR5cGUgPSBuZG5fQ29udGVudFR5cGVfREFUQTsKLSAgICBlbHNlIGlmIChuZG5fbWVtY21wKHR5cGVCeXRlcy52YWx1ZSwgKHVpbnQ4X3QgKikiXHgxMFx4RDBceDkxIiwgdHlwZUJ5dGVzLmxlbmd0aCkgPT0gMCkKLSAgICAgIG1ldGFJbmZvLT50eXBlID0gbmRuX0NvbnRlbnRUeXBlX0VOQ1I7Ci0gICAgZWxzZSBpZiAobmRuX21lbWNtcCh0eXBlQnl0ZXMudmFsdWUsICh1aW50OF90ICopIlx4MThceEUzXHg0NCIsIHR5cGVCeXRlcy5sZW5ndGgpID09IDApCi0gICAgICBtZXRhSW5mby0+dHlwZSA9IG5kbl9Db250ZW50VHlwZV9HT05FOwotICAgIGVsc2UgaWYgKG5kbl9tZW1jbXAodHlwZUJ5dGVzLnZhbHVlLCAodWludDhfdCAqKSJceDI4XHg0Nlx4M0YiLCB0eXBlQnl0ZXMubGVuZ3RoKSA9PSAwKQotICAgICAgbWV0YUluZm8tPnR5cGUgPSBuZG5fQ29udGVudFR5cGVfS0VZOwotICAgIGVsc2UgaWYgKG5kbl9tZW1jbXAodHlwZUJ5dGVzLnZhbHVlLCAodWludDhfdCAqKSJceDJDXHg4M1x4NEEiLCB0eXBlQnl0ZXMubGVuZ3RoKSA9PSAwKQotICAgICAgbWV0YUluZm8tPnR5cGUgPSBuZG5fQ29udGVudFR5cGVfTElOSzsKLSAgICBlbHNlIGlmIChuZG5fbWVtY21wKHR5cGVCeXRlcy52YWx1ZSwgKHVpbnQ4X3QgKikiXHgzNFx4MDBceDhBIiwgdHlwZUJ5dGVzLmxlbmd0aCkgPT0gMCkKLSAgICAgIG1ldGFJbmZvLT50eXBlID0gbmRuX0NvbnRlbnRUeXBlX05BQ0s7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0NvbnRlbnRUeXBlOwotICB9Ci0gIGVsc2UKLSAgICByZXR1cm4gTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fQ29udGVudFR5cGU7Ci0gCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19GcmVzaG5lc3NTZWNvbmRzLCAmbWV0YUluZm8tPmZyZXNobmVzc1NlY29uZHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ZpbmFsQmxvY2tJRCwgMCwgJm1ldGFJbmZvLT5maW5hbEJsb2NrSUQudmFsdWUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVPcHRpb25hbEJpbmFyeVhtbEtleUxvY2F0b3IoJnNpZ25hdHVyZS0+a2V5TG9jYXRvciwgZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudENsb3NlKGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sRGF0YQotICAoc3RydWN0IG5kbl9EYXRhICpkYXRhLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKmVuY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29udGVudE9iamVjdCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBlbmNvZGVTaWduYXR1cmUoJmRhdGEtPnNpZ25hdHVyZSwgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgPSBlbmNvZGVyLT5vZmZzZXQ7Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9lbmNvZGVCaW5hcnlYbWxOYW1lKCZkYXRhLT5uYW1lLCBlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IGVuY29kZVNpZ25lZEluZm8oJmRhdGEtPnNpZ25hdHVyZSwgJmRhdGEtPm1ldGFJbmZvLCBlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29udGVudCwgJmRhdGEtPmNvbnRlbnQpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQgPSBlbmNvZGVyLT5vZmZzZXQ7Ci0KLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sRGF0YQotICAoc3RydWN0IG5kbl9EYXRhICpkYXRhLCBzaXplX3QgKnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uRW5kT2Zmc2V0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Db250ZW50T2JqZWN0KSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduYXR1cmUsICZnb3RFeHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgaWYgKChlcnJvciA9IGRlY29kZVNpZ25hdHVyZSgmZGF0YS0+c2lnbmF0dXJlLCBkZWNvZGVyKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgZWxzZQotICAgIG5kbl9TaWduYXR1cmVfaW5pdGlhbGl6ZSgmZGF0YS0+c2lnbmF0dXJlLCBkYXRhLT5zaWduYXR1cmUua2V5TG9jYXRvci5rZXlOYW1lLmNvbXBvbmVudHMsIGRhdGEtPnNpZ25hdHVyZS5rZXlMb2NhdG9yLmtleU5hbWUubWF4Q29tcG9uZW50cyk7Ci0gIAotICAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0ID0gZGVjb2Rlci0+b2Zmc2V0OwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVCaW5hcnlYbWxOYW1lKCZkYXRhLT5uYW1lLCBkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19TaWduZWRJbmZvLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgIGlmICgoZXJyb3IgPSBkZWNvZGVTaWduZWRJbmZvKCZkYXRhLT5zaWduYXR1cmUsICZkYXRhLT5tZXRhSW5mbywgZGVjb2RlcikpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UKLSAgICBuZG5fTWV0YUluZm9faW5pdGlhbGl6ZSgmZGF0YS0+bWV0YUluZm8pOwotCi0gIC8vIFJlcXVpcmUgYSBDb250ZW50IGVsZW1lbnQsIGJ1dCBzZXQgYWxsb3dOdWxsIHRvIGFsbG93IGEgbWlzc2luZyBCTE9CLgotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50KGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Db250ZW50LCAxLCAmZGF0YS0+Y29udGVudCkpKQotICAgIHJldHVybiBlcnJvcjsgCi0gIAotICAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCA9IGRlY29kZXItPm9mZnNldDsKLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kYXRhLmggYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4NjViYS4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllfWE1MX0RBVEFfSAotI2RlZmluZSBORE5fQklOQVJZX1hNTF9EQVRBX0gKLQotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotI2luY2x1ZGUgIi4uL2RhdGEuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEVuY29kZSB0aGUgZGF0YSBwYWNrZXQgYXMgYmluYXJ5IFhNTC4KLSAqIEBwYXJhbSBkYXRhIFBvaW50ZXIgdG8gdGhlIGRhdGEgb2JqZWN0IHRvIGVuY29kZS4KLSAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGVuY29kaW5nIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNpZ25lZCBwb3J0aW9uLgotICogSWYgeW91IGFyZSBub3QgZW5jb2RpbmcgaW4gb3JkZXIgdG8gc2lnbiwgeW91IGNhbiBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBlbmNvZGluZyBvZiB0aGUgZW5kIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAqIElmIHlvdSBhcmUgbm90IGVuY29kaW5nIGluIG9yZGVyIHRvIHNpZ24sIHlvdSBjYW4gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gKiBAcGFyYW0gZW5jb2RlciBQb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3Qgd2hpY2ggcmVjZWl2ZXMgdGhlIGVuY29kaW5nLiAKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLgotICovCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbERhdGEKLSAgKHN0cnVjdCBuZG5fRGF0YSAqZGF0YSwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKTsKLQotLyoqCi0gKiBEZWNvZGUgdGhlIGRhdGEgcGFja2V0IGFzIGJpbmFyeSBYTUwgYW5kIHNldCB0aGUgZmllbGRzIGluIHRoZSBkYXRhIG9iamVjdC4KLSAqIEBwYXJhbSBkYXRhIFBvaW50ZXIgdG8gdGhlIGRhdGEgb2JqZWN0IHdob3NlIGZpZWxkcyBhcmUgdXBkYXRlZC4KLSAqIEBwYXJhbSBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQgUmV0dXJuIHRoZSBvZmZzZXQgaW4gdGhlIGlucHV0IGJ1ZmZlciBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzaWduZWQgcG9ydGlvbi4KLSAqIElmIHlvdSBhcmUgbm90IGRlY29kaW5nIGluIG9yZGVyIHRvIHZlcmlmeSwgeW91IGNhbiBpZ25vcmUgdGhpcyByZXR1cm5lZCB2YWx1ZS4KLSAqIEBwYXJhbSBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0IFJldHVybiB0aGUgb2Zmc2V0IGluIHRoZSBpbnB1dCBidWZmZXIgb2YgdGhlIGVuZCBvZiB0aGUgc2lnbmVkIHBvcnRpb24uCi0gKiBJZiB5b3UgYXJlIG5vdCBkZWNvZGluZyBpbiBvcmRlciB0byB2ZXJpZnksIHlvdSBjYW4gaWdub3JlIHRoaXMgcmV0dXJuZWQgdmFsdWUuCi0gKiBAcGFyYW0gZGVjb2RlciBQb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3Qgd2hpY2ggaGFzIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aCB0aGUgYnVmZmVyIHRvIGRlY29kZS4gCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxEYXRhCi0gIChzdHJ1Y3QgbmRuX0RhdGEgKmRhdGEsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEwY2U1MS4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDMzNiArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBEZXJpdmVkIGZyb20gQmluYXJ5WE1MRGVjb2Rlci5qcyBieSBNZWtpIENoZXJhb3VpLgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJiaW5hcnkteG1sLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0KLS8qKgotICogUmV0dXJuIHRoZSBvY3RldCBhdCBzZWxmLT5vZmZzZXQsIGNvbnZlcnRpbmcgdG8gdW5zaWduZWQgaW50LiAgSW5jcmVtZW50IHNlbGYtPm9mZnNldC4KLSAqIFRoaXMgZG9lcyBub3QgY2hlY2sgZm9yIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCwgc28gdGhpcyBpcyBjYWxsZWQgInVuc2FmZSIuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHVuc2FmZVJlYWRPY3RldChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYpIAotewotICByZXR1cm4gKHVuc2lnbmVkIGludCkoc2VsZi0+aW5wdXRbc2VsZi0+b2Zmc2V0KytdICYgMHhmZik7ICAKLX0KLQotLyoqCi0gKiBSZXR1cm4gdGhlIG9jdGV0IGF0IHNlbGYtPm9mZnNldCwgY29udmVydGluZyB0byB1bnNpZ25lZCBpbnQuICBEbyBub3QgaW5jcmVtZW50IHNlbGYtPm9mZnNldC4KLSAqIFRoaXMgZG9lcyBub3QgY2hlY2sgZm9yIHJlYWRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCwgc28gdGhpcyBpcyBjYWxsZWQgInVuc2FmZSIuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHVuc2FmZUdldE9jdGV0KHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZikgCi17Ci0gIHJldHVybiAodW5zaWduZWQgaW50KShzZWxmLT5pbnB1dFtzZWxmLT5vZmZzZXRdICYgMHhmZik7ICAKLX0KLQotLyoqCi0gKiBQYXJzZSB0aGUgdmFsdWUgYXMgYSBkZWNpbWFsIHVuc2lnbmVkIGludGVnZXIuICBUaGlzIGRvZXMgbm90IGNoZWNrIGZvciB3aGl0ZXNwYWNlIG9yICsgc2lnbi4KLSAqIElmIHZhbHVlTGVuZ3RoIGlzIDAsIHRoaXMgc3VjY2VlZHMgd2l0aCByZXN1bHRPdXQgMC4KLSAqIEBwYXJhbSB2YWx1ZQotICogQHBhcmFtIHZhbHVlTGVuZ3RoCi0gKiBAcGFyYW0gcmVzdWx0T3V0IG91dHB1dCB0aGUgcGFyc2VkIGludGVnZXIuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGlmIGFuIGVsZW1lbnQgb2YgdmFsdWUgaXMgbm90IGEgZGVjaW1hbCBkaWdpdC4KLSAqLwotc3RhdGljIG5kbl9FcnJvciBwYXJzZVVuc2lnbmVkRGVjaW1hbEludCh1aW50OF90ICp2YWx1ZSwgc2l6ZV90IHZhbHVlTGVuZ3RoLCB1bnNpZ25lZCBpbnQgKnJlc3VsdE91dCkKLXsKLSAgdW5zaWduZWQgaW50IHJlc3VsdCA9IDA7Ci0gIAotICBzaXplX3QgaTsKLSAgZm9yIChpID0gMDsgaSA8IHZhbHVlTGVuZ3RoOyArK2kpIHsKLSAgICB1aW50OF90IGRpZ2l0ID0gdmFsdWVbaV07Ci0gICAgaWYgKCEoZGlnaXQgPj0gJzAnICYmIGRpZ2l0IDw9ICc5JykpCi0gICAgICByZXR1cm4gTkROX0VSUk9SX2VsZW1lbnRfb2ZfdmFsdWVfaXNfbm90X2FfZGVjaW1hbF9kaWdpdDsKLQotICAgIHJlc3VsdCAqPSAxMDsKLSAgICByZXN1bHQgKz0gKHVuc2lnbmVkIGludCkoZGlnaXQgLSAnMCcpOwotICB9Ci0gICAgCi0gICpyZXN1bHRPdXQgPSByZXN1bHQ7Ci0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX2RlY29kZVR5cGVBbmRWYWx1ZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCAqdHlwZSwgdW5zaWduZWQgaW50ICp2YWx1ZU91dCkgCi17Ci0gIHVuc2lnbmVkIGludCB2YWx1ZSA9IDA7Ci0gIGludCBnb3RGaXJzdE9jdGV0ID0gMDsKLSAgCi0gIHdoaWxlICgxKSB7Ci0gICAgaWYgKHNlbGYtPm9mZnNldCA+PSBzZWxmLT5pbnB1dExlbmd0aCkKLSAgICAgIHJldHVybiBORE5fRVJST1JfcmVhZF9wYXN0X3RoZV9lbmRfb2ZfdGhlX2lucHV0OwotICAgIAotICAgIHVuc2lnbmVkIGludCBvY3RldCA9IHVuc2FmZVJlYWRPY3RldChzZWxmKTsKLSAgICAKLSAgICBpZiAoIWdvdEZpcnN0T2N0ZXQpIHsKLSAgICAgIGlmIChvY3RldCA9PSAwKQotICAgICAgICByZXR1cm4gTkROX0VSUk9SX3RoZV9maXJzdF9oZWFkZXJfb2N0ZXRfbWF5X25vdF9iZV96ZXJvOwotICAgICAgCi0gICAgICBnb3RGaXJzdE9jdGV0ID0gMTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG9jdGV0ICYgbmRuX0JpbmFyeVhtbF9UVF9GSU5BTCkgewotICAgICAgLy8gRmluaXNoZWQuCi0gICAgICAqdHlwZSA9IG9jdGV0ICYgbmRuX0JpbmFyeVhtbF9UVF9NQVNLOwotICAgICAgdmFsdWUgPSAodmFsdWUgPDwgbmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9CSVRTKSB8ICgob2N0ZXQgPj4gbmRuX0JpbmFyeVhtbF9UVF9CSVRTKSAmIG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfTUFTSyk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAgdmFsdWUgPSAodmFsdWUgPDwgbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX0JJVFMpIHwgKG9jdGV0ICYgbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX01BU0spOyAgICAKLSAgfQotCi0gICp2YWx1ZU91dCA9IHZhbHVlOwotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZykKLXsKLSAgaWYgKHNlbGYtPm9mZnNldCA9PSBzZWxmLT5wcmV2aW91c2x5UGVla2VkRFRhZ1N0YXJ0T2Zmc2V0KSB7Ci0gICAgLy8gcGVla0RUYWcgYWxyZWFkeSBkZWNvZGVkIHRoaXMgRFRhZy4KLSAgICBpZiAoc2VsZi0+cHJldmlvdXNseVBlZWtlZERUYWcgIT0gZXhwZWN0ZWRUYWcpCi0gICAgICByZXR1cm4gTkROX0VSUk9SX2RpZF9ub3RfZ2V0X3RoZV9leHBlY3RlZF9EVEFHOwotCi0gICAgLy8gRmFzdCBmb3J3YXJkIHBhc3QgdGhlIGhlYWRlci4KLSAgICBzZWxmLT5vZmZzZXQgPSBzZWxmLT5wcmV2aW91c2x5UGVla2VkRFRhZ0VuZE9mZnNldDsKLSAgfQotICBlbHNlIHsKLSAgICBuZG5fRXJyb3IgZXJyb3I7Ci0gICAgdW5zaWduZWQgaW50IHR5cGU7Ci0gICAgdW5zaWduZWQgaW50IHZhbHVlOwotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9kZWNvZGVUeXBlQW5kVmFsdWUoc2VsZiwgJnR5cGUsICZ2YWx1ZSkpKQotICAgICAgcmV0dXJuIGVycm9yOwotCi0gICAgaWYgKHR5cGUgIT0gbmRuX0JpbmFyeVhtbF9EVEFHKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9oZWFkZXJfdHlwZV9pc19ub3RfYV9EVEFHOwotCi0gICAgaWYgKHZhbHVlICE9IGV4cGVjdGVkVGFnKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9kaWRfbm90X2dldF90aGVfZXhwZWN0ZWRfRFRBRzsKLSAgfQotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYpCi17Ci0gIGlmIChzZWxmLT5vZmZzZXQgPj0gc2VsZi0+aW5wdXRMZW5ndGgpCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9yZWFkX3Bhc3RfdGhlX2VuZF9vZl90aGVfaW5wdXQ7Ci0gIAotICBpZiAodW5zYWZlUmVhZE9jdGV0KHNlbGYpICE9IG5kbl9CaW5hcnlYbWxfQ0xPU0UpCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9kaWRfbm90X2dldF90aGVfZXhwZWN0ZWRfZWxlbWVudF9jbG9zZTsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBpbnQgKmdvdEV4cGVjdGVkVGFnKQotewotICBpZiAoc2VsZi0+b2Zmc2V0ID09IHNlbGYtPnByZXZpb3VzbHlQZWVrZWREVGFnU3RhcnRPZmZzZXQpCi0gICAgLy8gV2UgYWxyZWFkeSBkZWNvZGVkIHRoaXMgRFRhZy4KLSAgICAqZ290RXhwZWN0ZWRUYWcgPSAoc2VsZi0+cHJldmlvdXNseVBlZWtlZERUYWcgPT0gZXhwZWN0ZWRUYWcgPyAxIDogMCk7Ci0gIGVsc2UgewotICAgIC8vIERlZmF1bHQgdG8gMC4KLSAgICAqZ290RXhwZWN0ZWRUYWcgPSAwOwotCi0gICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgaXMgYW4gZWxlbWVudCBjbG9zZSAod2hpY2ggY2Fubm90IGJlIHRoZSBleHBlY3RlZCB0YWcpLiAgCi0gICAgaWYgKHNlbGYtPm9mZnNldCA+PSBzZWxmLT5pbnB1dExlbmd0aCkKLSAgICAgIHJldHVybiBORE5fRVJST1JfcmVhZF9wYXN0X3RoZV9lbmRfb2ZfdGhlX2lucHV0OwotICAgIGlmICh1bnNhZmVHZXRPY3RldChzZWxmKSA9PSBuZG5fQmluYXJ5WG1sX0NMT1NFKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotCi0gICAgdW5zaWduZWQgaW50IHR5cGU7Ci0gICAgdW5zaWduZWQgaW50IHZhbHVlOwotICAgIHNpemVfdCBzYXZlT2Zmc2V0ID0gc2VsZi0+b2Zmc2V0OwotICAgIG5kbl9FcnJvciBlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX2RlY29kZVR5cGVBbmRWYWx1ZShzZWxmLCAmdHlwZSwgJnZhbHVlKTsKLSAgICAvLyByZWFkRWxlbWVudFN0YXJ0RFRhZyB3aWxsIHVzZSB0aGlzIHRvIGZhc3QgZm9yd2FyZC4KLSAgICBzZWxmLT5wcmV2aW91c2x5UGVla2VkRFRhZ0VuZE9mZnNldCA9IHNlbGYtPm9mZnNldDsKLSAgICAvLyBSZXN0b3JlIG9mZnNldC4KLSAgICBzZWxmLT5vZmZzZXQgPSBzYXZlT2Zmc2V0OwotCi0gICAgaWYgKGVycm9yKQotICAgICAgcmV0dXJuIGVycm9yOwotCi0gICAgaWYgKHR5cGUgPT0gbmRuX0JpbmFyeVhtbF9EVEFHKSB7Ci0gICAgICBzZWxmLT5wcmV2aW91c2x5UGVla2VkRFRhZ1N0YXJ0T2Zmc2V0ID0gc2F2ZU9mZnNldDsKLSAgICAgIHNlbGYtPnByZXZpb3VzbHlQZWVrZWREVGFnID0gdmFsdWU7Ci0KLSAgICAgIGlmICh2YWx1ZSA9PSBleHBlY3RlZFRhZykKLSAgICAgICAgKmdvdEV4cGVjdGVkVGFnID0gMTsKLSAgICB9Ci0gIH0KLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIGludCBhbGxvd051bGwsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKHNlbGYsIGV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKGFsbG93TnVsbCkgewotICAgIGlmIChzZWxmLT5vZmZzZXQgPj0gc2VsZi0+aW5wdXRMZW5ndGgpCi0gICAgICByZXR1cm4gTkROX0VSUk9SX3JlYWRfcGFzdF90aGVfZW5kX29mX3RoZV9pbnB1dDsKLSAgCi0gICAgaWYgKHVuc2FmZUdldE9jdGV0KHNlbGYpID09IG5kbl9CaW5hcnlYbWxfQ0xPU0UpIHsKLSAgICAgIC8vIFRoZSBiaW5hcnkgaXRlbSBpcyBtaXNzaW5nLCBhbmQgdGhpcyBpcyBhbGxvd2VkLCBzbyByZWFkIHRoZSBlbGVtZW50IGNsb3NlIGFuZCByZXR1cm4gYSBudWxsIHZhbHVlLgotICAgICAgKytzZWxmLT5vZmZzZXQ7Ci0gICAgICB2YWx1ZS0+dmFsdWUgPSAwOwotICAgICAgdmFsdWUtPmxlbmd0aCA9IDA7Ci0gICAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gICAgfQotICB9Ci0gIAotICB1bnNpZ25lZCBpbnQgaXRlbVR5cGU7Ci0gIHVuc2lnbmVkIGludCB1aW50VmFsdWVMZW5ndGg7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9kZWNvZGVUeXBlQW5kVmFsdWUoc2VsZiwgJml0ZW1UeXBlLCAmdWludFZhbHVlTGVuZ3RoKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAvLyBJZ25vcmUgaXRlbVR5cGUuCi0gIHZhbHVlLT52YWx1ZSA9IHNlbGYtPmlucHV0ICsgc2VsZi0+b2Zmc2V0OwotICB2YWx1ZS0+bGVuZ3RoID0gKHNpemVfdCl1aW50VmFsdWVMZW5ndGg7Ci0gIHNlbGYtPm9mZnNldCArPSB2YWx1ZS0+bGVuZ3RoOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2Uoc2VsZikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbEJpbmFyeURUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgaW50IGFsbG93TnVsbCwgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSkKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpbnQgZ290RXhwZWN0ZWRUYWc7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhzZWxmLCBleHBlY3RlZFRhZywgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50KHNlbGYsIGV4cGVjdGVkVGFnLCBhbGxvd051bGwsIHZhbHVlKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgdmFsdWUtPnZhbHVlID0gMDsKLSAgICB2YWx1ZS0+bGVuZ3RoID0gMDsKLSAgfSAgCi0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVURhdGFEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKHNlbGYsIGV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICB1bnNpZ25lZCBpbnQgaXRlbVR5cGU7Ci0gIHVuc2lnbmVkIGludCB1aW50VmFsdWVMZW5ndGg7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9kZWNvZGVUeXBlQW5kVmFsdWUoc2VsZiwgJml0ZW1UeXBlLCAmdWludFZhbHVlTGVuZ3RoKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoaXRlbVR5cGUgIT0gbmRuX0JpbmFyeVhtbF9VREFUQSkKLSAgICByZXR1cm4gTkROX0VSUk9SX2l0ZW1faXNfbm90X1VEQVRBOwotICB2YWx1ZS0+dmFsdWUgPSBzZWxmLT5pbnB1dCArIHNlbGYtPm9mZnNldDsKLSAgdmFsdWUtPmxlbmd0aCA9IHVpbnRWYWx1ZUxlbmd0aDsKLSAgc2VsZi0+b2Zmc2V0ICs9IHZhbHVlLT5sZW5ndGg7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShzZWxmKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVURhdGFEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoc2VsZiwgZXhwZWN0ZWRUYWcsICZnb3RFeHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRVRGF0YURUYWdFbGVtZW50KHNlbGYsIGV4cGVjdGVkVGFnLCB2YWx1ZSkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UgewotICAgIHZhbHVlLT52YWx1ZSA9IDA7Ci0gICAgdmFsdWUtPmxlbmd0aCA9IDA7Ci0gIH0gIAotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFVuc2lnbmVkSW50ZWdlckRUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgdW5zaWduZWQgaW50ICp2YWx1ZSkKLXsKLSAgc3RydWN0IG5kbl9CbG9iIHVkYXRhVmFsdWU7Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRVRGF0YURUYWdFbGVtZW50KHNlbGYsIGV4cGVjdGVkVGFnLCAmdWRhdGFWYWx1ZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBwYXJzZVVuc2lnbmVkRGVjaW1hbEludCh1ZGF0YVZhbHVlLnZhbHVlLCB1ZGF0YVZhbHVlLmxlbmd0aCwgdmFsdWUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIGludCAqdmFsdWUpCi17Ci0gIGludCBnb3RFeHBlY3RlZFRhZzsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoc2VsZiwgZXhwZWN0ZWRUYWcsICZnb3RFeHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgaWYgKCFnb3RFeHBlY3RlZFRhZykgewotICAgICp2YWx1ZSA9IC0xOwotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgfQotCi0gIHVuc2lnbmVkIGludCB1bnNpZ25lZFZhbHVlOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFVuc2lnbmVkSW50ZWdlckRUYWdFbGVtZW50KHNlbGYsIGV4cGVjdGVkVGFnLCAmdW5zaWduZWRWYWx1ZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gICp2YWx1ZSA9IChpbnQpdW5zaWduZWRWYWx1ZTsKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIG5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgKm1pbGxpc2Vjb25kcykKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBzdHJ1Y3QgbmRuX0Jsb2IgYnl0ZXM7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkQmluYXJ5RFRhZ0VsZW1lbnQoc2VsZiwgZXhwZWN0ZWRUYWcsIDAsICZieXRlcykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgKm1pbGxpc2Vjb25kcyA9IDEwMDAuMCAqIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3Vuc2lnbmVkQmlnRW5kaWFuVG9Eb3VibGUoYnl0ZXMudmFsdWUsIGJ5dGVzLmxlbmd0aCkgLyA0MDk2LjA7Ci0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsgIAotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgbmRuX01pbGxpc2Vjb25kc1NpbmNlMTk3MCAqbWlsbGlzZWNvbmRzKQotewotICBpbnQgZ290RXhwZWN0ZWRUYWc7Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKHNlbGYsIGV4cGVjdGVkVGFnLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gIGlmICghZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAqbWlsbGlzZWNvbmRzID0gLTEuMDsKLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gIH0KLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudChzZWxmLCBleHBlY3RlZFRhZywgbWlsbGlzZWNvbmRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1kb3VibGUgbmRuX0JpbmFyeVhtbERlY29kZXJfdW5zaWduZWRCaWdFbmRpYW5Ub0RvdWJsZSh1aW50OF90ICpieXRlcywgc2l6ZV90IGJ5dGVzTGVuZ3RoKSAKLXsKLSAgZG91YmxlIHJlc3VsdCA9IDAuMDsKLSAgc2l6ZV90IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCBieXRlc0xlbmd0aDsgKytpKSB7Ci0gICAgcmVzdWx0ICo9IDI1Ni4wOwotICAgIHJlc3VsdCArPSAoZG91YmxlKWJ5dGVzW2ldOwotICB9Ci0gIAotICByZXR1cm4gcmVzdWx0OwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmggYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZlMTQ2OS4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MREVDT0RFUl9ICi0jZGVmaW5lIE5ETl9CSU5BUllYTUxERUNPREVSX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0jaW5jbHVkZSAiLi4vZXJyb3JzLmgiCi0jaW5jbHVkZSAiLi4vdXRpbC9ibG9iLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyIHsKLSAgdWludDhfdCAqaW5wdXQ7Ci0gIHNpemVfdCBpbnB1dExlbmd0aDsKLSAgc2l6ZV90IG9mZnNldDsKLSAgLy8gcGVla0RUYWcgc2V0cyBhbmQgY2hlY2tzIHRoZXNlLCBhbmQgcmVhZEVsZW1lbnRTdGFydERUYWcgdXNlcyB0aGVtIHRvIGF2b2lkIHJlYWRpbmcgYWdhaW4uCi0gIHNpemVfdCBwcmV2aW91c2x5UGVla2VkRFRhZ1N0YXJ0T2Zmc2V0OwotICBzaXplX3QgcHJldmlvdXNseVBlZWtlZERUYWdFbmRPZmZzZXQ7Ci0gIHVuc2lnbmVkIGludCBwcmV2aW91c2x5UGVla2VkRFRhZzsKLX07Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9pbml0aWFsaXplKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgCi17Ci0gIHNlbGYtPmlucHV0ID0gaW5wdXQ7Ci0gIHNlbGYtPmlucHV0TGVuZ3RoID0gaW5wdXRMZW5ndGg7Ci0gIHNlbGYtPm9mZnNldCA9IDA7Ci0gIHNlbGYtPnByZXZpb3VzbHlQZWVrZWREVGFnU3RhcnRPZmZzZXQgPSAoc2l6ZV90KS0xOwotfQotCi0vKioKLSAqIERlY29kZSB0aGUgaGVhZGVyJ3MgdHlwZSBhbmQgdmFsdWUgZnJvbSBzZWxmJ3MgaW5wdXQgc3RhcnRpbmcgYXQgb2Zmc2V0LiBVcGRhdGUgb2Zmc2V0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdHlwZSBvdXRwdXQgZm9yIHRoZSBoZWFkZXIgdHlwZQotICogQHBhcmFtIHZhbHVlIG91dHB1dCBmb3IgdGhlIGhlYWRlciB2YWx1ZQotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUgZm9yIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBvciBpZiB0aGUgaW5pdGlhbCBieXRlIGlzIHplcm8KLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX2RlY29kZVR5cGVBbmRWYWx1ZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCAqdHlwZSwgdW5zaWduZWQgaW50ICp2YWx1ZSk7Ci0KLS8qKgotICogRGVjb2RlIHRoZSBoZWFkZXIgZnJvbSBzZWxmJ3MgaW5wdXQgc3RhcnRpbmcgYXQgb2Zmc2V0LCBleHBlY3RpbmcgdGhlIHR5cGUgdG8gYmUgRFRBRyBhbmQgdGhlIHZhbHVlIHRvIGJlIGV4cGVjdGVkVGFnLgotICogVXBkYXRlIG9mZnNldC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIGV4cGVjdGVkVGFnIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgRFRBRwotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBhbiBlcnJvciBpZiBub3QgdGhlIGV4cGVjdGVkIHRhZwotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRTdGFydERUYWcoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcpOwotCi0vKioKLSAqIFJlYWQgb25lIGJ5dGUgZnJvbSBzZWxmJ3MgaW5wdXQgc3RhcnRpbmcgYXQgb2Zmc2V0LCBleHBlY3RpbmcgaXQgdG8gYmUgdGhlIGVsZW1lbnQgY2xvc2UuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLCBpbmNsdWRpbmcgYW4gZXJyb3IgaWYgbm90IHRoZSBlbGVtZW50IGNsb3NlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudENsb3NlKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZik7Ci0KLS8qKgotICogRGVjb2RlIHRoZSBoZWFkZXIgZnJvbSBzZWxmJ3MgaW5wdXQgc3RhcnRpbmcgYXQgb2Zmc2V0LCBhbmQgaWYgaXQgaXMgYSBEVEFHIHdoZXJlIHRoZSB2YWx1ZSBpcyB0aGUgZXhwZWN0ZWRUYWcsCi0gKiB0aGVuIHNldCBnb3RFeHBlY3RlZFRhZyB0byAxLCBlbHNlIDAuICBEbyBub3QgdXBkYXRlIG9mZnNldCwgaW5jbHVkaW5nIGlmIHJldHVybmluZyBhbiBlcnJvci4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIGV4cGVjdGVkVGFnIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgRFRBRwotICogQHBhcmFtIGdvdEV4cGVjdGVkVGFnIG91dHB1dCBhIDEgaWYgZ290IHRoZSBleHBlY3RlZCB0YWcsIGVsc2UgMAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUgZm9yIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBpbnB1dAotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIGludCAqZ290RXhwZWN0ZWRUYWcpOwotCi0vKioKLSAqIERlY29kZSB0aGUgaGVhZGVyIGZyb20gc2VsZidzIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldCwgZXhwZWN0aW5nIHRoZSB0eXBlIHRvIGJlIERUQUcgYW5kIHRoZSB2YWx1ZSB0byBiZSBleHBlY3RlZFRhZy4KLSAqIFRoZW4gcmVhZCBvbmUgaXRlbSBvZiBhbnkgdHlwZSAocHJlc3VtYWJseSBCTE9CLCBVREFUQSwgVEFHIG9yIEFUVFIpIGFuZCByZXR1cm4gdGhlIGl0ZW0ncyB2YWx1ZSBhbmQgbGVuZ3RoLgotICogSG93ZXZlciwgaWYgYWxsb3dOdWxsIGlzIDEsIHRoZW4gdGhlIGl0ZW0gbWF5IGJlIGFic2VudC4KLSAqIEZpbmFsbHksIHJlYWQgdGhlIGVsZW1lbnQgY2xvc2UuICBVcGRhdGUgb2Zmc2V0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gZXhwZWN0ZWRUYWcgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBEVEFHCi0gKiBAcGFyYW0gYWxsb3dOdWxsIDEgaWYgdGhlIGJpbmFyeSBpdGVtIG1heSBiZSBtaXNzaW5nCi0gKiBAcGFyYW0gdmFsdWUgb3V0cHV0IGEgcG9pbnRlciB0byB0aGUgYmluYXJ5IGRhdGEgaW5zaWRlIHNlbGYncyBpbnB1dCBidWZmZXIuIEhvd2V2ZXIsIGlmIGFsbG93TnVsbCBpcyAxIGFuZCB0aGUKLSAqIGJpbmFyeSBkYXRhIGl0ZW0gaXMgYWJzZW50LCB0aGVuIHNldCB2YWx1ZSBhbmQgbGVuZ3RoIHRvIDAuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGFuIGVycm9yIGlmIG5vdCB0aGUgZXhwZWN0ZWQgdGFnLCBvciBpZiBhbGxvd051bGwgaXMgMAotICogYW5kIHRoZSBiaW5hcnkgZGF0YSBpcyBhYnNlbnQKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIGludCBhbGxvd051bGwsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpOwotCi0vKioKLSAqIFBlZWsgYXQgdGhlIG5leHQgZWxlbWVudCBhbmQgaWYgaXQgaXMgdGhlIGV4cGVjdGVkVGFnLCBjYWxsIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRCaW5hcnlEVGFnRWxlbWVudC4KLSAqIE90aGVyd2lzZSwgc2V0IHZhbHVlIGFuZCB2YWx1ZUxlbmd0aCB0byAwLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gZXhwZWN0ZWRUYWcgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBEVEFHCi0gKiBAcGFyYW0gYWxsb3dOdWxsIDEgaWYgdGhlIGJpbmFyeSBpdGVtIG1heSBiZSBtaXNzaW5nCi0gKiBAcGFyYW0gdmFsdWUgb3V0cHV0IGEgcG9pbnRlciB0byB0aGUgYmluYXJ5IGRhdGEgaW5zaWRlIHNlbGYncyBpbnB1dCBidWZmZXIuIEhvd2V2ZXIsIGlmIGFsbG93TnVsbCBpcyAxIGFuZCB0aGUKLSAqIGJpbmFyeSBkYXRhIGl0ZW0gaXMgYWJzZW50LCB0aGVuIHNldCB2YWx1ZSBhbmQgbGVuZ3RoIHRvIDAuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGlmIGFsbG93TnVsbCBpcyAwIGFuZCB0aGUgYmluYXJ5IGRhdGEgaXMgYWJzZW50Ci0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxCaW5hcnlEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIGludCBhbGxvd051bGwsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpOwotCi0vKioKLSAqIERlY29kZSB0aGUgaGVhZGVyIGZyb20gc2VsZidzIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldCwgZXhwZWN0aW5nIHRoZSB0eXBlIHRvIGJlIERUQUcgYW5kIHRoZSB2YWx1ZSB0byBiZSBleHBlY3RlZFRhZy4KLSAqIFRoZW4gcmVhZCBvbmUgaXRlbSBleHBlY3RpbmcgaXQgdG8gYmUgdHlwZSBVREFUQSwgYW5kIHJldHVybiB0aGUgaXRlbSdzIHZhbHVlIGFuZCBsZW5ndGguCi0gKiBGaW5hbGx5LCByZWFkIHRoZSBlbGVtZW50IGNsb3NlLiAgVXBkYXRlIG9mZnNldC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIGV4cGVjdGVkVGFnIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgRFRBRwotICogQHBhcmFtIHZhbHVlIG91dHB1dCBhIHBvaW50ZXIgdG8gdGhlIGJpbmFyeSBkYXRhIGluc2lkZSBzZWxmJ3MgaW5wdXQgYnVmZmVyLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUsIGluY2x1ZGluZyBhbiBlcnJvciBpZiBub3QgdGhlIGV4cGVjdGVkIHRhZywgb3IgaWYgdGhlIGl0ZW0gaXMgbm90IFVEQVRBLgotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZFVEYXRhRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKTsKLQotLyoqCi0gKiBQZWVrIGF0IHRoZSBuZXh0IGVsZW1lbnQgYW5kIGlmIGl0IGlzIHRoZSBleHBlY3RlZFRhZywgY2FsbCBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVURhdGFEVGFnRWxlbWVudC4KLSAqIE90aGVyd2lzZSwgc2V0IHZhbHVlIGFuZCB2YWx1ZUxlbmd0aCB0byAwLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gZXhwZWN0ZWRUYWcgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBEVEFHCi0gKiBAcGFyYW0gdmFsdWUgb3V0cHV0IGEgcG9pbnRlciB0byB0aGUgYmluYXJ5IGRhdGEgaW5zaWRlIHNlbGYncyBpbnB1dCBidWZmZXIuIEhvd2V2ZXIsIGlmIGFsbG93TnVsbCBpcyAxIGFuZCB0aGUKLSAqIGJpbmFyeSBkYXRhIGl0ZW0gaXMgYWJzZW50LCB0aGVuIHNldCB2YWx1ZSBhbmQgbGVuZ3RoIHRvIDAuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbFVEYXRhRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKTsKLQotLyoqCi0gKiBEZWNvZGUgdGhlIGhlYWRlciBmcm9tIHNlbGYncyBpbnB1dCBzdGFydGluZyBhdCBvZmZzZXQsIGV4cGVjdGluZyB0aGUgdHlwZSB0byBiZSBEVEFHIGFuZCB0aGUgdmFsdWUgdG8gYmUgZXhwZWN0ZWRUYWcuCi0gKiBUaGVuIHJlYWQgb25lIGl0ZW0gZXhwZWN0aW5nIGl0IHRvIGJlIHR5cGUgVURBVEEsIHBhcnNlIGl0IGFzIGFuIHVuc2lnbmVkIGRlY2ltYWwgaW50ZWdlciBhbmQgcmV0dXJuIHRoZSBpbnRlZ2VyLgotICogRmluYWxseSwgcmVhZCB0aGUgZWxlbWVudCBjbG9zZS4gIFVwZGF0ZSBvZmZzZXQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAqIEBwYXJhbSB2YWx1ZSBvdXRwdXQgdGhlIHVuc2lnbmVkIGludGVnZXIKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLCBpbmNsdWRpbmcgYW4gZXJyb3IgaWYgbm90IHRoZSBleHBlY3RlZCB0YWcsIG9yIGlmIHRoZSBpdGVtIGlzIG5vdCBVREFUQSwKLSAqIG9yIGNhbid0IHBhcnNlIHRoZSBpbnRlZ2VyCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IGV4cGVjdGVkVGFnLCB1bnNpZ25lZCBpbnQgKnZhbHVlKTsKLQotLyoqCi0gKiBQZWVrIGF0IHRoZSBuZXh0IGVsZW1lbnQsIGFuZCBpZiBpdCBoYXMgdGhlIGV4cGVjdGVkVGFnIHRoZW4gY2FsbCBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQuCi0gKiBPdGhlcndpc2UsIHNldCB2YWx1ZSB0byAtMS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIGV4cGVjdGVkVGFnIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgRFRBRwotICogQHBhcmFtIHZhbHVlIG91dHB1dCB0aGUgdW5zaWduZWQgaW50ZWdlciBjYXN0IHRvIGludCwgb3IgLTEgaWYgdGhlIG5leHQgZWxlbWVudCBkb2Vzbid0IGhhdmUgZXhwZWN0ZWRUYWcuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGFuIGVycm9yIGlmIHRoZSBpdGVtIGlzIG5vdCBVREFUQSwKLSAqIG9yIGNhbid0IHBhcnNlIHRoZSBpbnRlZ2VyCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIGludCAqdmFsdWUpOwotCi0vKioKLSAqIERlY29kZSB0aGUgaGVhZGVyIGZyb20gc2VsZidzIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldCwgZXhwZWN0aW5nIHRoZSB0eXBlIHRvIGJlIERUQUcgYW5kIHRoZSB2YWx1ZSB0byBiZSBleHBlY3RlZFRhZy4KLSAqIFRoZW4gcmVhZCBvbmUgaXRlbSwgcGFyc2UgaXQgYXMgYW4gdW5zaWduZWQgYmlnIGVuZGlhbiBpbnRlZ2VyIGluIDQwOTYgdGlja3MgcGVyIHNlY29uZCwgYW5kIGNvbnZlcnQgaXQgdG8gbWlsbGlzZWNvbmRzLgotICogRmluYWxseSwgcmVhZCB0aGUgZWxlbWVudCBjbG9zZS4gIFVwZGF0ZSBvZmZzZXQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAqIEBwYXJhbSBtaWxsaXNlY29uZHMgb3V0cHV0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGFuIGVycm9yIGlmIG5vdCB0aGUgZXhwZWN0ZWQgdGFnCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCBleHBlY3RlZFRhZywgbmRuX01pbGxpc2Vjb25kc1NpbmNlMTk3MCAqbWlsbGlzZWNvbmRzKTsKLQotLyoqCi0gKiBQZWVrIGF0IHRoZSBuZXh0IGVsZW1lbnQsIGFuZCBpZiBpdCBoYXMgdGhlIGV4cGVjdGVkVGFnIHRoZW4gY2FsbCBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50LgotICogT3RoZXJ3aXNlLCBzZXQgdmFsdWUgdG8gLTEuMCAuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAqIEBwYXJhbSBtaWxsaXNlY29uZHMgb3V0cHV0IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCBvciAtMS4wIGlmIHRoZSBuZXh0IGVsZW1lbnQgZG9lc24ndCBoYXZlIGV4cGVjdGVkVGFnLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbFRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcsIG5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgKm1pbGxpc2Vjb25kcyk7Ci0KLS8qKgotICogSW50ZXJwcmV0IHRoZSBieXRlcyBhcyBhbiB1bnNpZ25lZCBiaWcgZW5kaWFuIGludGVnZXIgYW5kIGNvbnZlcnQgdG8gYSBkb3VibGUuIERvbid0IGNoZWNrIGZvciBvdmVyZmxvdy4KLSAqIFdlIHVzZSBhIGRvdWJsZSBiZWNhdXNlIGl0IGlzIGxhcmdlIGVub3VnaCB0byByZXByZXNlbnQgTkROIHRpbWUgKDQwOTYgdGlja3MgcGVyIHNlY29uZCBzaW5jZSAxOTcwKS4KLSAqIEBwYXJhbSBieXRlcyBwb2ludGVyIHRvIHRoZSBhcnJheSBvZiBieXRlcwotICogQHBhcmFtIGJ5dGVzTGVuZ3RoIHRoZSBsZW5ndGggb2YgYnl0ZXMKLSAqIEByZXR1cm4gdGhlIHJlc3VsdAotICovCi1kb3VibGUgbmRuX0JpbmFyeVhtbERlY29kZXJfdW5zaWduZWRCaWdFbmRpYW5Ub0RvdWJsZSh1aW50OF90ICpieXRlcywgc2l6ZV90IGJ5dGVzTGVuZ3RoKTsgCi0KLS8qKgotICogU2V0IHRoZSBvZmZzZXQgaW50byB0aGUgaW5wdXQsIHVzZWQgZm9yIHRoZSBuZXh0IHJlYWQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBvZmZzZXQgdGhlIG5ldyBvZmZzZXQKLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9CaW5hcnlYbWxEZWNvZGVyX3NlZWsoc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpzZWxmLCBzaXplX3Qgb2Zmc2V0KSAKLXsKLSAgc2VsZi0+b2Zmc2V0ID0gb2Zmc2V0OwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZWxlbWVudC1yZWFkZXIuYyBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZWxlbWVudC1yZWFkZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUwYTk3OC4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVsZW1lbnQtcmVhZGVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImJpbmFyeS14bWwtZWxlbWVudC1yZWFkZXIuaCIKLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyX29uUmVjZWl2ZWREYXRhCi0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVsZW1lbnRSZWFkZXIgKnNlbGYsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQotewotICAvLyBQcm9jZXNzIG11bHRpcGxlIG9iamVjdHMgaW4gdGhlIGRhdGEuCi0gIHdoaWxlKDEpIHsKLSAgICAvLyBTY2FuIHRoZSBpbnB1dCB0byBjaGVjayBpZiBhIHdob2xlIGJpbmFyeSBYTUwgb2JqZWN0IGhhcyBiZWVuIHJlYWQuCi0gICAgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfc2Vlaygmc2VsZi0+c3RydWN0dXJlRGVjb2RlciwgMCk7Ci0gICAgCi0gICAgbmRuX0Vycm9yIGVycm9yOwotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9maW5kRWxlbWVudEVuZCgmc2VsZi0+c3RydWN0dXJlRGVjb2RlciwgZGF0YSwgZGF0YUxlbmd0aCkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICAgIGlmIChzZWxmLT5zdHJ1Y3R1cmVEZWNvZGVyLmdvdEVsZW1lbnRFbmQpIHsKLSAgICAgIC8vIEdvdCB0aGUgcmVtYWluZGVyIG9mIGFuIGVsZW1lbnQuICBSZXBvcnQgdG8gdGhlIGNhbGxlci4KLSAgICAgIGlmIChzZWxmLT51c2VQYXJ0aWFsRGF0YSkgewotICAgICAgICAvLyBXZSBoYXZlIHBhcnRpYWwgZGF0YSBmcm9tIGEgcHJldmlvdXMgY2FsbCwgc28gYXBwZW5kIHRoaXMgZGF0YSBhbmQgcG9pbnQgdG8gcGFydGlhbERhdGEuCi0gICAgICAgIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfc2V0KCZzZWxmLT5wYXJ0aWFsRGF0YSwgZGF0YSwgc2VsZi0+c3RydWN0dXJlRGVjb2Rlci5vZmZzZXQsIHNlbGYtPnBhcnRpYWxEYXRhTGVuZ3RoKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICBzZWxmLT5wYXJ0aWFsRGF0YUxlbmd0aCArPSBkYXRhTGVuZ3RoOwotICAgICAgICAgICAgICAgIAotICAgICAgICAoKnNlbGYtPmVsZW1lbnRMaXN0ZW5lci0+b25SZWNlaXZlZEVsZW1lbnQpKHNlbGYtPmVsZW1lbnRMaXN0ZW5lciwgc2VsZi0+cGFydGlhbERhdGEuYXJyYXksIHNlbGYtPnBhcnRpYWxEYXRhTGVuZ3RoKTsKLSAgICAgICAgLy8gQXNzdW1lIHdlIGRvbid0IG5lZWQgdG8gdXNlIHBhcnRpYWxEYXRhIGFueW1vcmUgdW50aWwgbmVlZGVkLgotICAgICAgICBzZWxmLT51c2VQYXJ0aWFsRGF0YSA9IDA7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIC8vIFdlIGFyZSBub3QgdXNpbmcgcGFydGlhbERhdGEsIHNvIGp1c3QgcG9pbnQgdG8gdGhlIGlucHV0IGRhdGEgYnVmZmVyLgotICAgICAgICAoKnNlbGYtPmVsZW1lbnRMaXN0ZW5lci0+b25SZWNlaXZlZEVsZW1lbnQpKHNlbGYtPmVsZW1lbnRMaXN0ZW5lciwgZGF0YSwgc2VsZi0+c3RydWN0dXJlRGVjb2Rlci5vZmZzZXQpOwotICAgICAgICAKLSAgICAgIC8vIE5lZWQgdG8gcmVhZCBhIG5ldyBvYmplY3QuCi0gICAgICBkYXRhICs9IHNlbGYtPnN0cnVjdHVyZURlY29kZXIub2Zmc2V0OwotICAgICAgZGF0YUxlbmd0aCAtPSBzZWxmLT5zdHJ1Y3R1cmVEZWNvZGVyLm9mZnNldDsKLSAgICAgIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX2luaXRpYWxpemUoJnNlbGYtPnN0cnVjdHVyZURlY29kZXIpOwotICAgICAgaWYgKGRhdGFMZW5ndGggPT0gMCkKLSAgICAgICAgLy8gTm8gbW9yZSBkYXRhIGluIHRoZSBwYWNrZXQuCi0gICAgICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgICAgICAgICAgIAotICAgICAgLy8gZWxzZSBsb29wIGJhY2sgdG8gZGVjb2RlLgotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIC8vIFNhdmUgcmVtYWluaW5nIGRhdGEgZm9yIGEgbGF0ZXIgY2FsbC4KLSAgICAgIGlmICghc2VsZi0+dXNlUGFydGlhbERhdGEpIHsKLSAgICAgICAgc2VsZi0+dXNlUGFydGlhbERhdGEgPSAxOwotICAgICAgICBzZWxmLT5wYXJ0aWFsRGF0YUxlbmd0aCA9IDA7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfc2V0KCZzZWxmLT5wYXJ0aWFsRGF0YSwgZGF0YSwgZGF0YUxlbmd0aCwgc2VsZi0+cGFydGlhbERhdGFMZW5ndGgpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgc2VsZi0+cGFydGlhbERhdGFMZW5ndGggKz0gZGF0YUxlbmd0aDsKLSAgICAgIAotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAgIH0KLSAgfSAgICAgIAotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbGVtZW50LXJlYWRlci5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbGVtZW50LXJlYWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTRmMzk3Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZWxlbWVudC1yZWFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllfWE1MX0VMRU1FTlRfUkVBREVSX0gKLSNkZWZpbmUgTkROX0JJTkFSWV9YTUxfRUxFTUVOVF9SRUFERVJfSAotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy9lbmNvZGluZy9lbGVtZW50LWxpc3RlbmVyLmg+Ci0jaW5jbHVkZSAiLi4vZXJyb3JzLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5oIgotI2luY2x1ZGUgIi4uL3V0aWwvZHluYW1pYy11aW50OC1hcnJheS5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0gIAotLyoqCi0gKiBBIEJpbmFyeVhtbEVsZW1lbnRSZWFkZXIgbGV0cyB5b3UgY2FsbCBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlcl9vblJlY2VpdmVkRGF0YSBtdWx0aXBsZSB0aW1lcyB3aGljaCB1c2VzIGFuCi0gKiBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciB0byBkZXRlY3QgdGhlIGVuZCBvZiBhIGJpbmFyeSBYTUwgZWxlbWVudCBhbmQgY2FsbHMKLSAqICgqZWxlbWVudExpc3RlbmVyLT5vblJlY2VpdmVkRWxlbWVudCkoZWxlbWVudCwgZWxlbWVudExlbmd0aCkgd2l0aCB0aGUgZWxlbWVudC4gCi0gKiBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgY2FsbCB0byBvblJlY2VpdmVkRGF0YSBtYXkgY29udGFpbiBtdWx0aXBsZSBlbGVtZW50cy4KLSAqLwotc3RydWN0IG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyIHsKLSAgc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKmVsZW1lbnRMaXN0ZW5lcjsKLSAgc3RydWN0IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyIHN0cnVjdHVyZURlY29kZXI7Ci0gIGludCB1c2VQYXJ0aWFsRGF0YTsKLSAgc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSBwYXJ0aWFsRGF0YTsKLSAgc2l6ZV90IHBhcnRpYWxEYXRhTGVuZ3RoOwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIGFuIG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyIHN0cnVjdCB3aXRoIHRoZSBlbGVtZW50TGlzdGVuZXIgYW5kIGEgYnVmZmVyIGZvciBzYXZpbmcgcGFydGlhbCBkYXRhLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVsZW1lbnRSZWFkZXIgc3RydWN0Ci0gKiBAcGFyYW0gZWxlbWVudExpc3RlbmVyIHBvaW50ZXIgdG8gdGhlIG5kbl9FbGVtZW50TGlzdGVuZXIgdXNlZCBieSBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlcl9vblJlY2VpdmVkRGF0YS4KLSAqIEBwYXJhbSBidWZmZXIgdGhlIGFsbG9jYXRlZCBidWZmZXIuICBJZiByZWFsbG9jRnVuY3Rpb24gaXMgbnVsbCwgdGhpcyBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvIHNhdmUgYSBmdWxsIGVsZW1lbnQsIHBlcmhhcHMgODAwMCBieXRlcy4KLSAqIEBwYXJhbSBidWZmZXJMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyCi0gKiBAcGFyYW0gcmVhbGxvY0Z1bmN0aW9uIHNlZSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoLiAgVGhpcyBtYXkgYmUgMC4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyX2luaXRpYWxpemUKLSAgKHN0cnVjdCBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlciAqc2VsZiwgc3RydWN0IG5kbl9FbGVtZW50TGlzdGVuZXIgKmVsZW1lbnRMaXN0ZW5lciwKLSAgIHVpbnQ4X3QgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgdWludDhfdCAqICgqcmVhbGxvY0Z1bmN0aW9uKShzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCB1aW50OF90ICosIHNpemVfdCkpCi17Ci0gIHNlbGYtPmVsZW1lbnRMaXN0ZW5lciA9IGVsZW1lbnRMaXN0ZW5lcjsKLSAgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfaW5pdGlhbGl6ZSgmc2VsZi0+c3RydWN0dXJlRGVjb2Rlcik7Ci0gIHNlbGYtPnVzZVBhcnRpYWxEYXRhID0gMDsKLSAgbmRuX0R5bmFtaWNVSW50OEFycmF5X2luaXRpYWxpemUoJnNlbGYtPnBhcnRpYWxEYXRhLCBidWZmZXIsIGJ1ZmZlckxlbmd0aCwgcmVhbGxvY0Z1bmN0aW9uKTsKLX0KLQotLyoqCi0gKiBDb250aW51ZSB0byByZWFkIGJpbmFyeSBYTUwgZGF0YSB1bnRpbCB0aGUgZW5kIG9mIGFuIGVsZW1lbnQsIHRoZW4gY2FsbCAoKmVsZW1lbnRMaXN0ZW5lci0+b25SZWNlaXZlZEVsZW1lbnQpKGVsZW1lbnQsIGVsZW1lbnRMZW5ndGgpLgotICogVGhlIGJ1ZmZlciBwYXNzZWQgdG8gb25SZWNlaXZlZEVsZW1lbnQgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBjYWxsLiAgSWYgeW91IG5lZWQgdGhlIGRhdGEgbGF0ZXIsIHlvdSBtdXN0IGNvcHkuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRWxlbWVudFJlYWRlciBzdHJ1Y3QKLSAqIEBwYXJhbSBkYXRhIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aXRoIHRoZSBiaW5hcnkgWE1MIGJ5dGVzCi0gKiBAcGFyYW0gZGF0YUxlbmd0aCBsZW5ndGggb2YgZGF0YQotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbGVtZW50UmVhZGVyX29uUmVjZWl2ZWREYXRhCi0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVsZW1lbnRSZWFkZXIgKnNlbGYsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuYyBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZW5jb2Rlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjdjYmJjLi4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZW5jb2Rlci5jCisrKyAvZGV2L251bGwKQEAgLTEsMzU4ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIERlcml2ZWQgZnJvbSBCaW5hcnlYTUxFbmNvZGVyLmpzIGJ5IE1la2kgQ2hlcmFvdWkuCi0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlICIuLi91dGlsL25kbl9tZW1vcnkuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0KLWVudW0gewotICBFTkNPRElOR19MSU1JVF8xX0JZVEUgPSAoKDEgPDwgbmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9CSVRTKSAtIDEpLAotICBFTkNPRElOR19MSU1JVF8yX0JZVEVTID0gKCgxIDw8IChuZG5fQmluYXJ5WG1sX1RUX1ZBTFVFX0JJVFMgKyBuZG5fQmluYXJ5WG1sX1JFR1VMQVJfVkFMVUVfQklUUykpIC0gMSksCi0gIEVOQ09ESU5HX0xJTUlUXzNfQllURVMgPSAoKDEgPDwgKG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfQklUUyArIDIgKiBuZG5fQmluYXJ5WG1sX1JFR1VMQVJfVkFMVUVfQklUUykpIC0gMSkKLX07Ci0KLS8qKgotICogQ2FsbCBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGlzIGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQsIGFuZCBjb3B5Ci0gKiBhcnJheSB0byB0aGUgb3V0cHV0LiAgVGhpcyBkb2VzIG5vdCB3cml0ZSBhIGhlYWRlci4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIGFycmF5IHRoZSBhcnJheSB0byBjb3B5Ci0gKiBAcGFyYW0gYXJyYXlMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLXN0YXRpYyBuZG5fRXJyb3Igd3JpdGVBcnJheShzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVpbnQ4X3QgKmFycmF5LCBzaXplX3QgYXJyYXlMZW5ndGgpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGgoc2VsZi0+b3V0cHV0LCBzZWxmLT5vZmZzZXQgKyBhcnJheUxlbmd0aCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIG5kbl9tZW1jcHkoc2VsZi0+b3V0cHV0LT5hcnJheSArIHNlbGYtPm9mZnNldCwgYXJyYXksIGFycmF5TGVuZ3RoKTsKLSAgc2VsZi0+b2Zmc2V0ICs9IGFycmF5TGVuZ3RoOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi0vKioKLSAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGVuY29kZSBhIGhlYWRlciBvZiB2YWx1ZSB4LgotICovCi1zdGF0aWMgc2l6ZV90IGdldE5IZWFkZXJFbmNvZGluZ0J5dGVzKHVuc2lnbmVkIGludCB4KSAKLXsKLSAgLy8gRG8gYSBxdWljayBjaGVjayBmb3IgcHJlLWNvbXBpbGVkIHJlc3VsdHMuCi0gIGlmICh4IDw9IEVOQ09ESU5HX0xJTUlUXzFfQllURSkgCi0gICAgcmV0dXJuIDE7Ci0gIGlmICh4IDw9IEVOQ09ESU5HX0xJTUlUXzJfQllURVMpIAotICAgIHJldHVybiAyOwotICBpZiAoeCA8PSBFTkNPRElOR19MSU1JVF8zX0JZVEVTKSAKLSAgICByZXR1cm4gMzsKLSAgCi0gIHNpemVfdCBuQnl0ZXMgPSAxOwotICAKLSAgLy8gTGFzdCBieXRlIGdpdmVzIHlvdSBUVF9WQUxVRV9CSVRTLgotICAvLyBSZW1haW5kZXIgZWFjaCBnaXZlcyB5b3UgUkVHVUxBUl9WQUxVRV9CSVRTLgotICB4ID4+PSBuZG5fQmluYXJ5WG1sX1RUX1ZBTFVFX0JJVFM7Ci0gIHdoaWxlICh4ICE9IDApIHsKLSAgICArK25CeXRlczsKLSAgICB4ID4+PSBuZG5fQmluYXJ5WG1sX1JFR1VMQVJfVkFMVUVfQklUUzsKLSAgfQotICAKLSAgcmV0dXJuIG5CeXRlczsKLX0KLQotLyoqCi0gKiBSZXZlcnNlIHRoZSBsZW5ndGggYnl0ZXMgaW4gYXJyYXkuCi0gKiBAcGFyYW0gYXJyYXkKLSAqIEBwYXJhbSBsZW5ndGgKLSAqLwotc3RhdGljIHZvaWQgcmV2ZXJzZSh1aW50OF90ICphcnJheSwgc2l6ZV90IGxlbmd0aCkgCi17Ci0gIGlmIChsZW5ndGggPT0gMCkKLSAgICByZXR1cm47Ci0gIAotICB1aW50OF90ICpsZWZ0ID0gYXJyYXk7Ci0gIHVpbnQ4X3QgKnJpZ2h0ID0gYXJyYXkgKyBsZW5ndGggLSAxOwotICB3aGlsZSAobGVmdCA8IHJpZ2h0KSB7Ci0gICAgLy8gU3dhcC4KLSAgICB1aW50OF90IHRlbXAgPSAqbGVmdDsKLSAgICAqbGVmdCA9ICpyaWdodDsKLSAgICAqcmlnaHQgPSB0ZW1wOwotICAgIAotICAgICsrbGVmdDsKLSAgICAtLXJpZ2h0OwotICB9Ci19Ci0KLS8qKgotICogV3JpdGUgeCBhcyBhbiB1bnNpZ25lZCBkZWNpbWFsIGludGVnZXIgdG8gdGhlIG91dHB1dCB3aXRoIHRoZSBkaWdpdHMgaW4gcmV2ZXJzZSBvcmRlciwgdXNpbmcgbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aC4KLSAqIFRoaXMgZG9lcyBub3Qgd3JpdGUgYSBoZWFkZXIuCi0gKiBXZSBlbmNvZGUgaW4gcmV2ZXJzZSBvcmRlciwgYmVjYXVzZSB0aGlzIGlzIHRoZSBuYXR1cmFsIHdheSB0byBlbmNvZGUgdGhlIGRpZ2l0cywgYW5kIHRoZSBjYWxsZXIgY2FuIHJldmVyc2UgYXMgbmVlZGVkLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0geCB0aGUgdW5zaWduZWQgaW50IHRvIHdyaXRlCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1zdGF0aWMgbmRuX0Vycm9yIGVuY29kZVJldmVyc2VkVW5zaWduZWREZWNpbWFsSW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHgpIAotewotICB3aGlsZSAoMSkgewotICAgIG5kbl9FcnJvciBlcnJvcjsKLSAgICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aChzZWxmLT5vdXRwdXQsIHNlbGYtPm9mZnNldCArIDEpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgICBzZWxmLT5vdXRwdXQtPmFycmF5W3NlbGYtPm9mZnNldCsrXSA9ICh1aW50OF90KSh4ICUgMTAgKyAnMCcpOwotICAgIHggLz0gMTA7Ci0gICAgCi0gICAgaWYgKHggPT0gMCkKLSAgICAgIGJyZWFrOwotICB9Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLS8qKgotICogUmV2ZXJzZSB0aGUgYnVmZmVyIGluIHNlbGYtPm91dHB1dC0+YXJyYXkgZnJvbSBzdGFydE9mZnNldCB0byB0aGUgY3VycmVudCBvZmZzZXQsIHRoZW4gc2hpZnQgaXQgcmlnaHQgYnkgdGhlIGFtb3VudCAKLSAqIG5lZWRlZCB0byBwcmVmaXggYSBoZWFkZXIgd2l0aCB0eXBlLCB0aGVuIGVuY29kZSB0aGUgaGVhZGVyIGF0IHN0YXJ0T2Zmc2V0LgotICogV2UgcmV2ZXJzZSBhbmQgc2hpZnQgaW4gdGhlIHNhbWUgZnVuY3Rpb24gdG8gYXZvaWQgdW5uZWNlc3NhcnkgY29weWluZyBpZiB3ZSBmaXJzdCByZXZlcnNlIHRoZW4gc2hpZnQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBzdGFydE9mZnNldCB0aGUgb2Zmc2V0IGluIHNlbGYtPm91dHB1dC0+YXJyYXkgb2YgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgdG8gc2hpZnQgcmlnaHQKLSAqIEBwYXJhbSB0eXBlIHRoZSBoZWFkZXIgdHlwZQotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotc3RhdGljIG5kbl9FcnJvciByZXZlcnNlQnVmZmVyQW5kSW5zZXJ0SGVhZGVyCi0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHNpemVfdCBzdGFydE9mZnNldCwgdW5zaWduZWQgaW50IHR5cGUpCi17Ci0gIHNpemVfdCBuQnVmZmVyQnl0ZXMgPSBzZWxmLT5vZmZzZXQgLSBzdGFydE9mZnNldDsKLSAgc2l6ZV90IG5IZWFkZXJCeXRlcyA9IGdldE5IZWFkZXJFbmNvZGluZ0J5dGVzKG5CdWZmZXJCeXRlcyk7Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGgoc2VsZi0+b3V0cHV0LCBzZWxmLT5vZmZzZXQgKyBuSGVhZGVyQnl0ZXMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICAvLyBUbyByZXZlcnNlIGFuZCBzaGlmdCBhdCB0aGUgc2FtZSB0aW1lLCB3ZSBmaXJzdCBzaGlmdCBuSGVhZGVyQnl0ZXMgdG8gdGhlIGRlc3RpbmF0aW9uIHdoaWxlIHJldmVyc2luZywKLSAgLy8gICB0aGVuIHJldmVyc2UgdGhlIHJlbWFpbmluZyBieXRlcyBpbiBwbGFjZS4KLSAgdWludDhfdCAqZnJvbSA9IHNlbGYtPm91dHB1dC0+YXJyYXkgKyBzdGFydE9mZnNldDsKLSAgdWludDhfdCAqZnJvbUVuZCA9IGZyb20gKyBuSGVhZGVyQnl0ZXM7Ci0gIHVpbnQ4X3QgKnRvID0gc2VsZi0+b3V0cHV0LT5hcnJheSArIHN0YXJ0T2Zmc2V0ICsgbkJ1ZmZlckJ5dGVzICsgbkhlYWRlckJ5dGVzIC0gMTsKLSAgd2hpbGUgKGZyb20gPCBmcm9tRW5kKQotICAgICoodG8tLSkgPSAqKGZyb20rKyk7Ci0gIC8vIFJldmVyc2UgdGhlIHJlbWFpbmluZyBieXRlcyBpbiBwbGFjZSAoaWYgYW55KS4KLSAgaWYgKG5CdWZmZXJCeXRlcyA+IG5IZWFkZXJCeXRlcykKLSAgICByZXZlcnNlKHNlbGYtPm91dHB1dC0+YXJyYXkgKyBzdGFydE9mZnNldCArIG5IZWFkZXJCeXRlcywgbkJ1ZmZlckJ5dGVzIC0gbkhlYWRlckJ5dGVzKTsKLSAgCi0gIC8vIE92ZXJyaWRlIHRoZSBvZmZzZXQgdG8gZm9yY2UgZW5jb2RlVHlwZUFuZFZhbHVlIHRvIGVuY29kZSBhdCBzdGFydE9mZnNldCwgdGhlbiBmaXggdGhlIG9mZnNldC4KLSAgc2VsZi0+b2Zmc2V0ID0gc3RhcnRPZmZzZXQ7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9lbmNvZGVUeXBlQW5kVmFsdWUoc2VsZiwgdHlwZSwgbkJ1ZmZlckJ5dGVzKSkpCi0gICAgLy8gV2UgZG9uJ3QgcmVhbGx5IGV4cGVjdCB0byBnZXQgYW4gZXJyb3IsIHNpbmNlIHdlIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHRoZSBsZW5ndGguCi0gICAgcmV0dXJuIGVycm9yOwotICBzZWxmLT5vZmZzZXQgPSBzdGFydE9mZnNldCArIG5IZWFkZXJCeXRlcyArIG5CdWZmZXJCeXRlczsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotLyoqCi0gKiBTcGxpdCB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgeCwgcm91bmRlZCB0byBhbiBpbnRlZ2VyIGludG8gMzIgYml0IHVuc2lnbmVkIGludGVnZXJzIGhpMzIgYW5kIGxvMzIuCi0gKiBXZSBuZWVkIHRoaXMgYmVjYXVzZSBub3QgYWxsIEMgY29tcGlsZXJzIHN1cHBvcnQgNjQgYml0IGxvbmcgbG9uZyBpbnRlZ2Vycywgc28gd2UgY2FycnkgYXJvdW5kCi0gKiBhIGhpZ2ggcHJlY2lzaW9uIHZhbHVlIGFzIGEgZG91YmxlLCB3aGljaCB3ZSBhc3N1bWUgaGFzIG1vcmUgdGhhbiAzMiBiaXRzLgotICogQnV0IHdlIHdhbnQgdG8gZG8gYml0LXdpc2Ugb3BlcmF0aW9ucyBvbiBpbnRlZ2Vycy4KLSAqIEBwYXJhbSB4IHRoZSBkb3VibGUgdmFsdWUKLSAqIEBwYXJhbSBoaTMyIG91dHB1dCB0aGUgaGlnaCAzMiBiaXRzCi0gKiBAcGFyYW0gbG8zMiBvdXRwdXQgdGhlIGxvdyAzMiBiaXRzCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBzcGxpdEFic0RvdWJsZShkb3VibGUgeCwgdW5zaWduZWQgbG9uZyAqaGkzMiwgdW5zaWduZWQgbG9uZyAqbG8zMikKLXsKLSAgaWYgKHggPCAwKQotICAgIHggPSAteDsKLSAgeCA9IHJvdW5kKHgpOwotICAKLSAgZG91YmxlIHR3b1Bvd2VyMzIgPSA0Mjk0OTY3Mjk2LjA7Ci0gIGRvdWJsZSBsbzMyRG91YmxlID0gZm1vZCh4LCB0d29Qb3dlcjMyKTsKLSAgKmxvMzIgPSAodW5zaWduZWQgbG9uZylsbzMyRG91YmxlOwotICAqaGkzMiA9ICh1bnNpZ25lZCBsb25nKSgoeCAtIGxvMzJEb3VibGUpIC8gdHdvUG93ZXIzMik7Ci19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9lbmNvZGVUeXBlQW5kVmFsdWUoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdHlwZSwgdW5zaWduZWQgaW50IHZhbHVlKQotewotICBpZiAodHlwZSA+IG5kbl9CaW5hcnlYbWxfVURBVEEpCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9oZWFkZXJfdHlwZV9pc19vdXRfb2ZfcmFuZ2U7Ci0gIAotICAvLyBFbmNvZGUgYmFja3dhcmRzLiBDYWxjdWxhdGUgaG93IG1hbnkgYnl0ZXMgd2UgbmVlZC4KLSAgc2l6ZV90IG5FbmNvZGluZ0J5dGVzID0gZ2V0TkhlYWRlckVuY29kaW5nQnl0ZXModmFsdWUpOwotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHNlbGYtPm91dHB1dCwgc2VsZi0+b2Zmc2V0ICsgbkVuY29kaW5nQnl0ZXMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgLy8gQm90dG9tIDQgYml0cyBvZiB2YWx1ZSBnbyBpbiBsYXN0IGJ5dGUgd2l0aCB0YWcuCi0gIHNlbGYtPm91dHB1dC0+YXJyYXlbc2VsZi0+b2Zmc2V0ICsgbkVuY29kaW5nQnl0ZXMgLSAxXSA9IAotICAgICgobmRuX0JpbmFyeVhtbF9UVF9NQVNLICYgdHlwZSkgfCAKLSAgICAoKG5kbl9CaW5hcnlYbWxfVFRfVkFMVUVfTUFTSyAmIHZhbHVlKSA8PCBuZG5fQmluYXJ5WG1sX1RUX0JJVFMpKSB8Ci0gICAgbmRuX0JpbmFyeVhtbF9UVF9GSU5BTDsgLy8gc2V0IHRvcCBiaXQgZm9yIGxhc3QgYnl0ZQotICB2YWx1ZSA+Pj0gbmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9CSVRTOwotICAKLSAgLy8gUmVzdCBvZiB2YWx1ZSBnb2VzIGludG8gcHJlY2VkaW5nIGJ5dGVzLCA3IGJpdHMgcGVyIGJ5dGUuIChaZXJvIHRvcCBiaXQgaXMgIm1vcmUiIGZsYWcuKQotICBzaXplX3QgaSA9IHNlbGYtPm9mZnNldCArIG5FbmNvZGluZ0J5dGVzIC0gMjsKLSAgd2hpbGUgKHZhbHVlICE9IDAgJiYgaSA+PSBzZWxmLT5vZmZzZXQpIHsKLSAgICBzZWxmLT5vdXRwdXQtPmFycmF5W2ldID0gKHZhbHVlICYgbmRuX0JpbmFyeVhtbF9SRUdVTEFSX1ZBTFVFX01BU0spOwotICAgIHZhbHVlID4+PSBuZG5fQmluYXJ5WG1sX1JFR1VMQVJfVkFMVUVfQklUUzsKLSAgICAtLWk7Ci0gIH0KLSAgaWYgKHZhbHVlICE9IDApCi0gICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiBpZiBnZXROSGVhZGVyRW5jb2RpbmdCeXRlcyBpcyBjb3JyZWN0LgotICAgIHJldHVybiBORE5fRVJST1JfZW5jb2RlVHlwZUFuZFZhbHVlX21pc2NhbGN1bGF0ZWRfTl9lbmNvZGluZ19ieXRlczsKLSAgCi0gIHNlbGYtPm9mZnNldCs9IG5FbmNvZGluZ0J5dGVzOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2Uoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHNlbGYtPm91dHB1dCwgc2VsZi0+b2Zmc2V0ICsgMSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHNlbGYtPm91dHB1dC0+YXJyYXlbc2VsZi0+b2Zmc2V0XSA9IG5kbl9CaW5hcnlYbWxfQ0xPU0U7Ci0gIHNlbGYtPm9mZnNldCArPSAxOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSkKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfZW5jb2RlVHlwZUFuZFZhbHVlKHNlbGYsIG5kbl9CaW5hcnlYbWxfQkxPQiwgdmFsdWUtPmxlbmd0aCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSB3cml0ZUFycmF5KHNlbGYsIHZhbHVlLT52YWx1ZSwgdmFsdWUtPmxlbmd0aCkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSkKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKHNlbGYsIHRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2Ioc2VsZiwgdmFsdWUpKSkKLSAgICByZXR1cm4gZXJyb3I7ICAKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRDbG9zZShzZWxmKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVRGF0YShzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX2VuY29kZVR5cGVBbmRWYWx1ZShzZWxmLCBuZG5fQmluYXJ5WG1sX1VEQVRBLCB2YWx1ZS0+bGVuZ3RoKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IHdyaXRlQXJyYXkoc2VsZiwgdmFsdWUtPnZhbHVlLCB2YWx1ZS0+bGVuZ3RoKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVRGF0YURUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSkKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKHNlbGYsIHRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVEYXRhKHNlbGYsIHZhbHVlKSkpCi0gICAgcmV0dXJuIGVycm9yOyAgCi0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2Uoc2VsZikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHZhbHVlKQotewotICAvLyBGaXJzdCB3cml0ZSB0aGUgZGVjaW1hbCBpbnQgKHRvIGZpbmQgb3V0IGhvdyBtYW55IGJ5dGVzIGl0IGlzKSwgdGhlbiBzaGlmdCBpdCBmb3J3YXJkIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIGhlYWRlci4KLSAgc2l6ZV90IHN0YXJ0T2Zmc2V0ID0gc2VsZi0+b2Zmc2V0OwotICAKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gZW5jb2RlUmV2ZXJzZWRVbnNpZ25lZERlY2ltYWxJbnQoc2VsZiwgdmFsdWUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gcmV2ZXJzZUJ1ZmZlckFuZEluc2VydEhlYWRlcihzZWxmLCBzdGFydE9mZnNldCwgbmRuX0JpbmFyeVhtbF9VREFUQSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCB1bnNpZ25lZCBpbnQgdmFsdWUpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhzZWxmLCB0YWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVbnNpZ25lZERlY2ltYWxJbnQoc2VsZiwgdmFsdWUpKSkKLSAgICByZXR1cm4gZXJyb3I7ICAKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRDbG9zZShzZWxmKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVBYnNEb3VibGVCaWdFbmRpYW5CbG9iKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgZG91YmxlIHZhbHVlKQotewotICB1bnNpZ25lZCBsb25nIGhpMzIsIGxvMzI7Ci0gIHNwbGl0QWJzRG91YmxlKHZhbHVlLCAmaGkzMiwgJmxvMzIpOwotICAKLSAgLy8gRmlyc3QgZW5jb2RlIHRoZSBiaWcgZW5kaWFuIGJhY2t3YXJkcywgdGhlbiByZXZlcnNlQnVmZmVyQW5kSW5zZXJ0SGVhZGVyIHdpbGwgcmV2ZXJzZSBpdC4KLSAgc2l6ZV90IHN0YXJ0T2Zmc2V0ID0gc2VsZi0+b2Zmc2V0OwotICAKLSAgbmRuX0Vycm9yIGVycm9yOwotICB3aGlsZSAobG8zMiAhPSAwKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGgoc2VsZi0+b3V0cHV0LCBzZWxmLT5vZmZzZXQgKyAxKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICAgc2VsZi0+b3V0cHV0LT5hcnJheVtzZWxmLT5vZmZzZXQrK10gPSAodWludDhfdCkobG8zMiAmIDB4ZmYpOwotICAgIGxvMzIgPj49IDg7Ci0gIH0KLSAgCi0gIGlmIChoaTMyICE9IDApIHsKLSAgICAvLyBQYWQgdGhlIGxvIHZhbHVlcyBvdXQgdG8gNCBieXRlcy4KLSAgICB3aGlsZSAoc2VsZi0+b2Zmc2V0IC0gc3RhcnRPZmZzZXQgPCA0KSB7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0R5bmFtaWNVSW50OEFycmF5X2Vuc3VyZUxlbmd0aChzZWxmLT5vdXRwdXQsIHNlbGYtPm9mZnNldCArIDEpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIAotICAgICAgc2VsZi0+b3V0cHV0LT5hcnJheVtzZWxmLT5vZmZzZXQrK10gPSAwOwotICAgIH0KLSAgICAKLSAgICAvLyBFbmNvZGUgaGkzMgotICAgIHdoaWxlIChoaTMyICE9IDApIHsKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHNlbGYtPm91dHB1dCwgc2VsZi0+b2Zmc2V0ICsgMSkpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gICAgICBzZWxmLT5vdXRwdXQtPmFycmF5W3NlbGYtPm9mZnNldCsrXSA9ICh1aW50OF90KShoaTMyICYgMHhmZik7Ci0gICAgICBoaTMyID4+PSA4OwotICAgIH0KLSAgfQotICAKLSAgaWYgKChlcnJvciA9IHJldmVyc2VCdWZmZXJBbmRJbnNlcnRIZWFkZXIoc2VsZiwgc3RhcnRPZmZzZXQsIG5kbl9CaW5hcnlYbWxfQkxPQikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgZG91YmxlIG1pbGxpc2Vjb25kcykKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKHNlbGYsIHRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVBYnNEb3VibGVCaWdFbmRpYW5CbG9iKHNlbGYsIChtaWxsaXNlY29uZHMgLyAxMDAwLjApICogNDA5Ni4wKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2Uoc2VsZikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZW5jb2Rlci5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZmE2YjkuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTEVOQ09ERVJfSAotI2RlZmluZSBORE5fQklOQVJZWE1MRU5DT0RFUl9ICi0KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICIuLi91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuaCIKLSNpbmNsdWRlICIuLi91dGlsL2Jsb2IuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqIEFuIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdCBpcyB1c2VkIGJ5IGFsbCB0aGUgZW5jb2RpbmcgZnVuY3Rpb25zLiAgWW91IHNob3VsZCBpbml0aWFsaXplIGl0IHdpdGgKLSAqICBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9pbml0aWFsaXplLgotICovCi1zdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgewotICBzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpvdXRwdXQ7IC8qKjwgQSBwb2ludGVyIHRvIGEgbmRuX0R5bmFtaWNVSW50OEFycmF5IHdoaWNoIHJlY2VpdmVzIHRoZSBlbmNvZGVkIG91dHB1dCAqLwotICBzaXplX3Qgb2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qKjwgdGhlIG9mZnNldCBpbnRvIG91dHB1dC5hcnJheSBmb3IgdGhlIG5leHQgZW5jb2RpbmcgKi8KLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9pbml0aWFsaXplIHN0cnVjdCB3aXRoIHRoZSBhcmd1bWVudHMgZm9yIGluaXRpYWxpemluZyB0aGUgbmRuX0R5bmFtaWNVSW50OEFycmF5LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gb3V0cHV0IEEgcG9pbnRlciB0byBhIG5kbl9EeW5hbWljVUludDhBcnJheSBzdHJ1Y3Qgd2hpY2ggcmVjZWl2ZXMgdGhlIGVuY29kZWQgb3V0cHV0LiAgVGhlIHN0cnVjdCBtdXN0Ci0gKiByZW1haW4gdmFsaWQgZHVyaW5nIHRoZSBlbnRpcmUgbGlmZSBvZiB0aGlzIG5kbl9CaW5hcnlYbWxFbmNvZGVyLiBJZiB0aGUgb3V0cHV0LT5yZWFsbG9jCi0gKiBmdW5jdGlvbiBwb2ludGVyIGlzIG51bGwsIGl0cyBhcnJheSBtdXN0IGJlIGxhcmdlIGVub3VnaCB0byByZWNlaXZlIHRoZSBlbnRpcmUgZW5jb2RpbmcuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9pbml0aWFsaXplKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqb3V0cHV0KSAKLXsKLSAgc2VsZi0+b3V0cHV0ID0gb3V0cHV0OwotICBzZWxmLT5vZmZzZXQgPSAwOwotfQotCi0vKioKLSAqIEVuY29kZSBhIGhlYWRlciB3aXRoIHRoZSB0eXBlIGFuZCB2YWx1ZSBhbmQgd3JpdGUgaXQgdG8gc2VsZi0+b3V0cHV0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdHlwZSB0aGUgaGVhZGVyIHR5cGUKLSAqIEBwYXJhbSB2YWx1ZSB0aGUgaGVhZGVyIHZhbHVlCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfZW5jb2RlVHlwZUFuZFZhbHVlKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVkIGludCB2YWx1ZSk7Ci0KLS8qKgotICogV3JpdGUgYW4gZWxlbWVudCBzdGFydCBoZWFkZXIgdXNpbmcgRFRBRyB3aXRoIHRoZSB0YWcgdG8gc2VsZi0+b3V0cHV0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdGFnIHRoZSBEVEFHIHRhZwotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZykgCi17Ci0gIHJldHVybiBuZG5fQmluYXJ5WG1sRW5jb2Rlcl9lbmNvZGVUeXBlQW5kVmFsdWUoc2VsZiwgbmRuX0JpbmFyeVhtbF9EVEFHLCB0YWcpOwotfQotCi0vKioKLSAqIFdyaXRlIGFuIGVsZW1lbnQgY2xvc2UgdG8gc2VsZi0+b3V0cHV0LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2Uoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmKTsKLQotLyoqCi0gKiBXcml0ZSBhIEJMT0IgaGVhZGVyLCB0aGVuIHRoZSBieXRlcyBvZiB0aGUgYmxvYiB2YWx1ZSB0byBzZWxmLT5vdXRwdXQuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB2YWx1ZSBBIEJsb2Igd2l0aCB0aGUgYXJyYXkgb2YgYnl0ZXMgZm9yIHRoZSB2YWx1ZS4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2Ioc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKTsKLQotLyoqCi0gKiBXcml0ZSBhbiBlbGVtZW50IHN0YXJ0IGhlYWRlciB1c2luZyBEVEFHIHdpdGggdGhlIHRhZyB0byBzZWxmLT5vdXRwdXQsIHRoZW4gdGhlIGJsb2IsIHRoZW4gYW4gZWxlbWVudCBjbG9zZS4KLSAqIChJZiB5b3Ugd2FudCB0byBqdXN0IHdyaXRlIHRoZSBibG9iLCB1c2UgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iIC4pCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB0YWcgdGhlIERUQUcgdGFnCi0gKiBAcGFyYW0gdmFsdWUgQSBCbG9iIHdpdGggdGhlIGFycmF5IG9mIGJ5dGVzIGZvciB0aGUgdmFsdWUuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKTsKLQotLyoqCi0gKiBJZiB2YWx1ZSBvciB2YWx1ZUxlbiBpcyAwIHRoZW4gZG8gbm90aGluZywgb3RoZXJ3aXNlIGNhbGwgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdC4KLSAqIEBwYXJhbSB0YWcgVGhlIERUQUcgdGFnLgotICogQHBhcmFtIHZhbHVlIEEgQmxvYiB3aXRoIHRoZSBhcnJheSBvZiBieXRlcyBmb3IgdGhlIHZhbHVlLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbEJsb2JEVGFnRWxlbWVudAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKQotewotICBpZiAodmFsdWUtPnZhbHVlICYmIHZhbHVlLT5sZW5ndGggPiAwKQotICAgIHJldHVybiBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChzZWxmLCB0YWcsIHZhbHVlKTsKLSAgZWxzZQotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotLyoqCi0gKiBXcml0ZSBhIFVEQVRBIGhlYWRlciwgdGhlbiB0aGUgYnl0ZXMgb2YgdGhlIFVEQVRBIHZhbHVlIHRvIHNlbGYtPm91dHB1dC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHZhbHVlIEEgQmxvYiB3aXRoIHRoZSBhcnJheSBvZiBieXRlcyBmb3IgdGhlIHZhbHVlLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVURhdGEoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKTsKLQotLyoqCi0gKiBXcml0ZSBhbiBlbGVtZW50IHN0YXJ0IGhlYWRlciB1c2luZyBEVEFHIHdpdGggdGhlIHRhZyB0byBzZWxmLT5vdXRwdXQsIHRoZW4gdGhlIFVEQVRBIHZhbHVlLCB0aGVuIGFuIGVsZW1lbnQgY2xvc2UuCi0gKiAoSWYgeW91IHdhbnQgdG8ganVzdCB3cml0ZSB0aGUgVURBVEEgdmFsdWUsIHVzZSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVEYXRhIC4pCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB0YWcgdGhlIERUQUcgdGFnCi0gKiBAcGFyYW0gdmFsdWUgQSBCbG9iIHdpdGggdGhlIGFycmF5IG9mIGJ5dGVzIGZvciB0aGUgdmFsdWUuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVRGF0YURUYWdFbGVtZW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHRhZywgc3RydWN0IG5kbl9CbG9iICp2YWx1ZSk7Ci0KLS8qKgotICogSWYgdmFsdWUgb3IgdmFsdWVMZW4gaXMgMCB0aGVuIGRvIG5vdGhpbmcsIG90aGVyd2lzZSBjYWxsIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVURhdGFEVGFnRWxlbWVudC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHRhZyB0aGUgRFRBRyB0YWcKLSAqIEBwYXJhbSB2YWx1ZSBBIEJsb2Igd2l0aCB0aGUgYXJyYXkgb2YgYnl0ZXMgZm9yIHRoZSB2YWx1ZS4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxVRGF0YURUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcsIHN0cnVjdCBuZG5fQmxvYiAqdmFsdWUpCi17Ci0gIGlmICh2YWx1ZS0+dmFsdWUgJiYgdmFsdWUtPmxlbmd0aCA+IDApCi0gICAgcmV0dXJuIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVURhdGFEVGFnRWxlbWVudChzZWxmLCB0YWcsIHZhbHVlKTsKLSAgZWxzZQotICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotLyoqCi0gKiBXcml0ZSBhIFVEQVRBIGhlYWRlciwgdGhlbiB0aGUgdmFsdWUgYXMgYW4gdW5zaWduZWQgZGVjaW1hbCBpbnRlZ2VyLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdmFsdWUgdGhlIHVuc2lnbmVkIGludAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50KHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgdW5zaWduZWQgaW50IHZhbHVlKTsKLQotLyoqCi0gKiBXcml0ZSBhbiBlbGVtZW50IHN0YXJ0IGhlYWRlciB1c2luZyBEVEFHIHdpdGggdGhlIHRhZyB0byBzZWxmLT5vdXRwdXQsIHRoZW4gdGhlIHZhbHVlIGFzIGFuIHVuc2lnbmVkIGRlY2ltYWwgaW50ZWdlciwgCi0gKiB0aGVuIGFuIGVsZW1lbnQgY2xvc2UuCi0gKiAoSWYgeW91IHdhbnQgdG8ganVzdCB3cml0ZSB0aGUgaW50ZWdlciwgdXNlIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50IC4pCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRW5jb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSB0YWcgdGhlIERUQUcgdGFnCi0gKiBAcGFyYW0gdmFsdWUgdGhlIHVuc2lnbmVkIGludAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCB1bnNpZ25lZCBpbnQgdmFsdWUpOwotCi0vKioKLSAqIElmIHZhbHVlIGlzIG5lZ2F0aXZlIHRoZW4gZG8gbm90aGluZywgb3RoZXJ3aXNlIGNhbGwgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHRhZyB0aGUgRFRBRyB0YWcKLSAqIEBwYXJhbSB2YWx1ZSBuZWdhdGl2ZSBmb3Igbm9uZSwgb3RoZXJ3aXNlIHVzZSAodW5zaWduZWQgaW50KXZhbHVlCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQoc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICpzZWxmLCB1bnNpZ25lZCBpbnQgdGFnLCBpbnQgdmFsdWUpCi17Ci0gIGlmICh2YWx1ZSA+PSAwKQotICAgIHJldHVybiBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50KHNlbGYsIHRhZywgKHNpemVfdCl2YWx1ZSk7Ci0gIGVsc2UKLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLS8qKgotICogV3JpdGUgYSBCTE9CIGhlYWRlciwgdGhlbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdmFsdWUsIHJvdW5kZWQgdG8gYW4gaW50ZWdlciwgdG8gc2VsZi0+b3V0cHV0IGVuY29kZWQgYXMgYmlnIGVuZGlhbi4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHBhcmFtIHZhbHVlIHRoZSBkb3VibGUgdG8gZW5jb2RlIGFzIGJpZyBlbmRpYW4uICBJZiB2YWx1ZSBpcyAwLCB0aGUgYmlnIGVuZGlhbiBlbmNvZGluZyBoYXMgemVybyBieXRlcy4KLSAqIFRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gYWJzb2x1dGUgdmFsdWUuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVBYnNEb3VibGVCaWdFbmRpYW5CbG9iKHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqc2VsZiwgZG91YmxlIHZhbHVlKTsKLQotLyoqCi0gKiBXcml0ZSBhbiBlbGVtZW50IHN0YXJ0IGhlYWRlciB1c2luZyBEVEFHIHdpdGggdGhlIHRhZyB0byBzZWxmLT5vdXRwdXQsIHRoZW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIG1pbGxpc2Vjb25kcwotICogYXMgYSBiaWcgZW5kaWFuIEJMT0IgY29udmVydGVkIHRvIDQwOTYgdGlja3MgcGVyIHNlY29uZCwgdGhlbiBhbiBlbGVtZW50IGNsb3NlLgotICogKElmIHlvdSB3YW50IHRvIGp1c3Qgd3JpdGUgdGhlIGludGVnZXIsIHVzZSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludCAuKQotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdGFnIHRoZSBEVEFHIHRhZwotICogQHBhcmFtIG1pbGxpc2Vjb25kcyB0aGUgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVRpbWVNaWxsaXNlY29uZHNEVGFnRWxlbWVudChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcsIGRvdWJsZSBtaWxsaXNlY29uZHMpOwotCi0vKioKLSAqIElmIG1pbGxpc2Vjb25kcyBpcyBuZWdhdGl2ZSB0aGVuIGRvIG5vdGhpbmcsIG90aGVyd2lzZSBjYWxsIG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50LgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcGFyYW0gdGFnIHRoZSBEVEFHIHRhZwotICogQHBhcmFtIG1pbGxpc2Vjb25kcyBuZWdhdGl2ZSBmb3Igbm9uZSwgb3RoZXJ3aXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50Ci0gIChzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKnNlbGYsIHVuc2lnbmVkIGludCB0YWcsIGRvdWJsZSBtaWxsaXNlY29uZHMpCi17Ci0gIGlmIChtaWxsaXNlY29uZHMgPj0gMCkKLSAgICByZXR1cm4gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVUaW1lTWlsbGlzZWNvbmRzRFRhZ0VsZW1lbnQoc2VsZiwgdGFnLCBtaWxsaXNlY29uZHMpOwotICBlbHNlCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWZvcndhcmRpbmctZW50cnkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdlZDUyYS4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWZvcndhcmRpbmctZW50cnkuYworKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIERlcml2ZWQgZnJvbSBGb3J3YXJkaW5nRW50cnkuanMgYnkgTWVraSBDaGVyYW91aS4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZm9yd2FyZGluZy1lbnRyeS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtbmFtZS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwta2V5LmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCIKLQotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxGb3J3YXJkaW5nRW50cnkoc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkgKmZvcndhcmRpbmdFbnRyeSwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ZvcndhcmRpbmdFbnRyeSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxVRGF0YURUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0FjdGlvbiwgJmZvcndhcmRpbmdFbnRyeS0+YWN0aW9uKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbE5hbWUoJmZvcndhcmRpbmdFbnRyeS0+cHJlZml4LCBlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAvLyBUaGlzIHdpbGwgc2tpcCBlbmNvZGluZyBpZiB0aGVyZSBpcyBubyBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QuCi0gIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0KCZmb3J3YXJkaW5nRW50cnktPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19GYWNlSUQsIGZvcndhcmRpbmdFbnRyeS0+ZmFjZUlkKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Gb3J3YXJkaW5nRmxhZ3MsIAotICAgICAgIG5kbl9Gb3J3YXJkaW5nRmxhZ3NfZ2V0Rm9yd2FyZGluZ0VudHJ5RmxhZ3MoJmZvcndhcmRpbmdFbnRyeS0+Zm9yd2FyZGluZ0ZsYWdzKSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxVbnNpZ25lZERlY2ltYWxJbnREVGFnRWxlbWVudAotICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19GcmVzaG5lc3NTZWNvbmRzLCBmb3J3YXJkaW5nRW50cnktPmZyZXNobmVzc1NlY29uZHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2UoZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsgIAotfQotCi1uZG5fRXJyb3IgbmRuX2RlY29kZUJpbmFyeVhtbEZvcndhcmRpbmdFbnRyeShzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdFbnRyeSAqZm9yd2FyZGluZ0VudHJ5LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Gb3J3YXJkaW5nRW50cnkpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVRGF0YURUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0FjdGlvbiwgJmZvcndhcmRpbmdFbnRyeS0+YWN0aW9uKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX2RlY29kZUJpbmFyeVhtbE5hbWUoJmZvcndhcmRpbmdFbnRyeS0+cHJlZml4LCBkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX2RlY29kZU9wdGlvbmFsQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0KCZmb3J3YXJkaW5nRW50cnktPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgZGVjb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRPcHRpb25hbFVuc2lnbmVkSW50ZWdlckRUYWdFbGVtZW50Ci0gICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ZhY2VJRCwgJmZvcndhcmRpbmdFbnRyeS0+ZmFjZUlkKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaW50IGZvcndhcmRpbmdFbnRyeUZsYWdzOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRm9yd2FyZGluZ0ZsYWdzLCAmZm9yd2FyZGluZ0VudHJ5RmxhZ3MpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChmb3J3YXJkaW5nRW50cnlGbGFncyA+PSAwKQotICAgIG5kbl9Gb3J3YXJkaW5nRmxhZ3Nfc2V0Rm9yd2FyZGluZ0VudHJ5RmxhZ3MoJmZvcndhcmRpbmdFbnRyeS0+Zm9yd2FyZGluZ0ZsYWdzLCBmb3J3YXJkaW5nRW50cnlGbGFncyk7Ci0gIGVsc2UKLSAgICAvLyBUaGlzIHNldHMgdGhlIGRlZmF1bHQgZmxhZ3MuCi0gICAgbmRuX0ZvcndhcmRpbmdGbGFnc19pbml0aWFsaXplKCZmb3J3YXJkaW5nRW50cnktPmZvcndhcmRpbmdGbGFncyk7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZE9wdGlvbmFsVW5zaWduZWRJbnRlZ2VyRFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfRnJlc2huZXNzU2Vjb25kcywgJmZvcndhcmRpbmdFbnRyeS0+ZnJlc2huZXNzU2Vjb25kcykpKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1mb3J3YXJkaW5nLWVudHJ5LmggYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWZvcndhcmRpbmctZW50cnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA4ZjI5Mi4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWZvcndhcmRpbmctZW50cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllfWE1MX0ZPUldBUkRJTkdfRU5UUllfSAotI2RlZmluZSBORE5fQklOQVJZX1hNTF9GT1JXQVJESU5HX0VOVFJZX0gKLQotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotI2luY2x1ZGUgIi4uL2ZvcndhcmRpbmctZW50cnkuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIEVuY29kZSB0aGUgbmRuX0ZvcndhcmRpbmdFbnRyeSBzdHJ1Y3QgdXNpbmcgQmluYXJ5IFhNTC4KLSAqIEBwYXJhbSBmb3J3YXJkaW5nRW50cnkgcG9pbnRlciB0byB0aGUgbmRuX0ZvcndhcmRpbmdFbnRyeSBzdHJ1Y3QKLSAqIEBwYXJhbSBlbmNvZGVyIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxGb3J3YXJkaW5nRW50cnkoc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkgKmZvcndhcmRpbmdFbnRyeSwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKTsKLQotLyoqCi0gKiBFeHBlY3QgdGhlIG5leHQgZWxlbWVudCB0byBiZSBhIEJpbmFyeSBYTUwgRm9yd2FyZGluZ0VudHJ5IGFuZCBkZWNvZGUgaW50byB0aGUgbmRuX0ZvcndhcmRpbmdFbnRyeSBzdHJ1Y3QuCi0gKiBAcGFyYW0gZm9yd2FyZGluZ0VudHJ5IHBvaW50ZXIgdG8gdGhlIG5kbl9Gb3J3YXJkaW5nRW50cnkgc3RydWN0Ci0gKiBAcGFyYW0gZGVjb2RlciBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLCBpbmNsdWRpbmcgaWYgdGhlIG5leHQgZWxlbWVudCBpcyBub3QgS2V5TG9jYXRvci4KLSAqLwotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxGb3J3YXJkaW5nRW50cnkoc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkgKmZvcndhcmRpbmdFbnRyeSwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZGEzZTQuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1pbnRlcmVzdC5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIERlcml2ZWQgZnJvbSBJbnRlcmVzdC5qcyBieSBNZWtpIENoZXJhb3VpLgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJiaW5hcnkteG1sLWVuY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWRlY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLW5hbWUuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtaW50ZXJlc3QuaCIKLQotc3RhdGljIG5kbl9FcnJvciBlbmNvZGVFeGNsdWRlKHN0cnVjdCBuZG5fRXhjbHVkZSAqZXhjbHVkZSwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKQotewotICBpZiAoZXhjbHVkZS0+bkVudHJpZXMgPT0gMCkKLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gIAotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0V4Y2x1ZGUpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICAvLyBUT0RPOiBEbyB3ZSB3YW50IHRvIG9yZGVyIHRoZSBjb21wb25lbnRzIChleGNlcHQgZm9yIEFOWSk/Ci0gIHNpemVfdCBpOwotICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS0+bkVudHJpZXM7ICsraSkgewotICAgIHN0cnVjdCBuZG5fRXhjbHVkZUVudHJ5ICplbnRyeSA9ICZleGNsdWRlLT5lbnRyaWVzW2ldOwotICAgIAotICAgIGlmIChlbnRyeS0+dHlwZSA9PSBuZG5fRXhjbHVkZV9DT01QT05FTlQpIHsKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcG9uZW50LCAmZW50cnktPmNvbXBvbmVudC52YWx1ZSkpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVudHJ5LT50eXBlID09IG5kbl9FeGNsdWRlX0FOWSkgewotICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQW55KSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRDbG9zZShlbmNvZGVyKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0V4Y2x1ZGVUeXBlOwotICB9Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2UoZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsgIAotfQotCi1zdGF0aWMgbmRuX0Vycm9yIGRlY29kZUV4Y2x1ZGUoc3RydWN0IG5kbl9FeGNsdWRlICpleGNsdWRlLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19FeGNsdWRlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICBleGNsdWRlLT5uRW50cmllcyA9IDA7Ci0gIHdoaWxlICgxKSB7Ci0gICAgaW50IGdvdEV4cGVjdGVkVGFnOwotICAgIAotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcG9uZW50LCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICAgIHJldHVybiBlcnJvcjsgICAgCi0gICAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgICAvLyBDb21wb25lbnQKLSAgICAgIHN0cnVjdCBuZG5fQmxvYiBjb21wb25lbnQ7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50KGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Db21wb25lbnQsIDAsICZjb21wb25lbnQpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIAotICAgICAgLy8gQWRkIHRoZSBjb21wb25lbnQgZW50cnkuCi0gICAgICBpZiAoZXhjbHVkZS0+bkVudHJpZXMgPj0gZXhjbHVkZS0+bWF4RW50cmllcykKLSAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl9yZWFkX2FuX2VudHJ5X3Bhc3RfdGhlX21heGltdW1fbnVtYmVyX29mX2VudHJpZXNfYWxsb3dlZF9pbl90aGVfZXhjbHVkZTsKLSAgICAgIG5kbl9FeGNsdWRlRW50cnlfaW5pdGlhbGl6ZShleGNsdWRlLT5lbnRyaWVzICsgZXhjbHVkZS0+bkVudHJpZXMsIG5kbl9FeGNsdWRlX0NPTVBPTkVOVCwgY29tcG9uZW50LnZhbHVlLCBjb21wb25lbnQubGVuZ3RoKTsKLSAgICAgICsrZXhjbHVkZS0+bkVudHJpZXM7Ci0KLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICAKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0FueSwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgICByZXR1cm4gZXJyb3I7ICAgIAotICAgIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgICAgLy8gQW55Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRTdGFydERUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0FueSkpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgICAgIC8vIEFkZCB0aGUgYW55IGVudHJ5LgotICAgICAgaWYgKGV4Y2x1ZGUtPm5FbnRyaWVzID49IGV4Y2x1ZGUtPm1heEVudHJpZXMpCi0gICAgICAgIHJldHVybiBORE5fRVJST1JfcmVhZF9hbl9lbnRyeV9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9lbnRyaWVzX2FsbG93ZWRfaW5fdGhlX2V4Y2x1ZGU7Ci0gICAgICBuZG5fRXhjbHVkZUVudHJ5X2luaXRpYWxpemUoZXhjbHVkZS0+ZW50cmllcyArIGV4Y2x1ZGUtPm5FbnRyaWVzLCBuZG5fRXhjbHVkZV9BTlksIDAsIDApOwotICAgICAgKytleGNsdWRlLT5uRW50cmllczsKLQotICAgICAgY29udGludWU7Ci0gICAgfQotICAgIAotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQmxvb20sICZnb3RFeHBlY3RlZFRhZykpKQotICAgICAgcmV0dXJuIGVycm9yOyAgICAKLSAgICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAgIC8vIFNraXAgdGhlIEJsb29tIGFuZCB0cmVhdCBpdCBhcyBBbnkuCi0gICAgICBzdHJ1Y3QgbmRuX0Jsb2IgdmFsdWU7Ci0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50KGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19CbG9vbSwgMCwgJnZhbHVlKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgICAgIC8vIEFkZCB0aGUgYW55IGVudHJ5LgotICAgICAgaWYgKGV4Y2x1ZGUtPm5FbnRyaWVzID49IGV4Y2x1ZGUtPm1heEVudHJpZXMpCi0gICAgICAgIHJldHVybiBORE5fRVJST1JfcmVhZF9hbl9lbnRyeV9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9lbnRyaWVzX2FsbG93ZWRfaW5fdGhlX2V4Y2x1ZGU7Ci0gICAgICBuZG5fRXhjbHVkZUVudHJ5X2luaXRpYWxpemUoZXhjbHVkZS0+ZW50cmllcyArIGV4Y2x1ZGUtPm5FbnRyaWVzLCBuZG5fRXhjbHVkZV9BTlksIDAsIDApOwotICAgICAgKytleGNsdWRlLT5uRW50cmllczsKLQotICAgICAgY29udGludWU7Ci0gICAgfQotICAgIAotICAgIC8vIEVsc2Ugbm8gbW9yZSBlbnRyaWVzLgotICAgIGJyZWFrOwotICB9Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbEludGVyZXN0KHN0cnVjdCBuZG5fSW50ZXJlc3QgKmludGVyZXN0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgKmVuY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfSW50ZXJlc3QpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sTmFtZSgmaW50ZXJlc3QtPm5hbWUsIGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX01pblN1ZmZpeENvbXBvbmVudHMsIGludGVyZXN0LT5taW5TdWZmaXhDb21wb25lbnRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVPcHRpb25hbFVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX01heFN1ZmZpeENvbXBvbmVudHMsIGludGVyZXN0LT5tYXhTdWZmaXhDb21wb25lbnRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICAvLyBUaGlzIHdpbGwgc2tpcCBlbmNvZGluZyBpZiB0aGVyZSBpcyBubyBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QuCi0gIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0KCZpbnRlcmVzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCBlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgLy8gVGhpcyB3aWxsIHNraXAgZW5jb2RpbmcgaWYgdGhlcmUgaXMgbm8gZXhjbHVkZS4KLSAgaWYgKChlcnJvciA9IGVuY29kZUV4Y2x1ZGUoJmludGVyZXN0LT5leGNsdWRlLCBlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ2hpbGRTZWxlY3RvciwgaW50ZXJlc3QtPmNoaWxkU2VsZWN0b3IpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChpbnRlcmVzdC0+YW5zd2VyT3JpZ2luS2luZCA+PSAwICYmIGludGVyZXN0LT5hbnN3ZXJPcmlnaW5LaW5kICE9IG5kbl9JbnRlcmVzdF9ERUZBVUxUX0FOU1dFUl9PUklHSU5fS0lORCkgewotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZVVuc2lnbmVkRGVjaW1hbEludERUYWdFbGVtZW50Ci0gICAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQW5zd2VyT3JpZ2luS2luZCwgKHVuc2lnbmVkIGludClpbnRlcmVzdC0+YW5zd2VyT3JpZ2luS2luZCkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVW5zaWduZWREZWNpbWFsSW50RFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfU2NvcGUsIGludGVyZXN0LT5zY29wZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZU9wdGlvbmFsVGltZU1pbGxpc2Vjb25kc0RUYWdFbGVtZW50Ci0gICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ludGVyZXN0TGlmZXRpbWUsIGludGVyZXN0LT5pbnRlcmVzdExpZmV0aW1lTWlsbGlzZWNvbmRzKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlT3B0aW9uYWxCbG9iRFRhZ0VsZW1lbnQoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX05vbmNlLCAmaW50ZXJlc3QtPm5vbmNlKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudENsb3NlKGVuY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAKLX0KLQotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxJbnRlcmVzdChzdHJ1Y3QgbmRuX0ludGVyZXN0ICppbnRlcmVzdCwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfSW50ZXJlc3QpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgCi0gIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlQmluYXJ5WG1sTmFtZSgmaW50ZXJlc3QtPm5hbWUsIGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19NaW5TdWZmaXhDb21wb25lbnRzLCAmaW50ZXJlc3QtPm1pblN1ZmZpeENvbXBvbmVudHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19NYXhTdWZmaXhDb21wb25lbnRzLCAmaW50ZXJlc3QtPm1heFN1ZmZpeENvbXBvbmVudHMpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX2RlY29kZU9wdGlvbmFsQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0KCZpbnRlcmVzdC0+cHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCBkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0V4Y2x1ZGUsICZnb3RFeHBlY3RlZFRhZykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgaWYgKGdvdEV4cGVjdGVkVGFnKSB7Ci0gICAgaWYgKChlcnJvciA9IGRlY29kZUV4Y2x1ZGUoJmludGVyZXN0LT5leGNsdWRlLCBkZWNvZGVyKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgZWxzZQotICAgIGludGVyZXN0LT5leGNsdWRlLm5FbnRyaWVzID0gMDsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19DaGlsZFNlbGVjdG9yLCAmaW50ZXJlc3QtPmNoaWxkU2VsZWN0b3IpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19BbnN3ZXJPcmlnaW5LaW5kLCAmaW50ZXJlc3QtPmFuc3dlck9yaWdpbktpbmQpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxVbnNpZ25lZEludGVnZXJEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19TY29wZSwgJmludGVyZXN0LT5zY29wZSkpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxUaW1lTWlsbGlzZWNvbmRzRFRhZ0VsZW1lbnQKLSAgICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0ludGVyZXN0TGlmZXRpbWUsICZpbnRlcmVzdC0+aW50ZXJlc3RMaWZldGltZU1pbGxpc2Vjb25kcykpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkT3B0aW9uYWxCaW5hcnlEVGFnRWxlbWVudAotICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Ob25jZSwgMCwgJmludGVyZXN0LT5ub25jZSkpKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRDbG9zZShkZWNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1pbnRlcmVzdC5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1pbnRlcmVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJhZmU0Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtaW50ZXJlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxJTlRFUkVTVF9ICi0jZGVmaW5lIE5ETl9CSU5BUllYTUxJTlRFUkVTVF9ICi0KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICIuLi9pbnRlcmVzdC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZW5jb2Rlci5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sSW50ZXJlc3Qoc3RydWN0IG5kbl9JbnRlcmVzdCAqaW50ZXJlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2Rlcik7Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sSW50ZXJlc3Qoc3RydWN0IG5kbl9JbnRlcmVzdCAqaW50ZXJlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWtleS5jIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1rZXkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1NTkxMS4uMDAwMDAwMAotLS0gYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWtleS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIERlcml2ZWQgZnJvbSBLZXkuanMgYnkgTWVraSBDaGVyYW91aS4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLWtleS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtbmFtZS5oIgotCi1zdGF0aWMgbmRuX0Vycm9yIGRlY29kZUtleU5hbWVEYXRhKHN0cnVjdCBuZG5fS2V5TG9jYXRvciAqa2V5TG9jYXRvciwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBpbnQgZ290RXhwZWN0ZWRUYWc7Ci0gIG5kbl9FcnJvciBlcnJvcjsgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgIGtleUxvY2F0b3ItPmtleU5hbWVUeXBlID0gbmRuX0tleU5hbWVUeXBlX1BVQkxJU0hFUl9QVUJMSUNfS0VZX0RJR0VTVDsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCAwLCAma2V5TG9jYXRvci0+a2V5RGF0YSkpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UgewotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVyQ2VydGlmaWNhdGVEaWdlc3QsICZnb3RFeHBlY3RlZFRhZykpKQotICAgICAgcmV0dXJuIGVycm9yOwotICAgIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgICAga2V5TG9jYXRvci0+a2V5TmFtZVR5cGUgPSBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0NFUlRJRklDQVRFX0RJR0VTVDsKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkQmluYXJ5RFRhZ0VsZW1lbnQKLSAgICAgICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlckNlcnRpZmljYXRlRGlnZXN0LCAwLCAma2V5TG9jYXRvci0+a2V5RGF0YSkpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJJc3N1ZXJLZXlEaWdlc3QsICZnb3RFeHBlY3RlZFRhZykpKQotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAgICAga2V5TG9jYXRvci0+a2V5TmFtZVR5cGUgPSBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9LRVlfRElHRVNUOwotICAgICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAgICAgICAoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlcklzc3VlcktleURpZ2VzdCwgMCwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3BlZWtEVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJJc3N1ZXJDZXJ0aWZpY2F0ZURpZ2VzdCwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAgICAgICBrZXlMb2NhdG9yLT5rZXlOYW1lVHlwZSA9IG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfSVNTVUVSX0NFUlRJRklDQVRFX0RJR0VTVDsKLSAgICAgICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAgICAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVySXNzdWVyQ2VydGlmaWNhdGVEaWdlc3QsIDAsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLy8gS2V5IG5hbWUgZGF0YSBpcyBvbWl0dGVkLgotICAgICAgICAgIGtleUxvY2F0b3ItPmtleU5hbWVUeXBlID0gLTE7Ci0gICAgICAgICAga2V5TG9jYXRvci0+a2V5RGF0YS5sZW5ndGggPSAwOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sS2V5TG9jYXRvcihzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKmtleUxvY2F0b3IsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2RlcikKLXsKLSAgaWYgKChpbnQpa2V5TG9jYXRvci0+dHlwZSA8IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlRWxlbWVudFN0YXJ0RFRhZyhlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5TG9jYXRvcikpKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpZiAoa2V5TG9jYXRvci0+dHlwZSA9PSBuZG5fS2V5TG9jYXRvclR5cGVfS0VZKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50KGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19LZXksICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICByZXR1cm4gZXJyb3I7ICAgIAotICB9Ci0gIGVsc2UgaWYgKGtleUxvY2F0b3ItPnR5cGUgPT0gbmRuX0tleUxvY2F0b3JUeXBlX0NFUlRJRklDQVRFKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50KGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19DZXJ0aWZpY2F0ZSwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgIHJldHVybiBlcnJvcjsgICAgCi0gIH0KLSAgZWxzZSBpZiAoa2V5TG9jYXRvci0+dHlwZSA9PSBuZG5fS2V5TG9jYXRvclR5cGVfS0VZTkFNRSkgewotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRTdGFydERUYWcoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleU5hbWUpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbE5hbWUoJmtleUxvY2F0b3ItPmtleU5hbWUsIGVuY29kZXIpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgICBpZiAoKGludClrZXlMb2NhdG9yLT5rZXlOYW1lVHlwZSA+PSAwICYmIGtleUxvY2F0b3ItPmtleURhdGEubGVuZ3RoID4gMCkgewotICAgICAgaWYgKGtleUxvY2F0b3ItPmtleU5hbWVUeXBlID09IG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfUFVCTElDX0tFWV9ESUdFU1QpIHsKLSAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50Ci0gICAgICAgICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgICAgICByZXR1cm4gZXJyb3I7ICAgIAotICAgICAgfQotICAgICAgZWxzZSBpZiAoa2V5TG9jYXRvci0+a2V5TmFtZVR5cGUgPT0gbmRuX0tleU5hbWVUeXBlX1BVQkxJU0hFUl9DRVJUSUZJQ0FURV9ESUdFU1QpIHsKLSAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50Ci0gICAgICAgICAgICAoZW5jb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlckNlcnRpZmljYXRlRGlnZXN0LCAma2V5TG9jYXRvci0+a2V5RGF0YSkpKQotICAgICAgICAgIHJldHVybiBlcnJvcjsgICAgCi0gICAgICB9Ci0gICAgICBlbHNlIGlmIChrZXlMb2NhdG9yLT5rZXlOYW1lVHlwZSA9PSBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9LRVlfRElHRVNUKSB7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUJsb2JEVGFnRWxlbWVudAotICAgICAgICAgICAgKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19QdWJsaXNoZXJJc3N1ZXJLZXlEaWdlc3QsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOyAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGtleUxvY2F0b3ItPmtleU5hbWVUeXBlID09IG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfSVNTVUVSX0NFUlRJRklDQVRFX0RJR0VTVCkgewotICAgICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQKLSAgICAgICAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVySXNzdWVyQ2VydGlmaWNhdGVEaWdlc3QsICZrZXlMb2NhdG9yLT5rZXlEYXRhKSkpCi0gICAgICAgICAgcmV0dXJuIGVycm9yOyAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0tleU5hbWVUeXBlOwotICAgIH0KLSAgICAKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2UoZW5jb2RlcikpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UKLSAgICByZXR1cm4gTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fS2V5TG9jYXRvclR5cGU7Ci0gIAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50Q2xvc2UoZW5jb2RlcikpKQotICAgIHJldHVybiBlcnJvcjsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yKHN0cnVjdCBuZG5fS2V5TG9jYXRvciAqa2V5TG9jYXRvciwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudFN0YXJ0RFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5TG9jYXRvcikpKQotICAgIHJldHVybiBlcnJvcjsKLQotICBpbnQgZ290RXhwZWN0ZWRUYWc7Ci0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5LCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgIGtleUxvY2F0b3ItPnR5cGUgPSBuZG5fS2V5TG9jYXRvclR5cGVfS0VZOwotICAgIAotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkQmluYXJ5RFRhZ0VsZW1lbnQoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleSwgMCwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBlbHNlIHsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0NlcnRpZmljYXRlLCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICAgIGtleUxvY2F0b3ItPnR5cGUgPSBuZG5fS2V5TG9jYXRvclR5cGVfQ0VSVElGSUNBVEU7Ci0gICAgCi0gICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50Ci0gICAgICAgICAgKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19DZXJ0aWZpY2F0ZSwgMCwgJmtleUxvY2F0b3ItPmtleURhdGEpKSkKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5TmFtZSwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgIGlmIChnb3RFeHBlY3RlZFRhZykgewotICAgICAgICBrZXlMb2NhdG9yLT50eXBlID0gbmRuX0tleUxvY2F0b3JUeXBlX0tFWU5BTUU7Ci0gICAgICAgIAotICAgICAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEVsZW1lbnRTdGFydERUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX0tleU5hbWUpKSkKLSAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlQmluYXJ5WG1sTmFtZSgma2V5TG9jYXRvci0+a2V5TmFtZSwgZGVjb2RlcikpKQotICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgaWYgKChlcnJvciA9IGRlY29kZUtleU5hbWVEYXRhKGtleUxvY2F0b3IsIGRlY29kZXIpKSkKLSAgICAgICAgICByZXR1cm4gZXJyb3I7ICAgICAgICAKLSAgICAgICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50Q2xvc2UoZGVjb2RlcikpKQotICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl9kZWNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yX3VucmVjb2duaXplZF9rZXlfbG9jYXRvcl90eXBlOwotICAgIH0KLSAgfQotCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudENsb3NlKGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlT3B0aW9uYWxCaW5hcnlYbWxLZXlMb2NhdG9yKHN0cnVjdCBuZG5fS2V5TG9jYXRvciAqa2V5TG9jYXRvciwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKQotewotICBpbnQgZ290RXhwZWN0ZWRUYWc7Ci0gIG5kbl9FcnJvciBlcnJvcjsgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5TG9jYXRvciwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICBpZiAoKGVycm9yID0gbmRuX2RlY29kZUJpbmFyeVhtbEtleUxvY2F0b3Ioa2V5TG9jYXRvciwgZGVjb2RlcikpKQotICAgICAgcmV0dXJuIGVycm9yOwotICB9Ci0gIGVsc2UKLSAgICBuZG5fS2V5TG9jYXRvcl9pbml0aWFsaXplKGtleUxvY2F0b3IsIGtleUxvY2F0b3ItPmtleU5hbWUuY29tcG9uZW50cywga2V5TG9jYXRvci0+a2V5TmFtZS5tYXhDb21wb25lbnRzKTsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwta2V5LmggYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWtleS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmQ4ZjU0Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwta2V5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MS0VZX0gKLSNkZWZpbmUgTkROX0JJTkFSWVhNTEtFWV9ICi0KLSNpbmNsdWRlICIuLi9rZXktbG9jYXRvci5oIgotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZW5jb2Rlci5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogRW5jb2RlIHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QgdXNpbmcgQmluYXJ5IFhNTC4gIElmIGtleUxvY2F0b3ItPnR5cGUgaXMgLTEsIHRoZW4gZG8gbm90aGluZy4gCi0gKiBAcGFyYW0ga2V5TG9jYXRvciBwb2ludGVyIHRvIHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QKLSAqIEBwYXJhbSBlbmNvZGVyIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdAotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUKLSAqLwotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxLZXlMb2NhdG9yKHN0cnVjdCBuZG5fS2V5TG9jYXRvciAqa2V5TG9jYXRvciwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKTsKLQotLyoqCi0gKiBFeHBlY3QgdGhlIG5leHQgZWxlbWVudCB0byBiZSBhIEJpbmFyeSBYTUwgS2V5TG9jYXRvciBhbmQgZGVjb2RlIGludG8gdGhlIG5kbl9LZXlMb2NhdG9yIHN0cnVjdC4KLSAqIEBwYXJhbSBrZXlMb2NhdG9yIHBvaW50ZXIgdG8gdGhlIG5kbl9LZXlMb2NhdG9yIHN0cnVjdAotICogQHBhcmFtIGRlY29kZXIgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGlmIHRoZSBuZXh0IGVsZW1lbnQgaXMgbm90IEtleUxvY2F0b3IuCi0gKi8KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sS2V5TG9jYXRvcihzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKmtleUxvY2F0b3IsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2Rlcik7Ci0KLS8qKgotICogUGVlayB0aGUgbmV4dCBlbGVtZW50IGFuZCBpZiBpdCBpcyBhIEJpbmFyeSBYTUwgS2V5TG9jYXRvciBhbmQgZGVjb2RlIGludG8gdGhlIG5kbl9LZXlMb2NhdG9yIHN0cnVjdC4KLSAqIE90aGVyd2lzZSwgc2V0IHRoZSBuZG5fS2V5TG9jYXRvciBzdHJ1Y3QgdG8gbm9uZS4KLSAqIEBwYXJhbSBrZXlMb2NhdG9yIHBvaW50ZXIgdG8gdGhlIG5kbl9LZXlMb2NhdG9yIHN0cnVjdAotICogQHBhcmFtIGRlY29kZXIgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGlmIHRoZSBuZXh0IGVsZW1lbnQgaXMgbm90IEtleUxvY2F0b3IuCi0gKi8KLW5kbl9FcnJvciBuZG5fZGVjb2RlT3B0aW9uYWxCaW5hcnlYbWxLZXlMb2NhdG9yKHN0cnVjdCBuZG5fS2V5TG9jYXRvciAqa2V5TG9jYXRvciwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLW5hbWUuYyBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtbmFtZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGY4MWMzLi4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtbmFtZS5jCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogRGVyaXZlZCBmcm9tIE5hbWUuanMgYnkgTWVraSBDaGVyYW91aS4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1uYW1lLmgiCi0KLW5kbl9FcnJvciBuZG5fZW5jb2RlQmluYXJ5WG1sTmFtZShzdHJ1Y3QgbmRuX05hbWUgKm5hbWUsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRW5jb2RlciAqZW5jb2RlcikKLXsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVFbGVtZW50U3RhcnREVGFnKGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19OYW1lKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgc2l6ZV90IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCBuYW1lLT5uQ29tcG9uZW50czsgKytpKSB7Ci0gICAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxFbmNvZGVyX3dyaXRlQmxvYkRUYWdFbGVtZW50KGVuY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Db21wb25lbnQsICZuYW1lLT5jb21wb25lbnRzW2ldLnZhbHVlKSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRW5jb2Rlcl93cml0ZUVsZW1lbnRDbG9zZShlbmNvZGVyKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX2RlY29kZUJpbmFyeVhtbE5hbWUoc3RydWN0IG5kbl9OYW1lICpuYW1lLCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9CaW5hcnlYbWxEZWNvZGVyX3JlYWRFbGVtZW50U3RhcnREVGFnKGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19OYW1lKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICAgIAotICBuYW1lLT5uQ29tcG9uZW50cyA9IDA7Ci0gIHdoaWxlICgxKSB7Ci0gICAgaW50IGdvdEV4cGVjdGVkVGFnOwotICAgIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9wZWVrRFRhZyhkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfQ29tcG9uZW50LCAmZ290RXhwZWN0ZWRUYWcpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICAKLSAgICBpZiAoIWdvdEV4cGVjdGVkVGFnKQotICAgICAgLy8gTm8gbW9yZSBjb21wb25lbnRzLgotICAgICAgYnJlYWs7Ci0gICAgCi0gICAgc3RydWN0IG5kbl9CbG9iIGNvbXBvbmVudDsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcmVhZEJpbmFyeURUYWdFbGVtZW50KGRlY29kZXIsIG5kbl9CaW5hcnlYbWxfRFRhZ19Db21wb25lbnQsIDAsICZjb21wb25lbnQpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgICBpZiAoKGVycm9yID0gbmRuX05hbWVfYXBwZW5kQmxvYihuYW1lLCAmY29tcG9uZW50KSkpCi0gICAgICByZXR1cm4gZXJyb3I7Ci0gIH0KLSAgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkRWxlbWVudENsb3NlKGRlY29kZXIpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19CmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLW5hbWUuaCBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtbmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjlkZmM1Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtbmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTE5BTUVfSAotI2RlZmluZSBORE5fQklOQVJZWE1MTkFNRV9ICi0KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLSNpbmNsdWRlICIuLi9uYW1lLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1lbmNvZGVyLmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotbmRuX0Vycm9yIG5kbl9lbmNvZGVCaW5hcnlYbWxOYW1lKHN0cnVjdCBuZG5fTmFtZSAqbmFtZSwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKTsKLQotbmRuX0Vycm9yIG5kbl9kZWNvZGVCaW5hcnlYbWxOYW1lKHN0cnVjdCBuZG5fTmFtZSAqbmFtZSwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzQ4MTQ3Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBEZXJpdmVkIGZyb20gUHVibGlzaGVyUHVibGljS2V5RGlnZXN0LmpzIGJ5IE1la2kgQ2hlcmFvdWkuCi0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImJpbmFyeS14bWwuaCIKLSNpbmNsdWRlICJiaW5hcnkteG1sLXB1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oIgotCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdAotICAoc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgKnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKQoteyAgCi0gIGlmICghcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QudmFsdWUgfHwgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QubGVuZ3RoID09IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbEVuY29kZXJfd3JpdGVCbG9iRFRhZ0VsZW1lbnQKLSAgICAgIChlbmNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCAmcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlQmluYXJ5WG1sUHVibGlzaGVyUHVibGljS2V5RGlnZXN0Ci0gIChzdHJ1Y3QgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCAqcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgKmRlY29kZXIpCi17Ci0gIG5kbl9FcnJvciBlcnJvcjsgCi0gIGlmICgoZXJyb3IgPSBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9yZWFkQmluYXJ5RFRhZ0VsZW1lbnQKLSAgICAgIChkZWNvZGVyLCBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVyUHVibGljS2V5RGlnZXN0LCAwLCAmcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QpKSkKLSAgICByZXR1cm4gZXJyb3I7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fZGVjb2RlT3B0aW9uYWxCaW5hcnlYbWxQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QKLSAgKHN0cnVjdCBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0ICpwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIHN0cnVjdCBuZG5fQmluYXJ5WG1sRGVjb2RlciAqZGVjb2RlcikKLXsKLSAgaW50IGdvdEV4cGVjdGVkVGFnOwotICBuZG5fRXJyb3IgZXJyb3I7IAotICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcoZGVjb2RlciwgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgJmdvdEV4cGVjdGVkVGFnKSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBpZiAoZ290RXhwZWN0ZWRUYWcpIHsKLSAgICBpZiAoKGVycm9yID0gbmRuX2RlY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdChwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIGRlY29kZXIpKSkKLSAgICAgIHJldHVybiBlcnJvcjsKLSAgfQotICBlbHNlIHsKLSAgICBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QtPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC52YWx1ZSA9IDA7Ci0gICAgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QubGVuZ3RoID0gMDsKLSAgfQotICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCBiL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzYyMDUuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxQVUJMSVNIRVJQVUJMSUNLRVlESUdFU1RfSAotI2RlZmluZSBORE5fQklOQVJZWE1MUFVCTElTSEVSUFVCTElDS0VZRElHRVNUX0gKLQotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotI2luY2x1ZGUgIi4uL3B1Ymxpc2hlci1wdWJsaWMta2V5LWRpZ2VzdC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZW5jb2Rlci5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogRW5jb2RlIHRoZSBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHN0cnVjdCB1c2luZyBCaW5hcnkgWE1MLiAgSWYgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0LT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Qgb3IKLSAqIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdExlbmd0aCBpcyAwLCB0aGVuIGRvIG5vdGhpbmcuIAotICogQHBhcmFtIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBwb2ludGVyIHRvIHRoZSBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHN0cnVjdAotICogQHBhcmFtIGVuY29kZXIgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZQotICovCi1uZG5fRXJyb3IgbmRuX2VuY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdAotICAoc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgKnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgc3RydWN0IG5kbl9CaW5hcnlYbWxFbmNvZGVyICplbmNvZGVyKTsKLQotLyoqCi0gKiBFeHBlY3QgdGhlIG5leHQgZWxlbWVudCB0byBiZSBhIEJpbmFyeSBYTUwgUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IGFuZCBkZWNvZGUgaW50byB0aGUgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBzdHJ1Y3QuCi0gKiBAcGFyYW0gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHBvaW50ZXIgdG8gdGhlIG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Qgc3RydWN0Ci0gKiBAcGFyYW0gZGVjb2RlciBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sRGVjb2RlciBzdHJ1Y3QKLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLCBpbmNsdWRpbmcgaWYgdGhlIG5leHQgZWxlbWVudCBpcyBub3QgUHVibGlzaGVyUHVibGljS2V5RGlnZXN0LgotICovCi1uZG5fRXJyb3IgbmRuX2RlY29kZUJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdAotICAoc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgKnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKTsKLQotLyoqCi0gKiBQZWVrIHRoZSBuZXh0IGVsZW1lbnQgYW5kIGlmIGl0IGlzIGEgQmluYXJ5IFhNTCBQdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgYW5kIGRlY29kZSBpbnRvIHRoZSBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHN0cnVjdC4KLSAqIE90aGVyd2lzZSwgc2V0IHRoZSBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHN0cnVjdCB0byBub25lLgotICogQHBhcmFtIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBwb2ludGVyIHRvIHRoZSBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0IHN0cnVjdAotICogQHBhcmFtIGRlY29kZXIgcG9pbnRlciB0byB0aGUgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0Ci0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSwgaW5jbHVkaW5nIGlmIHRoZSBuZXh0IGVsZW1lbnQgaXMgbm90IFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdC4KLSAqLwotbmRuX0Vycm9yIG5kbl9kZWNvZGVPcHRpb25hbEJpbmFyeVhtbFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdAotICAoc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgKnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyICpkZWNvZGVyKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXN0cnVjdHVyZS1kZWNvZGVyLmMgYi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLXN0cnVjdHVyZS1kZWNvZGVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZTJmMDkuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiLi4vdXRpbC9uZG5fbWVtb3J5LmgiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZGVjb2Rlci5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaCIKLQotdm9pZCBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9pbml0aWFsaXplKHN0cnVjdCBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciAqc2VsZikgCi17Ci0gIHNlbGYtPmdvdEVsZW1lbnRFbmQgPSAwOwotICBzZWxmLT5vZmZzZXQgPSAwOwotICBzZWxmLT5sZXZlbCA9IDA7Ci0gIHNlbGYtPnN0YXRlID0gbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfUkVBRF9IRUFERVJfT1JfQ0xPU0U7Ci0gIHNlbGYtPmhlYWRlckxlbmd0aCA9IDA7Ci0gIHNlbGYtPnVzZUhlYWRlckJ1ZmZlciA9IDA7Ci0gIHNlbGYtPm5CeXRlc1RvUmVhZCA9IDA7Ci19Ci0KLS8qKgotICogU2V0IHRoZSBzdGF0ZSB0byBSRUFEX0hFQURFUl9PUl9DTE9TRSBhbmQgc2V0IHVwIHRvIHN0YXJ0IHJlYWRpbmcgdGhlIGhlYWRlci4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0SGVhZGVyKHN0cnVjdCBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciAqc2VsZikKLXsKLSAgc2VsZi0+aGVhZGVyTGVuZ3RoID0gMDsKLSAgc2VsZi0+dXNlSGVhZGVyQnVmZmVyID0gMDsKLSAgc2VsZi0+c3RhdGUgPSBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9SRUFEX0hFQURFUl9PUl9DTE9TRTsgICAgCi19Ci0KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9maW5kRWxlbWVudEVuZAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyICpzZWxmLCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKSAKLXsKLSAgaWYgKHNlbGYtPmdvdEVsZW1lbnRFbmQpCi0gICAgLy8gU29tZW9uZSBpcyBjYWxsaW5nIHdoZW4gd2UgYWxyZWFkeSBnb3QgdGhlIGVuZC4KLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gIAotICBzdHJ1Y3QgbmRuX0JpbmFyeVhtbERlY29kZXIgZGVjb2RlcjsKLSAgbmRuX0JpbmFyeVhtbERlY29kZXJfaW5pdGlhbGl6ZSgmZGVjb2RlciwgaW5wdXQsIGlucHV0TGVuZ3RoKTsKLSAgCi0gIHdoaWxlICgxKSB7Ci0gICAgaWYgKHNlbGYtPm9mZnNldCA+PSBpbnB1dExlbmd0aCkKLSAgICAgIC8vIEFsbCB0aGUgY2FzZXMgYXNzdW1lIHdlIGhhdmUgc29tZSBpbnB1dC4gUmV0dXJuIGFuZCB3YWl0IGZvciBtb3JlLgotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAgIAotICAgIGlmIChzZWxmLT5zdGF0ZSA9PSBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9SRUFEX0hFQURFUl9PUl9DTE9TRSkgewotICAgICAgLy8gRmlyc3QgY2hlY2sgZm9yIENMT1NFLgotICAgICAgaWYgKHNlbGYtPmhlYWRlckxlbmd0aCA9PSAwICYmIGlucHV0W3NlbGYtPm9mZnNldF0gPT0gbmRuX0JpbmFyeVhtbF9DTE9TRSkgewotICAgICAgICArK3NlbGYtPm9mZnNldDsKLSAgICAgICAgLy8gQ2xvc2UgdGhlIGxldmVsLgotICAgICAgICAtLXNlbGYtPmxldmVsOwotICAgICAgICBpZiAoc2VsZi0+bGV2ZWwgPT0gMCkgewotICAgICAgICAgIC8vIEZpbmlzaGVkLgotICAgICAgICAgIHNlbGYtPmdvdEVsZW1lbnRFbmQgPSAxOwotICAgICAgICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2VsZi0+bGV2ZWwgPCAwKQotICAgICAgICAgIHJldHVybiBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfdW5leHBlY3RlZF9jbG9zZV90YWc7Ci0gICAgICAgICAgCi0gICAgICAgIC8vIEdldCByZWFkeSBmb3IgdGhlIG5leHQgaGVhZGVyLgotICAgICAgICBzdGFydEhlYWRlcihzZWxmKTsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICAgIAotICAgICAgc2l6ZV90IHN0YXJ0aW5nSGVhZGVyTGVuZ3RoID0gc2VsZi0+aGVhZGVyTGVuZ3RoOwotICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKHNlbGYtPm9mZnNldCA+PSBpbnB1dExlbmd0aCkgewotICAgICAgICAgIC8vIFdlIGNhbid0IGdldCBhbGwgb2YgdGhlIGhlYWRlciBieXRlcyBmcm9tIHRoaXMgaW5wdXQuIFNhdmUgaW4gaGVhZGVyQnVmZmVyLgotICAgICAgICAgIGlmIChzZWxmLT5oZWFkZXJMZW5ndGggPiBzaXplb2Yoc2VsZi0+aGVhZGVyQnVmZmVyKSkKLSAgICAgICAgICAgIHJldHVybiBORE5fRVJST1JfY2Fubm90X3N0b3JlX21vcmVfaGVhZGVyX2J5dGVzX3RoYW5fdGhlX3NpemVfb2ZfaGVhZGVyQnVmZmVyOwotICAgICAgICAgIHNlbGYtPnVzZUhlYWRlckJ1ZmZlciA9IDE7Ci0gICAgICAgICAgc2l6ZV90IG5OZXdCeXRlcyA9IHNlbGYtPmhlYWRlckxlbmd0aCAtIHN0YXJ0aW5nSGVhZGVyTGVuZ3RoOwotICAgICAgICAgIG5kbl9tZW1jcHkoc2VsZi0+aGVhZGVyQnVmZmVyICsgc3RhcnRpbmdIZWFkZXJMZW5ndGgsIGlucHV0ICsgKHNlbGYtPm9mZnNldCAtIG5OZXdCeXRlcyksIG5OZXdCeXRlcyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgaW50IGhlYWRlckJ5dGUgPSAodW5zaWduZWQgaW50KWlucHV0W3NlbGYtPm9mZnNldCsrXTsKLSAgICAgICAgKytzZWxmLT5oZWFkZXJMZW5ndGg7Ci0gICAgICAgIGlmIChoZWFkZXJCeXRlICYgbmRuX0JpbmFyeVhtbF9UVF9GSU5BTCkKLSAgICAgICAgICAvLyBCcmVhayBhbmQgcmVhZCB0aGUgaGVhZGVyLgotICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgICAKLSAgICAgIHVuc2lnbmVkIGludCB0eXBlOwotICAgICAgdW5zaWduZWQgaW50IHZhbHVlOwotICAgICAgaWYgKHNlbGYtPnVzZUhlYWRlckJ1ZmZlcikgewotICAgICAgICAvLyBDb3B5IHRoZSByZW1haW5pbmcgYnl0ZXMgaW50byBoZWFkZXJCdWZmZXIuCi0gICAgICAgIGlmIChzZWxmLT5oZWFkZXJMZW5ndGggPiBzaXplb2Yoc2VsZi0+aGVhZGVyQnVmZmVyKSkKLSAgICAgICAgICByZXR1cm4gTkROX0VSUk9SX2Nhbm5vdF9zdG9yZV9tb3JlX2hlYWRlcl9ieXRlc190aGFuX3RoZV9zaXplX29mX2hlYWRlckJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IG5OZXdCeXRlcyA9IHNlbGYtPmhlYWRlckxlbmd0aCAtIHN0YXJ0aW5nSGVhZGVyTGVuZ3RoOwotICAgICAgICBuZG5fbWVtY3B5KHNlbGYtPmhlYWRlckJ1ZmZlciArIHN0YXJ0aW5nSGVhZGVyTGVuZ3RoLCBpbnB1dCArIChzZWxmLT5vZmZzZXQgLSBuTmV3Qnl0ZXMpLCBuTmV3Qnl0ZXMpOwotCi0gICAgICAgIC8vIFVzZSBhIGxvY2FsIGRlY29kZXIganVzdCBmb3IgdGhlIGhlYWRlckJ1ZmZlci4KLSAgICAgICAgc3RydWN0IG5kbl9CaW5hcnlYbWxEZWNvZGVyIGJ1ZmZlckRlY29kZXI7Ci0gICAgICAgIG5kbl9CaW5hcnlYbWxEZWNvZGVyX2luaXRpYWxpemUoJmJ1ZmZlckRlY29kZXIsIHNlbGYtPmhlYWRlckJ1ZmZlciwgc2l6ZW9mKHNlbGYtPmhlYWRlckJ1ZmZlcikpOwotICAgICAgICBpZiAobmRuX0JpbmFyeVhtbERlY29kZXJfZGVjb2RlVHlwZUFuZFZhbHVlKCZidWZmZXJEZWNvZGVyLCAmdHlwZSwgJnZhbHVlKSkKLSAgICAgICAgICByZXR1cm4gTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX2Nhbm5vdF9yZWFkX2hlYWRlcl90eXBlX2FuZF92YWx1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICAvLyBXZSBkaWRuJ3QgaGF2ZSB0byB1c2UgdGhlIGhlYWRlckJ1ZmZlci4KLSAgICAgICAgbmRuX0JpbmFyeVhtbERlY29kZXJfc2VlaygmZGVjb2Rlciwgc2VsZi0+b2Zmc2V0IC0gc2VsZi0+aGVhZGVyTGVuZ3RoKTsKLSAgICAgICAgaWYgKG5kbl9CaW5hcnlYbWxEZWNvZGVyX2RlY29kZVR5cGVBbmRWYWx1ZSgmZGVjb2RlciwgJnR5cGUsICZ2YWx1ZSkpCi0gICAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl9maW5kRWxlbWVudEVuZF9jYW5ub3RfcmVhZF9oZWFkZXJfdHlwZV9hbmRfdmFsdWU7Ci0gICAgICB9Ci0gICAgICAgIAotICAgICAgLy8gU2V0IHRoZSBuZXh0IHN0YXRlIGJhc2VkIG9uIHRoZSB0eXBlLgotICAgICAgaWYgKHR5cGUgPT0gbmRuX0JpbmFyeVhtbF9EQVRUUikKLSAgICAgICAgLy8gV2UgYWxyZWFkeSBjb25zdW1lZCB0aGUgaXRlbS4gUkVBRF9IRUFERVJfT1JfQ0xPU0UgYWdhaW4uCi0gICAgICAgIC8vIEJpbmFyeSBYTUwgaGFzIHJ1bGVzIGFib3V0IHdoYXQgbXVzdCBmb2xsb3cgYW4gYXR0cmlidXRlLCBidXQgd2UgYXJlIGp1c3Qgc2Nhbm5pbmcuCi0gICAgICAgIHN0YXJ0SGVhZGVyKHNlbGYpOwotICAgICAgZWxzZSBpZiAodHlwZSA9PSBuZG5fQmluYXJ5WG1sX0RUQUcgfHwgdHlwZSA9PSBuZG5fQmluYXJ5WG1sX0VYVCkgewotICAgICAgICAvLyBTdGFydCBhIG5ldyBsZXZlbCBhbmQgUkVBRF9IRUFERVJfT1JfQ0xPU0UgYWdhaW4uCi0gICAgICAgICsrc2VsZi0+bGV2ZWw7Ci0gICAgICAgIHN0YXJ0SGVhZGVyKHNlbGYpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAodHlwZSA9PSBuZG5fQmluYXJ5WG1sX1RBRyB8fCB0eXBlID09IG5kbl9CaW5hcnlYbWxfQVRUUikgewotICAgICAgICBpZiAodHlwZSA9PSBuZG5fQmluYXJ5WG1sX1RBRykKLSAgICAgICAgICAvLyBTdGFydCBhIG5ldyBsZXZlbCBhbmQgcmVhZCB0aGUgdGFnLgotICAgICAgICAgICsrc2VsZi0+bGV2ZWw7Ci0gICAgICAgIC8vIE1pbmltdW0gdGFnIG9yIGF0dHJpYnV0ZSBsZW5ndGggaXMgMS4KLSAgICAgICAgc2VsZi0+bkJ5dGVzVG9SZWFkID0gdmFsdWUgKyAxOwotICAgICAgICBzZWxmLT5zdGF0ZSA9IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX1JFQURfQllURVM7Ci0gICAgICAgIC8vIEJpbmFyeSBYTUwgaGFzIHJ1bGVzIGFib3V0IHdoYXQgbXVzdCBmb2xsb3cgYW4gYXR0cmlidXRlLCBidXQgd2UgYXJlIGp1c3Qgc2Nhbm5pbmcuCi0gICAgICB9Ci0gICAgICBlbHNlIGlmICh0eXBlID09IG5kbl9CaW5hcnlYbWxfQkxPQiB8fCB0eXBlID09IG5kbl9CaW5hcnlYbWxfVURBVEEpIHsKLSAgICAgICAgc2VsZi0+bkJ5dGVzVG9SZWFkID0gdmFsdWU7Ci0gICAgICAgIHNlbGYtPnN0YXRlID0gbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfUkVBRF9CWVRFUzsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIE5ETl9FUlJPUl9maW5kRWxlbWVudEVuZF91bnJlY29nbml6ZWRfaGVhZGVyX3R5cGU7Ci0gICAgfSAgCi0gICAgZWxzZSBpZiAoc2VsZi0+c3RhdGUgPT0gbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfUkVBRF9CWVRFUykgewotICAgICAgc2l6ZV90IG5SZW1haW5pbmdCeXRlcyA9IGlucHV0TGVuZ3RoIC0gc2VsZi0+b2Zmc2V0OwotICAgICAgaWYgKG5SZW1haW5pbmdCeXRlcyA8IHNlbGYtPm5CeXRlc1RvUmVhZCkgewotICAgICAgICAvLyBOZWVkIG1vcmUuCi0gICAgICAgIHNlbGYtPm9mZnNldCArPSBuUmVtYWluaW5nQnl0ZXM7Ci0gICAgICAgIHNlbGYtPm5CeXRlc1RvUmVhZCAtPSBuUmVtYWluaW5nQnl0ZXM7Ci0gICAgICAgIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSAgICAgIH0KLSAgICAgIC8vIEdvdCB0aGUgYnl0ZXMuIFJlYWQgYSBuZXcgaGVhZGVyIG9yIGNsb3NlLgotICAgICAgc2VsZi0+b2Zmc2V0ICs9IHNlbGYtPm5CeXRlc1RvUmVhZDsKLSAgICAgIHN0YXJ0SGVhZGVyKHNlbGYpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhpcyB0byBoYXBwZW4uCi0gICAgICByZXR1cm4gTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VucmVjb2duaXplZF9zdGF0ZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTVhZDA4Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9CSU5BUllYTUxTVFJVQ1RVUkVERUNPREVSX0gKLSNkZWZpbmUgTkROX0JJTkFSWVhNTFNUUlVDVFVSRURFQ09ERVJfSAotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy9jb21tb24uaD4KLSNpbmNsdWRlICIuLi9lcnJvcnMuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1zdHJ1Y3QgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgewotICBpbnQgZ290RWxlbWVudEVuZDsgLyoqPCBib29sZWFuICovCi0gIHNpemVfdCBvZmZzZXQ7Ci0gIGludCBsZXZlbDsKLSAgaW50IHN0YXRlOwotICBzaXplX3QgaGVhZGVyTGVuZ3RoOwotICBpbnQgdXNlSGVhZGVyQnVmZmVyOyAvKio8IGJvb2xlYW4gKi8KLSAgLy8gMTAgYnl0ZXMgaXMgZW5vdWdoIHRvIGhvbGQgYW4gZW5jb2RlZCBoZWFkZXIgd2l0aCBhIHR5cGUgYW5kIGEgNjQgYml0IHZhbHVlLgotICB1aW50OF90IGhlYWRlckJ1ZmZlclsxMF07Ci0gIGludCBuQnl0ZXNUb1JlYWQ7Ci19OwotCi1lbnVtIHsKLSAgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfUkVBRF9IRUFERVJfT1JfQ0xPU0UsCi0gIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX1JFQURfQllURVMKLX07Ci0KLXZvaWQgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgKnNlbGYpOwotICAgICAgICAKLS8qKgotICogQ29udGludWUgc2Nhbm5pbmcgaW5wdXQgc3RhcnRpbmcgZnJvbSBzZWxmLT5vZmZzZXQgdG8gZmluZCB0aGUgZWxlbWVudCBlbmQuICBPbiByZXR1cm4sIHlvdSBtdXN0IGNoZWNrCi0gKiAgIHNlbGYtPmdvdEVsZW1lbnRFbmQ6IElmIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQgd2hpY2ggc3RhcnRlZCBhdCBvZmZzZXQgMCBpcyBmb3VuZCwgCi0gKiAgIHRoZW4gc2VsZi0+Z290RWxlbWVudEVuZCBpcyAxIGFuZCBzZWxmLT5vZmZzZXQgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZWxlbWVudC4gIE90aGVyd2lzZSwgc2VsZi1mb3JFbGVtZW50RW5kIGlzIDAgCi0gKiAgIHdoaWNoIG1lYW5zIHlvdSBzaG91bGQgcmVhZCBtb3JlIGludG8gaW5wdXQgYW5kIGNhbGwgYWdhaW4uCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciBzdHJ1Y3QKLSAqIEBwYXJhbSBpbnB1dCB0aGUgaW5wdXQgYnVmZmVyLiBZb3UgaGF2ZSB0byBwYXNzIGluIGlucHV0IGVhY2ggdGltZSBiZWNhdXNlIHRoZSBidWZmZXIgY291bGQgYmUgcmVhbGxvY2F0ZWQuCi0gKiBAcGFyYW0gaW5wdXRMZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyBpbiBpbnB1dC4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlCi0gKi8KLW5kbl9FcnJvciBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2Rlcl9maW5kRWxlbWVudEVuZAotICAoc3RydWN0IG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyICpzZWxmLCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKTsKLQotLyoqCi0gKiBTZXQgdGhlIG9mZnNldCBpbnRvIHRoZSBpbnB1dCwgdXNlZCBmb3IgdGhlIG5leHQgcmVhZC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyIHN0cnVjdAotICogQHBhcmFtIG9mZnNldCB0aGUgbmV3IG9mZnNldAotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfc2VlayhzdHJ1Y3QgbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIgKnNlbGYsIHNpemVfdCBvZmZzZXQpIAotewotICBzZWxmLT5vZmZzZXQgPSBvZmZzZXQ7Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC5oIGIvc3JjL2MvZW5jb2RpbmcvYmluYXJ5LXhtbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzY5NThiLi4wMDAwMDAwCi0tLSBhL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQklOQVJZWE1MX0gKLSNkZWZpbmUgTkROX0JJTkFSWVhNTF9ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotZW51bSB7Ci0gIG5kbl9CaW5hcnlYbWxfRVhUID0gMHgwMCwgICAKLSAgbmRuX0JpbmFyeVhtbF9UQUcgPSAweDAxLCAKLSAgbmRuX0JpbmFyeVhtbF9EVEFHID0gMHgwMiwgCi0gIG5kbl9CaW5hcnlYbWxfQVRUUiA9IDB4MDMsIAotICBuZG5fQmluYXJ5WG1sX0RBVFRSID0gMHgwNCwgCi0gIG5kbl9CaW5hcnlYbWxfQkxPQiA9IDB4MDUsIAotICBuZG5fQmluYXJ5WG1sX1VEQVRBID0gMHgwNiwgCi0gIG5kbl9CaW5hcnlYbWxfQ0xPU0UgPSAweDAsCi0KLSAgbmRuX0JpbmFyeVhtbF9UVF9CSVRTID0gMywKLSAgbmRuX0JpbmFyeVhtbF9UVF9NQVNLID0gKCgxIDw8IG5kbl9CaW5hcnlYbWxfVFRfQklUUykgLSAxKSwKLSAgbmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9CSVRTID0gNCwKLSAgbmRuX0JpbmFyeVhtbF9UVF9WQUxVRV9NQVNLID0gKCgxIDw8IChuZG5fQmluYXJ5WG1sX1RUX1ZBTFVFX0JJVFMpKSAtIDEpLAotICBuZG5fQmluYXJ5WG1sX1JFR1VMQVJfVkFMVUVfQklUUyA9IDcsCi0gIG5kbl9CaW5hcnlYbWxfUkVHVUxBUl9WQUxVRV9NQVNLID0gKCgxIDw8IG5kbl9CaW5hcnlYbWxfUkVHVUxBUl9WQUxVRV9CSVRTKSAtIDEpLAotICBuZG5fQmluYXJ5WG1sX1RUX0ZJTkFMID0gMHg4MCwKLQotICBuZG5fQmluYXJ5WG1sX0RUYWdfQW55ID0gMTMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19OYW1lID0gMTQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db21wb25lbnQgPSAxNSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0NlcnRpZmljYXRlID0gMTYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db2xsZWN0aW9uID0gMTcsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db21wbGV0ZU5hbWUgPSAxOCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbnRlbnQgPSAxOSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1NpZ25lZEluZm8gPSAyMCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbnRlbnREaWdlc3QgPSAyMSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbnRlbnRIYXNoID0gMjIsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Db3VudCA9IDI0LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfSGVhZGVyID0gMjUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19JbnRlcmVzdCA9IDI2LCAgLyogMjAwOTA5MTUgKi8KLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0tleSA9IDI3LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5TG9jYXRvciA9IDI4LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5TmFtZSA9IDI5LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTGVuZ3RoID0gMzAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19MaW5rID0gMzEsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19MaW5rQXV0aGVudGljYXRvciA9IDMyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTmFtZUNvbXBvbmVudENvdW50ID0gMzMsICAvKiBEZXByZWNhdGVkSW5JbnRlcmVzdCAqLwotICBuZG5fQmluYXJ5WG1sX0RUYWdfUm9vdERpZ2VzdCA9IDM2LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU2lnbmF0dXJlID0gMzcsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TdGFydCA9IDM4LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfVGltZXN0YW1wID0gMzksCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19UeXBlID0gNDAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Ob25jZSA9IDQxLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU2NvcGUgPSA0MiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0V4Y2x1ZGUgPSA0MywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0Jsb29tID0gNDQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19CbG9vbVNlZWQgPSA0NSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0Fuc3dlck9yaWdpbktpbmQgPSA0NywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0ludGVyZXN0TGlmZXRpbWUgPSA0OCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1dpdG5lc3MgPSA1MywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1NpZ25hdHVyZUJpdHMgPSA1NCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0RpZ2VzdEFsZ29yaXRobSA9IDU1LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQmxvY2tTaXplID0gNTYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19GcmVzaG5lc3NTZWNvbmRzID0gNTgsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19GaW5hbEJsb2NrSUQgPSA1OSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCA9IDYwLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVyQ2VydGlmaWNhdGVEaWdlc3QgPSA2MSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1B1Ymxpc2hlcklzc3VlcktleURpZ2VzdCA9IDYyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUHVibGlzaGVySXNzdWVyQ2VydGlmaWNhdGVEaWdlc3QgPSA2MywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0NvbnRlbnRPYmplY3QgPSA2NCwgIC8qIDIwMDkwOTE1ICovCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19XcmFwcGVkS2V5ID0gNjUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19XcmFwcGluZ0tleUlkZW50aWZpZXIgPSA2NiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1dyYXBBbGdvcml0aG0gPSA2NywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0tleUFsZ29yaXRobSA9IDY4LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTGFiZWwgPSA2OSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0VuY3J5cHRlZEtleSA9IDcwLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfRW5jcnlwdGVkTm9uY2VLZXkgPSA3MSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1dyYXBwaW5nS2V5TmFtZSA9IDcyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQWN0aW9uID0gNzMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19GYWNlSUQgPSA3NCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0lQUHJvdG8gPSA3NSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0hvc3QgPSA3NiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1BvcnQgPSA3NywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX011bHRpY2FzdEludGVyZmFjZSA9IDc4LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfRm9yd2FyZGluZ0ZsYWdzID0gNzksCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19GYWNlSW5zdGFuY2UgPSA4MCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0ZvcndhcmRpbmdFbnRyeSA9IDgxLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTXVsdGljYXN0VFRMID0gODIsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19NaW5TdWZmaXhDb21wb25lbnRzID0gODMsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19NYXhTdWZmaXhDb21wb25lbnRzID0gODQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19DaGlsZFNlbGVjdG9yID0gODUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19SZXBvc2l0b3J5SW5mbyA9IDg2LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfVmVyc2lvbiA9IDg3LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUmVwb3NpdG9yeVZlcnNpb24gPSA4OCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0dsb2JhbFByZWZpeCA9IDg5LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfTG9jYWxOYW1lID0gOTAsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Qb2xpY3kgPSA5MSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX05hbWVzcGFjZSA9IDkyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfR2xvYmFsUHJlZml4TmFtZSA9IDkzLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUG9saWN5VmVyc2lvbiA9IDk0LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfS2V5VmFsdWVTZXQgPSA5NSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0tleVZhbHVlUGFpciA9IDk2LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfSW50ZWdlclZhbHVlID0gOTcsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19EZWNpbWFsVmFsdWUgPSA5OCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N0cmluZ1ZhbHVlID0gOTksCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19CaW5hcnlWYWx1ZSA9IDEwMCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX05hbWVWYWx1ZSA9IDEwMSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX0VudHJ5ID0gMTAyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfQUNMID0gMTAzLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUGFyYW1ldGVyaXplZE5hbWUgPSAxMDQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19QcmVmaXggPSAxMDUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TdWZmaXggPSAxMDYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19Sb290ID0gMTA3LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfUHJvZmlsZU5hbWUgPSAxMDgsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19QYXJhbWV0ZXJzID0gMTA5LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfSW5mb1N0cmluZyA9IDExMCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N0YXR1c1Jlc3BvbnNlID0gMTEyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3RhdHVzQ29kZSA9IDExMywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N0YXR1c1RleHQgPSAxMTQsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jTm9kZSA9IDExNSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNOb2RlS2luZCA9IDExNiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNOb2RlRWxlbWVudCA9IDExNywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNWZXJzaW9uID0gMTE4LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3luY05vZGVFbGVtZW50cyA9IDExOSwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNDb250ZW50SGFzaCA9IDEyMCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNMZWFmQ291bnQgPSAxMjEsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jVHJlZURlcHRoID0gMTIyLAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU3luY0J5dGVDb3VudCA9IDEyMywKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNDb25maWdTbGljZSA9IDEyNCwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNDb25maWdTbGljZUxpc3QgPSAxMjUsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19TeW5jQ29uZmlnU2xpY2VPcCA9IDEyNiwKLSAgbmRuX0JpbmFyeVhtbF9EVGFnX1N5bmNOb2RlRGVsdGFzID0gMTI3LAotICBuZG5fQmluYXJ5WG1sX0RUYWdfU2VxdWVuY2VOdW1iZXIgPSAyNTYsCi0gIG5kbl9CaW5hcnlYbWxfRFRhZ19ORE5Qcm90b2NvbERhdGFVbml0ID0gMjA1ODc3NDQgLy8gdGhlIGVuY29kZWQgZW1wdHkgZWxlbWVudCwgdmlld2VkIGFzIGEgc3RyaW5nIGlzICJORE5cMjAyXDAwMCIKLX07Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZXJyb3JzLmMgYi9zcmMvYy9lcnJvcnMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I2YjhiYi4uMDAwMDAwMAotLS0gYS9zcmMvYy9lcnJvcnMuYworKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiZXJyb3JzLmgiCi0KLWNoYXIgKm5kbl9nZXRFcnJvclN0cmluZyhpbnQgZXJyb3IpCi17Ci0gIHN3aXRjaCAoZXJyb3IpIHsKLSAgY2FzZSBORE5fRVJST1Jfc3VjY2VzczoKLSAgICByZXR1cm4gICAgICAiU3VjY2VzcyI7IAotICBjYXNlIE5ETl9FUlJPUl9lbGVtZW50X29mX3ZhbHVlX2lzX25vdF9hX2RlY2ltYWxfZGlnaXQ6Ci0gICAgcmV0dXJuICAgICAgIkVsZW1lbnQgb2YgdmFsdWUgaXMgbm90IGEgZGVjaW1hbCBkaWdpdCI7Ci0gIGNhc2UgTkROX0VSUk9SX3JlYWRfcGFzdF90aGVfZW5kX29mX3RoZV9pbnB1dDoKLSAgICByZXR1cm4gICAgICAiUmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGlucHV0IjsKLSAgY2FzZSBORE5fRVJST1JfdGhlX2ZpcnN0X2hlYWRlcl9vY3RldF9tYXlfbm90X2JlX3plcm86Ci0gICAgcmV0dXJuICAgICAgIlRoZSBmaXJzdCBoZWFkZXIgb2N0ZXQgbWF5IG5vdCBiZSB6ZXJvIjsKLSAgY2FzZSBORE5fRVJST1JfaGVhZGVyX3R5cGVfaXNfbm90X2FfRFRBRzoKLSAgICByZXR1cm4gICAgICAiSGVhZGVyIHR5cGUgaXMgbm90IGEgRFRBRyI7Ci0gIGNhc2UgTkROX0VSUk9SX2RpZF9ub3RfZ2V0X3RoZV9leHBlY3RlZF9EVEFHOgotICAgIHJldHVybiAgICAgICJEaWQgbm90IGdldCB0aGUgZXhwZWN0ZWQgRFRBRyI7Ci0gIGNhc2UgTkROX0VSUk9SX2RpZF9ub3RfZ2V0X3RoZV9leHBlY3RlZF9lbGVtZW50X2Nsb3NlOgotICAgIHJldHVybiAgICAgICJEaWQgbm90IGdldCB0aGUgZXhwZWN0ZWQgZWxlbWVudCBjbG9zZSI7Ci0gIGNhc2UgTkROX0VSUk9SX2l0ZW1faXNfbm90X1VEQVRBOgotICAgIHJldHVybiAgICAgICJJdGVtIGlzIG5vdCBVREFUQSI7Ci0gIGNhc2UgTkROX0VSUk9SX2hlYWRlcl90eXBlX2lzX291dF9vZl9yYW5nZToKLSAgICByZXR1cm4gICAgICAiSGVhZGVyIHR5cGUgaXMgb3V0IG9mIHJhbmdlIjsKLSAgY2FzZSBORE5fRVJST1JfZW5jb2RlVHlwZUFuZFZhbHVlX21pc2NhbGN1bGF0ZWRfTl9lbmNvZGluZ19ieXRlczoKLSAgICByZXR1cm4gICAgICAiRW5jb2RlVHlwZUFuZFZhbHVlIG1pc2NhbGN1bGF0ZWQgTiBlbmNvZGluZyBieXRlcyI7Ci0gIGNhc2UgTkROX0VSUk9SX2F0dGVtcHRfdG9fYWRkX2FfY29tcG9uZW50X3Bhc3RfdGhlX21heGltdW1fbnVtYmVyX29mX2NvbXBvbmVudHNfYWxsb3dlZF9pbl90aGVfbmFtZToKLSAgICByZXR1cm4gICAgICAiQXR0ZW1wdCB0byBhZGQgYSBjb21wb25lbnQgcGFzdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29tcG9uZW50cyBhbGxvd2VkIGluIHRoZSBuYW1lIjsKLSAgY2FzZSBORE5fRVJST1JfcmVhZF9hbl9lbnRyeV9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9lbnRyaWVzX2FsbG93ZWRfaW5fdGhlX2V4Y2x1ZGU6Ci0gICAgcmV0dXJuICAgICAgIlJlYWQgYW4gZW50cnkgcGFzdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBhbGxvd2VkIGluIHRoZSBleGNsdWRlIjsKLSAgY2FzZSBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfdW5leHBlY3RlZF9jbG9zZV90YWc6Ci0gICAgcmV0dXJuICAgICAgIkZpbmRFbGVtZW50RW5kIHVuZXhwZWN0ZWQgY2xvc2UgdGFnIjsKLSAgY2FzZSBORE5fRVJST1JfY2Fubm90X3N0b3JlX21vcmVfaGVhZGVyX2J5dGVzX3RoYW5fdGhlX3NpemVfb2ZfaGVhZGVyQnVmZmVyOgotICAgIHJldHVybiAgICAgICJDYW5ub3Qgc3RvcmUgbW9yZSBoZWFkZXIgYnl0ZXMgdGhhbiB0aGUgc2l6ZSBvZiBoZWFkZXJCdWZmZXIiOwotICBjYXNlIE5ETl9FUlJPUl9maW5kRWxlbWVudEVuZF9jYW5ub3RfcmVhZF9oZWFkZXJfdHlwZV9hbmRfdmFsdWU6Ci0gICAgcmV0dXJuICAgICAgIkZpbmRFbGVtZW50RW5kIGNhbm5vdCByZWFkIGhlYWRlciB0eXBlIGFuZCB2YWx1ZSI7Ci0gIGNhc2UgTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VucmVjb2duaXplZF9oZWFkZXJfdHlwZToKLSAgICByZXR1cm4gICAgICAiRmluZEVsZW1lbnRFbmQgdW5yZWNvZ25pemVkIGhlYWRlciB0eXBlIjsKLSAgY2FzZSBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfdW5yZWNvZ25pemVkX3N0YXRlOgotICAgIHJldHVybiAgICAgICJGaW5kRWxlbWVudEVuZCB1bnJlY29nbml6ZWQgc3RhdGUiOwotICBjYXNlIE5ETl9FUlJPUl9EeW5hbWljVUludDhBcnJheV9yZWFsbG9jX2Z1bmN0aW9uX3BvaW50ZXJfbm90X3N1cHBsaWVkOgotICAgIHJldHVybiAgICAgICJEeW5hbWljVUludDhBcnJheSByZWFsbG9jIGZ1bmN0aW9uIHBvaW50ZXIgbm90IHN1cHBsaWVkIjsKLSAgY2FzZSBORE5fRVJST1JfRHluYW1pY1VJbnQ4QXJyYXlfcmVhbGxvY19mYWlsZWQ6Ci0gICAgcmV0dXJuICAgICAgIkR5bmFtaWNVSW50OEFycmF5IHJlYWxsb2MgZmFpbGVkIjsKLSAgY2FzZSBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9FeGNsdWRlVHlwZToKLSAgICByZXR1cm4gICAgICAiVW5yZWNvZ25pemVkIG5kbl9FeGNsdWRlVHlwZSI7Ci0gIGNhc2UgTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fQ29udGVudFR5cGU6Ci0gICAgcmV0dXJuICAgICAgIlVucmVjb2duaXplZCBuZG5fQ29udGVudFR5cGUiOwotICBjYXNlIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0tleUxvY2F0b3JUeXBlOgotICAgIHJldHVybiAgICAgICJVbnJlY29nbml6ZWQgbmRuX0tleUxvY2F0b3JUeXBlIjsKLSAgY2FzZSBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9LZXlOYW1lVHlwZToKLSAgICByZXR1cm4gICAgICAiVW5yZWNvZ25pemVkIG5kbl9LZXlOYW1lVHlwZSI7Ci0gIGNhc2UgTkROX0VSUk9SX2RlY29kZUJpbmFyeVhtbEtleUxvY2F0b3JfdW5yZWNvZ25pemVkX2tleV9sb2NhdG9yX3R5cGU6Ci0gICAgcmV0dXJuICAgICAgImRlY29kZUJpbmFyeVhtbEtleUxvY2F0b3IgdW5yZWNvZ25pemVkIGtleSBsb2NhdG9yIHR5cGUiOwotICBjYXNlIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX1NvY2tldFRyYW5zcG9ydDoKLSAgICByZXR1cm4gICAgICAiVW5yZWNvZ25pemVkIG5kbl9Tb2NrZXRUcmFuc3BvcnQiOwotICBjYXNlIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fZ2V0YWRkcmluZm86Ci0gICAgcmV0dXJuICAgICAgIlNvY2tldFRyYW5zcG9ydCBlcnJvciBpbiBnZXRhZGRyaW5mbyI7Ci0gIGNhc2UgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9jYW5ub3RfY29ubmVjdF90b19zb2NrZXQ6Ci0gICAgcmV0dXJuICAgICAgIlNvY2tldFRyYW5zcG9ydCBjYW5ub3QgY29ubmVjdCB0byBzb2NrZXQiOwotICBjYXNlIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfc29ja2V0X2lzX25vdF9vcGVuOgotICAgIHJldHVybiAgICAgICJTb2NrZXRUcmFuc3BvcnQgc29ja2V0IGlzIG5vdCBvcGVuIjsKLSAgY2FzZSBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX3NlbmQ6Ci0gICAgcmV0dXJuICAgICAgIlNvY2tldFRyYW5zcG9ydCBlcnJvciBpbiBzZW5kIjsKLSAgY2FzZSBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX3BvbGw6Ci0gICAgcmV0dXJuICAgICAgIlNvY2tldFRyYW5zcG9ydCBlcnJvciBpbiBwb2xsIjsKLSAgY2FzZSBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX3JlY3Y6Ci0gICAgcmV0dXJuICAgICAgIlNvY2tldFRyYW5zcG9ydCBlcnJvciBpbiByZWN2IjsKLSAgY2FzZSBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX2Nsb3NlOgotICAgIHJldHVybiAgICAgICJTb2NrZXRUcmFuc3BvcnQgZXJyb3IgaW4gY2xvc2UiOwotICBjYXNlIE5ETl9FUlJPUl9OYW1lX2NvbXBvbmVudF9kb2VzX25vdF9iZWdpbl93aXRoX3RoZV9leHBlY3RlZF9tYXJrZXI6Ci0gICAgcmV0dXJuICAgICAgIk5hbWUgY29tcG9uZW50IGRvZXMgbm90IGJlZ2luIHdpdGggdGhlIGV4cGVjdGVkIG1hcmtlciI7Ci0gIGNhc2UgTkROX0VSUk9SX1RpbWVfZnVuY3Rpb25zX2FyZV9ub3Rfc3VwcG9ydGVkX2J5X3RoZV9zdGFuZGFyZF9saWJyYXJ5OgotICAgIHJldHVybiAgICAgICJUaW1lIGZ1bmN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyeSI7Ci0gIGNhc2UgTkROX0VSUk9SX0NhbGVuZGFyX3RpbWVfdmFsdWVfb3V0X29mX3JhbmdlOgotICAgIHJldHVybiAgICAgICJDYWxlbmRhciB0aW1lIHZhbHVlIG91dCBvZiByYW5nZSI7Ci0gIGRlZmF1bHQ6Ci0gICAgcmV0dXJuICJ1bnJlY29nbml6ZWQgbmRuX0Vycm9yIGNvZGUiOyAgCi0gIH0KLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2Vycm9ycy5oIGIvc3JjL2MvZXJyb3JzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MDZhYTMuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZXJyb3JzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKioKLSAqIERlZmluZSBlcnJvciBjb2RlcyBhbmQgbmRuX2dldEVycm9yU3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBzdHJpbmcuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvciwgSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0VSUk9SU19ICi0jZGVmaW5lIE5ETl9FUlJPUlNfSAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXR5cGVkZWYgZW51bSB7Ci0gIE5ETl9FUlJPUl9zdWNjZXNzID0gMCwKLSAgTkROX0VSUk9SX2VsZW1lbnRfb2ZfdmFsdWVfaXNfbm90X2FfZGVjaW1hbF9kaWdpdCwKLSAgTkROX0VSUk9SX3JlYWRfcGFzdF90aGVfZW5kX29mX3RoZV9pbnB1dCwKLSAgTkROX0VSUk9SX3RoZV9maXJzdF9oZWFkZXJfb2N0ZXRfbWF5X25vdF9iZV96ZXJvLAotICBORE5fRVJST1JfaGVhZGVyX3R5cGVfaXNfbm90X2FfRFRBRywKLSAgTkROX0VSUk9SX2RpZF9ub3RfZ2V0X3RoZV9leHBlY3RlZF9EVEFHLAotICBORE5fRVJST1JfZGlkX25vdF9nZXRfdGhlX2V4cGVjdGVkX2VsZW1lbnRfY2xvc2UsCi0gIE5ETl9FUlJPUl9pdGVtX2lzX25vdF9VREFUQSwKLSAgTkROX0VSUk9SX2hlYWRlcl90eXBlX2lzX291dF9vZl9yYW5nZSwKLSAgTkROX0VSUk9SX2VuY29kZVR5cGVBbmRWYWx1ZV9taXNjYWxjdWxhdGVkX05fZW5jb2RpbmdfYnl0ZXMsCi0gIE5ETl9FUlJPUl9hdHRlbXB0X3RvX2FkZF9hX2NvbXBvbmVudF9wYXN0X3RoZV9tYXhpbXVtX251bWJlcl9vZl9jb21wb25lbnRzX2FsbG93ZWRfaW5fdGhlX25hbWUsCi0gIE5ETl9FUlJPUl9yZWFkX2FuX2VudHJ5X3Bhc3RfdGhlX21heGltdW1fbnVtYmVyX29mX2VudHJpZXNfYWxsb3dlZF9pbl90aGVfZXhjbHVkZSwKLSAgTkROX0VSUk9SX2ZpbmRFbGVtZW50RW5kX3VuZXhwZWN0ZWRfY2xvc2VfdGFnLAotICBORE5fRVJST1JfY2Fubm90X3N0b3JlX21vcmVfaGVhZGVyX2J5dGVzX3RoYW5fdGhlX3NpemVfb2ZfaGVhZGVyQnVmZmVyLAotICBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfY2Fubm90X3JlYWRfaGVhZGVyX3R5cGVfYW5kX3ZhbHVlLAotICBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfdW5yZWNvZ25pemVkX2hlYWRlcl90eXBlLAotICBORE5fRVJST1JfZmluZEVsZW1lbnRFbmRfdW5yZWNvZ25pemVkX3N0YXRlLAotICBORE5fRVJST1JfRHluYW1pY1VJbnQ4QXJyYXlfcmVhbGxvY19mdW5jdGlvbl9wb2ludGVyX25vdF9zdXBwbGllZCwKLSAgTkROX0VSUk9SX0R5bmFtaWNVSW50OEFycmF5X3JlYWxsb2NfZmFpbGVkLAotICBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9FeGNsdWRlVHlwZSwKLSAgTkROX0VSUk9SX3VucmVjb2duaXplZF9uZG5fQ29udGVudFR5cGUsCi0gIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX0tleUxvY2F0b3JUeXBlLAotICBORE5fRVJST1JfdW5yZWNvZ25pemVkX25kbl9LZXlOYW1lVHlwZSwKLSAgTkROX0VSUk9SX2RlY29kZUJpbmFyeVhtbEtleUxvY2F0b3JfdW5yZWNvZ25pemVkX2tleV9sb2NhdG9yX3R5cGUsCi0gIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX1NvY2tldFRyYW5zcG9ydCwKLSAgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9nZXRhZGRyaW5mbywKLSAgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9jYW5ub3RfY29ubmVjdF90b19zb2NrZXQsCi0gIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfc29ja2V0X2lzX25vdF9vcGVuLAotICBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX3NlbmQsCi0gIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fcG9sbCwKLSAgTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9yZWN2LAotICBORE5fRVJST1JfU29ja2V0VHJhbnNwb3J0X2Vycm9yX2luX2Nsb3NlLAotICBORE5fRVJST1JfTmFtZV9jb21wb25lbnRfZG9lc19ub3RfYmVnaW5fd2l0aF90aGVfZXhwZWN0ZWRfbWFya2VyLAotICBORE5fRVJST1JfVGltZV9mdW5jdGlvbnNfYXJlX25vdF9zdXBwb3J0ZWRfYnlfdGhlX3N0YW5kYXJkX2xpYnJhcnksCi0gIE5ETl9FUlJPUl9DYWxlbmRhcl90aW1lX3ZhbHVlX291dF9vZl9yYW5nZQotfSBuZG5fRXJyb3I7Ci0gIAotLyoqCi0gKiBDb252ZXJ0IHRoZSBlcnJvciBjb2RlIHRvIGl0cyBzdHJpbmcuCi0gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIGNvZGUKLSAqIEByZXR1cm4gdGhlIGVycm9yIHN0cmluZyBvciAidW5yZWNvZ25pemVkIG5kbl9FcnJvciBjb2RlIgotICovCi1jaGFyICpuZG5fZ2V0RXJyb3JTdHJpbmcoaW50IGVycm9yKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy9mb3J3YXJkaW5nLWVudHJ5LmggYi9zcmMvYy9mb3J3YXJkaW5nLWVudHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZWFkNGMuLjAwMDAwMDAKLS0tIGEvc3JjL2MvZm9yd2FyZGluZy1lbnRyeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0ZPUldBUkRJTkdfRU5UUllfSAotI2RlZmluZSBORE5fRk9SV0FSRElOR19FTlRSWV9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvZm9yd2FyZGluZy1mbGFncy5oPgotI2luY2x1ZGUgIm5hbWUuaCIKLSNpbmNsdWRlICJwdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIGVudW0gewotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQUNUSVZFICAgICAgICAgPSAxLAotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0hJTERfSU5IRVJJVCAgPSAyLAotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQURWRVJUSVNFICAgICAgPSA0LAotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfTEFTVCAgICAgICAgICAgPSA4LAotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0FQVFVSRSAgICAgICA9IDE2LAotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfTE9DQUwgICAgICAgICA9IDMyLAotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfVEFQICAgICAgICAgICA9IDY0LAotICBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0FQVFVSRV9PSyAgID0gMTI4Ci19IG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnczsKLQotLyoqCi0gKiBBbiBuZG5fRm9yd2FyZGluZ0VudHJ5IGhvbGRzIGZpZWxkcyBmb3IgYSBGb3J3YXJkaW5nRW50cnkgd2hpY2ggaXMgdXNlZCB0byByZWdpc3RlciBhIHByZWZpeCB3aXRoIGEgaHViLgotICovCi1zdHJ1Y3QgbmRuX0ZvcndhcmRpbmdFbnRyeSB7Ci0gIHN0cnVjdCBuZG5fQmxvYiBhY3Rpb247ICAgLyoqPCBBIEJsb2Igd2hvc2UgdmFsdWUgaXMgYSBwb2ludGVyIHRvIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIuICAwIGZvciBub25lLiAqLwotICBzdHJ1Y3QgbmRuX05hbWUgcHJlZml4OwotICBzdHJ1Y3QgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Q7Ci0gIGludCBmYWNlSWQ7ICAgICAgICAgICAgICAgLyoqPCAtMSBmb3Igbm9uZS4gKi8KLSAgc3RydWN0IG5kbl9Gb3J3YXJkaW5nRmxhZ3MgZm9yd2FyZGluZ0ZsYWdzOwotICBpbnQgZnJlc2huZXNzU2Vjb25kczsgICAgIC8qKjwgLTEgZm9yIG5vbmUuICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX0ZvcndhcmRpbmdFbnRyeSBzdHJ1Y3Qgd2l0aCB0aGUgcHJlLWFsbG9jYXRlZCBwcmVmaXhOYW1lQ29tcG9uZW50cywKLSAqIGFuZCBkZWZhdWx0cyBmb3IgYWxsIHRoZSB2YWx1ZXMuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fSW50ZXJlc3Qgc3RydWN0Ci0gKiBAcGFyYW0gcHJlZml4TmFtZUNvbXBvbmVudHMgdGhlIHByZS1hbGxvY2F0ZWQgYXJyYXkgb2YgbmRuX05hbWVDb21wb25lbnQKLSAqIEBwYXJhbSBtYXhQcmVmaXhOYW1lQ29tcG9uZW50cyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgcHJlZml4TmFtZUNvbXBvbmVudHMgYXJyYXkKLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9Gb3J3YXJkaW5nRW50cnlfaW5pdGlhbGl6ZQotICAoc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqcHJlZml4TmFtZUNvbXBvbmVudHMsIHNpemVfdCBtYXhQcmVmaXhOYW1lQ29tcG9uZW50cykgCi17Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJnNlbGYtPmFjdGlvbiwgMCwgMCk7Ci0gIG5kbl9OYW1lX2luaXRpYWxpemUoJnNlbGYtPnByZWZpeCwgcHJlZml4TmFtZUNvbXBvbmVudHMsIG1heFByZWZpeE5hbWVDb21wb25lbnRzKTsKLSAgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdF9pbml0aWFsaXplKCZzZWxmLT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QpOwotICBzZWxmLT5mYWNlSWQgPSAtMTsKLSAgbmRuX0ZvcndhcmRpbmdGbGFnc19pbml0aWFsaXplKCZzZWxmLT5mb3J3YXJkaW5nRmxhZ3MpOwotICBzZWxmLT5mcmVzaG5lc3NTZWNvbmRzID0gLTE7Ci19Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2MvZm9yd2FyZGluZy1mbGFncy5jIGIvc3JjL2MvZm9yd2FyZGluZy1mbGFncy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTUyYThiLi4wMDAwMDAwCi0tLSBhL3NyYy9jL2ZvcndhcmRpbmctZmxhZ3MuYworKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiZm9yd2FyZGluZy1lbnRyeS5oIgotCi12b2lkIG5kbl9Gb3J3YXJkaW5nRmxhZ3NfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0ZvcndhcmRpbmdGbGFncyAqc2VsZikKLXsKLSAgc2VsZi0+YWN0aXZlID0gMTsKLSAgc2VsZi0+Y2hpbGRJbmhlcml0ID0gMTsKLSAgc2VsZi0+YWR2ZXJ0aXNlID0gMDsKLSAgc2VsZi0+bGFzdCA9IDA7Ci0gIHNlbGYtPmNhcHR1cmUgPSAwOwotICBzZWxmLT5sb2NhbCA9IDA7Ci0gIHNlbGYtPnRhcCA9IDA7Ci0gIHNlbGYtPmNhcHR1cmVPayA9IDA7Ci19Ci0KLWludCBuZG5fRm9yd2FyZGluZ0ZsYWdzX2dldEZvcndhcmRpbmdFbnRyeUZsYWdzKHN0cnVjdCBuZG5fRm9yd2FyZGluZ0ZsYWdzICpzZWxmKQotewotICBpbnQgcmVzdWx0ID0gMDsKLSAgCi0gIGlmIChzZWxmLT5hY3RpdmUpCi0gICAgcmVzdWx0IHw9IG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19BQ1RJVkU7Ci0gIGlmIChzZWxmLT5jaGlsZEluaGVyaXQpCi0gICAgcmVzdWx0IHw9IG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19DSElMRF9JTkhFUklUOwotICBpZiAoc2VsZi0+YWR2ZXJ0aXNlKQotICAgIHJlc3VsdCB8PSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQURWRVJUSVNFOwotICBpZiAoc2VsZi0+bGFzdCkKLSAgICByZXN1bHQgfD0gbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0xBU1Q7Ci0gIGlmIChzZWxmLT5jYXB0dXJlKQotICAgIHJlc3VsdCB8PSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0FQVFVSRTsKLSAgaWYgKHNlbGYtPmxvY2FsKQotICAgIHJlc3VsdCB8PSBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfTE9DQUw7Ci0gIGlmIChzZWxmLT50YXApCi0gICAgcmVzdWx0IHw9IG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19UQVA7Ci0gIGlmIChzZWxmLT5jYXB0dXJlT2spCi0gICAgcmVzdWx0IHw9IG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19DQVBUVVJFX09LOwotICAKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBuZG5fRm9yd2FyZGluZ0ZsYWdzX3NldEZvcndhcmRpbmdFbnRyeUZsYWdzKHN0cnVjdCBuZG5fRm9yd2FyZGluZ0ZsYWdzICpzZWxmLCBpbnQgZm9yd2FyZGluZ0VudHJ5RmxhZ3MpCi17Ci0gIHNlbGYtPmFjdGl2ZSA9IChmb3J3YXJkaW5nRW50cnlGbGFncyAmIG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19BQ1RJVkUpID8gMSA6IDA7Ci0gIHNlbGYtPmNoaWxkSW5oZXJpdCA9IChmb3J3YXJkaW5nRW50cnlGbGFncyAmIG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19DSElMRF9JTkhFUklUKSA/IDEgOiAwOwotICBzZWxmLT5hZHZlcnRpc2UgPSAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgJiBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQURWRVJUSVNFKSA/IDEgOiAwOwotICBzZWxmLT5sYXN0ID0gKGZvcndhcmRpbmdFbnRyeUZsYWdzICYgbmRuX0ZvcndhcmRpbmdFbnRyeUZsYWdzX0xBU1QpID8gMSA6IDA7Ci0gIHNlbGYtPmNhcHR1cmUgPSAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgJiBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfQ0FQVFVSRSkgPyAxIDogMDsKLSAgc2VsZi0+bG9jYWwgPSAoZm9yd2FyZGluZ0VudHJ5RmxhZ3MgJiBuZG5fRm9yd2FyZGluZ0VudHJ5RmxhZ3NfTE9DQUwpID8gMSA6IDA7Ci0gIHNlbGYtPnRhcCA9IChmb3J3YXJkaW5nRW50cnlGbGFncyAmIG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19UQVApID8gMSA6IDA7Ci0gIHNlbGYtPmNhcHR1cmVPayA9IChmb3J3YXJkaW5nRW50cnlGbGFncyAmIG5kbl9Gb3J3YXJkaW5nRW50cnlGbGFnc19DQVBUVVJFX09LKSA/IDEgOiAwOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvaW50ZXJlc3QuYyBiL3NyYy9jL2ludGVyZXN0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YzNmZjYuLjAwMDAwMDAKLS0tIGEvc3JjL2MvaW50ZXJlc3QuYworKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAidXRpbC9uZG5fbWVtb3J5LmgiCi0jaW5jbHVkZSAiaW50ZXJlc3QuaCIKLQotaW50IG5kbl9FeGNsdWRlX2NvbXBhcmVDb21wb25lbnRzKHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqY29tcG9uZW50MSwgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpjb21wb25lbnQyKQotewotICBpZiAoY29tcG9uZW50MS0+dmFsdWUubGVuZ3RoIDwgY29tcG9uZW50Mi0+dmFsdWUubGVuZ3RoKQotICAgIHJldHVybiAtMTsKLSAgaWYgKGNvbXBvbmVudDEtPnZhbHVlLmxlbmd0aCA+IGNvbXBvbmVudDItPnZhbHVlLmxlbmd0aCkKLSAgICByZXR1cm4gMTsKLQotICAvLyBUaGUgY29tcG9uZW50cyBhcmUgZXF1YWwgbGVuZ3RoLiAgSnVzdCBkbyBhIGJ5dGUgY29tcGFyZS4gIAotICByZXR1cm4gbmRuX21lbWNtcChjb21wb25lbnQxLT52YWx1ZS52YWx1ZSwgY29tcG9uZW50Mi0+dmFsdWUudmFsdWUsIGNvbXBvbmVudDEtPnZhbHVlLmxlbmd0aCk7Ci19Ci0KLWludCBuZG5fRXhjbHVkZV9tYXRjaGVzKHN0cnVjdCBuZG5fRXhjbHVkZSAqc2VsZiwgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpjb21wb25lbnQpCi17Ci0gIHNpemVfdCBpOwotICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bkVudHJpZXM7ICsraSkgewotICAgIGlmIChzZWxmLT5lbnRyaWVzW2ldLnR5cGUgPT0gbmRuX0V4Y2x1ZGVfQU5ZKSB7Ci0gICAgICBzdHJ1Y3QgbmRuX0V4Y2x1ZGVFbnRyeSAqbG93ZXJCb3VuZCA9IDA7Ci0gICAgICBpZiAoaSA+IDApCi0gICAgICAgIGxvd2VyQm91bmQgPSBzZWxmLT5lbnRyaWVzICsgKGkgLSAxKTsKLSAgICAgIAotICAgICAgLy8gRmluZCB0aGUgdXBwZXIgYm91bmQsIHBvc3NpYmx5IHNraXBwaW5nIG92ZXIgbXVsdGlwbGUgQU5ZIGluIGEgcm93LgotICAgICAgc2l6ZV90IGlVcHBlckJvdW5kOwotICAgICAgc3RydWN0IG5kbl9FeGNsdWRlRW50cnkgKnVwcGVyQm91bmQgPSAwOwotICAgICAgZm9yIChpVXBwZXJCb3VuZCA9IGkgKyAxOyBpVXBwZXJCb3VuZCA8IHNlbGYtPm5FbnRyaWVzOyArK2lVcHBlckJvdW5kKSB7Ci0gICAgICAgIGlmIChzZWxmLT5lbnRyaWVzW2lVcHBlckJvdW5kXS50eXBlID09IG5kbl9FeGNsdWRlX0NPTVBPTkVOVCkgewotICAgICAgICAgIHVwcGVyQm91bmQgPSBzZWxmLT5lbnRyaWVzICsgaVVwcGVyQm91bmQ7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAotICAgICAgLy8gSWYgbG93ZXJCb3VuZCAhPSAwLCB3ZSBhbHJlYWR5IGNoZWNrZWQgY29tcG9uZW50IGVxdWFscyBsb3dlckJvdW5kIG9uIHRoZSBsYXN0IHBhc3MuCi0gICAgICAvLyBJZiB1cHBlckJvdW5kICE9IDAsIHdlIHdpbGwgY2hlY2sgY29tcG9uZW50IGVxdWFscyB1cHBlckJvdW5kIG9uIHRoZSBuZXh0IHBhc3MuCi0gICAgICBpZiAodXBwZXJCb3VuZCAhPSAwKSB7Ci0gICAgICAgIGlmIChsb3dlckJvdW5kICE9IDApIHsKLSAgICAgICAgICBpZiAobmRuX0V4Y2x1ZGVfY29tcGFyZUNvbXBvbmVudHMoY29tcG9uZW50LCAmbG93ZXJCb3VuZC0+Y29tcG9uZW50KSA+IDAgJiYKLSAgICAgICAgICAgICAgbmRuX0V4Y2x1ZGVfY29tcGFyZUNvbXBvbmVudHMoY29tcG9uZW50LCAmdXBwZXJCb3VuZC0+Y29tcG9uZW50KSA8IDApCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBpZiAobmRuX0V4Y2x1ZGVfY29tcGFyZUNvbXBvbmVudHMoY29tcG9uZW50LCAmdXBwZXJCb3VuZC0+Y29tcG9uZW50KSA8IDApCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gTWFrZSBpIGVxdWFsIGlVcHBlckJvdW5kIG9uIHRoZSBuZXh0IHBhc3MuCi0gICAgICAgIGkgPSBpVXBwZXJCb3VuZCAtIDE7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGxvd2VyQm91bmQgIT0gMCkgewotICAgICAgICAgIGlmIChuZG5fRXhjbHVkZV9jb21wYXJlQ29tcG9uZW50cyhjb21wb25lbnQsICZsb3dlckJvdW5kLT5jb21wb25lbnQpID4gMCkKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAvLyB0aGlzLnZhbHVlcyBoYXMgb25seSBBTlkuCi0gICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgaWYgKG5kbl9FeGNsdWRlX2NvbXBhcmVDb21wb25lbnRzKGNvbXBvbmVudCwgJnNlbGYtPmVudHJpZXNbaV0uY29tcG9uZW50KSA9PSAwKQotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gIH0KLSAgCi0gIHJldHVybiAwOyAgCi19Ci0KLWludCBuZG5fSW50ZXJlc3RfbWF0Y2hlc05hbWUoc3RydWN0IG5kbl9JbnRlcmVzdCAqc2VsZiwgc3RydWN0IG5kbl9OYW1lICpuYW1lKQotewotICBpZiAoIW5kbl9OYW1lX21hdGNoKCZzZWxmLT5uYW1lLCBuYW1lKSkKLSAgICByZXR1cm4gMDsKLSAgCi0gIGlmIChzZWxmLT5taW5TdWZmaXhDb21wb25lbnRzID49IDAgJiYKLSAgICAvLyBBZGQgMSBmb3IgdGhlIGltcGxpY2l0IGRpZ2VzdC4KLSAgICAhKG5hbWUtPm5Db21wb25lbnRzICsgMSAtIHNlbGYtPm5hbWUubkNvbXBvbmVudHMgPj0gc2VsZi0+bWluU3VmZml4Q29tcG9uZW50cykpCi0gICAgcmV0dXJuIDA7Ci0gIGlmIChzZWxmLT5tYXhTdWZmaXhDb21wb25lbnRzID49IDAgJiYKLSAgICAvLyBBZGQgMSBmb3IgdGhlIGltcGxpY2l0IGRpZ2VzdC4KLSAgICAhKG5hbWUtPm5Db21wb25lbnRzICsgMSAtIHNlbGYtPm5hbWUubkNvbXBvbmVudHMgPD0gc2VsZi0+bWF4U3VmZml4Q29tcG9uZW50cykpCi0gICAgcmV0dXJuIDA7Ci0gIGlmIChzZWxmLT5leGNsdWRlLm5FbnRyaWVzID4gMCAmJiBuYW1lLT5uQ29tcG9uZW50cyA+IHNlbGYtPm5hbWUubkNvbXBvbmVudHMgJiYKLSAgICAgIG5kbl9FeGNsdWRlX21hdGNoZXMoJnNlbGYtPmV4Y2x1ZGUsIG5hbWUtPmNvbXBvbmVudHMgKyBzZWxmLT5uYW1lLm5Db21wb25lbnRzKSkKLSAgICByZXR1cm4gMDsKLSAgCi0gIHJldHVybiAxOyAKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL2ludGVyZXN0LmggYi9zcmMvYy9pbnRlcmVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjBhNTg3Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2ludGVyZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0lOVEVSRVNUX0gKLSNkZWZpbmUgTkROX0lOVEVSRVNUX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvaW50ZXJlc3QtdHlwZXMuaD4KLSNpbmNsdWRlICJuYW1lLmgiCi0jaW5jbHVkZSAicHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBBbiBuZG5fRXhjbHVkZUVudHJ5IGhvbGRzIGFuIG5kbl9FeGNsdWRlVHlwZSwgYW5kIGlmIGl0IGlzIGEgQ09NUE9ORU5ULCBpdCBob2xkcyBhIHBvaW50ZXIgdG8gdGhlIGNvbXBvbmVudCB2YWx1ZS4KLSAqLwotc3RydWN0IG5kbl9FeGNsdWRlRW50cnkgewotICBuZG5fRXhjbHVkZVR5cGUgdHlwZTsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IGNvbXBvbmVudDsKLX07Ci0KLS8qKgotICogCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fTmFtZUNvbXBvbmVudCBzdHJ1Y3QKLSAqIEBwYXJhbSB0eXBlIG9uZSBvZiB0aGUgbmRuX0V4Y2x1ZGVUeXBlIGVudW0KLSAqIEBwYXJhbSBjb21wb25lbnQgdGhlIHByZS1hbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgY29tcG9uZW50IHZhbHVlLCBvbmx5IHVzZWQgaWYgdHlwZSBpcyBuZG5fRXhjbHVkZV9DT01QT05FTlQKLSAqIEBwYXJhbSBjb21wb25lbnRMZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyBpbiB2YWx1ZSwgb25seSB1c2VkIGlmIHR5cGUgaXMgbmRuX0V4Y2x1ZGVfQ09NUE9ORU5UCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fRXhjbHVkZUVudHJ5X2luaXRpYWxpemUoc3RydWN0IG5kbl9FeGNsdWRlRW50cnkgKnNlbGYsIG5kbl9FeGNsdWRlVHlwZSB0eXBlLCB1aW50OF90ICpjb21wb25lbnQsIHNpemVfdCBjb21wb25lbnRMZW5ndGgpIAotewotICBzZWxmLT50eXBlID0gdHlwZTsKLSAgbmRuX05hbWVDb21wb25lbnRfaW5pdGlhbGl6ZSgmc2VsZi0+Y29tcG9uZW50LCBjb21wb25lbnQsIGNvbXBvbmVudExlbmd0aCk7Ci19Ci0KLS8qKgotICogQW4gbmRuX0V4Y2x1ZGUgaG9sZHMgYW4gYXJyYXkgb2YgbmRuX0V4Y2x1ZGVFbnRyeS4KLSAqLwotc3RydWN0IG5kbl9FeGNsdWRlIHsKLSAgc3RydWN0IG5kbl9FeGNsdWRlRW50cnkgKmVudHJpZXM7ICAvKio8IHBvaW50ZXIgdG8gdGhlIGFycmF5IG9mIGVudHJpZXMuICovCi0gIHNpemVfdCBtYXhFbnRyaWVzOyAgICAgICAgICAgICAgICAgLyoqPCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgZW50cmllcyBhcnJheSAqLwotICBzaXplX3QgbkVudHJpZXM7ICAgICAgICAgICAgICAgICAgIC8qKjwgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBleGNsdWRlLCAwIGZvciBubyBleGNsdWRlICovCi19OwotLyoqCi0gKiBJbml0aWFsaXplIGFuIG5kbl9FeGNsdWRlIHN0cnVjdCB3aXRoIHRoZSBlbnRyaWVzIGFycmF5LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fRXhjbHVkZSBzdHJ1Y3QuCi0gKiBAcGFyYW0gZW50cmllcyB0aGUgcHJlLWFsbG9jYXRlZCBhcnJheSBvZiBuZG5fRXhjbHVkZUVudHJ5Ci0gKiBAcGFyYW0gbWF4RW50cmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgZW50cmllcyBhcnJheQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0V4Y2x1ZGVfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX0V4Y2x1ZGUgKnNlbGYsIHN0cnVjdCBuZG5fRXhjbHVkZUVudHJ5ICplbnRyaWVzLCBzaXplX3QgbWF4RW50cmllcykgCi17Ci0gIHNlbGYtPmVudHJpZXMgPSBlbnRyaWVzOwotICBzZWxmLT5tYXhFbnRyaWVzID0gbWF4RW50cmllczsKLSAgc2VsZi0+bkVudHJpZXMgPSAwOwotfQotCi0vKioKLSAqIENvbXBhcmUgdGhlIGNvbXBvbmVudHMgdXNpbmcgTkROIGNvbXBvbmVudCBvcmRlcmluZy4KLSAqIEEgY29tcG9uZW50IGlzIGxlc3MgaWYgaXQgaXMgc2hvcnRlciwgb3RoZXJ3aXNlIGlmIGVxdWFsIGxlbmd0aCBkbyBhIGJ5dGUgY29tcGFyaXNvbi4KLSAqIEBwYXJhbSBjb21wb25lbnQxIEEgcG9pbnRlciB0byB0aGUgZmlyc3QgbmFtZSBjb21wb25lbnQuCi0gKiBAcGFyYW0gY29tcG9uZW50MiBBIHBvaW50ZXIgdG8gdGhlIHNlY29uZCBuYW1lIGNvbXBvbmVudC4KLSAqIEByZXR1cm4gLTEgaWYgY29tcG9uZW50MSBpcyBsZXNzIHRoYW4gY29tcG9uZW50MiwgMSBpZiBncmVhdGVyIG9yIDAgaWYgZXF1YWwuCi0gKi8KLWludCBuZG5fRXhjbHVkZV9jb21wYXJlQ29tcG9uZW50cyhzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmNvbXBvbmVudDEsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqY29tcG9uZW50Mik7Ci0KLS8qKgotICogQ2hlY2sgaWYgdGhlIGNvbXBvbmVudCBtYXRjaGVzIGFueSBvZiB0aGUgZXhjbHVkZSBjcml0ZXJpYS4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX0V4Y2x1ZGUgc3RydWN0LgotICogQHBhcmFtIGNvbXBvbmVudCBBIHBvaW50ZXIgdG8gdGhlIG5hbWUgY29tcG9uZW50IHRvIGNoZWNrLgotICogQHJldHVybiAxIGlmIHRoZSBjb21wb25lbnQgbWF0Y2hlcyBhbnkgb2YgdGhlIGV4Y2x1ZGUgY3JpdGVyaWEsIG90aGVyd2lzZSAwLgotICovCi1pbnQgbmRuX0V4Y2x1ZGVfbWF0Y2hlcyhzdHJ1Y3QgbmRuX0V4Y2x1ZGUgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqY29tcG9uZW50KTsKLQotLyoqCi0gKiBBbiBuZG5fSW50ZXJlc3QgaG9sZHMgYW4gbmRuX05hbWUgYW5kIG90aGVyIGZpZWxkcyBmb3IgYW4gaW50ZXJlc3QuCi0gKi8KLXN0cnVjdCBuZG5fSW50ZXJlc3QgewotICBzdHJ1Y3QgbmRuX05hbWUgbmFtZTsKLSAgaW50IG1pblN1ZmZpeENvbXBvbmVudHM7ICAvKio8IC0xIGZvciBub25lICovCi0gIGludCBtYXhTdWZmaXhDb21wb25lbnRzOyAgLyoqPCAtMSBmb3Igbm9uZSAqLwotICBzdHJ1Y3QgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Q7Ci0gIHN0cnVjdCBuZG5fRXhjbHVkZSBleGNsdWRlOwotICBpbnQgY2hpbGRTZWxlY3RvcjsgICAgICAgIC8qKjwgLTEgZm9yIG5vbmUgKi8KLSAgaW50IGFuc3dlck9yaWdpbktpbmQ7ICAgICAvKio8IC0xIGZvciBub25lICovCi0gIGludCBzY29wZTsgICAgICAgICAgICAgICAgLyoqPCAtMSBmb3Igbm9uZSAqLwotICBuZG5fTWlsbGlzZWNvbmRzIGludGVyZXN0TGlmZXRpbWVNaWxsaXNlY29uZHM7IC8qKjwgbWlsbGlzZWNvbmRzLiAtMS4wIGZvciBub25lICovCi0gIHN0cnVjdCBuZG5fQmxvYiBub25jZTsgICAgLyoqPCBUaGUgYmxvYiB3aG9zZSB2YWx1ZSBpcyBhIHBvaW50ZXIgdG8gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gIDAgZm9yIG5vbmUgKi8KLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fSW50ZXJlc3Qgc3RydWN0IHdpdGggdGhlIHByZS1hbGxvY2F0ZWQgbmFtZUNvbXBvbmVudHMgYW5kIGV4Y2x1ZGVFbnRyaWVzLAotICogYW5kIGRlZmF1bHRzIGZvciBhbGwgdGhlIHZhbHVlcy4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9JbnRlcmVzdCBzdHJ1Y3QKLSAqIEBwYXJhbSBuYW1lQ29tcG9uZW50cyB0aGUgcHJlLWFsbG9jYXRlZCBhcnJheSBvZiBuZG5fTmFtZUNvbXBvbmVudAotICogQHBhcmFtIG1heE5hbWVDb21wb25lbnRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFsbG9jYXRlZCBuYW1lQ29tcG9uZW50cyBhcnJheQotICogQHBhcmFtIGV4Y2x1ZGVFbnRyaWVzIHRoZSBwcmUtYWxsb2NhdGVkIGFycmF5IG9mIG5kbl9FeGNsdWRlRW50cnkKLSAqIEBwYXJhbSBtYXhFeGNsdWRlRW50cmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQgZXhjbHVkZUVudHJpZXMgYXJyYXkKLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9JbnRlcmVzdF9pbml0aWFsaXplCi0gIChzdHJ1Y3QgbmRuX0ludGVyZXN0ICpzZWxmLCBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKm5hbWVDb21wb25lbnRzLCBzaXplX3QgbWF4TmFtZUNvbXBvbmVudHMsCi0gICBzdHJ1Y3QgbmRuX0V4Y2x1ZGVFbnRyeSAqZXhjbHVkZUVudHJpZXMsIHNpemVfdCBtYXhFeGNsdWRlRW50cmllcykgCi17Ci0gIG5kbl9OYW1lX2luaXRpYWxpemUoJnNlbGYtPm5hbWUsIG5hbWVDb21wb25lbnRzLCBtYXhOYW1lQ29tcG9uZW50cyk7Ci0gIHNlbGYtPm1pblN1ZmZpeENvbXBvbmVudHMgPSAtMTsKLSAgc2VsZi0+bWF4U3VmZml4Q29tcG9uZW50cyA9IC0xOwotICBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0X2luaXRpYWxpemUoJnNlbGYtPnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCk7Ci0gIG5kbl9FeGNsdWRlX2luaXRpYWxpemUoJnNlbGYtPmV4Y2x1ZGUsIGV4Y2x1ZGVFbnRyaWVzLCBtYXhFeGNsdWRlRW50cmllcyk7Ci0gIHNlbGYtPmNoaWxkU2VsZWN0b3IgPSAtMTsKLSAgc2VsZi0+YW5zd2VyT3JpZ2luS2luZCA9IC0xOwotICBzZWxmLT5zY29wZSA9IC0xOwotICBzZWxmLT5pbnRlcmVzdExpZmV0aW1lTWlsbGlzZWNvbmRzID0gLTEuMDsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+bm9uY2UsIDAsIDApOwotfQotCi0vKioKLSAqIENoZWNrIGlmIHNlbGYncyBuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWUgKHVzaW5nIG5kbl9OYW1lX21hdGNoKSBhbmQgdGhlIGdpdmVuIG5hbWUgYWxzbyBjb25mb3JtcyB0byB0aGUgCi0gKiBpbnRlcmVzdCBzZWxlY3RvcnMuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9JbnRlcmVzdCBzdHJ1Y3QuCi0gKiBAcGFyYW0gbmFtZSBBIHBvaW50ZXIgdG8gdGhlIG5hbWUgdG8gY2hlY2suCi0gKiBAcmV0dXJuIDEgaWYgdGhlIG5hbWUgYW5kIGludGVyZXN0IHNlbGVjdG9ycyBtYXRjaCwgMCBvdGhlcndpc2UuCi0gKi8KLWludCBuZG5fSW50ZXJlc3RfbWF0Y2hlc05hbWUoc3RydWN0IG5kbl9JbnRlcmVzdCAqc2VsZiwgc3RydWN0IG5kbl9OYW1lICpuYW1lKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL3NyYy9jL2tleS1sb2NhdG9yLmggYi9zcmMvYy9rZXktbG9jYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjc1YmE5Li4wMDAwMDAwCi0tLSBhL3NyYy9jL2tleS1sb2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fS0VZX0xPQ0FUT1JfSAotI2RlZmluZSBORE5fS0VZX0xPQ0FUT1JfSAotCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvYy9rZXktdHlwZXMuaD4KLSNpbmNsdWRlICJuYW1lLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBBbiBuZG5fS2V5TG9jYXRvciBob2xkcyB0aGUgdHlwZSBvZiBrZXkgbG9jYXRvciBhbmQgcmVsYXRlZCBkYXRhLgotICovCi1zdHJ1Y3QgbmRuX0tleUxvY2F0b3IgewotICBuZG5fS2V5TG9jYXRvclR5cGUgdHlwZTsgICAgIC8qKjwgLTEgZm9yIG5vbmUgKi8KLSAgc3RydWN0IG5kbl9CbG9iIGtleURhdGE7ICAgICAgICAgICAgLyoqPCBBIEJsb2Igd2hvc2UgdmFsdWUgaXMgYSBwb2ludGVyIHRvIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIgZm9yIHRoZSBrZXkgZGF0YSBhcyBmb2xsb3dzOgotICAgICogICBJZiB0eXBlIGlzIG5kbl9LZXlMb2NhdG9yVHlwZV9LRVksIHRoZSBrZXkgZGF0YS4KLSAgICAqICAgSWYgdHlwZSBpcyBuZG5fS2V5TG9jYXRvclR5cGVfQ0VSVElGSUNBVEUsIHRoZSBjZXJ0aWZpY2F0ZSBkYXRhLiAKLSAgICAqICAgSWYgdHlwZSBpcyBuZG5fS2V5TG9jYXRvclR5cGVfS0VZTkFNRSBhbmQga2V5TmFtZVR5cGUgaXMgbmRuX0tleU5hbWVUeXBlX1BVQkxJU0hFUl9QVUJMSUNfS0VZX0RJR0VTVCwgdGhlIHB1Ymxpc2hlciBwdWJsaWMga2V5IGRpZ2VzdC4gCi0gICAgKiAgIElmIHR5cGUgaXMgbmRuX0tleUxvY2F0b3JUeXBlX0tFWU5BTUUgYW5kIGtleU5hbWVUeXBlIGlzIG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfQ0VSVElGSUNBVEVfRElHRVNULCB0aGUgcHVibGlzaGVyIGNlcnRpZmljYXRlIGRpZ2VzdC4gCi0gICAgKiAgIElmIHR5cGUgaXMgbmRuX0tleUxvY2F0b3JUeXBlX0tFWU5BTUUgYW5kIGtleU5hbWVUeXBlIGlzIG5kbl9LZXlOYW1lVHlwZV9QVUJMSVNIRVJfSVNTVUVSX0tFWV9ESUdFU1QsIHRoZSBwdWJsaXNoZXIgaXNzdWVyIGtleSBkaWdlc3QuIAotICAgICogICBJZiB0eXBlIGlzIG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FIGFuZCBrZXlOYW1lVHlwZSBpcyBuZG5fS2V5TmFtZVR5cGVfUFVCTElTSEVSX0lTU1VFUl9DRVJUSUZJQ0FURV9ESUdFU1QsIHRoZSBwdWJsaXNoZXIgaXNzdWVyIGNlcnRpZmljYXRlIGRpZ2VzdC4gCi0gICAgKi8KLSAgc3RydWN0IG5kbl9OYW1lIGtleU5hbWU7ICAgICAvKio8IFRoZSBrZXkgbmFtZSAob25seSB1c2VkIGlmIHR5cGUgaXMgbmRuX0tleUxvY2F0b3JUeXBlX0tFWU5BTUUuKSAqLwotICBuZG5fS2V5TmFtZVR5cGUga2V5TmFtZVR5cGU7IC8qKjwgVGhlIHR5cGUgb2YgZGF0YSBmb3Iga2V5TmFtZSwgLTEgZm9yIG5vbmUuIChvbmx5IHVzZWQgaWYgdHlwZSBpcyBuZG5fS2V5TG9jYXRvclR5cGVfS0VZTkFNRS4pICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX0tleUxvY2F0b3Igc3RydWN0IHdpdGggdGhlIHByZS1hbGxvY2F0ZWQgbmFtZUNvbXBvbmVudHMsIGFuZCBkZWZhdWx0cyBmb3IgYWxsIHRoZSB2YWx1ZXMuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9LZXlMb2NhdG9yIHN0cnVjdC4KLSAqIEBwYXJhbSBrZXlOYW1lQ29tcG9uZW50cyBUaGUgcHJlLWFsbG9jYXRlZCBhcnJheSBvZiBuZG5fTmFtZUNvbXBvbmVudC4KLSAqIEBwYXJhbSBtYXhLZXlOYW1lQ29tcG9uZW50cyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhbGxvY2F0ZWQga2V5TmFtZUNvbXBvbmVudHMgYXJyYXkuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fS2V5TG9jYXRvcl9pbml0aWFsaXplCi0gIChzdHJ1Y3QgbmRuX0tleUxvY2F0b3IgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqa2V5TmFtZUNvbXBvbmVudHMsIHNpemVfdCBtYXhLZXlOYW1lQ29tcG9uZW50cykgewotICBzZWxmLT50eXBlID0gKG5kbl9LZXlMb2NhdG9yVHlwZSktMTsKLSAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmc2VsZi0+a2V5RGF0YSwgMCwgMCk7Ci0gIG5kbl9OYW1lX2luaXRpYWxpemUoJnNlbGYtPmtleU5hbWUsIGtleU5hbWVDb21wb25lbnRzLCBtYXhLZXlOYW1lQ29tcG9uZW50cyk7Ci0gIHNlbGYtPmtleU5hbWVUeXBlID0gKG5kbl9LZXlOYW1lVHlwZSktMTsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy9uYW1lLmMgYi9zcmMvYy9uYW1lLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0N2Q1ODMuLjAwMDAwMDAKLS0tIGEvc3JjL2MvbmFtZS5jCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlICJ1dGlsL25kbl9tZW1vcnkuaCIKLSNpbmNsdWRlICJuYW1lLmgiCi0KLXVpbnQ2NF90IG5kbl9OYW1lQ29tcG9uZW50X3RvTnVtYmVyKHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqc2VsZikKLXsKLSAgdWludDY0X3QgcmVzdWx0ID0gMDsKLSAgc2l6ZV90IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCBzZWxmLT52YWx1ZS5sZW5ndGg7ICsraSkgewotICAgIHJlc3VsdCAqPSAyNTY7Ci0gICAgcmVzdWx0ICs9ICh1aW50NjRfdClzZWxmLT52YWx1ZS52YWx1ZVtpXTsKLSAgfQotICAKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotbmRuX0Vycm9yIG5kbl9OYW1lQ29tcG9uZW50X3RvTnVtYmVyV2l0aE1hcmtlcihzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKnNlbGYsIHVpbnQ4X3QgbWFya2VyLCB1aW50NjRfdCAqcmVzdWx0KQotewotICBpZiAoc2VsZi0+dmFsdWUubGVuZ3RoID09IDAgfHwgc2VsZi0+dmFsdWUudmFsdWVbMF0gIT0gbWFya2VyKQotICAgIHJldHVybiBORE5fRVJST1JfTmFtZV9jb21wb25lbnRfZG9lc19ub3RfYmVnaW5fd2l0aF90aGVfZXhwZWN0ZWRfbWFya2VyOwotICAKLSAgdWludDY0X3QgbG9jYWxSZXN1bHQgPSAwOwotICBzaXplX3QgaTsKLSAgZm9yIChpID0gMTsgaSA8IHNlbGYtPnZhbHVlLmxlbmd0aDsgKytpKSB7Ci0gICAgbG9jYWxSZXN1bHQgKj0gMjU2OwotICAgIGxvY2FsUmVzdWx0ICs9ICh1aW50NjRfdClzZWxmLT52YWx1ZS52YWx1ZVtpXTsKLSAgfQotICAKLSAgKnJlc3VsdCA9IGxvY2FsUmVzdWx0OwotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLWludCBuZG5fTmFtZV9tYXRjaChzdHJ1Y3QgbmRuX05hbWUgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZSAqbmFtZSkKLXsKLSAgLy8gVGhpcyBuYW1lIGlzIGxvbmdlciB0aGFuIHRoZSBuYW1lIHdlIGFyZSBjaGVja2luZyBpdCBhZ2FpbnN0LgotICBpZiAoc2VsZi0+bkNvbXBvbmVudHMgPiBuYW1lLT5uQ29tcG9uZW50cykKLSAgICByZXR1cm4gMDsKLQotICAvLyBDaGVjayBpZiBhdCBsZWFzdCBvbmUgb2YgZ2l2ZW4gY29tcG9uZW50cyBkb2Vzbid0IG1hdGNoLgotICBzaXplX3QgaTsKLSAgZm9yIChpID0gMDsgaSA8IHNlbGYtPm5Db21wb25lbnRzOyArK2kpIHsKLSAgICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKnNlbGZDb21wb25lbnQgPSBzZWxmLT5jb21wb25lbnRzICsgaTsKLSAgICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKm5hbWVDb21wb25lbnQgPSBuYW1lLT5jb21wb25lbnRzICsgaTsKLQotICAgIGlmIChzZWxmQ29tcG9uZW50LT52YWx1ZS5sZW5ndGggIT0gbmFtZUNvbXBvbmVudC0+dmFsdWUubGVuZ3RoIHx8Ci0gICAgICAgIG5kbl9tZW1jbXAoc2VsZkNvbXBvbmVudC0+dmFsdWUudmFsdWUsIG5hbWVDb21wb25lbnQtPnZhbHVlLnZhbHVlLCBzZWxmQ29tcG9uZW50LT52YWx1ZS5sZW5ndGgpICE9IDApCi0gICAgICByZXR1cm4gMDsKLSAgfQotCi0gIHJldHVybiAxOwotfQotCi1uZG5fRXJyb3IgbmRuX05hbWVfYXBwZW5kQ29tcG9uZW50KHN0cnVjdCBuZG5fTmFtZSAqc2VsZiwgdWludDhfdCogdmFsdWUsIHNpemVfdCB2YWx1ZUxlbmd0aCkKLXsKLSAgaWYgKHNlbGYtPm5Db21wb25lbnRzID49IHNlbGYtPm1heENvbXBvbmVudHMpCi0gICAgICByZXR1cm4gTkROX0VSUk9SX2F0dGVtcHRfdG9fYWRkX2FfY29tcG9uZW50X3Bhc3RfdGhlX21heGltdW1fbnVtYmVyX29mX2NvbXBvbmVudHNfYWxsb3dlZF9pbl90aGVfbmFtZTsKLSAgbmRuX05hbWVDb21wb25lbnRfaW5pdGlhbGl6ZShzZWxmLT5jb21wb25lbnRzICsgc2VsZi0+bkNvbXBvbmVudHMsIHZhbHVlLCB2YWx1ZUxlbmd0aCk7Ci0gICsrc2VsZi0+bkNvbXBvbmVudHM7Ci0gICAgICAKLSAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotfQotCi1uZG5fRXJyb3IgbmRuX05hbWVfYXBwZW5kU3RyaW5nKHN0cnVjdCBuZG5fTmFtZSAqc2VsZiwgY2hhciogdmFsdWUpCi17Ci0gIHJldHVybiBuZG5fTmFtZV9hcHBlbmRDb21wb25lbnQoc2VsZiwgKHVpbnQ4X3QqKXZhbHVlLCBzdHJsZW4odmFsdWUpKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL25hbWUuaCBiL3NyYy9jL25hbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4ZjFiMS4uMDAwMDAwMAotLS0gYS9zcmMvYy9uYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX05BTUVfSAotI2RlZmluZSBORE5fTkFNRV9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotI2luY2x1ZGUgImVycm9ycy5oIgotI2luY2x1ZGUgInV0aWwvYmxvYi5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0gIAotLyoqCi0gKiBBbiBuZG5fTmFtZUNvbXBvbmVudCBob2xkcyBhIHBvaW50ZXIgdG8gdGhlIGNvbXBvbmVudCB2YWx1ZS4KLSAqLwotc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IHsKLSAgc3RydWN0IG5kbl9CbG9iIHZhbHVlOyAgICAgLyoqPCBBIEJsb2Igd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHByZS1hbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgY29tcG9uZW50IHZhbHVlICovCi19OwotCi0vKioKLSAqIAotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX05hbWVDb21wb25lbnQgc3RydWN0Ci0gKiBAcGFyYW0gdmFsdWUgdGhlIHByZS1hbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgY29tcG9uZW50IHZhbHVlCi0gKiBAcGFyYW0gdmFsdWVMZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyBpbiB2YWx1ZQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX05hbWVDb21wb25lbnRfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKnNlbGYsIHVpbnQ4X3QgKnZhbHVlLCBzaXplX3QgdmFsdWVMZW5ndGgpIAotewotICBuZG5fQmxvYl9pbml0aWFsaXplKCZzZWxmLT52YWx1ZSwgdmFsdWUsIHZhbHVlTGVuZ3RoKTsKLX0KLQotLyoqCi0gKiBJbnRlcnByZXQgdGhlIG5hbWUgY29tcG9uZW50IGFzIGEgbmV0d29yay1vcmRlcmVkIG51bWJlciBhbmQgcmV0dXJuIGFuIGludGVnZXIuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9OYW1lQ29tcG9uZW50IHN0cnVjdC4KLSAqIEByZXR1cm4gVGhlIGludGVnZXIgbnVtYmVyLgotICovCi11aW50NjRfdCBuZG5fTmFtZUNvbXBvbmVudF90b051bWJlcihzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKnNlbGYpOwotCi0vKioKLSAqIEludGVycHJldCB0aGUgbmFtZSBjb21wb25lbnQgYXMgYSBuZXR3b3JrLW9yZGVyZWQgbnVtYmVyIHdpdGggYSBtYXJrZXIgYW5kIHJldHVybiBhbiBpbnRlZ2VyLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fTmFtZUNvbXBvbmVudCBzdHJ1Y3QuCi0gKiBAcGFyYW0gbWFya2VyIFRoZSByZXF1aXJlZCBmaXJzdCBieXRlIG9mIHRoZSBjb21wb25lbnQuCi0gKiBAcGFyYW0gcmVzdWx0IFJldHVybiB0aGUgaW50ZWdlciBudW1iZXIuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGNvZGUgaWYgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGNvbXBvbmVudCBkb2VzIG5vdCBlcXVhbCB0aGUgbWFya2VyLgotICovCi1uZG5fRXJyb3IgbmRuX05hbWVDb21wb25lbnRfdG9OdW1iZXJXaXRoTWFya2VyKHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCAqc2VsZiwgdWludDhfdCBtYXJrZXIsIHVpbnQ2NF90ICpyZXN1bHQpOwotCi0vKioKLSAqIEFuIG5kbl9OYW1lIGhvbGRzIGFuIGFycmF5IG9mIG5kbl9OYW1lQ29tcG9uZW50LgotICovCi1zdHJ1Y3QgbmRuX05hbWUgewotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgKmNvbXBvbmVudHM7IC8qKjwgcG9pbnRlciB0byB0aGUgYXJyYXkgb2YgY29tcG9uZW50cy4gKi8KLSAgc2l6ZV90IG1heENvbXBvbmVudHM7ICAgICAgICAgICAgICAgICAvKio8IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFsbG9jYXRlZCBjb21wb25lbnRzIGFycmF5ICovCi0gIHNpemVfdCBuQ29tcG9uZW50czsgICAgICAgICAgICAgICAgICAgLyoqPCB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgaW4gdGhlIG5hbWUgKi8KLX07Ci0KLS8qKgotICogSW5pdGlhbGl6ZSBhbiBuZG5fTmFtZSBzdHJ1Y3Qgd2l0aCB0aGUgY29tcG9uZW50cyBhcnJheS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9OYW1lIHN0cnVjdAotICogQHBhcmFtIGNvbXBvbmVudHMgdGhlIHByZS1hbGxvY2F0ZWQgYXJyYXkgb2YgbmRuX05hbWVDb21wb25lbnQKLSAqIEBwYXJhbSBtYXhDb21wb25lbnRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFsbG9jYXRlZCBjb21wb25lbnRzIGFycmF5Ci0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fTmFtZV9pbml0aWFsaXplKHN0cnVjdCBuZG5fTmFtZSAqc2VsZiwgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50ICpjb21wb25lbnRzLCBzaXplX3QgbWF4Q29tcG9uZW50cykgCi17Ci0gIHNlbGYtPmNvbXBvbmVudHMgPSBjb21wb25lbnRzOwotICBzZWxmLT5tYXhDb21wb25lbnRzID0gbWF4Q29tcG9uZW50czsKLSAgc2VsZi0+bkNvbXBvbmVudHMgPSAwOwotfQotCi0vKioKLSAqIFJldHVybiB0cnVlIGlmIHRoZSBOIGNvbXBvbmVudHMgb2YgdGhpcyBuYW1lIGFyZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgTiBjb21wb25lbnRzIG9mIHRoZSBnaXZlbiBuYW1lLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fTmFtZSBzdHJ1Y3QuCi0gKiBAcGFyYW0gbmFtZSBBIHBvaW50ZXIgdG8gdGhlIG90aGVyIG5hbWUgdG8gbWF0Y2guCi0gKiBAcmV0dXJuIDEgaWYgdGhpcyBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lLCAwIG90aGVyd2lzZS4gIFRoaXMgYWx3YXlzIHJldHVybnMgMSBpZiB0aGlzIG5hbWUgaXMgZW1wdHkuCi0gKi8KLWludCBuZG5fTmFtZV9tYXRjaChzdHJ1Y3QgbmRuX05hbWUgKnNlbGYsIHN0cnVjdCBuZG5fTmFtZSAqbmFtZSk7Ci0KLS8qKgotICogQXBwZW5kIGEgY29tcG9uZW50IHRvIHRoaXMgbmFtZSB3aXRoIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gYXJyYXkuCi0gKiBAcGFyYW0gc2VsZiBwb2ludGVyIHRvIHRoZSBuZG5fTmFtZSBzdHJ1Y3QuCi0gKiBAcGFyYW0gdmFsdWUgVGhlIGJ5dGVzIG9mIHRoZSBjb21wb25lbnQuICBUaGlzIGRvZXMgbm90IGNvcHkgdGhlIGJ5dGVzLgotICogQHBhcmFtIHZhbHVlTGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdmFsdWUuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGNvZGUgaWYgdGhlcmUgaXMgbm8gbW9yZSByb29tIGluIHRoZSBjb21wb25lbnRzIGFycmF5IChuQ29tcG9uZW50cyBpcyBhbHJlYWR5IG1heENvbXBvbmVudHMpLgotICovCi1uZG5fRXJyb3IgbmRuX05hbWVfYXBwZW5kQ29tcG9uZW50KHN0cnVjdCBuZG5fTmFtZSAqc2VsZiwgdWludDhfdCogdmFsdWUsIHNpemVfdCB2YWx1ZUxlbmd0aCk7Ci0KLS8qKgotICogQXBwZW5kIGEgY29tcG9uZW50IHRvIHRoaXMgbmFtZSB3aXRoIHRoZSBieXRlcyBpbiB0aGUgZ2l2ZW4gYmxvYi4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9OYW1lIHN0cnVjdC4KLSAqIEBwYXJhbSB2YWx1ZSBBbiBuZG5fQmxvYiB3aXRoIHRoZSBieXRlcyBvZiB0aGUgY29tcG9uZW50LiAgVGhpcyBkb2VzIG5vdCBjb3B5IHRoZSBieXRlcy4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2Vzcywgb3IgYW4gZXJyb3IgY29kZSBpZiB0aGVyZSBpcyBubyBtb3JlIHJvb20gaW4gdGhlIGNvbXBvbmVudHMgYXJyYXkgKG5Db21wb25lbnRzIGlzIGFscmVhZHkgbWF4Q29tcG9uZW50cykuCi0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9OYW1lX2FwcGVuZEJsb2Ioc3RydWN0IG5kbl9OYW1lICpzZWxmLCBzdHJ1Y3QgbmRuX0Jsb2IgKnZhbHVlKQotewotICByZXR1cm4gbmRuX05hbWVfYXBwZW5kQ29tcG9uZW50KHNlbGYsIHZhbHVlLT52YWx1ZSwgdmFsdWUtPmxlbmd0aCk7Ci19Ci0KLS8qKgotICogQXBwZW5kIGEgY29tcG9uZW50IHRvIHRoaXMgbmFtZSB3aXRoIHRoZSBieXRlcyBpbiByYXcgc3RyaW5nIHZhbHVlLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX05hbWUgc3RydWN0LgotICogQHBhcmFtIHZhbHVlIFRoZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLCB0cmVhdGVkIGFzIGEgYnl0ZSBhcnJheS4gIFRoaXMgZG9lcyBub3QgY29weSB0aGUgYnl0ZXMuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGNvZGUgaWYgdGhlcmUgaXMgbm8gbW9yZSByb29tIGluIHRoZSBjb21wb25lbnRzIGFycmF5IChuQ29tcG9uZW50cyBpcyBhbHJlYWR5IG1heENvbXBvbmVudHMpLgotICovCi1uZG5fRXJyb3IgbmRuX05hbWVfYXBwZW5kU3RyaW5nKHN0cnVjdCBuZG5fTmFtZSAqc2VsZiwgY2hhciogdmFsdWUpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvc3JjL2MvcHVibGlzaGVyLXB1YmxpYy1rZXktZGlnZXN0LmggYi9zcmMvYy9wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxYWMzMi4uMDAwMDAwMAotLS0gYS9zcmMvYy9wdWJsaXNoZXItcHVibGljLWtleS1kaWdlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaWZuZGVmIE5ETl9QVUJMSVNIRVJQVUJMSUNLRVlESUdFU1RfSAotI2RlZmluZSBORE5fUFVCTElTSEVSUFVCTElDS0VZRElHRVNUX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0jaW5jbHVkZSAidXRpbC9ibG9iLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBBIFB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBob2xkcyBhIHBvaW50ZXIgdG8gdGhlIHB1Ymxpc2hlciBwdWJsaWMga2V5IGRpZ2VzdCB2YWx1ZSwgaWYgYW55LgotICogV2UgbWFrZSBhIHNlcGFyYXRlIHN0cnVjdCBzaW5jZSB0aGlzIGlzIHVzZWQgYnkgbXVsdGlwbGUgb3RoZXIgc3RydWN0cy4KLSAqLwotc3RydWN0IG5kbl9QdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgewotICBzdHJ1Y3QgbmRuX0Jsb2IgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0OyAvKio8IEEgQmxvYiB3aG9zZSB2YWx1ZSBpcyBhIHBvaW50ZXIgdG8gcHJlLWFsbG9jYXRlZCBidWZmZXIuICAwIGZvciBub25lICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgYW4gbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCBzdHJ1Y3Qgd2l0aCAwIGZvciBub25lLgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX1B1Ymxpc2hlclB1YmxpY0tleURpZ2VzdF9pbml0aWFsaXplKHN0cnVjdCBuZG5fUHVibGlzaGVyUHVibGljS2V5RGlnZXN0ICpzZWxmKQotewotICBuZG5fQmxvYl9pbml0aWFsaXplKCZzZWxmLT5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QsIDAsIDApOwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL3RyYW5zcG9ydC9zb2NrZXQtdHJhbnNwb3J0LmMgYi9zcmMvYy90cmFuc3BvcnQvc29ja2V0LXRyYW5zcG9ydC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWE1YjU3Li4wMDAwMDAwCi0tLSBhL3NyYy9jL3RyYW5zcG9ydC9zb2NrZXQtdHJhbnNwb3J0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJzb2NrZXQtdHJhbnNwb3J0LmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPG5ldGRiLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSNpbmNsdWRlIDxwb2xsLmg+Ci0jaW5jbHVkZSAiLi4vdXRpbC9uZG5fbWVtb3J5LmgiCi0KLW5kbl9FcnJvciBuZG5fU29ja2V0VHJhbnNwb3J0X2Nvbm5lY3Qoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYsIG5kbl9Tb2NrZXRUeXBlIHNvY2tldFR5cGUsIGNoYXIgKmhvc3QsIHVuc2lnbmVkIHNob3J0IHBvcnQpCi17Ci0gIGlmIChzZWxmLT5zb2NrZXREZXNjcmlwdG9yID49IDApIHsKLSAgICBjbG9zZShzZWxmLT5zb2NrZXREZXNjcmlwdG9yKTsKLSAgICBzZWxmLT5zb2NrZXREZXNjcmlwdG9yID0gLTE7Ci0gIH0KLSAgCi0gIHN0cnVjdCBhZGRyaW5mbyBoaW50czsKLSAgbmRuX21lbXNldCgodWludDhfdCAqKSZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7Ci0gIGhpbnRzLmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKLSAgaWYgKHNvY2tldFR5cGUgPT0gU09DS0VUX1RDUCkKLSAgICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOwotICBlbHNlIGlmIChzb2NrZXRUeXBlID09IFNPQ0tFVF9VRFApCi0gICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwotICBlbHNlCi0gICAgcmV0dXJuIE5ETl9FUlJPUl91bnJlY29nbml6ZWRfbmRuX1NvY2tldFRyYW5zcG9ydDsKLQotICBjaGFyIHBvcnRTdHJpbmdbMTBdOwotICBzcHJpbnRmKHBvcnRTdHJpbmcsICIlZCIsIHBvcnQpOwotICAKLSAgc3RydWN0IGFkZHJpbmZvICpzZXJ2ZXJJbmZvOwotICBpZiAoZ2V0YWRkcmluZm8oaG9zdCwgcG9ydFN0cmluZywgJmhpbnRzLCAmc2VydmVySW5mbykgIT0gMCkKLSAgICByZXR1cm4gTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9nZXRhZGRyaW5mbzsKLQotICAvLyBsb29wIHRocm91Z2ggYWxsIHRoZSByZXN1bHRzIGFuZCBjb25uZWN0IHRvIHRoZSBmaXJzdCB3ZSBjYW4KLSAgc3RydWN0IGFkZHJpbmZvICpwOwotICBpbnQgc29ja2V0RGVzY3JpcHRvcjsKLSAgZm9yKHAgPSBzZXJ2ZXJJbmZvOyBwICE9IE5VTEw7IHAgPSBwLT5haV9uZXh0KSB7Ci0gICAgaWYgKChzb2NrZXREZXNjcmlwdG9yID0gc29ja2V0KHAtPmFpX2ZhbWlseSwgcC0+YWlfc29ja3R5cGUsIHAtPmFpX3Byb3RvY29sKSkgPT0gLTEpCi0gICAgICBjb250aW51ZTsKLQotICAgIGlmIChjb25uZWN0KHNvY2tldERlc2NyaXB0b3IsIHAtPmFpX2FkZHIsIHAtPmFpX2FkZHJsZW4pID09IC0xKSB7Ci0gICAgICBjbG9zZShzb2NrZXREZXNjcmlwdG9yKTsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIGJyZWFrOwotICB9Ci0KLSAgaWYgKHAgPT0gTlVMTCkgewotICAgIGZyZWVhZGRyaW5mbyhzZXJ2ZXJJbmZvKTsKLSAgICByZXR1cm4gTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9jYW5ub3RfY29ubmVjdF90b19zb2NrZXQ7Ci0gIH0KLQotICBmcmVlYWRkcmluZm8oc2VydmVySW5mbyk7Ci0gIHNlbGYtPnNvY2tldERlc2NyaXB0b3IgPSBzb2NrZXREZXNjcmlwdG9yOwotCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLX0KLQotbmRuX0Vycm9yIG5kbl9Tb2NrZXRUcmFuc3BvcnRfc2VuZChzdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCi17Ci0gIGlmIChzZWxmLT5zb2NrZXREZXNjcmlwdG9yIDwgMCkKLSAgICByZXR1cm4gTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9zb2NrZXRfaXNfbm90X29wZW47Ci0gIAotICBpbnQgbkJ5dGVzOwotICB3aGlsZSAoMSkgewotICAgIGlmICgobkJ5dGVzID0gc2VuZChzZWxmLT5zb2NrZXREZXNjcmlwdG9yLCBkYXRhLCBkYXRhTGVuZ3RoLCAwKSkgPCAwKQotICAgICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fc2VuZDsKLSAgICBpZiAobkJ5dGVzID49IGRhdGFMZW5ndGgpCi0gICAgICBicmVhazsKLSAgICAKLSAgICAvLyBTZW5kIG1vcmUuCi0gICAgZGF0YUxlbmd0aCAtPSBuQnl0ZXM7Ci0gIH0KLQotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAKLX0KLQotbmRuX0Vycm9yIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZUlzUmVhZHkoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYsIGludCAqcmVjZWl2ZUlzUmVhZHkpCi17Ci0gIC8vIERlZmF1bHQgdG8gbm90IHJlYWR5LgotICAqcmVjZWl2ZUlzUmVhZHkgPSAwOwotCi0gIGlmIChzZWxmLT5zb2NrZXREZXNjcmlwdG9yIDwgMCkKLSAgICAvLyBUaGUgc29ja2V0IGlzIG5vdCBvcGVuLiAgSnVzdCBzaWxlbnRseSByZXR1cm4uCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAKLSAgc3RydWN0IHBvbGxmZCBwb2xsSW5mb1sxXTsKLSAgcG9sbEluZm9bMF0uZmQgPSBzZWxmLT5zb2NrZXREZXNjcmlwdG9yOwotICBwb2xsSW5mb1swXS5ldmVudHMgPSBQT0xMSU47Ci0gIAotICBpbnQgcG9sbFJlc3VsdCA9IHBvbGwocG9sbEluZm8sIDEsIDApOwotCi0gIGlmIChwb2xsUmVzdWx0IDwgMCkKLSAgICByZXR1cm4gTkROX0VSUk9SX1NvY2tldFRyYW5zcG9ydF9lcnJvcl9pbl9wb2xsOwotICBlbHNlIGlmIChwb2xsUmVzdWx0ID09IDApCi0gICAgLy8gVGltZW91dCwgc28gbm8gZGF0YSByZWFkeS4KLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0gIGVsc2UgewotICAgaWYgKHBvbGxJbmZvWzBdLnJldmVudHMgJiBQT0xMSU4pCi0gICAgICpyZWNlaXZlSXNSZWFkeSA9IDE7Ci0gIH0KLQotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19Ci0KLW5kbl9FcnJvciBuZG5fU29ja2V0VHJhbnNwb3J0X3JlY2VpdmUKLSAgKHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmLCB1aW50OF90ICpidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIHNpemVfdCAqbkJ5dGVzT3V0KQotewotICBpZiAoc2VsZi0+c29ja2V0RGVzY3JpcHRvciA8IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfc29ja2V0X2lzX25vdF9vcGVuOwotCi0gIGludCBuQnl0ZXM7ICAKLSAgaWYgKChuQnl0ZXMgPSByZWN2KHNlbGYtPnNvY2tldERlc2NyaXB0b3IsIGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCAwKSkgPT0gLTEpCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fcmVjdjsKLQotICAqbkJ5dGVzT3V0ID0gKHNpemVfdCluQnl0ZXM7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7ICAKLX0KLQotbmRuX0Vycm9yIG5kbl9Tb2NrZXRUcmFuc3BvcnRfY2xvc2Uoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYpCi17Ci0gIGlmIChzZWxmLT5zb2NrZXREZXNjcmlwdG9yIDwgMCkKLSAgICAvLyBBbHJlYWR5IGNsb3NlZC4gIERvIG5vdGhpbmcuCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9zdWNjZXNzOwotICAKLSAgaWYgKGNsb3NlKHNlbGYtPnNvY2tldERlc2NyaXB0b3IpICE9IDApCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9Tb2NrZXRUcmFuc3BvcnRfZXJyb3JfaW5fY2xvc2U7Ci0gIAotICBzZWxmLT5zb2NrZXREZXNjcmlwdG9yID0gLTE7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19CmRpZmYgLS1naXQgYS9zcmMvYy90cmFuc3BvcnQvc29ja2V0LXRyYW5zcG9ydC5oIGIvc3JjL2MvdHJhbnNwb3J0L3NvY2tldC10cmFuc3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFkYmI1Ni4uMDAwMDAwMAotLS0gYS9zcmMvYy90cmFuc3BvcnQvc29ja2V0LXRyYW5zcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX1NPQ0tFVFRSQU5TUE9SVF9ICi0jZGVmaW5lIE5ETl9TT0NLRVRUUkFOU1BPUlRfSAotCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0jaW5jbHVkZSAiLi4vZXJyb3JzLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiBlbnVtIHsKLSAgU09DS0VUX1RDUCwKLSAgU09DS0VUX1VEUAotfSBuZG5fU29ja2V0VHlwZTsKLSAgCi1zdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCB7Ci0gIGludCBzb2NrZXREZXNjcmlwdG9yOyAvKio8IC0xIGlmIG5vdCBjb25uZWN0ZWQgKi8KLX07Ci0gIAotLyoqCi0gKiBJbml0aWFsaXplIHRoZSBuZG5fU29ja2V0VHJhbnNwb3J0IHN0cnVjdCB3aXRoIGRlZmF1bHQgdmFsdWVzIGZvciBubyBjb25uZWN0aW9uIHlldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1NvY2tldFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fU29ja2V0VHJhbnNwb3J0X2luaXRpYWxpemUoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYpCi17Ci0gIHNlbGYtPnNvY2tldERlc2NyaXB0b3IgPSAtMTsKLX0KLQotLyoqCi0gKiBDb25uZWN0IHdpdGggVENQIG9yIFVEUCB0byB0aGUgaG9zdDpwb3J0LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fU29ja2V0VHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSBzb2NrZXRUeXBlIFNPQ0tFVF9UQ1Agb3IgU09DS0VUX1VEUC4KLSAqIEBwYXJhbSBob3N0IFRoZSBob3N0IHRvIGNvbm5lY3QgdG8uCi0gKiBAcGFyYW0gcG9ydCBUaGUgcG9ydCB0byBjb25uZWN0IHRvLgotICogQHJldHVybiAwIGZvciBzdWNjZXNzLCBlbHNlIGFuIGVycm9yIGNvZGUuCi0gKi8KLW5kbl9FcnJvciBuZG5fU29ja2V0VHJhbnNwb3J0X2Nvbm5lY3Qoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYsIG5kbl9Tb2NrZXRUeXBlIHNvY2tldFR5cGUsIGNoYXIgKmhvc3QsIHVuc2lnbmVkIHNob3J0IHBvcnQpOwotCi0vKioKLSAqIFNlbmQgZGF0YSB0byB0aGUgc29ja2V0LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fU29ja2V0VHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSBkYXRhIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIG9mIGRhdGEgdG8gc2VuZC4KLSAqIEBwYXJhbSBkYXRhTGVuZ3RoIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZGF0YS4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLgotICovCi1uZG5fRXJyb3IgbmRuX1NvY2tldFRyYW5zcG9ydF9zZW5kKHN0cnVjdCBuZG5fU29ja2V0VHJhbnNwb3J0ICpzZWxmLCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7Ci0KLS8qKgotICogQ2hlY2sgaWYgdGhlcmUgaXMgZGF0YSByZWFkeSBvbiB0aGUgc29ja2V0IHRvIGJlIHJlY2VpdmVkIHdpdGggbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlLgotICogVGhpcyBkb2VzIG5vdCBibG9jaywgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9Tb2NrZXRUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIHJlY2VpdmVJc1JlYWR5IFRoaXMgd2lsbCBiZSBzZXQgdG8gMSBpZiBkYXRhIGlzIHJlYWR5LCAwIGlmIG5vdC4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLgotICovCi1uZG5fRXJyb3IgbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlSXNSZWFkeShzdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCAqc2VsZiwgaW50ICpyZWNlaXZlSXNSZWFkeSk7Ci0KLS8qKgotICogUmVjZWl2ZSBkYXRhIGZyb20gdGhlIHNvY2tldC4gIE5PVEU6IFRoaXMgaXMgYSBibG9ja2luZyBjYWxsLiAgWW91IHNob3VsZCBmaXJzdCBjYWxsIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZUlzUmVhZHkKLSAqIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBkYXRhIHJlYWR5IHRvIHJlY2VpdmUuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9Tb2NrZXRUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIGJ1ZmZlciBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBkYXRhLgotICogQHBhcmFtIGJ1ZmZlckxlbmd0aCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYnVmZmVyLgotICogQHBhcmFtIG5CeXRlcyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWNlaXZlZCBpbnRvIGJ1ZmZlci4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLgotICovCi1uZG5fRXJyb3IgbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlCi0gIChzdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBzaXplX3QgKm5CeXRlcyk7Ci0KLS8qKgotICogQ2xvc2UgdGhlIHNvY2tldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1NvY2tldFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotbmRuX0Vycm9yIG5kbl9Tb2NrZXRUcmFuc3BvcnRfY2xvc2Uoc3RydWN0IG5kbl9Tb2NrZXRUcmFuc3BvcnQgKnNlbGYpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL3RyYW5zcG9ydC90Y3AtdHJhbnNwb3J0LmggYi9zcmMvYy90cmFuc3BvcnQvdGNwLXRyYW5zcG9ydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWYyZThlLi4wMDAwMDAwCi0tLSBhL3NyYy9jL3RyYW5zcG9ydC90Y3AtdHJhbnNwb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKiAKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fVENQVFJBTlNQT1JUX0gKLSNkZWZpbmUgTkROX1RDUFRSQU5TUE9SVF9ICi0KLSNpbmNsdWRlICJzb2NrZXQtdHJhbnNwb3J0LmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotc3RydWN0IG5kbl9UY3BUcmFuc3BvcnQgewotICBzdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCBiYXNlOwotfTsKLSAgCi0vKioKLSAqIEluaXRpYWxpemUgdGhlIG5kbl9UY3BUcmFuc3BvcnQgc3RydWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgZm9yIG5vIGNvbm5lY3Rpb24geWV0LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVGNwVHJhbnNwb3J0IHN0cnVjdC4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9UY3BUcmFuc3BvcnRfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX1RjcFRyYW5zcG9ydCAqc2VsZikKLXsKLSAgbmRuX1NvY2tldFRyYW5zcG9ydF9pbml0aWFsaXplKCZzZWxmLT5iYXNlKTsKLX0KLQotLyoqCi0gKiBDb25uZWN0IHdpdGggVENQIHRvIHRoZSBob3N0OnBvcnQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9UY3BUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIGhvc3QgVGhlIGhvc3QgdG8gY29ubmVjdCB0by4KLSAqIEBwYXJhbSBwb3J0IFRoZSBwb3J0IHRvIGNvbm5lY3QgdG8uCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1RjcFRyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCBuZG5fVGNwVHJhbnNwb3J0ICpzZWxmLCBjaGFyICpob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KQotewotICByZXR1cm4gbmRuX1NvY2tldFRyYW5zcG9ydF9jb25uZWN0KCZzZWxmLT5iYXNlLCBTT0NLRVRfVENQLCBob3N0LCBwb3J0KTsKLX0KLQotLyoqCi0gKiBTZW5kIGRhdGEgdG8gdGhlIHNvY2tldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1RjcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcGFyYW0gZGF0YSBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBvZiBkYXRhIHRvIHNlbmQuCi0gKiBAcGFyYW0gZGF0YUxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGRhdGEuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1RjcFRyYW5zcG9ydF9zZW5kKHN0cnVjdCBuZG5fVGNwVHJhbnNwb3J0ICpzZWxmLCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfc2VuZCgmc2VsZi0+YmFzZSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci19Ci0KLS8qKgotICogQ2hlY2sgaWYgdGhlcmUgaXMgZGF0YSByZWFkeSBvbiB0aGUgc29ja2V0IHRvIGJlIHJlY2VpdmVkIHdpdGggbmRuX1RjcFRyYW5zcG9ydF9yZWNlaXZlLgotICogVGhpcyBkb2VzIG5vdCBibG9jaywgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9UY3BUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIHJlY2VpdmVJc1JlYWR5IFRoaXMgd2lsbCBiZSBzZXQgdG8gMSBpZiBkYXRhIGlzIHJlYWR5LCAwIGlmIG5vdC4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLgotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fVGNwVHJhbnNwb3J0X3JlY2VpdmVJc1JlYWR5KHN0cnVjdCBuZG5fVGNwVHJhbnNwb3J0ICpzZWxmLCBpbnQgKnJlY2VpdmVJc1JlYWR5KQotewotICByZXR1cm4gbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlSXNSZWFkeSgmc2VsZi0+YmFzZSwgcmVjZWl2ZUlzUmVhZHkpOwotfQotCi0vKioKLSAqIFJlY2VpdmUgZGF0YSBmcm9tIHRoZSBzb2NrZXQuICBOT1RFOiBUaGlzIGlzIGEgYmxvY2tpbmcgY2FsbC4gIFlvdSBzaG91bGQgZmlyc3QgY2FsbCBuZG5fU29ja2V0VHJhbnNwb3J0X3JlY2VpdmVJc1JlYWR5Ci0gKiB0byBtYWtlIHN1cmUgdGhlcmUgaXMgZGF0YSByZWFkeSB0byByZWNlaXZlLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVGNwVHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSBidWZmZXIgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgZGF0YS4KLSAqIEBwYXJhbSBidWZmZXJMZW5ndGggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGJ1ZmZlci4KLSAqIEBwYXJhbSBuQnl0ZXMgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgaW50byBidWZmZXIuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1RjcFRyYW5zcG9ydF9yZWNlaXZlCi0gIChzdHJ1Y3QgbmRuX1RjcFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBzaXplX3QgKm5CeXRlcykKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZSgmc2VsZi0+YmFzZSwgYnVmZmVyLCBidWZmZXJMZW5ndGgsIG5CeXRlcyk7Ci19Ci0KLS8qKgotICogQ2xvc2UgdGhlIHNvY2tldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1RjcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1RjcFRyYW5zcG9ydF9jbG9zZShzdHJ1Y3QgbmRuX1RjcFRyYW5zcG9ydCAqc2VsZikKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfY2xvc2UoJnNlbGYtPmJhc2UpOwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL3RyYW5zcG9ydC91ZHAtdHJhbnNwb3J0LmggYi9zcmMvYy90cmFuc3BvcnQvdWRwLXRyYW5zcG9ydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGQxMDZiLi4wMDAwMDAwCi0tLSBhL3NyYy9jL3RyYW5zcG9ydC91ZHAtdHJhbnNwb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKiAKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fVURQVFJBTlNQT1JUX0gKLSNkZWZpbmUgTkROX1VEUFRSQU5TUE9SVF9ICi0KLSNpbmNsdWRlICJzb2NrZXQtdHJhbnNwb3J0LmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotc3RydWN0IG5kbl9VZHBUcmFuc3BvcnQgewotICBzdHJ1Y3QgbmRuX1NvY2tldFRyYW5zcG9ydCBiYXNlOwotfTsKLSAgCi0vKioKLSAqIEluaXRpYWxpemUgdGhlIG5kbl9VZHBUcmFuc3BvcnQgc3RydWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgZm9yIG5vIGNvbm5lY3Rpb24geWV0LgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVWRwVHJhbnNwb3J0IHN0cnVjdC4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9VZHBUcmFuc3BvcnRfaW5pdGlhbGl6ZShzdHJ1Y3QgbmRuX1VkcFRyYW5zcG9ydCAqc2VsZikKLXsKLSAgbmRuX1NvY2tldFRyYW5zcG9ydF9pbml0aWFsaXplKCZzZWxmLT5iYXNlKTsKLX0KLQotLyoqCi0gKiBDb25uZWN0IHdpdGggVURQIHRvIHRoZSBob3N0OnBvcnQuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9VZHBUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIGhvc3QgVGhlIGhvc3QgdG8gY29ubmVjdCB0by4KLSAqIEBwYXJhbSBwb3J0IFRoZSBwb3J0IHRvIGNvbm5lY3QgdG8uCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1VkcFRyYW5zcG9ydF9jb25uZWN0KHN0cnVjdCBuZG5fVWRwVHJhbnNwb3J0ICpzZWxmLCBjaGFyICpob3N0LCB1bnNpZ25lZCBzaG9ydCBwb3J0KQotewotICByZXR1cm4gbmRuX1NvY2tldFRyYW5zcG9ydF9jb25uZWN0KCZzZWxmLT5iYXNlLCBTT0NLRVRfVURQLCBob3N0LCBwb3J0KTsKLX0KLQotLyoqCi0gKiBTZW5kIGRhdGEgdG8gdGhlIHNvY2tldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1VkcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcGFyYW0gZGF0YSBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBvZiBkYXRhIHRvIHNlbmQuCi0gKiBAcGFyYW0gZGF0YUxlbmd0aCBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGRhdGEuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1VkcFRyYW5zcG9ydF9zZW5kKHN0cnVjdCBuZG5fVWRwVHJhbnNwb3J0ICpzZWxmLCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfc2VuZCgmc2VsZi0+YmFzZSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci19Ci0KLS8qKgotICogQ2hlY2sgaWYgdGhlcmUgaXMgZGF0YSByZWFkeSBvbiB0aGUgc29ja2V0IHRvIGJlIHJlY2VpdmVkIHdpdGggbmRuX1VkcFRyYW5zcG9ydF9yZWNlaXZlLgotICogVGhpcyBkb2VzIG5vdCBibG9jaywgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuCi0gKiBAcGFyYW0gc2VsZiBBIHBvaW50ZXIgdG8gdGhlIG5kbl9VZHBUcmFuc3BvcnQgc3RydWN0LgotICogQHBhcmFtIHJlY2VpdmVJc1JlYWR5IFRoaXMgd2lsbCBiZSBzZXQgdG8gMSBpZiBkYXRhIGlzIHJlYWR5LCAwIGlmIG5vdC4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlLgotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fVWRwVHJhbnNwb3J0X3JlY2VpdmVJc1JlYWR5KHN0cnVjdCBuZG5fVWRwVHJhbnNwb3J0ICpzZWxmLCBpbnQgKnJlY2VpdmVJc1JlYWR5KQotewotICByZXR1cm4gbmRuX1NvY2tldFRyYW5zcG9ydF9yZWNlaXZlSXNSZWFkeSgmc2VsZi0+YmFzZSwgcmVjZWl2ZUlzUmVhZHkpOwotfQotCi0vKioKLSAqIFJlY2VpdmUgZGF0YSBmcm9tIHRoZSBzb2NrZXQuICBOT1RFOiBUaGlzIGlzIGEgYmxvY2tpbmcgY2FsbC4gIFlvdSBzaG91bGQgZmlyc3QgY2FsbCBuZG5fU29ja2V0VHJhbnNwb3J0X3JlY2VpdmVJc1JlYWR5Ci0gKiB0byBtYWtlIHN1cmUgdGhlcmUgaXMgZGF0YSByZWFkeSB0byByZWNlaXZlLgotICogQHBhcmFtIHNlbGYgQSBwb2ludGVyIHRvIHRoZSBuZG5fVWRwVHJhbnNwb3J0IHN0cnVjdC4KLSAqIEBwYXJhbSBidWZmZXIgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSB0aGUgZGF0YS4KLSAqIEBwYXJhbSBidWZmZXJMZW5ndGggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGJ1ZmZlci4KLSAqIEBwYXJhbSBuQnl0ZXMgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgaW50byBidWZmZXIuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1VkcFRyYW5zcG9ydF9yZWNlaXZlCi0gIChzdHJ1Y3QgbmRuX1VkcFRyYW5zcG9ydCAqc2VsZiwgdWludDhfdCAqYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBzaXplX3QgKm5CeXRlcykKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfcmVjZWl2ZSgmc2VsZi0+YmFzZSwgYnVmZmVyLCBidWZmZXJMZW5ndGgsIG5CeXRlcyk7Ci19Ci0KLS8qKgotICogQ2xvc2UgdGhlIHNvY2tldC4KLSAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGUgbmRuX1VkcFRyYW5zcG9ydCBzdHJ1Y3QuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZS4KLSAqLwotc3RhdGljIGlubGluZSBuZG5fRXJyb3IgbmRuX1VkcFRyYW5zcG9ydF9jbG9zZShzdHJ1Y3QgbmRuX1VkcFRyYW5zcG9ydCAqc2VsZikKLXsKLSAgcmV0dXJuIG5kbl9Tb2NrZXRUcmFuc3BvcnRfY2xvc2UoJnNlbGYtPmJhc2UpOwotfQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL3V0aWwvYmxvYi5oIGIvc3JjL2MvdXRpbC9ibG9iLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YmJhZjkuLjAwMDAwMDAKLS0tIGEvc3JjL2MvdXRpbC9ibG9iLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQkxPQl9ICi0jZGVmaW5lIE5ETl9CTE9CX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyoqCi0gKiBBbiBuZG5fQmxvYiBob2xkcyBhIHBvaW50ZXIgdG8gYSByZWFkLW9ubHkgcHJlLWFsbG9jYXRlZCBidWZmZXIgYW5kIGl0cyBsZW5ndGguCi0gKi8KLXN0cnVjdCBuZG5fQmxvYiB7Ci0gIHVpbnQ4X3QgKnZhbHVlOyAvKio8IHBvaW50ZXIgdG8gdGhlIHByZS1hbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgdmFsdWUuIE11c3QgYmUgdHJlYXRlZCBhcyByZWFkIG9ubHkuICovCi0gIHNpemVfdCBsZW5ndGg7ICAvKio8IHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdmFsdWUuICovCi19OwotCi0vKioKLSAqIEluaXRpYWxpemUgdGhlIG5kbl9CbG9iIHN0cnVjdCB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9CbG9iIHN0cnVjdC4KLSAqIEBwYXJhbSB2YWx1ZSBUaGUgcHJlLWFsbG9jYXRlZCBidWZmZXIgZm9yIHRoZSB2YWx1ZSwgb3IgMCBmb3Igbm9uZS4KLSAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiB2YWx1ZS4KLSAqLwotc3RhdGljIGlubGluZSB2b2lkIG5kbl9CbG9iX2luaXRpYWxpemUoc3RydWN0IG5kbl9CbG9iICpzZWxmLCB1aW50OF90ICp2YWx1ZSwgc2l6ZV90IGxlbmd0aCkgCi17Ci0gIHNlbGYtPnZhbHVlID0gdmFsdWU7Ci0gIHNlbGYtPmxlbmd0aCA9IGxlbmd0aDsKLX0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL2NyeXB0by5jIGIvc3JjL2MvdXRpbC9jcnlwdG8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg0ZTViOC4uMDAwMDAwMAotLS0gYS9zcmMvYy91dGlsL2NyeXB0by5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJuZG4tY3BwLWRldi9jL3V0aWwvY3J5cHRvLmgiCi0KLXZvaWQgbmRuX2RpZ2VzdFNoYTI1Nihjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdWludDhfdCAqZGlnZXN0KQotewotICBTSEEyNTZfQ1RYIHNoYTI1NjsKLSAgU0hBMjU2X0luaXQoJnNoYTI1Nik7Ci0gIFNIQTI1Nl9VcGRhdGUoJnNoYTI1NiwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0gIFNIQTI1Nl9GaW5hbChkaWdlc3QsICZzaGEyNTYpOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2MvdXRpbC9keW5hbWljLXVpbnQ4LWFycmF5LmMgYi9zcmMvYy91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNiZmQ3Yy4uMDAwMDAwMAotLS0gYS9zcmMvYy91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuYworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAiZHluYW1pYy11aW50OC1hcnJheS5oIgotCi1uZG5fRXJyb3IgbmRuX0R5bmFtaWNVSW50OEFycmF5X3JlYWxsb2NBcnJheShzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCBzaXplX3QgbGVuZ3RoKQotewotICBpZiAoIXNlbGYtPnJlYWxsb2MpCi0gICAgcmV0dXJuIE5ETl9FUlJPUl9EeW5hbWljVUludDhBcnJheV9yZWFsbG9jX2Z1bmN0aW9uX3BvaW50ZXJfbm90X3N1cHBsaWVkOwotICAKLSAgLy8gU2VlIGlmIGRvdWJsZSBpcyBlbm91Z2guCi0gIHNpemVfdCBuZXdMZW5ndGggPSBzZWxmLT5sZW5ndGggKiAyOwotICBpZiAobGVuZ3RoID4gbmV3TGVuZ3RoKQotICAgIC8vIFRoZSBuZWVkZWQgbGVuZ3RoIGlzIG11Y2ggZ3JlYXRlciwgc28gdXNlIGl0LgotICAgIG5ld0xlbmd0aCA9IGxlbmd0aDsKLSAgICAKLSAgdWludDhfdCAqbmV3QXJyYXkgPSAoKnNlbGYtPnJlYWxsb2MpKHNlbGYsIHNlbGYtPmFycmF5LCBuZXdMZW5ndGgpOwotICBpZiAoIW5ld0FycmF5KQotICAgIHJldHVybiBORE5fRVJST1JfRHluYW1pY1VJbnQ4QXJyYXlfcmVhbGxvY19mYWlsZWQ7Ci0gIAotICBzZWxmLT5hcnJheSA9IG5ld0FycmF5OwotICBzZWxmLT5sZW5ndGggPSBuZXdMZW5ndGg7Ci0gIAotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19CmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL2R5bmFtaWMtdWludDgtYXJyYXkuaCBiL3NyYy9jL3V0aWwvZHluYW1pYy11aW50OC1hcnJheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTQ4NjYyLi4wMDAwMDAwCi0tLSBhL3NyYy9jL3V0aWwvZHluYW1pYy11aW50OC1hcnJheS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0RZTkFNSUNVQ0hBUkFSUkFZX0gKLSNkZWZpbmUgTkROX0RZTkFNSUNVQ0hBUkFSUkFZX0gKLQotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotI2luY2x1ZGUgIm5kbl9tZW1vcnkuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1zdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5IHsKLSAgdWludDhfdCAqYXJyYXk7IC8qKjwgdGhlIGFsbG9jYXRlZCBhcnJheSBidWZmZXIgKi8KLSAgc2l6ZV90IGxlbmd0aDsgIC8qKjwgdGhlIGxlbmd0aCBvZiB0aGUgYWxsb2NhdGVkIGFycmF5IGJ1ZmZlciAqLwotICB1aW50OF90ICogKCpyZWFsbG9jKQotICAgIChzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCB1aW50OF90ICphcnJheSwgc2l6ZV90IGxlbmd0aCk7IC8qKjwgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdGhhdCByZWFsbG9jYXRlcyBhcnJheSBhbmQgcmV0dXJucyBhIG5ldyBwb2ludGVyIHRvIGEgYnVmZmVyIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbGVuZ3RoIGJ5dGVzLCBvciAwIGZvciBlcnJvci4gIE9uIHN1Y2Nlc3MsIHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIGJ1ZmZlciBhcmUgY29waWVkIHRvIHRoZSBuZXcgb25lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE9uIHN1Y2Nlc3MsIHRoZSBvcmlnaW5hbCBhcnJheSBwb2ludGVyIHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2VsZiBpcyBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgd2hpY2ggaXMgY2FsbGluZyByZWFsbG9jLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBtYXkgYmUgMCAod2hpY2ggY2F1c2VzIGFuIGVycm9yIGlmIGEgcmVhbGxvY2F0ZSBpcyBuZWNlc3NhcnkpLiAqLwotfTsKLQotLyoqCi0gKiBJbml0aWFsaXplIGFuIG5kbl9EeW5hbWljVUludDhBcnJheSBzdHJ1Y3Qgd2l0aCB0aGUgZ2l2ZW4gYXJyYXkgYnVmZmVyLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0R5bmFtaWNVSW50OEFycmF5IHN0cnVjdAotICogQHBhcmFtIGFycmF5IHRoZSBhbGxvY2F0ZWQgYXJyYXkgYnVmZmVyCi0gKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGFsbG9jYXRlZCBhcnJheSBidWZmZXIKLSAqIEBwYXJhbSByZWFsbG9jRnVuY3Rpb24gc2VlIG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGguICBUaGlzIG1heSBiZSAwLgotICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbmRuX0R5bmFtaWNVSW50OEFycmF5X2luaXRpYWxpemUKLSAgKHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgKnNlbGYsIHVpbnQ4X3QgKmFycmF5LCBzaXplX3QgbGVuZ3RoLCAKLSAgIHVpbnQ4X3QgKiAoKnJlYWxsb2NGdW5jdGlvbikoc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgdWludDhfdCAqLCBzaXplX3QpKSAKLXsKLSAgc2VsZi0+YXJyYXkgPSBhcnJheTsKLSAgc2VsZi0+bGVuZ3RoID0gbGVuZ3RoOwotICBzZWxmLT5yZWFsbG9jID0gcmVhbGxvY0Z1bmN0aW9uOwotfQotCi0vKioKLSAqIERvIHRoZSB3b3JrIG9mIG5kbl9EeW5hbWljVUludDhBcnJheV9lbnN1cmVMZW5ndGggaWYgcmVhbGxvYyBpcyBuZWNlc3NhcnkuCi0gKiBJZiB0aGUgc2VsZi0+cmVhbGxvYyBmdW5jdGlvbiBwb2ludGVyIGlzIG51bGwsIHRoZW4gcmV0dXJuIGFuIGVycm9yLgotICogSWYgbm90IG51bGwsIGNhbGwgc2VsZi0+cmVhbGxvYyB0byByZWFsbG9jYXRlIHNlbGYtPmFycmF5LCBhbmQgdXBkYXRlIHNlbGYtPmxlbmd0aCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgdGhhbiBsZW5ndGgpLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0R5bmFtaWNVSW50OEFycmF5IHN0cnVjdAotICogQHBhcmFtIGxlbmd0aCB0aGUgbmVlZGVkIG1pbmltdW0gc2l6ZSBmb3Igc2VsZi0+bGVuZ3RoCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSBpZiBjYW4ndCByZWFsbG9jYXRlIHRoZSBhcnJheQotICovCi1uZG5fRXJyb3IgbmRuX0R5bmFtaWNVSW50OEFycmF5X3JlYWxsb2NBcnJheShzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCBzaXplX3QgbGVuZ3RoKTsKLQotLyoqCi0gKiBFbnN1cmUgdGhhdCBzZWxmLT5sZW5ndGggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGxlbmd0aC4gIElmIGl0IGlzLCBqdXN0IHJldHVybiAwIGZvciBzdWNjZXNzLgotICogT3RoZXJ3aXNlLCBpZiB0aGUgc2VsZi0+cmVhbGxvYyBmdW5jdGlvbiBwb2ludGVyIGlzIG51bGwsIHRoZW4gcmV0dXJuIGFuIGVycm9yLgotICogSWYgbm90IG51bGwsIGNhbGwgc2VsZi0+cmVhbGxvYyB0byByZWFsbG9jYXRlIHNlbGYtPmFycmF5LCBhbmQgdXBkYXRlIHNlbGYtPmxlbmd0aCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgdGhhbiBsZW5ndGgpLgotICogQHBhcmFtIHNlbGYgcG9pbnRlciB0byB0aGUgbmRuX0R5bmFtaWNVSW50OEFycmF5IHN0cnVjdAotICogQHBhcmFtIGxlbmd0aCB0aGUgbmVlZGVkIG1pbmltdW0gc2l6ZSBmb3Igc2VsZi0+bGVuZ3RoCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSBpZiBuZWVkIHRvIHJlYWxsb2NhdGUgdGhlIGFycmF5IGJ1dCBjYW4ndAotICovCi1zdGF0aWMgaW5saW5lIG5kbl9FcnJvciBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgKnNlbGYsIHNpemVfdCBsZW5ndGgpIAotewotICBpZiAoc2VsZi0+bGVuZ3RoID49IGxlbmd0aCkKLSAgICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0KLSAgcmV0dXJuIG5kbl9EeW5hbWljVUludDhBcnJheV9yZWFsbG9jQXJyYXkoc2VsZiwgbGVuZ3RoKTsKLX0KLQotLyoqCi0gKiBDb3B5IHZhbHVlIGludG8gc2VsZi0+YXJyYXkgYXQgb2Zmc2V0LCB1c2luZyBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoIHRvIG1ha2Ugc3VyZSBzZWxmLT5hcnJheSBoYXMgZW5vdWdoIGxlbmd0aC4KLSAqIEBwYXJhbSBzZWxmIHBvaW50ZXIgdG8gdGhlIG5kbl9EeW5hbWljVUludDhBcnJheSBzdHJ1Y3QKLSAqIEBwYXJhbSB2YWx1ZSB0aGUgYnVmZmVyIHRvIGNvcHkgZnJvbQotICogQHBhcmFtIHZhbHVlTGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIGJ1ZmZlcgotICogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IGluIHNlbGYtPmFycmF5IHRvIGNvcHkgdG8KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlIGlmIG5lZWQgdG8gcmVhbGxvY2F0ZSB0aGUgYXJyYXkgYnV0IGNhbid0Ci0gKi8KLXN0YXRpYyBpbmxpbmUgbmRuX0Vycm9yIG5kbl9EeW5hbWljVUludDhBcnJheV9zZXQKLSAgKHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgKnNlbGYsIHVpbnQ4X3QgKnZhbHVlLCBzaXplX3QgdmFsdWVMZW5ndGgsIHNpemVfdCBvZmZzZXQpIAotewotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfZW5zdXJlTGVuZ3RoKHNlbGYsIHZhbHVlTGVuZ3RoICsgb2Zmc2V0KSkpCi0gICAgcmV0dXJuIGVycm9yOwotICBuZG5fbWVtY3B5KHNlbGYtPmFycmF5ICsgb2Zmc2V0LCB2YWx1ZSwgdmFsdWVMZW5ndGgpOwotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci19OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvc3JjL2MvdXRpbC9uZG5fbWVtb3J5LmMgYi9zcmMvYy91dGlsL25kbl9tZW1vcnkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTljMzUxMC4uMDAwMDAwMAotLS0gYS9zcmMvYy91dGlsL25kbl9tZW1vcnkuYworKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEplZmYgVGhvbXBzb24gPGplZmZ0MEByZW1hcC51Y2xhLmVkdT4KLSAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KLSAqLwotCi0jaW5jbHVkZSAibmRuX21lbW9yeS5oIgotCi0jaWYgIU5ETl9DUFBfSEFWRV9NRU1DTVAKLWludCBuZG5fbWVtY21wKGNvbnN0IHVpbnQ4X3QgKmJ1ZjEsIGNvbnN0IHVpbnQ4X3QgKmJ1ZjIsIHNpemVfdCBsZW4pCi17Ci0gIHNpemVfdCBpOwotICAKLSAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgaWYgKGJ1ZjFbaV0gPiBidWYyW2ldKQotICAgICAgcmV0dXJuIDE7Ci0gICAgZWxzZSBpZiAoYnVmMVtpXSA8IGJ1ZjJbaV0pCi0gICAgICByZXR1cm4gLTE7Ci0gIH0KLSAgCi0gIHJldHVybiAwOwotfQotI2Vsc2UKLWludCBuZG5fbWVtY21wX3N0dWJfdG9fYXZvaWRfZW1wdHlfZmlsZV93YXJuaW5nID0gMDsKLSNlbmRpZgotCi0jaWYgIU5ETl9DUFBfSEFWRV9NRU1DUFkKLXZvaWQgbmRuX21lbWNweSh1aW50OF90ICpkZXN0LCBjb25zdCB1aW50OF90ICpzcmMsIHNpemVfdCBsZW4pCi17Ci0gIHNpemVfdCBpOwotICAKLSAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgIGRlc3RbaV0gPSBzcmNbaV07Ci19Ci0jZWxzZQotaW50IG5kbl9tZW1jcHlfc3R1Yl90b19hdm9pZF9lbXB0eV9maWxlX3dhcm5pbmcgPSAwOwotI2VuZGlmCi0KLSNpZiAhTkROX0NQUF9IQVZFX01FTVNFVAotdm9pZCBuZG5fbWVtc2V0KHVpbnQ4X3QgKmRlc3QsIGludCB2YWwsIHNpemVfdCBsZW4pCi17Ci0gIHNpemVfdCBpOwotICAKLSAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgIGRlc3RbaV0gPSAodWludDhfdCl2YWw7Ci19Ci0jZWxzZQotaW50IG5kbl9tZW1zZXRfc3R1Yl90b19hdm9pZF9lbXB0eV9maWxlX3dhcm5pbmcgPSAwOwotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL25kbl9tZW1vcnkuaCBiL3NyYy9jL3V0aWwvbmRuX21lbW9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDc3OWJlLi4wMDAwMDAwCi0tLSBhL3NyYy9jL3V0aWwvbmRuX21lbW9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLS8qCi0gKiBCYXNlZCBvbiBORE5fQ1BQX0hBVkVfTUVNQ1BZIGFuZCBORE5fQ1BQX0hBVkVfTUVNU0VUIGluIG5kbi1jcHAtY29uZmlnLmgsIHVzZSB0aGUgbGlicmFyeSB2ZXJzaW9uIG9yIGEgbG9jYWwgaW1wbGVtZW50YXRpb24gb2YgbWVtY21wLCBtZW1jcHkgYW5kIG1lbXNldC4KLSAqLwotCi0jaWZuZGVmIE5ETl9NRU1PUllfSAotI2RlZmluZSBORE5fTUVNT1JZX0gKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2MvY29tbW9uLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2lmIE5ETl9DUFBfSEFWRV9NRU1DTVAKLSNpbmNsdWRlIDxtZW1vcnkuaD4KLS8qKgotICogVXNlIHRoZSBsaWJyYXJ5IHZlcnNpb24gb2YgbWVtY21wLgotICovCi1zdGF0aWMgaW5saW5lIGludCBuZG5fbWVtY21wKGNvbnN0IHVpbnQ4X3QgKmJ1ZjEsIGNvbnN0IHVpbnQ4X3QgKmJ1ZjIsIHNpemVfdCBsZW4pIHsgcmV0dXJuIG1lbWNtcChidWYxLCBidWYyLCBsZW4pOyB9Ci0jZWxzZQotLyoqCi0gKiBVc2UgYSBsb2NhbCBpbXBsZW1lbnRhdGlvbiBvZiBtZW1jbXAgaW5zdGVhZCBvZiB0aGUgbGlicmFyeSB2ZXJzaW9uLgotICovCi1pbnQgbmRuX21lbWNtcChjb25zdCB1aW50OF90ICpidWYxLCBjb25zdCB1aW50OF90ICpidWYyLCBzaXplX3QgbGVuKTsKLSNlbmRpZgotCi0jaWYgTkROX0NQUF9IQVZFX01FTUNQWQotI2luY2x1ZGUgPG1lbW9yeS5oPgotLyoqCi0gKiBVc2UgdGhlIGxpYnJhcnkgdmVyc2lvbiBvZiBtZW1jcHkuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fbWVtY3B5KHVpbnQ4X3QgKmRlc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywgc2l6ZV90IGxlbikgeyBtZW1jcHkoZGVzdCwgc3JjLCBsZW4pOyB9Ci0jZWxzZQotLyoqCi0gKiBVc2UgYSBsb2NhbCBpbXBsZW1lbnRhdGlvbiBvZiBtZW1jcHkgaW5zdGVhZCBvZiB0aGUgbGlicmFyeSB2ZXJzaW9uLgotICovCi12b2lkIG5kbl9tZW1jcHkodWludDhfdCAqZGVzdCwgY29uc3QgdWludDhfdCAqc3JjLCBzaXplX3QgbGVuKTsKLSNlbmRpZgotCi0jaWYgTkROX0NQUF9IQVZFX01FTVNFVAotI2luY2x1ZGUgPG1lbW9yeS5oPgotLyoqCi0gKiBVc2UgdGhlIGxpYnJhcnkgdmVyc2lvbiBvZiBtZW1zZXQuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBuZG5fbWVtc2V0KHVpbnQ4X3QgKmRlc3QsIGludCB2YWwsIHNpemVfdCBsZW4pIHsgbWVtc2V0KGRlc3QsIHZhbCwgbGVuKTsgfQotI2Vsc2UKLS8qKgotICogVXNlIGEgbG9jYWwgaW1wbGVtZW50YXRpb24gb2YgbWVtc2V0IGluc3RlYWQgb2YgdGhlIGxpYnJhcnkgdmVyc2lvbi4KLSAqLwotdm9pZCBuZG5fbWVtc2V0KHVpbnQ4X3QgKmRlc3QsIGludCB2YWwsIHNpemVfdCBsZW4pOwotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL25kbl9yZWFsbG9jLmMgYi9zcmMvYy91dGlsL25kbl9yZWFsbG9jLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMTQ3ZjQuLjAwMDAwMDAKLS0tIGEvc3JjL2MvdXRpbC9uZG5fcmVhbGxvYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlICJuZG5fcmVhbGxvYy5oIgotCi11aW50OF90ICpuZG5fcmVhbGxvYyhzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCB1aW50OF90ICphcnJheSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgcmV0dXJuICh1aW50OF90ICopcmVhbGxvYyhhcnJheSwgbGVuZ3RoKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9jL3V0aWwvbmRuX3JlYWxsb2MuaCBiL3NyYy9jL3V0aWwvbmRuX3JlYWxsb2MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FlYjZhZi4uMDAwMDAwMAotLS0gYS9zcmMvYy91dGlsL25kbl9yZWFsbG9jLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fTkROX1JFQUxMT0NfSAotI2RlZmluZSBORE5fTkROX1JFQUxMT0NfSAotCi0jaW5jbHVkZSAiZHluYW1pYy11aW50OC1hcnJheS5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogV3JhcCB0aGUgQyBzdGRsaWIgcmVhbGxvYyB0byBjb252ZXJ0IHRvL2Zyb20gdm9pZCAqIHRvIHVpbnQ4X3QgKi4KLSAqIFRoaXMgY2FuIGJlIHVzZWQgYnkgbmRuX0R5bmFtaWNVSW50OEFycmF5X2luaXRpYWxpemUuCi0gKiBAcGFyYW0gc2VsZiBUaGlzIGlzIGlnbm9yZWQuCi0gKiBAcGFyYW0gYXJyYXkgdGhlIGFsbG9jYXRlZCBhcnJheSBidWZmZXIgdG8gcmVhbGxvYy4KLSAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBmb3IgdGhlIG5ldyBhcnJheSBidWZmZXIuCi0gKiBAcmV0dXJuIHRoZSBuZXcgYWxsb2NhdGVkIGFycmF5IGJ1ZmZlci4KLSAqLwotdWludDhfdCAqbmRuX3JlYWxsb2Moc3RydWN0IG5kbl9EeW5hbWljVUludDhBcnJheSAqc2VsZiwgdWludDhfdCAqYXJyYXksIHNpemVfdCBsZW5ndGgpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9jL3V0aWwvdGltZS5jIGIvc3JjL2MvdXRpbC90aW1lLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNzE5YzIuLjAwMDAwMDAKLS0tIGEvc3JjL2MvdXRpbC90aW1lLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L25kbi1jcHAtY29uZmlnLmg+Ci0jaWYgTkROX0NQUF9IQVZFX1RJTUVfSAotI2luY2x1ZGUgPHRpbWUuaD4KLSNlbmRpZgotI2lmIE5ETl9DUFBfSEFWRV9TWVNfVElNRV9ICi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbmRpZgotI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgInRpbWUuaCIKLQotbmRuX01pbGxpc2Vjb25kc1NpbmNlMTk3MCAKLW5kbl9nZXROb3dNaWxsaXNlY29uZHMoKQotewotICBzdHJ1Y3QgdGltZXZhbCB0OwotICAvLyBOb3RlOiBjb25maWd1cmUuYWMgcmVxdWlyZXMgZ2V0dGltZW9mZGF5LgotICBnZXR0aW1lb2ZkYXkoJnQsIDApOwotICByZXR1cm4gdC50dl9zZWMgKiAxMDAwLjAgKyB0LnR2X3VzZWMgLyAxMDAwLjA7Ci19Ci0KLW5kbl9FcnJvcgotbmRuX3RvSXNvU3RyaW5nKG5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgbWlsbGlzZWNvbmRzLCBjaGFyICppc29TdHJpbmcpCi17Ci0jaWYgTkROX0NQUF9IQVZFX0dNVElNRV9TVVBQT1JUCi0gIGlmIChtaWxsaXNlY29uZHMgPCAwKQotICAgIHJldHVybiBORE5fRVJST1JfQ2FsZW5kYXJfdGltZV92YWx1ZV9vdXRfb2ZfcmFuZ2U7Ci0gIGVsc2UgaWYgKG1pbGxpc2Vjb25kcyA+IDJlMTQpCi0gICAgLy8gMmUxNCBpcyBhYm91dCB0aGUgeWVhciA4MzAwLiAgV2UgZG9uJ3Qgd2FudCB0byBnbyBvdmVyIGEgNC1kaWdpdCB5ZWFyLgotICAgIHJldHVybiBORE5fRVJST1JfQ2FsZW5kYXJfdGltZV92YWx1ZV9vdXRfb2ZfcmFuZ2U7Ci0gIAotICBkb3VibGUgc2Vjb25kc1NpbmNlMTk3MCA9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKLSAgY2hhciBmcmFjdGlvbkJ1ZmZlclsxMF07Ci0gIHNwcmludGYoZnJhY3Rpb25CdWZmZXIsICIlLjA2bGYiLCBmbW9kKHNlY29uZHNTaW5jZTE5NzAsIDEuMCkpOwotICBjb25zdCBjaGFyICpmcmFjdGlvbiA9IHN0cmNocihmcmFjdGlvbkJ1ZmZlciwgJy4nKTsKLSAgaWYgKCFmcmFjdGlvbikKLSAgICAvLyBEb24ndCBleHBlY3QgdGhpcyB0byBoYXBwZW4uCi0gICAgZnJhY3Rpb24gPSAiLjAwMDAwMCI7Ci0gICAgCi0gIHRpbWVfdCBzZWNvbmRzID0gKHRpbWVfdClzZWNvbmRzU2luY2UxOTcwOwotICBzdHJ1Y3QgdG0qIGdtdCA9IGdtdGltZSgmc2Vjb25kcyk7Ci0gIHNwcmludGYoaXNvU3RyaW5nLCAiJTA0ZCUwMmQlMDJkVCUwMmQlMDJkJTAyZCVzIiwgMTkwMCArIGdtdC0+dG1feWVhciwgZ210LT50bV9tb24gKyAxLCBnbXQtPnRtX21kYXksCi0gICAgZ210LT50bV9ob3VyLCBnbXQtPnRtX21pbiwgZ210LT50bV9zZWMsIGZyYWN0aW9uKTsKLSAgCi0gIHJldHVybiBORE5fRVJST1Jfc3VjY2VzczsKLSNlbHNlCi0gIHJldHVybiBORE5fRVJST1JfVGltZV9mdW5jdGlvbnNfYXJlX25vdF9zdXBwb3J0ZWRfYnlfdGhlX3N0YW5kYXJkX2xpYnJhcnk7Ci0jZW5kaWYKLX0KLQotbmRuX0Vycm9yCi1uZG5fZnJvbUlzb1N0cmluZyhjb25zdCBjaGFyKiBpc29TdHJpbmcsIG5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgKm1pbGxpc2Vjb25kcykKLXsKLSNpZiBORE5fQ1BQX0hBVkVfR01USU1FX1NVUFBPUlQKLSAgLy8gSW5pdGlhbGl6ZSB0aW1lIHpvbmUsIGV0Yy4KLSAgdGltZV90IGR1bW15VGltZSA9IDA7Ci0gIHN0cnVjdCB0bSB0bTEgPSAqZ210aW1lKCZkdW1teVRpbWUpOwotICAKLSAgc3NjYW5mKGlzb1N0cmluZywgIiU0ZCUyZCUyZFQlMmQlMmQiLCAmdG0xLnRtX3llYXIsICZ0bTEudG1fbW9uLCAmdG0xLnRtX21kYXksICZ0bTEudG1faG91ciwgJnRtMS50bV9taW4pOwotICAvLyBTa2lwIHRoZSB0aW1lIHBhc3QgbWludXRlcyBhbmQgZ2V0IHRoZSBmbG9hdCBzZWNvbmRzLgotICBkb3VibGUgc2Vjb25kczsKLSAgc3NjYW5mKGlzb1N0cmluZyArICg0ICsgMiArIDIgKyAxICsgMiArIDIpLCAiJWxmIiwgJnNlY29uZHMpOwotICAKLSAgLy8gdG1feWVhciBzdGFydHMgZnJvbSAxOTAwLgotICB0bTEudG1feWVhciAtPSAxOTAwOwotICAvLyB0bV9tb24gc3RhcnRzIGZyb20gMCwgbm90IDEuCi0gIHRtMS50bV9tb24gLT0gMTsKLSAgdG0xLnRtX3NlYyA9IDA7Ci0gIAotICAqbWlsbGlzZWNvbmRzID0gKHRpbWVnbSgmdG0xKSArIHNlY29uZHMpICogMTAwMC4wOwotICByZXR1cm4gTkROX0VSUk9SX3N1Y2Nlc3M7Ci0jZWxzZQotICByZXR1cm4gTkROX0VSUk9SX1RpbWVfZnVuY3Rpb25zX2FyZV9ub3Rfc3VwcG9ydGVkX2J5X3RoZV9zdGFuZGFyZF9saWJyYXJ5OwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9zcmMvYy91dGlsL3RpbWUuaCBiL3NyYy9jL3V0aWwvdGltZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzRlZjIxLi4wMDAwMDAwCi0tLSBhL3NyYy9jL3V0aWwvdGltZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX1RJTUVfSAotI2RlZmluZSBORE5fVElNRV9ICi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL2NvbW1vbi5oPgotI2luY2x1ZGUgIi4uL2Vycm9ycy5oIgotCi0jaWZkZWYgIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKioKLSAqIFVzZSBnZXR0aW1lb2ZkYXkgdG8gcmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgotICogQHJldHVybiBUaGUgY3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcyBzaW5jZSAxLzEvMTk3MCwgaW5jbHVkaW5nIGZyYWN0aW9ucyBvZiBhIG1pbGxpc2Vjb25kIGFjY29yZGluZyB0byB0aW1ldmFsLnR2X3VzZWMuCi0gKi8KLW5kbl9NaWxsaXNlY29uZHNTaW5jZTE5NzAgCi1uZG5fZ2V0Tm93TWlsbGlzZWNvbmRzKCk7Ci0KLS8qKgotICogQ29udmVydCB0aGUgdGltZSBmcm9tIG1pbGxpc2Vjb25kcyB0byBhbiBJU08gdGltZSBzdHJpbmcsIGZvciBleGFtcGxlICIyMDEzMTAxOFQxODQxMzguNDIzMzU1Ii4KLSAqIEBwYXJhbSBtaWxsaXNlY29uZHMgVGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHNpbmNlIDEvMS8xOTcwLCBpbmNsdWRpbmcgZnJhY3Rpb25zIG9mIGEgbWlsbGlzZWNvbmQuCi0gKiBAcGFyYW0gaXNvU3RyaW5nIEEgYnVmZmVyIG9mIGF0IGxlYXN0IDIzIGJ5dGVzIHRvIHJlY2VpdmUgdGhlIG51bGwtdGVybWluYXRlZCBJU08gdGltZSBzdHJpbmcuCi0gKiBAcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIGVsc2UgYW4gZXJyb3IgY29kZSBpbmNsdWRpbmcgaWYgd2UgZG9uJ3QgaGF2ZSBuZWNlc3Nhcnkgc3RhbmRhcmQgbGlicmFyeSBzdXBwb3J0LgotICovCi1uZG5fRXJyb3IKLW5kbl90b0lzb1N0cmluZyhuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwIG1pbGxpc2Vjb25kcywgY2hhciAqaXNvU3RyaW5nKTsKLQotLyoqCi0gKiBQYXJzZSB0aGUgSVNPIHRpbWUgc3RyaW5nIGFuZCByZXR1cm4gdGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzLgotICogQHBhcmFtIGlzb1N0cmluZyBUaGUgSVNPIHRpbWUgc3RyaW5nLCBmb3IgZXhhbXBsZSAiMjAxMzEwMThUMTg0MTM4LjQyMzM1NSIuCi0gKiBAcGFyYW0gbWlsbGlzZWNvbmRzIFJldHVybiB0aGUgdGltZSBpbiBtaWxsaXNlY29uZHMgc2luY2UgMS8xLzE5NzAsIGluY2x1ZGluZyBmcmFjdGlvbnMgb2YgYSBtaWxsaXNlY29uZC4KLSAqIEByZXR1cm4gMCBmb3Igc3VjY2VzcywgZWxzZSBhbiBlcnJvciBjb2RlIGluY2x1ZGluZyBpZiB3ZSBkb24ndCBoYXZlIG5lY2Vzc2FyeSBzdGFuZGFyZCBsaWJyYXJ5IHN1cHBvcnQuCi0gKi8KLW5kbl9FcnJvcgotbmRuX2Zyb21Jc29TdHJpbmcoY29uc3QgY2hhciogaXNvU3RyaW5nLCBuZG5fTWlsbGlzZWNvbmRzU2luY2UxOTcwICptaWxsaXNlY29uZHMpOwotCi0jaWZkZWYgIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvY29tbW9uLmNwcCBiL3NyYy9jb21tb24uY3BwCmluZGV4IDMxNTY5ZTMuLjUzZGY2ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24uY3BwCisrKyBiL3NyYy9jb21tb24uY3BwCkBAIC03LDEzICs3LDcgQEAKIAogI2luY2x1ZGUgPHNzdHJlYW0+CiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvY29tbW9uLmhwcD4KLQotI2lmIE5ETl9DUFBfSEFWRV9USU1FX0gKLSNpbmNsdWRlIDx0aW1lLmg+Ci0jZW5kaWYKLSNpZiBORE5fQ1BQX0hBVkVfU1lTX1RJTUVfSAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKKyNpbmNsdWRlICJ1dGlsL3RpbWUuaHBwIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00MCwxMCArMzQsNyBAQAogTWlsbGlzZWNvbmRzU2luY2UxOTcwCiBnZXROb3coKQogewotICBzdHJ1Y3QgdGltZXZhbCB0OwotICAvLyBOb3RlOiBjb25maWd1cmUuYWMgcmVxdWlyZXMgZ2V0dGltZW9mZGF5LgotICBnZXR0aW1lb2ZkYXkoJnQsIDApOwotICByZXR1cm4gdC50dl9zZWMgKiAxMDAwLjAgKyB0LnR2X3VzZWMgLyAxMDAwLjA7CisgIHJldHVybiBnZXROb3dNaWxsaXNlY29uZHMoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1kZWNvZGVyLmhwcCBiL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzU4M2U1Li4wMDAwMDAwCi0tLSBhL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTERFQ09ERVJfSFBQCi0jZGVmaW5lIE5ETl9CSU5BUllYTUxERUNPREVSX0hQUAotCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgIi4uL2MvZXJyb3JzLmgiCi0jaW5jbHVkZSAiLi4vYy9lbmNvZGluZy9iaW5hcnkteG1sLWRlY29kZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIG5kbiB7Ci0gIAotLyoqCi0gKiBBIEJpbmFyeVhtbERlY29kZXIgZXh0ZW5kcyBhIEMgbmRuX0JpbmFyeVhtbERlY29kZXIgc3RydWN0IGFuZCB3cmFwcyByZWxhdGVkIGZ1bmN0aW9ucy4KLSAqLwotY2xhc3MgQmluYXJ5WG1sRGVjb2RlciA6IHB1YmxpYyBuZG5fQmluYXJ5WG1sRGVjb2RlciB7Ci1wdWJsaWM6Ci0gIC8qKgotICAgKiBJbml0aWFsaXplIHRoZSBiYXNlIG5kbl9CaW5hcnlYbWxEZWNvZGVyIHN0cnVjdCB3aXRoIHRoZSBpbnB1dC4KLSAgICovCi0gIEJpbmFyeVhtbERlY29kZXIoY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgCi0gIHsKLSAgICBuZG5fQmluYXJ5WG1sRGVjb2Rlcl9pbml0aWFsaXplKHRoaXMsICh1aW50OF90ICopaW5wdXQsIGlucHV0TGVuZ3RoKTsKLSAgfQotICAKLSAgLyoqCi0gICAqIERlY29kZSB0aGUgaGVhZGVyIGZyb20gdGhlIGlucHV0IHN0YXJ0aW5nIGF0IG9mZnNldCwgYW5kIGlmIGl0IGlzIGEgRFRBRyB3aGVyZSB0aGUgdmFsdWUgaXMgdGhlIGV4cGVjdGVkVGFnLAotICAgKiB0aGVuIHJldHVybiB0cnVlLCBlbHNlIGZhbHNlLiAgRG8gbm90IHVwZGF0ZSBvZmZzZXQsIGluY2x1ZGluZyBpZiB0aHJvd2luZyBhbiBleGNlcHRpb24uCi0gICAqIEBwYXJhbSBleHBlY3RlZFRhZyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIERUQUcKLSAgICogQHJldHVybiB0cnVlIGlmIGdvdCB0aGUgZXhwZWN0ZWQgdGFnLCBlbHNlIGZhbHNlCi0gICAqLwotICBib29sIAotICBwZWVrRFRhZyh1bnNpZ25lZCBpbnQgZXhwZWN0ZWRUYWcpIAotICB7Ci0gICAgaW50IGdvdEV4cGVjdGVkVGFnOwotICAgIG5kbl9FcnJvciBlcnJvcjsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbERlY29kZXJfcGVla0RUYWcodGhpcywgZXhwZWN0ZWRUYWcsICZnb3RFeHBlY3RlZFRhZykpKQotICAgICAgdGhyb3cgcnVudGltZV9lcnJvcihuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpKTsKLSAgICAKLSAgICByZXR1cm4gZ290RXhwZWN0ZWRUYWc7Ci0gIH0KLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1lbmNvZGVyLmhwcCBiL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWUzOTEzLi4wMDAwMDAwCi0tLSBhL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTEVOQ09ERVJfSFBQCi0jZGVmaW5lIE5ETl9CSU5BUllYTUxFTkNPREVSX0hQUAotCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSAiLi4vdXRpbC9keW5hbWljLXVpbnQ4LXZlY3Rvci5ocHAiCi0jaW5jbHVkZSAiLi4vYy9lbmNvZGluZy9iaW5hcnkteG1sLWVuY29kZXIuaCIKLQotbmFtZXNwYWNlIG5kbiB7Ci0gIAotLyoqCi0gKiBBIEJpbmFyeVhtbEVuY29kZXIgZXh0ZW5kcyBhIEMgbmRuX0JpbmFyeVhtbEVuY29kZXIgc3RydWN0IGFuZCB3cmFwcyByZWxhdGVkIGZ1bmN0aW9ucy4KLSAqLwotY2xhc3MgQmluYXJ5WG1sRW5jb2RlciA6IHB1YmxpYyBuZG5fQmluYXJ5WG1sRW5jb2RlciB7Ci1wdWJsaWM6Ci0gIC8qKgotICAgKiBJbml0aWFsaXplIHRoZSBiYXNlIG5kbl9CaW5hcnlYbWxFbmNvZGVyIHN0cnVjdCB3aXRoIHRoZSBpbml0aWFsTGVuZ3RoLiAgVXNlIHNpbXBsZVJlYWxsb2MuCi0gICAqIEBwYXJhbSBpbml0aWFsTGVuZ3RoIFRoZSBpbml0aWFsIHNpemUgb2YgdGhlIG91dHB1dC4gIElmIG9taXR0ZWQsIHVzZSAxNi4KLSAgICovCi0gIEJpbmFyeVhtbEVuY29kZXIoc2l6ZV90IGluaXRpYWxMZW5ndGggPSAxNikgCi0gIDogb3V0cHV0XygxNikKLSAgewotICAgIG5kbl9CaW5hcnlYbWxFbmNvZGVyX2luaXRpYWxpemUodGhpcywgJm91dHB1dF8pOwotICB9Ci0gIAotICAvKioKLSAgICogUmVzaXplIHRoZSBvdXRwdXQgdmVjdG9yIHRvIHRoZSBjb3JyZWN0IGVuY29kaW5nIGxlbmd0aCBhbmQgcmV0dXJuLgotICAgKiBAcmV0dXJuIFRoZSBlbmNvZGluZyBhcyBhIHNoYXJlZF9wdHIuICBBc3N1bWUgdGhhdCB0aGUgY2FsbGVyIG5vdyBvd25zIHRoZSB2ZWN0b3IuCi0gICAqLwotICBjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4mIAotICBnZXRPdXRwdXQoKSAKLSAgewotICAgIG91dHB1dF8uZ2V0KCktPnJlc2l6ZShvZmZzZXQpOwotICAgIHJldHVybiBvdXRwdXRfLmdldCgpOwotICB9Ci0gIAotICBEeW5hbWljVUludDhWZWN0b3Igb3V0cHV0XzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5ocHAgYi9zcmMvZW5jb2RpbmcvYmluYXJ5LXhtbC1zdHJ1Y3R1cmUtZGVjb2Rlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MDc3NjMuLjAwMDAwMDAKLS0tIGEvc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtc3RydWN0dXJlLWRlY29kZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0JJTkFSWVhNTFNUUlVDVFVSRURFQ09ERVJfSFBQCi0jZGVmaW5lIE5ETl9CSU5BUllYTUxTVFJVQ1RVUkVERUNPREVSX0hQUAotCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgIi4uL2MvZW5jb2RpbmcvQmluYXJ5WE1MU3RydWN0dXJlRGVjb2Rlci5oIgotCi1uYW1lc3BhY2UgbmRuIHsKLSAgCi0vKioKLSAqIEEgQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciBleHRlbmRzIGEgQyBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciBzdHJ1Y3QgYW5kIHdyYXBzIHJlbGF0ZWQgZnVuY3Rpb25zLgotICovCi1jbGFzcyBCaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyIDogcHJpdmF0ZSBuZG5fQmluYXJ5WG1sU3RydWN0dXJlRGVjb2RlciB7Ci1wdWJsaWM6Ci0gIEJpbmFyeVhtbFN0cnVjdHVyZURlY29kZXIoKSAKLSAgewotICAgIG5kbl9CaW5hcnlYbWxTdHJ1Y3R1cmVEZWNvZGVyX2luaXRpYWxpemUodGhpcyk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDb250aW51ZSBzY2FubmluZyBpbnB1dCBzdGFydGluZyBmcm9tIGdldE9mZnNldCgpIHRvIGZpbmQgdGhlIGVsZW1lbnQgZW5kLiAgCi0gICAqIElmIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQgd2hpY2ggc3RhcnRlZCBhdCBvZmZzZXQgMCBpcyBmb3VuZCwgdGhlbiByZXR1cm4gdHJ1ZSBhbmQgZ2V0T2Zmc2V0KCkgaXMgdGhlIGxlbmd0aCBvZiAKLSAgICogICB0aGUgZWxlbWVudC4gIE90aGVyd2lzZSByZXR1cm4gZmFsc2UsIHdoaWNoIG1lYW5zIHlvdSBzaG91bGQgcmVhZCBtb3JlIGludG8gaW5wdXQgYW5kIGNhbGwgYWdhaW4uCi0gICAqIEBwYXJhbSBpbnB1dCB0aGUgaW5wdXQgYnVmZmVyLiBZb3UgaGF2ZSB0byBwYXNzIGluIGlucHV0IGVhY2ggdGltZSBiZWNhdXNlIHRoZSBidWZmZXIgY291bGQgYmUgcmVhbGxvY2F0ZWQuCi0gICAqIEBwYXJhbSBpbnB1dExlbmd0aCB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIGlucHV0LgotICAgKiBAcmV0dXJuIHRydWUgaWYgZm91bmQgdGhlIGVsZW1lbnQgZW5kLCBmYWxzZSBpZiBuZWVkIHRvIHJlYWQgbW9yZS4gKFRoaXMgaXMgdGhlIHNhbWUgYXMgcmV0dXJuaW5nIGdvdEVsZW1lbnRFbmQoKS4pCi0gICAqLwotICBib29sIAotICBmaW5kRWxlbWVudEVuZCh1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKSAKLSAgewotICAgIG5kbl9FcnJvciBlcnJvcjsKLSAgICBpZiAoKGVycm9yID0gbmRuX0JpbmFyeVhtbFN0cnVjdHVyZURlY29kZXJfZmluZEVsZW1lbnRFbmQodGhpcywgaW5wdXQsIGlucHV0TGVuZ3RoKSkpCi0gICAgICB0aHJvdyBydW50aW1lX2Vycm9yKG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikpOwotICAgIHJldHVybiBnb3RFbGVtZW50RW5kKCk7Ci0gIH0KLSAgCi0gIHNpemVfdCAKLSAgZ2V0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0OyB9Ci0gIAotICBib29sIAotICBnb3RFbGVtZW50RW5kKCkgY29uc3QgeyByZXR1cm4gZ290RWxlbWVudEVuZCAhPSAwOyB9Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtd2lyZS1mb3JtYXQuY3BwIGIvc3JjL2VuY29kaW5nL2JpbmFyeS14bWwtd2lyZS1mb3JtYXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2U4YjdiLi4wMDAwMDAwCi0tLSBhL3NyYy9lbmNvZGluZy9iaW5hcnkteG1sLXdpcmUtZm9ybWF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzNiArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9pbnRlcmVzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvZGF0YS5ocHA+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvZm9yd2FyZGluZy1lbnRyeS5ocHA+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvZW5jb2RpbmcvYmluYXJ5LXhtbC13aXJlLWZvcm1hdC5ocHA+Ci0jaW5jbHVkZSAiLi4vYy9lbmNvZGluZy9iaW5hcnkteG1sLWludGVyZXN0LmgiCi0jaW5jbHVkZSAiLi4vYy9lbmNvZGluZy9iaW5hcnkteG1sLWRhdGEuaCIKLSNpbmNsdWRlICIuLi9jL2VuY29kaW5nL2JpbmFyeS14bWwtZm9yd2FyZGluZy1lbnRyeS5oIgotI2luY2x1ZGUgImJpbmFyeS14bWwtZW5jb2Rlci5ocHAiCi0jaW5jbHVkZSAiYmluYXJ5LXhtbC1kZWNvZGVyLmhwcCIKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLW5hbWVzcGFjZSBjIHsKLQotY2xhc3MgRXhjbHVkZSA6IHB1YmxpYyBuZG46OkV4Y2x1ZGUKLXsKLXB1YmxpYzoKLSAgdm9pZAotICBnZXQoc3RydWN0IG5kbl9FeGNsdWRlJiBleGNsdWRlU3RydWN0KSBjb25zdAotICB7Ci0gICAgaWYgKGV4Y2x1ZGVTdHJ1Y3QubWF4RW50cmllcyA8IHNpemUoKSkKLSAgICAgIHRocm93IHJ1bnRpbWVfZXJyb3IoImV4Y2x1ZGVTdHJ1Y3QubWF4RW50cmllcyBtdXN0IGJlID49IHRoaXMgZXhjbHVkZSBnZXRFbnRyeUNvdW50KCkiKTsKLQotICAgIGludCBlbnRyaWVzID0gMDsKLSAgICBmb3IgKEV4Y2x1ZGU6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgaSA9IHJiZWdpbiAoKTsgaSAhPSByZW5kICgpOyBpKyspCi0gICAgICB7Ci0gICAgICAgIGlmICghaS0+Zmlyc3QuZW1wdHkoKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBleGNsdWRlU3RydWN0LmVudHJpZXNbZW50cmllc10udHlwZSA9IG5kbl9FeGNsdWRlX0NPTVBPTkVOVDsKLSAgICAgICAgICAgIGV4Y2x1ZGVTdHJ1Y3QuZW50cmllc1tlbnRyaWVzXS5jb21wb25lbnQudmFsdWUudmFsdWUgPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihpLT5maXJzdC5nZXRWYWx1ZSgpLmJ1ZigpKTsKLSAgICAgICAgICAgIGV4Y2x1ZGVTdHJ1Y3QuZW50cmllc1tlbnRyaWVzXS5jb21wb25lbnQudmFsdWUubGVuZ3RoID0gaS0+Zmlyc3QuZ2V0VmFsdWUoKS5zaXplKCk7Ci0gICAgICAgICAgICArK2VudHJpZXM7Ci0gICAgICAgICAgfQotICAgICAgICBpZiAoaS0+c2Vjb25kKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGV4Y2x1ZGVTdHJ1Y3QuZW50cmllc1tlbnRyaWVzXS50eXBlID0gbmRuX0V4Y2x1ZGVfQU5ZOwotICAgICAgICAgICAgKytlbnRyaWVzOwotICAgICAgICAgIH0KLSAgICAgIH0KLQotICAgIGV4Y2x1ZGVTdHJ1Y3QubkVudHJpZXMgPSBlbnRyaWVzOwotICB9Ci0KLSAgdm9pZAotICBzZXQoY29uc3Qgc3RydWN0IG5kbl9FeGNsdWRlJiBleGNsdWRlU3RydWN0KQotICB7Ci0gICAgY2xlYXIoKTsKLQotICAgIGlmIChleGNsdWRlU3RydWN0Lm5FbnRyaWVzID09IDApCi0gICAgICByZXR1cm47Ci0KLSAgICBpbnQgaSA9IDA7Ci0gICAgaWYgKGV4Y2x1ZGVTdHJ1Y3QuZW50cmllc1tpXS50eXBlID09IG5kbl9FeGNsdWRlX0FOWSkgewotICAgICAgYXBwZW5kRXhjbHVkZSgiLyIsIHRydWUpOwotICAgICAgaSsrOwotICAgIH0KLQotICAgIHdoaWxlIChpIDwgZXhjbHVkZVN0cnVjdC5uRW50cmllcykgewotICAgICAgbmRuX0V4Y2x1ZGVFbnRyeSAqZW50cnkgPSAmZXhjbHVkZVN0cnVjdC5lbnRyaWVzW2ldOwotCi0gICAgICBpZiAoZW50cnktPnR5cGUgIT0gbmRuX0V4Y2x1ZGVfQ09NUE9ORU5UKQotICAgICAgICB0aHJvdyBydW50aW1lX2Vycm9yKCJ1bnJlY29nbml6ZWQgbmRuX0V4Y2x1ZGVUeXBlIik7Ci0KLSAgICAgIE5hbWU6OkNvbXBvbmVudCBleGNsdWRlZENvbXBvbmVudCAoZW50cnktPmNvbXBvbmVudC52YWx1ZS52YWx1ZSwgZW50cnktPmNvbXBvbmVudC52YWx1ZS5sZW5ndGgpOwotICAgICAgKytpOwotICAgICAgZW50cnkgPSAmZXhjbHVkZVN0cnVjdC5lbnRyaWVzW2ldOwotCi0gICAgICBpZiAoaSA8IGV4Y2x1ZGVTdHJ1Y3QubkVudHJpZXMpIHsKLSAgICAgICAgaWYgKGVudHJ5LT50eXBlID09IG5kbl9FeGNsdWRlX0FOWSkgewotICAgICAgICAgIGFwcGVuZEV4Y2x1ZGUoZXhjbHVkZWRDb21wb25lbnQsIHRydWUpOwotICAgICAgICAgICsraTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgYXBwZW5kRXhjbHVkZShleGNsdWRlZENvbXBvbmVudCwgZmFsc2UpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICBhcHBlbmRFeGNsdWRlKGV4Y2x1ZGVkQ29tcG9uZW50LCBmYWxzZSk7Ci0gICAgfQotICB9Ci19OwotCi1jbGFzcyBOYW1lIDogcHVibGljIG5kbjo6TmFtZQotewotcHVibGljOgotICB2b2lkIAotICBnZXQoc3RydWN0IG5kbl9OYW1lJiBuYW1lU3RydWN0KSBjb25zdAotICB7Ci0gICAgaWYgKG5hbWVTdHJ1Y3QubWF4Q29tcG9uZW50cyA8IHNpemUoKSkKLSAgICAgIHRocm93IHJ1bnRpbWVfZXJyb3IoIm5hbWVTdHJ1Y3QubWF4Q29tcG9uZW50cyBtdXN0IGJlID49IHRoaXMgbmFtZSBnZXROQ29tcG9uZW50cygpIik7Ci0gIAotICAgIG5hbWVTdHJ1Y3QubkNvbXBvbmVudHMgPSBzaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuYW1lU3RydWN0Lm5Db21wb25lbnRzOyArK2kpIHsKLSAgICAgIG5hbWVTdHJ1Y3QuY29tcG9uZW50c1tpXS52YWx1ZS52YWx1ZSA9IGNvbnN0X2Nhc3Q8dWludDhfdCo+KG5kbjo6TmFtZTo6Z2V0KGkpLmdldFZhbHVlKCkuYnVmKCkpOwotICAgICAgbmFtZVN0cnVjdC5jb21wb25lbnRzW2ldLnZhbHVlLmxlbmd0aCA9IG5kbjo6TmFtZTo6Z2V0KGkpLmdldFZhbHVlKCkuc2l6ZSgpOwotICAgIH0KLSAgfQotICAKLSAgdm9pZCAKLSAgc2V0KGNvbnN0IHN0cnVjdCBuZG5fTmFtZSYgbmFtZVN0cnVjdCkgCi0gIHsKLSAgICBjbGVhcigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZVN0cnVjdC5uQ29tcG9uZW50czsgKytpKQotICAgICAgYXBwZW5kKG5hbWVTdHJ1Y3QuY29tcG9uZW50c1tpXS52YWx1ZS52YWx1ZSwgbmFtZVN0cnVjdC5jb21wb25lbnRzW2ldLnZhbHVlLmxlbmd0aCk7ICAKLSAgfQotfTsKLQotY2xhc3MgSW50ZXJlc3QgOiBwdWJsaWMgbmRuOjpJbnRlcmVzdAotewotcHVibGljOgotICB2b2lkIAotICBnZXQoc3RydWN0IG5kbl9JbnRlcmVzdCYgaW50ZXJlc3RTdHJ1Y3QpIGNvbnN0IAotICB7Ci0gICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjOjpOYW1lJj4oZ2V0TmFtZSgpKS5nZXQoaW50ZXJlc3RTdHJ1Y3QubmFtZSk7Ci0gICAgaW50ZXJlc3RTdHJ1Y3QubWluU3VmZml4Q29tcG9uZW50cyA9IGdldE1pblN1ZmZpeENvbXBvbmVudHMoKTsKLSAgICBpbnRlcmVzdFN0cnVjdC5tYXhTdWZmaXhDb21wb25lbnRzID0gZ2V0TWF4U3VmZml4Q29tcG9uZW50cygpOwotICAgIC8vIHB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdF8uZ2V0KGludGVyZXN0U3RydWN0LnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCk7Ci0gICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjOjpFeGNsdWRlJj4oZ2V0RXhjbHVkZSgpKS5nZXQoaW50ZXJlc3RTdHJ1Y3QuZXhjbHVkZSk7Ci0gICAgaW50ZXJlc3RTdHJ1Y3QuY2hpbGRTZWxlY3RvciA9IGdldENoaWxkU2VsZWN0b3IoKTsKLSAgICBpbnRlcmVzdFN0cnVjdC5hbnN3ZXJPcmlnaW5LaW5kID0gZ2V0TXVzdEJlRnJlc2goKSA/Ci0gICAgICAobmRuX0ludGVyZXN0X0FOU1dFUl9DT05URU5UX1NUT1JFIHwgbmRuX0ludGVyZXN0X0FOU1dFUl9HRU5FUkFURUQpCi0gICAgICA6Ci0gICAgICAobmRuX0ludGVyZXN0X0FOU1dFUl9DT05URU5UX1NUT1JFIHwgbmRuX0ludGVyZXN0X0FOU1dFUl9HRU5FUkFURUQgfCBuZG5fSW50ZXJlc3RfQU5TV0VSX1NUQUxFKTsKLSAgICBpbnRlcmVzdFN0cnVjdC5zY29wZSA9IGdldFNjb3BlKCk7Ci0gICAgaW50ZXJlc3RTdHJ1Y3QuaW50ZXJlc3RMaWZldGltZU1pbGxpc2Vjb25kcyA9IGdldEludGVyZXN0TGlmZXRpbWUoKTsKLQotICAgIGludGVyZXN0U3RydWN0Lm5vbmNlLmxlbmd0aCA9IDQ7Ci0gICAgaW50ZXJlc3RTdHJ1Y3Qubm9uY2UudmFsdWUgPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZ2V0Tm9uY2UoKSkpOwotICB9ICAKLQotICB2b2lkIAotICBzZXQoY29uc3Qgc3RydWN0IG5kbl9JbnRlcmVzdCYgaW50ZXJlc3RTdHJ1Y3QpIAotICB7Ci0gICAgcmVpbnRlcnByZXRfY2FzdDxjOjpOYW1lJj4oZ2V0TmFtZSgpKS5zZXQoaW50ZXJlc3RTdHJ1Y3QubmFtZSk7Ci0gICAgc2V0TWluU3VmZml4Q29tcG9uZW50cyhpbnRlcmVzdFN0cnVjdC5taW5TdWZmaXhDb21wb25lbnRzKTsKLSAgICBzZXRNYXhTdWZmaXhDb21wb25lbnRzKGludGVyZXN0U3RydWN0Lm1heFN1ZmZpeENvbXBvbmVudHMpOwotICAKLSAgICAvLyBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RfLnNldChpbnRlcmVzdFN0cnVjdC5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QpOwotICAKLSAgICByZWludGVycHJldF9jYXN0PGM6OkV4Y2x1ZGUmPihnZXRFeGNsdWRlKCkpLnNldChpbnRlcmVzdFN0cnVjdC5leGNsdWRlKTsKLSAgICBzZXRDaGlsZFNlbGVjdG9yKGludGVyZXN0U3RydWN0LmNoaWxkU2VsZWN0b3IpOwotICAgIC8vIGFuc3dlck9yaWdpbktpbmRfID0gaW50ZXJlc3RTdHJ1Y3QuYW5zd2VyT3JpZ2luS2luZDsKLSAgICBzZXRTY29wZShpbnRlcmVzdFN0cnVjdC5zY29wZSk7Ci0gICAgc2V0SW50ZXJlc3RMaWZldGltZShpbnRlcmVzdFN0cnVjdC5pbnRlcmVzdExpZmV0aW1lTWlsbGlzZWNvbmRzKTsKLQotICAgIHNldE5vbmNlKCpyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oaW50ZXJlc3RTdHJ1Y3Qubm9uY2UudmFsdWUpKTsKLSAgfQotfTsKLQotY2xhc3MgRGF0YSA6IHB1YmxpYyBuZG46OkRhdGEKLXsKLXB1YmxpYzoKLSAgdm9pZCAKLSAgZ2V0KHN0cnVjdCBuZG5fRGF0YSYgZGF0YVN0cnVjdCkgY29uc3QgCi0gIHsKLSAgICAvLyBzaWduYXR1cmVfLT5nZXQoZGF0YVN0cnVjdC5zaWduYXR1cmUpOwotICAgIC8vIG5hbWVfLmdldChkYXRhU3RydWN0Lm5hbWUpOwotICAgIC8vIG1ldGFJbmZvXy5nZXQoZGF0YVN0cnVjdC5tZXRhSW5mbyk7Ci0gICAgLy8gY29udGVudF8uZ2V0KGRhdGFTdHJ1Y3QuY29udGVudCk7Ci0gIH0KLQotICB2b2lkIAotICBzZXQoY29uc3Qgc3RydWN0IG5kbl9EYXRhJiBkYXRhU3RydWN0KQotICB7Ci0gICAgLy8gc2lnbmF0dXJlXy0+c2V0KGRhdGFTdHJ1Y3Quc2lnbmF0dXJlKTsKLSAgICAvLyBuYW1lXy5zZXQoZGF0YVN0cnVjdC5uYW1lKTsKLSAgICAvLyBtZXRhSW5mb18uc2V0KGRhdGFTdHJ1Y3QubWV0YUluZm8pOwotICAgIC8vIGNvbnRlbnRfID0gQmxvYihkYXRhU3RydWN0LmNvbnRlbnQpOwotICB9Ci19OwotCi1jbGFzcyBGb3J3YXJkaW5nRW50cnkgOiBwdWJsaWMgbmRuOjpGb3J3YXJkaW5nRW50cnkKLXsKLXB1YmxpYzoKLSAgdm9pZCAKLSAgZ2V0KHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5JiBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QpIGNvbnN0IAotICB7Ci0gICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjOjpOYW1lJj4oZ2V0UHJlZml4KCkpLmdldChmb3J3YXJkaW5nRW50cnlTdHJ1Y3QucHJlZml4KTsKLSAgICAvLyBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RfLmdldChmb3J3YXJkaW5nRW50cnlTdHJ1Y3QucHVibGlzaGVyUHVibGljS2V5RGlnZXN0KTsKLSAgICBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuZmFjZUlkID0gZ2V0RmFjZUlkKCk7Ci0gICAgLy8gZm9yd2FyZGluZ0VudHJ5U3RydWN0LmZvcndhcmRpbmdGbGFncyA9IGdldEZvcndhcmRpbmdGbGFncygpOwotICAgIGZvcndhcmRpbmdFbnRyeVN0cnVjdC5mcmVzaG5lc3NTZWNvbmRzID0gZ2V0RnJlc2huZXNzUGVyaW9kKCkgLyAxMDAwOwotCi0gICAgZm9yd2FyZGluZ0VudHJ5U3RydWN0LmFjdGlvbi5sZW5ndGggPSBnZXRBY3Rpb24oKS5zaXplKCk7Ci0gICAgaWYgKGdldEFjdGlvbigpLnNpemUoKSA+IDApCi0gICAgICBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuYWN0aW9uLnZhbHVlID0gKHVpbnQ4X3QgKikmZ2V0QWN0aW9uKCk7Ci0gICAgZWxzZQotICAgICAgZm9yd2FyZGluZ0VudHJ5U3RydWN0LmFjdGlvbi52YWx1ZSA9IDA7Ci0gIH0KLQotICB2b2lkIAotICBzZXQoY29uc3Qgc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkmIGZvcndhcmRpbmdFbnRyeVN0cnVjdCkgCi0gIHsKLSAgICBpZiAoZm9yd2FyZGluZ0VudHJ5U3RydWN0LmFjdGlvbi52YWx1ZSAmJiBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuYWN0aW9uLmxlbmd0aCA+IDApCi0gICAgICBzZXRBY3Rpb24oc3RyaW5nKGZvcndhcmRpbmdFbnRyeVN0cnVjdC5hY3Rpb24udmFsdWUsIGZvcndhcmRpbmdFbnRyeVN0cnVjdC5hY3Rpb24udmFsdWUgKyBmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuYWN0aW9uLmxlbmd0aCkpOwotICAgIGVsc2UKLSAgICAgIHNldEFjdGlvbigiIik7Ci0KLSAgICBOYW1lIHByZWZpeDsKLSAgICByZWludGVycHJldF9jYXN0PGM6Ok5hbWUmPihwcmVmaXgpLnNldChmb3J3YXJkaW5nRW50cnlTdHJ1Y3QucHJlZml4KTsKLSAgICBzZXRQcmVmaXgocHJlZml4KTsKLSAgICAvLyBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RfLnNldChmb3J3YXJkaW5nRW50cnlTdHJ1Y3QucHVibGlzaGVyUHVibGljS2V5RGlnZXN0KTsgIAotICAgIHNldEZhY2VJZChmb3J3YXJkaW5nRW50cnlTdHJ1Y3QuZmFjZUlkKTsKLSAgICAvLyBzZXRGb3J3YXJkaW5nRmxhZ3MoZm9yd2FyZGluZ0VudHJ5U3RydWN0LmZvcndhcmRpbmdGbGFncyk7Ci0gICAgc2V0RnJlc2huZXNzUGVyaW9kKGZvcndhcmRpbmdFbnRyeVN0cnVjdC5mcmVzaG5lc3NTZWNvbmRzICogMTAwMCk7Ci0gIH0KLX07Ci0KLX0KLQotCi0vLyBUaGlzIGlzIGRlY2xhcmVkIGluIHRoZSBXaXJlRm9ybWF0IGNsYXNzLgotV2lyZUZvcm1hdCoKLVdpcmVGb3JtYXQ6Om5ld0luaXRpYWxEZWZhdWx0V2lyZUZvcm1hdCgpIAotewotICByZXR1cm4gbmV3IEJpbmFyeVhtbFdpcmVGb3JtYXQoKTsKLX0KLSAgCi1CbG9iIAotQmluYXJ5WG1sV2lyZUZvcm1hdDo6ZW5jb2RlSW50ZXJlc3QoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0KSAKLXsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IG5hbWVDb21wb25lbnRzWzEwMF07Ci0gIHN0cnVjdCBuZG5fRXhjbHVkZUVudHJ5IGV4Y2x1ZGVFbnRyaWVzWzEwMF07Ci0gIHN0cnVjdCBuZG5fSW50ZXJlc3QgaW50ZXJlc3RTdHJ1Y3Q7Ci0gIG5kbl9JbnRlcmVzdF9pbml0aWFsaXplCi0gICAgKCZpbnRlcmVzdFN0cnVjdCwgbmFtZUNvbXBvbmVudHMsIHNpemVvZihuYW1lQ29tcG9uZW50cykgLyBzaXplb2YobmFtZUNvbXBvbmVudHNbMF0pLCAKLSAgICAgZXhjbHVkZUVudHJpZXMsIHNpemVvZihleGNsdWRlRW50cmllcykgLyBzaXplb2YoZXhjbHVkZUVudHJpZXNbMF0pKTsKLSAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjOjpJbnRlcmVzdCY+KGludGVyZXN0KS5nZXQoaW50ZXJlc3RTdHJ1Y3QpOwotCi0gIEJpbmFyeVhtbEVuY29kZXIgZW5jb2RlcjsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbEludGVyZXN0KCZpbnRlcmVzdFN0cnVjdCwgJmVuY29kZXIpKSkKLSAgICB0aHJvdyBydW50aW1lX2Vycm9yKG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikpOwotICAgICAKLSAgcmV0dXJuIGVuY29kZXIuZ2V0T3V0cHV0KCk7Ci19Ci0KLXZvaWQgCi1CaW5hcnlYbWxXaXJlRm9ybWF0OjpkZWNvZGVJbnRlcmVzdChJbnRlcmVzdCYgaW50ZXJlc3QsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgpCi17Ci0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBuYW1lQ29tcG9uZW50c1sxMDBdOwotICBzdHJ1Y3QgbmRuX0V4Y2x1ZGVFbnRyeSBleGNsdWRlRW50cmllc1sxMDBdOwotICBzdHJ1Y3QgbmRuX0ludGVyZXN0IGludGVyZXN0U3RydWN0OwotICBuZG5fSW50ZXJlc3RfaW5pdGlhbGl6ZQotICAgICgmaW50ZXJlc3RTdHJ1Y3QsIG5hbWVDb21wb25lbnRzLCBzaXplb2YobmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKG5hbWVDb21wb25lbnRzWzBdKSwgCi0gICAgIGV4Y2x1ZGVFbnRyaWVzLCBzaXplb2YoZXhjbHVkZUVudHJpZXMpIC8gc2l6ZW9mKGV4Y2x1ZGVFbnRyaWVzWzBdKSk7Ci0gICAgCi0gIEJpbmFyeVhtbERlY29kZXIgZGVjb2RlcihpbnB1dCwgaW5wdXRMZW5ndGgpOyAgCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVCaW5hcnlYbWxJbnRlcmVzdCgmaW50ZXJlc3RTdHJ1Y3QsICZkZWNvZGVyKSkpCi0gICAgdGhyb3cgcnVudGltZV9lcnJvcihuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpKTsKLQotICByZWludGVycHJldF9jYXN0PGM6OkludGVyZXN0Jj4oaW50ZXJlc3QpLnNldChpbnRlcmVzdFN0cnVjdCk7Ci19Ci0KLUJsb2IgCi1CaW5hcnlYbWxXaXJlRm9ybWF0OjplbmNvZGVEYXRhKGNvbnN0IERhdGEmIGRhdGEsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQpIAotewotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgbmFtZUNvbXBvbmVudHNbMTAwXTsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IGtleU5hbWVDb21wb25lbnRzWzEwMF07Ci0gIHN0cnVjdCBuZG5fRGF0YSBkYXRhU3RydWN0OwotICBuZG5fRGF0YV9pbml0aWFsaXplCi0gICAgKCZkYXRhU3RydWN0LCBuYW1lQ29tcG9uZW50cywgc2l6ZW9mKG5hbWVDb21wb25lbnRzKSAvIHNpemVvZihuYW1lQ29tcG9uZW50c1swXSksIAotICAgICBrZXlOYW1lQ29tcG9uZW50cywgc2l6ZW9mKGtleU5hbWVDb21wb25lbnRzKSAvIHNpemVvZihrZXlOYW1lQ29tcG9uZW50c1swXSkpOwotICByZWludGVycHJldF9jYXN0PGNvbnN0IGM6OkRhdGEmPihkYXRhKS5nZXQoZGF0YVN0cnVjdCk7Ci0KLSAgQmluYXJ5WG1sRW5jb2RlciBlbmNvZGVyKDE1MDApOwotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sRGF0YSgmZGF0YVN0cnVjdCwgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0LCAmZW5jb2RlcikpKQotICAgIHRocm93IHJ1bnRpbWVfZXJyb3IobmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSk7Ci0gICAgIAotICByZXR1cm4gZW5jb2Rlci5nZXRPdXRwdXQoKTsKLX0KLQotdm9pZCAKLUJpbmFyeVhtbFdpcmVGb3JtYXQ6OmRlY29kZURhdGEKLSAgKERhdGEmIGRhdGEsIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRMZW5ndGgsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQpCi17Ci0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBuYW1lQ29tcG9uZW50c1sxMDBdOwotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQga2V5TmFtZUNvbXBvbmVudHNbMTAwXTsKLSAgc3RydWN0IG5kbl9EYXRhIGRhdGFTdHJ1Y3Q7Ci0gIG5kbl9EYXRhX2luaXRpYWxpemUKLSAgICAoJmRhdGFTdHJ1Y3QsIG5hbWVDb21wb25lbnRzLCBzaXplb2YobmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKG5hbWVDb21wb25lbnRzWzBdKSwgCi0gICAgIGtleU5hbWVDb21wb25lbnRzLCBzaXplb2Yoa2V5TmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKGtleU5hbWVDb21wb25lbnRzWzBdKSk7Ci0gICAgCi0gIEJpbmFyeVhtbERlY29kZXIgZGVjb2RlcihpbnB1dCwgaW5wdXRMZW5ndGgpOyAgCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVCaW5hcnlYbWxEYXRhKCZkYXRhU3RydWN0LCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQsICZkZWNvZGVyKSkpCi0gICAgdGhyb3cgcnVudGltZV9lcnJvcihuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpKTsKLQotICByZWludGVycHJldF9jYXN0PGM6OkRhdGEmPihkYXRhKS5zZXQoZGF0YVN0cnVjdCk7Ci19Ci0KLUJsb2IgCi1CaW5hcnlYbWxXaXJlRm9ybWF0OjplbmNvZGVGb3J3YXJkaW5nRW50cnkoY29uc3QgRm9yd2FyZGluZ0VudHJ5JiBmb3J3YXJkaW5nRW50cnkpIAotewotICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgcHJlZml4TmFtZUNvbXBvbmVudHNbMTAwXTsKLSAgc3RydWN0IG5kbl9Gb3J3YXJkaW5nRW50cnkgZm9yd2FyZGluZ0VudHJ5U3RydWN0OwotICBuZG5fRm9yd2FyZGluZ0VudHJ5X2luaXRpYWxpemUKLSAgICAoJmZvcndhcmRpbmdFbnRyeVN0cnVjdCwgcHJlZml4TmFtZUNvbXBvbmVudHMsIHNpemVvZihwcmVmaXhOYW1lQ29tcG9uZW50cykgLyBzaXplb2YocHJlZml4TmFtZUNvbXBvbmVudHNbMF0pKTsKLSAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjOjpGb3J3YXJkaW5nRW50cnkmPihmb3J3YXJkaW5nRW50cnkpLmdldChmb3J3YXJkaW5nRW50cnlTdHJ1Y3QpOwotCi0gIEJpbmFyeVhtbEVuY29kZXIgZW5jb2RlcjsKLSAgbmRuX0Vycm9yIGVycm9yOwotICBpZiAoKGVycm9yID0gbmRuX2VuY29kZUJpbmFyeVhtbEZvcndhcmRpbmdFbnRyeSgmZm9yd2FyZGluZ0VudHJ5U3RydWN0LCAmZW5jb2RlcikpKQotICAgIHRocm93IHJ1bnRpbWVfZXJyb3IobmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSk7Ci0gICAgIAotICByZXR1cm4gZW5jb2Rlci5nZXRPdXRwdXQoKTsKLX0KLQotdm9pZCAKLUJpbmFyeVhtbFdpcmVGb3JtYXQ6OmRlY29kZUZvcndhcmRpbmdFbnRyeShGb3J3YXJkaW5nRW50cnkmIGZvcndhcmRpbmdFbnRyeSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkKLXsKLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IHByZWZpeE5hbWVDb21wb25lbnRzWzEwMF07Ci0gIHN0cnVjdCBuZG5fRm9yd2FyZGluZ0VudHJ5IGZvcndhcmRpbmdFbnRyeVN0cnVjdDsKLSAgbmRuX0ZvcndhcmRpbmdFbnRyeV9pbml0aWFsaXplCi0gICAgKCZmb3J3YXJkaW5nRW50cnlTdHJ1Y3QsIHByZWZpeE5hbWVDb21wb25lbnRzLCBzaXplb2YocHJlZml4TmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKHByZWZpeE5hbWVDb21wb25lbnRzWzBdKSk7Ci0gICAgCi0gIEJpbmFyeVhtbERlY29kZXIgZGVjb2RlcihpbnB1dCwgaW5wdXRMZW5ndGgpOyAgCi0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl9kZWNvZGVCaW5hcnlYbWxGb3J3YXJkaW5nRW50cnkoJmZvcndhcmRpbmdFbnRyeVN0cnVjdCwgJmRlY29kZXIpKSkKLSAgICB0aHJvdyBydW50aW1lX2Vycm9yKG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikpOwotCi0gIHJlaW50ZXJwcmV0X2Nhc3Q8Yzo6Rm9yd2FyZGluZ0VudHJ5Jj4oZm9yd2FyZGluZ0VudHJ5KS5zZXQoZm9yd2FyZGluZ0VudHJ5U3RydWN0KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvc3JjL2VuY29kaW5nL2NyeXB0b3BwL2Fzbl9leHQuY3BwIGIvc3JjL2VuY29kaW5nL2NyeXB0b3BwL2Fzbl9leHQuY3BwCmluZGV4IDdhOGVkYTEuLjRkZjA2YzUgMTAwNjQ0Ci0tLSBhL3NyYy9lbmNvZGluZy9jcnlwdG9wcC9hc25fZXh0LmNwcAorKysgYi9zcmMvZW5jb2RpbmcvY3J5cHRvcHAvYXNuX2V4dC5jcHAKQEAgLTgsMTQgKzgsNiBAQAogCiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvbmRuLWNwcC1jb25maWcuaD4KICNpbmNsdWRlICJhc25fZXh0LmhwcCIKLQotI2lmIE5ETl9DUFBfSEFWRV9USU1FX0gKLSNpbmNsdWRlIDx0aW1lLmg+Ci0jZW5kaWYKLSNpZiBORE5fQ1BQX0hBVkVfU1lTX1RJTUVfSAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgIi4uLy4uL3V0aWwvdGltZS5ocHAiCiAKICNpbmNsdWRlIDxib29zdC9mb3JtYXQuaHBwPgpAQCAtMzMsMTcgKzI1LDIxIEBACiAgIGVsc2UgaWYgKHRpbWUgPiAyZTE0KQogICAgIC8vIDJlMTQgaXMgYWJvdXQgdGhlIHllYXIgODMwMC4gIFdlIGRvbid0IHdhbnQgdG8gZ28gb3ZlciBhIDQtZGlnaXQgeWVhci4KICAgICB0aHJvdyBBc246OkVycm9yKCJDYWxlbmRhciB0aW1lIHZhbHVlIG91dCBvZiByYW5nZSIpOwotICAKLSAgdGltZV90IHNlY29uZHNTaW5jZTE5NzAgPSB0aW1lIC8gMTAwMDsKLSAgc3RydWN0IHRtKiBnbXQgPSBnbXRpbWUoJnNlY29uZHNTaW5jZTE5NzApOwogCi0gIHN0ZDo6c3RyaW5nIGFzbjF0aW1lICgoYm9vc3Q6OmZvcm1hdCgiJTA0ZCUwMmQlMDJkJTAyZCUwMmQlMDJkWiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSAoMTkwMCArIGdtdC0+dG1feWVhcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIChnbXQtPnRtX21vbiArIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSBnbXQtPnRtX21kYXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIGdtdC0+dG1faG91cgotICAgICAgICAgICAgICAgICAgICAgICAgICUgZ210LT50bV9taW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAlIGdtdC0+dG1fc2VjKS5zdHIoKSk7CisKKyAgYm9vc3Q6OnBvc2l4X3RpbWU6OnB0aW1lIGJvb3N0VGltZSA9CisgICAgVU5JWF9FUE9DSF9USU1FICsgYm9vc3Q6OnBvc2l4X3RpbWU6Om1pbGxpc2Vjb25kcyh0aW1lKTsKKyAgCisgIGNvbnN0IGJvb3N0Ojpmb3JtYXQgZiA9IGJvb3N0Ojpmb3JtYXQoIiUwNGQlMDJkJTAyZCUwMmQlMDJkJTAyZFoiKQorICAgICAgICAgICAgICAgICUgYm9vc3RUaW1lLmRhdGUoKS55ZWFyX21vbnRoX2RheSgpLnllYXIKKyAgICAgICAgICAgICAgICAlIGJvb3N0VGltZS5kYXRlKCkueWVhcl9tb250aF9kYXkoKS5tb250aC5hc19udW1iZXIoKQorICAgICAgICAgICAgICAgICUgYm9vc3RUaW1lLmRhdGUoKS55ZWFyX21vbnRoX2RheSgpLmRheS5hc19udW1iZXIoKQorICAgICAgICAgICAgICAgICUgYm9vc3RUaW1lLnRpbWVfb2ZfZGF5KCkuaG91cnMoKQorICAgICAgICAgICAgICAgICUgYm9vc3RUaW1lLnRpbWVfb2ZfZGF5KCkubWludXRlcygpCisgICAgICAgICAgICAgICAgJSBib29zdFRpbWUudGltZV9vZl9kYXkoKS5zZWNvbmRzKCkKKyAgICA7CisKKyAgc3RkOjpzdHJpbmcgYXNuMXRpbWUgPSBmLnN0cigpOwogICAKICAgYnQuUHV0KEdFTkVSQUxJWkVEX1RJTUUpOwogICBzaXplX3QgbGVuZ3RoQnl0ZXMgPSBERVJMZW5ndGhFbmNvZGUoYnQsIGFzbjF0aW1lLnNpemUoKSk7CmRpZmYgLS1naXQgYS9zcmMvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5jcHAgYi9zcmMvZW5jb2RpbmcvZWxlbWVudC1saXN0ZW5lci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNTY3MTcuLjAwMDAwMDAKLS0tIGEvc3JjL2VuY29kaW5nL2VsZW1lbnQtbGlzdGVuZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9lbmNvZGluZy9lbGVtZW50LWxpc3RlbmVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbiB7Ci0KLXZvaWQgCi1FbGVtZW50TGlzdGVuZXI6OnN0YXRpY09uUmVjZWl2ZWRFbGVtZW50KHN0cnVjdCBuZG5fRWxlbWVudExpc3RlbmVyICpzZWxmLCB1aW50OF90ICplbGVtZW50LCBzaXplX3QgZWxlbWVudExlbmd0aCkKLXsKLSAgKChFbGVtZW50TGlzdGVuZXIgKilzZWxmKS0+b25SZWNlaXZlZEVsZW1lbnQoZWxlbWVudCwgZWxlbWVudExlbmd0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL3NyYy9lbmNvZGluZy93aXJlLWZvcm1hdC5jcHAgYi9zcmMvZW5jb2Rpbmcvd2lyZS1mb3JtYXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmYyNGU1Li4wMDAwMDAwCi0tLSBhL3NyYy9lbmNvZGluZy93aXJlLWZvcm1hdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9lbmNvZGluZy93aXJlLWZvcm1hdC5ocHA+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi1zdGF0aWMgYm9vbCBnb3RJbml0aWFsRGVmYXVsdFdpcmVGb3JtYXQgPSBmYWxzZTsKLQotV2lyZUZvcm1hdCogV2lyZUZvcm1hdDo6ZGVmYXVsdFdpcmVGb3JtYXRfID0gMDsKLQotV2lyZUZvcm1hdCoKLVdpcmVGb3JtYXQ6OmdldERlZmF1bHRXaXJlRm9ybWF0KCkKLXsKLSAgaWYgKCFkZWZhdWx0V2lyZUZvcm1hdF8gJiYgIWdvdEluaXRpYWxEZWZhdWx0V2lyZUZvcm1hdCkgewotICAgIC8vIFRoZXJlIGlzIG5vIGRlZmF1bHRXaXJlRm9ybWF0XyBhbmQgd2UgaGF2ZSBub3QgeWV0IGluaXRpYWxpemVkIGluaXRpYWxEZWZhdWx0V2lyZUZvcm1hdF8sIHNvIGluaXRpYWxpemUgYW5kIHVzZSBpdC4KLSAgICBnb3RJbml0aWFsRGVmYXVsdFdpcmVGb3JtYXQgPSB0cnVlOwotICAgIC8vIE5PVEU6IFRoaXMgYWxsb2NhdGVzIG9uZSBvYmplY3Qgd2hpY2ggd2UgbmV2ZXIgZnJlZSBmb3IgdGhlIGxpZmUgb2YgdGhlIGFwcGxpY2F0aW9uLgotICAgIGRlZmF1bHRXaXJlRm9ybWF0XyA9IG5ld0luaXRpYWxEZWZhdWx0V2lyZUZvcm1hdCgpOwotICB9Ci0gIAotICByZXR1cm4gZGVmYXVsdFdpcmVGb3JtYXRfOwotfQotCi1CbG9iIAotV2lyZUZvcm1hdDo6ZW5jb2RlSW50ZXJlc3QoY29uc3QgSW50ZXJlc3QmIGludGVyZXN0KSAKLXsKLSAgdGhyb3cgbG9naWNfZXJyb3IoInVuaW1wbGVtZW50ZWQiKTsKLX0KLQotdm9pZCAKLVdpcmVGb3JtYXQ6OmRlY29kZUludGVyZXN0KEludGVyZXN0JiBpbnRlcmVzdCwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCkgCi17Ci0gIHRocm93IGxvZ2ljX2Vycm9yKCJ1bmltcGxlbWVudGVkIik7Ci19Ci0KLUJsb2IgCi1XaXJlRm9ybWF0OjplbmNvZGVEYXRhKGNvbnN0IERhdGEmIGRhdGEsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaXplX3QgKnNpZ25lZFBvcnRpb25FbmRPZmZzZXQpIAotewotICB0aHJvdyBsb2dpY19lcnJvcigidW5pbXBsZW1lbnRlZCIpOwotfQotCi12b2lkIAotV2lyZUZvcm1hdDo6ZGVjb2RlRGF0YQotICAoRGF0YSYgZGF0YSwgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dExlbmd0aCwgc2l6ZV90ICpzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpemVfdCAqc2lnbmVkUG9ydGlvbkVuZE9mZnNldCkgCi17Ci0gIHRocm93IGxvZ2ljX2Vycm9yKCJ1bmltcGxlbWVudGVkIik7Ci19Ci0KLUJsb2IgCi1XaXJlRm9ybWF0OjplbmNvZGVGb3J3YXJkaW5nRW50cnkoY29uc3QgRm9yd2FyZGluZ0VudHJ5JiBmb3J3YXJkaW5nRW50cnkpIAotewotICB0aHJvdyBsb2dpY19lcnJvcigidW5pbXBsZW1lbnRlZCIpOwotfQotCi12b2lkIAotV2lyZUZvcm1hdDo6ZGVjb2RlRm9yd2FyZGluZ0VudHJ5KEZvcndhcmRpbmdFbnRyeSYgZm9yd2FyZGluZ0VudHJ5LCBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0TGVuZ3RoKSAKLXsKLSAgdGhyb3cgbG9naWNfZXJyb3IoInVuaW1wbGVtZW50ZWQiKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvc3JjL25hbWUuY3BwIGIvc3JjL25hbWUuY3BwCmluZGV4IDdhM2QxNzEuLjQ4NGZkYzAgMTAwNjQ0Ci0tLSBhL3NyYy9uYW1lLmNwcAorKysgYi9zcmMvbmFtZS5jcHAKQEAgLTgsMTAgKzgsOSBAQAogCiAjaW5jbHVkZSA8c3RkZXhjZXB0PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPG5kbi1jcHAtZGV2L25hbWUuaHBwPgotI2luY2x1ZGUgImMvdXRpbC9uZG5fbWVtb3J5LmgiCi0jaW5jbHVkZSAiYy91dGlsL3RpbWUuaCIKKyNpbmNsdWRlICJ1dGlsL3RpbWUuaHBwIgogCiAjaW5jbHVkZSAidXRpbC9zdHJpbmctaGVscGVyLmhwcCIKIApAQCAtOTEsNyArOTAsNyBAQAogICAgIHJldHVybiAxOwogCiAgIC8vIFRoZSBjb21wb25lbnRzIGFyZSBlcXVhbCBsZW5ndGguICBKdXN0IGRvIGEgYnl0ZSBjb21wYXJlLiAgCi0gIHJldHVybiBuZG5fbWVtY21wKGdldFZhbHVlKCkuYnVmKCksIG90aGVyLmdldFZhbHVlKCkuYnVmKCksIGdldFZhbHVlKCkuc2l6ZSgpKTsKKyAgcmV0dXJuIHN0ZDo6bWVtY21wKGdldFZhbHVlKCkuYnVmKCksIG90aGVyLmdldFZhbHVlKCkuYnVmKCksIGdldFZhbHVlKCkuc2l6ZSgpKTsKIH0KIAogLy8gY29uc3QgQmxvY2sgJgpkaWZmIC0tZ2l0IGEvc3JjL25vZGUuY3BwIGIvc3JjL25vZGUuY3BwCmluZGV4IGZlMTkyY2MuLmZiMjE2Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9ub2RlLmNwcAorKysgYi9zcmMvbm9kZS5jcHAKQEAgLTYsNyArNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlICJjL3V0aWwvdGltZS5oIgorI2luY2x1ZGUgInV0aWwvdGltZS5ocHAiCiAKICNpbmNsdWRlIDxuZG4tY3BwLWRldi9mb3J3YXJkaW5nLWVudHJ5LmhwcD4KICNpbmNsdWRlIDxuZG4tY3BwLWRldi9mYWNlLWluc3RhbmNlLmhwcD4KZGlmZiAtLWdpdCBhL3NyYy9zZWN1cml0eS9zZWMtcHVibGljLWluZm8tc3FsaXRlMy5jcHAgYi9zcmMvc2VjdXJpdHkvc2VjLXB1YmxpYy1pbmZvLXNxbGl0ZTMuY3BwCmluZGV4IDhiNjhhYzYuLjIwNzIwOTEgMTAwNjQ0Ci0tLSBhL3NyYy9zZWN1cml0eS9zZWMtcHVibGljLWluZm8tc3FsaXRlMy5jcHAKKysrIGIvc3JjL3NlY3VyaXR5L3NlYy1wdWJsaWMtaW5mby1zcWxpdGUzLmNwcApAQCAtMTcsNyArMTcsOCBAQAogI2luY2x1ZGUgPGZzdHJlYW0+CiAjaW5jbHVkZSA8Ym9vc3QvZmlsZXN5c3RlbS5ocHA+CiAjaW5jbHVkZSAiLi4vdXRpbC9sb2dnaW5nLmhwcCIKLSNpbmNsdWRlICIuLi9jL3V0aWwvdGltZS5oIgorI2luY2x1ZGUgIi4uL3V0aWwvdGltZS5ocHAiCisKICNpbmNsdWRlIDxuZG4tY3BwLWRldi9kYXRhLmhwcD4KICNpbmNsdWRlIDxuZG4tY3BwLWRldi9zZWN1cml0eS9pZGVudGl0eS1jZXJ0aWZpY2F0ZS5ocHA+CiAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkvc2VjLXB1YmxpYy1pbmZvLXNxbGl0ZTMuaHBwPgpkaWZmIC0tZ2l0IGEvc3JjL3RyYW5zcG9ydC90Y3AtdHJhbnNwb3J0LmNwcCBiL3NyYy90cmFuc3BvcnQvdGNwLXRyYW5zcG9ydC5jcHAKaW5kZXggZjc1ZGNkMi4uMmU3OGNjMyAxMDA2NDQKLS0tIGEvc3JjL3RyYW5zcG9ydC90Y3AtdHJhbnNwb3J0LmNwcAorKysgYi9zcmMvdHJhbnNwb3J0L3RjcC10cmFuc3BvcnQuY3BwCkBAIC0xMCw3ICsxMCw2IEBACiAKICNpbmNsdWRlIDxuZG4tY3BwLWRldi9mYWNlLmhwcD4KICNpbmNsdWRlIDxuZG4tY3BwLWRldi90cmFuc3BvcnQvdGNwLXRyYW5zcG9ydC5ocHA+Ci0jaW5jbHVkZSAiLi4vYy91dGlsL25kbl9tZW1vcnkuaCIKIAogI2luY2x1ZGUgPGJvb3N0L2FzaW8uaHBwPgogI2lmIE5ETl9DUFBfSEFWRV9DWFgxMQpAQCAtMTc5LDcgKzE3OCw4IEBACiAgICAgICAgIGlmIChwYXJ0aWFsRGF0YVNpemVfID4gMCkKICAgICAgICAgICB7CiAgICAgICAgICAgICBzaXplX3QgbmV3RGF0YVNpemUgPSBzdGQ6Om1pbihieXRlc19yZWN2ZCwgTUFYX0xFTkdUSC1wYXJ0aWFsRGF0YVNpemVfKTsKLSAgICAgICAgICAgIG5kbl9tZW1jcHkocGFydGlhbERhdGFfICsgcGFydGlhbERhdGFTaXplXywgaW5wdXRCdWZmZXJfLCBuZXdEYXRhU2l6ZSk7CisgICAgICAgICAgICBzdGQ6OmNvcHkoaW5wdXRCdWZmZXJfLCBpbnB1dEJ1ZmZlcl8gKyBuZXdEYXRhU2l6ZSwgcGFydGlhbERhdGFfICsgcGFydGlhbERhdGFTaXplXyk7CisKICAgICAgICAgICAgIHBhcnRpYWxEYXRhU2l6ZV8gKz0gbmV3RGF0YVNpemU7CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IDA7CkBAIC0xOTQsNyArMTk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAwOwogICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsRGF0YVNpemVfID0gYnl0ZXNfcmVjdmQgLSBuZXdEYXRhU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgbmRuX21lbWNweShwYXJ0aWFsRGF0YV8sIGlucHV0QnVmZmVyXyArIG5ld0RhdGFTaXplLCBwYXJ0aWFsRGF0YVNpemVfKTsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpjb3B5KGlucHV0QnVmZmVyXyArIG5ld0RhdGFTaXplLCBpbnB1dEJ1ZmZlcl8gKyBuZXdEYXRhU2l6ZSArIHBhcnRpYWxEYXRhU2l6ZV8sIHBhcnRpYWxEYXRhXyk7CiAKICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0FsbChwYXJ0aWFsRGF0YV8sIG9mZnNldCwgcGFydGlhbERhdGFTaXplXyk7CiAKQEAgLTIxMiw3ICsyMTIsNyBAQAogICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiAwKQogICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsRGF0YVNpemVfIC09IG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgbmRuX21lbWNweShwYXJ0aWFsRGF0YV8sIHBhcnRpYWxEYXRhXyArIG9mZnNldCwgcGFydGlhbERhdGFTaXplXyk7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y29weShwYXJ0aWFsRGF0YV8gKyBvZmZzZXQsIHBhcnRpYWxEYXRhXyArIG9mZnNldCArIHBhcnRpYWxEYXRhU2l6ZV8sIHBhcnRpYWxEYXRhXyk7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IDAgJiYgcGFydGlhbERhdGFTaXplXyA9PSBNQVhfTEVOR1RIKQogICAgICAgICAgICAgICAgICAgewpAQCAtMjM1LDcgKzIzNSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+IDApCiAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxEYXRhU2l6ZV8gPSBieXRlc19yZWN2ZCAtIG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgbmRuX21lbWNweShwYXJ0aWFsRGF0YV8sIGlucHV0QnVmZmVyXyArIG9mZnNldCwgcGFydGlhbERhdGFTaXplXyk7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y29weShpbnB1dEJ1ZmZlcl8gKyBvZmZzZXQsIGlucHV0QnVmZmVyXyArIG9mZnNldCArIHBhcnRpYWxEYXRhU2l6ZV8sIHBhcnRpYWxEYXRhXyk7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvdHJhbnNwb3J0L3VuaXgtdHJhbnNwb3J0LmNwcCBiL3NyYy90cmFuc3BvcnQvdW5peC10cmFuc3BvcnQuY3BwCmluZGV4IDk1NGIxMmMuLjVkMjZlMTUgMTAwNjQ0Ci0tLSBhL3NyYy90cmFuc3BvcnQvdW5peC10cmFuc3BvcnQuY3BwCisrKyBiL3NyYy90cmFuc3BvcnQvdW5peC10cmFuc3BvcnQuY3BwCkBAIC0xMCw3ICsxMCw2IEBACiAKICNpbmNsdWRlIDxuZG4tY3BwLWRldi9mYWNlLmhwcD4KICNpbmNsdWRlIDxuZG4tY3BwLWRldi90cmFuc3BvcnQvdW5peC10cmFuc3BvcnQuaHBwPgotI2luY2x1ZGUgIi4uL2MvdXRpbC9uZG5fbWVtb3J5LmgiCiAKICNpbmNsdWRlIDxib29zdC9hc2lvLmhwcD4KICNpZiBORE5fQ1BQX0hBVkVfQ1hYMTEKQEAgLTE0OCw3ICsxNDcsOCBAQAogICAgICAgICBpZiAocGFydGlhbERhdGFTaXplXyA+IDApCiAgICAgICAgICAgewogICAgICAgICAgICAgc2l6ZV90IG5ld0RhdGFTaXplID0gc3RkOjptaW4oYnl0ZXNfcmVjdmQsIE1BWF9MRU5HVEgtcGFydGlhbERhdGFTaXplXyk7Ci0gICAgICAgICAgICBuZG5fbWVtY3B5KHBhcnRpYWxEYXRhXyArIHBhcnRpYWxEYXRhU2l6ZV8sIGlucHV0QnVmZmVyXywgbmV3RGF0YVNpemUpOworICAgICAgICAgICAgc3RkOjpjb3B5KGlucHV0QnVmZmVyXywgaW5wdXRCdWZmZXJfICsgbmV3RGF0YVNpemUsIHBhcnRpYWxEYXRhXyArIHBhcnRpYWxEYXRhU2l6ZV8pOworCiAgICAgICAgICAgICBwYXJ0aWFsRGF0YVNpemVfICs9IG5ld0RhdGFTaXplOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOwpAQCAtMTYzLDcgKzE2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgcGFydGlhbERhdGFTaXplXyA9IGJ5dGVzX3JlY3ZkIC0gbmV3RGF0YVNpemU7Ci0gICAgICAgICAgICAgICAgICAgIG5kbl9tZW1jcHkocGFydGlhbERhdGFfLCBpbnB1dEJ1ZmZlcl8gKyBuZXdEYXRhU2l6ZSwgcGFydGlhbERhdGFTaXplXyk7CisgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y29weShpbnB1dEJ1ZmZlcl8gKyBuZXdEYXRhU2l6ZSwgaW5wdXRCdWZmZXJfICsgbmV3RGF0YVNpemUgKyBwYXJ0aWFsRGF0YVNpemVfLCBwYXJ0aWFsRGF0YV8pOwogCiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NBbGwocGFydGlhbERhdGFfLCBvZmZzZXQsIHBhcnRpYWxEYXRhU2l6ZV8pOwogCkBAIC0xODEsNyArMTgxLDcgQEAKICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gMCkKICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcGFydGlhbERhdGFTaXplXyAtPSBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG5kbl9tZW1jcHkocGFydGlhbERhdGFfLCBwYXJ0aWFsRGF0YV8gKyBvZmZzZXQsIHBhcnRpYWxEYXRhU2l6ZV8pOworICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvcHkocGFydGlhbERhdGFfICsgb2Zmc2V0LCBwYXJ0aWFsRGF0YV8gKyBvZmZzZXQgKyBwYXJ0aWFsRGF0YVNpemVfLCBwYXJ0aWFsRGF0YV8pOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA9PSAwICYmIHBhcnRpYWxEYXRhU2l6ZV8gPT0gTUFYX0xFTkdUSCkKICAgICAgICAgICAgICAgICAgIHsKQEAgLTIwNCw3ICsyMDQsNyBAQAogICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiAwKQogICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsRGF0YVNpemVfID0gYnl0ZXNfcmVjdmQgLSBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG5kbl9tZW1jcHkocGFydGlhbERhdGFfLCBpbnB1dEJ1ZmZlcl8gKyBvZmZzZXQsIHBhcnRpYWxEYXRhU2l6ZV8pOworICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvcHkoaW5wdXRCdWZmZXJfICsgb2Zmc2V0LCBpbnB1dEJ1ZmZlcl8gKyBvZmZzZXQgKyBwYXJ0aWFsRGF0YVNpemVfLCBwYXJ0aWFsRGF0YV8pOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvYmxvYi1zdHJlYW0uaHBwIGIvc3JjL3V0aWwvYmxvYi1zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmFkNGI3Li4wMDAwMDAwCi0tLSBhL3NyYy91dGlsL2Jsb2Itc3RyZWFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbCAtKi0gKi8KLS8qKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KLSAqIEBhdXRob3I6IEFsZXhhbmRlciBBZmFuYXN5ZXYgPGFsZXhhbmRlci5hZmFuYXN5ZXZAdWNsYS5lZHU+Ci0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fQkxPQl9TVFJFQU1fSFBQCi0jZGVmaW5lIE5ETl9CTE9CX1NUUkVBTV9IUFAKLQotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2NvbW1vbi5ocHA+Ci0KLSNpZiBORE5fQ1BQX1VTRV9TWVNURU1fQk9PU1QKLSNpbmNsdWRlIDxib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lvcy5ocHA+Ci0jaW5jbHVkZSA8Ym9vc3QvaW9zdHJlYW1zL2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPGJvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwPgotbmFtZXNwYWNlIG5kbmJvb3N0ID0gYm9vc3Q7Ci0jZWxzZQotLy8gV2UgY2FuIHVzZSBuZG5ib29zdDo6aW9zdHJlYW1zIGJlY2F1c2UgdGhpcyBpcyBpbnRlcm5hbCBhbmQgd2lsbCBub3QgY29uZmxpY3Qgd2l0aCB0aGUgYXBwbGljYXRpb24gaWYgaXQgdXNlcyBib29zdDo6aW9zdHJlYW1zLgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaW9zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pb3N0cmVhbXMvY2F0ZWdvcmllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW9zdHJlYW1zL3N0cmVhbS5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLWNsYXNzIGJsb2JfYXBwZW5kX2RldmljZSB7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgY2hhciAgY2hhcl90eXBlOwotICB0eXBlZGVmIG5kbmJvb3N0Ojppb3N0cmVhbXM6OnNpbmtfdGFnIGNhdGVnb3J5OwotICAKLSAgYmxvYl9hcHBlbmRfZGV2aWNlKHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBjb250YWluZXIpCi0gIDogY29udGFpbmVyXyhjb250YWluZXIpCi0gIHsKLSAgfQotICAKLSAgc3RkOjpzdHJlYW1zaXplCi0gIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSogcywgc3RkOjpzdHJlYW1zaXplIG4pCi0gIHsKLSAgICBzdGQ6OmNvcHkocywgcytuLCBzdGQ6OmJhY2tfaW5zZXJ0ZXIoY29udGFpbmVyXykpOwotICAgIHJldHVybiBuOwotICB9Ci0gIAotcHJvdGVjdGVkOgotICBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgY29udGFpbmVyXzsKLX07Ci0KLS8qKgotICogVGhpcyBpcyBjYWxsZWQgImJsb2Jfc3RyZWFtIiBidXQgaXQgZG9lc24ndCB1c2UgYW4gbmRuOjpCbG9iIHdoaWNoIGlzIGltbXV0YWJsZS4gIEl0IHVzZXMgYSBwb2ludGVyIHRvIGEgdmVjdG9yPHVpbnQ4X3Q+LgotICogVGhpcyBpcyBpbnRlZGVkIGZvciBpbnRlcm5hbCBsaWJyYXJ5IHVzZSwgbm90IGV4cG9ydGVkIGluIHRoZSBBUEkuCi0gKi8KLXN0cnVjdCBibG9iX3N0cmVhbSA6IHB1YmxpYyBuZG5ib29zdDo6aW9zdHJlYW1zOjpzdHJlYW08YmxvYl9hcHBlbmRfZGV2aWNlPgotewotICBibG9iX3N0cmVhbSgpCi0gICAgOiBidWZmZXJfKG5ldyBzdGQ6OnZlY3Rvcjx1aW50OF90PigpKQotICAgICwgZGV2aWNlXygqYnVmZmVyXykKLSAgewotICAgIG9wZW4oZGV2aWNlXyk7Ci0gIH0KLQotICBwdHJfbGliOjpzaGFyZWRfcHRyPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4KLSAgYnVmKCkKLSAgewotICAgIGZsdXNoKCk7Ci0gICAgcmV0dXJuIGJ1ZmZlcl87Ci0gIH0KLQotcHJpdmF0ZToKLSAgcHRyX2xpYjo6c2hhcmVkX3B0cjxzdGQ6OnZlY3Rvcjx1aW50OF90PiA+IGJ1ZmZlcl87Ci0gIGJsb2JfYXBwZW5kX2RldmljZSBkZXZpY2VfOwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy91dGlsL2Jsb2IuY3BwIGIvc3JjL3V0aWwvYmxvYi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2Mjk3YzYuLjAwMDAwMDAKLS0tIGEvc3JjL3V0aWwvYmxvYi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgIi4uL2MvdXRpbC9ibG9iLmgiCi0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvdXRpbC9ibG9iLmhwcD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLUJsb2I6OkJsb2IoY29uc3Qgc3RydWN0IG5kbl9CbG9iJiBibG9iU3RydWN0KQotICA6IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3QgdmVjdG9yPHVpbnQ4X3Q+ID4obmV3IHZlY3Rvcjx1aW50OF90PihibG9iU3RydWN0LnZhbHVlLCBibG9iU3RydWN0LnZhbHVlICsgYmxvYlN0cnVjdC5sZW5ndGgpKQotewotfQotCi12b2lkIAotQmxvYjo6Z2V0KHN0cnVjdCBuZG5fQmxvYiYgYmxvYlN0cnVjdCkgY29uc3QgCi17Ci0gIGJsb2JTdHJ1Y3QubGVuZ3RoID0gc2l6ZSgpOyAKLSAgaWYgKHNpemUoKSA+IDApCi0gICAgYmxvYlN0cnVjdC52YWx1ZSA9ICh1aW50OF90KilidWYoKTsKLSAgZWxzZQotICAgIGJsb2JTdHJ1Y3QudmFsdWUgPSAwOwotfQotCi19CmRpZmYgLS1naXQgYS9zcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmNwcCBiL3NyYy91dGlsL2NoYW5nZWQtZXZlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGRjYjk4Li4wMDAwMDAwCi0tLSBhL3NyYy91dGlsL2NoYW5nZWQtZXZlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlICJjaGFuZ2VkLWV2ZW50LmhwcCIKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLXZvaWQgCi1DaGFuZ2VkRXZlbnQ6OmZpcmUoKQotewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc18uc2l6ZSgpOyArK2kpCi0gICAgbGlzdGVuZXJzX1tpXSgpOwotfQotCi19CmRpZmYgLS1naXQgYS9zcmMvdXRpbC9jaGFuZ2VkLWV2ZW50LmhwcCBiL3NyYy91dGlsL2NoYW5nZWQtZXZlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWU4NTQ5Li4wMDAwMDAwCi0tLSBhL3NyYy91dGlsL2NoYW5nZWQtZXZlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsIC0qLSAqLwotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpZm5kZWYgTkROX0NIQU5HRURfRVZFTlRfSFBQCi0jZGVmaW5lIE5ETl9DSEFOR0VEX0VWRU5UX0hQUAotCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2NvbW1vbi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG4gewotCi0vKioKLSAqIEFuIE9uQ2hhbmdlZCBmdW5jdGlvbiBvYmplY3QgaXMgY2FsbGVkIHRvIG5vdGlmeSBhIGxpc3RlbmVyIG9mIGEgY2hhbmdlZCBldmVudC4KLSAqLwotdHlwZWRlZiBmdW5jX2xpYjo6ZnVuY3Rpb248dm9pZCgpPiBPbkNoYW5nZWQ7Ci0KLWNsYXNzIENoYW5nZWRFdmVudCB7Ci1wdWJsaWM6Ci0gIC8qKgotICAgKiBBZGQgb25DaGFuZ2VkIHRvIHRoZSBsaXN0ZW5lciBsaXN0LiBUaGlzIGRvZXMgbm90IGNoZWNrIGlmIGEgZHVwbGljYXRlIGlzIGFscmVhZHkgaW4gdGhlIGxpc3QuCi0gICAqIEBwYXJhbSBvbkNoYW5nZWQgVGhlIE9uQ2hhbmdlZCBmdW5jdGlvbiBvYmplY3QuCi0gICAqLwotICB2b2lkIAotICBhZGQoT25DaGFuZ2VkIG9uQ2hhbmdlZCkKLSAgewotICAgIGxpc3RlbmVyc18ucHVzaF9iYWNrKG9uQ2hhbmdlZCk7Ci0gIH0KLSAgCi0gIC8qKgotICAgKiBDYWxsIGFsbCB0aGUgbGlzdGVuZXJzLgotICAgKi8KLSAgdm9pZCAKLSAgZmlyZSgpOwotCi0jaWYgMCAgCi1wcml2YXRlOgotI2VuZGlmCi0gIHN0ZDo6dmVjdG9yPE9uQ2hhbmdlZD4gbGlzdGVuZXJzXzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdXRpbC9jcnlwdG8uY3BwIGIvc3JjL3V0aWwvY3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTE3MjU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3V0aWwvY3J5cHRvLmNwcApAQCAtMCwwICsxLDE5IEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+CisgKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCisgKi8KKworI2luY2x1ZGUgIm5kbi1jcHAtZGV2L3V0aWwvY3J5cHRvLmhwcCIKKworbmFtZXNwYWNlIG5kbiB7CisKK3ZvaWQgbmRuX2RpZ2VzdFNoYTI1Nihjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdWludDhfdCAqZGlnZXN0KQoreworICBTSEEyNTZfQ1RYIHNoYTI1NjsKKyAgU0hBMjU2X0luaXQoJnNoYTI1Nik7CisgIFNIQTI1Nl9VcGRhdGUoJnNoYTI1NiwgZGF0YSwgZGF0YUxlbmd0aCk7CisgIFNIQTI1Nl9GaW5hbChkaWdlc3QsICZzaGEyNTYpOworfQorCit9IC8vIG5hbWVzcGFjZSBuZG4KZGlmZiAtLWdpdCBhL3NyYy91dGlsL2R5bmFtaWMtdWludDgtdmVjdG9yLmNwcCBiL3NyYy91dGlsL2R5bmFtaWMtdWludDgtdmVjdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk3ZmMwZS4uMDAwMDAwMAotLS0gYS9zcmMvdXRpbC9keW5hbWljLXVpbnQ4LXZlY3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgImR5bmFtaWMtdWludDgtdmVjdG9yLmhwcCIKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLUR5bmFtaWNVSW50OFZlY3Rvcjo6RHluYW1pY1VJbnQ4VmVjdG9yKHNpemVfdCBpbml0aWFsTGVuZ3RoKQotOiB2ZWN0b3JfKG5ldyB2ZWN0b3I8dWludDhfdD4oaW5pdGlhbExlbmd0aCkpCi17Ci0gIG5kbl9EeW5hbWljVUludDhBcnJheV9pbml0aWFsaXplKHRoaXMsICZ2ZWN0b3JfLT5mcm9udCgpLCBpbml0aWFsTGVuZ3RoLCBEeW5hbWljVUludDhWZWN0b3I6OnJlYWxsb2MpOwotfQotCi11aW50OF90KgotRHluYW1pY1VJbnQ4VmVjdG9yOjpyZWFsbG9jKHN0cnVjdCBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgKnNlbGYsIHVpbnQ4X3QgKmFycmF5LCBzaXplX3QgbGVuZ3RoKQotewotICAvLyBCZWNhdXNlIHRoaXMgbWV0aG9kIGlzIHByaXZhdGUsIGFzc3VtZSB0aGVyZSBpcyBub3QgYSBwcm9ibGVtIHdpdGggdXBjYXN0aW5nLgotICBEeW5hbWljVUludDhWZWN0b3IgKnRoaXNPYmplY3QgPSAoRHluYW1pY1VJbnQ4VmVjdG9yICopc2VsZjsKLSAgCi0gIGlmIChhcnJheSAhPSAmdGhpc09iamVjdC0+dmVjdG9yXy0+ZnJvbnQoKSkKLSAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhpcyB0byBldmVyIGhhcHBlbi4gVGhlIGNhbGxlciBkaWRuJ3QgcGFzcyB0aGUgYXJyYXkgZnJvbSB0aGlzIG9iamVjdC4KLSAgICByZXR1cm4gMDsKLSAgCi0gIHRoaXNPYmplY3QtPnZlY3Rvcl8tPnJlc2l6ZShsZW5ndGgpOwotICByZXR1cm4gJnRoaXNPYmplY3QtPnZlY3Rvcl8tPmZyb250KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL3NyYy91dGlsL2R5bmFtaWMtdWludDgtdmVjdG9yLmhwcCBiL3NyYy91dGlsL2R5bmFtaWMtdWludDgtdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVlZDFlZS4uMDAwMDAwMAotLS0gYS9zcmMvdXRpbC9keW5hbWljLXVpbnQ4LXZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5fRFlOQU1JQ19VQ0hBUl9WRUNUT1JfSFBQCi0jZGVmaW5lIE5ETl9EWU5BTUlDX1VDSEFSX1ZFQ1RPUl9IUFAKLQotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jb21tb24uaHBwPgotI2luY2x1ZGUgIi4uL2MvdXRpbC9keW5hbWljLXVpbnQ4LWFycmF5LmgiCi0KLW5hbWVzcGFjZSBuZG4gewotCi0vKioKLSAqIEEgRHluYW1pY1VJbnQ4VmVjdG9yIGV4dGVuZHMgbmRuX0R5bmFtaWNVSW50OEFycmF5IHRvIGhvbGQgYSBzaGFyZWRfcHRyPHZlY3Rvcjx1aW50OF90PiA+IGZvciB1c2Ugd2l0aAotICogQyBmdW5jdGlvbnMgd2hpY2ggbmVlZCBhbiBuZG5fRHluYW1pY1VJbnQ4QXJyYXkuCi0gKi8KLWNsYXNzIER5bmFtaWNVSW50OFZlY3RvciA6IHB1YmxpYyBuZG5fRHluYW1pY1VJbnQ4QXJyYXkgewotcHVibGljOgotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IER5bmFtaWNVSW50OFZlY3RvciB3aXRoIGFuIGluaXRpYWwgbGVuZ3RoLgotICAgKiBAcGFyYW0gaW5pdGlhbExlbmd0aCBUaGUgaW5pdGlhbCBzaXplIG9mIHRoZSBhbGxvY2F0ZWQgdmVjdG9yLgotICAgKi8KLSAgRHluYW1pY1VJbnQ4VmVjdG9yKHNpemVfdCBpbml0aWFsTGVuZ3RoKTsKLSAgCi0gIC8qKgotICAgKiBHZXQgdGhlIHNoYXJlZF9wdHIgdG8gdGhlIGFsbG9jYXRlZCB2ZWN0b3IuCi0gICAqIEByZXR1cm4gVGhlIHNoYXJlZF9wdHIgdG8gdGhlIGFsbG9jYXRlZCB2ZWN0b3IuIAotICAgKi8KLSAgcHRyX2xpYjo6c2hhcmVkX3B0cjxzdGQ6OnZlY3Rvcjx1aW50OF90PiA+JiAKLSAgZ2V0KCkgeyByZXR1cm4gdmVjdG9yXzsgfQotICAKLXByaXZhdGU6Ci0gIC8qKgotICAgKiBJbXBsZW1lbnQgdGhlIHN0YXRpYyByZWFsbG9jIGZ1bmN0aW9uIHVzaW5nIHZlY3RvciByZXNpemUuCi0gICAqIEBwYXJhbSBzZWxmIEEgcG9pbnRlciB0byB0aGlzIG9iamVjdC4KLSAgICogQHBhcmFtIGFycmF5IFNob3VsZCBiZSB0aGUgZnJvbnQgb2YgdGhlIHZlY3Rvci4KLSAgICogQHBhcmFtIGxlbmd0aCBUaGUgbmV3IGxlbmd0aCBmb3IgdGhlIHZlY3Rvci4KLSAgICogQHJldHVybiBUaGUgZnJvbnQgb2YgdGhlIGFsbG9jYXRlZCB2ZWN0b3IuCi0gICAqLwotICBzdGF0aWMgdWludDhfdCoKLSAgcmVhbGxvYyhzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5ICpzZWxmLCB1aW50OF90ICphcnJheSwgc2l6ZV90IGxlbmd0aCk7Ci0gIAotICBwdHJfbGliOjpzaGFyZWRfcHRyPHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ID4gdmVjdG9yXzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdXRpbC9sb2dnaW5nLmhwcCBiL3NyYy91dGlsL2xvZ2dpbmcuaHBwCmluZGV4IDczYzZkMTIuLmU5YmY0ZDUgMTAwNjQ0Ci0tLSBhL3NyYy91dGlsL2xvZ2dpbmcuaHBwCisrKyBiL3NyYy91dGlsL2xvZ2dpbmcuaHBwCkBAIC02NCwxMSArNjQsMTAgQEAKIAogI2lmZGVmIF9ERUJVRwogCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNpbmNsdWRlIDxpb3N0cmVhbT4KIAogI2RlZmluZSBfTE9HX0RFQlVHKHgpIFwKLSAgeyB0aW1lX3Qgbm93ID0gdGltZSgwKTsgc3RkOjpzdHJpbmcgcyA9IHN0ZDo6c3RyaW5nKGN0aW1lKCZub3cpKTsgc3RkOjpjbG9nIDw8IHMuc3Vic3RyKDAsIHMuc2l6ZSgpIC0gMSkgPDwgIiAiIDw8IHggPDwgc3RkOjplbmRsOyB9CisgIHsgc3RkOjpjbG9nIDw8IHMuc3Vic3RyKDAsIHMuc2l6ZSgpIC0gMSkgPDwgIiAiIDw8IHggPDwgc3RkOjplbmRsOyB9CiAKICNlbHNlCiAjZGVmaW5lIF9MT0dfREVCVUcoeCkKZGlmZiAtLWdpdCBhL3NyYy91dGlsL25kbmQtaWQtZmV0Y2hlci5ocHAgYi9zcmMvdXRpbC9uZG5kLWlkLWZldGNoZXIuaHBwCmluZGV4IDZhMTIyNGUuLmUxMGViMzggMTAwNjQ0Ci0tLSBhL3NyYy91dGlsL25kbmQtaWQtZmV0Y2hlci5ocHAKKysrIGIvc3JjL3V0aWwvbmRuZC1pZC1mZXRjaGVyLmhwcApAQCAtOSw3ICs5LDcgQEAKICNkZWZpbmUgTkROX05ETkRfSURfRkVUQ0hFUl9IUFAKIAogI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSAibmRuLWNwcC1kZXYvYy91dGlsL2NyeXB0by5oIgorI2luY2x1ZGUgIm5kbi1jcHAtZGV2L3V0aWwvY3J5cHRvLmhwcCIKIAogbmFtZXNwYWNlIG5kbiB7CiAKZGlmZiAtLWdpdCBhL3NyYy91dGlsL3RpbWUuaHBwIGIvc3JjL3V0aWwvdGltZS5ocHAKaW5kZXggOTA0ODJkOS4uN2I0MmI0YSAxMDA2NDQKLS0tIGEvc3JjL3V0aWwvdGltZS5ocHAKKysrIGIvc3JjL3V0aWwvdGltZS5ocHAKQEAgLTgsMTEgKzgsMzAgQEAKICNpZm5kZWYgTkROX1RJTUVfSFBQCiAjZGVmaW5lIE5ETl9USU1FX0hQUAogCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgIi4uL2MvdXRpbC90aW1lLmgiCisjaW5jbHVkZSAibmRuLWNwcC1kZXYvY29tbW9uLmhwcCIKKyNpbmNsdWRlIDxib29zdC9kYXRlX3RpbWUvcG9zaXhfdGltZS9wb3NpeF90aW1lLmhwcD4KIAogbmFtZXNwYWNlIG5kbiB7CiAKK2NvbnN0IGJvb3N0Ojpwb3NpeF90aW1lOjpwdGltZSBVTklYX0VQT0NIX1RJTUUgPQorICBib29zdDo6cG9zaXhfdGltZTo6cHRpbWUgKGJvb3N0OjpncmVnb3JpYW46OmRhdGUgKDE5NzAsIGJvb3N0OjpncmVnb3JpYW46OkphbiwgMSkpOworCisvKioKKyAqIEBicmllZiBHZXQgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMgc2luY2UgMS8xLzE5NzAsIGluY2x1ZGluZyBmcmFjdGlvbnMgb2YgYSBtaWxsaXNlY29uZAorICovCitpbmxpbmUgTWlsbGlzZWNvbmRzU2luY2UxOTcwIAorZ2V0Tm93TWlsbGlzZWNvbmRzKCkKK3sKKyAgcmV0dXJuIChib29zdDo6cG9zaXhfdGltZTo6bWljcm9zZWNfY2xvY2s6OnVuaXZlcnNhbF90aW1lKCkgLSBVTklYX0VQT0NIX1RJTUUpLnRvdGFsX21pbGxpc2Vjb25kcygpOworfQorCitpbmxpbmUgTWlsbGlzZWNvbmRzU2luY2UxOTcwIAorbmRuX2dldE5vd01pbGxpc2Vjb25kcygpCit7CisgIHJldHVybiBnZXROb3dNaWxsaXNlY29uZHMoKTsKK30KKworCiAvKioKICAqIENvbnZlcnQgdG8gdGhlIElTTyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRpbWUuCiAgKiBAcGFyYW0gdGltZSBNaWxsaXNlY29uZHMgc2luY2UgMS8xLzE5NzAuCkBAIC0yMSwxMiArNDAsMTMgQEAKIGlubGluZSBzdGQ6OnN0cmluZwogdG9Jc29TdHJpbmcoY29uc3QgTWlsbGlzZWNvbmRzU2luY2UxOTcwJiB0aW1lKQogewotICBjaGFyIGlzb1N0cmluZ1syNV07Ci0gIG5kbl9FcnJvciBlcnJvcjsKLSAgaWYgKChlcnJvciA9IG5kbl90b0lzb1N0cmluZyh0aW1lLCBpc29TdHJpbmcpKSkKLSAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IobmRuX2dldEVycm9yU3RyaW5nKGVycm9yKSk7Ci0gIAotICByZXR1cm4gaXNvU3RyaW5nOworICBib29zdDo6cG9zaXhfdGltZTo6cHRpbWUgYm9vc3RUaW1lID0gVU5JWF9FUE9DSF9USU1FICsgYm9vc3Q6OnBvc2l4X3RpbWU6Om1pbGxpc2Vjb25kcyh0aW1lKTsKKworICAvLy8gQHRvZG8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBuZWNlc3NhcnkgYXQgYWxsCisgIGlmICgodGltZSAlIDEwMDApID09IDApCisgICAgcmV0dXJuIGJvb3N0Ojpwb3NpeF90aW1lOjp0b19pc29fc3RyaW5nKGJvb3N0VGltZSkgKyAiLjAwMDAwMCI7IAorICBlbHNlCisgICAgcmV0dXJuIGJvb3N0Ojpwb3NpeF90aW1lOjp0b19pc29fc3RyaW5nKGJvb3N0VGltZSk7CiB9CiAgIAogLyoqCkBAIC0zNywxMiArNTcsOSBAQAogaW5saW5lIE1pbGxpc2Vjb25kc1NpbmNlMTk3MAogZnJvbUlzb1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgaXNvU3RyaW5nKQogewotICBNaWxsaXNlY29uZHNTaW5jZTE5NzAgbWlsbGlzZWNvbmRzOwotICBuZG5fRXJyb3IgZXJyb3I7Ci0gIGlmICgoZXJyb3IgPSBuZG5fZnJvbUlzb1N0cmluZyhpc29TdHJpbmcuY19zdHIoKSwgJm1pbGxpc2Vjb25kcykpKQotICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcihuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpKTsKKyAgYm9vc3Q6OnBvc2l4X3RpbWU6OnB0aW1lIGJvb3N0VGltZSA9IGJvb3N0Ojpwb3NpeF90aW1lOjpmcm9tX2lzb19zdHJpbmcoaXNvU3RyaW5nKTsKICAgCi0gIHJldHVybiBtaWxsaXNlY29uZHM7CisgIHJldHVybiAoYm9vc3RUaW1lLVVOSVhfRVBPQ0hfVElNRSkudG90YWxfbWlsbGlzZWNvbmRzKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIG5kbgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU5OWFiNS4uMDAwMDAwMAotLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLQotTERBREQgPSAuLi9saWJuZG4tY3BwLWRldi5sYSBAQk9PU1RfU1lTVEVNX0xJQkAKLQotbm9pbnN0X1BST0dSQU1TID0gXAotCXRlc3QtZ2V0LWFzeW5jIFwKLQl0ZXN0LXB1Ymxpc2gtYXN5bmMgXAotCXRlc3QtZW5jb2RlLWRlY29kZS1iZW5jaG1hcmsKLQotdGVzdF9lbmNvZGVfZGVjb2RlX2JlbmNobWFya19TT1VSQ0VTID0gdGVzdC1lbmNvZGUtZGVjb2RlLWJlbmNobWFyay5jcHAKLQotdGVzdF9nZXRfYXN5bmNfU09VUkNFUyA9IHRlc3QtZ2V0LWFzeW5jLmNwcAotCi10ZXN0X3B1Ymxpc2hfYXN5bmNfU09VUkNFUyA9IHRlc3QtcHVibGlzaC1hc3luYy5jcHAKZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L21haW4uY3BwIGIvdGVzdHMvbWFpbi5jcHAKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzX2Jvb3N0L21haW4uY3BwCnJlbmFtZSB0byB0ZXN0cy9tYWluLmNwcApkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWJlbmNobWFyay5jcHAgYi90ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtYmVuY2htYXJrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI2NzhmMC4uMDAwMDAwMAotLS0gYS90ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtYmVuY2htYXJrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MSArMCwwIEBACi0vKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWwgLSotICovCi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L2RhdGEuaHBwPgotI2luY2x1ZGUgPG5kbi1jcHAtZGV2L3NlY3VyaXR5L2tleS1jaGFpbi5ocHA+Ci0vLyAjaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkvcG9saWN5L3NlbGYtdmVyaWZ5LXBvbGljeS1tYW5hZ2VyLmhwcD4KLQotLy8gSGFjazogSG9vayBkaXJlY3RseSBpbnRvIG5vbi1BUEkgZnVuY3Rpb25zLgotI2luY2x1ZGUgIi4uL3NyYy9jL2VuY29kaW5nL2JpbmFyeS14bWwtZGVjb2Rlci5oIgotI2luY2x1ZGUgIi4uL3NyYy9jL2RhdGEuaCIKLSNpbmNsdWRlICIuLi9zcmMvYy9lbmNvZGluZy9iaW5hcnkteG1sLWRhdGEuaCIKLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9jL3V0aWwvY3J5cHRvLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgbmRuOwotCi1zdGF0aWMgZG91YmxlCi1nZXROb3dTZWNvbmRzKCkKLXsKLSAgc3RydWN0IHRpbWV2YWwgdDsKLSAgZ2V0dGltZW9mZGF5KCZ0LCAwKTsKLSAgcmV0dXJuIHQudHZfc2VjICsgdC50dl91c2VjIC8gMTAwMDAwMC4wOwotfQotCi1zdGF0aWMgYm9vbAotdmVyaWZ5UnNhU2lnbmF0dXJlCi0gICh1aW50OF90KiBzaWduZWRQb3J0aW9uLCBzaXplX3Qgc2lnbmVkUG9ydGlvbkxlbmd0aCwgdWludDhfdCogc2lnbmF0dXJlQml0cywgc2l6ZV90IHNpZ25hdHVyZUJpdHNMZW5ndGgsIAotICAgdWludDhfdCogcHVibGljS2V5RGVyLCBzaXplX3QgcHVibGljS2V5RGVyTGVuZ3RoKQotewotICAvLyBTZXQgc2lnbmVkUG9ydGlvbkRpZ2VzdCB0byB0aGUgZGlnZXN0IG9mIHRoZSBzaWduZWQgcG9ydGlvbiBvZiB0aGUgd2lyZSBlbmNvZGluZy4KLSAgdWludDhfdCBzaWduZWRQb3J0aW9uRGlnZXN0W1NIQTI1Nl9ESUdFU1RfTEVOR1RIXTsKLSAgbmRuX2RpZ2VzdFNoYTI1NihzaWduZWRQb3J0aW9uLCBzaWduZWRQb3J0aW9uTGVuZ3RoLCBzaWduZWRQb3J0aW9uRGlnZXN0KTsKLSAgCi0gIC8vIFZlcmlmeSB0aGUgc2lnbmVkUG9ydGlvbkRpZ2VzdC4KLSAgLy8gVXNlIGEgdGVtcG9yYXJ5IHBvaW50ZXIgc2luY2UgZDJpIHVwZGF0ZXMgaXQuCi0gIGNvbnN0IHVpbnQ4X3QgKmRlclBvaW50ZXIgPSBwdWJsaWNLZXlEZXI7Ci0gIFJTQSAqcnNhUHVibGljS2V5ID0gZDJpX1JTQV9QVUJLRVkoTlVMTCwgJmRlclBvaW50ZXIsIHB1YmxpY0tleURlckxlbmd0aCk7Ci0gIGlmICghcnNhUHVibGljS2V5KSB7Ci0gICAgLy8gRG9uJ3QgZXhwZWN0IHRoaXMgdG8gaGFwcGVuLgotICAgIGNvdXQgPDwgIkVycm9yIGRlY29kaW5nIHB1YmxpYyBrZXkgaW4gZDJpX1JTQVB1YmxpY0tleSIgPDwgZW5kbDsKLSAgICByZXR1cm4gMDsKLSAgfQotICBpbnQgc3VjY2VzcyA9IFJTQV92ZXJpZnkKLSAgICAoTklEX3NoYTI1Niwgc2lnbmVkUG9ydGlvbkRpZ2VzdCwgc2l6ZW9mKHNpZ25lZFBvcnRpb25EaWdlc3QpLCBzaWduYXR1cmVCaXRzLCBzaWduYXR1cmVCaXRzTGVuZ3RoLCByc2FQdWJsaWNLZXkpOwotICAvLyBGcmVlIHRoZSBwdWJsaWMga2V5IGJlZm9yZSBjaGVja2luZyBmb3Igc3VjY2Vzcy4KLSAgUlNBX2ZyZWUocnNhUHVibGljS2V5KTsKLSAgCi0gIC8vIFJTQV92ZXJpZnkgcmV0dXJucyAxIGZvciBhIHZhbGlkIHNpZ25hdHVyZS4KLSAgcmV0dXJuIChzdWNjZXNzID09IDEpOwotfQotCi1zdGF0aWMgdWludDhfdCBERUZBVUxUX1BVQkxJQ19LRVlfREVSW10gPSB7Ci0weDMwLCAweDgxLCAweDlGLCAweDMwLCAweDBELCAweDA2LCAweDA5LCAweDJBLCAweDg2LCAweDQ4LCAweDg2LCAweEY3LCAweDBELCAweDAxLCAweDAxLCAweDAxLCAweDA1LCAweDAwLCAweDAzLCAweDgxLAotMHg4RCwgMHgwMCwgMHgzMCwgMHg4MSwgMHg4OSwgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHhFMSwgMHg3RCwgMHgzMCwgMHhBNywgMHhEOCwgMHgyOCwgMHhBQiwgMHgxQiwgMHg4NCwgMHgwQiwgMHgxNywKLTB4NTQsIDB4MkQsIDB4Q0EsIDB4RjYsIDB4MjAsIDB4N0EsIDB4RkQsIDB4MjIsIDB4MUUsIDB4MDgsIDB4NkIsIDB4MkEsIDB4NjAsIDB4RDEsIDB4NkMsIDB4QjcsIDB4RjUsIDB4NDQsIDB4NDgsIDB4QkEsCi0weDlGLCAweDNGLCAweDA4LCAweEJDLCAweEQwLCAweDk5LCAweERCLCAweDIxLCAweERELCAweDE2LCAweDJBLCAweDc3LCAweDlFLCAweDYxLCAweEFBLCAweDg5LCAweEVFLCAweEU1LCAweDU0LCAweEQzLAotMHhBNCwgMHg3RCwgMHhFMiwgMHgzMCwgMHhCQywgMHg3QSwgMHhDNSwgMHg5MCwgMHhENSwgMHgyNCwgMHgwNiwgMHg3QywgMHgzOCwgMHg5OCwgMHhCQiwgMHhBNiwgMHhGNSwgMHhEQywgMHg0MywgMHg2MCwKLTB4QjgsIDB4NDUsIDB4RUQsIDB4QTQsIDB4OEMsIDB4QkQsIDB4OUMsIDB4RjEsIDB4MjYsIDB4QTcsIDB4MjMsIDB4NDQsIDB4NUYsIDB4MEUsIDB4MTksIDB4NTIsIDB4RDcsIDB4MzIsIDB4NUEsIDB4NzUsCi0weEZBLCAweEY1LCAweDU2LCAweDE0LCAweDRGLCAweDlBLCAweDk4LCAweEFGLCAweDcxLCAweDg2LCAweEIwLCAweDI3LCAweDg2LCAweDg1LCAweEI4LCAweEUyLCAweEMwLCAweDhCLCAweEVBLCAweDg3LAotMHgxNywgMHgxQiwgMHg0RCwgMHhFRSwgMHg1OCwgMHg1QywgMHgxOCwgMHgyOCwgMHgyOSwgMHg1QiwgMHg1MywgMHg5NSwgMHhFQiwgMHg0QSwgMHgxNywgMHg3NywgMHg5RiwgMHgwMiwgMHgwMywgMHgwMSwKLTB4MDAsIDB4MDEgIAotfTsKLQotc3RhdGljIHVpbnQ4X3QgREVGQVVMVF9QUklWQVRFX0tFWV9ERVJbXSA9IHsKLTB4MzAsIDB4ODIsIDB4MDIsIDB4NWQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODEsIDB4ODEsIDB4MDAsIDB4ZTEsIDB4N2QsIDB4MzAsIDB4YTcsIDB4ZDgsIDB4MjgsIDB4YWIsIDB4MWIsIDB4ODQsCi0weDBiLCAweDE3LCAweDU0LCAweDJkLCAweGNhLCAweGY2LCAweDIwLCAweDdhLCAweGZkLCAweDIyLCAweDFlLCAweDA4LCAweDZiLCAweDJhLCAweDYwLCAweGQxLCAweDZjLCAweGI3LCAweGY1LCAweDQ0LAotMHg0OCwgMHhiYSwgMHg5ZiwgMHgzZiwgMHgwOCwgMHhiYywgMHhkMCwgMHg5OSwgMHhkYiwgMHgyMSwgMHhkZCwgMHgxNiwgMHgyYSwgMHg3NywgMHg5ZSwgMHg2MSwgMHhhYSwgMHg4OSwgMHhlZSwgMHhlNSwKLTB4NTQsIDB4ZDMsIDB4YTQsIDB4N2QsIDB4ZTIsIDB4MzAsIDB4YmMsIDB4N2EsIDB4YzUsIDB4OTAsIDB4ZDUsIDB4MjQsIDB4MDYsIDB4N2MsIDB4MzgsIDB4OTgsIDB4YmIsIDB4YTYsIDB4ZjUsIDB4ZGMsCi0weDQzLCAweDYwLCAweGI4LCAweDQ1LCAweGVkLCAweGE0LCAweDhjLCAweGJkLCAweDljLCAweGYxLCAweDI2LCAweGE3LCAweDIzLCAweDQ0LCAweDVmLCAweDBlLCAweDE5LCAweDUyLCAweGQ3LCAweDMyLAotMHg1YSwgMHg3NSwgMHhmYSwgMHhmNSwgMHg1NiwgMHgxNCwgMHg0ZiwgMHg5YSwgMHg5OCwgMHhhZiwgMHg3MSwgMHg4NiwgMHhiMCwgMHgyNywgMHg4NiwgMHg4NSwgMHhiOCwgMHhlMiwgMHhjMCwgMHg4YiwKLTB4ZWEsIDB4ODcsIDB4MTcsIDB4MWIsIDB4NGQsIDB4ZWUsIDB4NTgsIDB4NWMsIDB4MTgsIDB4MjgsIDB4MjksIDB4NWIsIDB4NTMsIDB4OTUsIDB4ZWIsIDB4NGEsIDB4MTcsIDB4NzcsIDB4OWYsIDB4MDIsCi0weDAzLCAweDAxLCAweDAwLCAweDAxLCAweDAyLCAweDgxLCAweDgwLCAweDFhLCAweDRiLCAweGZhLCAweDRmLCAweGE4LCAweGMyLCAweGRkLCAweDY5LCAweGExLCAweDE1LCAweDk2LCAweDBiLCAweGU4LAotMHgyNywgMHg0MiwgMHg1YSwgMHhmOSwgMHg1YywgMHhlYSwgMHgwYywgMHhhYywgMHg5OCwgMHhhYSwgMHhlMSwgMHg4ZCwgMHhhYSwgMHhlYiwgMHgyZCwgMHgzYywgMHg2MCwgMHg2YSwgMHhmYiwgMHg0NSwKLTB4NjMsIDB4YTQsIDB4NzksIDB4ODMsIDB4NjcsIDB4ZWQsIDB4ZTQsIDB4MTUsIDB4YzAsIDB4YjAsIDB4MjAsIDB4OTUsIDB4NmQsIDB4NDksIDB4MTYsIDB4YzYsIDB4NDIsIDB4MDUsIDB4NDgsIDB4YWEsCi0weGIxLCAweGE1LCAweDUzLCAweDY1LCAweGQyLCAweDAyLCAweDk5LCAweDA4LCAweGQxLCAweDg0LCAweGNjLCAweGYwLCAweGNkLCAweGVhLCAweDYxLCAweGM5LCAweDM5LCAweDAyLCAweDNmLCAweDg3LAotMHg0YSwgMHhlNSwgMHhjNCwgMHhkMiwgMHgwNywgMHgwMiwgMHhlMSwgMHg5ZiwgMHhhMCwgMHgwNiwgMHhjMiwgMHhjYywgMHgwMiwgMHhlNywgMHhhYSwgMHg2YywgMHg5OSwgMHg4YSwgMHhmOCwgMHg0OSwKLTB4MDAsIDB4ZjEsIDB4YTIsIDB4OGMsIDB4MGMsIDB4OGEsIDB4YjksIDB4NGYsIDB4NmQsIDB4NzMsIDB4M2IsIDB4MmMsIDB4YjcsIDB4OWYsIDB4OGEsIDB4YTYsIDB4N2YsIDB4OWIsIDB4OWYsIDB4YjcsCi0weGExLCAweGNjLCAweDc0LCAweDJlLCAweDhmLCAweGI4LCAweGIwLCAweDI2LCAweDg5LCAweGQyLCAweGU1LCAweDY2LCAweGU4LCAweDhlLCAweGExLCAweDAyLCAweDQxLCAweDAwLCAweGZjLCAweGU3LAotMHg1MiwgMHhiYywgMHg0ZSwgMHg5NSwgMHhiNiwgMHgxYSwgMHhiNCwgMHg2MiwgMHhjYywgMHhkOCwgMHgwNiwgMHhlMSwgMHhkYywgMHg3YSwgMHhhMiwgMHhiNiwgMHg3MSwgMHgwMSwgMHhhYSwgMHgyNywKLTB4ZmMsIDB4OTksIDB4ZTUsIDB4ZjIsIDB4NTQsIDB4YmIsIDB4YjIsIDB4ODUsIDB4ZTEsIDB4OTYsIDB4NTQsIDB4MmQsIDB4Y2IsIDB4YmEsIDB4ODYsIDB4ZmEsIDB4ODAsIDB4ZGYsIDB4Y2YsIDB4MzksCi0weGU2LCAweDc0LCAweGNiLCAweDIyLCAweGNlLCAweDcwLCAweGFhLCAweDEwLCAweDAwLCAweDczLCAweDFkLCAweDQ1LCAweDBhLCAweDM5LCAweDUxLCAweDg0LCAweGY1LCAweDE1LCAweDhmLCAweDM3LAotMHg3NiwgMHg5MSwgMHgwMiwgMHg0MSwgMHgwMCwgMHhlNCwgMHgzZiwgMHhmMCwgMHhmNCwgMHhkZSwgMHg3OSwgMHg3NywgMHg0OCwgMHg5YiwgMHg5YywgMHgyOCwgMHg0NSwgMHgyNiwgMHg1NywgMHgzYywKLTB4NzEsIDB4NDAsIDB4MjgsIDB4NmEsIDB4YTEsIDB4ZmUsIDB4YzMsIDB4ZTUsIDB4MzcsIDB4YTEsIDB4MDMsIDB4ZjYsIDB4MmQsIDB4YmUsIDB4ODAsIDB4NjQsIDB4NzIsIDB4NjksIDB4MmUsIDB4OWIsCi0weDRkLCAweGUzLCAweDJlLCAweDFiLCAweGZlLCAweGU3LCAweGY5LCAweDc3LCAweDhjLCAweDE4LCAweDUzLCAweDlmLCAweGUyLCAweGZlLCAweDAwLCAweGJiLCAweDQ5LCAweDIwLCAweDQ3LCAweGRmLAotMHgwMSwgMHg2MSwgMHg4NywgMHhkNiwgMHhlMywgMHg0NCwgMHhiNSwgMHgwMywgMHgyZiwgMHgwMiwgMHg0MCwgMHg1NCwgMHhlYywgMHg3YywgMHhiYywgMHhkZCwgMHgwYSwgMHhhYSwgMHhkZSwgMHhlNiwKLTB4YzksIDB4ZjIsIDB4OGQsIDB4NmMsIDB4MmEsIDB4MzUsIDB4ZjYsIDB4M2MsIDB4NjMsIDB4NTUsIDB4MjksIDB4NDAsIDB4ZjEsIDB4MzIsIDB4ODIsIDB4OWYsIDB4NTMsIDB4YjMsIDB4OWUsIDB4NWYsCi0weGMxLCAweDUzLCAweDUyLCAweDNlLCAweGFjLCAweDJlLCAweDI4LCAweDUxLCAweGExLCAweDE2LCAweGRiLCAweDkwLCAweGUzLCAweDk5LCAweDdlLCAweDg4LCAweGE0LCAweDA0LCAweDdjLCAweDkyLAotMHhhZSwgMHhkMiwgMHhlNywgMHhkNCwgMHhlMSwgMHg1NSwgMHgyMCwgMHg5MCwgMHgzZSwgMHgzYywgMHg2YSwgMHg2MywgMHhmMCwgMHgzNCwgMHhmMSwgMHgwMiwgMHg0MSwgMHgwMCwgMHg4NCwgMHg1YSwKLTB4MTcsIDB4NmMsIDB4YzYsIDB4M2MsIDB4ODQsIDB4ZDAsIDB4OTMsIDB4N2EsIDB4ZmYsIDB4NTYsIDB4ZTksIDB4OWUsIDB4OTgsIDB4MmIsIDB4Y2IsIDB4NWEsIDB4MjQsIDB4NGEsIDB4ZmYsIDB4MjEsCi0weGI0LCAweDllLCAweDg3LCAweDNkLCAweDc2LCAweGQ4LCAweDliLCAweGE4LCAweDczLCAweDk2LCAweDZjLCAweDJiLCAweDVjLCAweDVlLCAweGQzLCAweGE2LCAweGZmLCAweDEwLCAweGQ2LCAweDhlLAotMHhhZiwgMHhhNSwgMHg4YSwgMHhjZCwgMHhhMiwgMHhkZSwgMHhjYiwgMHgwZSwgMHhiZCwgMHg4YSwgMHhlZiwgMHhhZSwgMHhmZCwgMHgzZiwgMHgxZCwgMHhjMCwgMHhkOCwgMHhmOCwgMHgzYiwgMHhmNSwKLTB4MDIsIDB4N2QsIDB4MDIsIDB4NDEsIDB4MDAsIDB4OGIsIDB4MjYsIDB4ZDMsIDB4MmMsIDB4N2QsIDB4MjgsIDB4MzgsIDB4OTIsIDB4ZjEsIDB4YmYsIDB4MTUsIDB4MTYsIDB4MzksIDB4NTAsIDB4YzgsCi0weDZkLCAweDMyLCAweGVjLCAweDI4LCAweGYyLCAweDhiLCAweGQ4LCAweDcwLCAweGM1LCAweGVkLCAweGUxLCAweDdiLCAweGZmLCAweDJkLCAweDY2LCAweDhjLCAweDg2LCAweDc3LCAweDQzLCAweGViLAotMHhiNiwgMHhmNiwgMHg1MCwgMHg2NiwgMHhiMCwgMHg0MCwgMHgyNCwgMHg2YSwgMHhhZiwgMHg5OCwgMHgyMSwgMHg0NSwgMHgzMCwgMHgwMSwgMHg1OSwgMHhkMCwgMHhjMywgMHhmYywgMHg3YiwgMHhhZSwKLTB4MzAsIDB4MTgsIDB4ZWIsIDB4OTAsIDB4ZmIsIDB4MTcsIDB4ZDMsIDB4Y2UsIDB4YjUKLX07Ci0KLS8qKgotICogTG9vcCB0byBlbmNvZGUgYSBkYXRhIHBhY2tldCBuSXRlcmF0aW9ucyB0aW1lcyB1c2luZyBDKysuCi0gKiBAcGFyYW0gbkl0ZXJhdGlvbnMgVGhlIG51bWJlciBvZiBpdGVyYXRpb25zLgotICogQHBhcmFtIHVzZUNvbXBsZXggSWYgdHJ1ZSwgdXNlIGEgbGFyZ2UgbmFtZSwgbGFyZ2UgY29udGVudCBhbmQgYWxsIGZpZWxkcy4gIElmIGZhbHNlLCB1c2UgYSBzbWFsbCBuYW1lLCBzbWFsbCBjb250ZW50Ci0gKiBhbmQgb25seSByZXF1aXJlZCBmaWVsZHMuCi0gKiBAcGFyYW0gdXNlQ3J5cHRvIElmIHRydWUsIHNpZ24gdGhlIGRhdGEgcGFja2V0LiAgSWYgZmFsc2UsIHVzZSBhIGJsYW5rIHNpZ25hdHVyZS4KLSAqIEBwYXJhbSBlbmNvZGluZyBTZXQgdGhpcyB0byB0aGUgd2lyZSBlbmNvZGluZy4KLSAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBzZWNvbmRzIGZvciBhbGwgaXRlcmF0aW9ucy4KLSAqLwotc3RhdGljIGRvdWJsZQotYmVuY2htYXJrRW5jb2RlRGF0YVNlY29uZHNDcHAoaW50IG5JdGVyYXRpb25zLCBib29sIHVzZUNvbXBsZXgsIGJvb2wgdXNlQ3J5cHRvLCBCbG9jayYgZW5jb2RpbmcpCi17Ci0gIE5hbWUgbmFtZTsKLSAgQmxvY2sgY29udGVudDsKLSAgaWYgKHVzZUNvbXBsZXgpIHsKLSAgICAvLyBVc2UgYSBsYXJnZSBuYW1lIGFuZCBjb250ZW50LgotICAgIG5hbWUgPSBOYW1lKCIvbmRuL3VjbGEuZWR1L2FwcHMvbHduZG4tdGVzdC9udW1iZXJzLnR4dC8lRkQlMDUlMDUlRTglMEMlQ0UlMUQvJTAwIik7IAotICAgIAotICAgIG9zdHJpbmdzdHJlYW0gY29udGVudFN0cmVhbTsKLSAgICBpbnQgY291bnQgPSAxOwotICAgIGNvbnRlbnRTdHJlYW0gPDwgKGNvdW50KyspOwotICAgIHdoaWxlIChjb250ZW50U3RyZWFtLnN0cigpLmxlbmd0aCgpIDwgMTE3MCkKLSAgICAgIGNvbnRlbnRTdHJlYW0gPDwgIiAiIDw8IChjb3VudCsrKTsKLSAgICBjb250ZW50ID0gZGF0YUJsb2NrKFRsdjo6Q29udGVudCwgY29udGVudFN0cmVhbS5zdHIoKS5jX3N0cigpLCBjb250ZW50U3RyZWFtLnN0cigpLmxlbmd0aCgpKTsKLSAgfQotICBlbHNlIHsKLSAgICAvLyBVc2UgYSBzbWFsbCBuYW1lIGFuZCBjb250ZW50LgotICAgIG5hbWUgPSBOYW1lKCIvdGVzdCIpOwotICAgIGNvbnRlbnQgPSBkYXRhQmxvY2soVGx2OjpDb250ZW50LCAiYWJjIiwgMyk7Ci0gIH0KLSAgc3RkOjpjb3V0IDw8ICJDb250ZW50IHNpemU6ICIgPDwgY29udGVudC52YWx1ZV9zaXplKCkgPDwgc3RkOjplbmRsOwotICAKLSAgLy8gSW5pdGlhbGl6ZSB0aGUgS2V5Q2hhaW4gc3RvcmFnZSBpbiBjYXNlIHVzZUNyeXB0byBpcyB0cnVlLgotICBLZXlDaGFpbkltcGw8U2VjUHVibGljSW5mb01lbW9yeSwgU2VjVHBtTWVtb3J5PiBrZXlDaGFpbjsKLQotICBOYW1lIGtleU5hbWUoIi90ZXN0bmFtZS9kc2stMTIzIik7Ci0KLSAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RvcmFnZS4KLSAga2V5Q2hhaW4uYWRkUHVibGljS2V5KGtleU5hbWUsIEtFWV9UWVBFX1JTQSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY0tleShERUZBVUxUX1BVQkxJQ19LRVlfREVSLCBzaXplb2YoREVGQVVMVF9QVUJMSUNfS0VZX0RFUikpKTsKLQotICBrZXlDaGFpbi5zZXRLZXlQYWlyRm9yS2V5TmFtZShrZXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1BVQkxJQ19LRVlfREVSLCBzaXplb2YoREVGQVVMVF9QVUJMSUNfS0VZX0RFUiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfUFJJVkFURV9LRVlfREVSLCBzaXplb2YoREVGQVVMVF9QUklWQVRFX0tFWV9ERVIpKTsKLQotICBrZXlDaGFpbi5hZGRDZXJ0aWZpY2F0ZUFzS2V5RGVmYXVsdCgqa2V5Q2hhaW4uc2VsZlNpZ24oa2V5TmFtZSkpOwotICBOYW1lIGNlcnRpZmljYXRlTmFtZSA9IGtleUNoYWluLmdldERlZmF1bHRDZXJ0aWZpY2F0ZU5hbWUoKTsKLSAgCi0gIC8vIFNldCB1cCBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgYW5kIHNpZ25hdHVyZUJpdHMgaW4gY2FzZSB1c2VDcnlwdG8gaXMgZmFsc2UuCi0gIHVpbnQ4X3Qgc2lnbmF0dXJlQml0c0FycmF5WzEyOF07Ci0gIG1lbXNldChzaWduYXR1cmVCaXRzQXJyYXksIDAsIHNpemVvZihzaWduYXR1cmVCaXRzQXJyYXkpKTsKLSAgQmxvY2sgc2lnbmF0dXJlVmFsdWUgPSBkYXRhQmxvY2soVGx2OjpTaWduYXR1cmVWYWx1ZSwgc2lnbmF0dXJlQml0c0FycmF5LCBzaXplb2Yoc2lnbmF0dXJlQml0c0FycmF5KSk7Ci0KLSAgZG91YmxlIHN0YXJ0ID0gZ2V0Tm93U2Vjb25kcygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IG5JdGVyYXRpb25zOyArK2kpIHsKLSAgICBEYXRhIGRhdGEobmFtZSk7Ci0gICAgZGF0YS5zZXRDb250ZW50KGNvbnRlbnQpOwotICAgIGlmICh1c2VDb21wbGV4KSB7Ci0gICAgICBkYXRhLnNldEZyZXNobmVzc1BlcmlvZCgxMDAwMDAwKTsKLSAgICB9Ci0KLSAgICBpZiAodXNlQ3J5cHRvKQotICAgICAgLy8gVGhpcyBzZXRzIHRoZSBzaWduYXR1cmUgZmllbGRzLgotICAgICAga2V5Q2hhaW4uc2lnbihkYXRhKTsKLSAgICBlbHNlIHsKLSAgICAgIC8vIEltaXRhdGUgcmVhbCBzaWduIG1ldGhvZCB0byBzZXQgdXAgdGhlIHNpZ25hdHVyZSBmaWVsZHMsIGJ1dCBkb24ndCBhY3R1YWxseSBzaWduLgotICAgICAgU2lnbmF0dXJlU2hhMjU2V2l0aFJzYSBzaWduYXR1cmU7Ci0gICAgICBzaWduYXR1cmUuc2V0S2V5TG9jYXRvcihjZXJ0aWZpY2F0ZU5hbWUpOwotICAgICAgc2lnbmF0dXJlLnNldFZhbHVlKHNpZ25hdHVyZVZhbHVlKTsKLSAgICAgIGRhdGEuc2V0U2lnbmF0dXJlKHNpZ25hdHVyZSk7Ci0gICAgfQotCi0gICAgZW5jb2RpbmcgPSBkYXRhLndpcmVFbmNvZGUoKTsKLSAgfQotICBkb3VibGUgZmluaXNoID0gZ2V0Tm93U2Vjb25kcygpOwotICAgIAotICByZXR1cm4gZmluaXNoIC0gc3RhcnQ7Ci19Ci0KLXN0YXRpYyB2b2lkIAotb25WZXJpZmllZChjb25zdCBwdHJfbGliOjpzaGFyZWRfcHRyPERhdGE+JiBkYXRhKQotewotICAvLyBEbyBub3RoaW5nIHNpbmNlIHdlIGV4cGVjdCBpdCB0byB2ZXJpZnkuCi19Ci0KLXN0YXRpYyB2b2lkIAotb25WZXJpZnlGYWlsZWQoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxEYXRhPiYgZGF0YSkKLXsKLSAgY291dCA8PCAiU2lnbmF0dXJlIHZlcmlmaWNhdGlvbjogRkFJTEVEIiA8PCBlbmRsOwotfQotCi0vKioKLSAqIExvb3AgdG8gZGVjb2RlIGEgZGF0YSBwYWNrZXQgbkl0ZXJhdGlvbnMgdGltZXMgdXNpbmcgQysrLgotICogQHBhcmFtIG5JdGVyYXRpb25zIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucy4KLSAqIEBwYXJhbSB1c2VDcnlwdG8gSWYgdHJ1ZSwgdmVyaWZ5IHRoZSBzaWduYXR1cmUuICBJZiBmYWxzZSwgZG9uJ3QgdmVyaWZ5LgotICogQHBhcmFtIGVuY29kaW5nIFRoZSB3aXJlIGVuY29kaW5nIHRvIGRlY29kZS4KLSAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBzZWNvbmRzIGZvciBhbGwgaXRlcmF0aW9ucy4KLSAqLwotc3RhdGljIGRvdWJsZSAKLWJlbmNobWFya0RlY29kZURhdGFTZWNvbmRzQ3BwKGludCBuSXRlcmF0aW9ucywgYm9vbCB1c2VDcnlwdG8sIGNvbnN0IENvbnN0QnVmZmVyUHRyICZlbmNvZGluZykKLXsKLSAgLy8gLy8gSW5pdGlhbGl6ZSB0aGUgS2V5Q2hhaW4gc3RvcmFnZSBpbiBjYXNlIHVzZUNyeXB0byBpcyB0cnVlLgotICAvLyBwdHJfbGliOjpzaGFyZWRfcHRyPE1lbW9yeUlkZW50aXR5U3RvcmFnZT4gaWRlbnRpdHlTdG9yYWdlKG5ldyBNZW1vcnlJZGVudGl0eVN0b3JhZ2UoKSk7Ci0gIC8vIGlkZW50aXR5U3RvcmFnZS0+YWRkS2V5KGtleU5hbWUsIEtFWV9UWVBFX1JTQSwgQmxvYihERUZBVUxUX1BVQkxJQ19LRVlfREVSLCBzaXplb2YoREVGQVVMVF9QVUJMSUNfS0VZX0RFUikpKTsKLSAgCi0gIC8vIHB0cl9saWI6OnNoYXJlZF9wdHI8TWVtb3J5UHJpdmF0ZUtleVN0b3JhZ2U+IHByaXZhdGVLZXlTdG9yYWdlKG5ldyBNZW1vcnlQcml2YXRlS2V5U3RvcmFnZSgpKTsKLSAgLy8gS2V5Q2hhaW4ga2V5Q2hhaW4oaWRlbnRpdHlTdG9yYWdlLCBwcml2YXRlS2V5U3RvcmFnZSk7Ci0gIAotICAvLyBOYW1lIGtleU5hbWUoIi90ZXN0bmFtZS9EU0stMTIzIik7Ci0KLSAgc2l6ZV90IG5hbWVTaXplID0gMDsKLSAgZG91YmxlIHN0YXJ0ID0gZ2V0Tm93U2Vjb25kcygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IG5JdGVyYXRpb25zOyArK2kpIHsKLSAgICBEYXRhIGRhdGE7Ci0gICAgZGF0YS53aXJlRGVjb2RlKGVuY29kaW5nKTsKLSAgICAKLSAgLy8gICBpZiAodXNlQ3J5cHRvKQotICAvLyAgICAga2V5Q2hhaW4udmVyaWZ5RGF0YShkYXRhLCBvblZlcmlmaWVkLCBvblZlcmlmeUZhaWxlZCk7Ci0gIH0KLSAgZG91YmxlIGZpbmlzaCA9IGdldE5vd1NlY29uZHMoKTsKLSAKLSAgcmV0dXJuIGZpbmlzaCAtIHN0YXJ0OwotfQotCi0vKioKLSAqIExvb3AgdG8gZW5jb2RlIGEgZGF0YSBwYWNrZXQgbkl0ZXJhdGlvbnMgdGltZXMgdXNpbmcgQy4KLSAqIEBwYXJhbSBuSXRlcmF0aW9ucyBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCi0gKiBAcGFyYW0gdXNlQ29tcGxleCBJZiB0cnVlLCB1c2UgYSBsYXJnZSBuYW1lLCBsYXJnZSBjb250ZW50IGFuZCBhbGwgZmllbGRzLiAgSWYgZmFsc2UsIHVzZSBhIHNtYWxsIG5hbWUsIHNtYWxsIGNvbnRlbnQKLSAqIGFuZCBvbmx5IHJlcXVpcmVkIGZpZWxkcy4KLSAqIEBwYXJhbSB1c2VDcnlwdG8gSWYgdHJ1ZSwgc2lnbiB0aGUgZGF0YSBwYWNrZXQuICBJZiBmYWxzZSwgdXNlIGEgYmxhbmsgc2lnbmF0dXJlLgotICogQHBhcmFtIGVuY29kaW5nIE91dHB1dCBidWZmZXIgZm9yIHRoZSB3aXJlIGVuY29kaW5nLgotICogQHBhcmFtIG1heEVuY29kaW5nTGVuZ3RoIFRoZSBzaXplIG9mIHRoZSBlbmNvZGluZyBidWZmZXIuCi0gKiBAcGFyYW0gZW5jb2RpbmdMZW5ndGggUmV0dXJuIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGJ5dGVzIGluIGVuY29kaW5nLgotICogQHJldHVybiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgZm9yIGFsbCBpdGVyYXRpb25zLgotICovCi1zdGF0aWMgZG91YmxlIAotYmVuY2htYXJrRW5jb2RlRGF0YVNlY29uZHNDCi0gIChpbnQgbkl0ZXJhdGlvbnMsIGJvb2wgdXNlQ29tcGxleCwgYm9vbCB1c2VDcnlwdG8sIHVpbnQ4X3QqIGVuY29kaW5nLCBzaXplX3QgbWF4RW5jb2RpbmdMZW5ndGgsIHNpemVfdCAqZW5jb2RpbmdMZW5ndGgpCi17Ci0gIHN0cnVjdCBuZG5fQmxvYiBmaW5hbEJsb2NrSWQ7Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJmZpbmFsQmxvY2tJZCwgKHVpbnQ4X3QqKSJceDAwIiwgMSk7Ci0KLSAgc3RydWN0IG5kbl9OYW1lQ29tcG9uZW50IG5hbWVDb21wb25lbnRzWzIwXTsKLSAgc3RydWN0IG5kbl9OYW1lIG5hbWU7Ci0gIG5kbl9OYW1lX2luaXRpYWxpemUoJm5hbWUsIG5hbWVDb21wb25lbnRzLCBzaXplb2YobmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKG5hbWVDb21wb25lbnRzWzBdKSk7Ci0gIEJ1ZmZlciBjb250ZW50QmxvYjsKLSAgc3RydWN0IG5kbl9CbG9iIGNvbnRlbnQ7Ci0gIGlmICh1c2VDb21wbGV4KSB7Ci0gICAgLy8gVXNlIGEgbGFyZ2UgbmFtZSBhbmQgY29udGVudC4KLSAgICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJm5hbWUsIChjaGFyKikibmRuIik7Ci0gICAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZuYW1lLCAoY2hhciopInVjbGEuZWR1Iik7Ci0gICAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZuYW1lLCAoY2hhciopImFwcHMiKTsKLSAgICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJm5hbWUsIChjaGFyKikibHduZG4tdGVzdCIpOwotICAgIG5kbl9OYW1lX2FwcGVuZFN0cmluZygmbmFtZSwgKGNoYXIqKSJudW1iZXJzLnR4dCIpOwotICAgIG5kbl9OYW1lX2FwcGVuZFN0cmluZygmbmFtZSwgKGNoYXIqKSJceEZEXHgwNVx4MDVceEU4XHgwQ1x4Q0VceDFEIik7Ci0gICAgbmRuX05hbWVfYXBwZW5kQmxvYigmbmFtZSwgJmZpbmFsQmxvY2tJZCk7Ci0gICAgCi0gICAgb3N0cmluZ3N0cmVhbSBjb250ZW50U3RyZWFtOwotICAgIGludCBjb3VudCA9IDE7Ci0gICAgY29udGVudFN0cmVhbSA8PCAoY291bnQrKyk7Ci0gICAgd2hpbGUgKGNvbnRlbnRTdHJlYW0uc3RyKCkubGVuZ3RoKCkgPCAxMTcwKQotICAgICAgY29udGVudFN0cmVhbSA8PCAiICIgPDwgKGNvdW50KyspOwotICAgIGNvbnRlbnRCbG9iID0gQnVmZmVyKCh1aW50OF90Kiljb250ZW50U3RyZWFtLnN0cigpLmNfc3RyKCksIGNvbnRlbnRTdHJlYW0uc3RyKCkubGVuZ3RoKCkpOwotICB9Ci0gIGVsc2UgewotICAgIC8vIFVzZSBhIHNtYWxsIG5hbWUgYW5kIGNvbnRlbnQuCi0gICAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZuYW1lLCAoY2hhciopInRlc3QiKTsKLSAgICBjb250ZW50QmxvYiA9IEJ1ZmZlcigodWludDhfdCopImFiYyIsIDMpOwotICB9Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJmNvbnRlbnQsICh1aW50OF90Kiljb250ZW50QmxvYi5idWYoKSwgY29udGVudEJsb2Iuc2l6ZSgpKTsKLSAgCi0gIHN0cnVjdCBuZG5fTmFtZUNvbXBvbmVudCBjZXJ0aWZpY2F0ZU5hbWVDb21wb25lbnRzWzIwXTsKLSAgc3RydWN0IG5kbl9OYW1lIGNlcnRpZmljYXRlTmFtZTsKLSAgbmRuX05hbWVfaW5pdGlhbGl6ZSgmY2VydGlmaWNhdGVOYW1lLCBjZXJ0aWZpY2F0ZU5hbWVDb21wb25lbnRzLCBzaXplb2YoY2VydGlmaWNhdGVOYW1lQ29tcG9uZW50cykgLyBzaXplb2YoY2VydGlmaWNhdGVOYW1lQ29tcG9uZW50c1swXSkpOwotICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJmNlcnRpZmljYXRlTmFtZSwgKGNoYXIqKSJ0ZXN0bmFtZSIpOwotICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJmNlcnRpZmljYXRlTmFtZSwgKGNoYXIqKSJLRVkiKTsKLSAgbmRuX05hbWVfYXBwZW5kU3RyaW5nKCZjZXJ0aWZpY2F0ZU5hbWUsIChjaGFyKikiRFNLLTEyMyIpOwotICBuZG5fTmFtZV9hcHBlbmRTdHJpbmcoJmNlcnRpZmljYXRlTmFtZSwgKGNoYXIqKSJJRC1DRVJUIik7Ci0gIG5kbl9OYW1lX2FwcGVuZFN0cmluZygmY2VydGlmaWNhdGVOYW1lLCAoY2hhciopIjAiKTsKLSAgCi0gIC8vIFNldCB1cCBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QgYW5kIHNpZ25hdHVyZUJpdHMgaW4gY2FzZSB1c2VDcnlwdG8gaXMgZmFsc2UuCi0gIHVpbnQ4X3QqIHB1YmxpY0tleURlciA9IERFRkFVTFRfUFVCTElDX0tFWV9ERVI7Ci0gIHNpemVfdCBwdWJsaWNLZXlEZXJMZW5ndGggPSBzaXplb2YoREVGQVVMVF9QVUJMSUNfS0VZX0RFUik7Ci0gIHVpbnQ4X3QgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0QXJyYXlbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOwotICBuZG5fZGlnZXN0U2hhMjU2KHB1YmxpY0tleURlciwgcHVibGljS2V5RGVyTGVuZ3RoLCBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RBcnJheSk7Ci0gIHN0cnVjdCBuZG5fQmxvYiBwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3Q7Ci0gIG5kbl9CbG9iX2luaXRpYWxpemUoJnB1Ymxpc2hlclB1YmxpY0tleURpZ2VzdCwgcHVibGlzaGVyUHVibGljS2V5RGlnZXN0QXJyYXksIHNpemVvZihwdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3RBcnJheSkpOwotICB1aW50OF90IHNpZ25hdHVyZUJpdHNBcnJheVsxMjhdOwotICBtZW1zZXQoc2lnbmF0dXJlQml0c0FycmF5LCAwLCBzaXplb2Yoc2lnbmF0dXJlQml0c0FycmF5KSk7Ci0gIAotICAvLyBTZXQgdXAgdGhlIHByaXZhdGUga2V5IG5vdyBpbiBjYXNlIHVzZUNyeXB0byBpcyB0cnVlLgotICAvLyBVc2UgYSB0ZW1wb3JhcnkgcG9pbnRlciBzaW5jZSBkMmkgdXBkYXRlcyBpdC4KLSAgY29uc3QgdWludDhfdCAqcHJpdmF0ZUtleURlclBvaW50ZXIgPSBERUZBVUxUX1BSSVZBVEVfS0VZX0RFUjsKLSAgUlNBICpwcml2YXRlS2V5ID0gZDJpX1JTQVByaXZhdGVLZXkoTlVMTCwgJnByaXZhdGVLZXlEZXJQb2ludGVyLCBzaXplb2YoREVGQVVMVF9QUklWQVRFX0tFWV9ERVIpKTsKLSAgaWYgKCFwcml2YXRlS2V5KSB7Ci0gICAgLy8gRG9uJ3QgZXhwZWN0IHRoaXMgdG8gaGFwcGVuLgotICAgIGNvdXQgPDwgIkVycm9yIGRlY29kaW5nIHByaXZhdGUga2V5IERFUiIgPDwgZW5kbDsKLSAgICByZXR1cm4gMDsKLSAgfQotICAKLSAgZG91YmxlIHN0YXJ0ID0gZ2V0Tm93U2Vjb25kcygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IG5JdGVyYXRpb25zOyArK2kpIHsKLSAgICBzdHJ1Y3QgbmRuX0RhdGEgZGF0YTsKLSAgICBuZG5fRGF0YV9pbml0aWFsaXplKCZkYXRhLCBuYW1lLmNvbXBvbmVudHMsIG5hbWUubWF4Q29tcG9uZW50cywgY2VydGlmaWNhdGVOYW1lLmNvbXBvbmVudHMsIGNlcnRpZmljYXRlTmFtZS5tYXhDb21wb25lbnRzKTsKLSAgICAKLSAgICBkYXRhLm5hbWUgPSBuYW1lOwotICAgIGRhdGEuY29udGVudCA9IGNvbnRlbnQ7Ci0gICAgaWYgKHVzZUNvbXBsZXgpIHsKLSAgICAgIGRhdGEubWV0YUluZm8udGltZXN0YW1wTWlsbGlzZWNvbmRzID0gMS4zZSsxMjsKLSAgICAgIGRhdGEubWV0YUluZm8uZnJlc2huZXNzU2Vjb25kcyA9IDEwMDA7Ci0gICAgICBuZG5fTmFtZUNvbXBvbmVudF9pbml0aWFsaXplKCZkYXRhLm1ldGFJbmZvLmZpbmFsQmxvY2tJRCwgZmluYWxCbG9ja0lkLnZhbHVlLCBmaW5hbEJsb2NrSWQubGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBzdHJ1Y3QgbmRuX0R5bmFtaWNVSW50OEFycmF5IG91dHB1dDsKLSAgICBzdHJ1Y3QgbmRuX0JpbmFyeVhtbEVuY29kZXIgZW5jb2RlcjsKLSAgICBzaXplX3Qgc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCBzaWduZWRQb3J0aW9uRW5kT2Zmc2V0OwotICAgIG5kbl9FcnJvciBlcnJvcjsKLQotICAgIGRhdGEuc2lnbmF0dXJlLmtleUxvY2F0b3IudHlwZSA9IG5kbl9LZXlMb2NhdG9yVHlwZV9LRVlOQU1FOwotICAgIGRhdGEuc2lnbmF0dXJlLmtleUxvY2F0b3Iua2V5TmFtZSA9IGNlcnRpZmljYXRlTmFtZTsKLSAgICBkYXRhLnNpZ25hdHVyZS5rZXlMb2NhdG9yLmtleU5hbWVUeXBlID0gKG5kbl9LZXlOYW1lVHlwZSktMTsKLSAgICBkYXRhLnNpZ25hdHVyZS5wdWJsaXNoZXJQdWJsaWNLZXlEaWdlc3QucHVibGlzaGVyUHVibGljS2V5RGlnZXN0ID0gcHVibGlzaGVyUHVibGljS2V5RGlnZXN0OwotICAgIGlmICh1c2VDcnlwdG8pIHsKLSAgICAgIC8vIEVuY29kZSBvbmNlIHRvIGdldCB0aGUgc2lnbmVkIHBvcnRpb24uCi0gICAgICBuZG5fRHluYW1pY1VJbnQ4QXJyYXlfaW5pdGlhbGl6ZSgmb3V0cHV0LCBlbmNvZGluZywgbWF4RW5jb2RpbmdMZW5ndGgsIDApOwotICAgICAgbmRuX0JpbmFyeVhtbEVuY29kZXJfaW5pdGlhbGl6ZSgmZW5jb2RlciwgJm91dHB1dCk7ICAgIAotICAgICAgaWYgKChlcnJvciA9IG5kbl9lbmNvZGVCaW5hcnlYbWxEYXRhKCZkYXRhLCAmc2lnbmVkUG9ydGlvbkJlZ2luT2Zmc2V0LCAmc2lnbmVkUG9ydGlvbkVuZE9mZnNldCwgJmVuY29kZXIpKSkgewotICAgICAgICBjb3V0IDw8ICJFcnJvciBpbiBuZG5fZW5jb2RlQmluYXJ5WG1sRGF0YTogIiA8PCBuZG5fZ2V0RXJyb3JTdHJpbmcoZXJyb3IpIDw8IGVuZGw7Ci0gICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgICAgCi0gICAgICAvLyBJbWl0YXRlIE1lbW9yeVByaXZhdGVLZXlTdG9yYWdlOjpzaWduLgotICAgICAgdWludDhfdCBkaWdlc3RbU0hBMjU2X0RJR0VTVF9MRU5HVEhdOwotICAgICAgbmRuX2RpZ2VzdFNoYTI1NihlbmNvZGluZyArIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldCAtIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgZGlnZXN0KTsKLSAgICAgIHVuc2lnbmVkIGludCBzaWduYXR1cmVCaXRzTGVuZ3RoOwotICAgICAgaWYgKCFSU0Ffc2lnbihOSURfc2hhMjU2LCBkaWdlc3QsIHNpemVvZihkaWdlc3QpLCBzaWduYXR1cmVCaXRzQXJyYXksICZzaWduYXR1cmVCaXRzTGVuZ3RoLCBwcml2YXRlS2V5KSkgewotICAgICAgICAvLyBEb24ndCBleHBlY3QgdGhpcyB0byBoYXBwZW4uCi0gICAgICAgIGNvdXQgPDwgIkVycm9yIGluIFJTQV9zaWduIiA8PCBlbmRsOwotICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0gICAgCi0gICAgICAKLSAgICAgIG5kbl9CbG9iX2luaXRpYWxpemUoJmRhdGEuc2lnbmF0dXJlLnNpZ25hdHVyZSwgc2lnbmF0dXJlQml0c0FycmF5LCBzaWduYXR1cmVCaXRzTGVuZ3RoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgLy8gU2V0IHVwIHRoZSBzaWduYXR1cmUsIGJ1dCBkb24ndCBzaWduLgotICAgICAgbmRuX0Jsb2JfaW5pdGlhbGl6ZSgmZGF0YS5zaWduYXR1cmUuc2lnbmF0dXJlLCBzaWduYXR1cmVCaXRzQXJyYXksIHNpemVvZihzaWduYXR1cmVCaXRzQXJyYXkpKTsKLQotICAgIC8vIEFzc3VtZSB0aGUgZW5jb2RpbmcgYnVmZmVyIGlzIGJpZyBlbm91Z2ggc28gd2UgZG9uJ3QgbmVlZCB0byBkeW5hbWljYWxseSByZWFsbG9jYXRlLgotICAgIG5kbl9EeW5hbWljVUludDhBcnJheV9pbml0aWFsaXplKCZvdXRwdXQsIGVuY29kaW5nLCBtYXhFbmNvZGluZ0xlbmd0aCwgMCk7Ci0gICAgbmRuX0JpbmFyeVhtbEVuY29kZXJfaW5pdGlhbGl6ZSgmZW5jb2RlciwgJm91dHB1dCk7ICAgIAotICAgIGlmICgoZXJyb3IgPSBuZG5fZW5jb2RlQmluYXJ5WG1sRGF0YSgmZGF0YSwgJnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgJnNpZ25lZFBvcnRpb25FbmRPZmZzZXQsICZlbmNvZGVyKSkpIHsKLSAgICAgIGNvdXQgPDwgIkVycm9yIGluIG5kbl9lbmNvZGVCaW5hcnlYbWxEYXRhOiAiIDw8IG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikgPDwgZW5kbDsKLSAgICAgIHJldHVybiAwOwotICAgIH0gICAgCi0gICAgKmVuY29kaW5nTGVuZ3RoID0gZW5jb2Rlci5vZmZzZXQ7Ci0gIH0KLSAgZG91YmxlIGZpbmlzaCA9IGdldE5vd1NlY29uZHMoKTsKLSAgCi0gIGlmIChwcml2YXRlS2V5KQotICAgIFJTQV9mcmVlKHByaXZhdGVLZXkpOwotICAKLSAgcmV0dXJuIGZpbmlzaCAtIHN0YXJ0OwotfQotCi0vKioKLSAqIExvb3AgdG8gZGVjb2RlIGEgZGF0YSBwYWNrZXQgbkl0ZXJhdGlvbnMgdGltZXMgdXNpbmcgQy4KLSAqIEBwYXJhbSBuSXRlcmF0aW9ucyBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCi0gKiBAcGFyYW0gdXNlQ3J5cHRvIElmIHRydWUsIHZlcmlmeSB0aGUgc2lnbmF0dXJlLiAgSWYgZmFsc2UsIGRvbid0IHZlcmlmeS4KLSAqIEBwYXJhbSBlbmNvZGluZyBUaGUgYnVmZmVyIHdpdGggd2lyZSBlbmNvZGluZyB0byBkZWNvZGUuCi0gKiBAcGFyYW0gZW5jb2RpbmdMZW5ndGggVGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZW5jb2RpbmcuCi0gKiBAcmV0dXJuIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBmb3IgYWxsIGl0ZXJhdGlvbnMuCi0gKi8KLXN0YXRpYyBkb3VibGUgCi1iZW5jaG1hcmtEZWNvZGVEYXRhU2Vjb25kc0MoaW50IG5JdGVyYXRpb25zLCBib29sIHVzZUNyeXB0bywgdWludDhfdCogZW5jb2RpbmcsIHNpemVfdCBlbmNvZGluZ0xlbmd0aCkKLXsKLSAgZG91YmxlIHN0YXJ0ID0gZ2V0Tm93U2Vjb25kcygpOwotICBmb3IgKGludCBpID0gMDsgaSA8IG5JdGVyYXRpb25zOyArK2kpIHsKLSAgICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQgbmFtZUNvbXBvbmVudHNbMTAwXTsKLSAgICBzdHJ1Y3QgbmRuX05hbWVDb21wb25lbnQga2V5TmFtZUNvbXBvbmVudHNbMTAwXTsKLSAgICBzdHJ1Y3QgbmRuX0RhdGEgZGF0YTsKLSAgICBuZG5fRGF0YV9pbml0aWFsaXplCi0gICAgICAoJmRhdGEsIG5hbWVDb21wb25lbnRzLCBzaXplb2YobmFtZUNvbXBvbmVudHMpIC8gc2l6ZW9mKG5hbWVDb21wb25lbnRzWzBdKSwgCi0gICAgICAga2V5TmFtZUNvbXBvbmVudHMsIHNpemVvZihrZXlOYW1lQ29tcG9uZW50cykgLyBzaXplb2Yoa2V5TmFtZUNvbXBvbmVudHNbMF0pKTsKLQotICAgIG5kbl9CaW5hcnlYbWxEZWNvZGVyIGRlY29kZXI7Ci0gICAgbmRuX0JpbmFyeVhtbERlY29kZXJfaW5pdGlhbGl6ZSgmZGVjb2RlciwgZW5jb2RpbmcsIGVuY29kaW5nTGVuZ3RoKTsgIAotICAgIHNpemVfdCBzaWduZWRQb3J0aW9uQmVnaW5PZmZzZXQsIHNpZ25lZFBvcnRpb25FbmRPZmZzZXQ7Ci0gICAgbmRuX0Vycm9yIGVycm9yOwotICAgIGlmICgoZXJyb3IgPSBuZG5fZGVjb2RlQmluYXJ5WG1sRGF0YSgmZGF0YSwgJnNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgJnNpZ25lZFBvcnRpb25FbmRPZmZzZXQsICZkZWNvZGVyKSkpIHsKLSAgICAgIGNvdXQgPDwgIkVycm9yIGluIG5kbl9kZWNvZGVCaW5hcnlYbWxEYXRhOiAiIDw8IG5kbl9nZXRFcnJvclN0cmluZyhlcnJvcikgPDwgZW5kbDsKLSAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICBpZiAodXNlQ3J5cHRvKSB7Ci0gICAgICBpZiAoIXZlcmlmeVJzYVNpZ25hdHVyZQotICAgICAgICAgIChlbmNvZGluZyArIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwgc2lnbmVkUG9ydGlvbkVuZE9mZnNldCAtIHNpZ25lZFBvcnRpb25CZWdpbk9mZnNldCwKLSAgICAgICAgICAgZGF0YS5zaWduYXR1cmUuc2lnbmF0dXJlLnZhbHVlLCBkYXRhLnNpZ25hdHVyZS5zaWduYXR1cmUubGVuZ3RoLAotICAgICAgICAgICBERUZBVUxUX1BVQkxJQ19LRVlfREVSLCBzaXplb2YoREVGQVVMVF9QVUJMSUNfS0VZX0RFUikpKQotICAgICAgICBjb3V0IDw8ICJTaWduYXR1cmUgdmVyaWZpY2F0aW9uOiBGQUlMRUQiIDw8IGVuZGw7Ci0gICAgfQotICB9Ci0gIGRvdWJsZSBmaW5pc2ggPSBnZXROb3dTZWNvbmRzKCk7Ci0gCi0gIHJldHVybiBmaW5pc2ggLSBzdGFydDsKLX0KLQotLyoqCi0gKiBDYWxsIGJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQ3BwIGFuZCBiZW5jaG1hcmtEZWNvZGVEYXRhU2Vjb25kc0NwcCB3aXRoIGFwcHJvcHJpYXRlIG5JbnRlcmF0aW9ucy4gIFByaW50IHRoZSAKLSAqIHJlc3VsdHMgdG8gY291dC4KLSAqIEBwYXJhbSB1c2VDb21wbGV4IFNlZSBiZW5jaG1hcmtFbmNvZGVEYXRhU2Vjb25kc0NwcC4KLSAqIEBwYXJhbSB1c2VDcnlwdG8gU2VlIGJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQ3BwIGFuZCBiZW5jaG1hcmtEZWNvZGVEYXRhU2Vjb25kc0NwcC4KLSAqLwotc3RhdGljIHZvaWQKLWJlbmNobWFya0VuY29kZURlY29kZURhdGFDcHAoYm9vbCB1c2VDb21wbGV4LCBib29sIHVzZUNyeXB0bykKLXsKLSAgQmxvY2sgZW5jb2Rpbmc7Ci0gIHsKLSAgICBpbnQgbkl0ZXJhdGlvbnMgPSB1c2VDcnlwdG8gPyAyMDAwMCA6IDIwMDAwMDsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBiZW5jaG1hcmtFbmNvZGVEYXRhU2Vjb25kc0NwcChuSXRlcmF0aW9ucywgdXNlQ29tcGxleCwgdXNlQ3J5cHRvLCBlbmNvZGluZyk7Ci0gICAgY291dCA8PCAiRW5jb2RlICIgPDwgKHVzZUNvbXBsZXggPyAiY29tcGxleCIgOiAic2ltcGxlICIpIDw8ICIgZGF0YSBDKys6IENyeXB0bz8gIiA8PCAodXNlQ3J5cHRvID8gInllcyIgOiAibm8gIikgCi0gICAgICAgICA8PCAiLCBEdXJhdGlvbiBzZWMsIEh6OiAiIDw8IGR1cmF0aW9uIDw8ICIsICIgPDwgKG5JdGVyYXRpb25zIC8gZHVyYXRpb24pIDw8IGVuZGw7ICAKLSAgfQotCi0gIEJ1ZmZlclB0ciB3aXJlID0gcHRyX2xpYjo6bWFrZV9zaGFyZWQ8QnVmZmVyPihlbmNvZGluZy53aXJlKCksIGVuY29kaW5nLnNpemUoKSk7Ci0gIHsKLSAgICBpbnQgbkl0ZXJhdGlvbnMgPSB1c2VDcnlwdG8gPyAxMDAwMCA6IDEwMDAwMDA7Ci0gICAgZG91YmxlIGR1cmF0aW9uID0gYmVuY2htYXJrRGVjb2RlRGF0YVNlY29uZHNDcHAobkl0ZXJhdGlvbnMsIHVzZUNyeXB0bywgd2lyZSk7Ci0gICAgY291dCA8PCAiRGVjb2RlICIgPDwgKHVzZUNvbXBsZXggPyAiY29tcGxleCIgOiAic2ltcGxlICIpIDw8ICIgZGF0YSBDKys6IENyeXB0bz8gIiA8PCAodXNlQ3J5cHRvID8gInllcyIgOiAibm8gIikgCi0gICAgICAgICA8PCAiLCBEdXJhdGlvbiBzZWMsIEh6OiAiIDw8IGR1cmF0aW9uIDw8ICIsICIgPDwgKG5JdGVyYXRpb25zIC8gZHVyYXRpb24pIDw8IGVuZGw7ICAKLSAgfQotfQotCi0vKioKLSAqIENhbGwgYmVuY2htYXJrRW5jb2RlRGF0YVNlY29uZHNDIGFuZCBiZW5jaG1hcmtEZWNvZGVEYXRhU2Vjb25kc0Mgd2l0aCBhcHByb3ByaWF0ZSBuSW50ZXJhdGlvbnMuICBQcmludCB0aGUgCi0gKiByZXN1bHRzIHRvIGNvdXQuCi0gKiBAcGFyYW0gdXNlQ29tcGxleCBTZWUgYmVuY2htYXJrRW5jb2RlRGF0YVNlY29uZHNDLgotICogQHBhcmFtIHVzZUNyeXB0byBTZWUgYmVuY2htYXJrRW5jb2RlRGF0YVNlY29uZHNDIGFuZCBiZW5jaG1hcmtEZWNvZGVEYXRhU2Vjb25kc0MuCi0gKi8KLXN0YXRpYyB2b2lkCi1iZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQyhib29sIHVzZUNvbXBsZXgsIGJvb2wgdXNlQ3J5cHRvKQotewotICB1aW50OF90IGVuY29kaW5nWzE1MDBdOwotICBzaXplX3QgZW5jb2RpbmdMZW5ndGg7Ci0gIHsKLSAgICBpbnQgbkl0ZXJhdGlvbnMgPSB1c2VDcnlwdG8gPyAyMDAwMCA6IDEwMDAwMDAwOwotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGJlbmNobWFya0VuY29kZURhdGFTZWNvbmRzQyhuSXRlcmF0aW9ucywgdXNlQ29tcGxleCwgdXNlQ3J5cHRvLCBlbmNvZGluZywgc2l6ZW9mKGVuY29kaW5nKSwgJmVuY29kaW5nTGVuZ3RoKTsKLSAgICBjb3V0IDw8ICJFbmNvZGUgIiA8PCAodXNlQ29tcGxleCA/ICJjb21wbGV4IiA6ICJzaW1wbGUgIikgPDwgIiBkYXRhIEM6ICAgQ3J5cHRvPyAiIDw8ICh1c2VDcnlwdG8gPyAieWVzIiA6ICJubyAiKSAKLSAgICAgICAgIDw8ICIsIER1cmF0aW9uIHNlYywgSHo6ICIgPDwgZHVyYXRpb24gPDwgIiwgIiA8PCAobkl0ZXJhdGlvbnMgLyBkdXJhdGlvbikgPDwgZW5kbDsgIAotICB9Ci0gIHsKLSAgICBpbnQgbkl0ZXJhdGlvbnMgPSB1c2VDcnlwdG8gPyAxNTAwMDAgOiAxNTAwMDAwMDsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBiZW5jaG1hcmtEZWNvZGVEYXRhU2Vjb25kc0Mobkl0ZXJhdGlvbnMsIHVzZUNyeXB0bywgZW5jb2RpbmcsIGVuY29kaW5nTGVuZ3RoKTsKLSAgICBjb3V0IDw8ICJEZWNvZGUgIiA8PCAodXNlQ29tcGxleCA/ICJjb21wbGV4IiA6ICJzaW1wbGUgIikgPDwgIiBkYXRhIEM6ICAgQ3J5cHRvPyAiIDw8ICh1c2VDcnlwdG8gPyAieWVzIiA6ICJubyAiKSAKLSAgICAgICAgIDw8ICIsIER1cmF0aW9uIHNlYywgSHo6ICIgPDwgZHVyYXRpb24gPDwgIiwgIiA8PCAobkl0ZXJhdGlvbnMgLyBkdXJhdGlvbikgPDwgZW5kbDsgIAotICB9Ci19Ci0KLWludCAKLW1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotICB0cnkgewotICAgIGJlbmNobWFya0VuY29kZURlY29kZURhdGFDcHAoZmFsc2UsIGZhbHNlKTsKLSAgICBiZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQ3BwKHRydWUsIGZhbHNlKTsKLSAgICBiZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQ3BwKGZhbHNlLCB0cnVlKTsKLSAgICBiZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQ3BwKHRydWUsIHRydWUpOwotICAgIAotICAgIGJlbmNobWFya0VuY29kZURlY29kZURhdGFDKGZhbHNlLCBmYWxzZSk7Ci0gICAgYmVuY2htYXJrRW5jb2RlRGVjb2RlRGF0YUModHJ1ZSwgZmFsc2UpOwotICAgIGJlbmNobWFya0VuY29kZURlY29kZURhdGFDKGZhbHNlLCB0cnVlKTsKLSAgICBiZW5jaG1hcmtFbmNvZGVEZWNvZGVEYXRhQyh0cnVlLCB0cnVlKTsKLSAgfSBjYXRjaCAoc3RkOjpleGNlcHRpb24mIGUpIHsKLSAgICBjb3V0IDw8ICJleGNlcHRpb246ICIgPDwgZS53aGF0KCkgPDwgZW5kbDsKLSAgfQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1ibG9jay5jcHAgYi90ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtYmxvY2suY3BwCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtYmxvY2suY3BwCnJlbmFtZSB0byB0ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtYmxvY2suY3BwCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtY2VydGlmaWNhdGUuY3BwIGIvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWNlcnRpZmljYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGEzMmJiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGVzdC1lbmNvZGUtZGVjb2RlLWNlcnRpZmljYXRlLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgorICovCisKKyNpbmNsdWRlIDxib29zdC90ZXN0L3VuaXRfdGVzdC5ocHA+CisKKyNpbmNsdWRlIDxuZG4tY3BwLWRldi9zZWN1cml0eS9jZXJ0aWZpY2F0ZS5ocHA+CisjaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkvcHVibGljLWtleS5ocHA+CisKKyNpZiBfX2NsYW5nX18KKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSIKKyNlbmRpZgorCisjaW5jbHVkZSA8Y3J5cHRvcHAvY3J5cHRsaWIuaD4KKyNpbmNsdWRlIDxjcnlwdG9wcC9yc2EuaD4KKyNpbmNsdWRlIDxjcnlwdG9wcC9maWxlcy5oPgorCisjaW5jbHVkZSA8ZnN0cmVhbT4KKyNpbmNsdWRlIDxib29zdC90ZXN0L291dHB1dF90ZXN0X3N0cmVhbS5ocHA+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3BhY2UgbmRuOworCit1c2luZyBuYW1lc3BhY2UgQ3J5cHRvUFA7CisKK0JPT1NUX0FVVE9fVEVTVF9TVUlURShUZXN0Q2VydGlmaWNhdGUpCisKK2NvbnN0IHVpbnQ4X3QgQ2VydGlmaWNhdGVSYXdbXSA9IHsKK307CisKK2NvbnN0IHVuc2lnbmVkIGNoYXIgUFJJVkFURV9LRVlfREVSW10gPSB7CisweDMwLCAweDgyLCAweDAyLCAweDc0LCAweDAyLCAweDAxLCAweDAwLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDJhLCAweDg2LCAweDQ4LCAweDg2LCAweGY3LCAweDBkLCAweDAxLCAweDAxLCAweDAxLAorMHgwNSwgMHgwMCwgMHgwNCwgMHg4MiwgMHgwMiwgMHg1ZSwgMHgzMCwgMHg4MiwgMHgwMiwgMHg1YSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHg5ZSwgMHgwNiwgMHgzZSwKKzB4NDcsIDB4ODUsIDB4YjIsIDB4MzQsIDB4MzcsIDB4YWEsIDB4ODUsIDB4NDcsIDB4YWMsIDB4MDMsIDB4MjQsIDB4ODMsIDB4YjUsIDB4OWMsIDB4YTgsIDB4MDUsIDB4M2EsIDB4MjQsIDB4MWUsIDB4ZWIsCisweDg5LCAweDAxLCAweGJiLCAweGU5LCAweDliLCAweGIyLCAweGMzLCAweDIyLCAweGFjLCAweDY4LCAweGUzLCAweGYwLCAweDZjLCAweDAyLCAweGNlLCAweDY4LCAweGE2LCAweGM0LCAweGQwLCAweGE3LAorMHgwNiwgMHg5MCwgMHg5YywgMHhhYSwgMHgxYiwgMHgwOCwgMHgxZCwgMHg4YiwgMHg0MywgMHg5YSwgMHgzMywgMHg2NywgMHg0NCwgMHg2ZCwgMHgyMSwgMHhhMywgMHgxYiwgMHg4OCwgMHg5YSwgMHg5NywKKzB4NWUsIDB4NTksIDB4YzQsIDB4MTUsIDB4MGIsIDB4ZDksIDB4MmMsIDB4YmQsIDB4NTEsIDB4MDcsIDB4NjEsIDB4ODIsIDB4YWQsIDB4YzEsIDB4YjgsIDB4ZDcsIDB4YmYsIDB4OWIsIDB4Y2YsIDB4N2QsCisweDI0LCAweGMyLCAweDYzLCAweGYzLCAweDk3LCAweDE3LCAweGViLCAweGZlLCAweDYyLCAweDI1LCAweGJhLCAweDViLCAweDRkLCAweDhhLCAweGMyLCAweDdhLCAweGJkLCAweDQzLCAweDhhLCAweDhmLAorMHhiOCwgMHhmMiwgMHhmMSwgMHhjNSwgMHg2YSwgMHgzMCwgMHhkMywgMHg1MCwgMHg4YywgMHhjOCwgMHg5YSwgMHhkZiwgMHhlZiwgMHhlZCwgMHgzNSwgMHhlNywgMHg3YSwgMHg2MiwgMHhlYSwgMHg3NiwKKzB4N2MsIDB4YmIsIDB4MDgsIDB4MjYsIDB4YzcsIDB4MDIsIDB4MDEsIDB4MTEsIDB4MDIsIDB4ODEsIDB4ODAsIDB4MDQsIDB4YTUsIDB4ZDQsIDB4YTcsIDB4YzAsIDB4MmEsIDB4ZTMsIDB4NmIsIDB4MGMsCisweDhiLCAweDczLCAweDBjLCAweDk2LCAweGFlLCAweDQwLCAweDFiLCAweGVlLCAweDA0LCAweGYxLCAweDE4LCAweDRjLCAweDViLCAweDQzLCAweDI5LCAweGFkLCAweDNhLCAweDNiLCAweDkzLCAweGEzLAorMHg2MCwgMHgxNywgMHg5YiwgMHhhOCwgMHhiYiwgMHg2OCwgMHhmNCwgMHgxZSwgMHgzMywgMHgzZiwgMHg1MCwgMHgzMiwgMHhmNywgMHgxMywgMHhmOCwgMHhhOSwgMHhlNiwgMHg3ZCwgMHg3OSwgMHg0NCwKKzB4MDAsIDB4ZGUsIDB4NzIsIDB4ZWQsIDB4ZjIsIDB4NzMsIDB4ZmEsIDB4N2IsIDB4YWUsIDB4MmEsIDB4NzEsIDB4YzAsIDB4NDAsIDB4YzgsIDB4MzcsIDB4NmYsIDB4MzgsIDB4YjIsIDB4NjksIDB4MWYsCisweGE4LCAweDgzLCAweDdiLCAweDQyLCAweDAwLCAweDczLCAweDQ2LCAweGU2LCAweDRjLCAweDkxLCAweDdmLCAweDEzLCAweDA2LCAweDY5LCAweDA2LCAweGQ4LCAweDNmLCAweDIyLCAweDE1LCAweDc1LAorMHhmNiwgMHhkZSwgMHhjZCwgMHhiMCwgMHhiYywgMHg2NiwgMHg2MSwgMHg5MSwgMHgwOCwgMHg5YiwgMHgyYiwgMHhiMiwgMHgwMCwgMHhhOSwgMHg2NywgMHgwNSwgMHgzOSwgMHg0MCwgMHhiOSwgMHgzNywKKzB4ODUsIDB4ODgsIDB4NGYsIDB4NzYsIDB4NzksIDB4NjMsIDB4YzAsIDB4ODgsIDB4M2MsIDB4ODYsIDB4YTgsIDB4MTIsIDB4OTQsIDB4NWYsIDB4ZTQsIDB4MzYsIDB4M2QsIDB4ZWEsIDB4YjksIDB4MDIsCisweDQxLCAweDAwLCAweGI2LCAweDJlLCAweGJiLCAweGNkLCAweDJmLCAweDNhLCAweDk5LCAweGUwLCAweGExLCAweGE1LCAweDQ0LCAweDc3LCAweGVhLCAweDBiLCAweGJlLCAweDE2LCAweDk1LCAweDBlLAorMHg2NCwgMHhhNywgMHg2OCwgMHhkNywgMHg0YiwgMHgxNSwgMHgxNSwgMHgyMywgMHhlMiwgMHgxZSwgMHg0ZSwgMHgwMCwgMHgyYywgMHgyMiwgMHg5NywgMHhhZSwgMHhiMCwgMHg3NCwgMHhhNiwgMHg5OSwKKzB4ZDAsIDB4NWQsIDB4YjcsIDB4MWIsIDB4MTAsIDB4MzQsIDB4MTMsIDB4ZDIsIDB4NWYsIDB4NmUsIDB4NTYsIDB4YWQsIDB4ODUsIDB4NGEsIDB4ZGIsIDB4ZjAsIDB4NzgsIDB4YmQsIDB4ZjQsIDB4OGMsCisweGI3LCAweDlhLCAweDNlLCAweDk5LCAweGVmLCAweGI5LCAweDAyLCAweDQxLCAweDAwLCAweGRlLCAweDBkLCAweGE3LCAweDQ4LCAweDc1LCAweDkwLCAweGFkLCAweDExLCAweGExLCAweGFjLCAweGVlLAorMHhjYiwgMHg0MSwgMHg4MSwgMHhjNiwgMHhjOCwgMHg3ZiwgMHhlNywgMHgyNSwgMHg5NCwgMHhhMSwgMHgyYSwgMHgyMSwgMHhhOCwgMHg1NywgMHhmZSwgMHg4NCwgMHhmMiwgMHg1ZSwgMHhiNCwgMHg5NiwKKzB4MzUsIDB4YWYsIDB4ZWYsIDB4MmUsIDB4N2EsIDB4ZjgsIDB4ZGEsIDB4M2YsIDB4YWMsIDB4OGEsIDB4M2MsIDB4MWMsIDB4OWMsIDB4YmQsIDB4NDQsIDB4ZDYsIDB4OTAsIDB4YjUsIDB4Y2UsIDB4MWIsCisweDEyLCAweGY5LCAweDNiLCAweDhjLCAweDY5LCAweGY2LCAweGE5LCAweDAyLCAweDkzLCAweDQ4LCAweDM1LCAweDBhLCAweDdmLCAweDAyLCAweDQwLCAweDZiLCAweDJhLCAweDhjLCAweDk2LCAweGQwLAorMHg3YywgMHhkMiwgMHhmYywgMHg5YiwgMHg1MiwgMHgyOCwgMHg0NiwgMHg4OSwgMHhhYywgMHg4ZCwgMHhlZiwgMHgyYSwgMHg4MCwgMHhlZiwgMHhlYSwgMHgwMSwgMHg2ZiwgMHg5NSwgMHg5MywgMHhlZSwKKzB4NTEsIDB4NTcsIDB4ZDUsIDB4OTcsIDB4NGIsIDB4NjUsIDB4NDEsIDB4ODYsIDB4NjYsIDB4YzIsIDB4MjYsIDB4ODAsIDB4MWUsIDB4M2UsIDB4NTUsIDB4M2UsIDB4ODgsIDB4NjMsIDB4ZTIsIDB4NjYsCisweDAzLCAweDQ3LCAweDMxLCAweGQ4LCAweGEyLCAweDRlLCAweDY4LCAweDQ1LCAweDI0LCAweDBhLCAweGNhLCAweDE3LCAweDYxLCAweGQ1LCAweDY5LCAweGNhLCAweDc4LCAweGFiLCAweDIxLCAweDAyLAorMHg0MSwgMHgwMCwgMHg4ZiwgMHhhZSwgMHg3YiwgMHg0ZCwgMHgwMCwgMHhjNywgMHgwNiwgMHg5MiwgMHhmMCwgMHgyNCwgMHg5YSwgMHg4MywgMHg4NCwgMHhiZCwgMHg2MiwgMHg4MSwgMHhiYywgMHgyYywKKzB4MjcsIDB4NjAsIDB4MmMsIDB4MGMsIDB4MzMsIDB4ZTUsIDB4NjYsIDB4MWQsIDB4MjgsIDB4ZDksIDB4MTAsIDB4MWEsIDB4N2YsIDB4NGYsIDB4ZWEsIDB4NGYsIDB4NzgsIDB4NmQsIDB4YjAsIDB4MTQsCisweGJmLCAweGM5LCAweGZmLCAweDE3LCAweGQ2LCAweDQ3LCAweDRkLCAweDRhLCAweGE4LCAweGY0LCAweDM5LCAweDY3LCAweDNlLCAweGIxLCAweGVjLCAweDhmLCAweGYxLCAweDcxLCAweGJkLCAweGI4LAorMHhhNywgMHg1MCwgMHgzZCwgMHhjNywgMHhmNywgMHhiYiwgMHgwMiwgMHg0MCwgMHgwZCwgMHg4NSwgMHgzMiwgMHg3MywgMHg5ZiwgMHgwYSwgMHgzMywgMHgyZiwgMHg0YiwgMHhhMiwgMHhiZCwgMHhkMSwKKzB4YjEsIDB4NDIsIDB4ZjAsIDB4NzIsIDB4YTgsIDB4N2EsIDB4YzgsIDB4MTUsIDB4MzcsIDB4MWIsIDB4ZGUsIDB4NzYsIDB4NzAsIDB4Y2UsIDB4ZmQsIDB4NjksIDB4MjAsIDB4MDAsIDB4NGQsIDB4YzksCisweDRmLCAweDM1LCAweDZmLCAweGQxLCAweDM1LCAweGExLCAweDA0LCAweDk1LCAweDMwLCAweGU4LCAweDNiLCAweGQ1LCAweDAzLCAweDVhLCAweDUwLCAweDIxLCAweDZkLCAweGEwLCAweDg0LCAweDM5LAorMHhlOSwgMHgyZSwgMHgxZSwgMHhmYywgMHhlNCwgMHg4MiwgMHg0MywgMHgyMCwgMHg0NiwgMHg3ZCwgMHgwYSwgMHhiNgorfTsKKworY29uc3QgdWludDhfdCBQVUJMSUNfS0VZW10gPSB7CisweDMwLCAweDgxLCAweDlkLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDJhLCAweDg2LCAweDQ4LCAweDg2LCAweGY3LCAweDBkLCAweDAxLCAweDAxLCAweDAxLCAweDA1LCAweDAwLCAweDAzLCAweDgxLAorMHg4YiwgMHgwMCwgMHgzMCwgMHg4MSwgMHg4NywgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHg5ZSwgMHgwNiwgMHgzZSwgMHg0NywgMHg4NSwgMHhiMiwgMHgzNCwgMHgzNywgMHhhYSwgMHg4NSwgMHg0NywKKzB4YWMsIDB4MDMsIDB4MjQsIDB4ODMsIDB4YjUsIDB4OWMsIDB4YTgsIDB4MDUsIDB4M2EsIDB4MjQsIDB4MWUsIDB4ZWIsIDB4ODksIDB4MDEsIDB4YmIsIDB4ZTksIDB4OWIsIDB4YjIsIDB4YzMsIDB4MjIsCisweGFjLCAweDY4LCAweGUzLCAweGYwLCAweDZjLCAweDAyLCAweGNlLCAweDY4LCAweGE2LCAweGM0LCAweGQwLCAweGE3LCAweDA2LCAweDkwLCAweDljLCAweGFhLCAweDFiLCAweDA4LCAweDFkLCAweDhiLAorMHg0MywgMHg5YSwgMHgzMywgMHg2NywgMHg0NCwgMHg2ZCwgMHgyMSwgMHhhMywgMHgxYiwgMHg4OCwgMHg5YSwgMHg5NywgMHg1ZSwgMHg1OSwgMHhjNCwgMHgxNSwgMHgwYiwgMHhkOSwgMHgyYywgMHhiZCwKKzB4NTEsIDB4MDcsIDB4NjEsIDB4ODIsIDB4YWQsIDB4YzEsIDB4YjgsIDB4ZDcsIDB4YmYsIDB4OWIsIDB4Y2YsIDB4N2QsIDB4MjQsIDB4YzIsIDB4NjMsIDB4ZjMsIDB4OTcsIDB4MTcsIDB4ZWIsIDB4ZmUsCisweDYyLCAweDI1LCAweGJhLCAweDViLCAweDRkLCAweDhhLCAweGMyLCAweDdhLCAweGJkLCAweDQzLCAweDhhLCAweDhmLCAweGI4LCAweGYyLCAweGYxLCAweGM1LCAweDZhLCAweDMwLCAweGQzLCAweDUwLAorMHg4YywgMHhjOCwgMHg5YSwgMHhkZiwgMHhlZiwgMHhlZCwgMHgzNSwgMHhlNywgMHg3YSwgMHg2MiwgMHhlYSwgMHg3NiwgMHg3YywgMHhiYiwgMHgwOCwgMHgyNiwgMHhjNywgMHgwMiwgMHgwMSwgMHgxMQorfTsKKworY29uc3QgdWludDhfdCBDRVJUW10gPSB7CisweDMwLCAweDgxLCAweGZmLCAweDMwLCAweDIyLCAweDE4LCAweDBmLCAweDMyLCAweDMwLCAweDMxLCAweDMzLCAweDMxLCAweDMyLCAweDMyLCAweDM2LCAweDMyLCAweDMzLCAweDMyLCAweDMyLCAweDM1LCAweDM0LCAweDVhLCAweDE4LCAweDBmLCAweDMyLCAweDMwLCAweDMxLCAweDMzLCAweDMxLCAweDMyLCAweDMyLCAweDM2LCAweDMyLCAweDMzLCAweDMyLCAweDMyLCAweDM1LCAweDM0LCAweDVhLCAweDMwLCAweDEyLCAweDMwLCAweDEwLCAweDA2LCAweDAzLCAweDU1LCAweDA0LCAweDI5LCAweDEzLCAweDA5LCAweDU0LCAweDQ1LCAweDUzLCAweDU0LCAweDIwLCAweDRlLCAweDQxLCAweDRkLCAweDQ1LCAweDMwLCAweDgxLCAweDlkLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDJhLCAweDg2LCAweDQ4LCAweDg2LCAweGY3LCAweDBkLCAweDAxLCAweDAxLCAweDAxLCAweDA1LCAweDAwLCAweDAzLCAweDgxLCAweDhiLCAweDAwLCAweDMwLCAweDgxLCAweDg3LCAweDAyLCAweDgxLCAweDgxLCAweDAwLCAweDllLCAweDA2LCAweDNlLCAweDQ3LCAweDg1LCAweGIyLCAweDM0LCAweDM3LCAweGFhLCAweDg1LCAweDQ3LCAweGFjLCAweDAzLCAweDI0LCAweDgzLCAweGI1LCAweDljLCAweGE4LCAweDA1LCAweDNhLCAweDI0LCAweDFlLCAweGViLCAweDg5LCAweDAxLCAweGJiLCAweGU5LCAweDliLCAweGIyLCAweGMzLCAweDIyLCAweGFjLCAweDY4LCAweGUzLCAweGYwLCAweDZjLCAweDAyLCAweGNlLCAweDY4LCAweGE2LCAweGM0LCAweGQwLCAweGE3LCAweDA2LCAweDkwLCAweDljLCAweGFhLCAweDFiLCAweDA4LCAweDFkLCAweDhiLCAweDQzLCAweDlhLCAweDMzLCAweDY3LCAweDQ0LCAweDZkLCAweDIxLCAweGEzLCAweDFiLCAweDg4LCAweDlhLCAweDk3LCAweDVlLCAweDU5LCAweGM0LCAweDE1LCAweDBiLCAweGQ5LCAweDJjLCAweGJkLCAweDUxLCAweDA3LCAweDYxLCAweDgyLCAweGFkLCAweGMxLCAweGI4LCAweGQ3LCAweGJmLCAweDliLCAweGNmLCAweDdkLCAweDI0LCAweGMyLCAweDYzLCAweGYzLCAweDk3LCAweDE3LCAweGViLCAweGZlLCAweDYyLCAweDI1LCAweGJhLCAweDViLCAweDRkLCAweDhhLCAweGMyLCAweDdhLCAweGJkLCAweDQzLCAweDhhLCAweDhmLCAweGI4LCAweGYyLCAweGYxLCAweGM1LCAweDZhLCAweDMwLCAweGQzLCAweDUwLCAweDhjLCAweGM4LCAweDlhLCAweGRmLCAweGVmLCAweGVkLCAweDM1LCAweGU3LCAweDdhLCAweDYyLCAweGVhLCAweDc2LCAweDdjLCAweGJiLCAweDA4LCAweDI2LCAweGM3LCAweDAyLCAweDAxLCAweDExLCAweDMwLCAweDI1LCAweDMwLCAweDIzLCAweDA2LCAweDA2LCAweDJiLCAweDA2LCAweDAxLCAweDA1LCAweDIwLCAweDAxLCAweDAxLCAweDAxLCAweGZmLCAweDA0LCAweDE2LCAweDMwLCAweDE0LCAweDA0LCAweDBjLCAweDJmLCAweDY4LCAweDY1LCAweDZjLCAweDZjLCAweDZmLCAweDJmLCAweDZiLCAweDY5LCAweDc0LCAweDc0LCAweDc5LCAweDAyLCAweDAxLCAweDAwLCAweDAyLCAweDAxLCAweDBhCit9OworCitjb25zdCBzdGQ6OnN0cmluZyBDRVJUX0lORk8gPSAiQ2VydGlmaWNhdGUgbmFtZTpcbiIKKyAgIiAgL1xuIgorICAiVmFsaWRpdHk6XG4iCisgICIgIE5vdEJlZm9yZTogMjAxMzEyMjZUMjMyMjU0LjAwMDAwMFxuIgorICAiICBOb3RBZnRlcjogMjAxMzEyMjZUMjMyMjU0LjAwMDAwMFxuIgorICAiU3ViamVjdCBEZXNjcmlwdGlvbjpcbiIKKyAgIiAgMi41LjQuNDE6IFRFU1QgTkFNRVxuIgorICAiUHVibGljIGtleSBiaXRzOlxuIgorICAiTUlHZE1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTEFEQ0Jod0tCZ1FDZUJqNUhoYkkwTjZxRlI2d0RKSU8xbktnRlxuIgorICAiT2lRZTY0a0J1K21ic3NNaXJHamo4R3dDem1pbXhOQ25CcENjcWhzSUhZdERtak5uUkcwaG94dUltcGRlV2NRVlxuIgorICAiQzlrc3ZWRUhZWUt0d2JqWHY1dlBmU1RDWS9PWEYrditZaVc2VzAyS3ducTlRNHFQdVBMeHhXb3cwMUNNeUpyZlxuIgorICAiNyswMTUzcGk2blo4dXdnbXh3SUJcbiI7CisKK0JPT1NUX0FVVE9fVEVTVF9DQVNFIChFbmNvZGUpCit7CisgIG5kbjo6Q2VydGlmaWNhdGUgYzsKKworICAvLyB2YWxpZGl0eQorICBjLnNldE5vdEJlZm9yZSgxMzg4MTAwMTc0MDAwKTsgLy8gMTIvMjYvMjAxMyBAIDExOjIycG0KKyAgYy5zZXROb3RBZnRlcigxMzg4MTAwMTc0MDAwKTsgLy8gMTIvMjYvMjAxMyBAIDExOjIycG0KKworICAvLyBzdWJqZWN0CisgIGMuYWRkU3ViamVjdERlc2NyaXB0aW9uKENlcnRpZmljYXRlU3ViamVjdERlc2NyaXB0aW9uKCIyLjUuNC40MSIsICJURVNUIE5BTUUiKSk7CisKKyAgLy8gcHVibGljS2V5SW5mbworICBuZG46OlB1YmxpY0tleSBrZXkoUFVCTElDX0tFWSwgc2l6ZW9mKFBVQkxJQ19LRVkpKTsKKyAgYy5zZXRQdWJsaWNLZXlJbmZvKGtleSk7CisKKyAgLy8gZXh0ZW5zaW9ucworICBCT09TVF9SRVFVSVJFX05PX1RIUk9XKHsKKyAgICBzdGQ6OnN0cmluZyBleHRlbnN0aW9uVmFsdWU7CisgICAgU3RyaW5nU2luayBzaW5rKGV4dGVuc3Rpb25WYWx1ZSk7CisgICAgREVSU2VxdWVuY2VFbmNvZGVyIHNlcShzaW5rKTsKKyAgICB7CisgICAgICBzdGQ6OnN0cmluZyBuYW1lKCIvaGVsbG8va2l0dHkiKTsKKyAgICAgIERFUkVuY29kZU9jdGV0U3RyaW5nKHNlcSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obmFtZS5jX3N0cigpKSwgbmFtZS5zaXplKCkpOworICAgICAgLy8gdHJ1c3RDbGFzcworICAgICAgREVSRW5jb2RlVW5zaWduZWQ8dWludDMyX3Q+KHNlcSwgMCk7CisgICAgICAvLyB0cnVzdExldmVsCisgICAgICBERVJFbmNvZGVVbnNpZ25lZDx1aW50MzJfdD4oc2VxLCAxMCk7CisgICAgfQorICAgIHNlcS5NZXNzYWdlRW5kKCk7CisgIAorICAgIGMuYWRkRXh0ZW5zaW9uKENlcnRpZmljYXRlRXh0ZW5zaW9uKCIxLjMuNi4xLjUuMzIuMSIsIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZXh0ZW5zdGlvblZhbHVlLmNfc3RyKCkpLCBleHRlbnN0aW9uVmFsdWUuc2l6ZSgpKSk7CisgIH0pOworICAvLyBSU0E6OlB1YmxpY0tleSBwOworICAvLyBTdHJpbmdTb3VyY2Ugc291cmNlKFQsIHNpemVvZihUKSwgdHJ1ZSk7CisgIC8vIHAuTG9hZChzb3VyY2UpOworCisgIEJPT1NUX1JFUVVJUkVfTk9fVEhST1coYy5lbmNvZGUoKSk7CisgIAorICAvLyBvZnN0cmVhbSBvZigiY2VydC5vdXQiKTsKKyAgLy8gb2Yud3JpdGUoKGNvbnN0IGNoYXIqKWMuZ2V0Q29udGVudCgpLnZhbHVlKCksIGMuZ2V0Q29udGVudCgpLnZhbHVlX3NpemUoKSk7CisgIAorICAvLyBjb25zdCBCbG9jayAmd2lyZSA9IGkud2lyZUVuY29kZSgpOworICBCT09TVF9SRVFVSVJFX0VRVUFMX0NPTExFQ1RJT05TKENFUlQsIENFUlQrc2l6ZW9mKENFUlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldENvbnRlbnQoKS52YWx1ZV9iZWdpbigpLCBjLmdldENvbnRlbnQoKS52YWx1ZV9lbmQoKSk7CisKKyAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zOworICBvcyA8PCBjIDw8IHN0ZDo6ZW5kbDsKKyAgc3RkOjpzdHJpbmcgaW5mbyhvcy5zdHIoKSk7CisgIEJPT1NUX1JFUVVJUkVfRVFVQUxfQ09MTEVDVElPTlMoQ0VSVF9JTkZPLmJlZ2luKCksIENFUlRfSU5GTy5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJlZ2luKCksIGluZm8uZW5kKCkpOworfQorCitjb25zdCB1bnNpZ25lZCBjaGFyIFJFQUxfQ0VSVFtdID0geworMHgzMCwgMHg4MiwgMHgwMSwgMHg2MywgMHgzMCwgMHgyMiwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzMywgMHgzMSwgMHgzMSwgMHgzMCwgMHgzMSwgMHgzMSwgMHgzNywgMHgzMSwgMHgzMSwgMHgzMiwgMHgzMiwgMHg1YSwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzNCwgMHgzMSwgMHgzMSwgMHgzMCwgMHgzMSwgMHgzMSwgMHgzNywgMHgzMSwgMHgzMSwgMHgzMiwgMHgzMiwgMHg1YSwgMHgzMCwgMHgxOSwgMHgzMCwgMHgxNywgMHgwNiwgMHgwMywgMHg1NSwgMHgwNCwgMHgyOSwgMHgxMywgMHgxMCwgMHg0ZSwgMHg0NCwgMHg0ZSwgMHgyMCwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwgMHg2MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg1MiwgMHg2ZiwgMHg2ZiwgMHg3NCwgMHgzMCwgMHg4MiwgMHgwMSwgMHgyMCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwMywgMHg4MiwgMHgwMSwgMHgwZCwgMHgwMCwgMHgzMCwgMHg4MiwgMHgwMSwgMHgwOCwgMHgwMiwgMHg4MiwgMHgwMSwgMHgwMSwgMHgwMCwgMHhkMywgMHhhYywgMHg3ZSwgMHg3YSwgMHg1YywgMHgzMywgMHg1OCwgMHgyMSwgMHhkYSwgMHhlMCwgMHg4ZCwgMHhkYiwgMHhjYSwgMHhiNiwgMHgwMiwgMHgzMCwgMHgwMiwgMHgxNSwgMHhjNSwgMHgwYSwgMHg1MSwgMHg1NCwgMHhiYiwgMHg4ZSwgMHg1ZSwgMHg5ZCwgMHgyMSwgMHhmOCwgMHgxNCwgMHhiZSwgMHhlNCwgMHg2MywgMHg2MCwgMHgzMSwgMHg1MywgMHhlMiwgMHhlZiwgMHhlZSwgMHgzNCwgMHhhMywgMHg4YywgMHhkMiwgMHgyNCwgMHg2ZiwgMHhhNCwgMHg4OSwgMHg0ZiwgMHgwMiwgMHgyMCwgMHg3ZCwgMHg2NiwgMHhiNiwgMHgzZiwgMHgxMSwgMHg0MCwgMHgwYywgMHhjMSwgMHg1ZiwgMHhkOCwgMHg0NSwgMHgyMywgMHg5NSwgMHg0MCwgMHhjOCwgMHhlMCwgMHhiYywgMHg5ZCwgMHgyZiwgMHgwMywgMHhmMSwgMHg4MywgMHg5ZiwgMHgwNywgMHgwYiwgMHg3NiwgMHhjOSwgMHgxMCwgMHhkOSwgMHgzZSwgMHgwYiwgMHg3NSwgMHgxMywgMHg5MywgMHhlOSwgMHhjOSwgMHg4NSwgMHgwMSwgMHg4OCwgMHgzNiwgMHgyZSwgMHhhYiwgMHhmYywgMHhlNiwgMHgyNCwgMHgzMiwgMHhmYywgMHhjNiwgMHgzYywgMHg0MCwgMHg5NywgMHgxYSwgMHhjYywgMHhjZCwgMHg1MywgMHhhYSwgMHgwZiwgMHhmYiwgMHhhMywgMHhmZSwgMHhmOSwgMHgyNCwgMHg3MCwgMHgxMywgMHgzZiwgMHg0ZiwgMHg1YiwgMHg3ZCwgMHg0MywgMHhhYSwgMHg3NSwgMHgwYSwgMHg5NCwgMHg3MiwgMHhhYiwgMHhlMSwgMHg4YywgMHg0NSwgMHhiNSwgMHg3OCwgMHgxMCwgMHgwMSwgMHhlZiwgMHgxZiwgMHhiMywgMHgwNSwgMHg2ZiwgMHhhNiwgMHhjMywgMHhhYywgMHg3ZiwgMHg2ZCwgMHhmMCwgMHgzMSwgMHhjNCwgMHg4MywgMHhiMywgMHg0ZiwgMHg1MCwgMHgyNiwgMHg5MiwgMHg0MCwgMHgxYSwgMHhkZCwgMHhlYywgMHhmYiwgMHhjYiwgMHhlZiwgMHg2MywgMHhmZSwgMHg0MSwgMHhkOCwgMHg4ZCwgMHgxZiwgMHhkYywgMHhlYywgMHhmYywgMHg0OCwgMHg5NSwgMHhjYywgMHgwOSwgMHgxZSwgMHgzMCwgMHg2ZSwgMHgyMiwgMHg5ZSwgMHgyNCwgMHg5NywgMHgyZSwgMHhlNiwgMHgwYywgMHhkZiwgMHgzZCwgMHgyMCwgMHgzMiwgMHhhYSwgMHg5YywgMHhjOSwgMHg0NSwgMHgxNCwgMHhhZiwgMHhhYSwgMHhmNSwgMHgxNywgMHhkMiwgMHgwMSwgMHg5OCwgMHgzMywgMHhiZSwgMHgyYSwgMHg5ZiwgMHg3YiwgMHg5ZCwgMHg5OCwgMHg3YywgMHg1NCwgMHgyMiwgMHhmZSwgMHg3MiwgMHg3MiwgMHgwNCwgMHhjMywgMHgyYywgMHhjMCwgMHgxNCwgMHgwYiwgMHhhOSwgMHg0MCwgMHg3ZSwgMHg0NiwgMHhhMSwgMHg3NSwgMHgxNiwgMHgxYSwgMHgyNywgMHg5ZSwgMHhmMiwgMHg4MiwgMHg5NiwgMHhjMCwgMHg3ZCwgMHhhZiwgMHgxOCwgMHg3NSwgMHhmYiwgMHhiYiwgMHhhYiwgMHgxNiwgMHg2NiwgMHhjMCwgMHhhOSwgMHhkNywgMHg5MywgMHg0YywgMHg0OCwgMHg2ZCwgMHhjZSwgMHgwYiwgMHg4OCwgMHhkNCwgMHgyMSwgMHg5MywgMHg4NCwgMHg4OSwgMHg1NSwgMHgwNSwgMHhkNSwgMHgwMiwgMHgwMSwgMHgxMQorfTsKKworY29uc3Qgc3RkOjpzdHJpbmcgUkVBTF9DRVJUX0lORk8gPSAiQ2VydGlmaWNhdGUgbmFtZTpcbiIKKyIgIC90bXBcbiIKKyJWYWxpZGl0eTpcbiIKKyIgIE5vdEJlZm9yZTogMjAxMzExMDFUMTcxMTIyLjAwMDAwMFxuIgorIiAgTm90QWZ0ZXI6IDIwMTQxMTAxVDE3MTEyMi4wMDAwMDBcbiIKKyJTdWJqZWN0IERlc2NyaXB0aW9uOlxuIgorIiAgMi41LjQuNDE6IE5ETiBUZXN0YmVkIFJvb3RcbiIKKyJQdWJsaWMga2V5IGJpdHM6XG4iCisiTUlJQklEQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FRMEFNSUlCQ0FLQ0FRRUEwNngrZWx3eldDSGE0STNieXJZQ1xuIgorIk1BSVZ4UXBSVkx1T1hwMGgrQlMrNUdOZ01WUGk3KzQwbzR6U0pHK2tpVThDSUgxbXRqOFJRQXpCWDloRkk1VkFcbiIKKyJ5T0M4blM4RDhZT2ZCd3QyeVJEWlBndDFFNVBweVlVQmlEWXVxL3ptSkRMOHhqeEFseHJNelZPcUQvdWovdmtrXG4iCisiY0JNL1QxdDlRNnAxQ3BSeXErR01SYlY0RUFIdkg3TUZiNmJEckg5dDhESEVnN05QVUNhU1FCcmQ3UHZMNzJQK1xuIgorIlFkaU5IOXpzL0VpVnpBa2VNRzRpbmlTWEx1WU0zejBnTXFxY3lVVVVyNnIxRjlJQm1ETytLcDk3blpoOFZDTCtcbiIKKyJjbklFd3l6QUZBdXBRSDVHb1hVV0dpZWU4b0tXd0gydkdIWDd1NnNXWnNDcDE1Tk1TRzNPQzRqVUlaT0VpVlVGXG4iCisiMVFJQlxuIjsKKworQk9PU1RfQVVUT19URVNUX0NBU0UgKERlY29kZSkKK3sKKyAgbmRuOjpEYXRhIGQoIi90bXAiKTsKKyAgZC5zZXRDb250ZW50KFJFQUxfQ0VSVCwgc2l6ZW9mKFJFQUxfQ0VSVCkpOworCisgIG5kbjo6Q2VydGlmaWNhdGUgYyhkKTsKKworICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3M7CisgIG9zIDw8IGMgPDwgc3RkOjplbmRsOworICBzdGQ6OnN0cmluZyBpbmZvKG9zLnN0cigpKTsKKyAgQk9PU1RfUkVRVUlSRV9FUVVBTF9DT0xMRUNUSU9OUyhSRUFMX0NFUlRfSU5GTy5iZWdpbigpLCBSRUFMX0NFUlRfSU5GTy5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJlZ2luKCksIGluZm8uZW5kKCkpOworfQorCitCT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EKCkKZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1kYXRhLmNwcCBiL3Rlc3RzL3Rlc3QtZW5jb2RlLWRlY29kZS1kYXRhLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHNfYm9vc3QvdGVzdC1lbmNvZGUtZGVjb2RlLWRhdGEuY3BwCnJlbmFtZSB0byB0ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtZGF0YS5jcHAKZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1mb3J3YXJkaW5nLWVudHJ5LmNwcCBiL3Rlc3RzL3Rlc3QtZW5jb2RlLWRlY29kZS1mb3J3YXJkaW5nLWVudHJ5LmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHNfYm9vc3QvdGVzdC1lbmNvZGUtZGVjb2RlLWZvcndhcmRpbmctZW50cnkuY3BwCnJlbmFtZSB0byB0ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtZm9yd2FyZGluZy1lbnRyeS5jcHAKZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1pbnRlcmVzdC5jcHAgYi90ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtaW50ZXJlc3QuY3BwCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtaW50ZXJlc3QuY3BwCnJlbmFtZSB0byB0ZXN0cy90ZXN0LWVuY29kZS1kZWNvZGUtaW50ZXJlc3QuY3BwCmRpZmYgLS1naXQgYS90ZXN0c19ib29zdC90ZXN0LWZhY2VzLmNwcCBiL3Rlc3RzL3Rlc3QtZmFjZXMuY3BwCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSB0ZXN0c19ib29zdC90ZXN0LWZhY2VzLmNwcApyZW5hbWUgdG8gdGVzdHMvdGVzdC1mYWNlcy5jcHAKZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtZ2V0LWFzeW5jLmNwcCBiL3Rlc3RzL3Rlc3QtZ2V0LWFzeW5jLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UwNGNkOC4uMDAwMDAwMAotLS0gYS90ZXN0cy90ZXN0LWdldC1hc3luYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9mYWNlLmhwcD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBuZG47Ci11c2luZyBuYW1lc3BhY2UgbmRuOjpmdW5jX2xpYjsKLSNpZiBORE5fQ1BQX0hBVkVfU1REX0ZVTkNUSU9OCi0vLyBJbiB0aGUgc3RkIGxpYnJhcnksIHRoZSBwbGFjZWhvbGRlcnMgYXJlIGluIGEgZGlmZmVyZW50IG5hbWVzcGFjZSB0aGFuIGJvb3N0LgotdXNpbmcgbmFtZXNwYWNlIGZ1bmNfbGliOjpwbGFjZWhvbGRlcnM7Ci0jZW5kaWYKLQotY2xhc3MgQ291bnRlcgotewotcHVibGljOgotICBDb3VudGVyKCkgewotICAgIGNhbGxiYWNrQ291bnRfID0gMDsKLSAgfQotCi0gIHZvaWQgb25EYXRhKGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3QgSW50ZXJlc3Q+JiBpbnRlcmVzdCwgY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxEYXRhPiYgZGF0YSkKLSAgewotICAgICsrY2FsbGJhY2tDb3VudF87Ci0gICAgY291dCA8PCAiR290IGRhdGEgcGFja2V0IHdpdGggbmFtZSAiIDw8IGRhdGEtPmdldE5hbWUoKS50b1VyaSgpIDw8IGVuZGw7Ci0gICAgLy8gY291dCA8PCBzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS0+Z2V0Q29udGVudCgpLnZhbHVlKCkpLCBkYXRhLT5nZXRDb250ZW50KCkudmFsdWVfc2l6ZSgpKSA8PCBlbmRsOwotICB9Ci0KLSAgdm9pZCBvblRpbWVvdXQoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBJbnRlcmVzdD4mIGludGVyZXN0KQotICB7Ci0gICAgKytjYWxsYmFja0NvdW50XzsKLSAgICBjb3V0IDw8ICJUaW1lIG91dCBmb3IgaW50ZXJlc3QgIiA8PCBpbnRlcmVzdC0+Z2V0TmFtZSgpLnRvVXJpKCkgPDwgZW5kbDsKLSAgfQotCi0gIGludCBjYWxsYmFja0NvdW50XzsKLX07Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAgdHJ5IHsKLSAgICBGYWNlIGZhY2U7Ci0KLSAgICAvLyBDb3VudGVyIGhvbGRzIGRhdGEgdXNlZCBieSB0aGUgY2FsbGJhY2tzLgotICAgIENvdW50ZXIgY291bnRlcjsKLQotICAgIE5hbWUgbmFtZTEoIi8lQzEuTS5TLmxvY2FsaG9zdC8lQzEuTS5TUlYvbmRuZC9LRVkiKTsKLSAgICBjb3V0IDw8ICJFeHByZXNzIG5hbWUgIiA8PCBuYW1lMS50b1VyaSgpIDw8IGVuZGw7Ci0gICAgLy8gVXNlIGJpbmQgdG8gcGFzcyB0aGUgY291bnRlciBvYmplY3QgdG8gdGhlIGNhbGxiYWNrcy4KLSAgICBmYWNlLmV4cHJlc3NJbnRlcmVzdChuYW1lMSwgYmluZCgmQ291bnRlcjo6b25EYXRhLCAmY291bnRlciwgXzEsIF8yKSwgYmluZCgmQ291bnRlcjo6b25UaW1lb3V0LCAmY291bnRlciwgXzEpKTsKLQotICAgIE5hbWUgbmFtZTIoIi9uZG54L3BpbmciKTsKLSAgICBjb3V0IDw8ICJFeHByZXNzIG5hbWUgIiA8PCBuYW1lMi50b1VyaSgpIDw8IGVuZGw7Ci0gICAgZmFjZS5leHByZXNzSW50ZXJlc3QobmFtZTIsIGJpbmQoJkNvdW50ZXI6Om9uRGF0YSwgJmNvdW50ZXIsIF8xLCBfMiksIGJpbmQoJkNvdW50ZXI6Om9uVGltZW91dCwgJmNvdW50ZXIsIF8xKSk7Ci0KLSAgICBOYW1lIG5hbWUzKCIvdGVzdC90aW1lb3V0Iik7Ci0gICAgY291dCA8PCAiRXhwcmVzcyBuYW1lICIgPDwgbmFtZTMudG9VcmkoKSA8PCBlbmRsOwotICAgIGZhY2UuZXhwcmVzc0ludGVyZXN0KG5hbWUzLCBiaW5kKCZDb3VudGVyOjpvbkRhdGEsICZjb3VudGVyLCBfMSwgXzIpLCBiaW5kKCZDb3VudGVyOjpvblRpbWVvdXQsICZjb3VudGVyLCBfMSkpOwotCi0gICAgLy8gVGhlIG1haW4gZXZlbnQgbG9vcC4KLSAgICBmYWNlLnByb2Nlc3NFdmVudHMoKTsKLQotICB9IGNhdGNoIChzdGQ6OmV4Y2VwdGlvbiYgZSkgewotICAgIGNvdXQgPDwgImV4Y2VwdGlvbjogIiA8PCBlLndoYXQoKSA8PCBlbmRsOwotICB9Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC1wdWJsaXNoLWFzeW5jLmNwcCBiL3Rlc3RzL3Rlc3QtcHVibGlzaC1hc3luYy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YTY4MGYuLjAwMDAwMDAKLS0tIGEvdGVzdHMvdGVzdC1wdWJsaXNoLWFzeW5jLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBKZWZmIFRob21wc29uIDxqZWZmdDBAcmVtYXAudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvZmFjZS5ocHA+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkva2V5LWNoYWluLmhwcD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFjZSBuZG47Ci0KLXN0YXRpYyB1aW50OF90IERFRkFVTFRfUFVCTElDX0tFWV9ERVJbXSA9IHsKLTB4MzAsIDB4ODEsIDB4OUYsIDB4MzAsIDB4MEQsIDB4MDYsIDB4MDksIDB4MkEsIDB4ODYsIDB4NDgsIDB4ODYsIDB4RjcsIDB4MEQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDUsIDB4MDAsIDB4MDMsIDB4ODEsCi0weDhELCAweDAwLCAweDMwLCAweDgxLCAweDg5LCAweDAyLCAweDgxLCAweDgxLCAweDAwLCAweEUxLCAweDdELCAweDMwLCAweEE3LCAweEQ4LCAweDI4LCAweEFCLCAweDFCLCAweDg0LCAweDBCLCAweDE3LAotMHg1NCwgMHgyRCwgMHhDQSwgMHhGNiwgMHgyMCwgMHg3QSwgMHhGRCwgMHgyMiwgMHgxRSwgMHgwOCwgMHg2QiwgMHgyQSwgMHg2MCwgMHhEMSwgMHg2QywgMHhCNywgMHhGNSwgMHg0NCwgMHg0OCwgMHhCQSwKLTB4OUYsIDB4M0YsIDB4MDgsIDB4QkMsIDB4RDAsIDB4OTksIDB4REIsIDB4MjEsIDB4REQsIDB4MTYsIDB4MkEsIDB4NzcsIDB4OUUsIDB4NjEsIDB4QUEsIDB4ODksIDB4RUUsIDB4RTUsIDB4NTQsIDB4RDMsCi0weEE0LCAweDdELCAweEUyLCAweDMwLCAweEJDLCAweDdBLCAweEM1LCAweDkwLCAweEQ1LCAweDI0LCAweDA2LCAweDdDLCAweDM4LCAweDk4LCAweEJCLCAweEE2LCAweEY1LCAweERDLCAweDQzLCAweDYwLAotMHhCOCwgMHg0NSwgMHhFRCwgMHhBNCwgMHg4QywgMHhCRCwgMHg5QywgMHhGMSwgMHgyNiwgMHhBNywgMHgyMywgMHg0NCwgMHg1RiwgMHgwRSwgMHgxOSwgMHg1MiwgMHhENywgMHgzMiwgMHg1QSwgMHg3NSwKLTB4RkEsIDB4RjUsIDB4NTYsIDB4MTQsIDB4NEYsIDB4OUEsIDB4OTgsIDB4QUYsIDB4NzEsIDB4ODYsIDB4QjAsIDB4MjcsIDB4ODYsIDB4ODUsIDB4QjgsIDB4RTIsIDB4QzAsIDB4OEIsIDB4RUEsIDB4ODcsCi0weDE3LCAweDFCLCAweDRELCAweEVFLCAweDU4LCAweDVDLCAweDE4LCAweDI4LCAweDI5LCAweDVCLCAweDUzLCAweDk1LCAweEVCLCAweDRBLCAweDE3LCAweDc3LCAweDlGLCAweDAyLCAweDAzLCAweDAxLAotMHgwMCwgMDEgIAotfTsKLQotc3RhdGljIHVpbnQ4X3QgREVGQVVMVF9QUklWQVRFX0tFWV9ERVJbXSA9IHsKLTB4MzAsIDB4ODIsIDB4MDIsIDB4NWQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MDIsIDB4ODEsIDB4ODEsIDB4MDAsIDB4ZTEsIDB4N2QsIDB4MzAsIDB4YTcsIDB4ZDgsIDB4MjgsIDB4YWIsIDB4MWIsIDB4ODQsCi0weDBiLCAweDE3LCAweDU0LCAweDJkLCAweGNhLCAweGY2LCAweDIwLCAweDdhLCAweGZkLCAweDIyLCAweDFlLCAweDA4LCAweDZiLCAweDJhLCAweDYwLCAweGQxLCAweDZjLCAweGI3LCAweGY1LCAweDQ0LAotMHg0OCwgMHhiYSwgMHg5ZiwgMHgzZiwgMHgwOCwgMHhiYywgMHhkMCwgMHg5OSwgMHhkYiwgMHgyMSwgMHhkZCwgMHgxNiwgMHgyYSwgMHg3NywgMHg5ZSwgMHg2MSwgMHhhYSwgMHg4OSwgMHhlZSwgMHhlNSwKLTB4NTQsIDB4ZDMsIDB4YTQsIDB4N2QsIDB4ZTIsIDB4MzAsIDB4YmMsIDB4N2EsIDB4YzUsIDB4OTAsIDB4ZDUsIDB4MjQsIDB4MDYsIDB4N2MsIDB4MzgsIDB4OTgsIDB4YmIsIDB4YTYsIDB4ZjUsIDB4ZGMsCi0weDQzLCAweDYwLCAweGI4LCAweDQ1LCAweGVkLCAweGE0LCAweDhjLCAweGJkLCAweDljLCAweGYxLCAweDI2LCAweGE3LCAweDIzLCAweDQ0LCAweDVmLCAweDBlLCAweDE5LCAweDUyLCAweGQ3LCAweDMyLAotMHg1YSwgMHg3NSwgMHhmYSwgMHhmNSwgMHg1NiwgMHgxNCwgMHg0ZiwgMHg5YSwgMHg5OCwgMHhhZiwgMHg3MSwgMHg4NiwgMHhiMCwgMHgyNywgMHg4NiwgMHg4NSwgMHhiOCwgMHhlMiwgMHhjMCwgMHg4YiwKLTB4ZWEsIDB4ODcsIDB4MTcsIDB4MWIsIDB4NGQsIDB4ZWUsIDB4NTgsIDB4NWMsIDB4MTgsIDB4MjgsIDB4MjksIDB4NWIsIDB4NTMsIDB4OTUsIDB4ZWIsIDB4NGEsIDB4MTcsIDB4NzcsIDB4OWYsIDB4MDIsCi0weDAzLCAweDAxLCAweDAwLCAweDAxLCAweDAyLCAweDgxLCAweDgwLCAweDFhLCAweDRiLCAweGZhLCAweDRmLCAweGE4LCAweGMyLCAweGRkLCAweDY5LCAweGExLCAweDE1LCAweDk2LCAweDBiLCAweGU4LAotMHgyNywgMHg0MiwgMHg1YSwgMHhmOSwgMHg1YywgMHhlYSwgMHgwYywgMHhhYywgMHg5OCwgMHhhYSwgMHhlMSwgMHg4ZCwgMHhhYSwgMHhlYiwgMHgyZCwgMHgzYywgMHg2MCwgMHg2YSwgMHhmYiwgMHg0NSwKLTB4NjMsIDB4YTQsIDB4NzksIDB4ODMsIDB4NjcsIDB4ZWQsIDB4ZTQsIDB4MTUsIDB4YzAsIDB4YjAsIDB4MjAsIDB4OTUsIDB4NmQsIDB4NDksIDB4MTYsIDB4YzYsIDB4NDIsIDB4MDUsIDB4NDgsIDB4YWEsCi0weGIxLCAweGE1LCAweDUzLCAweDY1LCAweGQyLCAweDAyLCAweDk5LCAweDA4LCAweGQxLCAweDg0LCAweGNjLCAweGYwLCAweGNkLCAweGVhLCAweDYxLCAweGM5LCAweDM5LCAweDAyLCAweDNmLCAweDg3LAotMHg0YSwgMHhlNSwgMHhjNCwgMHhkMiwgMHgwNywgMHgwMiwgMHhlMSwgMHg5ZiwgMHhhMCwgMHgwNiwgMHhjMiwgMHhjYywgMHgwMiwgMHhlNywgMHhhYSwgMHg2YywgMHg5OSwgMHg4YSwgMHhmOCwgMHg0OSwKLTB4MDAsIDB4ZjEsIDB4YTIsIDB4OGMsIDB4MGMsIDB4OGEsIDB4YjksIDB4NGYsIDB4NmQsIDB4NzMsIDB4M2IsIDB4MmMsIDB4YjcsIDB4OWYsIDB4OGEsIDB4YTYsIDB4N2YsIDB4OWIsIDB4OWYsIDB4YjcsCi0weGExLCAweGNjLCAweDc0LCAweDJlLCAweDhmLCAweGI4LCAweGIwLCAweDI2LCAweDg5LCAweGQyLCAweGU1LCAweDY2LCAweGU4LCAweDhlLCAweGExLCAweDAyLCAweDQxLCAweDAwLCAweGZjLCAweGU3LAotMHg1MiwgMHhiYywgMHg0ZSwgMHg5NSwgMHhiNiwgMHgxYSwgMHhiNCwgMHg2MiwgMHhjYywgMHhkOCwgMHgwNiwgMHhlMSwgMHhkYywgMHg3YSwgMHhhMiwgMHhiNiwgMHg3MSwgMHgwMSwgMHhhYSwgMHgyNywKLTB4ZmMsIDB4OTksIDB4ZTUsIDB4ZjIsIDB4NTQsIDB4YmIsIDB4YjIsIDB4ODUsIDB4ZTEsIDB4OTYsIDB4NTQsIDB4MmQsIDB4Y2IsIDB4YmEsIDB4ODYsIDB4ZmEsIDB4ODAsIDB4ZGYsIDB4Y2YsIDB4MzksCi0weGU2LCAweDc0LCAweGNiLCAweDIyLCAweGNlLCAweDcwLCAweGFhLCAweDEwLCAweDAwLCAweDczLCAweDFkLCAweDQ1LCAweDBhLCAweDM5LCAweDUxLCAweDg0LCAweGY1LCAweDE1LCAweDhmLCAweDM3LAotMHg3NiwgMHg5MSwgMHgwMiwgMHg0MSwgMHgwMCwgMHhlNCwgMHgzZiwgMHhmMCwgMHhmNCwgMHhkZSwgMHg3OSwgMHg3NywgMHg0OCwgMHg5YiwgMHg5YywgMHgyOCwgMHg0NSwgMHgyNiwgMHg1NywgMHgzYywKLTB4NzEsIDB4NDAsIDB4MjgsIDB4NmEsIDB4YTEsIDB4ZmUsIDB4YzMsIDB4ZTUsIDB4MzcsIDB4YTEsIDB4MDMsIDB4ZjYsIDB4MmQsIDB4YmUsIDB4ODAsIDB4NjQsIDB4NzIsIDB4NjksIDB4MmUsIDB4OWIsCi0weDRkLCAweGUzLCAweDJlLCAweDFiLCAweGZlLCAweGU3LCAweGY5LCAweDc3LCAweDhjLCAweDE4LCAweDUzLCAweDlmLCAweGUyLCAweGZlLCAweDAwLCAweGJiLCAweDQ5LCAweDIwLCAweDQ3LCAweGRmLAotMHgwMSwgMHg2MSwgMHg4NywgMHhkNiwgMHhlMywgMHg0NCwgMHhiNSwgMHgwMywgMHgyZiwgMHgwMiwgMHg0MCwgMHg1NCwgMHhlYywgMHg3YywgMHhiYywgMHhkZCwgMHgwYSwgMHhhYSwgMHhkZSwgMHhlNiwKLTB4YzksIDB4ZjIsIDB4OGQsIDB4NmMsIDB4MmEsIDB4MzUsIDB4ZjYsIDB4M2MsIDB4NjMsIDB4NTUsIDB4MjksIDB4NDAsIDB4ZjEsIDB4MzIsIDB4ODIsIDB4OWYsIDB4NTMsIDB4YjMsIDB4OWUsIDB4NWYsCi0weGMxLCAweDUzLCAweDUyLCAweDNlLCAweGFjLCAweDJlLCAweDI4LCAweDUxLCAweGExLCAweDE2LCAweGRiLCAweDkwLCAweGUzLCAweDk5LCAweDdlLCAweDg4LCAweGE0LCAweDA0LCAweDdjLCAweDkyLAotMHhhZSwgMHhkMiwgMHhlNywgMHhkNCwgMHhlMSwgMHg1NSwgMHgyMCwgMHg5MCwgMHgzZSwgMHgzYywgMHg2YSwgMHg2MywgMHhmMCwgMHgzNCwgMHhmMSwgMHgwMiwgMHg0MSwgMHgwMCwgMHg4NCwgMHg1YSwKLTB4MTcsIDB4NmMsIDB4YzYsIDB4M2MsIDB4ODQsIDB4ZDAsIDB4OTMsIDB4N2EsIDB4ZmYsIDB4NTYsIDB4ZTksIDB4OWUsIDB4OTgsIDB4MmIsIDB4Y2IsIDB4NWEsIDB4MjQsIDB4NGEsIDB4ZmYsIDB4MjEsCi0weGI0LCAweDllLCAweDg3LCAweDNkLCAweDc2LCAweGQ4LCAweDliLCAweGE4LCAweDczLCAweDk2LCAweDZjLCAweDJiLCAweDVjLCAweDVlLCAweGQzLCAweGE2LCAweGZmLCAweDEwLCAweGQ2LCAweDhlLAotMHhhZiwgMHhhNSwgMHg4YSwgMHhjZCwgMHhhMiwgMHhkZSwgMHhjYiwgMHgwZSwgMHhiZCwgMHg4YSwgMHhlZiwgMHhhZSwgMHhmZCwgMHgzZiwgMHgxZCwgMHhjMCwgMHhkOCwgMHhmOCwgMHgzYiwgMHhmNSwKLTB4MDIsIDB4N2QsIDB4MDIsIDB4NDEsIDB4MDAsIDB4OGIsIDB4MjYsIDB4ZDMsIDB4MmMsIDB4N2QsIDB4MjgsIDB4MzgsIDB4OTIsIDB4ZjEsIDB4YmYsIDB4MTUsIDB4MTYsIDB4MzksIDB4NTAsIDB4YzgsCi0weDZkLCAweDMyLCAweGVjLCAweDI4LCAweGYyLCAweDhiLCAweGQ4LCAweDcwLCAweGM1LCAweGVkLCAweGUxLCAweDdiLCAweGZmLCAweDJkLCAweDY2LCAweDhjLCAweDg2LCAweDc3LCAweDQzLCAweGViLAotMHhiNiwgMHhmNiwgMHg1MCwgMHg2NiwgMHhiMCwgMHg0MCwgMHgyNCwgMHg2YSwgMHhhZiwgMHg5OCwgMHgyMSwgMHg0NSwgMHgzMCwgMHgwMSwgMHg1OSwgMHhkMCwgMHhjMywgMHhmYywgMHg3YiwgMHhhZSwKLTB4MzAsIDB4MTgsIDB4ZWIsIDB4OTAsIDB4ZmIsIDB4MTcsIDB4ZDMsIDB4Y2UsIDB4YjUKLX07Ci0KLWNsYXNzIEVjaG8gewotcHVibGljOgotICBFY2hvKEtleUNoYWluSW1wbDxTZWNQdWJsaWNJbmZvTWVtb3J5LCBTZWNUcG1NZW1vcnk+ICZrZXlDaGFpbiwgRmFjZSAmZmFjZSkKLSAgICA6IGtleUNoYWluXyhrZXlDaGFpbikKLSAgICAsIGZhY2VfKGZhY2UpCi0gICAgLCByZXNwb25zZUNvdW50XygwKQotICB7IAotICB9Ci0gIAotICAvLyBvbkludGVyZXN0LgotICB2b2lkIG9wZXJhdG9yKCkKLSAgICAgKGNvbnN0IHB0cl9saWI6OnNoYXJlZF9wdHI8Y29uc3QgTmFtZT4mIHByZWZpeCwgY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBJbnRlcmVzdD4mIGludGVyZXN0KSAKLSAgewotICAgICsrcmVzcG9uc2VDb3VudF87Ci0gICAgCi0gICAgLy8gTWFrZSBhbmQgc2lnbiBhIERhdGEgcGFja2V0LgotICAgIERhdGEgZGF0YShpbnRlcmVzdC0+Z2V0TmFtZSgpKTsKLSAgICBzdHJpbmcgY29udGVudChzdHJpbmcoIkVjaG8gIikgKyBpbnRlcmVzdC0+Z2V0TmFtZSgpLnRvVXJpKCkpOwotICAgIGRhdGEuc2V0RnJlc2huZXNzUGVyaW9kKDEwMDApOwotICAgIGRhdGEuc2V0Q29udGVudCgoY29uc3QgdWludDhfdCAqKSZjb250ZW50WzBdLCBjb250ZW50LnNpemUoKSk7Ci0KLSAgICBrZXlDaGFpbl8uc2lnbihkYXRhKTsKLQotICAgIC8vIFB1dCBkYXRhIG9uIHdpcmUKLSAgICBmYWNlXy5wdXQoZGF0YSk7Ci0KLSAgICAvLyBVbnJlZ2lzdGVyIHByZWZpeCB0byBlbnN1cmUgdGhhdCB0aGUgcHJvY2Vzc2luZyB0aHJlYWQgZmluaXNoZXMgYWZ0ZXIgRGF0YQotICAgIC8vIHBhY2tldCBpcyBzZW5kIG91dCB0byB0aGUgZm9yd2FyZGVyCi0gICAgZmFjZV8udW5zZXRJbnRlcmVzdEZpbHRlcihpZF8pOwotICB9Ci0gIAotICAvLyBvblJlZ2lzdGVyRmFpbGVkLgotICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgcHRyX2xpYjo6c2hhcmVkX3B0cjxjb25zdCBOYW1lPiYgcHJlZml4KQotICB7Ci0gICAgKytyZXNwb25zZUNvdW50XzsKLSAgICBjb3V0IDw8ICJSZWdpc3RlciBmYWlsZWQgZm9yIHByZWZpeCAiIDw8IHByZWZpeC0+dG9VcmkoKSA8PCBlbmRsOwotICB9Ci0KLSAgS2V5Q2hhaW5JbXBsPFNlY1B1YmxpY0luZm9NZW1vcnksIFNlY1RwbU1lbW9yeT4gJmtleUNoYWluXzsKLSAgRmFjZSAmZmFjZV87Ci0gIGludCByZXNwb25zZUNvdW50XzsKLQotICBjb25zdCBSZWdpc3RlcmVkUHJlZml4SWQgKmlkXzsKLX07Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLXsKLSAgdHJ5IHsKLSAgICBGYWNlIGZhY2U7Ci0gICAgICAgIAotICAgIEtleUNoYWluSW1wbDxTZWNQdWJsaWNJbmZvTWVtb3J5LCBTZWNUcG1NZW1vcnk+IGtleUNoYWluOwotCi0gICAgTmFtZSBrZXlOYW1lKCIvdGVzdG5hbWUvZHNrLTEyMyIpOwotCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RvcmFnZS4KLSAgICBrZXlDaGFpbi5hZGRQdWJsaWNLZXkoa2V5TmFtZSwgS0VZX1RZUEVfUlNBLAotCQkJCSAgUHVibGljS2V5KERFRkFVTFRfUFVCTElDX0tFWV9ERVIsIHNpemVvZihERUZBVUxUX1BVQkxJQ19LRVlfREVSKSkpOwotCi0gICAga2V5Q2hhaW4uc2V0S2V5UGFpckZvcktleU5hbWUoa2V5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9QVUJMSUNfS0VZX0RFUiwgc2l6ZW9mKERFRkFVTFRfUFVCTElDX0tFWV9ERVIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1BSSVZBVEVfS0VZX0RFUiwgc2l6ZW9mKERFRkFVTFRfUFJJVkFURV9LRVlfREVSKSk7Ci0KLSAgICBrZXlDaGFpbi5hZGRDZXJ0aWZpY2F0ZUFzS2V5RGVmYXVsdCgqa2V5Q2hhaW4uc2VsZlNpZ24oa2V5TmFtZSkpOwotICAgIAotICAgCi0gICAgRWNobyBlY2hvKGtleUNoYWluLCBmYWNlKTsKLSAgICBOYW1lIHByZWZpeCgiL3Rlc3RlY2hvIik7Ci0gICAgY291dCA8PCAiUmVnaXN0ZXIgcHJlZml4ICAiIDw8IHByZWZpeC50b1VyaSgpIDw8IGVuZGw7Ci0gICAgZWNoby5pZF8gPSBmYWNlLnNldEludGVyZXN0RmlsdGVyKHByZWZpeCwgZnVuY19saWI6OnJlZihlY2hvKSwgZnVuY19saWI6OnJlZihlY2hvKSk7Ci0gICAgCi0gICAgZmFjZS5wcm9jZXNzRXZlbnRzKCk7Ci0gIH0gY2F0Y2ggKHN0ZDo6ZXhjZXB0aW9uJiBlKSB7Ci0gICAgY291dCA8PCAiZXhjZXB0aW9uOiAiIDw8IGUud2hhdCgpIDw8IGVuZGw7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LXNlYy10cG0tZmlsZS5jcHAgYi90ZXN0cy90ZXN0LXNlYy10cG0tZmlsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc0YTg0YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Rlc3Qtc2VjLXRwbS1maWxlLmNwcApAQCAtMCwwICsxLDY1IEBACisvKioKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKiBAYXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaTBAY3MudWNsYS5lZHU+CisgKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCisgKi8KKworI2lmIF9fY2xhbmdfXworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdGF1dG9sb2dpY2FsLWNvbXBhcmUiCisvLyAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorLy8gI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XcmVvcmRlciIKKy8vICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKKy8vICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKKy8vICNlbGlmIF9fR05VQ19fCisvLyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XcmVvcmRlciIKKy8vICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCisvLyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgorI2VuZGlmCisKKyNpbmNsdWRlIDxib29zdC90ZXN0L3VuaXRfdGVzdC5ocHA+CisKKyNpbmNsdWRlIDxuZG4tY3BwLWRldi9zZWN1cml0eS9rZXktY2hhaW4uaHBwPgorI2luY2x1ZGUgPGNyeXB0b3BwL3JzYS5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIG5kbjsKKworCitCT09TVF9BVVRPX1RFU1RfU1VJVEUoVGVzdFNlY1RwbUZpbGUpCisKK0JPT1NUX0FVVE9fVEVTVF9DQVNFIChTaWduVmVyaWZ5KQoreworICBTZWNUcG1GaWxlIHRwbTsKKworICBOYW1lIGtleU5hbWUoIi90bXAva3NrLTEyMzQ1NiIpOworICB0cnkgeworICAgIHRwbS5nZW5lcmF0ZUtleVBhaXJJblRwbShrZXlOYW1lLCBLRVlfVFlQRV9SU0EsIDIwNDgpOworICB9CisgIGNhdGNoKGNvbnN0IFNlY1RwbTo6RXJyb3ImKSB7CisgIH0KKyAgCisgIERhdGEgZGF0YSgiL3RtcC90ZXN0LzEiKTsKKyAgY29uc3QgdWludDhfdCBjb250ZW50W10gPSB7MHgwMSwgMHgwMiwgMHgwMywgMHgwNH07CisKKyAgQmxvY2sgc2lnQmxvY2sgPSB0cG0uc2lnbkluVHBtKGNvbnRlbnQsIHNpemVvZihjb250ZW50KSwga2V5TmFtZSwgRElHRVNUX0FMR09SSVRITV9TSEEyNTYpOworICBwdHJfbGliOjpzaGFyZWRfcHRyPFB1YmxpY0tleT4gcHVia2V5UHRyID0gdHBtLmdldFB1YmxpY0tleUZyb21UcG0oa2V5TmFtZSk7CisKKyAgeworICAgIHVzaW5nIG5hbWVzcGFjZSBDcnlwdG9QUDsKKyAgICAKKyAgICBSU0E6OlB1YmxpY0tleSBwdWJsaWNLZXk7CisgICAgQnl0ZVF1ZXVlIHF1ZXVlOworICAgIHF1ZXVlLlB1dChyZWludGVycHJldF9jYXN0PGNvbnN0IGJ5dGUqPihwdWJrZXlQdHItPmdldCgpLmJ1ZigpKSwgcHVia2V5UHRyLT5nZXQoKS5zaXplKCkpOworICAgIHB1YmxpY0tleS5Mb2FkKHF1ZXVlKTsKKworICAgIFJTQVNTPFBLQ1MxdjE1LCBTSEEyNTY+OjpWZXJpZmllciB2ZXJpZmllciAocHVibGljS2V5KTsKKyAgICBib29sIHJlc3VsdCA9IHZlcmlmaWVyLlZlcmlmeU1lc3NhZ2UoY29udGVudCwgc2l6ZW9mKGNvbnRlbnQpLAorCQkJCSAgc2lnQmxvY2sudmFsdWUoKSwgc2lnQmxvY2sudmFsdWVfc2l6ZSgpKTsKKyAgCisgICAgQk9PU1RfUkVRVUlSRV9FUVVBTChyZXN1bHQsIHRydWUpOworICB9CisKKyAgLy9XZSBzaG91bGQgcmVtb3ZlIHRoZSB0ZW1wb3JhcnkgdGVzdCBrZXksIHRoaXMgc2hvdWxkIGJlIGZpeGVkIGluIGEgbGF0ZXIgY29tbWl0IHdoaWNoIHdpbGwgYWRkIGRlbGV0ZSBvcGVyYXRpb24gaW4gU2VjVHBtLgorfQorCitCT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EKCkKZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtdGltZS5jcHAgYi90ZXN0cy90ZXN0LXRpbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNzdmYmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy90ZXN0LXRpbWUuY3BwCkBAIC0wLDAgKzEsMjMgQEAKKy8qKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KKyAqIFNlZSBDT1BZSU5HIGZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvcm1hdGlvbi4KKyAqLworCisjaW5jbHVkZSA8Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwPgorCisjaW5jbHVkZSA8Li4vc3JjL3V0aWwvdGltZS5ocHA+CisKK0JPT1NUX0FVVE9fVEVTVF9TVUlURShUZXN0VGltZSkKKworQk9PU1RfQVVUT19URVNUX0NBU0UgKFNpbXBsZSkKK3sKKyAgbmRuOjpNaWxsaXNlY29uZHNTaW5jZTE5NzAgdmFsdWUgPSBuZG46OmdldE5vd01pbGxpc2Vjb25kcygpOworICBCT09TVF9DSEVDS19HVCh2YWx1ZSwgMTM5MDk2Njk2NzAzMik7CisKKyAgQk9PU1RfQ0hFQ0tfRVFVQUwobmRuOjp0b0lzb1N0cmluZygxMzkwOTY2OTY3MDMyKSwgIjIwMTQwMTI5VDAzNDI0Ny4wMzIwMDAiKTsKKyAgQk9PU1RfQ0hFQ0tfRVFVQUwobmRuOjpmcm9tSXNvU3RyaW5nKCIyMDE0MDEyOVQwMzQyNDcuMDMyMDAwIiksIDEzOTA5NjY5NjcwMzIpOworCisgIEJPT1NUX0NIRUNLX0VRVUFMKG5kbjo6ZnJvbUlzb1N0cmluZygiMjAxNDAxMjlUMDM0MjQ3LjAzMjAwMFoiKSwgMTM5MDk2Njk2NzAzMik7Cit9CisKK0JPT1NUX0FVVE9fVEVTVF9TVUlURV9FTkQoKQpkaWZmIC0tZ2l0IGEvdGVzdHMvd3NjcmlwdCBiL3Rlc3RzL3dzY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzYzAzMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3dzY3JpcHQKQEAgLTAsMCArMSwxMiBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorCit0b3AgPSAnLi4nCisKK2RlZiBidWlsZChibGQpOgorICAgIHVuaXR0ZXN0cyA9IGJsZC5wcm9ncmFtICgKKyAgICAgICAgdGFyZ2V0PSJ1bml0LXRlc3RzIiwKKyAgICAgICAgZmVhdHVyZXMgPSAiY3h4IGN4eHByb2dyYW0iLAorICAgICAgICBzb3VyY2UgPSBibGQucGF0aC5hbnRfZ2xvYihbJyoqLyouY3BwJ10pLAorICAgICAgICB1c2UgPSAnbmRuLWNwcC1kZXYnLAorICAgICAgICBpbnN0YWxsX3ByZWZpeCA9IE5vbmUsCisgICAgICAgICkKZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L01ha2VmaWxlLmFtIGIvdGVzdHNfYm9vc3QvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlODA2MTMuLjAwMDAwMDAKLS0tIGEvdGVzdHNfYm9vc3QvTWFrZWZpbGUuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0KLW5vaW5zdF9QUk9HUkFNUz11bml0LXRlc3RzCi0KLSMgZm9yIGkgaW4gYGZpbmQgLiAtbmFtZSAnKi5jcHAnYDsgZG8gZWNobyAiICAkaSBcXCI7IGRvbmUKLXVuaXRfdGVzdHNfU09VUkNFUyA9IFwKLSAgbWFpbi5jcHAgXAotICB0ZXN0LWVuY29kZS1kZWNvZGUtY2VydGlmaWNhdGUuY3BwIFwKLSAgdGVzdC1lbmNvZGUtZGVjb2RlLWRhdGEuY3BwIFwKLSAgdGVzdC1lbmNvZGUtZGVjb2RlLWludGVyZXN0LmNwcCBcCi0gIHRlc3QtZW5jb2RlLWRlY29kZS1mb3J3YXJkaW5nLWVudHJ5LmNwcCBcCi0gIHRlc3QtZW5jb2RlLWRlY29kZS1ibG9jay5jcHAgXAotICB0ZXN0LXNlYy10cG0tZmlsZS5jcHAgXAotICB0ZXN0LWZhY2VzLmNwcAotCi11bml0X3Rlc3RzX0xEQUREID0gLi4vbGlibmRuLWNwcC1kZXYubGEgQEJPT1NUX1NZU1RFTV9MSUJAIEBCT09TVF9VTklUX1RFU1RfRlJBTUVXT1JLX0xJQkAgQE9QRU5TU0xfTElCU0AgQENSWVBUT1BQX0xJQlNAIEBPU1hfU0VDVVJJVFlfTElCU0AKZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1jZXJ0aWZpY2F0ZS5jcHAgYi90ZXN0c19ib29zdC90ZXN0LWVuY29kZS1kZWNvZGUtY2VydGlmaWNhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGYwMTU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzX2Jvb3N0L3Rlc3QtZW5jb2RlLWRlY29kZS1jZXJ0aWZpY2F0ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgotICogQGF1dGhvcjogSmVmZiBUaG9tcHNvbiA8amVmZnQwQHJlbWFwLnVjbGEuZWR1PgotICogU2VlIENPUFlJTkcgZm9yIGNvcHlyaWdodCBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxib29zdC90ZXN0L3VuaXRfdGVzdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9zZWN1cml0eS9jZXJ0aWZpY2F0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuLWNwcC1kZXYvc2VjdXJpdHkvcHVibGljLWtleS5ocHA+Ci0KLSNpZiBfX2NsYW5nX18KLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSIKLSNlbmRpZgotCi0jaW5jbHVkZSA8Y3J5cHRvcHAvY3J5cHRsaWIuaD4KLSNpbmNsdWRlIDxjcnlwdG9wcC9yc2EuaD4KLSNpbmNsdWRlIDxjcnlwdG9wcC9maWxlcy5oPgotCi0jaW5jbHVkZSA8ZnN0cmVhbT4KLSNpbmNsdWRlIDxib29zdC90ZXN0L291dHB1dF90ZXN0X3N0cmVhbS5ocHA+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgbmRuOwotCi11c2luZyBuYW1lc3BhY2UgQ3J5cHRvUFA7Ci0KLUJPT1NUX0FVVE9fVEVTVF9TVUlURShUZXN0Q2VydGlmaWNhdGUpCi0KLWNvbnN0IHVpbnQ4X3QgQ2VydGlmaWNhdGVSYXdbXSA9IHsKLX07Ci0KLWNvbnN0IHVuc2lnbmVkIGNoYXIgUFJJVkFURV9LRVlfREVSW10gPSB7Ci0weDMwLCAweDgyLCAweDAyLCAweDc0LCAweDAyLCAweDAxLCAweDAwLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDJhLCAweDg2LCAweDQ4LCAweDg2LCAweGY3LCAweDBkLCAweDAxLCAweDAxLCAweDAxLAotMHgwNSwgMHgwMCwgMHgwNCwgMHg4MiwgMHgwMiwgMHg1ZSwgMHgzMCwgMHg4MiwgMHgwMiwgMHg1YSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHg5ZSwgMHgwNiwgMHgzZSwKLTB4NDcsIDB4ODUsIDB4YjIsIDB4MzQsIDB4MzcsIDB4YWEsIDB4ODUsIDB4NDcsIDB4YWMsIDB4MDMsIDB4MjQsIDB4ODMsIDB4YjUsIDB4OWMsIDB4YTgsIDB4MDUsIDB4M2EsIDB4MjQsIDB4MWUsIDB4ZWIsCi0weDg5LCAweDAxLCAweGJiLCAweGU5LCAweDliLCAweGIyLCAweGMzLCAweDIyLCAweGFjLCAweDY4LCAweGUzLCAweGYwLCAweDZjLCAweDAyLCAweGNlLCAweDY4LCAweGE2LCAweGM0LCAweGQwLCAweGE3LAotMHgwNiwgMHg5MCwgMHg5YywgMHhhYSwgMHgxYiwgMHgwOCwgMHgxZCwgMHg4YiwgMHg0MywgMHg5YSwgMHgzMywgMHg2NywgMHg0NCwgMHg2ZCwgMHgyMSwgMHhhMywgMHgxYiwgMHg4OCwgMHg5YSwgMHg5NywKLTB4NWUsIDB4NTksIDB4YzQsIDB4MTUsIDB4MGIsIDB4ZDksIDB4MmMsIDB4YmQsIDB4NTEsIDB4MDcsIDB4NjEsIDB4ODIsIDB4YWQsIDB4YzEsIDB4YjgsIDB4ZDcsIDB4YmYsIDB4OWIsIDB4Y2YsIDB4N2QsCi0weDI0LCAweGMyLCAweDYzLCAweGYzLCAweDk3LCAweDE3LCAweGViLCAweGZlLCAweDYyLCAweDI1LCAweGJhLCAweDViLCAweDRkLCAweDhhLCAweGMyLCAweDdhLCAweGJkLCAweDQzLCAweDhhLCAweDhmLAotMHhiOCwgMHhmMiwgMHhmMSwgMHhjNSwgMHg2YSwgMHgzMCwgMHhkMywgMHg1MCwgMHg4YywgMHhjOCwgMHg5YSwgMHhkZiwgMHhlZiwgMHhlZCwgMHgzNSwgMHhlNywgMHg3YSwgMHg2MiwgMHhlYSwgMHg3NiwKLTB4N2MsIDB4YmIsIDB4MDgsIDB4MjYsIDB4YzcsIDB4MDIsIDB4MDEsIDB4MTEsIDB4MDIsIDB4ODEsIDB4ODAsIDB4MDQsIDB4YTUsIDB4ZDQsIDB4YTcsIDB4YzAsIDB4MmEsIDB4ZTMsIDB4NmIsIDB4MGMsCi0weDhiLCAweDczLCAweDBjLCAweDk2LCAweGFlLCAweDQwLCAweDFiLCAweGVlLCAweDA0LCAweGYxLCAweDE4LCAweDRjLCAweDViLCAweDQzLCAweDI5LCAweGFkLCAweDNhLCAweDNiLCAweDkzLCAweGEzLAotMHg2MCwgMHgxNywgMHg5YiwgMHhhOCwgMHhiYiwgMHg2OCwgMHhmNCwgMHgxZSwgMHgzMywgMHgzZiwgMHg1MCwgMHgzMiwgMHhmNywgMHgxMywgMHhmOCwgMHhhOSwgMHhlNiwgMHg3ZCwgMHg3OSwgMHg0NCwKLTB4MDAsIDB4ZGUsIDB4NzIsIDB4ZWQsIDB4ZjIsIDB4NzMsIDB4ZmEsIDB4N2IsIDB4YWUsIDB4MmEsIDB4NzEsIDB4YzAsIDB4NDAsIDB4YzgsIDB4MzcsIDB4NmYsIDB4MzgsIDB4YjIsIDB4NjksIDB4MWYsCi0weGE4LCAweDgzLCAweDdiLCAweDQyLCAweDAwLCAweDczLCAweDQ2LCAweGU2LCAweDRjLCAweDkxLCAweDdmLCAweDEzLCAweDA2LCAweDY5LCAweDA2LCAweGQ4LCAweDNmLCAweDIyLCAweDE1LCAweDc1LAotMHhmNiwgMHhkZSwgMHhjZCwgMHhiMCwgMHhiYywgMHg2NiwgMHg2MSwgMHg5MSwgMHgwOCwgMHg5YiwgMHgyYiwgMHhiMiwgMHgwMCwgMHhhOSwgMHg2NywgMHgwNSwgMHgzOSwgMHg0MCwgMHhiOSwgMHgzNywKLTB4ODUsIDB4ODgsIDB4NGYsIDB4NzYsIDB4NzksIDB4NjMsIDB4YzAsIDB4ODgsIDB4M2MsIDB4ODYsIDB4YTgsIDB4MTIsIDB4OTQsIDB4NWYsIDB4ZTQsIDB4MzYsIDB4M2QsIDB4ZWEsIDB4YjksIDB4MDIsCi0weDQxLCAweDAwLCAweGI2LCAweDJlLCAweGJiLCAweGNkLCAweDJmLCAweDNhLCAweDk5LCAweGUwLCAweGExLCAweGE1LCAweDQ0LCAweDc3LCAweGVhLCAweDBiLCAweGJlLCAweDE2LCAweDk1LCAweDBlLAotMHg2NCwgMHhhNywgMHg2OCwgMHhkNywgMHg0YiwgMHgxNSwgMHgxNSwgMHgyMywgMHhlMiwgMHgxZSwgMHg0ZSwgMHgwMCwgMHgyYywgMHgyMiwgMHg5NywgMHhhZSwgMHhiMCwgMHg3NCwgMHhhNiwgMHg5OSwKLTB4ZDAsIDB4NWQsIDB4YjcsIDB4MWIsIDB4MTAsIDB4MzQsIDB4MTMsIDB4ZDIsIDB4NWYsIDB4NmUsIDB4NTYsIDB4YWQsIDB4ODUsIDB4NGEsIDB4ZGIsIDB4ZjAsIDB4NzgsIDB4YmQsIDB4ZjQsIDB4OGMsCi0weGI3LCAweDlhLCAweDNlLCAweDk5LCAweGVmLCAweGI5LCAweDAyLCAweDQxLCAweDAwLCAweGRlLCAweDBkLCAweGE3LCAweDQ4LCAweDc1LCAweDkwLCAweGFkLCAweDExLCAweGExLCAweGFjLCAweGVlLAotMHhjYiwgMHg0MSwgMHg4MSwgMHhjNiwgMHhjOCwgMHg3ZiwgMHhlNywgMHgyNSwgMHg5NCwgMHhhMSwgMHgyYSwgMHgyMSwgMHhhOCwgMHg1NywgMHhmZSwgMHg4NCwgMHhmMiwgMHg1ZSwgMHhiNCwgMHg5NiwKLTB4MzUsIDB4YWYsIDB4ZWYsIDB4MmUsIDB4N2EsIDB4ZjgsIDB4ZGEsIDB4M2YsIDB4YWMsIDB4OGEsIDB4M2MsIDB4MWMsIDB4OWMsIDB4YmQsIDB4NDQsIDB4ZDYsIDB4OTAsIDB4YjUsIDB4Y2UsIDB4MWIsCi0weDEyLCAweGY5LCAweDNiLCAweDhjLCAweDY5LCAweGY2LCAweGE5LCAweDAyLCAweDkzLCAweDQ4LCAweDM1LCAweDBhLCAweDdmLCAweDAyLCAweDQwLCAweDZiLCAweDJhLCAweDhjLCAweDk2LCAweGQwLAotMHg3YywgMHhkMiwgMHhmYywgMHg5YiwgMHg1MiwgMHgyOCwgMHg0NiwgMHg4OSwgMHhhYywgMHg4ZCwgMHhlZiwgMHgyYSwgMHg4MCwgMHhlZiwgMHhlYSwgMHgwMSwgMHg2ZiwgMHg5NSwgMHg5MywgMHhlZSwKLTB4NTEsIDB4NTcsIDB4ZDUsIDB4OTcsIDB4NGIsIDB4NjUsIDB4NDEsIDB4ODYsIDB4NjYsIDB4YzIsIDB4MjYsIDB4ODAsIDB4MWUsIDB4M2UsIDB4NTUsIDB4M2UsIDB4ODgsIDB4NjMsIDB4ZTIsIDB4NjYsCi0weDAzLCAweDQ3LCAweDMxLCAweGQ4LCAweGEyLCAweDRlLCAweDY4LCAweDQ1LCAweDI0LCAweDBhLCAweGNhLCAweDE3LCAweDYxLCAweGQ1LCAweDY5LCAweGNhLCAweDc4LCAweGFiLCAweDIxLCAweDAyLAotMHg0MSwgMHgwMCwgMHg4ZiwgMHhhZSwgMHg3YiwgMHg0ZCwgMHgwMCwgMHhjNywgMHgwNiwgMHg5MiwgMHhmMCwgMHgyNCwgMHg5YSwgMHg4MywgMHg4NCwgMHhiZCwgMHg2MiwgMHg4MSwgMHhiYywgMHgyYywKLTB4MjcsIDB4NjAsIDB4MmMsIDB4MGMsIDB4MzMsIDB4ZTUsIDB4NjYsIDB4MWQsIDB4MjgsIDB4ZDksIDB4MTAsIDB4MWEsIDB4N2YsIDB4NGYsIDB4ZWEsIDB4NGYsIDB4NzgsIDB4NmQsIDB4YjAsIDB4MTQsCi0weGJmLCAweGM5LCAweGZmLCAweDE3LCAweGQ2LCAweDQ3LCAweDRkLCAweDRhLCAweGE4LCAweGY0LCAweDM5LCAweDY3LCAweDNlLCAweGIxLCAweGVjLCAweDhmLCAweGYxLCAweDcxLCAweGJkLCAweGI4LAotMHhhNywgMHg1MCwgMHgzZCwgMHhjNywgMHhmNywgMHhiYiwgMHgwMiwgMHg0MCwgMHgwZCwgMHg4NSwgMHgzMiwgMHg3MywgMHg5ZiwgMHgwYSwgMHgzMywgMHgyZiwgMHg0YiwgMHhhMiwgMHhiZCwgMHhkMSwKLTB4YjEsIDB4NDIsIDB4ZjAsIDB4NzIsIDB4YTgsIDB4N2EsIDB4YzgsIDB4MTUsIDB4MzcsIDB4MWIsIDB4ZGUsIDB4NzYsIDB4NzAsIDB4Y2UsIDB4ZmQsIDB4NjksIDB4MjAsIDB4MDAsIDB4NGQsIDB4YzksCi0weDRmLCAweDM1LCAweDZmLCAweGQxLCAweDM1LCAweGExLCAweDA0LCAweDk1LCAweDMwLCAweGU4LCAweDNiLCAweGQ1LCAweDAzLCAweDVhLCAweDUwLCAweDIxLCAweDZkLCAweGEwLCAweDg0LCAweDM5LAotMHhlOSwgMHgyZSwgMHgxZSwgMHhmYywgMHhlNCwgMHg4MiwgMHg0MywgMHgyMCwgMHg0NiwgMHg3ZCwgMHgwYSwgMHhiNgotfTsKLQotY29uc3QgdWludDhfdCBQVUJMSUNfS0VZW10gPSB7Ci0weDMwLCAweDgxLCAweDlkLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDJhLCAweDg2LCAweDQ4LCAweDg2LCAweGY3LCAweDBkLCAweDAxLCAweDAxLCAweDAxLCAweDA1LCAweDAwLCAweDAzLCAweDgxLAotMHg4YiwgMHgwMCwgMHgzMCwgMHg4MSwgMHg4NywgMHgwMiwgMHg4MSwgMHg4MSwgMHgwMCwgMHg5ZSwgMHgwNiwgMHgzZSwgMHg0NywgMHg4NSwgMHhiMiwgMHgzNCwgMHgzNywgMHhhYSwgMHg4NSwgMHg0NywKLTB4YWMsIDB4MDMsIDB4MjQsIDB4ODMsIDB4YjUsIDB4OWMsIDB4YTgsIDB4MDUsIDB4M2EsIDB4MjQsIDB4MWUsIDB4ZWIsIDB4ODksIDB4MDEsIDB4YmIsIDB4ZTksIDB4OWIsIDB4YjIsIDB4YzMsIDB4MjIsCi0weGFjLCAweDY4LCAweGUzLCAweGYwLCAweDZjLCAweDAyLCAweGNlLCAweDY4LCAweGE2LCAweGM0LCAweGQwLCAweGE3LCAweDA2LCAweDkwLCAweDljLCAweGFhLCAweDFiLCAweDA4LCAweDFkLCAweDhiLAotMHg0MywgMHg5YSwgMHgzMywgMHg2NywgMHg0NCwgMHg2ZCwgMHgyMSwgMHhhMywgMHgxYiwgMHg4OCwgMHg5YSwgMHg5NywgMHg1ZSwgMHg1OSwgMHhjNCwgMHgxNSwgMHgwYiwgMHhkOSwgMHgyYywgMHhiZCwKLTB4NTEsIDB4MDcsIDB4NjEsIDB4ODIsIDB4YWQsIDB4YzEsIDB4YjgsIDB4ZDcsIDB4YmYsIDB4OWIsIDB4Y2YsIDB4N2QsIDB4MjQsIDB4YzIsIDB4NjMsIDB4ZjMsIDB4OTcsIDB4MTcsIDB4ZWIsIDB4ZmUsCi0weDYyLCAweDI1LCAweGJhLCAweDViLCAweDRkLCAweDhhLCAweGMyLCAweDdhLCAweGJkLCAweDQzLCAweDhhLCAweDhmLCAweGI4LCAweGYyLCAweGYxLCAweGM1LCAweDZhLCAweDMwLCAweGQzLCAweDUwLAotMHg4YywgMHhjOCwgMHg5YSwgMHhkZiwgMHhlZiwgMHhlZCwgMHgzNSwgMHhlNywgMHg3YSwgMHg2MiwgMHhlYSwgMHg3NiwgMHg3YywgMHhiYiwgMHgwOCwgMHgyNiwgMHhjNywgMHgwMiwgMHgwMSwgMHgxMQotfTsKLQotY29uc3QgdWludDhfdCBDRVJUW10gPSB7Ci0weDMwLCAweDgxLCAweGZmLCAweDMwLCAweDIyLCAweDE4LCAweDBmLCAweDMyLCAweDMwLCAweDMxLCAweDMzLCAweDMxLCAweDMyLCAweDMyLCAweDM2LCAweDMyLCAweDMzLCAweDMyLCAweDMyLCAweDM1LCAweDM0LCAweDVhLCAweDE4LCAweDBmLCAweDMyLCAweDMwLCAweDMxLCAweDMzLCAweDMxLCAweDMyLCAweDMyLCAweDM2LCAweDMyLCAweDMzLCAweDMyLCAweDMyLCAweDM1LCAweDM0LCAweDVhLCAweDMwLCAweDEyLCAweDMwLCAweDEwLCAweDA2LCAweDAzLCAweDU1LCAweDA0LCAweDI5LCAweDEzLCAweDA5LCAweDU0LCAweDQ1LCAweDUzLCAweDU0LCAweDIwLCAweDRlLCAweDQxLCAweDRkLCAweDQ1LCAweDMwLCAweDgxLCAweDlkLCAweDMwLCAweDBkLCAweDA2LCAweDA5LCAweDJhLCAweDg2LCAweDQ4LCAweDg2LCAweGY3LCAweDBkLCAweDAxLCAweDAxLCAweDAxLCAweDA1LCAweDAwLCAweDAzLCAweDgxLCAweDhiLCAweDAwLCAweDMwLCAweDgxLCAweDg3LCAweDAyLCAweDgxLCAweDgxLCAweDAwLCAweDllLCAweDA2LCAweDNlLCAweDQ3LCAweDg1LCAweGIyLCAweDM0LCAweDM3LCAweGFhLCAweDg1LCAweDQ3LCAweGFjLCAweDAzLCAweDI0LCAweDgzLCAweGI1LCAweDljLCAweGE4LCAweDA1LCAweDNhLCAweDI0LCAweDFlLCAweGViLCAweDg5LCAweDAxLCAweGJiLCAweGU5LCAweDliLCAweGIyLCAweGMzLCAweDIyLCAweGFjLCAweDY4LCAweGUzLCAweGYwLCAweDZjLCAweDAyLCAweGNlLCAweDY4LCAweGE2LCAweGM0LCAweGQwLCAweGE3LCAweDA2LCAweDkwLCAweDljLCAweGFhLCAweDFiLCAweDA4LCAweDFkLCAweDhiLCAweDQzLCAweDlhLCAweDMzLCAweDY3LCAweDQ0LCAweDZkLCAweDIxLCAweGEzLCAweDFiLCAweDg4LCAweDlhLCAweDk3LCAweDVlLCAweDU5LCAweGM0LCAweDE1LCAweDBiLCAweGQ5LCAweDJjLCAweGJkLCAweDUxLCAweDA3LCAweDYxLCAweDgyLCAweGFkLCAweGMxLCAweGI4LCAweGQ3LCAweGJmLCAweDliLCAweGNmLCAweDdkLCAweDI0LCAweGMyLCAweDYzLCAweGYzLCAweDk3LCAweDE3LCAweGViLCAweGZlLCAweDYyLCAweDI1LCAweGJhLCAweDViLCAweDRkLCAweDhhLCAweGMyLCAweDdhLCAweGJkLCAweDQzLCAweDhhLCAweDhmLCAweGI4LCAweGYyLCAweGYxLCAweGM1LCAweDZhLCAweDMwLCAweGQzLCAweDUwLCAweDhjLCAweGM4LCAweDlhLCAweGRmLCAweGVmLCAweGVkLCAweDM1LCAweGU3LCAweDdhLCAweDYyLCAweGVhLCAweDc2LCAweDdjLCAweGJiLCAweDA4LCAweDI2LCAweGM3LCAweDAyLCAweDAxLCAweDExLCAweDMwLCAweDI1LCAweDMwLCAweDIzLCAweDA2LCAweDA2LCAweDJiLCAweDA2LCAweDAxLCAweDA1LCAweDIwLCAweDAxLCAweDAxLCAweDAxLCAweGZmLCAweDA0LCAweDE2LCAweDMwLCAweDE0LCAweDA0LCAweDBjLCAweDJmLCAweDY4LCAweDY1LCAweDZjLCAweDZjLCAweDZmLCAweDJmLCAweDZiLCAweDY5LCAweDc0LCAweDc0LCAweDc5LCAweDAyLCAweDAxLCAweDAwLCAweDAyLCAweDAxLCAweDBhCi19OwotCi1jb25zdCBzdGQ6OnN0cmluZyBDRVJUX0lORk8gPSAiQ2VydGlmaWNhdGUgbmFtZTpcbiIKLSAgIiAgL1xuIgotICAiVmFsaWRpdHk6XG4iCi0gICIgIE5vdEJlZm9yZTogMjAxMzEyMjZUMjMyMjU0LjAwMDAwMFxuIgotICAiICBOb3RBZnRlcjogMjAxMzEyMjZUMjMyMjU0LjAwMDAwMFxuIgotICAiU3ViamVjdCBEZXNjcmlwdGlvbjpcbiIKLSAgIiAgMi41LjQuNDE6IFRFU1QgTkFNRVxuIgotICAiUHVibGljIGtleSBiaXRzOlxuIgotICAiTUlHZE1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTEFEQ0Jod0tCZ1FDZUJqNUhoYkkwTjZxRlI2d0RKSU8xbktnRlxuIgotICAiT2lRZTY0a0J1K21ic3NNaXJHamo4R3dDem1pbXhOQ25CcENjcWhzSUhZdERtak5uUkcwaG94dUltcGRlV2NRVlxuIgotICAiQzlrc3ZWRUhZWUt0d2JqWHY1dlBmU1RDWS9PWEYrditZaVc2VzAyS3ducTlRNHFQdVBMeHhXb3cwMUNNeUpyZlxuIgotICAiNyswMTUzcGk2blo4dXdnbXh3SUJcbiI7Ci0KLUJPT1NUX0FVVE9fVEVTVF9DQVNFIChFbmNvZGUpCi17Ci0gIG5kbjo6Q2VydGlmaWNhdGUgYzsKLQotICAvLyB2YWxpZGl0eQotICBjLnNldE5vdEJlZm9yZSgxMzg4MTAwMTc0MDAwKTsgLy8gMTIvMjYvMjAxMyBAIDExOjIycG0KLSAgYy5zZXROb3RBZnRlcigxMzg4MTAwMTc0MDAwKTsgLy8gMTIvMjYvMjAxMyBAIDExOjIycG0KLQotICAvLyBzdWJqZWN0Ci0gIGMuYWRkU3ViamVjdERlc2NyaXB0aW9uKENlcnRpZmljYXRlU3ViamVjdERlc2NyaXB0aW9uKCIyLjUuNC40MSIsICJURVNUIE5BTUUiKSk7Ci0KLSAgLy8gcHVibGljS2V5SW5mbwotICBuZG46OlB1YmxpY0tleSBrZXkoUFVCTElDX0tFWSwgc2l6ZW9mKFBVQkxJQ19LRVkpKTsKLSAgYy5zZXRQdWJsaWNLZXlJbmZvKGtleSk7Ci0KLSAgLy8gZXh0ZW5zaW9ucwotICBCT09TVF9SRVFVSVJFX05PX1RIUk9XKHsKLSAgICBzdGQ6OnN0cmluZyBleHRlbnN0aW9uVmFsdWU7Ci0gICAgU3RyaW5nU2luayBzaW5rKGV4dGVuc3Rpb25WYWx1ZSk7Ci0gICAgREVSU2VxdWVuY2VFbmNvZGVyIHNlcShzaW5rKTsKLSAgICB7Ci0gICAgICBzdGQ6OnN0cmluZyBuYW1lKCIvaGVsbG8va2l0dHkiKTsKLSAgICAgIERFUkVuY29kZU9jdGV0U3RyaW5nKHNlcSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obmFtZS5jX3N0cigpKSwgbmFtZS5zaXplKCkpOwotICAgICAgLy8gdHJ1c3RDbGFzcwotICAgICAgREVSRW5jb2RlVW5zaWduZWQ8dWludDMyX3Q+KHNlcSwgMCk7Ci0gICAgICAvLyB0cnVzdExldmVsCi0gICAgICBERVJFbmNvZGVVbnNpZ25lZDx1aW50MzJfdD4oc2VxLCAxMCk7Ci0gICAgfQotICAgIHNlcS5NZXNzYWdlRW5kKCk7Ci0gIAotICAgIGMuYWRkRXh0ZW5zaW9uKENlcnRpZmljYXRlRXh0ZW5zaW9uKCIxLjMuNi4xLjUuMzIuMSIsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZXh0ZW5zdGlvblZhbHVlLmNfc3RyKCkpLCBleHRlbnN0aW9uVmFsdWUuc2l6ZSgpKSk7Ci0gIH0pOwotICAvLyBSU0E6OlB1YmxpY0tleSBwOwotICAvLyBTdHJpbmdTb3VyY2Ugc291cmNlKFQsIHNpemVvZihUKSwgdHJ1ZSk7Ci0gIC8vIHAuTG9hZChzb3VyY2UpOwotCi0gIEJPT1NUX1JFUVVJUkVfTk9fVEhST1coYy5lbmNvZGUoKSk7Ci0gIAotICAvLyBvZnN0cmVhbSBvZigiY2VydC5vdXQiKTsKLSAgLy8gb2Yud3JpdGUoKGNvbnN0IGNoYXIqKWMuZ2V0Q29udGVudCgpLnZhbHVlKCksIGMuZ2V0Q29udGVudCgpLnZhbHVlX3NpemUoKSk7Ci0gIAotICAvLyBjb25zdCBCbG9jayAmd2lyZSA9IGkud2lyZUVuY29kZSgpOwotICBCT09TVF9SRVFVSVJFX0VRVUFMX0NPTExFQ1RJT05TKENFUlQsIENFUlQrc2l6ZW9mKENFUlQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldENvbnRlbnQoKS52YWx1ZV9iZWdpbigpLCBjLmdldENvbnRlbnQoKS52YWx1ZV9lbmQoKSk7Ci0KLSAgc3RkOjpvc3RyaW5nc3RyZWFtIG9zOwotICBvcyA8PCBjIDw8IHN0ZDo6ZW5kbDsKLSAgc3RkOjpzdHJpbmcgaW5mbyhvcy5zdHIoKSk7Ci0gIEJPT1NUX1JFUVVJUkVfRVFVQUxfQ09MTEVDVElPTlMoQ0VSVF9JTkZPLmJlZ2luKCksIENFUlRfSU5GTy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJlZ2luKCksIGluZm8uZW5kKCkpOwotfQotCi1jb25zdCB1bnNpZ25lZCBjaGFyIFJFQUxfQ0VSVFtdID0gewotMHgzMCwgMHg4MiwgMHgwMSwgMHg2MywgMHgzMCwgMHgyMiwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzMywgMHgzMSwgMHgzMSwgMHgzMCwgMHgzMSwgMHgzMSwgMHgzNywgMHgzMSwgMHgzMSwgMHgzMiwgMHgzMiwgMHg1YSwgMHgxOCwgMHgwZiwgMHgzMiwgMHgzMCwgMHgzMSwgMHgzNCwgMHgzMSwgMHgzMSwgMHgzMCwgMHgzMSwgMHgzMSwgMHgzNywgMHgzMSwgMHgzMSwgMHgzMiwgMHgzMiwgMHg1YSwgMHgzMCwgMHgxOSwgMHgzMCwgMHgxNywgMHgwNiwgMHgwMywgMHg1NSwgMHgwNCwgMHgyOSwgMHgxMywgMHgxMCwgMHg0ZSwgMHg0NCwgMHg0ZSwgMHgyMCwgMHg1NCwgMHg2NSwgMHg3MywgMHg3NCwgMHg2MiwgMHg2NSwgMHg2NCwgMHgyMCwgMHg1MiwgMHg2ZiwgMHg2ZiwgMHg3NCwgMHgzMCwgMHg4MiwgMHgwMSwgMHgyMCwgMHgzMCwgMHgwZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwMywgMHg4MiwgMHgwMSwgMHgwZCwgMHgwMCwgMHgzMCwgMHg4MiwgMHgwMSwgMHgwOCwgMHgwMiwgMHg4MiwgMHgwMSwgMHgwMSwgMHgwMCwgMHhkMywgMHhhYywgMHg3ZSwgMHg3YSwgMHg1YywgMHgzMywgMHg1OCwgMHgyMSwgMHhkYSwgMHhlMCwgMHg4ZCwgMHhkYiwgMHhjYSwgMHhiNiwgMHgwMiwgMHgzMCwgMHgwMiwgMHgxNSwgMHhjNSwgMHgwYSwgMHg1MSwgMHg1NCwgMHhiYiwgMHg4ZSwgMHg1ZSwgMHg5ZCwgMHgyMSwgMHhmOCwgMHgxNCwgMHhiZSwgMHhlNCwgMHg2MywgMHg2MCwgMHgzMSwgMHg1MywgMHhlMiwgMHhlZiwgMHhlZSwgMHgzNCwgMHhhMywgMHg4YywgMHhkMiwgMHgyNCwgMHg2ZiwgMHhhNCwgMHg4OSwgMHg0ZiwgMHgwMiwgMHgyMCwgMHg3ZCwgMHg2NiwgMHhiNiwgMHgzZiwgMHgxMSwgMHg0MCwgMHgwYywgMHhjMSwgMHg1ZiwgMHhkOCwgMHg0NSwgMHgyMywgMHg5NSwgMHg0MCwgMHhjOCwgMHhlMCwgMHhiYywgMHg5ZCwgMHgyZiwgMHgwMywgMHhmMSwgMHg4MywgMHg5ZiwgMHgwNywgMHgwYiwgMHg3NiwgMHhjOSwgMHgxMCwgMHhkOSwgMHgzZSwgMHgwYiwgMHg3NSwgMHgxMywgMHg5MywgMHhlOSwgMHhjOSwgMHg4NSwgMHgwMSwgMHg4OCwgMHgzNiwgMHgyZSwgMHhhYiwgMHhmYywgMHhlNiwgMHgyNCwgMHgzMiwgMHhmYywgMHhjNiwgMHgzYywgMHg0MCwgMHg5NywgMHgxYSwgMHhjYywgMHhjZCwgMHg1MywgMHhhYSwgMHgwZiwgMHhmYiwgMHhhMywgMHhmZSwgMHhmOSwgMHgyNCwgMHg3MCwgMHgxMywgMHgzZiwgMHg0ZiwgMHg1YiwgMHg3ZCwgMHg0MywgMHhhYSwgMHg3NSwgMHgwYSwgMHg5NCwgMHg3MiwgMHhhYiwgMHhlMSwgMHg4YywgMHg0NSwgMHhiNSwgMHg3OCwgMHgxMCwgMHgwMSwgMHhlZiwgMHgxZiwgMHhiMywgMHgwNSwgMHg2ZiwgMHhhNiwgMHhjMywgMHhhYywgMHg3ZiwgMHg2ZCwgMHhmMCwgMHgzMSwgMHhjNCwgMHg4MywgMHhiMywgMHg0ZiwgMHg1MCwgMHgyNiwgMHg5MiwgMHg0MCwgMHgxYSwgMHhkZCwgMHhlYywgMHhmYiwgMHhjYiwgMHhlZiwgMHg2MywgMHhmZSwgMHg0MSwgMHhkOCwgMHg4ZCwgMHgxZiwgMHhkYywgMHhlYywgMHhmYywgMHg0OCwgMHg5NSwgMHhjYywgMHgwOSwgMHgxZSwgMHgzMCwgMHg2ZSwgMHgyMiwgMHg5ZSwgMHgyNCwgMHg5NywgMHgyZSwgMHhlNiwgMHgwYywgMHhkZiwgMHgzZCwgMHgyMCwgMHgzMiwgMHhhYSwgMHg5YywgMHhjOSwgMHg0NSwgMHgxNCwgMHhhZiwgMHhhYSwgMHhmNSwgMHgxNywgMHhkMiwgMHgwMSwgMHg5OCwgMHgzMywgMHhiZSwgMHgyYSwgMHg5ZiwgMHg3YiwgMHg5ZCwgMHg5OCwgMHg3YywgMHg1NCwgMHgyMiwgMHhmZSwgMHg3MiwgMHg3MiwgMHgwNCwgMHhjMywgMHgyYywgMHhjMCwgMHgxNCwgMHgwYiwgMHhhOSwgMHg0MCwgMHg3ZSwgMHg0NiwgMHhhMSwgMHg3NSwgMHgxNiwgMHgxYSwgMHgyNywgMHg5ZSwgMHhmMiwgMHg4MiwgMHg5NiwgMHhjMCwgMHg3ZCwgMHhhZiwgMHgxOCwgMHg3NSwgMHhmYiwgMHhiYiwgMHhhYiwgMHgxNiwgMHg2NiwgMHhjMCwgMHhhOSwgMHhkNywgMHg5MywgMHg0YywgMHg0OCwgMHg2ZCwgMHhjZSwgMHgwYiwgMHg4OCwgMHhkNCwgMHgyMSwgMHg5MywgMHg4NCwgMHg4OSwgMHg1NSwgMHgwNSwgMHhkNSwgMHgwMiwgMHgwMSwgMHgxMQotfTsKLQotY29uc3Qgc3RkOjpzdHJpbmcgUkVBTF9DRVJUX0lORk8gPSAiQ2VydGlmaWNhdGUgbmFtZTpcbiIKLSIgIC90bXBcbiIKLSJWYWxpZGl0eTpcbiIKLSIgIE5vdEJlZm9yZTogMjAxMzExMDFUMTcxMTIyLjAwMDAwMFxuIgotIiAgTm90QWZ0ZXI6IDIwMTQxMTAxVDE3MTEyMi4wMDAwMDBcbiIKLSJTdWJqZWN0IERlc2NyaXB0aW9uOlxuIgotIiAgMi41LjQuNDE6IE5ETiBUZXN0YmVkIFJvb3RcbiIKLSJQdWJsaWMga2V5IGJpdHM6XG4iCi0iTUlJQklEQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FRMEFNSUlCQ0FLQ0FRRUEwNngrZWx3eldDSGE0STNieXJZQ1xuIgotIk1BSVZ4UXBSVkx1T1hwMGgrQlMrNUdOZ01WUGk3KzQwbzR6U0pHK2tpVThDSUgxbXRqOFJRQXpCWDloRkk1VkFcbiIKLSJ5T0M4blM4RDhZT2ZCd3QyeVJEWlBndDFFNVBweVlVQmlEWXVxL3ptSkRMOHhqeEFseHJNelZPcUQvdWovdmtrXG4iCi0iY0JNL1QxdDlRNnAxQ3BSeXErR01SYlY0RUFIdkg3TUZiNmJEckg5dDhESEVnN05QVUNhU1FCcmQ3UHZMNzJQK1xuIgotIlFkaU5IOXpzL0VpVnpBa2VNRzRpbmlTWEx1WU0zejBnTXFxY3lVVVVyNnIxRjlJQm1ETytLcDk3blpoOFZDTCtcbiIKLSJjbklFd3l6QUZBdXBRSDVHb1hVV0dpZWU4b0tXd0gydkdIWDd1NnNXWnNDcDE1Tk1TRzNPQzRqVUlaT0VpVlVGXG4iCi0iMVFJQlxuIjsKLQotQk9PU1RfQVVUT19URVNUX0NBU0UgKERlY29kZSkKLXsKLSAgbmRuOjpEYXRhIGQoIi90bXAiKTsKLSAgZC5zZXRDb250ZW50KFJFQUxfQ0VSVCwgc2l6ZW9mKFJFQUxfQ0VSVCkpOwotCi0gIG5kbjo6Q2VydGlmaWNhdGUgYyhkKTsKLQotICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3M7Ci0gIG9zIDw8IGMgPDwgc3RkOjplbmRsOwotICBzdGQ6OnN0cmluZyBpbmZvKG9zLnN0cigpKTsKLSAgQk9PU1RfUkVRVUlSRV9FUVVBTF9DT0xMRUNUSU9OUyhSRUFMX0NFUlRfSU5GTy5iZWdpbigpLCBSRUFMX0NFUlRfSU5GTy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJlZ2luKCksIGluZm8uZW5kKCkpOwotfQotCi1CT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EKCkKZGlmZiAtLWdpdCBhL3Rlc3RzX2Jvb3N0L3Rlc3Qtc2VjLXRwbS1maWxlLmNwcCBiL3Rlc3RzX2Jvb3N0L3Rlc3Qtc2VjLXRwbS1maWxlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ3NWEzOC4uMDAwMDAwMAotLS0gYS90ZXN0c19ib29zdC90ZXN0LXNlYy10cG0tZmlsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKioKLSAqIENvcHlyaWdodCAoQykgMjAxMyBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCi0gKiBAYXV0aG9yOiBZaW5nZGkgWXUgPHlpbmdkaTBAY3MudWNsYS5lZHU+Ci0gKiBTZWUgQ09QWUlORyBmb3IgY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi0gKi8KLQotI2lmIF9fY2xhbmdfXwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdGF1dG9sb2dpY2FsLWNvbXBhcmUiCi0vLyAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotLy8gI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XcmVvcmRlciIKLS8vICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKLS8vICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKLS8vICNlbGlmIF9fR05VQ19fCi0vLyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XcmVvcmRlciIKLS8vICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCi0vLyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxib29zdC90ZXN0L3VuaXRfdGVzdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG4tY3BwLWRldi9zZWN1cml0eS9rZXktY2hhaW4uaHBwPgotI2luY2x1ZGUgPGNyeXB0b3BwL3JzYS5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotdXNpbmcgbmFtZXNwYWNlIG5kbjsKLQotCi1CT09TVF9BVVRPX1RFU1RfU1VJVEUoVGVzdFNlY1RwbUZpbGUpCi0KLUJPT1NUX0FVVE9fVEVTVF9DQVNFIChTaWduVmVyaWZ5KQotewotICBTZWNUcG1GaWxlIHRwbTsKLQotICBOYW1lIGtleU5hbWUoIi90bXAva3NrLTEyMzQ1NiIpOwotICB0cG0uZ2VuZXJhdGVLZXlQYWlySW5UcG0oa2V5TmFtZSwgS0VZX1RZUEVfUlNBLCAyMDQ4KTsKLSAgCi0KLQotICBEYXRhIGRhdGEoIi90bXAvdGVzdC8xIik7Ci0gIGNvbnN0IHVpbnQ4X3QgY29udGVudFtdID0gezB4MDEsIDB4MDIsIDB4MDMsIDB4MDR9OwotCi0gIEJsb2NrIHNpZ0Jsb2NrID0gdHBtLnNpZ25JblRwbShjb250ZW50LCBzaXplb2YoY29udGVudCksIGtleU5hbWUsIERJR0VTVF9BTEdPUklUSE1fU0hBMjU2KTsKLSAgcHRyX2xpYjo6c2hhcmVkX3B0cjxQdWJsaWNLZXk+IHB1YmtleVB0ciA9IHRwbS5nZXRQdWJsaWNLZXlGcm9tVHBtKGtleU5hbWUpOwotCi0gIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgQ3J5cHRvUFA7Ci0gICAgCi0gICAgUlNBOjpQdWJsaWNLZXkgcHVibGljS2V5OwotICAgIEJ5dGVRdWV1ZSBxdWV1ZTsKLSAgICBxdWV1ZS5QdXQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBieXRlKj4ocHVia2V5UHRyLT5nZXQoKS5idWYoKSksIHB1YmtleVB0ci0+Z2V0KCkuc2l6ZSgpKTsKLSAgICBwdWJsaWNLZXkuTG9hZChxdWV1ZSk7Ci0KLSAgICBSU0FTUzxQS0NTMXYxNSwgU0hBMjU2Pjo6VmVyaWZpZXIgdmVyaWZpZXIgKHB1YmxpY0tleSk7Ci0gICAgYm9vbCByZXN1bHQgPSB2ZXJpZmllci5WZXJpZnlNZXNzYWdlKGNvbnRlbnQsIHNpemVvZihjb250ZW50KSwKLQkJCQkgIHNpZ0Jsb2NrLnZhbHVlKCksIHNpZ0Jsb2NrLnZhbHVlX3NpemUoKSk7Ci0gIAotICAgIEJPT1NUX1JFUVVJUkVfRVFVQUwocmVzdWx0LCB0cnVlKTsKLSAgfQotCi0gIC8vV2Ugc2hvdWxkIHJlbW92ZSB0aGUgdGVtcG9yYXJ5IHRlc3Qga2V5LCB0aGlzIHNob3VsZCBiZSBmaXhlZCBpbiBhIGxhdGVyIGNvbW1pdCB3aGljaCB3aWxsIGFkZCBkZWxldGUgb3BlcmF0aW9uIGluIFNlY1RwbS4KLX0KLQotQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCgpCmRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5hbSBiL3Rvb2xzL01ha2VmaWxlLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzQ0ZTdkLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotTERBREQgPSAuLi9saWJuZG4tY3BwLWRldi5sYSBAQk9PU1RfU1lTVEVNX0xJQkAKLQotYmluX1BST0dSQU1TID0gdGx2ZHVtcCBuZG5jYXRjaHVua3MzIG5kbnB1dGNodW5rczMKLQotdGx2ZHVtcF9TT1VSQ0VTICAgICAgPSB0bHZkdW1wLmNwcAotCi1uZG5jYXRjaHVua3MzX1NPVVJDRVMgPSBuZG5jYXRjaHVua3MzLmNwcAotCi1uZG5wdXRjaHVua3MzX1NPVVJDRVMgPSBuZG5wdXRjaHVua3MzLmNwcAotCmRpZmYgLS1naXQgYS90b29scy93c2NyaXB0IGIvdG9vbHMvd3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTc2OTE2Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvd3NjcmlwdApAQCAtMCwwICsxLDExIEBACisjIC0qLSBNb2RlOiBweXRob247IHB5LWluZGVudC1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgY29kaW5nOiB1dGYtODsgLSotCisKK3RvcCA9ICcuLicKKworZGVmIGJ1aWxkKGJsZCk6CisgICAgZm9yIGFwcCBpbiBibGQucGF0aC5hbnRfZ2xvYignKi5jcHAnKToKKyAgICAgICAgYmxkKGZlYXR1cmVzPVsnY3h4JywgJ2N4eHByb2dyYW0nXSwKKyAgICAgICAgICAgIHRhcmdldCA9ICclcycgJSAoc3RyKGFwcC5jaGFuZ2VfZXh0KCcnLCcuY3BwJykpKSwKKyAgICAgICAgICAgIHNvdXJjZSA9IGFwcCwKKyAgICAgICAgICAgIHVzZSA9ICduZG4tY3BwLWRldicsCisgICAgICAgICAgICApICAgICAgICAKZGlmZiAtLWdpdCBhL3dhZiBiL3dhZgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43OGE0NGYzCi0tLSAvZGV2L251bGwKKysrIGIvd2FmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MWE3NDcKLS0tIC9kZXYvbnVsbAorKysgYi93c2NyaXB0CkBAIC0wLDAgKzEsMjA1IEBACisjIC0qLSBNb2RlOiBweXRob247IHB5LWluZGVudC1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgY29kaW5nOiB1dGYtODsgLSotCitWRVJTSU9OPScwLjN+ZGV2MCcKK05BTUU9Im5kbi1jcHAtZGV2IgorCitmcm9tIHdhZmxpYiBpbXBvcnQgQnVpbGQsIExvZ3MsIFV0aWxzLCBUYXNrLCBUYXNrR2VuLCBDb25maWd1cmUKKworZGVmIG9wdGlvbnMob3B0KToKKyAgICBvcHQubG9hZCgnY29tcGlsZXJfYyBjb21waWxlcl9jeHggZ251X2RpcnMgY19vc3gnKQorICAgIG9wdC5sb2FkKCdib29zdCBkb3h5Z2VuIG9wZW5zc2wgY3J5cHRvcHAnLCB0b29sZGlyPVsnLndhZi10b29scyddKQorCisgICAgb3B0ID0gb3B0LmFkZF9vcHRpb25fZ3JvdXAoJ05ETi1DUFAgT3B0aW9ucycpCisKKyAgICBvcHQuYWRkX29wdGlvbignLS1kZWJ1ZycsYWN0aW9uPSdzdG9yZV90cnVlJyxkZWZhdWx0PUZhbHNlLGRlc3Q9J2RlYnVnJyxoZWxwPScnJ2RlYnVnZ2luZyBtb2RlJycnKQorICAgIAorICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtdGVzdHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLGRlZmF1bHQ9RmFsc2UsZGVzdD0nd2l0aF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgaGVscD0nJydidWlsZCB1bml0IHRlc3RzJycnKQorICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbG9nNGN4eCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsZGVmYXVsdD1GYWxzZSxkZXN0PSdsb2c0Y3h4JywKKyAgICAgICAgICAgICAgICAgICBoZWxwPScnJ0NvbXBpbGUgd2l0aCBsb2c0Y3h4IGxvZ2dpbmcgc3VwcG9ydCcnJykKKworICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYysrMTEnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBkZXN0PSd1c2VfY3h4MTEnLAorICAgICAgICAgICAgICAgICAgIGhlbHA9JycnVXNlIEMrKzExIGZlYXR1cmVzLCBldmVuIGlmIGF2YWlsYWJsZSBpbiB0aGUgY29tcGlsZXInJycpCisgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1zeXN0ZW0tYm9vc3QnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVmYXVsdD1UcnVlLCBkZXN0PSd1c2Vfc3lzdGVtX2Jvb3N0JywKKyAgICAgICAgICAgICAgICAgICBoZWxwPScnJ1VzZSBzeXN0ZW0ncyBib29zdCBsaWJyYXJpZXMnJycpCisKKworZGVmIGNvbmZpZ3VyZShjb25mKToKKyAgICBjb25mLmxvYWQoImNvbXBpbGVyX2MgY29tcGlsZXJfY3h4IGJvb3N0IGdudV9kaXJzIGNfb3N4IG9wZW5zc2wgY3J5cHRvcHAiKQorICAgIHRyeToKKyAgICAgICAgY29uZi5sb2FkKCJkb3h5Z2VuIikKKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKworICAgIGlmIGNvbmYub3B0aW9ucy53aXRoX3Rlc3RzOgorICAgICAgICBjb25mLmVudlsnV0lUSF9URVNUUyddID0gVHJ1ZQorCisgICAgY29uZi5jaGVja19vcGVuc3NsKCkKKworICAgIGlmIGNvbmYub3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgY29uZi5kZWZpbmUgKCdfREVCVUcnLCAxKQorICAgICAgICBmbGFncyA9IFsnLU8wJywKKyAgICAgICAgICAgICAgICAgJy1XYWxsJywKKyAgICAgICAgICAgICAgICAgIyAnLVdlcnJvcicsCisgICAgICAgICAgICAgICAgICctV25vLXVudXNlZC12YXJpYWJsZScsCisgICAgICAgICAgICAgICAgICctZzMnLAorICAgICAgICAgICAgICAgICAnLVduby11bnVzZWQtcHJpdmF0ZS1maWVsZCcsICMgb25seSBjbGFuZyBzdXBwb3J0cworICAgICAgICAgICAgICAgICAnLWZjb2xvci1kaWFnbm9zdGljcycsICAgICAgICMgb25seSBjbGFuZyBzdXBwb3J0cworICAgICAgICAgICAgICAgICAnLVF1bnVzZWQtYXJndW1lbnRzJywgICAgICAgICMgb25seSBjbGFuZyBzdXBwb3J0cworICAgICAgICAgICAgICAgICAnLVduby10YXV0b2xvZ2ljYWwtY29tcGFyZScsICMgc3VwcHJlc3Mgd2FybmluZ3MgZnJvbSBDcnlwdG9QUAorICAgICAgICAgICAgICAgICAnLVduby11bnVzZWQtZnVuY3Rpb24nLCAgICAgICMgYW5vdGhlciBhbm5veWluZyB3YXJuaW5nIGZyb20gQ3J5cHRvUFAKKworICAgICAgICAgICAgICAgICAnLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucycsCisgICAgICAgICAgICAgICAgIF0KKworICAgICAgICBjb25mLmFkZF9zdXBwb3J0ZWRfY3h4ZmxhZ3MgKGN4eGZsYWdzID0gZmxhZ3MpCisgICAgZWxzZToKKyAgICAgICAgZmxhZ3MgPSBbJy1PMycsICctZycsICctV25vLXRhdXRvbG9naWNhbC1jb21wYXJlJywgJy1Xbm8tdW51c2VkLWZ1bmN0aW9uJywgJy1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMnXQorICAgICAgICBjb25mLmFkZF9zdXBwb3J0ZWRfY3h4ZmxhZ3MgKGN4eGZsYWdzID0gZmxhZ3MpCisKKyAgICBpZiBVdGlscy51bnZlcnNpb25lZF9zeXNfcGxhdGZvcm0gKCkgPT0gImRhcndpbiI6CisgICAgICAgIGNvbmYuY2hlY2tfY3h4KGZyYW1ld29ya19uYW1lPSdDb3JlRm91bmRhdGlvbicsIHVzZWxpYl9zdG9yZT0nT1NYX0NPUkVGT1VOREFUSU9OJywgbWFuZGF0b3J5PVRydWUpCisgICAgICAgIGNvbmYuY2hlY2tfY3h4KGZyYW1ld29ya19uYW1lPSdDb3JlU2VydmljZXMnLCB1c2VsaWJfc3RvcmU9J09TWF9DT1JFU0VSVklDRVMnLCBtYW5kYXRvcnk9VHJ1ZSkKKyAgICAgICAgY29uZi5jaGVja19jeHgoZnJhbWV3b3JrX25hbWU9J1NlY3VyaXR5JywgICB1c2VsaWJfc3RvcmU9J09TWF9TRUNVUklUWScsICAgZGVmaW5lX25hbWU9J0hBVkVfU0VDVVJJVFknLAorICAgICAgICAgICAgICAgICAgICAgICB1c2U9Ik9TWF9DT1JFRk9VTkRBVElPTiIsIG1hbmRhdG9yeT1UcnVlKQorICAgICAgICBjb25mLmRlZmluZSgnSEFWRV9PU1hfU0VDVVJJVFknLCAxKQorCisgICAgY29uZi5kZWZpbmUgKCJQQUNLQUdFX0JVR1JFUE9SVCIsICJuZG4tbGliQGxpc3RzLmNzLnVjbGEuZWR1IikKKyAgICBjb25mLmRlZmluZSAoIlBBQ0tBR0VfTkFNRSIsIE5BTUUpCisgICAgY29uZi5kZWZpbmUgKCJQQUNLQUdFX1ZFUlNJT04iLCBWRVJTSU9OKQorICAgIGNvbmYuZGVmaW5lICgiUEFDS0FHRV9VUkwiLCAiaHR0cHM6Ly9naXRodWIuY29tL25hbWVkLWRhdGEvbmRuLWNwcCIpCisKKyAgICBjb25mLmNoZWNrX2NmZyhwYWNrYWdlPSdzcWxpdGUzJywgYXJncz1bJy0tY2ZsYWdzJywgJy0tbGlicyddLCB1c2VsaWJfc3RvcmU9J1NRTElURTMnLCBtYW5kYXRvcnk9VHJ1ZSkKKworICAgIGlmIGNvbmYub3B0aW9ucy5sb2c0Y3h4OgorICAgICAgICBjb25mLmNoZWNrX2NmZyhwYWNrYWdlPSdsaWJsb2c0Y3h4JywgYXJncz1bJy0tY2ZsYWdzJywgJy0tbGlicyddLCB1c2VsaWJfc3RvcmU9J0xPRzRDWFgnLCBtYW5kYXRvcnk9VHJ1ZSkKKyAgICAgICAgY29uZi5kZWZpbmUgKCJIQVZFX0xPRzRDWFgiLCAxKQorCisgICAgY29uZi5jaGVja19jcnlwdG9wcChwYXRoPWNvbmYub3B0aW9ucy5jcnlwdG9wcF9kaXIsIG1hbmRhdG9yeT1UcnVlKQorCisgICAgaWYgY29uZi5vcHRpb25zLnVzZV9jeHgxMToKKyAgICAgICAgY29uZi5hZGRfc3VwcG9ydGVkX2N4eGZsYWdzKGN4eGZsYWdzID0gWyctc3RkPWMrKzExJywgJy1zdGQ9YysrMHgnXSkKKworICAgICAgICBjb25mLmNoZWNrKG1zZz0nQ2hlY2tpbmcgZm9yIHR5cGUgc3RkOjpzaGFyZWRfcHRyJywKKyAgICAgICAgICAgICAgICAgICB0eXBlX25hbWU9InN0ZDo6c2hhcmVkX3B0cjxpbnQ+IiwgaGVhZGVyX25hbWU9Im1lbW9yeSIsIGRlZmluZV9uYW1lPSdIQVZFX1NURF9TSEFSRURfUFRSJykKKyAgICAgICAgY29uZi5jaGVjayhtc2c9J0NoZWNraW5nIGZvciB0eXBlIHN0ZDo6ZnVuY3Rpb24nLAorICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZT0ic3RkOjpmdW5jdGlvbjx2b2lkKCk+IiwgaGVhZGVyX25hbWU9ImZ1bmN0aW9uYWwiLCBkZWZpbmVfbmFtZT0nSEFWRV9TVERfRlVOQ1RJT04nKQorICAgICAgICBjb25mLmRlZmluZSgnSEFWRV9DWFgxMScsIDEpCisgICAgZWxzZToKKyAgICAgICAgaWYgY29uZi5vcHRpb25zLnVzZV9zeXN0ZW1fYm9vc3Q6CisgICAgICAgICAgICBVU0VEX0JPT1NUX0xJQlMgPSAnc3lzdGVtIGZpbGVzeXN0ZW0gZGF0ZV90aW1lIGlvc3RyZWFtcycKKyAgICAgICAgICAgIGlmIGNvbmYuZW52WydXSVRIX1RFU1RTJ106CisgICAgICAgICAgICAgICAgVVNFRF9CT09TVF9MSUJTICs9ICIgdW5pdF90ZXN0X2ZyYW1ld29yayIKKworICAgICAgICAgICAgY29uZi5jaGVja19ib29zdChsaWI9VVNFRF9CT09TVF9MSUJTKQorCisgICAgICAgICAgICBib29zdF92ZXJzaW9uID0gY29uZi5lbnYuQk9PU1RfVkVSU0lPTi5zcGxpdCgnXycpCisgICAgICAgICAgICBpZiBpbnQoYm9vc3RfdmVyc2lvblswXSkgPiAxIG9yIChpbnQoYm9vc3RfdmVyc2lvblswXSkgPT0gMSBhbmQgaW50KGJvb3N0X3ZlcnNpb25bMV0pID49IDQ2KToKKyAgICAgICAgICAgICAgICBjb25mLmVudlsnVVNFX1NZU1RFTV9CT09TVCddID0gVHJ1ZQorICAgICAgICAgICAgICAgIGNvbmYuZGVmaW5lKCdVU0VfU1lTVEVNX0JPT1NUJywgMSkKKworICAgIGNvbmYud3JpdGVfY29uZmlnX2hlYWRlcignaW5jbHVkZS9uZG4tY3BwLWRldi9uZG4tY3BwLWNvbmZpZy5oJywgZGVmaW5lX3ByZWZpeD0nTkROX0NQUF8nKQorCitkZWYgYnVpbGQgKGJsZCk6CisgICAgbGlibmRuX2NwcCA9IGJsZCAoCisgICAgICAgIGZlYXR1cmVzPVsnY3h4JywgJ2N4eHNobGliJywgJ2N4eHN0bGliJ10sCisgICAgICAgIHZudW0gPSAiMC4zLjAiLAorICAgICAgICB0YXJnZXQ9Im5kbi1jcHAtZGV2IiwKKyAgICAgICAgbmFtZSA9ICJuZG4tY3BwLWRldiIsCisgICAgICAgIHNvdXJjZSA9IGJsZC5wYXRoLmFudF9nbG9iKCdzcmMvKiovKi5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsID0gWydzcmMvKiovKi1vc3guY3BwJywgJ3NyYy8qKi8qLXNxbGl0ZTMuY3BwJ10pLAorICAgICAgICB1c2UgPSAnQk9PU1QgT1BFTlNTTCBMT0c0Q1hYIENSWVBUT1BQIFNRTElURTMnLAorICAgICAgICBpbmNsdWRlcyA9ICJpbmNsdWRlIiwKKyAgICAgICAgZXhwb3J0X2luY2x1ZGVzID0gImluY2x1ZGUiLAorICAgICAgICApCisKKyAgICBpZiBVdGlscy51bnZlcnNpb25lZF9zeXNfcGxhdGZvcm0gKCkgPT0gImRhcndpbiI6CisgICAgICAgIGxpYm5kbl9jcHAuc291cmNlICs9IGJsZC5wYXRoLmFudF9nbG9iKCdzcmMvKiovKi1vc3guY3BwJykKKyAgICAgICAgbGlibmRuX2NwcC5tYWNfYXBwID0gVHJ1ZQorICAgICAgICBsaWJuZG5fY3BwLnVzZSArPSAiIE9TWF9DT1JFRk9VTkRBVElPTiBPU1hfU0VDVVJJVFkiCisKKyAgICAjIEluIGNhc2Ugd2Ugd2FudCB0byBtYWtlIGl0IG9wdGlvbmFsIGxhdGVyCisgICAgbGlibmRuX2NwcC5zb3VyY2UgKz0gYmxkLnBhdGguYW50X2dsb2IoJ3NyYy8qKi8qLXNxbGl0ZTMuY3BwJykKKworCisgICAgcGtnY29uZmlnX2xpYnMgPSBbXQorICAgIHBrZ2NvbmZpZ19sZGZsYWdzID0gW10KKyAgICBwa2djb25maWdfaW5jbHVkZXMgPSBbXQorICAgIGZvciBsaWIgaW4gVXRpbHMudG9fbGlzdChsaWJuZG5fY3BwLnVzZSk6CisgICAgICAgIGlmIGJsZC5lbnZbJ0xJQl8lcycgJSBsaWJdOgorICAgICAgICAgICAgcGtnY29uZmlnX2xpYnMgKz0gVXRpbHMudG9fbGlzdChibGQuZW52WydMSUJfJXMnICUgbGliXSkKKyAgICAgICAgaWYgYmxkLmVudlsnTElCUEFUSF8lcycgJSBsaWJdOgorICAgICAgICAgICAgcGtnY29uZmlnX2xkZmxhZ3MgKz0gVXRpbHMudG9fbGlzdChibGQuZW52WydMSUJQQVRIXyVzJyAlIGxpYl0pCisgICAgICAgIGlmIGJsZC5lbnZbJ0lOQ0xVREVTXyVzJyAlIGxpYl06CisgICAgICAgICAgICBwa2djb25maWdfaW5jbHVkZXMgKz0gVXRpbHMudG9fbGlzdChibGQuZW52WydJTkNMVURFU18lcycgJSBsaWJdKQorCisgICAgZGVmIHVuaXEoYWxpc3QpOgorICAgICAgICBzZXQgPSB7fQorICAgICAgICByZXR1cm4gW3NldC5zZXRkZWZhdWx0KGUsZSkgZm9yIGUgaW4gYWxpc3QgaWYgZSBub3QgaW4gc2V0XQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmxkIChmZWF0dXJlcyA9ICJzdWJzdCIsCisgICAgICAgICBzb3VyY2UgPSAibGlibmRuLWNwcC1kZXYucGMuaW4iLAorICAgICAgICAgdGFyZ2V0ID0gImxpYm5kbi1jcHAtZGV2LnBjIiwKKyAgICAgICAgIGluc3RhbGxfcGF0aCA9ICIke0xJQkRJUn0vcGtnY29uZmlnIiwKKyAgICAgICAgIFZFUlNJT04gPSBWRVJTSU9OLAorCisgICAgICAgICAjIFRoaXMgcHJvYmFibHkgbm90IHRoZSByaWdodCB0aGluZyB0byBkbywgYnV0IHRvIHNpbXBsaWZ5IGxpZmUgb2YgYXBwcworICAgICAgICAgIyB0aGF0IHVzZSB0aGUgbGlicmFyeQorICAgICAgICAgRVhUUkFfTElCUyA9ICIgIi5qb2luKFsoJy1sJXMnICUgaSkgZm9yIGkgaW4gdW5pcShwa2djb25maWdfbGlicyldKSwKKyAgICAgICAgIEVYVFJBX0xERkxBR1MgPSAiICIuam9pbihbKCctTCVzJyAlIGkpIGZvciBpIGluIHVuaXEocGtnY29uZmlnX2xkZmxhZ3MpXSksCisgICAgICAgICBFWFRSQV9JTkNMVURFUyA9ICIgIi5qb2luKFsoJy1JJXMnICUgaSkgZm9yIGkgaW4gdW5pcShwa2djb25maWdfaW5jbHVkZXMpXSksCisgICAgICAgICkKKyAgICAgICAgICAgIAorICAgICMgVW5pdCB0ZXN0cworICAgIGlmIGJsZC5lbnZbJ1dJVEhfVEVTVFMnXToKKyAgICAgICAgYmxkLnJlY3Vyc2UoJ3Rlc3RzJykKKworICAgIGJsZC5yZWN1cnNlKCJ0b29scyBleGFtcGxlcyIpCisgICAgICAKKyAgICBoZWFkZXJzID0gYmxkLnBhdGguYW50X2dsb2IoWydzcmMvKiovKi5ocHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NyYy8qKi8qLmgnXSkKKyAgICBibGQuaW5zdGFsbF9maWxlcygiJXMvbmRuLWNwcC1kZXYiICUgYmxkLmVudlsnSU5DTFVERURJUiddLCBoZWFkZXJzLCByZWxhdGl2ZV90cmljaz1UcnVlLCBjd2Q9YmxkLnBhdGguZmluZF9ub2RlKCdzcmMnKSkKKworICAgIGJsZC5pbnN0YWxsX2ZpbGVzKCIlcy9uZG4tY3BwLWRldiIgJSBibGQuZW52WydJTkNMVURFRElSJ10sIGJsZC5wYXRoLmZpbmRfcmVzb3VyY2UoJ2luY2x1ZGUvbmRuLWNwcC1kZXYvbmRuLWNwcC1jb25maWcuaCcpKQorCisgICAgaGVhZGVycyA9IGJsZC5wYXRoLmFudF9nbG9iKFsnaW5jbHVkZS8qKi8qLmhwcCcsICdpbmNsdWRlLyoqLyouaCddKQorICAgIGJsZC5pbnN0YWxsX2ZpbGVzKCIlcyIgJSBibGQuZW52WydJTkNMVURFRElSJ10sIGhlYWRlcnMsIHJlbGF0aXZlX3RyaWNrPVRydWUsIGN3ZD1ibGQucGF0aC5maW5kX25vZGUoJ2luY2x1ZGUnKSkKKworQENvbmZpZ3VyZS5jb25mCitkZWYgYWRkX3N1cHBvcnRlZF9jeHhmbGFncyhzZWxmLCBjeHhmbGFncyk6CisgICAgIiIiCisgICAgQ2hlY2sgd2hpY2ggY3h4ZmxhZ3MgYXJlIHN1cHBvcnRlZCBieSBjb21waWxlciBhbmQgYWRkIHRoZW0gdG8gZW52LkNYWEZMQUdTIHZhcmlhYmxlCisgICAgIiIiCisgICAgc2VsZi5zdGFydF9tc2coJ0NoZWNraW5nIGFsbG93ZWQgZmxhZ3MgZm9yIGMrKyBjb21waWxlcicpCisKKyAgICBzdXBwb3J0ZWRGbGFncyA9IFtdCisgICAgZm9yIGZsYWcgaW4gY3h4ZmxhZ3M6CisgICAgICAgIGlmIHNlbGYuY2hlY2tfY3h4IChjeHhmbGFncz1bZmxhZ10sIG1hbmRhdG9yeT1GYWxzZSk6CisgICAgICAgICAgICBzdXBwb3J0ZWRGbGFncyArPSBbZmxhZ10KKworICAgIHNlbGYuZW5kX21zZyAoJyAnLmpvaW4gKHN1cHBvcnRlZEZsYWdzKSkKKyAgICBzZWxmLmVudi5DWFhGTEFHUyArPSBzdXBwb3J0ZWRGbGFncworCisjIGRveHlnZW4gZG9jcworZnJvbSB3YWZsaWIuQnVpbGQgaW1wb3J0IEJ1aWxkQ29udGV4dAorY2xhc3MgZG94eSAoQnVpbGRDb250ZXh0KToKKyAgICBjbWQgPSAiZG94eWdlbiIKKyAgICBmdW4gPSAiZG94eWdlbiIKKworZGVmIGRveHlnZW4gKGJsZCk6CisgICAgaWYgbm90IGJsZC5lbnYuRE9YWUdFTjoKKyAgICAgICAgYmxkLmZhdGFsICgiRVJST1I6IGNhbm5vdCBidWlsZCBkb2N1bWVudGF0aW9uIChgZG94eWdlbicgaXMgbm90IGZvdW5kIGluICRQQVRIKSIpCisgICAgYmxkIChmZWF0dXJlcz0iZG94eWdlbiIsCisgICAgICAgICBkb3h5ZmlsZT0nRG94eWZpbGUnKQorCisjIGRveHlnZW4gZG9jcworZnJvbSB3YWZsaWIuQnVpbGQgaW1wb3J0IEJ1aWxkQ29udGV4dAorY2xhc3Mgc3BoaW54IChCdWlsZENvbnRleHQpOgorICAgIGNtZCA9ICJzcGhpbngiCisgICAgZnVuID0gInNwaGlueCIKKworZGVmIHNwaGlueCAoYmxkKToKKyAgICBibGQubG9hZCgnc3BoaW54X2J1aWxkJywgdG9vbGRpcj1bJ3dhZi10b29scyddKQorCisgICAgYmxkIChmZWF0dXJlcz0ic3BoaW54IiwKKyAgICAgICAgIG91dGRpciA9ICJkb2MvaHRtbCIsCisgICAgICAgICBzb3VyY2UgPSAiZG9jL3NvdXJjZS9jb25mLnB5IikK